Escolar Documentos
Profissional Documentos
Cultura Documentos
03 Pid D
03 Pid D
(3-1)
(3-2)
m k = k p e k + k i S k + k d (e k e k -1 )
onde: (3-3) Sk = Sk-1 + ek e os novos parmetros esto relacionados com os analgicos da seguinte forma:
k p = k c T (3-4) k i = k c Ti T kd = kc d T
(3-5) mk = mk - mk-1
Este tem como sada o incremento (ou decremento) no valor da varivel manipulada em cada instante (mk) e no o valor absoluto desta varivel (mk): (3-6)
m k = e k (k p + k i + k d ) - e k -1 (k p + 2k d ) + e k -2 k d
3-1
elseif flag == 4 %Calcula prximo instante de amostragem ns = t / ts; %ns n de amostras sys = (1 + floor(ns + 1e-13*(1+ns)))*ts; %momento prxima amostra elseif flag == 3 if t==0 ek_1=u(1); end; kp=kc; ki=kc*ts/Ti; kd=kc*Td/ts; ek=u(1); s = s + ek; m=kp*ek+ki*s+kd*(ek-ek_1); ek_1=u(1); sys = m; else sys = [ ]; end %por defeito no retorna nada %Converte parametros
Repare-se que esta funo assume como parmetros de entrada kc, Ti e Td e converte-os para os parmetros kp, ki e kd.
Fig. 3-1: Diagrama blocos do Controlador PID discreto (posio) Guias prticos STR 3-2
Pid digital Criar o bloco PID de posio como descrito acima num modelo. A partir da janela principal do Matlab: File->new->Model. Os blocos podem ser guardados numa biblioteca para uso futuro. A partir da janela do Modelo: File->new->Library abre uma janela de biblioteca. Pode-se agora arrastar o bloco
PID_posio para a biblioteca.
Na biblioteca alm dos blocos devem ser guardadas tambm as s-functions correspondentes. Para isso criar um directrio, por ex. pid_lib, e guardar nesse directrio a biblioteca com o nome pid_lib. Copiar agora a s-function pid_pos.m para esse mesmo directrio. Para que esse directrio fique registado no caminho do Matlab, de modo que as s-functions estejam acessveis a partir da janela principal do Matlab: File->Set path, e depois adicionar ao caminho o directrio onde est a biblioteca: pid_lib. Pode-se agora obter o controlador PID de velocidade a partir do controlador de posio, Algoritmo 3-1. Na janela da biblioteca: #1 #2 #3 copiar o bloco PID_Posio e renome-lo para PID_velocidade. Abrir a mscara e mudar o nome da s-function para pid_vel Copiar o ficheiro com a s-function pid_pos.m para pid_vel.m e alterar o cdigo para:
function [sys, x0, str, ts] = pid_vel (t, x, u, flag, ts, kc, Ti, Td) persistent ek_ % passa a ter s uma varivel persistente:
(...) if flag == 0 % apagar a inicializao da varivel: s = 0 (...= elseif (flag == 3) % substituir por:
%ek_(1) -> ek-1, ek(2) -> ek-2 %Converte parametros if t==0 ek_=ones(2,1)*u(1); end kp=kc; ki=kc*ts/Ti; kd=kc*Td/ts;
Algoritmo 3-2: PID de velocidade (alteraes ao Algoritmo 3-1 PID de posio ) Guias prticos STR 3-3
Pid digital
Nota: se no fr possvel efectuar alteraes na biblioteca, porque esta est protegida. Para
(3-7)
No diagrama acima as constantes tm outra designao da j referida, sendo a correspondncia dada por (3-7):
(3-8)
3-4
Pid digital A verso da Fig. 3-2 uma implementao diferente do controlador j visto, pois no segue a equao (3-1), visto que a constante (Kc = P) apenas aplicada ao termo proporcional, e no a todos os 3 termos, e a constante de tempo integral est invertida. Para alterar esta implementao para que respeite a equao (3-1) pode-se alterar o diagrama da Fig. 3-2 de acordo com a Fig. 3-3 e renomear o bloco para PID_analgico). Repare-se que manipulando as constantes Porporcional, Integral e Derivativa como indicado na equao (3-7), ambos os modelos tm respostas idnticas. Nesta disciplina vamos assumir que o modelo de PID o dado pela equao (3-1) ou Fig. 3-3, pois os mtodos de sintonia do PID estudados assumem este modelo. Para comparar as diferentes implementaes do algoritmo PID na resposta ao degrau desenhar o diagrama abaixo:
Fig. 3-4: Diagrama blocos para resposta ao degrau do controlador PID Para j no inclua o bloco a vermelho: actuador. Os 4 manual switches permitem ligar o algoritmo correspondente de modo a apresentar no scope a sada deste. Em cada bloco PID, colocar nos parmetros Porporcional (Kc), Integral (Ti) e Derivativo (Td), respectivamente as variveis: Kc; Td e TI. Nos blocos PID discretos colocar tambm Guias prticos STR 3-5
Pid digital no parmetro Sample Time a varivel ts. No bloco step colocar no valor inicial do degrau 0 e no valor final do degrau a varivel uf. O degrau ocorre no instante de tempo 1 segundo. Estas variveis devero ser definidas no workspace do Matlab e permitem definir iguais parmetros para todos os controladores do diagrama. Gravar agora o modelo com o nome pid00.mdl. Este modelo no deve ser gravado no directrio onde est a biblioteca pid_lib. Escolha outro directrio, p. ex STR_aula3. Neste directrio vai-se tambm criar um script que permita lanar o modelo e definir os parmetros do controlador. Este ficheiro vai chamar-se pid_step.m:
uf = 1 Kc = 0.5 Ti = 2 Td = 1 Ts = 0.25 pid00 %Amplitude do degrau %define os parmetros do controlador PID
%Abre modelo
Proporcional a Td
y = Ti e
Fig. 3-5: Resposta ao degrau unitrio do PID analgico e do discreto Como se pode observar a resposta das implementaes analgica e digital de posio so muito semelhantes. Se se pretender que a resposta do controlador digital seja mais rectilnea deve-se reduzir o intervalo de amostragem. Experimentar alterar Ts = 0.1 e executar outra vez a simulao.
3-6
Pid digital A implementao analgica que acompanha a distribuio do simulink uma rampa com menor declive, pois o declive da rampa neste caso dado por y = Ti e , e no por y =
Kc e. Ti
Repare-se que o pico inicial na resposta proporcional ao termo derivativo, e por isso cresce com Td, de modo que alterando Td para 0 e executando a simulao o pico no existe. Assim o termo derivativo pode ser sintonizado para compensar uma resposta inicial do sistema demasiado amortecida, no entanto um valor demasiado grande pode provocar ligeiras oscilaes na resposta do sistema, impedindo-o mesmo de estabilizar. J a resposta do PID_velocidade no uma rampa, mas sim uma recta paralela ao degrau de entrada, pois constitu um incremento na posio do actuador e no a posio absoluta. Para ensaiar o PID_velocidade vai-se simular um actuador. Este ser implementado no formato de uma s-function, actuador.m, onde os parmetros sero o intervalo de amostragem (ts), os valores de posio inicial (pini), mnimo (pmin) e mximo (pmax) do actuador:
Function [sys, x0, str, ts]=actuador (t, x, u, flag, ts, pmin, pmax, pini) persistent act %valor corrente do actuador [pmin, pmax].
%Garante valores de posio mximo mnimo e inicial coerentes if pmin>pmax error ('Erro: Valor pmin tem de ser <= pmax!'); elseif pini>pmax act = pmax; elseif pini<pmin act = pmin; else act=pini; %inicializa posioo do actuador end elseif flag == 4 ns = t / ts; sys = (1 + floor(ns + 1e-13*(1+ns)))*ts; elseif flag == 3 act=act+u(1); if act>pmax act = pmax; elseif act<pmin act = pmin; end sys = act; else sys = [ ]; end %actualiza posio do actuador %garantido que no ultrapassa %os limites fisicos pmin e pmax
3-7
Para j definir no actuador o valor inicial como 0, o mnimo como -20 e o mximo como 20 e o intervalo de amostragem a varivel Ts.
Nota: Ateno que nos actuadores pode ser considerado um valor mnimo negativo e
simtrico do mximo sendo a posio central 0, ou ento um valor mnimo nulo e igual ao inicial. Arrastar o bloco actuador para a biblioteca. No esquecer que a s-function actuador.m tem de estar guardada no directrio da biblioteca pid_lib.
3-8
Pid digital Alternativamente o actuador poderia ser desenvolvido como uma montagem de blocos simulink e mascarando o sub-sistema tal como acima:
Colocar o actuador no modelo pid00.mdl na posio indicada na Fig. 3-4. Executar outra vez a simulao. Agora a resposta do PID_velocidade igual ao PID_posio. Se se pretender simular que os limites fsicos do actuador foram ultrapassados, alterar o valor mximo do actuador para 5 e voltar a executar a simulao. Agora a resposta do PID_velocidade no ultrapassa esse valor:
3-9
Pid digital
Fig. 3-9: Plant com atraso de 0.6 segundos e entrada de degrau com amplitude 2
y() gain = K =
t TT = L + Tp
Fig. 3-10: Curva de reaco do processo
Pid digital
y()
O valor de L pode ser obtido fazendo com que os dados do scope sejam escritos para o workspace do Matlab, e verificando em que instante de tempo que a resposta deixa de ser nula. J o tempo em que a recta com declive R intersecta a resposta final pode ser lido atravs da figura com o comando ginput, e resolvendo:
(3-9) Tp = Tt - L = 3.3353 - 0.6001 = 2.7351 Assim pode-se obter o declive da recta, isto R: (3-10) R =
E o ganho: (3-11) k =
H 4 = =2 2
3-11
Obviamente que neste caso a funo de transferncia correcta conhecida: (3-13) G(s) = k e -L s 2 e -0.6 s = Tp s + 1 2.5 s + 1
Assim vai-se comparar a sintonia do PID para a funo de transferncia estimada (3-12) e para a correcta, dada pela equao (3-14). Agora a sintonia do PID pela regras de Ziegler-Nichols dada por: 1.2 k c = R L (3-15) Ti = 2 L T = 0.5 L d e de acordo com Goff: (3-16) Ts = 0.3 L
usando a transformao para parmetros digitais (3-4), Takahashi props a seguinte regra:
1.2 k p = R (L + Ts ) 0.6 Ts (3-17) k i = 2 R (L + Ts / 2 ) 0.6 0.5 RT k d RT s s
3-12
Pid digital Para a funo estimada com Ts = 0.3 * 0.6001 = 0.18003, tm-se ento:
1.2 k p = 1.4624 * (0.6 + 0.18003) = 1.0520 0.6 * 0.18003 (3-18) k i = = 0.1551 2 1.4624 * (0.6 + 0.18003 / 2 ) 0.6 0.5 kd 1.8991 k d 2.279 (mdia 2.089) 1.4624 * 0.18003 1.4624 * 0.18003 e para a correcta, com Ts = 0.3 * 0.6 = 0.18: 1.2 k p = 1.6 * (0.6 + 0.18) = 0.9615 0.6 * 0.18 (3-19) k i = = 0.1418 2 1.6 * (0.6 + 0.18 / 2 ) 0.6 0.5 kd 1.7361 k d 2.0833 1.6 * 0.18 1.6 * 0.18
(mdia 1.9097)
Para aplicar estes parmetros nos controladores PID j desenvolvidos as s-function devem ser alteradas para receberem os parmetros Kp, Ki e Kd e no os converter a partir de Kc, Ti e Td. Por isso antes de adicionar o controlador na malha como mostra a figura abaixo, podem ser criados 2 novos blocos para o algoritmo de posio e velocidade.
Fig. 3-12: Exemplo de Plant controlada por PID Estes parmetros tambm podem ser estimados analiticamente atravs da resposta em malha aberta, de acordo com:
(3-20)
TT = Tp + L =
[y() y( )]d
0
y( )
3-13
Pid digital
Isto a rea superior entre curva de resposta em malha aberta e a resposta final y() dividida pela resposta final d-nos o Tempo total (Tt). O atraso (L) pode ser medido verificando quando a resposta deixa de ser nula e assim pode-se calcular a constante de tempo Tp. Se se tiver um vector com resposta em malha fechada (y) e outro com vectores com os tempos correspondentes (t) o seguinte script, id1.m, identifica (numericamente) a funo de transferncia de 1 ordem na resposta ao degrau de amplitude A:
function [K, Tp, L, R] = id1(y, t, A) % Atraso I=find(y>0) L=t(I(1)-1) % Constante de tempo Tp de acordo com (3-20) yf = y(length(y)); tfi = t(length(t)); Tt = ((yf*tfi)-trapz(t,y))/yf; Tp = Tt - L; % Declive R = yf / Tp;
Os vectores podem ser retirados a partir do Scope, fazendo com que este grave as curvas numa varivel do workspace: Scope Parameters -> Data history. Se se pretender visualizar a resposta ao degrau da funo de transferncia estimada pode-se adicionar funo acima:
%Mostra resposta a FT estimada [y,t]=step(tf(A*K, [T 1])); y=[0; y]; t=[0; t+L]; plot(t,y) hold on grid ylabel('Amplitude') xlabel('time (s)') title ('Estimated TF step response') plot([L Tt], [0 yf], 'r') hold off
Algoritmo 3-5: Mostra curva de resposta estimada Para este caso os valores obtidos so: Guias prticos STR 3-14
Pid digital
K = 1.9991
T = 2.4928
L = 0.6000
(R = 1.6039)
Que muito prximo da FT real. Pode-se tambm de acordo com (3-16) e (3-17) desenvolver um script que calcule os parmetros para a verso discreta do PID: Kp, Ki, Kd e Ts:
function [Kp, Ki, Kd, Ts] = pid_id_d(y, t, A) [K,T,L,R]=id1(y,t,A); Ts = 0.3 * L; Kp = 1.2 / (R * (L +Ts)); Ki = (0.6 * Ts) / (R * (L + Ts/2)^2); Kd = (0.5/(R * Ts) + 0.6/(R * Ts))/2;
%Ponto medio de Kd
Tambm seria vlido calcular os parmetros para o PID analgico: Kc, Ti e Td, de acordo com (3-15) e convert-los para os parmetros do modelo discreto:
function [Kp, Ki, Kd, Ts] = pid_id_ad(y, t, A) [K,T,L,R]=id1(y,t,2); Kc=1.2/(R*L); Ti=2*L; Td=0.5*L; Ts Kp Ki Kd = = = = 0.3 * L; Kc; Kc*Ts/Ti; Kc*Td/Ts;
Algoritmo 3-7: Clculo dos parmetros para PID Analgico e converso para discreto
Na figura abaixo tem-se a comparao da resposta controlada por PID de posio para a funo de transferncia estimada (a vermelho) e a para a correcta (a azul), sintonizado de acordo com (3-18) e (3-19):
3-15
Pid digital
4
sinal de controlo m (k) resposta em m alha aberta
3.5
2.5
1.5
referncia
0.5
0 0 5 10 15
Fig. 3-13: Controlo com PID de posio sintonizado de acordo com (3-18) e (3-19) Na figura seguinte tem-se a comparao da resposta controlada por PID de velocidade para a funo de transferncia estimada (a vermelho) e a para a correcta (a azul), sintonizado tambm de acordo com (3-18) e (3-19). Repare-se que o overshoot menor.
Fig. 3-14: Controlo com PID de velocidade sintonizado de acordo com (3-18) e (3-19) Guias prticos STR 3-16
Pid digital Por outro lado se a funo de transferncia fr de 2 ou 3 ordem pode ser usada uma variante do mtodo de Ziegler-Nichols em malha fechada:
1: Fazer montagem em malha fechada com realimentao unitria positiva de um controlador P puro (isto um ganho) em srie com o processo. (Ou Desligar D e I no controlador PID) 2: Selecionar como referncia um degrau 3: Aumentar o ganho P at que as oscilaes tenham uma amplitude constante. Este ganho chamado ganho critico e designado por Ku. 4: Identificar o Perodo das oscilaes Pu.
Kc
PI PID
I
Pu / 1.2 Pu / 2
D
Pu / 8
0.45 Ku
Ku / 1.7 ou 0.6 Ku
Alternativamente pode ser usada a Tyreus-Luyben Tuning Chart, tambm conhecida por TLC, que tem como objectivo reduzir efeitos oscilatrios e aumentar a robustez:
Kc
PI PID
I
2.2 Pu 2.2 Pu
D
Pu/6.3
Ku/3.2 Ku/2.2
G(s) =
k e -L s e -0.5 s = T1 s 2 + T2 s + x 2 s 2 + s + x
3-17
Pid digital
Fig. 3-15: Controlo com PID de processo de 2 ordem Com x = 0, a resposta do processo G(s) em malha aberta a um degrau com amplitude 0.5 instvel, como mostra a figura abaixo, pois tem um polo duplo na origem:
Fechando o interruptor na malha de realimentao e aumentando o ganho proporcional em srie com o processo at P = 2.07 atinge-se o ganho critico Ku = P = 2.07. Pode-se agora medir o perodo de oscilao nessas condies Pu=7.05.
Fig. 3-17: Resposta em condies de ganho critico com Ku=2.07 e Pu = 7.05 Guias prticos STR 3-18
Pid digital Pode-se tambm escrever um script que faa esta anlise a partir da sada acima e de Ku, retornando os parmetros do controlador PID analgico. Posteriormente se necessrio estes tero de ser convertidos para os parmetros digitais:
function [Kc, Ti, Td, Pu] = pid_id_cl(y, t, Ku, TLC) %Se TLC <> 0 usa Tyreus-Luyben chart para sintonia %Procura 1 maximo max=0; for x=1:length(t) if y(x) < max break; end; max=y(x); x=x+1; end %Procura prximo mnimo min=max; for x=x:length(t) if y(x) > min break; end; min=y(x); x=x+1; end Pu=t(x); if TLC == 0 %Ziegler Nichols Kc=Ku/1.7; % ou Ku*0.6; Ti=Pu/2; Td=Pu/8; else %Tyreus-Luyben Kc=Ku/2.2; Ti=Pu*2.2; Td=Pu/6.3; end
Algoritmo 3-8: Clculo dos parmetros para PID Analgico em malha fechada
Para este caso os parmetros estimados so: Kc = 1.2176 Ti = 3.5250 Td = 0.8812 Pu = 7.0500
O intervalo de amostragem foi seleccionado para 0.01 segundos. A resposta apresenta-se a seguir:
3-19
Pid digital
Fig. 3-18: Controlo com PID de posio sintonizado de acordo com Algoritmo 3-1
Modificando agora o processo, fazendo x=1, a resposta em malha aberta no instvel e no apresenta erro em regime estacionrio:
Para o ganho critico Ku=2.12 em malha fechada obtm-se Pu = 5.84, e os parmetros estimados so: Kc = 1.2471 Ti = 2.9200 Td = 0.7300
3-20
Pid digital
0.8 0.7 posio 0.6 0.5 0.4 0.3 velocidade 0.2 velocidade com Td+1.2 0.1 0 malha aberta
10
15
20
25
30
Fig. 3-20: Controlo com PID de posio sintonizado de acordo com Algoritmo 3-1 Como se pode observar a sintonia para o algoritmo de velocidade precisa ainda de alguma afinao. Somando 1.2 ao valor de Td encontra-se uma melhor afinao.
Fig. 3-21: Simulao de controlo manual Onde a inteno corresponde ao sinal de referncia ou setpoint desejado, o olho a uma leitura da sada do processo e a mo ao sinal de controlo a aplicar ao processo. O ganho pode ser variado de modo amplificar a referncia reduzindo o erro em regime estacionrio. Para este caso considere-se G = 1.5. Guias prticos STR 3-21
Pid digital Neste caso a inteno ou a referncia, multiplicada por um factor de 1.5 de modo a eliminar o erro em estado estacionrio sem afectar a estabilidade.
No instante de tempo t = 15, efectuada a transio do modo manual para automtico. As alteraes ao algoritmo PID de posio para o mtodo 1: function [sys, x0, str, ts] = pid_bump_01 (t, x, u, flag, ts, kp, ki, kd, tt, MV) persistent s ek_1 (...) if flag == 3
if t > tt-1 s = 0; end %tt o instante de transio manual -> automtico %Simula ligao do controlador PID neste instante ek_1 = u(1);
Algoritmo 3-9: PID bumpless mtodo 1 (alteraes ao Algoritmo 3-1 PID de posio )
A figura seguinte mostra a resposta do algoritmo PID de posio na transferncia do modo de controlo manual para automtico (que diferente do mtodo 1 com MV=0):
Fig. 3-23: Resposta sem bumpless transfer (t = 15 segundos) Na figura seguinte encontra-se a resposta com o algoritmo modificado para possibilitar a transferncia sem saltos pelo mtodo 1. O valor de MV = 1 o ponto de operao do controlador mk, ou a posio do actuador, quando da transio e pode ser obtido atravs de ensaios. A sintonia PID efectuada de acordo com o j determinado em (3-19): kp=0.9615 ki=0.1418 kd=(1.7361+2.0833)/2 ts=0.18
3-23
Fig. 3-24: Resposta bumpless transfer (mtodo 1) em t = 15 segundos (MV = 1) Se se variar MV a transio apresentar um salto. A seguir vai ser ensaiado o algoritmo de velocidade.
Repare-se que neste caso o controlo manual ter de ser alterado de modo que o actuador seja incrementado ou decrementado, isto pretende-se a variao no sinal de controlo de acordo com (3-5). Ento o controlo manual ter de ser redesenhado de acordo com a figura anterior. Deve ser fornecido tambm o intervalo de amostragem ao actuador de modo que o sinal mk seja atrasado um instante de amostragem. Abaixo tem-se as alteraes no modelo para utilizar o algoritmo PID de velocidade: Guias prticos STR 3-24
Pid digital
Fig. 3-26: Simulao de bumpless transfer para mtodo 3 (algoritmo de velocidade) A figura abaixo apresenta a resposta:
Fig. 3-27: Resposta bumpless transfer (mtodo 3 algoritmo de velocidade) em t = 15 seg. Assim consegue-se um transferncia sem salto, sem ter de se ensaiar ou monitorizar constantes tais como MV.
3-25