Anda di halaman 1dari 6

Inverted Pendulum: Root Locus Controller Design Key Perintah MATLAB yang digunakan dalam

tutorial ini adalah: tfr locus, pole, zero, zpk, feedback, impuls

Pada halaman ini kita akan merancang sebuah alat kontrol untuk sistem pendulum terbalik
menggunakan metode perancangan akar lokus. Dalam proses perancangan, kita akan
mengasumsikan sebuah pabrik single-input, single-output seperti yang dijelaskan oleh fungsi transfer
berikut. Jika tidak, kami akan mencoba mengendalikan sudut pendulum tanpa memperhatikan posisi
gerobak.

Dimana

Lebih khusus lagi, pengontrol akan berusaha mempertahankan pendulum vertikal ke atas saat
gerobak terkena impuls 1-Nsec. Dengan kondisi ini, kriteria desainnya adalah:

Waktu penyelesaian kurang dari 5 detik


Pendulum tidak boleh bergerak lebih dari 0,05 radian dari vertikal
Untuk penyiapan masalah asli dan turunan dari fungsi transfer di atas, berkonsultasilah dengan
Inverted Pendulum: halaman System Modeling.

Struktur sistem

Struktur pengontrol untuk masalah ini sedikit berbeda dari masalah kontrol standar yang mungkin
Anda gunakan. Karena kita mencoba mengendalikan posisi pendulum, yang seharusnya kembali ke
vertikal setelah gangguan awal, sinyal referensi yang kita lacak harus nol. Situasi seperti ini sering
disebut sebagai masalah Regulator. Kekuatan eksternal yang diterapkan pada gerobak dapat
dianggap sebagai gangguan impulsif. Skema untuk masalah ini digambarkan di bawah ini.

Anda mungkin merasa lebih mudah untuk menganalisa dan merancang sistem ini jika kita pertama
kali mengatur skematiknya sebagai berikut.
Fungsi transfer yang dihasilkan $ T (s) $ untuk sistem loop tertutup dari masukan gaya $ F $ ke
output sudut pendulum $ \ phi $ kemudian ditentukan sebagai berikut.

Sebelum kita mulai merancang controller kita, pertama kita perlu mendefinisikan pabrik kita di dalam
MATLAB. Buat m-file baru dan ketik perintah berikut untuk membuat model tanaman (lihat masalah
utama untuk rincian mendapatkan perintah ini).

M = 0.5;

m = 0.2;

b = 0.1;

I = 0.006;

g = 9.8;

l = 0.3;

q = (M+m)*(I+m*l^2)-(m*l)^2;

s = tf('s');
P_pend = (m*l*s/q)/(s^3 + (b*(I + m*l^2))*s^2/q - ((M + m)*m*g*l)*s/q - b*m*g*l/q);

Desain lokus akar


Sekarang kita akan mulai merancang sebuah controller untuk sistem kita yang menggunakan metode
perancangan akar. Kita bisa menggunakan perintah MATLAB rlocus untuk menghasilkan plot root
locus. Menambahkan perintah berikut ke m-file Anda dan menjalankannya di jendela perintah
MATLAB akan membuat plot lokus akar yang ditunjukkan di bawah ini. Plot ini menampilkan semua
kemungkinan lokasi kutub lingkaran tertutup karena kontrol proporsional sederhana memperoleh $ K
$ bervariasi dari 0 hingga tak terhingga. Root locus sama, apakah keuntungan multiplikatif $ K $ ada
di jalur maju atau umpan balik dari sistem loop tertutup.

rlocus(P_pend)

title('Root Locus of Plant (under Proportional Control)')

Seperti yang bisa Anda lihat, salah satu cabang lokus akar seluruhnya ada di kanan-separuh bidang
s kompleks. Ini berarti tidak masalah pilihan keuntungan $ K $, akan selalu ada tiang lingkaran
tertutup di pesawat setengah kanan yang membuat respons impuls sistem tidak stabil.

Untuk mengatasi masalah ini, kita perlu menambahkan sebuah tiang pada titik asal (integrator)
melalui controller untuk membatalkan pabrik nol pada titik asal. Penambahan ini akan menghasilkan
dua kutub lingkaran tertutup di pesawat setengah kanan. Dalam desain selanjutnya, kita dapat
memodifikasi pengontrol kita untuk menggambar kutub ini ke bidang setengah kiri, sehingga
menstabilkan sistem loop tertutup. Memodifikasi m-file Anda dengan perintah berikut dan berjalan
kembali di jendela perintah MATLAB akan menghasilkan plot lokus akar yang ditunjukkan di bawah
ini.
C = 1/s;

rlocus(C*P_pend)

title('Root Locus with Integral Control')

Mari kita juga memeriksa lokasi kutub loop terbuka dan nol sistem sehingga kita mungkin mulai
berpikir tentang cara menggambar cabang lokus akar ke bidang setengah kiri. Memasukkan perintah
berikut ke dalam jendela perintah MATLAB akan menghasilkan output berikut.

zeros = zero(C*P_pend)

poles = pole(C*P_pend)

Seperti yang bisa Anda lihat, ada empat tiang dan hanya satu nol. Ini berarti bahwa lokus akar akan
memiliki tiga asimtot: satu di sepanjang sumbu sebenarnya ke arah negatif, dan dua lainnya pada
sudut 120 derajat ke yang satu ini.

Konfigurasi ini juga tidak memuaskan karena kita masih memiliki cabang lokus akar yang seluruhnya
berada di bidang kompleks setengah benar. Secara umum, kita bisa menarik cabang-cabang lokus
akar kita ke kiri di bidang kompleks dengan menambahkan angka nol ke sistem kita. Menambahkan
nol ke controller kita akan mengurangi jumlah asimtot dari tiga menjadi dua. Kedua asimtot ini sejajar
dengan sumbu imajiner dan akan memotong sumbu sebenarnya pada lokasi yang dihitung dari
ungkapan berikut.

Oleh karena itu, untuk sistem kita seperti yang telah dijelaskan sejauh ini, kita memiliki asumsi berikut
fase minimum nol (negatif).

Berdasarkan hal di atas, yang terjauh kita bisa menarik asimtot ke kiri di bidang kompleks kira-kira -
0,1 untuk nol yang kecil sekali. Ingat bahwa 2% waktu penyelesaian dapat diperkirakan dari
persamaan berikut.

Oleh karena itu, kutub loop tertutup dominan dengan bagian nyata yang mendekati -0,1 tidak akan
cukup untuk memenuhi waktu penyelesaian 5 detik yang kita butuhkan.

Kontrol PID
Dalam pembahasan di atas, kami menunjukkan bahwa menambahkan nol ke pengontrol integral kami
dapat menarik cabang akar lokus ke kiri di bidang kompleks, namun kami tidak dapat menarik cabang
dominan cukup jauh ke kiri. Solusi yang mungkin adalah menambahkan lagi nol. Jika kita
menempatkan kedua angka nol pada poros sumbu negatif di antara dua kutub tanaman, maka kedua
cabang di bidang setengah kanan akan ditarik ke bidang setengah kiri dan akan berakhir pada dua
angka nol ini. Mari kita secara khusus mengevaluasi lokus akar untuk pengendali dengan integrator
dan nol pada -3 dan -4. Perhatikan bahwa controller ini sebenarnya adalah pengendali PID. Kita bisa
membuat controller ini di dalam MATLAB dengan menggunakan perintah zpk yang menciptakan
sebuah model dengan menentukan angka nol, kutub, dan gain dari sistem. Memodifikasi m-file Anda
dengan perintah berikut dan menjalankan kembali akan menghasilkan plot lokus akar yang
ditunjukkan di bawah ini.

z = [-3 -4];

p = 0;

k = 1;

C = zpk(z,p,k);

rlocus(C*P_pend)

title('Root Locus with PID Controller')

Meneliti lokus akar di atas membantu kita untuk menentukan apakah persyaratan yang diberikan
dapat dipenuhi atau tidak. Secara khusus, karena diinginkan bahwa waktu penyelesaian sistem
kurang dari 5 detik, bagian sebenarnya dari tiang loop tertutup dominan kita harus kurang dari kira-
kira -4/5 = -0,8. Dengan kata lain, tiang loop tertutup dominatnt kita harus ditempatkan di bidang s-
kompleks di sebelah kiri garis vertikal pada s = -0,8. Pemeriksaan di atas menunjukkan bahwa ini
mungkin. Karena juga diinginkan agar pendulum tidak bergerak lebih dari 0,05 radian dari vertikal,
kami juga ingin memastikan bahwa sistem loop tertutup memiliki redaman yang cukup. Menempatkan
kutub loop tertutup yang dominan di dekat sumbu sebenarnya akan meningkatkan redaman sistem
(kecil $ \ beta $).

Untuk menemukan gain yang sesuai dengan titik tertentu pada root locus, kita bisa menggunakan
perintah rlocfind. Secara khusus, masukkan perintah [k, poles] = rlocfind (C * P_pend) di jendela
perintah MATLAB.

Lalu pergi ke plot dan pilih titik di lokus akar di sisi kiri loop, dekat dengan sumbu nyata seperti yang
ditunjukkan di bawah ini dengan tanda + kecil. Memilih kutub ini akan memastikan sistem mengendap
cukup cepat dan, mudah-mudahan, memiliki redaman yang cukup.

Setelah melakukan ini, Anda harus melihat output seperti berikut di jendela perintah MATLAB.

Perhatikan bahwa nilai yang dikembalikan di jendela perintah MATLAB Anda mungkin tidak sama
persis, namun setidaknya harus memiliki urutan besarnya yang sama.

Kemudian kita dapat memeriksa respons impuls dari sistem loop tertutup kami untuk melihat apakah
persyaratan kami benar-benar dipenuhi dengan keuntungan $ K $ sekitar 20. Tambahkan perintah
berikut ke m-file dan jalankan kembali untuk menghasilkan loop tertutup. respon impuls seperti yang
ditunjukkan di bawah ini.

K = 20;

T = feedback(P_pend,K*C);

impulse(T)

title('Impulse Disturbance Response of Pendulum Angle under PID Control');


Pemeriksaan di atas menunjukkan bahwa semua persyaratan yang diberikan terpenuhi.

Apa yang terjadi pada posisi gerobak?


Pada awal halaman ini, diagram blok untuk sistem pendulum terbalik diberikan. Diagramnya tidak
sepenuhnya lengkap. Blok yang mewakili respon dari posisi keranjang $ x $ tidak disertakan karena
variabel tersebut tidak dikendalikan. Menarik juga, untuk melihat apa yang terjadi pada posisi gerobak
saat kontroler untuk sudut pendulum ada di tempatnya. Untuk melihat ini, kita perlu
mempertimbangkan diagram blok sistem lengkap seperti yang ditunjukkan pada gambar berikut.

Menata ulang, kita mendapatkan diagram blok berikut.

Di atas, blok $ C (s) $ adalah pengendali yang dirancang untuk menjaga vertikal pendulum. Fungsi
transfer loop tertutup $ T_2 (s) $ dari sebuah gaya input yang dimasukkan ke keranjang ke keluaran
posisi keranjang, oleh karena itu, diberikan sebagai berikut.
Mengacu pada Inverted Pendulum: halaman System Modeling, fungsi transfer seharga $ P_ {cart} (s) $
didefinisikan sebagai berikut.

Dimana

Menambahkan perintah berikut ke m-file Anda (kira-kira $ P_ {pend} (s) $ dan $ C (s) $ masih
didefinisikan) akan menghasilkan respons dari posisi keranjang terhadap gangguan impulsif yang
sama seperti yang telah kita pertimbangkan.
P_cart = (((I+m*l^2)/q)*s^2 - (m*g*l/q))/(s^4 + (b*(I + m*l^2))*s^3/q - ((M +
m)*m*g*l)*s^2/q - b*m*g*l*s/q);

T2 = feedback(1,P_pend*C)*P_cart;

t = 0:0.01:8.5;

impulse(T2, t);

title('Impulse Disturbance Response of Cart Position under PID Control');

Seperti yang bisa Anda lihat, posisi gerobak tidak stabil untuk gangguan impuls ini. Oleh karena itu,
walaupun pengendali PID menstabilkan sudut pendulum, desain ini tidak layak diterapkan pada
sistem fisik yang sebenarnya.

Anda mungkin juga menyukai