Pràctica 3: Disseny i implementació de controladors PID
Les pràctiques de l’assignatura control amb computador consisteixen en l’estudi d’un servomecanisme de posicionament angular controlat per un PC. Les sessions de laboratori P1 i P2 es centren, respectivament, en l’anàlisi experimental de les respostes temporal i freqüencial del sistema. Les sessions P3 i P4 es dediquen al disseny de controladors PID. Finalment, en la pràctica P5 es dissenyaran controladors en camp freqüencial.
OBJECTIU: Dissenyar un controlador PI de velocitat de sortida perquè el sistema de llaç tancat tingui un error estacionari nul. Dissenyar un controlador PID de la posició de l'eix de sortida per la planta estudiada en les sessions anteriors per tal que el sistema en llaç tancat complixi unes certes especificacions.
En aquesta sessió l'estudiant ha de:
- Dissenyar un PI y un PID per assignació de pols.
- Verificar experimentalment els sistemes de control dissenyats.
% Canvi entre les dades de l'experiment i els del directori Resultats
% Si voleu utilitzar les dades del directori Resultats = false
% Si voleu utilitzar dades pròpies = true
useExperimentalData = false;
Exercici 11: Disseny i implementació d'un PI per assignació de pols.
Dissenyar un PI de control de velocitat que faci que la resposta temporal a un graó de entrada no presenti sobrepuigs i que el temps d'establiment (amb el criteri del 2%) sigui de 0.8 segons. Per a la simulació del controlador PI digital, obrir i executar el model P3_Ex11a.slx. Per a la seva comprovació amb el motor, obrir i executar el model P3_Ex11b.slx.
% planta
K0=0.82;
tau0=0.26;
% Temps de mostratge
Ts=0.01;
% Especificacions
xi=1;
ts_2=0.8; % Temps d'establiment amb el criteri del 2%
Tdes=ts_2/4;
wn=5.8/(xi*ts_2);
% Disseny del controlador
Zdes=exp(-Ts/Tdes);
alpha=exp(-Ts/tau0);
beta=-2*exp(-Ts*xi*wn)*cos(wn*Ts*sqrt(1-xi^2));
gamma=exp(-2*Ts*xi*wn);
Ki_star=(gamma-alpha+beta+(alpha+1))/(2*K0*(1-alpha));
Ki=(2/Ts)*Ki_star;
Kp=((beta+alpha+1)/(K0*(1-alpha)))-Ki_star;
Per a dissenyar el controlador, s'han seguit els següents passos. Primerament, s'ha digitalitzat la planta amb un mantenidor d'ordre zero i s'ha escollit un controlador PI discretitzat mitjançant l'aproximació trapezoïdal.
Tancant el llaç la funció de transferència pren la forma:
Igualant l'equació característica real, amb la ideal, podrem sintonitzar els nostres paràmetres.
Amb la qual cosa, les equacions de sintonia serien:
Les respostes ideal i real es poden observar en la següent imatge.
% Dibuixar la resposta del motor
if useExperimentalData
% Utilitzar Simulink
addpath([pwd filesep 'PIvel']);
open PI_experimental.slx;
run PI_experimental.slx;
else
FileName = 'PI_real_experimental.mat';
cd('..')
FolderName = [pwd filesep 'Common' filesep 'Resultados' filesep 'Prac3'];
File = fullfile(FolderName, FileName);
load(File);
end
figure
plot(PI_real_experimental.time,[PI_real_experimental.signals.values(:,1,:)],'r')
hold on; grid on;
plot(PI_real_experimental.time,[PI_real_experimental.signals.values(:,2,:)],'b')
plot(PI_real_experimental.time,[PI_real_experimental.signals.values(:,3,:)],'g')
xlim([18 60]); ylim([-2.3 2.3]);
xlabel('Temps (s)');
ylabel('Voltatge (V)');
title('Vin i sortida real i ideal');
legend('Vin','Resposta Real','Resposta Ideal');
Com es pot analitzar, les dues respostes són pràcticament iguals, però si analitzem les especificacions desitjades, podem observar que aquestes no es compleixen. Això passa perquè el controlador PI junt amb una planta de primer ordre tenen com a resposta un sistema amb dos pols i un zero. Aquest últim, té un efecte negatiu en la dinàmica del sistema, normalment fent-la una mica més ràpida del desitjat, és per això, que en aquest cas obtenim un petit sobrepuig. En la següent pràctica s'analitzarà com eliminar aquest efecte.
Exercici 12: Disseny i implementació d'un PID per assignació de pols.
Dissenyeu un PID de control de posició que faci que la resposta temporal a un graó de entrada presenti un sobreimpuls del 80% i una freqüència de les oscil·lacions de 0,5 Hz.
Per aconseguir-ho calculeu el valor dels dos pols dominants que compleixen amb aquestes especificacions i considereu un tercer pol en 0,01. Preneu el període de mostratge Ts igual a 0,01s. Determineu el valor de , y i del pol. Verifiqueu si es compleix la hipòtesi d'arrels dominants.
% Paràmetres de la planta
K0=0.82/0.017;
tau0=0.26;
N=9;
Kpot=1.62;
% Període de mostratge
Ts=0.01;
% Especificacions de control desitjades
Sp=80; % Sobrepuig
Fd=0.5; % freqüència
% Pols de segon ordre continu que compliran les especificacions
wd=2*pi*Fd ;
xi=sqrt((log(Sp/100))^2/(pi^2+log(Sp/100)^2))
wn=wd/ sqrt(1-xi^2)
s1=-xi*wn+j*wd
s2=-xi*wn-j*wd
% Pols de segon ordre discret que compliran les especificacions
p1=exp(Ts* s1 )
p2=exp(Ts* s2 )
% Inserir el tercer pol
p3=0.01
% Funció de transferència discreta de la planta
Ptas=tf([K0*(1/N)*Kpot],[tau0,1,0]);
Ptaz=c2d(Ptas,Ts,'zoh');
% Coeficients del denominador i enumerador
[Nz ,Dz]= tfdata(Ptaz,'v')
a1=Nz(2);
a0=Nz(3);
b1=Dz(2);
b0=Dz(3);
% Definicions de les matrius A i B
A=[-1 -a1 -a1 -a1 ; p2+p3+p1 a1-a0 -a1-a0 -a0+2*a1 ; ...
-p1*p2-p3*p1-p2*p3 a0 -a0 2*a0-a1 ; p1*p2*p3 0 0 -a0 ] ;
b=[p1+p2+p3-1+b1 ; -p1*p2-p3*p1-p3*p2+b0-b1 ; p1*p2*p3-b0 ; 0 ] ;
% Controlador
x=inv(A)*b ;
p4=x(1)
Kp=x(2)
Ki=(2/Ts)*x(3)
Kd=Ts*x(4)
% Anti-wind-up
pawd=0.2;
Kaw=1/Ki;
% Càlcul de dominància dels pols
dominancia=log(abs(p4))/log(abs(p1))
La funció de transferència del PID té la següent forma:
Amb la qual cosa la funció de transferència de llaç tancat pren la forma:
Es pot comprovar fàcilment que el denominador és:
El polinomi és de quart ordre, per tant tindrà quatre arrels i l'equació característica serà:
Com és un sistema de quart ordre i tres incògnites, no es podran fixar tots els pols del sistema, és a dir un d'ellos quedarà lliure (). Per tal que la metodologia sigui acceptable i adequada el pol lliure ha d'ésser estable i no dominant.
Igualant els coeficients i representant-ho en forma matricial, el sistema en llaç tancat seria:
Aquest sistema lineal és fàcilment resoluble utilitzant MATLAB. L'equació és , on A és una matriu i b és un vector columna amb n elements, llavors, .
% Dibuixar la resposta del motor
if useExperimentalData
% Utilitzar Simulink
addpath([pwd filesep 'PIvel']);
open PID_experimental.slx;
run PID_experimental.slx;
else
FileName = 'PID_real_ideal.mat';
FolderName = [pwd filesep 'Common' filesep 'Resultados' filesep 'Prac3'];
File = fullfile(FolderName, FileName);
load(File);
end
figure
plot(PID_real_ideal.time,[PID_real_ideal.signals.values(:,1,:)],'r')
hold on; grid on;
plot(PID_real_ideal.time,[PID_real_ideal.signals.values(:,2,:)],'b')
plot(PID_real_ideal.time,[PID_real_ideal.signals.values(:,3,:)],'g')
xlim([30 60]); ylim([-6.5 6.5]);
xlabel('Temps (s)');
ylabel('Voltatge (V)');
title('Vin i sortida real i ideal');
legend('Vin','Resposta Real','Resposta Ideal');
Com es pot observar, tot i que el controlador sigui capaç d'establir el sistema, les respostes real i ideal no són semblants. Això passa perquè un dels pols s'ha fixat lliurement i encara que compleixi la metodologia de ser lliure i no dominant, aquesta afecta el sistema. A més d'això, el controlador afegeix dos zeros, els quals també afecten a la dinàmica del sistema. Al costat de tot això cal afegir l'efecte que algunes dinàmiques no han estat modelades.
Exercici 13: Dissenyar els mateixos controladors però amb el bloc PID de Simulink.
Saber com es dissenyen i dissenyar controladors PID és molt important, ja que serem capaços de fer un llaç de control per qualsevol sistema. Però a més d'això, hem de saber que MATLAB/Simulink ofereixen eines que simplifiquen la nostra feina. Per exemple, amb l'eina "pidTuner" podem obtenir els guanys , y tenint solament la funció de transferència de la planta i les especificacions desitjades. D'altra banda, Simulink té un bloc específic anomenat "PID Controller" en el qual podem especificar els guanys de cada acció, coeficient del filtre de la part derivativa i el període de mostratge.
Figure 1: Eina pidTuner
Figure 2: Blocs PID de Simulink
En aquest exercici es desitja implementar els mateixos controladors, però fent servir aquest bloc específic que ofereix Simulink. Per a la simulació del PI obrir i executar el model P3_Ex13a.slx. Per executar aquest model en una planta obrir i executar el model P3_Ex13b.slx. Per a la simulació del PID, obrir i executar el model P3_Ex13c.slx i per a la seva comprovació fer servir el model P3_Ex13d.slx. Analitzar que els resultats obtinguts en aquest exercici s'assemblen als resultats obtinguts en els exercicis anteriors.