Está en la página 1de 22

EISULA – Departamento de Control y automatización

Tarea 9 – Control 3 – Semestre B-2022

Yuarth Hernández C.I. 25.822.068

Profesor: Jormany Quintero

Teoría
1. ¿Cuáles son las especificaciones que se cumplen para controladores diseñados por
Ziegler-Nichols?

Con respecto a los dos métodos de sintonía de zieger-nichols en ambos la característica


común es que en general se consigue un factor de decaimiento del 25%, esto es, que el valor
de la salida ante entrada escalón decae a un cuarto en un periodo de oscilación
Para el método 1 solo es aplicable para sistemas sigmoidales, esto significa que la planta es
estable y no tiene ni integradores ni parejas de polos complejos conjugados dominantes,
entonces la respuesta del mismo tendrá la forma de S (S-shaped).
La constante proporcional del controlador Kp es inversamente proporcional a la ganancia del
sistema K, el retardo T y el tiempo integral son directamente proporcionales, lo mismo pasa
entre el tiempo derivativo Td y el retardo T.
Una manera de mejorar la sintonía es dividir a la mitad la ganancia Kp.

En el segundo método se considera el sistema en lazo cerrado formado por la planta, el


controlador PID en serie y realimentación unitaria. Se hace Ti = ∞ y Td = 0, esto es, se activa
únicamente el control proporcional, y se va incrementando la ganancia proporcional K desde
cero hasta el valor de la misma (Kcr) que haga al sistema críticamente estable, y por lo tanto
presente la salida una oscilación mantenida (ante entrada tipo escalón).

Este método no puede aplicarse si no existe un valor de la ganancia proporcional que haga al
sistema críticamente estable.

La sintonía por Zieger-Nichols no garantiza la estabilidad del sistema ni tampoco garantizan


un tipo de dinámica preestablecida.
2. Para el siguiente sistema en continuo

Diseñe un controlador PID usando asignación de polos


El controlador debe cumplir con las siguientes especificaciones: Anule el error en estado
estacionario, %SD < 10%, Ts < a un tercio del Ts en lazo abierto.
Discretice el controlador.
Ante una entrada escalón unitario simule la salida y(k), el error e(k) y la señal de control
u(k) del sistema controlado (ambas discretizaciones del controlador y la señal continua)
Establezca análisis de los resultados.

Se diseño el controlador PID en Matlab, colocando las condiciones de Mp = 0.09, y el ts <


a un tercio del Ts en lazo abierto:

num=[1 1];
den=[1 8 5];

sys=tf(num,den);

Mp=0.09;
tau=1/(abs(max(roots(den))));
ts=4.1852/3.5

fa=sqrt(((log(Mp/100))^2)/(pi^2+((log(Mp/100))^2)));
Wn=3/(fa*ts)

num2=[Wn^2];
den2=[1 2*fa*Wn Wn^2];

sysd=tf(num2,den2);
Sd=[-fa*Wn+1i*Wn*sqrt(1-fa^2), -fa*Wn-1i*Wn*sqrt(1-fa^2)];
p3=real(Sd(1))*10;
Sd1=[Sd p3];
Pds=poly(Sd1)

sysd2=tf(num2,Pds);

Kc=(Pds(3)-5)/1
ti=(1*Kc)/Pds(4)
td=(Pds(2)-8)/(1*Kc)

alpha=0.0;

d2=alpha*Kc*ti*td+Kc*ti*td
d1=Kc*ti+alpha*Kc*td
d0=Kc

numc=[d2 d1 d0];
denc=[1 0];
C=tf(numc,denc)

numpid=[d2 d1 d0]
denpid=[1 (8+d2) (5+d1) d0]

K=10^5;

syspid=K*tf(numpid,denpid)
figure(1)
step(syspid)
figure(2)
pzmap(syspid)

stepinfo(sys)
stepinfo(syspid)

De donde se obtienen los siguientes valores:

fa =

0.9126 (factor de amortiguamiento)

Wn =

2.7491 (Frecuencia angular)

sysd =
7.557

--------------------- (funcion de transferencia deseada)

s^2 + 5.018 s + 7.557

p3 =

-25.0884 (tercer polo añadido)

Sd1 =

-2.5088 + 1.1239i -2.5088 - 1.1239i -25.0884 + 0.0000i (polos del sistema)

sysd2 =

7.557

--------------------------------- (el denominador es el polinomio característico deseado)

s^3 + 30.11 s^2 + 133.4 s + 189.6

Kc =

128.4430

ti =

0.6774

td =
0.1721

d2 =

14.9755

d1 =

87.0119

d0 =

128.4430

Al tener los valores de los parámetros podemos obtener nuestro controlador PID:

C=

14.98 s^2 + 87.01 s + 128.4

---------------------------

Continuous-time transfer function.

Y así al cerrar el lazo del sistema con el controlador añadido nuestra función de trasnferencia
del sistema controlado es:
syspid =

1.498e06 s^2 + 8.701e06 s + 1.284e07

------------------------------------

s^3 + 22.98 s^2 + 92.01 s + 128.4

Continuous-time transfer function.

De donde las características del sistema son:

RiseTime: 0.1890

SettlingTime: 1.3885

SettlingMin: 9.0449e+04

SettlingMax: 1.0413e+05

Overshoot: 4.1258

Undershoot: 0

Peak: 1.0413e+05

PeakTime: 0.7784

Vemos que el SettlingTime(tiempo de asentamiento) se encuentra por debajo de 1.3950


segundos que es el tercio de tiempo de asentamiento de la planta, lo mismo el sobredisparo
se encuentra por debajo del 10%, por úlitmo para reducir el error en estado estacionario lo
más cercano a cero, para eso se añadió una ganancia K grande K=10 a la 5, así calculado el
error en estado estacionario:

>
>

>

Así el error en estado estacionario ante una entrada escalón es del 0.0009 %

Ahora discretizamos el controlador C:

Cd=c2d(C,0.1,'tustin')

Cd =

392.9 z^2 - 586.2 z + 218.9


---------------------------
z^2 – 1

Ahora para hallar la salida y(k) discretizamos el sistema ‘syspid’ y obtenemos su señal de
salida frente a una entrada escalón:

sysd=c2d(syspid,0.1,'tustin')

sysd =

4.102e04 z^3 - 2.017e04 z^2 - 3.834e04 z + 2.285e04


---------------------------------------------------
z^3 - 1.616 z^2 + 0.6971 z - 0.02723

Sample time: 0.1 seconds


Discrete-time transfer function.

Así para encontrar la señal de salida y(k) utilizamos:

step(sysd)

Obteniendo:
Ahora para encontrar la señal de error e(k), es la resta entre la señal de entrada (señal de
referencia) que en nuestro caso es un escalón unitario menos la señal de salida obtenida
anteriormente, realizándolo en MATLAB:

u=[zeros(1,2),ones(1,22)];
ut=10^5*u'; (se añade la misma ganancia que afecta al sistema)
e=ut-y;
t=0:0.15:3.5;
plot(t,e)
title('Señal e(k)')
3. Responda la pregunta anterior diseñando un controlador PID usando otra estrategia
de diseño

En este caso utilizaremos la configuración en paralelo de controladores PID, y hallaremos


las constantes Kp, Ki y Kd, a través de una sintonía manual, de inicio asignando un Kp
pequeño y Ki = Kd = 0, hasta que el sistema oscile, luego se fueron ajustando las otras dos
constantes hasta lograr que el sistema obtenga el comportamiento deseado, de esa forma
obtuvimos en MATLAB:

num=[1 1];
den=[1 8 5];

sys=tf(num,den);

kp=100;
ki=100;
kd=1

numk=[kd kp ki];
denk=[1 0];
C=tf(numk,denk)

CC=C*sys
CCC=feedback(CC,1)

De donde el controlador diseñado es:

C=

s^2 + 100 s + 100


-----------------
s

Continuous-time transfer function.

Y el sistema controlado nos queda:

CCC =

s^3 + 101 s^2 + 200 s + 100


-----------------------------
2 s^3 + 109 s^2 + 205 s + 100

Continuous-time transfer function.

De donde las características del sistema controlado son:

RiseTime: 0.1350
SettlingTime: 1.3084
SettlingMin: 0.9501
SettlingMax: 1.0002
Overshoot: 0.0243
Undershoot: 0
Peak: 1.0002
PeakTime: 3.5550

Tiempo de asentamiento por debajo del tercio de tiempo de asentamiento del sistema
original, y sobredisparo menos al 10%

Para llevar al error estacionario cerca de 0, se añadió la ganancia grande K, así queda el
error en estado estacionario en 0.00009%

Ahora discretizamos el controlador C:

Cd =
125 z^2 - 30 z - 75
-------------------
z^2 - 1

Ahora para hallar la salida y(k) discretizamos el sistema ‘CCC’ y obtenemos su señal de
salida frente a una entrada escalón:

sd =

0.8229 z^3 - 0.942 z^2 - 0.315 z + 0.4467


-----------------------------------------
z^3 - 1.367 z^2 + 0.009404 z + 0.3699

Sample time: 0.1 seconds


Discrete-time transfer function.

De donde obtenemos la respuesta al escalón discreto y asi y(k):


Ahora para encontrar la señal de error e(k), es la resta entre la señal de entrada (señal de
referencia) que en nuestro caso es un escalón unitario menos la señal de salida obtenida
anteriormente, realizándolo en MATLAB:

step(sd)
y=step(sd);
u=[zeros(1,2),ones(1,33)];
ut=u';
e=ut-y;
t=0:0.10:3.4;

Así nos queda:

Por ultimo la señal u(k) es la salida del controlador C, que a su vez es la entrada de la
planta, como ya tenemos el controlador discretizado, hallamos su salida u(k) con respecto a
la entrada escalón:
4. Compare la salida de los dos sistemas controlados.

Observando la salida del sistema tanto del controlador PID por asignación de polos y el
sistema controlado por el PID por sintonía manual, observamos que ambos cumplen con las
especifiaciones requeridas de diseño, podemos concluir que el sistema por sintonía manual
es un poco más rápido, ya que logra un tiempo de asentamiento menor, y posee menos
sobredisparo, ambos sistemas controlados logran alcanzar el comportamiento deseado, solo
que uno es más rápido que el otro.

5. Sea el sistema

Establezca las características temporales del sistema en lazo abierto y en lazo cerrado.
Grafique los polos en lazo abierto y lazo cerrado.
Diseñe un controlador PID usando el método de Ziegler-Nichols.
Discretice el controlador con retenedor y sin retenedor.
Ante una entrada escalón unitario simule la salida y(k), el error e(k) y la señal de
control
u(k) del sistema controlado (ambas discretizaciones del controlador y la señal
continua)
Establezca análisis de los resultados.

Nota: use el comando tf(num,den,To) para realizar su función de transferencia en


discreto,
no puede usar simulink

Características del sistema en lazo abierto y lazo cerrado:

num=[1.5];
den=[1 4 5.25 2.75 0.5];

sys=tf(num,den);

syslz=feedback(sys,1);

stepinfo(sys)
stepinfo(syslz)

Así:
Lazo abierto:

RiseTime: 7.3459
SettlingTime: 13.5049
SettlingMin: 2.7031
SettlingMax: 2.9997
Overshoot: 0
Undershoot: 0
Peak: 2.9997
PeakTime: 25.6968

Lazo cerrado:

RiseTime: 1.8719
SettlingTime: 37.1342
SettlingMin: 0.4864
SettlingMax: 1.1713
Overshoot: 56.1682
Undershoot: 0
Peak: 1.1713
PeakTime: 5.4438

Ambos sistemas son estables, pero al cerrar el lazo el sistema se vuelve subamortiguado, y
comienza a presentar sobredisparo, a continuación esto se deja más claro al ver la posición
de los polos:

Lazo abierto:
Polos ubicados en: -2.0000, -1.0000, -0.500, -0.5000

Lazo cerrado:
Polos ubicados en: -1.8949 + 0.5967i, -1.8949 - 0.5967i, -0.1051 + 0.7041i. -0.1051 -
0.7041i

A continuación se procede con el diseño del controlador PID por el método 1 de Zieger-
Nichols, obtenemos los valores de T, L y K:
De donde se obtuvo L=0.2, T=7, y K=3

Diseñando el controlador en MATLAB:

clear all
clc

num=[1.5];
den=[1 4 5.25 2.75 0.5];

sys=tf(num,den);

syslz=feedback(sys,1);

L=1.8
te= 8.8-1.8
K=3

kp=(1.2*(te/(K*L)))/2
ti=2*L
td=0.5*L

numk=[td*ti kp*ti kp];


denk=[ti 0];

C=tf(numk,denk)

CC=C*sys;
CCC=feedback(CC,1)

figure(1)
pzmap(sys)
grid on
figure(2)
pzmap(syslz)
grid on
figure(3)
step(sys)
grid on
title('Respuesta del sistema lazo abierto')
figure(4)
step(CCC)
grid on
title('Respuesta del sistema lazo cerrado con PID por Z-N')
stepinfo(sys)
stepinfo(syslz)

De donde obtenemos el controlador PID:

C=
3.24 s^2 + 2.8 s + 0.7778
-------------------------
3.6 s

Continuous-time transfer function.

Y el sistema en lazo cerrado controlado por el PID:

CCC =

4.86 s^2 + 4.2 s + 1.167


-------------------------------------------------------
3.6 s^5 + 14.4 s^4 + 18.9 s^3 + 14.76 s^2 + 6 s + 1.167

Continuous-time transfer function.

Ahora se procede a discretizar el controlador C, realizándolo en Maple:

Sin retenedor:

>

>

Con retenedor:

>

>
>

>

>
>

Así se logra la discretización del controlador con y sin retenedor, ahora encontraremos la
señal y(k) del sistema ante una entrada escalón:

Discretizando el sistema controlado:

>

Ahora se calcula la salida y(k) en MATLAB:


Ahora para encontrar la señal de error e(k), es la resta entre la señal de entrada (señal de
referencia) que en nuestro caso es un escalón unitario menos la señal de salida obtenida
anteriormente, realizándolo en MATLAB:

numm=[0.02029167000 0.220183500e-1 -0.3708330000e-1 -0.4044330000e-1


0.169783500e-1 0.1861167000e-1];
demm=[139.8122517 -646.5693016 1194.940437 -1103.016363 508.4474984 -
93.61414833]
sysd=tf(numm,demm,0.1)
figure(5)
step(sysd)
grid on
y=step(sysd);

u=[ones(1,162)];
ut=u';
e=ut-y;
t=0:0.118:19;

figure(6)
plot(t,e)
grid on
title('Señal e(k)')
La señal de error decrece debido a que el controlador PID se encarga de reducir al máximo
el error en estado estacionario.

Con esto se concluye, el diseño del controlador a través del método 1 de zieger-nichols fue
existosa, cabe destacar que al principio cuando se calcularon los parámetros kp, ti, y td, la
respuesta del sistema era muy oscilatoria, por lo que se redujo el kp a la mitad para lograr
un correcto comportamiento, logrando así un sistema más rápido, llegando al estado
estacionario mucho antes que el sistema en lazo abierto, al cerrar el lazo el sistema se
vuelve sobreamortiguado además, pero sigue siendo un sistema más veloz.
REFERENCIAS

[1] C. (2021, 29 enero). Error en estado estable de un sistema de control.

dademuchconnection.

Disponible en:

https://dademuch.com/2018/03/26/error-en-estado-estable-de-un-sistema-de-control/

[2] C, S. (2022, 29 junio). Error en Estado Estacionario. Control Automático Educación.

Disponible en:

https://controlautomaticoeducacion.com/control-realimentado/error-en-estado-estacionario

[3] C, S. (2022a, enero 20). Control PID por Asignación de Polos. Control Automático

Educación.

Disponible en:

https://controlautomaticoeducacion.com/control-realimentado/control-pid-por-asignacion-

de-polos

[4] ZIEGLER NICHOLS ✅ PRIMER Método [Control PID] Parte 1. (2019, 22 julio).

YouTube.

Disponible en:

https://www.youtube.com/watch?v=5WSq4Uv3JFI&ab_channel=SergioA.Casta%C3%B1oGiraldo

También podría gustarte