Thursday, September 8, 2022

Tuning kontroler PID dengan MATLAB script

Saya ingin coba membuat kontroler PI untuk sistem kontinu berikut dengan script MATLAB.

Sys = 1/(s+1)3

Pertama, saya buat representasi sistem Sys di atas dengan fungsi zpk

>> sys = zpk([],[-1 -1 -1],1);

Selanjutnya mencari parameter kontroler PI, yaitu Kp dan Ki, dengan fungsi pidtune

>> [C_pi,info] = pidtune(sys,'PI')

sehingga didapatkan nilai Kp = 1.14 dan Ki = 0.454 dengan frekuensi crossover 0.52 rad/s dan phase margin 60 deg.

Untuk menguji performa kontroler, perlu diketahui fungsi transfer loop tertutup (closed loop transfer function) dari kontroler dan sistem Sys dengan fungsi feedback

>> T_pi = feedback(C_pi*sys, 1);

Selanjutnya, uji dengan sinyal step

>> step(T_pi)

Grafik di atas menunjukkan performa kontroler PI hasil tuning otomatis dengan setting default.

Untuk mepercepat waktu respons, setel frekuensi crossover yang lebih tinggi daripada yang dipilih pidtune secara otomatis, 0,52 rad/s. Misalnya, ubah frekuensi crossover menjadi 1,0.

>> [C_pi_fast,info] = pidtune(sys,'PI',1.0)

didapatkan nilai Kp = 2.83 dan Ki = 0.0495 dengan frekuensi crossover 1 dan phase margin 44 deg.

Parameter kontroler PI yang baru ini menghasilkan frekuensi crossover yang lebih tinggi namun berdampak mengurangi phase margin.

Mari kita bandingkan performa kedua kontroler dengan melihat respon loop tertutup terhadap sinyal uji step.

>> T_pi_fast = feedback(C_pi_fast*sys,1);

>> step(T_pi,T_pi_fast)

>> axis([0 30 0 1.4])

>> legend('PI','PI,fast')

Dari grafik perbandingan di atas, terlihat bahwa performa kontroler PI ke-2 lebih jelek. Sebabnya, dengan frekuensi crossover 1 rad/s, kontroler ke-2 tidak punya derajat kebebasan yang cukup untuk menghasilkan phase margin yang pas.

Untuk perbaikan respon, tambahkan kontroler derivatif. Gunakan pidtune untuk mentuning kontroler PID dengan frekuensi crossover 1 rad/s.

>> [C_pidf_fast,info] = pidtune(sys,'PIDF',1.0)

didapatkan parameter kontroler Kp = 2.72, Ki = 0.985, Kd = 1.72, dan Tf = 0.00875 dengan phase margin 60 deg.

Artinya, kehadiran kontroler derivatif memungkinkan algoritma tuning untuk merancang kontroler yang cepat dan memenuhi target frekuensi crossover dengan phase margin yang pas.

Mari kita bandingkan kontroler PID dengan kontroler PI ke-2.

>> T_pidf_fast =  feedback(C_pidf_fast*sys,1);

>> step(T_pi_fast, T_pidf_fast);

>> axis([0 30 0 1.4]);

>> legend('PI,fast','PIDF,fast');


Kita sudah mencoba melakukan tuning kontroler PI dan PID. Terlihat bahwa dengan menambahkan kontroler derivatif, algoritma tuning bisa menghasilkan kontroler yang cepat dan eror steady state nol.

PID Controller Design at the Command Line - MATLAB & Simulink (mathworks.com)

No comments:

Post a Comment