Bagaimana Anda mengatur Kontrol-PID jika konstanta waktu dari sistem yang dikontrol adalah variabel?

9

Deskripsi umum untuk kontroler PID kontinu ditulis seperti ini: Yang terbaik nilai konstanta , K_i dan K_d untuk sistem terkontrol yang diberikan akan bergantung pada konstanta waktu, baik itu sistem \ text {PT} _1 , atau sistem \ text {PT} _2 , dll. ...

y(t)=Kpe(t)+Ki0te(τ)dτ+Kdde(t)dt
KpKiKdPT1PT2

Apa yang Anda lakukan jika konstanta waktu sistem seperti itu variabel. Katakanlah, ini bervariasi antara Ta dan Tb ( Ta<Tb ). Bagaimana Anda mendesain konstanta PID?

John HK
sumber

Jawaban:

8

Salah satu cara adalah dengan menerapkan beberapa bentuk kontrol adaptif. Jika rentang konstanta waktu Anda kecil dan diketahui, Anda bisa menggunakan sesuatu yang disebut "penjadwalan gain" di mana Anda menentukan sebelumnya semua konstanta waktu yang akan Anda hadapi (mudah-mudahan itu terbatas) dan gunakan logika logika untuk mendefinisikan PI dan D. Mungkin sulit untuk memastikan Anda telah membahas variabilitas yang cukup untuk memastikan stabilitas dan kinerja melalui rentang tersebut. Kisah sukses yang bagus untuk penjadwalan gain adalah helikopter Chinook. Itu bisa dilakukan.

Jika Anda tidak memiliki prediksi yang layak untuk apa konstanta waktu akan, Anda bisa melihat ke dalam menggunakan Model Reference Adaptive Control (MRAC). Dalam skema kontrol ini Anda memiliki model referensi (sistem ideal Anda) dengan kontroler PID yang Anda pilih. MRAC meminimalkan kesalahan antara apa yang sebenarnya dilakukan pabrik dan apa yang dilakukan model referensi Anda. Dengan cara ini Anda memaksa pabrik Anda untuk bertindak seperti model LTI Anda.

Atau Anda dapat mencoba menggunakan Model Identification Adaptive Controller (MIAC). Di sini skema kontrol melakukan identifikasi sistem secara real time dan menggunakan hukum pembaruan untuk controller Anda. Yang satu ini membutuhkan keterampilan paling maju dari ketiga gagasan itu.

Karena sistem Anda mengubah konstanta waktu dari waktu ke waktu, itu bukan lagi LTI. Ini berarti Anda harus melakukan penjadwalan gain (cukup mudah jika Anda mengetahui rentang konstanta waktu) atau identifikasi sistem dengan undang-undang pembaruan untuk PID Anda.

kemauan2727
sumber
mengapa tidak menyamakan secara dinamis langkah-langkah waktu dengan mendesain untuk catatan waktu yang lebih besar dan membuat perangkat lunak semu-realtime dengan menunggu selama setiap iterasi sebelum mengirimkan perintah aktuator?
Gürkan Çetin
@ GürkanÇetin apa yang menunggu perangkat lunak? Bisakah Anda membantu saya memahami apa yang terjadi ketika perangkat lunak sengaja menunda pembaruan kontrol?
willpower2727
Jika saya mengerti dengan benar, ada penundaan waktu yang tidak diketahui pada setiap loop dari iterasi komputasi (yaitu karena komunikasi I / O, atau tugas CPU lainnya.) Ini adalah masalah umum pada target waktu nyata (OS). Jadi, menyetel pengontrol untuk delta_t (panjang) yang telah ditentukan (katakanlah 100msec), dan kemudian pada setiap iterasi, mencoba menyesuaikan total waktu loop ke delta_t ini (misalkan algoritma kontrol diselesaikan oleh msec ke-80, tunggu 20 msec tambahan) ) untuk mengirimkan perintah kontrol; bisa bekerja, jika diketahui bahwa semua tugas lain membutuhkan waktu kurang dari 100 ms (dikurangi waktu perhitungan hukum kontrol).
Gürkan Çetin
@ GürkanÇetin jika saya memahami pertanyaan asli dengan benar, pertanyaannya adalah tentang bagaimana mengontrol ketika aspek fisik suatu pabrik berubah dari waktu ke waktu (mis. Roket kehilangan massa dari waktu ke waktu), bukan bagaimana menangani waktu eksekusi loop operasi waktu yang tidak nyata. Saya pikir saran Anda bisa valid, dalam hal berurusan dengan OS non-real time menjalankan controller.
willpower2727
Oh ya. Saya salah mengartikannya. Dalam hal ini jika pabrik berubah dalam waktu (tiba-tiba atau bertahap), saya akan mengatakan konfigurasi ulang adalah kemungkinan lain. Tentu saja, hanya berfungsi jika Anda mengetahui perubahan dinamika model. Seperti kehilangan massa, menghabiskan bahan bakar, mengekstraksi / mencabut roda pendaratan, dll.
Gürkan Çetin