Tuesday, May 1, 2012

Desain Kontrol dengan Pole Placement (Part I)

Pada tutorial ini penulis akan menunjukkan bagaimana membuat kontrol sistem dengan menggunakan “pole – placement”. Dengan “pole – placement” kita akan dapat menempatkan pole – pole secara sembarang sesuai dengan karakteristik yang kita inginkan. Namun tentu saja masih ada kriteria yang harus kita penuhi sebelum memulai menggunakan “pole - placement”. kriteria pertama adalah semua state variable yang kita definikan haruslah terukur (diketahui nilainya), jika salah satu state variable tidak diketahui maka akan digunakan perkiraan atau estimasi dengan menggunakan "observer". Namun pada tutorial ini penulis hanya akan membahas jika semua state dapat diketahui. Berikut diagram “pole - placement” yang akan kita buat.


Dan sistem yang kita design haruslah dapat dikontrol atau dengan istilah “Controllability”. “Controllability”   mempunyai maksud bahwa semua state yang kita definikan harus dapat dikontrol melalui input. Penulis akan menunjukkan bagaimana melakukan test dengan MATLAB untuk check apakah sistem ini mempunyai “controllability” atau tidak.

Model yang kita gunakan pada tutorial ini adalah DC motor. Secara umum persamaan DC motor adalah sebagai berikut. Lihat penjelasan pada "State - Space dan Linearization" untuk lebih detail mengenai state - space.



misal:
R (Resistansi)= 21.2 ohm
bm (Damping / Viscous Coefficient) = 1e-4kg-m.s/rad
L (Inductansi) = 0.052 H
Kt (Motor Torque Constant) = 0.1433 kg-m/A
J (Momen Inertia) = 1e-5 kg-m.s^2/rad
Kb (back emf constant) = 0.1433 V.s/rad

Berikut adalah state space dari persamaan diatas



State variable yang dipilih adalah w dan i, sedangkan output adalah w, dan input adalah tegangan V. Masukkan nilai masing - masing parameter.




K1 pada blok diagram diatas adalah gain untuk konversi dari kecepatan putar ke tegangan. Pada contoh berikut misal K1 = 1. Nilai K1 akan dikalikan dengan input V; pada matrik diatas yaitu dikalikan dengan matrik [0; 19.2308].

Sekarang untuk check apakah sistem diatas mempunyai "Controllability" ataukah tidak lakukan perintah MATLAB berikut.

>> A = [-10 14330; -2.7558 -407.6923]
>> B = [0; 19.2308]
>> P = crtb(A,B)
>> rank(P)

Jika hasilnya adalah sama dengan order dari sistem diatas maka sistem ini "Controllability". Dimensi A sistem diatas adalah 2x2 matrik sehingga mempunyai order 2 dan rank P dari MATLAB kode diatas menghasilkan 2 maka sistem ini mempunyai "Controllability".

Kemudian buat state - space kode seperti berikut.

>> A = [-10 14330; -2.7558 -407.6923]
>> B = [0; 19.2308]
>> C = [1 0]
>> D = 0
>> ssplant = ss(A,B,C,D)

Untuk check apakah open loop sistem diatas stabil ataukah tidak dengan perintah

>> eig(A)

akan menghasilkan dua pole yaitu s = -202 dan s = -216. Karena kedua pole tersebut berada disebelah kiri dari sumbu vertikal (mempunyai nilai real negatif) maka open sistem diatas adalah stabil.

Sekarang kita harus menentukan pole yang akan kita tempatkan, sebelum itu kita harus menentukan settling time dan damping ratio. Misal settling time kita pilih 50ms dan biasanya damping ration kita pilih 0.7. Maka kita pilih pole lebih kekiri dari pole open loop sistem, kita pilih s = -280 dan s = -300. Ketik perintah pada MATLAB seperti berikut.

>> p = [-280 -300];

Dan untuk menemukan gain kontroller "pole-placement" gunakan perintah place() seperti berikut

>> K=place(ssplant.a, ssplant.b, p)

Kemudian kita akan test apakah grafik ketika diberi initial kondisi sudah memenuhi settling time = 50ms. Misal kita akan beri initial kondisi yaitu arus = 1A

>> t = 0:0.001:1; %time from 0 to 1 second
>> u = 0*t;
>> x0 = [0 1]; %give current initial = 1A
>> lsim(A-B*K,B,C,D,u,t,x0)

Ingat (A-B*K) adalah closed-loop state - space sistem; yaitu ketika blok diagram dari keseluruhan sistem dihitung akan menghasilkan state - space dengan Acl = A-B*K, Bcl = B, Ccl = C, dan Dcl = D. (cl adalah closed-loop)

Perintah MATLAB diatas akan menghasilkan grafik seperti berikut.


pada grafik diatas kontroler sudah memenuhi apa yang kita harapkan; settling time < 50ms. Jika kontroler anda kurang memuaskan anda bisa menggeser kekiri pole pada p = [-280 -300] misal anda ubah ke p = [-300 -400] dan ulangi langkah seperti diatas untuk melihat responnya sampai anda rasa memuaskan. Tapi ingat pole yang bergeser terlalu kekiri hanya akan menambah kesulitan pada implementasi program pada hardware; misal karena hardware harus menghitung digit ribuan, ratusan ribu, atau bahkan jutaan.

Sekian dari tutorial ini, nantikan part selanjutnya, semoga bermanfaat. ^^

No comments:

Post a Comment