Anda di halaman 1dari 9

UTS Pemodelan dan simulasi

Resume Video 2
How to Design a Controller When Plant Model is Not Available
Oleh : Synatria Subekti (201012310007)

Pada video tersebut Traveloka akan menjelaskan cara merancang pengontrol ketika model tidak
tersedia untuk pabrik Anda. Ada 2 pendekatan pemodelan, pertama adalah mengambil dataset
langsung dan kedua adalah berbasis dataset yang sudah disediakan (generate). Jika memiliki
pengetahuan tentang matematika atau fisika di balik suatu sistem, pemodelan prinsip pertama
akan menjadi pendekatan yang baik untuk dilakukan. Namun dalam banyak situasi, pabrik
tersebut terlalu rumit, atau insinyurnya tidak memiliki waktu atau keterampilan untuk
mengembangkan model prinsip pertama yang terperinci untuk sebuah pabrik. Traveloka akan
menjelaskan dan melihat bagaimana hal ini dilakukan dengan menggunakan contoh motor DC.
Kita akan dapat mengontrol posisi motor tanpa mengetahui dinamikanya terlebih dahulu.

Jadi kembali ke cara melakukannya, keseluruhan alur kerja untuk contoh ini dibagi menjadi
empat langkah.
- Data akuisisi
Hal ini meliputi pesiapan perangkat lalu menjalankan perangkat tersebut sebagai target
untuk di identifikasi. Kita akan memperoleh respons perangkat keras terhadap sinyal
masukan tertentu. Di sini kita akan membahas sedikit tentang pengaturan perangkat keras
dan fitur baru Simulink yang dijalankan pada perangkat keras target.
- Idetifikasi sistem
Secara garis besar identifikasi sistem bisa dilakukan dengan 2 cara, yaitu linear model
estimation dan nonlinear model estimation menggunakan System Identification Toolbox.
- Desain kontrol
Menyiapkan sistem kontrol menggunakn tuning PID. Selanjutnya melakukan simulasi
dengan non linear model
- Real-Time testing dan implementasi
Deployment hasil model tersebut ke perangkat controller dan evaluasi hasil model
tersebut.

#Data akuisisi
Kami memiliki motor DC ini. Kami menghubungkan motor ke papan Arduino Uno melalui
sirkuit terintegrasi driver. Pada dasarnya driver digunakan untuk meningkatkan kemampuan arus
agar dapat menggerakkan motor. Tujuan kami dalam contoh ini adalah merancang pengontrol
umpan balik untuk motor ini. Untuk melacak posisi motor referensi, kami mengirimkan referensi
posisi motor ke papan. Berdasarkan hal ini, pengontrol menghasilkan perintah tegangan yang
sesuai dan mengirimkannya ke dua pin keluaran analog di papan sebagai sinyal PWM.
Sinyal-sinyal ini kemudian diumpankan ke IC driver yang menyediakan arus penggerak yang
sesuai untuk motor. Ketika ini diterapkan pada motor, maka menghasilkan torsi yang memutar
poros motor. Potensiometer kemudian digunakan untuk mengukur sudut putaran poros motor,
dan sudut ini diumpankan kembali ke salah satu pin input analog pada papan Arduino.
Singkatnya, kami memiliki komputer host yang berinteraksi dengan Arduino Uno yang
terhubung ke motor DC melalui driver. Kami mengirimkan perintah tegangan ke Arduino untuk
menggerakkan motor dengan tegangan yang sesuai, dan kemudian komputer host
mengumpulkan sudut motor melalui Arduino. Untuk berbicara dengan Arduino Uno, kita akan
menggunakan protokol Komunikasi Serial untuk memprogram papan Arduino Uno. Dari
komputer host yang akan kami gunakan dijalankan pada perangkat keras target, sebuah fitur
yang diperkenalkan pada A 2012 kami di Simulink. Fitur ini dapat digunakan untuk menjalankan
model Simulink secara otomatis pada perangkat keras target. Anda dapat mengaksesnya dari
menu Models Tools, namun untuk menggunakan fitur ini, Anda harus terlebih dahulu menginstal
dukungan untuk perangkat keras yang relevan. Penginstal target dirancang untuk memandu Anda
melalui proses pengunduhan paket dukungan yang sesuai, dan perangkat lunak pihak ketiga
lainnya yang mungkin diperlukan untuk instalasi. Setelah kita mengunduh paket dukungan untuk
Arduino, kita akan menemukan perpustakaan baru bernama target untuk digunakan dengan
perangkat keras Arduino di browser perpustakaan Simulink. Blok-blok ini sekarang dapat
digunakan dalam model Simulink apa pun untuk mengkonfigurasi papan. Kembali ke penyiapan
kami, akan ada dua model yang terlibat di sini. Model pertama akan dikompilasi menjadi sebuah
executable yang akan dijalankan di papan Arduino. Ini akan menerima perintah tegangan dari PC
host melalui port serial dan mengirimkan permintaan tegangan ini ke motor. Ini juga akan
menerima sinyal sudut terukur dari motor dan mengirimkannya ke PC host melalui port serial.
Komputer host kami yang menjalankan windows di Matlab akan menjalankan model Simulink
kedua yang mengirimkan perintah tegangan yang sesuai ke papan Arduino dan menerima sudut
poros yang diukur dari papan Arduino melalui port serial. Metode akuisisi ini tentu saja
ditujukan pada board Arduino Uno. Ada beberapa metode lain untuk memperoleh data melalui
Matlab dan Simulink menggunakan toolbox seperti Instrument Control Toolbox.
Ini adalah model pertama dan akan dijalankan di papan Arduino. Model ini akan
mengkonfigurasi papan Arduino untuk berkomunikasi dengan motor secara tepat. Blok dengan
kata Arduino ini berasal dari perpustakaan yang diinstal sebagai bagian dari paket dukungan.
Blok fungsi Matlab ini akan membaca data yang masuk melalui port serial dan mengarahkan
tegangan ini ke dua pin keluaran analog di papan. Pin input analog menerima data posisi motor
dan pesan serial lengkap terbentuk. Kami memiliki antarmuka serial untuk berkomunikasi
dengan motor. Antarmuka serial terdiri dari blok fungsi Matlab, di mana kita menggunakan
objek serial di Matlab untuk mengirim dan menerima data. Data yang diterima melalui port serial
diubah menjadi sudut dalam derajat di subsistem ini. Dan di subsistem ini, kami melakukan
pra-proses data sebelum dikirim melalui port serial. Untuk mencatat kumpulan data yang kami
perlukan, kami menggunakan fitur pencatatan sinyal di Simulink untuk mencatat data. Ini akan
membuat objek kumpulan data Simulink di akhir simulasi, yang akan berisi semua data log
sebagai objek deret waktu Matlab. Dengan model yang sudah siap, sekarang kita dapat memulai
proses akuisisi. Eksekusinya sudah berjalan di papan Arduino dan menunggu informasi di port
serial, jadi kita tinggal menjalankan model di host untuk mengirimkan perintah tegangan ke
motor. Mari kita coba memberikan gelombang persegi sederhana dari -5 ke 5V. Pada respon
motor, kita dapat melihat bahwa motor berperilaku linier di wilayah ini dan kemudian jenuh pada
posisi tertentu. Jadi ia juga memiliki beberapa nonlinier. Kita akan menemukan variabel bernama
log out di ruang kerja kita. Ini pada dasarnya adalah objek kumpulan data yang dibuat untuk
dengan mudah mengimpor kumpulan data ini ke antarmuka pengguna grafis identifikasi sistem.
Kita dapat mengubah sinyal log menjadi objek data ID.

Sekarang untuk memulai proses estimasi kita perlu memilih data kerja yang akan digunakan
untuk memperkirakan model dan data validasi yang akan digunakan untuk menguji model
estimasi tersebut. Kita bisa memulai dengan kumpulan data yang sama sebagai data kerja dan
data validasi. Untuk mengamati kesesuaian model dengan data estimasi, kita kemudian dapat
menguji model tersebut terhadap kumpulan data independen. Dukungan untuk fungsi transfer
berkelanjutan ditambahkan pada tahun 2012. Rilis Toolbox identifikasi sistem. Mari kita coba
memperkirakan fungsi transfer dua kutub sederhana dengan estimator ini. Sekarang, setelah
estimasi selesai, kita akan menemukan model yang dihasilkan di GUI. Mari kita lihat bagaimana
model estimasi ini cocok dengan data kerja. Ini sangat cocok sebesar 93,6% untuk data estimasi.
Jadi sekarang mari kita uji kumpulan data ini. Uji model estimasi ini terhadap data validasi.
Meskipun ini tidak sempurna, model ini mampu menangkap dinamika dengan baik. Kini, model
yang diperoleh dengan Toolbox identifikasi sistem berisi informasi tidak hanya tentang nilai
nominal parameter, tetapi juga tentang ketidakpastian parameter yang terkandung dalam matriks
kovarians parameter. Ketidakpastian yang dihitung dipengaruhi oleh gangguan eksternal yang
mempengaruhi sistem, dinamika yang tidak dimodelkan, dan jumlah data yang dikumpulkan
sehingga menjadi ukuran keandalan model. Jadi untuk meringkas identifikasi sistem linier kami
membuat fungsi transfer waktu berkelanjutan dari data. Kita dapat menggunakan data domain
waktu atau frekuensi dengan banyak input dan output. Dan kita juga dapat memperkirakan jenis
model linier lainnya seperti model ruang keadaan, model proses, dll. Kita juga dapat
memperkirakan model nonlinier untuk membuat model fidelitas yang lebih tinggi untuk motor
DC kita. Model linier dinamika motor yang dibuat menggunakan data yang dikumpulkan dari
wilayah linier operasinya, berguna untuk merancang pengontrol yang baik, namun model pabrik
masih belum mampu menangkap nonlinier yang ditunjukkan oleh motor. Saat kita beralih dari
wilayah operasi ini, mari kita lihat beberapa kumpulan data yang menunjukkan non-linearitas ini.
Sekarang, selama akuisisi data, kita melihat bahwa posisi motor jenuh pada sudut tertentu di sini
100 dan -100 derajat. Hal ini karena motor dibatasi untuk bergerak hanya dalam rentang tertentu.

Untuk sistem dengan dinamika linier yang masukan dan keluarannya dipengaruhi oleh
modifikasi nonlinier tersebut, kita dapat membangun model Hammerstein Wiener. Kami
mengonfigurasi model Hammerstein Wiener yang menggunakan zona mati sebagai masukannya,
nonlinier dan saturasi sebagai nonlinier keluarannya, namun kami masih menemukan bahwa
respons yang diamati tidak dapat ditangkap secara akurat oleh model. Kemudian pengamatan
lebih dekat terhadap data menunjukkan bahwa perubahan kemiringan respon tidak berhubungan
secara linier dengan perubahan tegangan.

Ini mungkin mengisyaratkan histeresis yang lebih kompleks seperti perilaku non-linier. Jadi kami
kemudian mencoba model ARX nonlinier, yang menawarkan fleksibilitas besar dalam
menangkap perilaku kompleks menggunakan fungsi nonlinier seperti wavelet, jaringan sigmoid,
dll. Agar pemodelan ARX nonlinier menjadi efektif, kita memerlukan data yang kaya dalam
jumlah yang banyak. Untuk membuat kumpulan data seperti itu, kita dapat menggunakan
perintah merge untuk menggabungkan eksperimen yang berbeda. Satu lagi fitur model ARX
nonlinier adalah model ini memungkinkan kita memasukkan pengetahuan kita tentang sifat
beberapa kota nonlinier ke dalam strukturnya. Misalnya, aspek penggerak, gesekan, dan saturasi
dapat dimasukkan sebagai elemen struktural model tersebut. Dengan menggunakan regressor
khusus, saya membuat dua regressor khusus untuk hal yang sama. Jadi saya membuat C1, yang
menggabungkan saturasi pada motor dan C2 untuk perilaku zona mati yang kita lihat pada
tegangan level rendah. Sekarang mari kita periksa bagaimana kinerja model ini dibandingkan
dengan data estimasi yang diukur. Oh, itulah kecocokan yang diberikan model linier pada data
yang menunjukkan beberapa non-linearitas. Jadi kita bisa melihat bahwa itu tidak terlalu bagus.
Baiklah. Jadi model nonlinier sangat cocok untuk data estimasi. Jadi lebih besar dari 90% untuk
ketiga percobaan. Sekarang mari kita periksa ini terhadap kumpulan data validasi. Sejauh ini
model tersebut juga memiliki kecocokan lebih dari 90% untuk semua kumpulan data validasi.
Jadi model ini juga sangat cocok untuk semua data yang kita miliki. Jadi ini adalah model yang
bagus untuk motor. Untuk meringkas identifikasi sistem nonlinier kita dapat memperkirakan
model Hammerstein, Wiener atau ARX nonlinier. Kami memiliki berbagai nonlinier dinamis
seperti wavelet, sigmoid, jaringan saraf, dll. yang tersedia untuk digunakan. Kami dapat
memperkirakan saturasi sinyal dan jenis perilaku zona kematian yang memengaruhi sistem linier,
dan kami juga memiliki opsi untuk menggunakan regressor khusus untuk fleksibilitas yang lebih
besar dalam memodelkan data menggunakan model ARX nonlinier.
Salah satu fitur desain kontrol Simulink adalah kemampuan untuk menyetel penguatan
pengontrol PID di lingkungan Simulink. Tuner PID akan melinearkan model di sekitar titik
operasi yang dipilih, dan kemudian menyetel penguatan untuk pembangkit yang dilinearisasi ini.
Secara default, tuner akan melakukan linierisasi pembangkit di sekitar kondisi awalnya. Karena
saat ini motor dalam keadaan diam dan harus mengatasi gesekan statis, kami memilih titik
operasi lain untuk melakukan linierisasi, yang mungkin lebih mewakili dinamika motor. Di sini
kami menentukan linearisasi untuk blok ARX nonlinier melalui fungsi konfigurasi. Pertama kita
akan mengkonfigurasi batas saturasi pengontrol PID sehingga kita tidak memberikan tegangan
terlalu banyak pada motor dan merusak rangkaian. Sekarang kita dapat mengklik tune untuk
membuka tuner PID interaktif. Tuner PID menghitung kompensator awal untuk kita. Jika
respons pengontrol awal ini tidak memenuhi kebutuhan Anda, Anda dapat menyesuaikan desain
lebih lanjut secara interaktif dengan menyesuaikan waktu respons atau bahkan bandwidth dan
margin fase. Sinyal referensi dalam hal ini adalah sinyal dua langkah sederhana yang berkisar
dari 0 hingga 40, dan kemudian ke 100 dalam waktu 10 detik. Mari kita lihat respon motornya.
Kita dapat melihat bahwa respon sekarang tidak mengalami overshoot ketika disimulasikan
dengan model nonlinier. Motor masih bisa melaju dengan cukup baik.
Jadi untuk merekap alur kerja dengan cepat, pertama-tama kami memperoleh data dari perangkat
keras melalui papan Arduino menggunakan perangkat keras yang dijalankan sesuai target. Sekali
lagi, ada beberapa alat lain yang membantu kita memperoleh data di lingkungan Matlab dan
Simulink, seperti Data Acquisition Toolbox, Instrument Control Toolbox, Vehicle Network
Toolbox, dll. kami kemudian menerapkan identifikasi sistem pada kumpulan data ini untuk
memperkirakan model dengan ketelitian rendah dan tinggi untuk pabrik menggunakan Kotak
Alat Identifikasi Sistem. Dan kemudian kami merancang pengontrol PID untuk pabrik
menggunakan tuner PID. Sekali lagi, setelah Anda memiliki model pabrik, Anda dapat
menggunakan algoritma pengontrol apa pun. Ada beberapa alat lain yang dapat digunakan untuk
merancang pengontrol yang lebih kompleks di Kotak Alat Sistem kontrol atau Kotak Alat
Kontrol Kuat, dan bahkan kotak alat kontrol prediktif model. Sekarang, setelah kita memiliki
sistem kontrol, ada cara lain untuk melakukan pengujian dan implementasi real-time, seperti, eh,
target windows real-time dan target Xpc. Jadi pada dasarnya dalam contoh ini, kami hanya
menggunakan alat yang sangat sederhana ini hanya untuk mendemonstrasikan alur kerja ini. Alat
yang kami sediakan mendukung alur kerja ini untuk kasus yang lebih kompleks dan untuk
aplikasi yang lebih kompleks.

Anda mungkin juga menyukai