Está en la página 1de 4

Ejemplo de control digital

Un proceso tiene la siguiente funcion de transferencia:

y

1

m

(5

s

1)(3

s

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:

D z

(

)

1

Y / Y

R

HGp ( z ) 1

/

Y Y

R

Entonces, Y/Y R 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

término correspondiente a

Y / Y

R

1

/

Y Y

R

, tendremos que es igual a

0.632 z

1

1 z

1

, esto se expresa con

MATLAB de la siguiente manera

n2=0.632;

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

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:

  • D (

z )

1

1.5353

z

1

0.5866

z

2

0.632

0.0280

0.023 z

1

1

z

1

1

1.5353

z

1

0.5866

z

2

22.6

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:

D

(

z

)

1

1.5353

z

1

0.5866

z

2

0.632

  • 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)

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;