Académique Documents
Professionnel Documents
Culture Documents
II. O BJETIVO
Ensayar el diseño de controladores digitales cuando el
modelo discreto de la planta se obtiene por identificación
utilizando datos reales de un proceso.
0,06621z + 0,04601
G=
z 2 − 1,271z + 0,3865
b1z + b2
G=
z2 + a1z + a2
Entrada-Salida de datos para validación:
Y del controlador:
s02 + s1z + s2
C(z) =
z2+ (r − 1)z − r
s1=-E*Wn+j*Wn*sqrt(1-Eˆ2);
%polo tiempo continuo
z1=exp(s1*T);
%polo discreto
zd=[z1 conj(z1) 0 0];
ez=poly(zd);
p1=ez(2);
%Se extrae coeficientes ec. car.
p2=ez(3);
p3=ez(4);
p4=ez(5);
P=[b1 0 0 1; b2 b1 0 a1-1; 0 b2 b1 a2-a1;
0 0 b1 -a2]; %matris de la planta
D=[p1-a1+1; p2-a2+a1; p3+a2; p4];
C=inv(P)*D;
%Calculo del PID1F o controlador S/R
Fig. 2: Controladores PID1F y PID2F con datos de cz=tf(C(1:3)’,[1 C(4)-1 -C(4)],T);
validación %Funcion de controlador feedback
figure
Con las gráficas obtenidas se puede apreciar que en cuanto step(feedback(cz*gzf,1));
al rechazo a las perturbaciones el PID1F y el PID2F tienen el %Salida controlada con e PID1F
mismo comportamiento, por el hecho de presentar el mismo %%PID2F
denominador en la función de transferencia, pero el PID de G=sum(C(1:3));
dos grados de libertad mejora el desempeño en cuanto al hold on
seguimiento a referencia comparado con el PID de un grado c2z=tf([G 0 0],[1 C(4)-1 -C(4)],T);
de libertad que presenta un overshoot. %controlador feed forward
step(c2z*feedback(gzf,cz));
Código en Matlab %Salida controlador por PID2F
hold off
%%Ubicación de polos T=0.8
%Datos estimación Para el literal b) se importaron los datos de (2) y se procedió
x1=VarName1(1:length(VarName1)/2); a la identificación del sistema, cargando los datos en Matlab.
y1=VarName2(1:length(VarName2)/2);
%Datos validación Entrada-Salida de datos:
Realizando una comparación de respuesta se obtuvo la siguien-
Fig. 3: Datos de entrada/salida(2)
te gráfica, en la que se observa la similitud de los dos:
0,02579z + 0,009453
G(z) =
z 3 − 0,8302z 2
A continuación se procedió a realizar el diseño del contro-
lador por el método de la última ganancia de Ziegler Nichols.
Utilizando el periodo de muestreo de la adquisición de datos
T=0.5.
Dado que la forma del controlador es la siguiente:
s02 + s1z + s2
C(z) =
z 2 + (r − 1)z − r
Entrada-Salida de datos para validación Se procedió a hallar la ganancia crı́tica Ku y el periodo
crı́tico Tu. Ku se obtuvo por medio de la utilización del
comando margin(gz1) y el periodo critico Tu por medio de
la siguiente gráfica.
Fig. 5: Controladores PID1F y PID2F con datos de
Seleccionando dos puntos del pico (3.99-1.6= 2.4) se obtuvo validación
el periodo critico Ku.
A continuación se obtuvo los valores de K, Ti, Td,r, s0, s1, s2
obteniendo el controlador de un grado de libertad y a partir Con las gráficas obtenidas se puede apreciar que en cuanto
de este se obtuvo el de dos grados de libertad. al rechazo a las perturbaciones el PID1F y el PID2F tienen
el mismo comportamiento, pero el PID de dos grados de
Controlador de un grado de libertad: libertad mejora el desempeño en cuanto al seguimiento a
referencia.
24,65z 2 − 30,57z + 8,651
C(z) = Código en Matlab
z 2 − 1,057z − 0,0566
%Datos completos
Controlador de dos grados de libertad: close all;
T=0.5;
datos=iddata(VarName1,
2,716z 2
C2(z) = VarName2,T);
z 2 − 0,5342z − 0,4658 figure
idplot(datos)
delayest(datos)
%Datos estimación
x1=VarName1(1:150);
y1=VarName2(1:150);
%Datos validación
x2=VarName1(151:300);
y2=VarName2(151:300);
%Estimación
datos=iddata(x1, y1,T);
figure
idplot(datos)
m1=procest(datos,’P1D’);
gz1=tf(m1);
figure
[a,b,c,d]=margin(gz1) %a y c
step(feedback(gz1*a,1),10)
gzf=c2d(gz1,T);
Fig. 4: Controladores PID1F y PID2F con datos de Ku=a;
estimación Tu=2.4;
K=0.4*Ku;
Ti=2*Tu/2;
Td=Tu/8; %En un incio era
/8 pero al variarle mejora
N=10;
r=-Td/(N*T+Td);
s0=K*(1+T/Ti-N*r);
s1=K*(r-1+T*r/Ti+2*N*r);
s2=-K*(r+N*r);
czn=tf([s0 s1 s2], [1 r-1 -r], T);
figure
step(feedback(czn*gzf,1),60)
%%PID2F
G=sum(s0+s1+s2);
hold on Entrada-Salida de datos para validación:
c2z=tf([G 0 0],[1 r-1 -r],T);
%controlador feed forward
step(c2z*feedback(gzf,czn));
%Salida controlador por PID2F
hold off
b1z + b2
G=
z2 + a1z + a2
Y del controlador:
Fig. 7: Controladores PID1F y PID2F con datos de
2 validación
s0 + s1z + s2
C(z) =
z 2 + (r − 1)z − r
Con las gráficas obtenidas se puede apreciar que en cuanto
Se obtuvo el controlador PID1F y a partir de este se obtuvo al rechazo a las perturbaciones el PID1F y el PID2F tienen el
el controlador PID2F. mismo comportamiento, por el hecho de presentar el mismo
Controlador de un grado de libertad: denominador en la función de transferencia, pero el PID de
dos grados de libertad mejora el desempeño en cuanto al
seguimiento a referencia comparado con el PID de un grado
21z 2 − 17,55z + 3,31 de libertad que presenta un overshoot.
C(z) =
z 2 − 0,4195z − 0,5805
Código en Matlab
Controlador de dos grados de libertad:
x=downsample(VarName1,2); %Para T=0.16
x=downsample(VarName2,2); %Para T=0.16
6,759z 2
C2(z) =
z 2 − 0,4195z − 0,5805 %Datos estimación
x1=VarName1(1:length(x)/2);
y1=VarName2(1:length(y)/2);
%Datos validación
x2=VarName1(length(x)/2:length(x));
y2=VarName2(length(y)/2:length(y));
T=0.16;
datos=iddata(x2, y2,T);
figure
idplot(datos)
m1=arx(datos,[2 2 1]);
%1 orden denominador, 2 numerador, 3 (zˆ-1)
gz1=tf(m1);
[n,d]=tfdata(gz1,’v’);
b1=n(2);
b2=n(3);
a1=d(2);
a2=d(3);
gzf=tf([b1 b2], [1 a1 a2], T);
[n,d]=tfdata(gzf,’v’);
Fig. 6: Controladores PID1F y PID2F con datos de Wn=10;
estimación E=0.7;
Con la función de Matlab delayest(datos) se obtuvo el
retardo de los datos cuyo valor fue cuatro, razón por la cual
s1=-E*Wn+j*Wn*sqrt(1-Eˆ2); %polo tiempo continuo
z1=exp(s1*T); %polo discreto se uso el comando procest(datos,0 P 1D0 ); con la cual se
zd=[z1 conj(z1) 0 0]; obtuvo el modelo del proceso para la posterior obtención de
ez=poly(zd); la planta discretizada.
p1=ez(2);
%Se extrae coeficientes ec. car. A continuación se particionó el conjunto de los datos de
p2=ez(3); (2) para estimación y validación , separando el conjunto de
p3=ez(4); datos en dos.
p4=ez(5);
P=[b1 0 0 1; b2 b1 0 a1-1; 0 b2 b1 a2-a1;
Entrada-Salida de datos para estimación
0 0 b1 -a2];
%matris de la planta
D=[p1-a1+1; p2-a2+a1; p3+a2; p4];
C=inv(P)*D;
%Calculo del PID1F o controlador S/R
cz=tf(C(1:3)’,[1 C(4)-1 -C(4)],T);
%Funcion de controlador feedback
figure
step(feedback(cz*gzf,1));
%Salida controlada con e PID1F
%%PID2F
G=sum(C(1:3));
hold on
c2z=tf([G 0 0],[1 C(4)-1 -C(4)],T);
%controlador feed forward
step(c2z*feedback(gzf,cz));
%Salida controlador por PID2F
hold off
Entrada-Salida de datos:
0,06541z + 0,005158
G(z) =
z 3 − 0,6155z 2
A continuación se procedió a realizar el diseño del contro-
lador por el método de la última ganancia de Ziegler Nichols.
Utilizando el periodo de muestreo de la adquisición de datos
T=1.
Dado que la forma del controlador es la siguiente:
Fig. 9: Controladores PID1F y PID2F con datos de
s02 + s1z + s2
C(z) = estimación
z 2 + (r − 1)z − r
Se procedió a hallar la ganancia crı́tica Ku y el periodo
crı́tico Tu. Ku se obtuvo por medio de la utilización del
comando margin(gz1) y el periodo critico Tu por medio de
la siguiente gráfica.
function u=pid2f_ziegger(x) Abrir el software Tia Portal y configurar una CPU S7-1200,
global uk1 uk2 yk2 yk1 en éste caso seleccionar una cpu 1214C, un modulo adicional
y=x(1); de entradas y salidas análogas, y por ultimo configurar la
sp=x(2); direccion ip del plc.
t=x(3);
K=x(4); Declarar variables como ”set point”
Ti=x(5);
Configurar el controlador con acción proporcional
solamente (las acciones integrales y derivativas deben ser
configuradas al mı́nimo), fijar la ganancia cerca o a 1.