Diseño de Controladores Digitales
Diseño de Controladores Digitales
Diseño de Controladores Digitales
()
En donde K
a
es la ganancia del actuador, K
m
la ganancia del motor, K
s
la
ganancia del sensor y
m
el retardo del motor.
De esta manera, el diagrama de bloques del sistema es:
El propsito del diseo se convierte entonces en hallar la funcin de
transferencia que representa al controlador, G
c
, de tal manera que se
cumplan los requerimientos de comportamiento deseados para el sistema.
Los requerimientos de comportamiento suelen darse en trminos de
respuesta en el tiempo. Un criterio estndar es la respuesta cuando la
entrada es un escaln unitario:
tp: tiempo pico.
td: tiempo de retardo.
tr: tiempo de levantamiento.
t
ss
: tiempo de asentamiento.
Mp: sobrepaso mximo.
e
ss
= error de estado estable.
Un controlador tipo PID genera una seal de control, llamada u o MV por
variable manipulada, que se relaciona con la seal de error, e, as:
La transformacin Laplace de esta relacin arroja:
()
()
Para llevarla a la forma en z, se suele emplear la transformacin bilineal:
Con lo cual el PID en z queda:
t
ss
e
ss
Disear el controlador PID es escoger los valores de K
p
, K
i
y K
d
apropiados
para satisfacer los requerimientos de diseo. Un ajuste ptimo de estos
parmetros es muy difcil, por lo cual es usual un enfoque manual. Aqu se
explica el mtodo incremental:
1. Fije K
i
=0 y K
d
=0. Incremente K
p
hasta que la salida empiece a oscilar. El
valor apropiado de K
p
estar alrededor de la mitad de dicho valor.
2. Incremente K
i
hasta que la salida no presente error de estado estable.
3. Si es necesario, incremente K
d
hasta que los valores para el tiempo de
establecimiento y el sobrepaso se alcancen.
El siguiente cdigo Matlab se puede utilizar para disear el controlador.
% cd02_disenho_controlador.m
% Pautas para disenhar un controlador digital PID para motor DC
close all;
% #################################################
% ESPECIFICACION DE PARAMETROS:
% Cambie estos valores a los que mas convengan en su caso:
% Parametros analogicos
Ka = 4; % Ganancia del actuador
Km = 0.7; % Ganancia del motor
Tm = 0.2; % Retardo del motor
Ks = 0.25; % Ganancia del sensor
% Parametros de tiempo
Ts = 1E-3; % Tiempo de muestreo
tsim = 12; % Tiempo de simulacin
% Parametros de disenho del controlador:
tss = 2 % tiempo de establecimiento (tss), en segundos
Mp = 5/100; % Sobrepaso (Mp), valor en porcentaje (%)
ess = 1/100; % error de estado estable (ess), valor en porcentaje (%)
% #################################################
% PROCESO DE DISENHO:
s = tf('s'); % especificar s como variable continua
z = tf('z',Ts); % especificar z como variable discreta
disp('PID para controlar motor');
disp('=========================');
% modelo del motor:
Gps = Ka*Km*Ks/(Tm*s+1);
disp('Gps = Planta:');
zpk(Gps)
% digitalizar la planta
Gpz = c2d(Gps, Ts,'zoh'); % transformar a z usando retenedor 0
disp('Gpz = Planta digitalizada:');
Gpz = zpk(Gpz)
% observar respuesta sin compensacion
Gcl = feedback(Gpz, 1); % sistema en lazo cerrado
[y,t] = step(Gcl, tsim); % obtener respuesta al escalon
stairs(t,y); % observar respuesta generada por retenedor
xlabel('Tiempo (s)')
ylabel('Velocidad (rad/s)')
title('Respuesta continua al escalon: Original')
% Analizando la grafica, se tiene que:
% ess = 0.91 = (escalon - valor final) = 1 - 0.09
% tss = 1.8 = (tiempo para llegar al ess)
% controlador PID:
% Cs = Kp + Ki/s + Kd*s
% digitalizar el controlador: transformacion bilineal
% s = (2/Ts)*(z-1)/(z+1)
% Para hallar los parametros del PID:
% simulacion incremental:
% Fijar algun valor para Kp (ejemplo 100) y observar respuesta
% si no se logra todos los criterios de disenho, dejar Kp fijo y
% variar ahora Ki; hacer luego lo mismo con Kd
% NOTA1: Si la planta tiene un cero, se debe colocar un polo en
% el controlador que lo cancele
% NOTA2: Si la planta tiene un polo en cero, cancelarlo con un
% cero en cero en el controlador
% NOTA3: El efecto principal de cada parametro es:
% Kp: Reduce el tiempo de subida
% Ki: Elimina el error de estado estable
% Kd: Reduce el sobrepaso y el tiempo de establecimiento
% Estos valores se obtuvieron siguiendo este proceso:
Kp = 100;
Ki = 30;
Kd = 10;
Cs = Kp + Ki/s + Kd*s;
Cz = c2d(Cs, Ts, 'tustin'); % tustin = bilineal
% #################################################
% Incluir aqui cancelaciones requeridas de polos y ceros, ejemplo:
% Cz = Cz/(z+0.8189);
% #################################################
% observar respuesta con compensacion
Gclc = feedback(Cz*Gz, 1); % sistema en lazo cerrado
[y,t] = step(Gclc, tsim); % obtener respuesta al escalon
figure(), stairs(t, y); % observar respuesta del retenedor
xlabel('Tiempo (s)')
ylabel('Velocidad (rad/s)')
title('Respuesta continua al escalon: Compensador PID')
% mostrar resultado segun los criterios de disenho:
disp('Controlador disenhado:');
Kp, Ki, Kd
disp('Controlador = Cz:');
Cz
% tss:
YF = y(length(y));
disp('tss deseado:');
tss
i = length(y);
valor = y(i);
while valor>(1-ess)*YF
i = i-1;
valor = y(i);
end
disp('tss actual:');
i*Ts
% Mp:
disp('Sobrepaso deseado:');
Mp
disp('Sobrepaso actual:');
(max(y)-YF)/YF*100.0
% ess:
disp('ess deseado:');
ess
disp('ess actual:');
(1-YF)*100.0