\( \DeclareMathOperator{\abs}{abs} \newcommand{\ensuremath}[1]{\mbox{$#1$}} \)
(%i2) kill(all)$load(coma)$ratprint:false$
\[\mbox{}\\coma\,v.1.73,\,(Wilhelm\,Haager,\,2015-01-09)\]

Agradece-se a aluno que fez uma pergunta, o que levou a fazer este estudo.

1 Desenho de Controladores (Relações de afinação)
   
Ziegler-Nichols, tentativa e erro e ganho óptimo do Maxima-COMA.

Estes métodos podem aplicar-se a qualquer sistema desde que se possa fazer uma experiência para determinar
o ganho último,

Neste caso, o sistema escolhido foi um de 2ª ordem (criticamente amortecido, ξ=1) com um atraso de 1 unidade de tempo (τ=2 e θ=1).
O Maxima não tem tratamento exacto do atraso, por isso aplicamos uma aproximação de Padé.

(%i3) Gp:1/(4*s^2+4*s+1)*(1-0.5*s)/(1+0.5*s)$    /* <=> Gp:1/(4*s^2+4*s+1)*time_delay(1,2)$*/;

 1.1 Determinação do ganho e periodo últimos (kU e pU)

(%i5) sysF:create_list(closed_loop(Gp*Kc),Kc,[4.9,5,5.1])$
step_response(sysF,xrange=[29,109])$
 (Graphics)

Estes parâmetros dependem da aproximação utilizada para o atraso.
Por exemplo se for de 5ª ordem (time_delay(1,5)) kU=4,7 e pU=5,5

 1.1.1 Vê-se que kU=5 e tira-se que pU= (110-30)/13 = 6,67

(%i7) kU:5$pU:6.67$

 1.2 Ziegler Nichols Proporcional - Gc = 0,5.kU
(tentativa e erro dá o mesmo resultado)

Resposta a perturbação em degrau na carga e no set-point de um controlador Ziegler-Nichols

(%i10) Gc:0.5*kU$
GpP:Gp/(1+Gp*Gc)$
step_response([closed_loop(Gp*Gc),GpP],xrange=[0,50])$
 (Graphics)

 1.3 Comparação de Controladores PI
obtidos por Ziegler-Nickols, Tentativa e Erro e de ganho óptimo do "COMA"

 1.3.1 Tentativa e Erro (T&E)

(%i12) ti_te:2.245$
step_response(closed_loop(Gp*kU/2*(1+1/(ti_te*s))),xrange=[0,100]);
 (Graphics)

 1.3.2 PI -> Z-N kc=0.45kU ; τi=pU/1.2
                  T-E kc=0.5kU ; τi=3*ti_te

A uma perturbação em degrau unitário à carga e ao set-point

(%i30) kill(k,τd,τi)$
GcZN:kU*0.45*(1+1.2/pU/s)$
cfPZN:Gp/(1+Gp*GcZN)$
GcTE:kU*0.5*(1+1/ti_te/s/3)$
cfPTE:Gp/(1+Gp*GcTE)$
[k,τi]:gain_optimum(Gp,k*(1+1/(τi*s)))$ /* Controlador óptimo do COMA */
GGO:rhs(k)*(1+1/(rhs(τi)*s))$
cfGGO:Gp/(1+Gp*GGO)$
step_response([closed_loop(Gp*GcZN),closed_loop(Gp*GcTE),closed_loop(Gp*GGO),cfPZN,cfPTE,cfGGO],
   xrange=[0,50],key=["ZN","T_E","Op","ZN","T_E","Op"])$
 (Graphics)

 1.4 Comparação de Controladores PID
obtidos por Ziegler-Nickols, T&E e de ganho óptimo do "COMA"

 1.4.1 T&E

(%i33) ti_te:2.245*3$
td_te:4.43$
step_response(closed_loop(Gp*kU/2*(1+1/(ti_te*s)+td_te*s)),xrange=[0,100]);
 (Graphics)

 1.4.2 PID -> Z-N kc=0.6kU ; τi=pU/2 ; τd=pU/8
                      T-E kc=0.5kU; τi=τiU*3; τd=τdU/3

A uma perturbação em degrau unitário à carga e ao set-point

(%i73) kill(k,τi,τd)$
GcZN:kU*0.6*(1+1/(pU/2)/s+pU/8*s)$
cfPZN:Gp/(1+Gp*GcZN)$
GcTE:kU*0.5*(1+1/(ti_te*s)+td_te/3*s)$
cfPTE:Gp/(1+Gp*GcTE)$
[k,τd,τi]:gain_optimum(Gp,k*(1+1/(τi*s)+τd*s))$
GGO:rhs(k)*(1+1/(rhs(τi)*s)+rhs(τd)*s)$
cfGGO:Gp/(1+Gp*GGO)$
step_response([closed_loop(Gp*GcZN),closed_loop(Gp*GcTE),closed_loop(Gp*GGO),
cfPZN,cfPTE,cfGGO],
   xrange=[0,30],key=["ZN","T_E","Op","ZN","T_E","Op"])$
 (Graphics)

 1.5 Bibliografia

Process Dynamics and Control 2e
Dale E. Seborg, Duncan A. Mellichamp, Thomas F. Edgar, Francis J. Doyle III

COMA - Control Engineering with Maxima
Wilhemlm Haagern @ HTL St. Polten (2011)


Pergunta de aluno no fim de uma aula que Prof. não soube responder mas trouxe para casa.
Conclusão: A tentativa e erro não se faz na prática mas dá um (neste caso e PID) controlador mais slugish do que o ZN.


Created with wxMaxima.