pengantar
Pertama, kita perlu mempertimbangkan apa sebenarnya yang disebut respons impuls dari suatu sistem dan apa artinya. Ini adalah konsep abstrak yang membutuhkan sedikit pemikiran untuk memvisualisasikan. Saya tidak akan masuk ke matematika yang ketat. Maksud saya adalah mencoba memberikan intuisi tentang apa benda ini, yang kemudian mengarah pada bagaimana Anda dapat memanfaatkannya.
Contoh masalah kontrol
Bayangkan Anda memiliki penghambat kekuatan besar dengan sensor suhu yang terpasang di sana. Semuanya dimulai dan pada suhu kamar. Ketika Anda menghidupkan daya, Anda tahu bahwa suhu pada sensor pada akhirnya akan naik dan stabil, tetapi persamaan yang tepat akan sangat sulit untuk diprediksi. Katakanlah sistem memiliki konstanta waktu sekitar 1 menit, meskipun "konstanta waktu" tidak sepenuhnya berlaku karena suhu tidak naik dalam eksponensial yang bagus seperti dalam sistem dengan kutub tunggal, dan karenanya konstanta waktu tunggal . Katakanlah Anda ingin mengontrol suhu secara akurat, dan mengubahnya ke tingkat yang baru dan tetap di sana secara signifikan lebih cepat daripada apa yang akan dilakukan jika Anda hanya menyalakan level daya yang sesuai dan menunggu.
Pada dasarnya, Anda memiliki masalah sistem kontrol. Respons loop terbuka cukup dapat diulang dan ada suatu persamaan yang memodelkannya dengan cukup baik, tetapi masalahnya ada terlalu banyak yang tidak diketahui untuk Anda peroleh dari persamaan itu.
Kontrol PID
Salah satu cara klasik untuk mengatasi ini adalah dengan kontroler PID. Kembali di pleistocene ketika ini harus dilakukan dalam elektronik analog, orang menjadi pintar dan datang dengan skema yang bekerja dengan baik dengan kemampuan analog yang ada. Skema itu disebut "PID", untuk Proporsional , Integral , dan Derivatif .
Istilah p
Anda mulai mengukur kesalahan. Ini hanya respons sistem yang diukur (suhu yang dilaporkan oleh sensor dalam kasus kami) minus input kontrol (pengaturan suhu yang diinginkan). Biasanya ini dapat diatur agar tersedia sebagai sinyal tegangan, sehingga menemukan kesalahan itu hanya perbedaan analog, yang cukup mudah. Anda mungkin berpikir ini mudah. Yang harus Anda lakukan adalah menggerakkan resistor dengan daya yang lebih tinggi semakin tinggi kesalahannya. Itu secara otomatis akan membuatnya lebih panas ketika terlalu dingin dan lebih dingin saat terlalu panas. Itu berhasil, semacam. Perhatikan bahwa skema ini memerlukan beberapa kesalahan untuk menyebabkan output kontrol non-nol (daya menggerakkan resistor). Bahkan, itu berarti bahwa semakin tinggi daya yang dibutuhkan, semakin besar kesalahannya karena itulah satu-satunya cara untuk mendapatkan daya tinggi. Sekarang Anda mungkin mengatakan yang harus Anda lakukan adalah mendongkrak gain sehingga kesalahan dapat diterima bahkan pada daya tinggi. Bagaimanapun, itu cukup banyak dasar untuk bagaimana opamps digunakan di banyak sirkuit. Anda benar, tetapi dunia nyata biasanya tidak akan membiarkan Anda lolos begitu saja. Ini mungkin bekerja untuk beberapa sistem kontrol sederhana, tetapi ketika ada segala macam kerutan halus untuk respons dan ketika itu bisa memakan waktu yang signifikan Anda berakhir dengan sesuatu yang berosilasi ketika keuntungannya terlalu tinggi. Dengan kata lain, sistem menjadi tidak stabil. tetapi ketika ada segala macam kerutan halus pada respons dan ketika dibutuhkan waktu yang signifikan Anda berakhir dengan sesuatu yang berosilasi ketika keuntungannya terlalu tinggi. Dengan kata lain, sistem menjadi tidak stabil. tetapi ketika ada segala macam kerutan halus pada respons dan ketika dibutuhkan waktu yang signifikan Anda berakhir dengan sesuatu yang berosilasi ketika keuntungannya terlalu tinggi. Dengan kata lain, sistem menjadi tidak stabil.
Apa yang saya jelaskan di atas adalah bagian P (proprotional) dari PID. Sama seperti Anda dapat membuat output sebanding dengan sinyal kesalahan, Anda juga dapat menambahkan istilah proprtional ke turunan waktu dan integral dari kesalahan. Masing-masing sinyal P, I, dan D ini memiliki penguatan terpisah sebelum dijumlahkan untuk menghasilkan sinyal output kontrol.
Saya istilah
Istilah I memungkinkan kesalahan untuk dihapus dari waktu ke waktu. Selama ada kesalahan positif, istilah I akan terus terakumulasi, akhirnya meningkatkan output kontrol ke titik di mana kesalahan keseluruhan hilang. Dalam contoh kita, jika suhu rendah secara konsisten, itu akan terus-menerus meningkatkan daya ke resistor sampai suhu keluaran akhirnya tidak rendah lagi. Semoga Anda bisa melihat ini bisa menjadi tidak stabil bahkan lebih cepat daripada hanya istilah P tinggi. Istilah AI dengan sendirinya dapat dengan mudah menyebabkan overshoot, yang menjadi osilasi dengan mudah.
D istilah
Istilah D terkadang diabaikan. Penggunaan dasar istilah D adalah menambahkan sedikit stabilitas sehingga istilah P dan I bisa lebih agresif. Istilah D pada dasarnya mengatakan Jika saya sudah menuju ke arah yang benar, memberhentikan gas sedikit karena apa yang saya miliki sekarang tampaknya membuat kita di sana .
Tuning PID
Dasar-dasar kontrol PID cukup sederhana, tetapi mendapatkan istilah P, I, dan D tidak tepat. Ini biasanya dilakukan dengan banyak eksperimen dan penyesuaian. Tujuan utamanya adalah untuk mendapatkan sistem secara keseluruhan di mana output merespons secepat mungkin tetapi tanpa overshoot atau dering yang berlebihan, dan tentu saja perlu stabil (tidak mulai berosilasi sendiri). Ada banyak buku yang ditulis pada kontrol PID, bagaimana cara menambahkan sedikit kerutan pada persamaan, tetapi khususnya bagaimana cara "menyetelnya". Tuning mengacu pada meramalkan keuntungan P, I, dan D yang optimal.
Sistem kontrol PID bekerja, dan tentu saja ada banyak pengetahuan dan trik di luar sana untuk membuatnya bekerja dengan baik. Namun, kontrol PID bukan jawaban tepat tunggal untuk sistem kontrol. Orang-orang tampaknya telah lupa mengapa PID dipilih pada awalnya, yang lebih berkaitan dengan hambatan elektronik analog daripada menjadi semacam skema kontrol optimal universal. Sayangnya, terlalu banyak insinyur saat ini menyamakan "sistem kontrol" dengan PID, yang tidak lebih dari reaksi spontan. Itu tidak membuat kontrol PID salah di dunia saat ini, tetapi hanya satu dari banyak cara untuk menyerang masalah kontrol.
Di luar PID
Hari ini, sistem kontrol loop tertutup untuk sesuatu seperti contoh suhu akan dilakukan dalam mikrokontroler. Ini dapat melakukan banyak hal lebih dari sekadar mengambil turunan dan integral dari nilai kesalahan. Dalam sebuah prosesor Anda dapat melakukan pembagian, akar kuadrat, menyimpan sejarah nilai-nilai terbaru, dan banyak lagi. Banyak skema kontrol selain PID dimungkinkan.
Respon impuls
Jadi lupakan keterbatasan elektronik analog dan mundurlah dan pikirkan bagaimana kita dapat mengendalikan sistem yang kembali ke prinsip pertama. Bagaimana jika untuk setiap bagian kecil dari output kontrol, kami tahu apa yang akan dilakukan sistem. Output kontrol kontinu kemudian hanya penjumlahan dari banyak potongan kecil. Karena kita tahu apa hasil dari masing-masing bagian, kita bisa tahu apa hasil dari riwayat keluaran kontrol sebelumnya. Sekarang perhatikan bahwa "sepotong kecil" dari output kontrol cocok dengan kontrol digital. Anda akan menghitung apa yang seharusnya menjadi output kontrol dan mengaturnya, kemudian kembali dan mengukur input lagi, menghitung output kontrol baru dari mereka dan mengaturnya lagi, dll. Anda menjalankan algoritma kontrol dalam satu lingkaran, dan itu mengukur input dan mengatur output kontrol lagi setiap iterasi loop. Input "sampel" pada waktu diskrit, dan output juga diatur ke nilai baru pada interval tetap. Selama Anda dapat melakukan ini dengan cukup cepat, Anda dapat memikirkan hal ini terjadi dalam proses yang berkelanjutan. Dalam kasus pemanasan resistor yang biasanya membutuhkan waktu beberapa menit untuk menyelesaikan, tentu beberapa kali per detik jauh lebih cepat daripada sistem yang secara inheren merespons dengan cara yang berarti sehingga memperbarui output pada katakanlah 4 Hz akan terlihat terus menerus ke sistem. Ini persis sama dengan musik yang direkam secara digital benar-benar mengubah nilai output dalam langkah-langkah terpisah dalam rentang 40-50 kHz dan yang begitu cepat sehingga telinga kita tidak dapat mendengarnya dan terdengar terus menerus seperti aslinya. Anda dapat memikirkan hal ini terjadi dalam proses yang berkelanjutan. Dalam kasus pemanasan resistor yang biasanya membutuhkan waktu beberapa menit untuk menyelesaikan, tentu beberapa kali per detik jauh lebih cepat daripada sistem yang secara inheren merespons dengan cara yang berarti sehingga memperbarui output pada katakanlah 4 Hz akan terlihat terus menerus ke sistem. Ini persis sama dengan musik yang direkam secara digital benar-benar mengubah nilai output dalam langkah-langkah terpisah dalam rentang 40-50 kHz dan yang begitu cepat sehingga telinga kita tidak dapat mendengarnya dan terdengar terus menerus seperti aslinya. Anda dapat memikirkan hal ini terjadi dalam proses yang berkelanjutan. Dalam kasus pemanasan resistor yang biasanya membutuhkan waktu beberapa menit untuk menyelesaikan, tentu beberapa kali per detik jauh lebih cepat daripada sistem yang secara inheren merespons dengan cara yang berarti sehingga memperbarui output pada katakanlah 4 Hz akan terlihat terus menerus ke sistem. Ini persis sama dengan musik yang direkam secara digital benar-benar mengubah nilai output dalam langkah-langkah terpisah dalam rentang 40-50 kHz dan yang begitu cepat sehingga telinga kita tidak dapat mendengarnya dan terdengar terus menerus seperti aslinya. tentu beberapa kali per detik jauh lebih cepat daripada sistem yang secara inheren merespons dengan cara yang berarti bahwa memperbarui output pada katakanlah 4 Hz akan terlihat terus menerus ke sistem. Ini persis sama dengan musik yang direkam secara digital benar-benar mengubah nilai output dalam langkah-langkah terpisah dalam rentang 40-50 kHz dan yang begitu cepat sehingga telinga kita tidak dapat mendengarnya dan terdengar terus menerus seperti aslinya. tentu beberapa kali per detik jauh lebih cepat daripada sistem yang secara inheren merespons dengan cara yang berarti bahwa memperbarui output pada katakanlah 4 Hz akan terlihat terus menerus ke sistem. Ini persis sama dengan musik yang direkam secara digital benar-benar mengubah nilai output dalam langkah-langkah terpisah dalam rentang 40-50 kHz dan yang begitu cepat sehingga telinga kita tidak dapat mendengarnya dan terdengar terus menerus seperti aslinya.
Jadi apa yang bisa kita lakukan jika kita memiliki cara ajaib untuk mengetahui apa yang akan dilakukan sistem dari waktu ke waktu karena sampel kontrol satu sampel? Karena respons kontrol aktual hanyalah sekuens sampel, kita dapat menjumlahkan respons dari semua sampel dan mengetahui seperti apa respons sistem yang dihasilkan. Dengan kata lain, kita dapat memprediksi respons sistem untuk gelombang respons kontrol sembarang.
Itu keren, tetapi hanya memprediksi respons sistem tidak menyelesaikan masalah. Namun, dan ini adalah momen aha, Anda dapat membalik ini dan menemukan output kontrol yang diperlukan untuk mendapatkan respons sistem yang diinginkan. Catatan yang tepat menyelesaikan masalah kontrol, tetapi hanya jika kita entah bagaimana dapat mengetahui respon sistem untuk sampel output kontrol tunggal yang sewenang-wenang.
Jadi Anda mungkin berpikir, itu mudah, berikan saja pulsa besar dan lihat apa fungsinya. Ya, itu akan berhasil secara teori, tetapi dalam praktiknya biasanya tidak. Itu karena setiap sampel kontrol, bahkan yang besar, sangat kecil dalam skema keseluruhan hal-hal yang sistem hampir tidak memiliki respons yang terukur sama sekali. Dan ingat, masing-masing sampel kontrol memiliki menjadi kecil dalam skema hal sehingga urutan sampel kontrol terasa terus menerus ke sistem. Jadi bukan berarti ide ini tidak berfungsi, tetapi dalam praktiknya respons sistem sangat kecil sehingga terkubur dalam kebisingan pengukuran. Pada contoh resistor, memukul resistor dengan 100 W selama 100 ms tidak akan menyebabkan perubahan suhu yang cukup untuk diukur.
Respon langkah
Tapi, masih ada jalan. Sementara menempatkan sampel kontrol tunggal ke dalam sistem akan memberi kita responsnya terhadap sampel individu secara langsung, kita masih dapat menyimpulkannya dengan menempatkan urutan respons kontrol yang diketahui dan dikendalikan ke dalam sistem dan mengukur responsnya terhadap sampel tersebut. Biasanya ini dilakukan dengan meletakkan langkah kontrolApa yang benar-benar kita inginkan adalah respons terhadap blip kecil, tetapi respons terhadap satu langkah hanyalah bagian integral dari itu. Pada contoh resistor, kita dapat memastikan semuanya dalam kondisi stabil pada 0 W, lalu tiba-tiba menyalakan daya dan memasukkan 10 W ke dalam resistor. Itu akan menyebabkan perubahan suhu yang terukur dengan baik pada output pada akhirnya. Turunan dari itu dengan penskalaan yang tepat memberi tahu kita respons terhadap sampel kontrol individu, meskipun kami tidak dapat mengukurnya secara langsung.
Jadi untuk meringkas, kita dapat menempatkan input kontrol langkah ke dalam sistem yang tidak dikenal dan mengukur output yang dihasilkan. Itu disebut langkah respons . Kemudian kita mengambil turunan waktu dari itu, yang disebut respons impuls . Output sistem yang dihasilkan dari sampel input satu kontrol hanyalah respons impuls yang disesuaikan dengan kekuatan sampel kontrol tersebut. Respons sistem terhadap seluruh riwayat sampel kontrol adalah sejumlah respons impuls yang ditambahkan, ditingkatkan, dan miring pada waktunya untuk setiap input kontrol. Operasi terakhir itu banyak muncul dan memiliki nama konvolusi khusus .
Kontrol konvolusi
Jadi sekarang Anda harus dapat membayangkan bahwa untuk setiap set keluaran sistem yang diinginkan, Anda dapat menghasilkan urutan input kontrol untuk menyebabkan output tersebut. Namun, ada gotcha. Jika Anda menjadi terlalu agresif dengan apa yang Anda inginkan dari sistem, input kontrol untuk mencapainya akan membutuhkan ketidakcocokan dengan nilai tinggi dan rendah. Pada dasarnya, semakin cepat Anda mengharapkan sistem merespons, semakin besar nilai kontrol yang diperlukan, di kedua arah. Dalam contoh resistor, Anda dapat secara matematis mengatakan Anda ingin segera pergi ke suhu baru, tetapi itu akan mengambil sinyal kontrol tak terbatas untuk mencapainya. Semakin lambat Anda membiarkan suhu berubah ke nilai baru, semakin rendah daya maksimum yang Anda butuhkan untuk dapat masuk ke resistor. Kerut lain adalah bahwa daya ke resistor kadang-kadang perlu turun juga. Kamu bisa'
Salah satu cara untuk mengatasinya adalah dengan sistem kontrol low pass filter input kontrol pengguna sebelum menggunakannya secara internal. Figur pengguna melakukan apa yang ingin dilakukan pengguna. Biarkan mereka membanting input dengan cepat. Secara internal Anda low pass filter yang untuk melicinkannya dan memperlambatnya ke tercepat Anda tahu Anda bisa menyadari diberi daya maksimum dan minimum Anda dapat dimasukkan ke dalam resistor.
Contoh dunia nyata
Berikut adalah sebagian contoh menggunakan data dunia nyata. Ini dari sistem tertanam dalam produk nyata yang antara lain harus mengontrol beberapa lusin pemanas untuk memelihara berbagai reservoir kimia pada suhu tertentu. Dalam hal ini, pelanggan memilih untuk melakukan kontrol PID (itu yang mereka merasa nyaman dengan), tetapi sistem itu sendiri masih ada dan dapat diukur. Berikut adalah data mentah dari mengemudi salah satu pemanas dengan input langkah. Waktu iterasi loop adalah 500 ms, yang jelas merupakan waktu yang sangat singkat mengingat sistem masih tampak menyelesaikan grafik skala ini setelah 2 jam.
Dalam hal ini Anda dapat melihat pemanas didorong dengan langkah sekitar 0,35 dalam ukuran (nilai "Keluar"). Menempatkan langkah 1.0 penuh dalam waktu yang lama akan menghasilkan suhu yang terlalu tinggi. Offset awal dapat dihapus dan hasilnya diskalakan untuk memperhitungkan langkah input kecil untuk menyimpulkan respon langkah unit:
Dari sini Anda akan berpikir itu hanya akan mengurangi nilai respon langkah berturut-turut untuk mendapatkan respon impuls. Itu benar secara teori, tetapi dalam praktiknya Anda mendapatkan sebagian besar kebisingan pengukuran dan kuantisasi karena sistem berubah sangat sedikit dalam 500 ms:
Perhatikan juga skala kecil dari nilainya. Respon impuls ditampilkan diskalakan oleh 10 6 .
Variasi yang sangat besar antara masing-masing individu atau bahkan beberapa bacaan hanyalah derau, jadi kita dapat memfilter filter rendah ini untuk menghilangkan frekuensi tinggi (derau acak), yang mudah-mudahan memungkinkan kita melihat respons mendasar yang lebih lambat. Berikut ini adalah salah satu upaya:
Itu lebih baik dan menunjukkan benar-benar ada data bermakna yang bisa didapat, tetapi masih terlalu berisik. Berikut adalah hasil yang lebih berguna yang diperoleh dengan lebih banyak penyaringan low pass dari data impuls mentah:
Sekarang ini adalah sesuatu yang kita benar-benar dapat bekerja dengan. Kebisingan yang tersisa kecil dibandingkan dengan sinyal keseluruhan, jadi seharusnya tidak menghalangi. Sinyal tampaknya masih ada cukup banyak utuh. Salah satu cara untuk melihat ini adalah dengan melihat puncak 240 adalah langsung dari pemeriksaan visual cepat dan bola mata memfilter plot sebelumnya.
Jadi sekarang berhenti dan pikirkan tentang apa arti respons impuls ini sebenarnya. Pertama, perhatikan bahwa ini ditampilkan kali 1M, sehingga puncaknya benar-benar 0,000240 dari skala penuh. Ini berarti bahwa secara teori jika sistem didorong dengan pulsa skala penuh tunggal untuk satu dari slot waktu 500 ms saja, ini akan menjadi suhu yang dihasilkan relatif untuk itu dibiarkan saja. Kontribusi dari setiap periode 500 ms sangat kecil, karena masuk akal secara intuitif. Ini juga mengapa mengukur respons impuls secara langsung tidak berfungsi, karena 0,000240 skala penuh (sekitar 1 bagian dalam 4000) berada di bawah tingkat kebisingan kami.
Sekarang Anda dapat dengan mudah menghitung respons sistem untuk sinyal input kontrol apa pun. Untuk setiap sampel kontrol keluaran 500 ms, tambahkan salah satu dari tanggapan impuls ini yang diskalakan oleh ukuran sampel kontrol itu. Waktu 0 dari kontribusi respons impuls terhadap sinyal output sistem akhir adalah pada saat sampel kontrolnya. Oleh karena itu sinyal keluaran sistem adalah suksesi dari respons impuls ini yang diimbangi oleh 500 ms satu sama lain, masing-masing ditingkatkan ke tingkat sampel kontrol pada waktu itu.
Respons sistem adalah konvolusi input kontrol dengan respons impuls ini, dihitung setiap sampel kontrol, yang setiap 500 ms dalam contoh ini. Untuk membuat sistem kontrol dari ini, Anda bekerja mundur untuk menentukan input kontrol yang menghasilkan output sistem yang diinginkan.
Respon impuls ini masih cukup berguna bahkan jika Anda ingin melakukan PID klasik. Tuning PID kontroler membutuhkan banyak eksperimen. Setiap iterasi akan mengambil satu atau dua jam pada sistem nyata, yang akan membuat tala berulang sangat sangat lambat. Dengan respon impuls, Anda dapat mensimulasikan respon sistem pada komputer dalam sepersekian detik. Sekarang Anda dapat mencoba nilai-nilai PID baru secepat Anda dapat mengubah dan tidak perlu menunggu satu atau dua jam untuk sistem nyata menunjukkan respon. Nilai akhir harus tentu saja selalu diperiksa pada sistem nyata, tetapi sebagian besar pekerjaan dapat dilakukan dengan simulasi di sebagian kecil dari waktu. Inilah yang saya maksud dengan "Anda dapat menggunakan ini sebagai dasar simulasi untuk menemukan parameter untuk tua kontrol PID kuno" di bagian Anda dikutip dalam pertanyaan Anda.