Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Para el cálculo de la transformada Z, para obtener una expresión en el dominio z de una
secuencia de datos discretos, se realiza por:
Al utilizar Matlab, esta transformación se obtiene mediante el comando ztrans. Al igual que en
la transformación de Laplace, la variable z se debe definirse como símbolo para obtener su
transformada.
escalon_z=sym('1')
ztrans(escalon_z) %obtención de la transformadad Z
syms n T
rampa_z=n*T
ztrans(rampa_z) %obtención de la transformada Z
x1=5^n*n*T %creación de la secuencia discreta
X1=ztrans(x1) %obtención de la transformada z
pretty(X1)
El cálculo de la transformada inversa, que permite obtener la secuencia discreta a partir de la
expresión racional en Z, se realiza mediante el comando iztrans.
>> syms z
>> Y5=z/(z‐0.5)/(z‐0.8)
>> pretty(Y5)
>> y5=iztrans(Y5) %obtención de la transformada Z inversa
>> pretty(y5)
Por ejemplo. Definir y representar la secuencia discreta de la señal seno amortiguado,
empleando un tiempo de muestreo T de 0.5 segundos.
T=0.5; %definición tiempo de muestreo
n=0:T:20; % secuancia discreta n
yn=sin(n*T).*exp(‐n*T); %definción de la señal
plot(n,yn,'*')
xlabel(' Amplitud')
title('función sen')
grid
Por ejemplo Obtener la transformada Z de la función discreta seno amortiguado dada a
continuación:
syms n T %definición de variables simbólicas
yn=sin(n*T).*exp(‐n*T); % definición de la función
yn=ztrans(yn); % cálculo de la transformada
pretty(yn)
Para crear funciones de transferencia de sistemas discretos, hay que tener en cuenta el
tiempo de muestreo T empleado en la conversión de la señal continua en una secuencia
discreta; para ello bastará con añadir el tiempo de muestreo T al comando tf o zpk. En el caso
de un sistema discreto con el tiempo de muestreo indeterminado, se deberá asignar un valor
de T=1.
>> T=0.1; %tiempo de muestreo de valor 0.1 segundos
>> G1z=tf(2,[1 2],T) %construcción de G1(z)
>> G2z=zpk([‐1‐1],[0 3],10,0.5) %construcción de G1(z) con T=0.5
Conversión entre sistemas continuos y discretos
La conversión de sistemas continuos a discretos se realiza con el comando c2d. A este
comando se le pasan como argumentos la función de transferencia del sistema continuo, el
tiempo de muestreo T y el método de conversión a emplear. Algunos de los métodos de
conversión implementados en comandos son:
a) Bloqueador de orden cero(´zoh´)
La conversión se obtiene mediante la ecuación:
1
Y que corresponde con el diagrama de bloques mostrado a continuación:
b) Bloqueador de orden uno (´foh´)
La conversión se obtiene mediante la ecuación:
1
1
Y que corresponde con el diagrama de bloques mostrados a continuación:
c) También se tiene el método Tustin(‘tustin’)
La conversión se realiza mediante el cambio de variable.
d) Equivalencia polo‐cero(‘matched’)
La conversión se realiza cambiando la posición del polo en z mediante la relación:
Comente los siguientes resultados.
>> G6s=tf(9,[1 1.5 9])
>> G6z1=c2d(G6s,T,'zoh') %tiempo de muestreo T=0.2 segundos
>> G6z2=c2d(G6s,T,'foh') %tiempo de muestreo T=0.2 segundos
>> G6z3=c2d(G6s,T,'tustin') %tiempo de muestreo T=0.2 segundos
>> G6z3=c2d(G6s,T,'matched') ) %tiempo de muestreo T=0.2 segundos
La conversión de sistemas discretos a continuos se realiza con d2c .A este comando se le pasa
la función de transferencia discreta y el método de conversión deseado. Los métodos
implementados son el bloqueador de orden cero, tustin y equivalencia polo‐cero.
>> G6z1;
>> G6s=d2c(G6z1,'zoh') %conversión al sistema continuo original
Para obtener la nueva función de transferencia de un sistema discreto cuando se varía el
tiempo de muestreo, se empleará el comando d2d. A este comando se le pasa la función de
transferencia discreta y el nuevo tiempo de muestreo.
>> G6z1;
>> G6z1=d2d(G6s,1.2,'zoh') % discretiza con un Nuevo T=1.2
1‐Por ejemplo , Matlab nos puede devolver el resultado dado por:
0.56 z 0.145 z 0.5
; ;H z 2
0.1 0.8
Obtener la función de transferencia equivalente.
Usar por ejemplo >> Rz=zpk([0.145],[0],0.56,0.1) y Mz=feedback(Rz*Gz,Hz).
2.‐ Obtener la función de transferencia discreta del sistema híbrido mostrado en la figura, para
un tiempo de muestreo de T=0.25 seg; el bloqueador es de orden 0 y la función de
transferencia del sistema es continuo.
s 1
4
Sol.
T=9.25;
G=zpk([‐1],[‐4 4],1);
BOG=c2d(G,T, 'zoh');
BOG=tf(BOG)
3.‐Para el sistema discreto, utilizar el comando rlocus para determinar el límite de la
estabilidad, en donde se pide el valor máximo de K que se puede añadir al sistema sin
inestabilizarlo (Tiempo de muestreo igual a 0.1 segundos).
Sol.
>> Gz=zpk([‐0.5],[0.1 0.8],1,0.1);
>> Rz=zpk([0.145 ],[0],0.56,0.1);
>> rlocus(Rz*Gz*2)
>> axis([‐1.5 1.2 ‐1.2 1.2])
La intersección con el círculo unidad de las ramas que arrancan en los polos z=0.1 y z=0, se
produce en el punto ‐0.6547 + ‐0.7599i, en el cual el valor de K es aproximadamente 1.83 (ver
figura)
La comprobación de que un valor de K igual a 1.83 está en el límite de la estabilidad se puede
realizar obteniendo la respuesta del sistema realimentado o consultando la nueva posición de
los polos en lazo cerrado.
>> p_nuevo=pole(feedback(1.84*Rz*Gz,2)) %nueva posición de los polos
p_nuevo =
0.1485
‐0.6547 + 0.7599i
‐0.6547 ‐ 0.7599i
>> abs(p_nuevo(2))
ans =
1.0030
>> step(feedback(1.84*Rz*Gz,2),1200)
Por lo tanto al añadir un valor de K=1.84, la respuesta es inestable y el módulo de los polos
complejos conjugados indican que su posición está fuera del circulo unidad.
4.‐En el sistema de la figura, en el que el tiempo de muestreo es de 1 segundo y la función de
transferencia continua es:
2
1
Se pide.
a) Obtener el valor final de la salida en régimen permanente.
b) Obtener los polos de lazo cerrado.
c) Representar la respuesta al escalón unitario.
d) Obtener la secuencia de salida si la entrada se aplica la secuencia.
{Xx}={ 0 1 0.5 0.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
Sol.‐
>> T=1; %tiempo de muestreo
>> G=tf(2,[1 1 0]); %definición del sistema continuo
>> BOG=c2d(G,T,'zoh'); %discretizacion de G(s)
>> Mz=feedback(BOG,1) %obtención del sistema realimentado
>> y=dcgain(Mz) % valor de la salida en régimen permanente (respuesta a)
>> polos_z=pole(Mz) %polos del sistema realimentado (respuesta b)
polos_z =
0.3161 + 0.8925i
0.3161 ‐ 0.8925i
>> step(Mz) %respuesta al escalón unitario
>> xlabel('k*T')
>> ylabel('Amplitud')
>> title('respuesta escalón unitario')
(Respuesta c)
>> [nz dz]=tfdata(Mz,'V'); % numerador/denominador de Mz
>> k=0:19; % índice k
>> xk=[ 0 1 0.5 0.1 zeros(1,16)]; %secuencia de xk
>> yk=filter(nz,dz,xk) %secuencia yk
yk =
Columns 1 through 16
0 0 0.7358 1.3614 0.5389 ‐0.8268 ‐1.0057 0.1054 0.9681 0.5175 ‐0.5407
‐0.8056 ‐0.0246 0.7066 0.4687 ‐0.3371
Columns 17 through 20
‐0.6332 ‐0.0981 0.5056 0.4075
>> stem(k,yk) %representación de la salida yk
5.‐ Analizar la estabilidad del sistema discreto de la figura (tiempo de muestreo
indeterminado).
>> Gz=tf([1 0.8],[1 0 0.25],‐1); % definición bloque directo
>> Hz=tf(1,[1 0.3],‐1); % definición bloque realimentado
>> rlocus(Gz*Hz) % obtención del lugar geométrico de las raices
>> xlabel('Eje real')
>> ylabel('eje imaginario')
>> title('Lugar de las raices')
>> axis([‐1.5 1.5 ‐1.5 1.5]) %escalado de ejes
A la vista del lugar geométrico se observa que, con un valor aproximado de K igual a 0.594, el
sistema realimentado sitúa dos polos sobre el círculo unidad, por lo tanto será inestable. En
esta situación, habría que escoger una K inferior para que todos sus polos quedaran dentro del
circulo unidad.
>> Mz=feedback(Gz,Hz); %sistema realimentado
>> polos=pole(Mz) %comprobación estabilidad
polos =
0.1543 + 1.1891i %dos polos inestables
0.1543 ‐ 1.1891i
‐0.6086
>> abs(polos) %comprobación módulos mayor igual a 1
ans =
1.1991 %comprobación módulos mayor igual a 1
1.1991
0.6086
>> figure % nueva figura
>> pzmap(Mz) % plano de polos y ceros
>> axis([‐1.5 1.5 ‐1.5 1.5]) %escalado de ejes
>> figure %nueva figura
>> step(Mz) % comprobación respuesta inestable.
>> xlabel('k*T')
>> ylabel('amplitud')
>> title('respuesta escalon unitario')
6.‐ En el sistema realimentado, donde todos sus bloques son discretos, se desea conocer el
valor de la salida y del error en régimen permanente. La entrada X(z) es un escalón unitario y
la perturbación P(z) es también un escalón unitario, pero retrasado 4 instantes de tiempo.
>> z=tf('z',‐1); %z como objeto tf(T indefinido)
>> Gz=1/((z‐0.15)*(z‐0.3)); %definición del sistema G(z)
>> Rz=0.1/(z‐0.25); %definición del sistema R(z)
>> M1z=feedback(Rz*Gz,1); %obtención de M1z con P(z)=0
>> M2z=feedback(Gz,Rz); %obtención de M2z con X(z)=0
>> [y1z k]=step(M1z); %respuesta al escalón con índice K
>> n=length(k); %tamaño del vector k
>> pz=[0 0 0 0 ones(1,n‐4)]; %definición entrada perturbación
>> y2z=lsim(M2z,pz,k); respuesta a la perturbación
>> yz=y1z+y2z; %salida global por superposición
>> yz_f=yz(n) %valor de la salida en régimen permanente
yz_f =
1.5559
>> ez=1‐yz_f
ez =
‐0.5559 %valor del error en régimen permanente.