Plant Ball N Beam
Plant Ball N Beam
bergulir dengan 1 derajat kebebasan di sepanjang balok. Lengan tuas melekat pada balok di
satu ujung dan gigi servo di ujung lainnya. Saat gigi servo berputar dengan sudut $ \ theta $,
tuas mengubah sudut balok sebesar $ \ alpha $. Ketika sudut diubah dari posisi horizontal,
gravitasi menyebabkan bola bergulir di sepanjang balok. Kontroler akan dirancang untuk sistem
ini sehingga posisi bola dapat dimanipulasi.
Parameter sistem
Untuk masalah ini, kami akan menganggap bahwa bola menggelinding tanpa tergelincir dan
gesekan antara balok dan bola dapat diabaikan. Konstanta dan variabel untuk contoh ini
didefinisikan sebagai berikut:
Kriteria desain
Overshoot <5%
Persamaan sistem
Turunan kedua dari sudut input $ \ alpha $ sebenarnya mempengaruhi turunan kedua dari $ r $.
Namun, kami akan mengabaikan kontribusi ini. Persamaan gerak Lagrangian untuk bola
kemudian diberikan sebagai berikut:
(1) $$ 0 = \ kiri (\ frac {J} {R ^ 2} + m \ kanan) \ ddot {r} + m g \ sin {\ alpha} - m r
\ dot {\ alpha} ^ 2 $$
Linearisasi persamaan ini tentang sudut berkas, $ \ alpha = 0 $, memberi kita perkiraan linier
sistem berikut:
Persamaan yang menghubungkan sudut berkas dengan sudut roda gigi dapat diperkirakan
sebagai linear dengan persamaan di bawah ini:
(4) $$ \ kiri (\ frac {J} {R ^ 2} + m \ kanan) \ ddot {r} = - m g \ frac {d} {L} \ theta $$
1. Fungsi Transfer
(5) $$ \ kiri (\ frac {J} {R ^ 2} + m \ kanan) R (s) s ^ 2 = - m g \ frac {d} {L} \ Theta (s) $$
Penyusunan ulang kami menemukan fungsi transfer dari sudut roda gigi ($ \ Theta (s) $) ke
posisi bola ($ R (s) $).
(6) $$ P = \ frac {R (s)} {\ Theta (s)} = - \ frac {mgd} {L \ kiri (\ frac {J} {R ^ 2} + m \ kanan)}
m = 0,111;
R = 0,015;
g = -9.8;
L = 1.0;
d = 0,03;
J = 9.99e-6;
s = tf ('s');
P_ball = -m * g * d / L / (J / R ^ 2 + m) / s ^ 2
P_ball =
0,21
----
s^2
2. State-Space
Persamaan sistem linierisasi juga dapat direpresentasikan dalam bentuk ruang-negara. Ini
dapat dilakukan dengan memilih posisi bola ($ r $) dan kecepatan ($ \ dot {r} $) sebagai variabel
status dan sudut roda gigi ($ \ theta $) sebagai input. Representasi state-space ditunjukkan di
bawah ini:
(7) $$ \ kiri [{\ begin {array} {c} \ dot {r} \\ \ ddot {r} \ end {array}} \ kanan] =
\ kiri [{\ mulai {array} {cc} 0 & 1 \\ 0 & 0 \ end {array}} \ kanan]
\ kiri [{\ begin {array} {c} r \\ \ dot {r} \ end {array}} \ kanan] +
Namun, untuk contoh state-space kami, kami akan menggunakan model yang sedikit berbeda.
Persamaan yang sama untuk bola masih berlaku tetapi alih-alih mengendalikan posisi melalui
sudut gigi, $ \ theta $, kami akan mengontrol torsi yang diterapkan pada balok secara langsung.
Di bawah ini adalah representasi dari sistem ini:
(8) $$ \ kiri [{\ begin {array} {c} \ dot {r} \\ \ ddot {r} \\ \ dot {\ alpha} \\ \ ddot {\ alpha} \ end
{array} } \ kanan] =
\ kiri [{\ mulai {array} {cccc} 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & frac {-mg} {\ kiri (\ frac {J} {R ^ 2} + m \
kanan) } & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \ end {array}} \ kanan]
\ kiri [{\ begin {array} {c} r \\ \ dot {r} \\ \ alpha \\ \ dot {\ alpha} \ end {array}} \ kanan] +
(9) $$ y = \ kiri [{\ begin {array} {cccc} 1 & 0 & 0 & 0 \ end {array}} \ kanan]
\ kiri [{\ begin {array} {c} r \\ \ dot {r} \\ \ alpha \\ \ dot {\ alpha}
Catatan: Untuk sistem ini, roda gigi dan tuas tidak akan digunakan, sebagai gantinya motor di
tengah balok akan menerapkan torsi ke balok, untuk mengontrol posisi bola.
H = -m * g / (J / (R ^ 2) + m);
A = [0 1 0 0
00H0
0001
0 0 0 0];
B = [0 0 0 1] ';
C = [1 0 0 0];
D = [0];
ball_ss = ss (A, B, C, D)
ball_ss =
A=
x1 x2 x3 x4
x1 0 1 0 0
x2 0 0 7 0
x3 0 0 0 1
x4 0 0 0 0
B=
u1
x1 0
x2 0
x3 0
x4 1
C=
x1 x2 x3 x4
y1 1 0 0 0
D=
u1
y1 0
Model sistem
Fungsi transfer dari sudut roda gigi ($ \ Theta (s) $) ke posisi bola ($ R (s) $), seperti yang
diturunkan di halaman Ball & Beam: System Modeling.
(1) $$ P = s \ frac {R (s)} {\ Theta (s)} = - \ frac {mgd} {L \ kiri (\ frac {J} {R ^ 2} + m \ kanan)}
Buka file-m baru dan tambahkan kode berikut untuk membuat model fungsi transfer di MATLAB.
m = 0,111;
R = 0,015;
g = -9.8;
L = 1.0;
d = 0,03;
J = 9.99e-6;
s = tf ('s');
P_ball = -m * g * d / L / (J / R ^ 2 + m) / s ^ 2
P_ball =
0,21
----
s^2
Sistem Bola dan Balok adalah sistem tipe II yang memiliki dua kutub pada asalnya, seperti yang
terlihat pada peta kutub / nol di bawah ini. Karena kutub tidak secara ketat berada di bidang
setengah kiri, sistem loop terbuka akan tidak stabil seperti yang terlihat pada respons langkah di
bawah ini.
pzmap (P_ball)
Sekarang, kami ingin mengamati respons bola terhadap input step pada sudut gear motor servo
$ \ theta $ (step 1-radian). Untuk melakukan ini, Anda perlu menambahkan baris berikut ke
file-m Anda.
langkah (P_ball)
Dari plot ini jelas bahwa sistem tidak stabil dalam loop terbuka yang menyebabkan bola bergulir
langsung dari ujung balok. Oleh karena itu, diperlukan beberapa metode untuk mengendalikan
posisi bola dalam sistem ini. Beberapa contoh desain pengontrol disediakan dalam tutorial ini
untuk mengatasi masalah ini.
Fungsi transfer loop terbuka tanaman untuk percobaan bola dan balok diberikan di bawah ini:
(1) $$
- \ frac {mgd} {L \ kiri (\ frac {J} {R ^ 2} + m \ kanan)} \ frac {1} {s ^ 2} \ qquad [\ frac {m} {rad}]
$$
Diagram blok untuk contoh ini dengan pengontrol dan umpan balik kesatuan posisi bola
ditunjukkan di bawah ini:
Pertama, kita akan mempelajari respon dari sistem yang ditunjukkan di atas ketika pengontrol
proporsional digunakan. Kemudian, kontrol derivatif dan / atau integral akan ditambahkan jika
perlu.
(2) $$
C (s) = K_p + \ frac {K_i} {s} + K_d s = \ frac {K_d s ^ 2 + K_p s + K_i} {s}
$$
Kontrol proporsional
Fungsi transfer loop tertutup untuk kontrol proporsional dengan keuntungan proporsional
($ K_p $) sama dengan 100, dapat dimodelkan dengan menyalin baris kode MATLAB berikut ke
dalam file-m baru.
m = 0,111;
R = 0,015;
g = -9.8;
L = 1.0;
d = 0,03;
J = 9.99e-6;
s = tf ('s');
P_ball = -m * g * d / L / (J / R ^ 2 + m) / s ^ 2;
Kp = 1;
C = pid (Kp);
Sekarang, kita dapat memodelkan respons sistem terhadap input langkah 0,25 m. Tambahkan
baris kode berikut ke file-m Anda dan jalankan. Anda harus mendapatkan output berikut:
Seperti yang Anda lihat, sistem tetap sedikit stabil dengan penambahan keuntungan
proporsional. Coba ubah nilai $ K_p $ dan perhatikan bahwa sistemnya tetap tidak stabil.
Kontrol proporsional-turunan
Sekarang, kita akan menambahkan istilah turunan ke controller. Salin baris kode berikut ke
file-m dan jalankan untuk melihat respons sistem terhadap metode kontrol ini. Plot Anda harus
serupa dengan yang berikut:
m = 0,111;
R = 0,015;
g = -9.8;
L = 1.0;
d = 0,03;
J = 9.99e-6;
s = tf ('s');
P_ball = -m * g * d / L / (J / R ^ 2 + m) / s ^ 2;
Kp = 10;
Kd = 10;
t = 0: 0,01: 5;
Sekarang sistemnya stabil tetapi overshootnya terlalu tinggi dan waktu penyelesaian perlu
sedikit turun. Dari halaman tutorial PID di bagian tentang karakteristik pengontrol P, I, dan D,
kita melihat bahwa dengan meningkatkan $ K_d $ kita dapat menurunkan overshoot dan
mengurangi sedikit waktu penyelesaian. Karena itu, hasilkan $ K_d $ = 20 dalam file-m Anda
dan jalankan lagi. Output Anda harus:
Kp = 10;
Kd = 20;
Kriteria overshoot terpenuhi tetapi waktu penyelesaian perlu turun sedikit. Untuk mengurangi
waktu penyelesaian, kami dapat mencoba menambah $ K_p $ sedikit untuk menambah waktu
naik. Keuntungan turunan ($ K_d $) juga dapat ditingkatkan untuk melepas beberapa overshoot
yang menyebabkan $ K_p $ akan ditimbulkan. Setelah bermain dengan keuntungan sedikit, plot
respons langkah berikut ini dapat dicapai dengan $ K_p $ = 15 dan $ K_d $ = 40:
Kp = 15;
Kd = 40;
Seperti yang Anda lihat dari plot di atas, semua tujuan kontrol telah dipenuhi tanpa
menggunakan pengontrol integral (waktu penyelesaian untuk contoh ini dianggap tercapai ketika
responsnya kurang dari 2% dari nilai akhir). Ingat, bahwa untuk masalah kontrol biasanya ada
lebih dari satu solusi untuk masalah tersebut.
Fungsi transfer loop terbuka tanaman untuk percobaan bola dan balok diberikan di bawah ini:
(1) $$
- \ frac {mgd} {L \ kiri (\ frac {J} {R ^ 2} + m \ kanan)} \ frac {1} {s ^ 2} \ qquad [\ frac {m} {rad}]
$$
Untuk melihat derivasi persamaan untuk masalah ini merujuk ke halaman Ball & Beam: System
Modeling.
Gagasan utama dari desain lokus root adalah memperkirakan respons loop tertutup dari plot
lokus root loop terbuka. Dengan menambahkan nol dan / atau kutub ke sistem asli
(menambahkan kompensator), lokus root dan dengan demikian respons loop tertutup akan
dimodifikasi. Pertama mari kita lihat lokus root untuk tanaman di loop terbuka. Buat file-m
baru dengan kode MATLAB berikut untuk memodelkan tanaman dan plot locus root. Sekarang,
jalankan file-m dan Anda akan melihat plot locus root berikut:
m = 0,111;
R = 0,015;
g = -9.8;
L = 1.0;
d = 0,03;
J = 9.99e-6;
s = tf ('s');
P_ball = -m * g * d / L / (J / R ^ 2 + m) / s ^ 2;
rlocus (P_ball)
Seperti yang Anda lihat, sistem ini memiliki dua kutub di titik asalnya hingga tak terhingga
sepanjang sumbu imajiner.
Kriteria desain juga dapat diplot ke lokus root menggunakan perintah sgrid. Perintah ini
menghasilkan grid rasio redaman konstan dan frekuensi alami. Rasio redaman ($ \ zeta $) dan
frekuensi alami ($ \ omega_n $) ditemukan menggunakan persamaan berikut yang
menghubungkannya dengan persen overshoot maksimum kami ($ Mp $) dan persyaratan waktu
penyelesaian ($ T_s $):
(2) $$
$$
(3) $$
$$
Perhatikan, bahwa persamaan dengan $ T_s $ ditemukan dengan mengasumsikan sistem telah
diselesaikan ketika responsnya tetap dalam 2% dari nilai akhirnya. Dari persamaan ini, rasio
redaman dan frekuensi alami ditemukan masing-masing 0,7 dan 1,9.
sgrid (0.70, 1.9)
Area antara dua garis diagonal bertitik mewakili lokasi di mana persen overshoot kurang dari 5%.
Area di luar garis lengkung mewakili lokasi di mana waktu penyelesaian kurang dari 3 detik.
Perhatikan bahwa tidak ada wilayah plot yang termasuk dalam kriteria desain yang ditunjukkan
oleh garis-garis ini. Untuk memperbaiki ini dan membawa lokus root ke bidang kiri untuk
stabilitas, kami akan mencoba menambahkan kompensator timbal ke sistem.
Pengontrol timbal
Kompensator timah orde pertama cenderung menggeser lokus root ke bidang sebelah kiri.
Untuk deskripsi yang lebih rinci tentang kompensator timbal, lihat halaman Desain Kompensator
Lead & Lag. Kompensator timah memiliki formulir di bawah ini:
(4) $$
$$
Sekarang, mari kita tambahkan controller ke instalasi dan melihat lokus root. Kami akan
memposisikan nol di dekat titik asal untuk membatalkan salah satu kutub. Kutub kompensator
kami akan ditempatkan di sebelah kiri titik asal untuk menarik lokus akar lebih jauh ke bidang
sebelah kiri. Tambahkan baris kode MATLAB berikut ke file-m Anda. Jalankan file-m Anda di
jendela perintah MATLAB dan Anda akan melihat yang berikut:
zo = 0,01;
po = 5;
Memilih keuntungan
Sekarang kami telah memindahkan lokus root ke bidang sebelah kiri, kami dapat memilih gain
yang akan memenuhi persyaratan desain kami. Kita dapat menggunakan perintah rlocfind
untuk membantu kita melakukan ini. Tambahkan kode [k, kutub] = rlocfind (C * P_ball) di akhir
file-m Anda.
Lalu pergi ke plot dan pilih titik dekat yang ditunjukkan oleh tanda silang pada plot di bawah ini.
Setelah melakukan ini, Anda akan melihat output berikut di jendela perintah MATLAB.
Perhatikan bahwa nilai yang dikembalikan di jendela perintah MATLAB Anda mungkin tidak persis
sama, tetapi setidaknya harus memiliki urutan besarnya yang sama. Sekarang, kita dapat
merencanakan respons dengan keuntungan ini.
Nilai k ini dapat dimasukkan ke dalam sistem dan respons loop tertutup ke input langkah 0,25 m
dapat diperoleh. Tambahkan baris berikut ke file-m Anda untuk melakukan analisis ini.
Jalankan file-m Anda dan pilih titik pada lokus root mirip dengan titik yang dipilih di atas.
Respons langkah harus terlihat seperti berikut.
t = 0: 0,01: 5;
angka
Dari plot ini kita melihat bahwa ketika input langkah 0,25-m diberikan kepada sistem, baik waktu
penyelesaian dan persen kriteria desain overshoot terpenuhi.
Catatan: Masalah desain tidak harus memiliki jawaban yang unik. Menggunakan metode ini
(atau yang lain) dapat menghasilkan banyak kompensator berbeda. Coba jalankan file-m Anda
beberapa kali lagi memilih titik yang berbeda setiap kali dan mempelajari efeknya terhadap
respons langkah. Untuk latihan, Anda mungkin juga ingin kembali ke lokus root loop terbuka
asli dan mencoba menemukan cara lain untuk menambahkan nol dan kutub untuk mendapatkan
respons yang lebih baik.