| (%i2) | kill(all)$load(coma)$ratprint:false$ |
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])$ |

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])$ |

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]); |

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"])$ |

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]); |

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"])$ |

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.