Control Digital
TEMAS:
Identificacin de modelos paramtricos y diseo de un controlador PID
Cdigo Curso:
MT228 - A
Cdigo
20122516F
20124568C
20121046F
2016-Ii
29-10-16
NDICE
INDICE ............................................................................................................... 2
1.-Objetivos ...................................................................................................... 3
2.-Marco Terico .............................................................................................. 4
2.1 ALGORITMO RLS (RECURSIVE-LEAST-SQUARES ALGORITHM) .......................... 4
2.2 DISEO DE UN CONTROLADOR PID ................................................................ 5
3.-Esquema del Experimento .......................................................................... 8
3.1 IDENTIFICACIN DE PLANTAS ......................................................................... 7
3.2 DISEO DEL CONTROLADOR PID.................................................................... 8
4.-Resultados .................................................................................................. 10
4.1 IDENTIFICACIN POR TOOLBOX DE MATLAB................................................... 10
4.2 IDENTIFICACIN POR MATHSCRIPT ............................................................... 11
4.3 IDENTIFICACIN POR LABVIEW ................................................................... 12
4.4 IDENTIFICACIN POR RLS ........................................................................... 12
4.5 DISEO DEL CONTROLADOR PID.................................................................. 14
4.6 SIMULACIN EN LABVIEW .......................................................................... 15
4.7 SIMULACIN EN MATLAB ............................................................................. 16
5.-Conclusiones.............................................................................................. 17
6.-Bibliografa ................................................................................................. 18
7.-Anexos ........................................................................................................ 19
A. TOOLBOX DE MATLAB PARA IDENTIFICACIN DE MODELOS PARAMTRICOS ........ 19
B. CDIGO MATHSCRIPT EN MATLAB ................................................................. 19
C. PROGRAMAS EN LABVIEW PARA IDENTIFICACIN DE MODELOS PARAMTRICOS 20
D. CDIGO DEL ALGORITMO RLS EN MATLAB ..................................................... 21
E. CDIGO PARA LA OBTENCIN DE PARMETROS DEL PID (PLANTA DE SEGUNDO
ORDEN) Y PARMETROS PARA LA SIMULACIN EN LABVIEW
................................ 22
[Volver al ndice]
29-10-16
1. Objetivos
[Volver al ndice]
29-10-16
2. Marco Terico
2.1.
Se basa en el uso de filtros adaptativos para encontrar los coeficientes del filtro
que permiten obtener el mnimo cuadrado de la seal de error (definida como la
diferencia entre la seal deseada y la seal producida a la salida del filtro) en
forma recursiva.
Se infiere que se trata de in mtodo que involucra inteligencia artificial, pues los
coeficientes se adaptan en cada iteracin. En nuestro sistema de control se
utiliz para reconstruir la planta a partir de sus entradas y salidas teniendo como
ley de control minimizar la siguiente expresin basada en los mnimos
cuadrados.
Importancia del filtro de Kalman en la elaboracin del algoritmo RLS
En primer lugar, el filtro de Kalman minimiza el error cuadrtico, y se basa
en el algoritmo de mnimos cuadrado LS
El filtro de Kalman es uno de los principales filtros utilizados sobre todo
para depuracin de seales, permitir el paso de seales deseadas y
eliminacin del ruido, es ampliamente utilizado en los algoritmos RLS.
El filtro de Kalman est basado en la matriz de autocorrelacin de datos y
del vector P. Dichas estimaciones se realizan mediante el promedio de un
numero M de muestras ms recientes del vector de datos X(n) y de la
referencia d(n).
El algoritmo RLS es sin duda el mejor algoritmo adaptativo para la
minimizacin del MSE (Error mnimo cuadrado).
[Volver al ndice]
29-10-16
Este modelo tiene cuatro parmetros. Tiene dos polos que pueden ser reales o
complejos, y tiene un cero finito y otro cero no finito. El modelo dado por la
funcin de transferencia de Gp(s) captura muchos procesos, sistemas
oscilatorios, y sistemas con ceros en el semiplano derecho.
Suponemos que el proceso puede controlarse mediante el diseo de un
controlador PID tipo paralelo dado por la funcin de transferencia:
Ecuacin Caracterstica
El sistema de lazo cerrado es de tercer orden y tiene la ecuacin caracterstica:
[Volver al ndice]
29-10-16
Resultando:
Representacin Matricial
Igualando los coeficientes de igual potencia en S y resolviendo en las ecuaciones
anteriores, nos resulta:
Reordenando
En forma matricial.
Condiciones de diseo
[Volver al ndice]
29-10-16
Identificacin de plantas
[Volver al ndice]
29-10-16
3.2.
326.1 + 205200
( . 11)
+ 651.6 + 205200
() = + +
= 0.7 ;
0 = 440 /
0
326.1
205200
8.4
10158
72015715.2 ] . [ ] = [ 16204 ]
8518400
2779553920
[Volver al ndice]
29-10-16
() =
Este procedimiento de diseo a mano para obtener los parmetros del PID,
tambin fue codificado en Matlab y los coeficientes del controlador fueron
exportados a Matlab (Ver Anexo E).
Estos parmetros fueron importados al LabVIEW mediante un subVI para
integrarlos luego al VI principal y poder desarrollar el control digital en tiempo
real de la planta. (Ver Anexo F)
Adicionalmente se realiz un control en tiempo continuo de la planta y
controlador a lazo cerrado en Matlab para comparar los resultados obtenidos en
LabVIEW. (Ver Anexo G)
[Volver al ndice]
29-10-16
4. Resultados
4.1.
10
29-10-16
4.2.
[Volver al ndice]
11
29-10-16
4.3.
[Volver al ndice]
12
29-10-16
[Volver al ndice]
13
29-10-16
4.5.
[Volver al ndice]
14
29-10-16
4.6.
Simulacin en LabVIEW
OBS:
Durante el laboratorio se introdujo los parmetros del controlador de manera
directa, pero presentamos en este informe la forma correcta de cmo obtenerlos
exportndolos desde Matlab:
[Volver al ndice]
15
29-10-16
Simulacin en Matlab
[Volver al ndice]
16
29-10-16
5. Conclusiones
[Volver al ndice]
17
29-10-16
6. Bibliografa
1.
2.
https://ocw.mit.edu/courses/mechanical-engineering/2-161-signalprocessing-continuous-and-discrete-fall-2008/study-materials/rls.pdf
3.
http://www.esi2.us.es/~alamo/Archivos/Certificaciones/Sec_9_Otras_
Publicaciones/Docente/AlamoPIDTotal.pdf
4.
https://ocw.mit.edu/courses/mechanical-engineering/2-154maneuvering-and-control-of-surface-and-underwater-vehicles-13-49fall-2004/lecture-notes/lec16.pdf
5.
https://eva.fing.edu.uy/pluginfile.php/72068/mod_resource/content/4/rl
s_handout.pdf
6.
[Volver al ndice]
18
29-10-16
7. Anexos
A.- Toolbox de Matlab para identificacin de modelos
paramtricos
[Volver al ndice]
19
29-10-16
showConfidence(h)
axis([-1.5 1.5 -1.5 1.5])
%% Ploteo de residuos
figure(2)
resid(th,data,'Corr',25)
[Volver al ndice]
20
29-10-16
[Volver al ndice]
21
29-10-16
YY=zeros(1,2);
M = 100;
% Definimos las iteraciones
for r = 1:M
k = r + 2; % contador
U(k) = 1; % input % CAMBIO SEGUN DATA
psi_p = [-Y(k-1) -Y(k-2) U(k-1) U(k-2)]'; % vector de datos % CAMBIO
% Algortimo RLS
Y(k) = psi_p'*theta_p;
YY(r) = Y(k);
psi = psi_p;
e = Y(k)-psi'*theta_0;
i = P_0*psi;
j = psi'*i;
gamma = i/(lambda_0 + j);
% Update de prediccion del vector parametros
theta = theta_0+gamma*e; % e error de prediccion
ae1(r+1) = theta(1); % update de ae1
ae2(r+1) = theta(2); % update de ae2
be1(r+1) = theta(3); % update de be1
be2(r+1) = theta(4); % update de be2
P = (diag(ones(4,1)) - gamma*psi')*P_0/lambda_0;
theta_0 = theta;
P_0 = P;
end
%% Modelo estimado
Gdi=tf([be1(end), be2(end)],[1, ae1(end), ae2(end)],T);
Gci=d2c(Gdi);
dur=1;
figure(2)
subplot(211), step(Gdi,'m',dur), hold, step(Gd,'b',dur) % discreto
subplot(212), step(Gci,'m',dur), hold, step(G, 'b',dur) % continuo
%% Evolucion de coeficientes
q=0:M;
figure(3)
plot(q,ae1,'k:',q,ae2,'r',q,be1,'b',q,be2,'k')
[Volver al ndice]
22
29-10-16
%% Matrices de coeficientes
A=[b1 0 b2-b1*c1
b2 b1 -b1*c2
0 b2 -b1*c3];
B=[c1-a1
c2-a2
c3];
%% Parametros del PID
X = linsolve(A,B);
Kp=X(1); Ki=X(2); Kd=X(3);
Ti=Kp/Ki;
Td=Kd/Kp;
disp('Parametros del PID [Kp,Ki,Kd]'), vpa([Kp Ki Kd],6)
%% Funcion de transferencia del controlador
Gc=tf([Kp*Ti*Td Kp*Ti Kp],[Ti 0]);
L=series(Gc,Gp); % Gc*Gp
H=L/(L+1); % Feedback
%% Control y error
figure(1)
t=0:0.001:2;
u=ones(size(t));
yp=lsim(H,u,t);
subplot(211)
plot(t,yp) % ploteo del control
xlabel('t(seg)'),ylabel('y(t)')
subplot(212)
plot(t,u-yp','r') % ploteo del error
xlabel('t(seg)'),ylabel('e(t)')
%% Discretizando
T= 0.01;
[Nt, Dt] = tfdata(Gc,'v');
Nt = poly2sym(Nt,'s');
Dt = poly2sym(Dt,'s');
syms z
Gdt = Nt/Dt;
%% Rediseo por Tustin
Gdt=subs(Gdt,{'s'},(2*(z-1))/(T*(z+1)));
% Rediseno por Euler Backward
% Gdt=subs(Gdt,{'s'},(z-1)/(T*z));
Gdt=simplify(Gdt);
Gdt=vpa(Gdt,4);
[NDt DDt]=numden(Gdt);
NDt=sym2poly(NDt);
DDt=sym2poly(DDt);
% FT del Controlador D(z)
GDt=tf(NDt,DDt,T);
printsys(NDt,DDt,'z')
%% Generando data para LabVIEW
[Np,Dp]=tfdata(Gp,'v');
datos=[Np Dp NDt DDt]; %Coeficientes para LabVIEW
save dataExportada.lvm datos -ascii -tabs
[Volver al ndice]
23
29-10-16
[Volver al ndice]
24
29-10-16
[Volver al ndice]
% tiempo de simulacion 2
% tiempo de simulacion 3
% tiempo de simulacion 3
% tiempo de simulacion 3
% tiempo de simulacion 3
% tiempo de simulacion 3
% tiempo de simulacion 3
25