Thursday, May 3, 2012

Desain Kontrol dengan Observer

Tutorial sebelumnya kita sudah mengetahui bagaimana mendesain kontrol dengan "pole - placement" dimana semua state variabelnya dapat terukur; terukur langsung melalui pembacaan sensor atau lainnya. Sekarang bagaimana jika state tersebut tidak bisa terukur secara langsung, maka kita membutuhkan "observer" untuk melakukan estimasi state tersebut. Seperti biasa kita akan menggunakan MATLAB untuk membantu kita mempermudah dalam desainnya. Berikut adalah blok diagram dari observer yang akan kita buat. Tutorial ini berkaitan dengan tutorial sebelumnya "Desain Kontrol dengan Pole Placement (Part I)".


Secara dasar observer yang akan kita buat mempunyai model persamaan mirip dengan persamaan plant model hanya saja observer juga akan membandingkan actual output y dengan estimasi output ybar. Persyaratan yang harus dipenuhi adalah plant sistem haruslah mempunyai "Controllability" dan "Observability". Tutorial yang lalu (Desain Kontrol dengan Pole Placement (Part I)) anda sudah bisa melakukan check apakah sistem ini mempunyai "Controllabilty" ataukah tidak, sekarang saya hanya akan membahas bagaimana melakukan check apakah sistem tersebut mempunyai "Observability".

"Observability" mempunyai maksud seluruh state variable yang kita definikan haruslah mempunyai efek ke output. Misal pada DC motor model kita telah mendefinikan state variabel yaitu w (omega) dan i (arus). Kedua state ini harus memberikan efek atau kontribusi ke output (w), jika salah satu state tidak mempunyai kontribusi terhadap output maka sistem ini dikatakan "unobservable".

Untuk plant model kita akan mengulangi DC motor model seperti pada "Desain Kontrol dengan Pole Placement (Part I)" yaitu sebagai berikut




Dan perintah MATLAB sebagai berikut.

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

Check "controllability" sbb,

>> P = crtb(A,B)
>> rank(P)

Dan check "observability" sbb,

>> P=crtb(A',C')
>> rank(P)

Dan hasil yang diperoleh adalah 2 dan hasil ini sama dengan order dari plant DC motor model, maka sistem diatas mempunyai "observability".

Kita akan menghitung gain K seperti pada tutorial sebelumnya yaitu,

>> p = [-280 -300];
>> K=place(ssplant.a, ssplant.b, p)

Sekarang kita akan menghitung observer gain L pada diagram diatas, tapi sebelum itu kita harus menentukan pole pada observer yang akan kita gunakan. Biasanya real pole yang akan kita pilih adalah tiga sampai lima kali lebih besar dari dominant pole. Misal pada tutorial sebelumnya kita memilih pole yaitu s=-280 dan s=-300 maka pole pada observer haruslah lebih besar dari ini misal kita pilih tiga kali lebih besar yaitu s=-840 dan s=-900. Nilai yang terlalu kecil (kurang dari dominant pole) akan menyebabkan observer bergerak lambat untuk meminimalkan error ketika melakukan proses filetring dari sensor.

>> p = [-280 -300];
>> q = 3 * p %observer pole location
>> L = place(ssplant.a', ssplant.c', q)'

Note: Perhatikan tanda ' yang berarti transpose matrik.

Perintah diatas akan menghasilkan observer gain L yaitu [1.3223e-3; 0.0121e-3]

Untuk melihat output dari kontroler ini kita harus menggabungkan persamaan model plant dengan observer. Pada blok diagram diatas, xbar adalah state estimasi, u adalah input ke sistem dengan u=-K.xbar, dan error e = x - xbar. Sehingga kita akan menggabungkan state x dengan state e, akan didapat sbb (untuk lebih jelaskan tentang penurunan persamaan ini lihat buku dari Ogata),

At = [A-B*K              B*K
         zeros(size(A))     A-L*C];
Bt = [B*Nbar
         zeros(size(B))];
Ct = [C                        zeros(size(C))];

Pada MATLAB,

>> At = [A-B*K B*K; zeros(size(A)) A-L*C];
>> Bt = [B*Nbar; zeros(size(B))];
>> Ct = [C zeros(size(C))];

Nbar sudah kita ketahui pada tutorial sebelumnya dengan menggunakan 'rscale'.

Kemudian untuk melihat initial respon yaitu ketika initial arus (i) = 1A tanpa referensi input, maka

>> x0 = [0 1]
>> t = 0:0.001:1;
>> lsim(At, Bt, Ct, 0, zeros(size(t)), t, [x0 x0])

Anda akan melihat inital respon tanpa referensi input seperti grafik berikut,


Sekian untuk tutorial ini, semoga bermanfaat. salam

2 comments:

  1. ampun dj, ora mudeng jeh....tp sukses slalu buat kohar....


    by JendralTongi

    ReplyDelete
  2. Sing bagian ngendi ga mudeng Ngot? padahal iki wis ta coba buat semudah mungkin, ga banyak persamaan mathematics, langsung praktik.. :)

    Brarti kurang tutorial ini kurang bisa dipahami.. :)

    ReplyDelete