Sunteți pe pagina 1din 16

Tarea N.

1 Unidad 3
Realizado por: Fernando Quisaguano Materia: Control
Digital
Leandro Alvarez
Fecha: 27 de julio del 2016
NRC: 2696

TEMA: DISEÑO Y EVALUACIÓN DE LOS TIPOS DE CONTROLADORES PID

Propósito: Diseñar y analizar el desempeño de los tipos PID que modifican


su estructura utilizando la señal de salida (y,PV) en lugar de la señal de
error (e). Se denominan como tipo A, B y C o también PID, PI_D, I_PD
respectivamente, Se diferencian en el tipo de respuesta que producen en la
energía que consume el controlador relacionada con su amplitud y el
overshoot producido a la salida cuando se produce un cambio de setpoint.
En este trabajo se incluye la sintonización por el método de Ziegler Nichols y
el diseño digital directo del controlador PID.

1. Propagación de los algoritmos tipo A,B y C


1
Planta: G ( s )=
s ( s+4 )
Performance: Sintonizar por el método de la última ganancia de
Ziegler Nichols (Ku, Tu). Utilice un periodo de muestreo de T= 0.2 s.
Modifique las ganancias a Kc = 0.25*Ku, Ti = Tu, Td = Tu/6.

RESOLUCIÓN:

%% PROPAGACIÓN DE LOS ALGORITMOS


clc; clear all;
global kc kd ki
%% Funcion de transferencia de la planta
gs = tf(1,[1 4 0])
%% Discretizacion del modelo
T = 0.2;
gz = c2d(gs,T)
%% Extraer los coeficientes del sistema discreto
[n,d] = tfdata(gz,'v');
b1 = n(2); b2= n(3); a1 = d(2) ; a2 = d(3);
%% Calculo de la última ganancia y periodo (ku y Tu)
ku = (1-a2)/b2;
alfa = -1/2*(ku*b1+a1);
Tu = 2*pi*T/acos(alfa);
%% Moficacion de las ganancias
kc = 0.25*ku
Ti = Tu;
Td = Tu/6;
kd = kc*Td
ki = kc/Ti
Constantes del controlador:

%% Simulación TIPO A
open('sim1tipoA')
sim('sim1tipoA')
stairs(y.time,y.Data)
title('Output');
ylim([-0.4 1.4])
open('piDtypediscretoA')
sim('piDtypediscretoA')
hold on
%% Simulación TIPO B
open('sim1tipoB')
sim('sim1tipoB')
stairs(y.time,y.Data)
ylim([-0.4 1.4])
open('piDtypediscretoB')
sim('piDtypediscretoB')
%% Simulación TIPO C
hold on
open('sim1tipoC')
sim('sim1tipoC')
stairs(y.time,y.Data)
ylim([-0.4 1.4])
open('piDtypediscretoC')
sim('piDtypediscretoC')
legend('A','B', 'C')
hold off

Gráfica de los tres tipos de controladores:


Comparación de la energía obtenida por los dos métodos utilizados:

TIPO A:

Resultados de la energía con programación de la ecuación:


Resultados de la energía utilizando el diseño discreto:

TIPO B:
Resultados de la energía con programación de la ecuación:

Resultados de la energía utilizando el diseño discreto:


TIPO C:

Resultados de la energía con programación de la ecuación:


Resultados de la energía utilizando el diseño discreto:

ANÁLISIS DE LAS GRÁFICAS:


TABLA DE RESULTADOS:

TIPO Amplitud MP Ts (s) Energía

A 1.335   33% 2.2   254

B  1.351  35%  2.6 134.6 

C  1  0%  2  21.35

CONCLUSIONES:

Se observó el aumento del sobrepaso máximo del tipo B respecto al A


pero con una disminución de su energía.
Se pudo comprobar la disminución de la energía con cada tipo de
controlador siendo el tipo c el más eficiente. Así mismo la disminución
del sobrepaso máximo prácticamente a cero.

El tiempo de establecimiento fue variando pero obteniendo un claro


ganador tipo C frente al A y B.

2. Diseño directo PID 1 y PID 2

e−3 s
Planta: G ( s )=
10 s+ 1

Performance:

rad
ωn=0.15 ζ =0.8 T =5 s z 3=z 4=0
s

PROGRAMA:

%% EJERCICIO 2
clear all
clc
%% PLANTA
gs=tf(1, [10 1],'inputdelay',)
T=5;
%% DIGITALIZACION
gz=c2d(gs,T)
[n d]=tfdata(gz,'v');
b1=n(1); b2=n(2); a1=d(2); a2=0;
%% CONTROLADORES
zeta=0.8;
wn=0.15;
beta = acos(zeta);
wd = wn*sin(beta)
sigma = wn*cos(beta);
z1=exp((-sigma+wd*1i)*T);
z2=exp((-sigma-wd*1i)*T);
z3 = 0; z4 = 0;
ec=poly([z1 z2 z3 z4])
d1=ec(2); d2=ec(3); d3=ec(4);d4=ec(5);

P=[b1 0 0 1; b2 b1 0 a1-1; 0 b2 b1 a2-a1;0 0 b2 -a2];


D=[d1-a1+1; d2-a2+a1; d3+a2; d4];
C=inv(P)*D

%% CONTROLADOR
cz=tf(C(1:3)',[1 C(4)-1 -C(4)],T)

global s0 s1 s2 r

s0 = C(1,1);
s1 = C(2,1);
s2 = C(3,1);
r = C(4,1);
%% SIMULACION TIPO A Y TIPO C
open('Sim1A')
open('Sim1C')

sim('Sim1A')
subplot(211)
stairs(y.time,y.Data)
ylim([0 1.2])
title('Output');
sim('Sim1C')
hold on
subplot(211)
stairs(y.time,y.Data)
ylim([0 1.2])
title('Output');
legend('PID 1',' PID 2')

sim('Sim1A')
subplot(212)
stairs(u.time,u.Data)
ylim([0 1.2])
title('Input');
sim('Sim1C')
hold on
subplot(212)
stairs(u.time,u.Data)
ylim([0 1.8])
title('Input');
legend('PID 1','PID 2')

PID 1/A:
PID 2/C:

EJECUCION DEL
PROGRAMA:

CONCLUSIONES:
De igual manera que se observa que el PID 2 /C se obtiene una reducción
del sobrepaso máximo prácticamente de 0% respecto al PID 1/ A,
manteniendo la respuesta a las perturbaciones; además con una reducción
de la energía notable.

3. Diseño Digital PID para un doble integrador

1
Planta: G ( s )=
s2

Performance:

rad
ωn=0.2 ζ =0.7 T =1 s s 3=s 4=−10
s

PID 1/A:

PID 2/C:

El controlador digital tiene la forma:

clear all
clc
global r1 r2 s0 s1 s2 T

Digitalizar la planta y extracción de coeficientes

gs=tf(1, [1 0 0])
T=1;
gz=c2d(gs,T)
[n d]=tfdata(gz,'v');
b1=n(2); b2=n(3); a1=d(2); a2=d(3);
%

gs =

1
---
s^2

Continuous-time transfer function.

gz =

0.5 z + 0.5
-------------
z^2 - 2 z + 1

Sample time: 1 seconds


Discrete-time transfer function.

PROGRAMAS:
PID 1/A:

function u = fd103_tipoA(x)
global r1 r2 s0 s1 s2
global ek1 ek2 uk1 uk2
y = x(1);
sp = x(2);
t = x(3);
e = sp-y;
if t==0
u = s0*e;
ek2 = 0;
ek1 = e;
uk2 = 0;
uk1=u;
end
if t>0
u=-r1*uk1-r2*uk2+s0*e+s1*ek1+s2*ek2;
ek2 = ek1;
ek1 = e;
uk2 = uk1;
uk1 = u;
end
end
PID 2/C:

function u=fd103_tipoC(x)
global g h i j k s2 s1 s0 r1 r2
y=x(1);
sp=x(2);
t=x(3);
e=sp-y;
Kff=s0+s1+s2;
if t==0
f=e;
i=y;
u=Kff*f+(-s0+Kff)*i;
h=0;
g=f;
k=0;
j=i;
end
if t>0
f=e-r1*g-r2*h;
i=y-r1*j-r2*k;
u=Kff*f+(-s0+Kff)*i-s1*j-s2*k;
h=g;
g=f;
k=j;
j=i;
end
end

La ecuación característica discreta y coeficientes


Los polos dominantes que se obtienen con Factor de Amortiguamiento y
Frecuencia Natural están dados por:

La ecuación entre Z y S:

zeta=0.7;
wn=0.2;
s1=-(zeta*wn)+i*wn*sqrt(1-zeta^2);
s2=-(zeta*wn)-i*wn*sqrt(1-zeta^2);
p=-10;
z1=exp(s1*T);
z2=exp(s2*T);
zi=exp(p*T);
ec=poly([z1 z2 zi zi]);
d1=ec(2); d2=ec(3); d3=ec(4);d4=ec(5);
%

Diseño del controlador digital


P=[b1 0 0 1; b2 b1 0 a1-1; 0 b2 b1 a2-a1;0 0 b2 -a2];
D=[d1-a1+1; d2-a2+a1; d3+a2; d4];
C=inv(P)*D;
cz=tf(C(1:3)',[1 C(4)-1 -C(4)],T)
s0=C(1)';
s1=C(2)';
s2=C(3)';
r1=C(4)-1;
r2=-C(4);

cz =

1.427 z^2 - 2.523 z + 1.131


---------------------------
z^2 - 0.4346 z - 0.5654

Sample time: 1 seconds


Discrete-time transfer function.

Simulación
%open('modelosimA')
sim('modelosimA')
stairs(y.time,y.Data)
title('Salida');
hold on
%open('modelosimC')
sim('modelosimC')
stairs(y1.time,y1.Data)
legend('PID 1','PID 2')
hold off

S-ar putea să vă placă și