Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Teoría
1. ¿Cuáles son las especificaciones que se cumplen para controladores diseñados por
Ziegler-Nichols?
Este método no puede aplicarse si no existe un valor de la ganancia proporcional que haga al
sistema críticamente estable.
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)
fa =
Wn =
sysd =
7.557
p3 =
Sd1 =
sysd2 =
7.557
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=
---------------------------
Y así al cerrar el lazo del sistema con el controlador añadido nuestra función de trasnferencia
del sistema controlado es:
syspid =
------------------------------------
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
>
>
>
Así el error en estado estacionario ante una entrada escalón es del 0.0009 %
Cd=c2d(C,0.1,'tustin')
Cd =
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 =
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
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)
C=
CCC =
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%
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 =
step(sd)
y=step(sd);
u=[zeros(1,2),ones(1,33)];
ut=u';
e=ut-y;
t=0:0.10:3.4;
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.
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
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
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)
C=
3.24 s^2 + 2.8 s + 0.7778
-------------------------
3.6 s
CCC =
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:
>
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
dademuchconnection.
Disponible en:
https://dademuch.com/2018/03/26/error-en-estado-estable-de-un-sistema-de-control/
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