Вы находитесь на странице: 1из 4

Ejemplo de control digital

Un proceso tiene la siguiente funcion de transferencia:

y 1

m (5s  1)(3s  1)

Se desea operar automaticamente con un controlador tipo Dahlin y probar su desempeño con un
cambio en la referencia del tipo escalon unitaria. Se utiliza un tiempo de muestreo de 1 (dt) y se
quiere eue el proceso cuando este controlado responda como un sistema de 1ª orden, sin tiempo
muerto con una constante de tiempo de 1 (lamda) Resuelva lo anterior usando MATLAB.

dt=1;lamda=1;tm=1;num=1;
t1=5;t2=3;

Primero calcularemos la funcion de transferencia pulso HGp(z) para el proceso. Esto se lleva a cabo
con los siguientes comandos:

d1=[t1 1];
d2=[t2 1];
den=conv(d1,d2);
[numd,dend]=c2dm(num,den,dt,'zoh')

En este caso numd y dend son el numerador y el denominador de HGp(z). Estas ecuaciones se
usaran de manera reciproca en el controlador

n1=[1 -1.5353 0.5866];


d1=[0.0280 0.023];

Recordar que, para el caso del diseño de un controlador digital tipo Dahlin, la siguiente ecuación
debe usarse:

1 Y /Y R
D( z ) 
HGp( z ) 1  Y / Y R

Entonces, Y/YR es la respuesta deseada que corresponde a una dinámica de 1ª orden:

1 1

s  1 s  1

Entonces, calculando la función de transferencia pulso de la anterior ecuación y evaluando el


Y /Y R 0.632 z 1
término correspondiente a , tendremos que es igual a , esto se expresa con
1Y /Y R 1  z 1
MATLAB de la siguiente manera

n2=0.632;
d2=[1 -1];
Para evaluar D(z) de acuerdo a una anterior ecuación, tendremos que multiplicar numeradores y
denominadores calculados anteriormente

nc=n2*n1;
dc=conv(d1,d2);

Y la ecuación de transferencia de lazo abierto resulta en:

numd2=conv(numd,nc);
dend2=conv(dend,dc);

Y la función de transferencia de lazo cerrado se calcula de la siguiente manera:

[ncl,dcl]=cloop(numd2,dend2,-1);

Para simular una entrada escalón en la referencia formamos un vector con solo 1(s) con 11 términos
y además definimos un contador k con 11 elementos

yr=ones(1,11);
k=0:10;

El siguiente comando simula la respuesta de la función de transferencia ante una entrada escalon de
11 términos o tiempos de muestreo:

y=filter(ncl,dcl,yr);

El siguiente término calcula la grafica de esta respuesta, pero solo toma la


mitad de la pantalla

subplot(2,1,1)
plot(k,y,'+')

Los siguientes dos términos nos permiten calcular la función de transferencia


entre la variable manipulada m y la referencia. Se supone que los cambios de la
variable manipulada representan directamente el movimiento o dinámica de la
válvula de control

numm=conv(nc,dend);
denm=numd2+dend2;

Los siguientes dos términos simulan el cambio de m, ante un cambio en la referencia y se grafican
en la segunda mitad de la pantalla, pero el tercer termino establece que la variable m se grafique en
forma de escalera o pulsos

m=filter(numm,denm,yr);
subplot(2,1,2)
stairs(m)

Esto se puede observar en la siguiente figura:


Puesto que en la figura anterior se observa un movimiento enérgico de la válvula, este control
puede no ser muy atractivo pues contribuye al rápido desgaste de la válvula. Esto es producto de
que el controlador tiene una raíz muy cerca del -1 en el plano complejo en coordenadas polares.
Esto se puede observar de la ecuación de D(z), esta es:

1  1.5353z 1  0.5866 z 2 0.632 1  1.5353z 1  0.5866 z 2 22.6


D( z )  
0.0280  0.023z 1 1  z 1 1  0.8214 z 1 1  z 1

El término 0.821 esta cerca del -1. Una estrategia para eliminar o reducir esto es convertir el
término z-1 en 1 y el controlador cambia a:

1  1.5353z 1  0.5866z 2 0.632


D( z ) 
0.0514 1  z 1

Siguiendo una logica similar a el anterior ejemplo se utilizan los siguientes comandos en MATLAB

t1=5;t2=3;dt=1;lamda=1;tm=1;num=1;
d1=[t1 1];
d2=[t2 1];
den=conv(d1,d2);
gp=tf(num,den);
[numd,dend]=c2dm(num,den,dt,'zoh');
n1=[1 -1.5353 0.5866];
n2=0.632;
d1=0.0514;
d2=[1 -1];
nc=n2*n1;
dc=conv(d1,d2);
numd2=conv(numd,nc);
dend2=conv(dend,dc);
ncl=conv(nc,numd);
dcl=[dend2 0]+numd2;
yr=ones(1,11);
k=0:10;
y=filter(ncl,dcl,yr);
subplot(2,1,1)
plot(k,y,'+')
numm=conv(nc,dend);
denm=numd2+[dend2 0];
m=filter(numm,denm,yr);
subplot(2,1,2)
stairs(m)

Вам также может понравиться