Contents — find the section you need

Kontrol PID (proporsional-integral-derivatif) mengubah input setelah membandingkan referensi dengan pengukuran. Kontrol ini digunakan pada pemanas, penggerak, loop aliran, sambungan robot, dan pesawat terbang karena dapat bekerja dengan baik tanpa model plant yang sempurna. Kesederhanaannya yang tampak menipu: pengontrol yang tidak memiliki satuan yang dinyatakan, batas output, kebijakan waktu, validasi sensor, atau jalur berhenti aman bukanlah pengontrol yang dapat diterapkan. Itu adalah persamaan yang menunggu untuk gagal.

Artikel ini dimulai dengan kesimpulan praktis, kemudian membangun intuisi, aliran sinyal dan persamaan, penyetelan Ziegler-Nichols, batasan dan keamanan, serta contoh perangkat lunak terkini. Untuk batasan node, waktu, dan perangkat keras di sekitar pengontrol robot, lihat Pengantar ROS 2. Untuk mengapa penundaan lokalisasi dan lompatan juga merupakan masalah kontrol, lihat Pengantar Visual SLAM.

Input PID adalah kesalahan e=r-y, dan outputnya adalah perintah u. P bereaksi terhadap kesalahan saat ini, I menghilangkan offset yang terus-menerus, dan D menambahkan redaman dari laju perubahan.

Kesimpulan singkat

  • P merespons kesalahan saat ini; I menghilangkan kesalahan yang telah bertahan; D memberikan redaman dari laju perubahan. Mulailah dengan P, rancang batasnya, tambahkan I hanya ketika offset tetap stabil, dan tambahkan D yang difilter hanya ketika memiliki tujuan yang jelas.
  • Implementasi harus membatasi perintah dan laju perintah. Saturasi tanpa anti-windup membuat integrator menyimpan permintaan yang tidak dapat dipenuhi oleh aktuator.

  • Diferensiasikan pengukuran yang difilter di sebagian besar sistem fisik, daripada mendiferensiasikan kesalahan referensi yang seperti langkah. Ini menghindari lonjakan derivatif dan mengurangi sensitivitas terhadap perubahan referensi.

  • PID seringkali merupakan solusi terbaik untuk satu loop cepat dengan penundaan yang moderat. Optimasi yang lebih canggih tidak menghilangkan kebutuhan akan loop dalam yang cepat, teramati, dan aman.

Intuisi: Tiga operator mengamati satu kesalahan

Misalkan suhu ruangan berada di bawah suhu referensi. Operator P berkata, “suhunya lima derajat lebih rendah sekarang, jadi berikan panas sekarang.” Operator I berkata, “suhunya tetap rendah untuk waktu yang lama, jadi panas dasar tidak memadai.” Operator D berkata, “suhu sudah naik dengan cepat; kurangi panas sebelum melebihi batas.” Jumlah ketiganya dapat memberikan respons cepat, penolakan terhadap kehilangan panas konstan, dan mengurangi overshoot.

Analogi ini mengabaikan fakta-fakta yang menentukan apakah loop tersebut aman: daya pemanas terbatas, termometer bising, dan panas membutuhkan waktu untuk merambat. Derivatif dapat salah mengartikan kebisingan sebagai gerakan; integrator dapat terus mengakumulasi sementara pemanas sudah jenuh. Oleh karena itu, desain PID dimulai dengan apa yang diukur dan apa yang dapat diperintahkan dengan aman—bukan dengan nilai gain.

Alur sinyal: pengontrol hanya terdiri dari satu blok

Diagram 1 · Use the button to switch views
PID closed-loop signal flowReference, summing junction, PID, saturation, plant, sensor feedback and disturbance are connected in a closed loop.reference rΣPIDP + I + Dlimitssaturationplant Gmotor / thermal / robotsensor H, sampling, delay and noise are part of feedbackdisturbance d

Diagram: Duskcoil, konseptual dan bukan diagram pengkabelan terukur. Kalibrasi, penundaan transportasi, komunikasi, dan loop dalam aktuator termasuk dalam jalur sinyal nyata.

Jika plant adalah G dan sensor atau estimator adalah H, hanya membuat controller C lebih mampu tidak menghilangkan penundaan, saturasi, atau kesalahan di G dan H. Misalnya, ketika robot mobile menggunakan lokalisasi SLAM untuk pelacakan, lompatan dan latensi dalam estimasi muncul pada PID sebagai noise dan gangguan pengukuran. Kerangka koordinat, sinkronisasi waktu, dan relokalisasi yang dibahas dalam Visual SLAM Primer adalah bagian dari masalah kontrol di sekitar pengontrol.

Persamaan dan satuan dasar

Misalkan r adalah referensi, y adalah pengukuran, e=r-y, dan u_{ff} adalah perintah umpan maju. PID kontinu paralel adalah

u(t)=u_{ff}(t)+K_Pe(t)+K_I\int_0^t e(\tau)d\tau+K_D\frac{d e(t)}{dt}

K_P memiliki satuan u/e, K_I memiliki satuan u/(e\cdot s), dan K_D memiliki satuan u\cdot s/e. Satuan-satuan ini tidak selalu tanpa dimensi. Mengubah derajat menjadi radian, membalikkan encoder, atau Mencampurkan stempel waktu milidetik dengan penguatan berbasis detik mengubah loop. Catat satuan, tanda, frame, dan kebijakan pembaruan referensi sebelum penyetelan.

Dengan periode sampel T_s, implementasi diskrit dasar mempertahankan keadaan integral I_k dan turunan perbedaan D_k:

I_k=I_{k-1}+T_s e_k,\qquad D_k=\frac{e_k-e_{k-1}}{T_s}

Pengontrol kemudian menghitung u_k=K_Pe_k+K_II_k+K_DD_k. Bentuk ini sudah mengungkap pertanyaan teknik penting: apakah T_s diukur atau diasumsikan; apa yang terjadi ketika pesan terlambat; apa yang dilakukan dengan sampel yang usang; dan apakah pengontrol berjalan pada laju deterministik? Turunan terfilter umum pada pengukuran menggunakan

koefisien \alpha=\tau_f/(\tau_f+T_s) dan

D_k=\alpha D_{k-1}+(1-\alpha)\frac{y_{k-1}-y_k}{T_s}

Ini menghindari lonjakan turunan yang disebabkan oleh langkah referensi. Filternya juga menambahkan penundaan fase, sehingga pemfilteran tidak dapat mengkompensasi sistem yang sampelnya buruk atau secara mekanis longgar.

Memahami P, I, dan D satu per satu

Meningkatkan P biasanya meningkatkan respons langsung dan penolakan gangguan, hingga penundaan dan dinamika plant mengubahnya menjadi overshoot atau osilasi. I menghilangkan offset konstan seperti gravitasi, gesekan, atau kehilangan panas, tetapi I yang terlalu besar mengintegrasikan permintaan sebelum plant merespons. D dapat memberikan peredaman tetapi memperkuat kuantisasi encoder, getaran, dan jitter estimator. Dalam kaskade posisi-kecepatan, setel loop kecepatan yang cepat dan stabil terlebih dahulu, kemudian loop posisi. Jangan masukkan setiap kesalahan ke dalam satu PID yang lambat.

Saturasi dan anti-windup

Perintah fisik mematuhi u_{min}\leq u\leq u_{max}. Biarkan u^* menjadi perintah tak jenuh yang dihitung dan u=\operatorname{sat}(u^*) menjadi perintah yang dikirim. Jika I terus terakumulasi sementara aktuator terkunci pada batas, loop dapat tetap terkunci setelah kesalahan berbalik. Ini adalah windup integrator: integrator terus mengakumulasi e bahkan Meskipun u tidak dapat mengikutinya, dan keadaan integral I_k kemudian menunda pemulihan.

Integrasi bersyarat membekukan integrator ketika output jenuh dan integral akan mendorong lebih jauh ke dalam kejenuhan. Perhitungan balik adalah alternatif yang lebih halus:

I_k=I_{k-1}+T_se_k+K_{aw}(u_k-u_k^*)

Di sini I_k adalah keadaan kesalahan terintegrasi, sehingga K_{aw} memiliki satuan kesalahan per perintah. Beberapa implementasi menyimpan K_I I_k sebagai output integral dan menggunakan 1/T_t (waktu pelacakan invers) sebagai gantinya; dokumentasikan satuan dan persamaan yang dipilih. Ketidaksesuaian kejenuhan diumpankan kembali ke integrator. K_{aw} mengatur kecepatan koreksi tersebut. Penjepit integrator, landasan referensi, dan transfer manual/otomatis tanpa guncangan adalah tindakan pelengkap. Anti-windup bukanlah hiasan kinerja; ini membuat pemulihan setelah kejadian yang tidak dapat dihindari Batas yang dapat diprediksi.

Gejala Mekanisme yang mungkin Periksa terlebih dahulu Respons tipikal
Respons lambat atau offset P terlalu rendah, gangguan konstan tanda, satuan, batas keluaran naikkan P secara bertahap; tambahkan I sedikit jika diperlukan
Osilasi atau overshoot P/I terlalu tinggi, penundaan periode loop, penundaan, jejak sensor kurangi P/I; gunakan ramp referensi
Tidak pulih dari batas windup integrator log perintah dan integral I kondisional, clamp, perhitungan balik
Kick pada langkah setpoint turunan kesalahan jalur input D turunan pada pengukuran
Chatter pada kecepatan rendah gesekan, kuantisasi, backlash encoder dan mekanika loop kecepatan dalam, kompensasi, filter

Penyetelan, termasuk Ziegler–Nichols

Prosedur Ziegler–Nichols loop tertutup menetapkan I dan D ke nol, menaikkan P ke penguatan osilasi berkelanjutan K_u , mengukur periode T_u , kemudian menggunakan titik awal PID klasik

K_P=0.6K_u,\quad T_i=0.5T_u,\quad T_d=0.125T_u,

di mana K_I=K_P/T_i dan K_D=K_PT_d . Pendekatan osilasi berkelanjutan secara sengaja dapat tidak dapat diterima pada proses termal, kendaraan, sistem tekanan, atau robot di dekat manusia. Ini adalah heuristik historis, bukan izin untuk menguji pada batas stabilitas.

Alur kerja yang lebih aman menggunakan simulasi atau uji langkah amplitudo rendah untuk memperkirakan penguatan statis, penundaan, dan konstanta waktu; mengaktifkan batasan dan logika berhenti terlebih dahulu; menyetel P; menambahkan I hanya untuk mengatasi offset yang diamati; kemudian menambahkan D yang difilter hanya untuk mengatasi kebutuhan redaman yang terukur. Uji pelacakan referensi dan penolakan gangguan secara terpisah. Catat arus puncak, suhu, kecepatan, jarak berhenti, waktu saturasi, dan keadaan integral untuk setiap perubahan.

Batasan dan keselamatan berada di luar persamaan PID

Lakukan Jangan jadikan output PID sebagai fungsi keselamatan. Gunakan penghentian darurat independen, perlindungan arus berlebih/suhu berlebih/tekanan berlebih, batas perjalanan, pengawas (watchdog), dan perintah aman yang ditentukan ketika data atau komunikasi hilang. Pengontrol mencoba mencapai referensi; fungsi keselamatan mencegah masuk ke keadaan tidak aman di bawah asumsi kesalahan yang mungkin termasuk kegagalan pengontrol.

Minimal, validasi rentang sampel, stempel waktu, dan kesegaran; batasi referensi, akselerasi, output, dan laju perubahan output; tentukan perilaku reset/tahan integrator; uji pengambilalihan manual tanpa gangguan; dan injeksikan kehilangan sensor, sampel tertunda, restart prosesor, dan perubahan beban. Keberadaan ROS 2 bukanlah bukti pengaturan waktu deterministik atau keselamatan fungsional.

Implementasi dan contoh penelitian saat ini

Kerangka kerja ros2_control memisahkan antarmuka perangkat keras, manajemen pengontrol, dan pengontrol, serta mendokumentasikan rantai pengontrol dan pengontrol PID. Dokumentasi resminya dan halaman pengontrol PID mengekspos penguatan, penjepit, opsi anti-windup, referensi, keadaan terukur, dan keadaan pengontrol yang dipublikasikan. Ini membuat antarmuka dan keadaan dapat diamati; ini tidak secara otomatis menyetel robot fisik.

Pengontrol industri mewujudkan kekhawatiran yang sama. Siemens mendokumentasikan fungsionalitas PID untuk PLC SIMATIC S7-1200/S7-1500 dalam manual sistem S7-1200. Penelitian memperluas PID dengan adaptasi gesekan dan penundaan, penyetelan berbasis data, dan pembangkitan referensi tingkat tinggi yang dipelajari, sambil mempertahankan loop tingkat rendah yang kecil dan dapat diperiksa di mana itu adalah arsitektur yang lebih aman.

Daftar periksa implementasi

  1. Definisikan variabel terkontrol, perintah, satuan, arah positif, rentang valid, dan laju loop.

  2. Validasi kalibrasi, stempel waktu, keusangan, dan outlier sebelum komputasi kontrol.

  3. Batasi u dan laju perubahannya; uji penghentian darurat independen, pengawas, dan kehilangan komunikasi. perilaku.

  4. Setel dan catat P-only, PI, lalu PID; uji perintah dan gangguan secara terpisah.

  5. Catat referensi, pengukuran, perintah nyata, perintah jenuh, status integral, dan flag kesalahan pada satu clock.

  6. Uji jitter, perubahan beban, restart, kehilangan sensor, dan saturasi aktuator secara sengaja.

  7. Periksa silang topologi ROS 2 dengan ROS 2 Primer dan pengaturan waktu estimator dengan Visual SLAM Primer.

Periksa pemahaman Anda
Bagaimana jika integrasi berlanjut sementara output jenuh?

Aksi integral yang tersimpan dapat menyebabkan overshoot di kemudian hari. Periksa perilaku anti-windup daripada hanya menyesuaikan gain integral saja.

Referensi

Related reading

Explore another aspect of this fieldLab MPC — selesaikan ulang urutan kelengkungan dalam horizon dan batas kemudiExplore another aspect of this fieldLab perbandingan pelacakan jalur — jalankan PP, APP, RPP, Stanley, dan MPC dalam kondisi yang samaExplore another aspect of this fieldLab Pure Pursuit — bandingkan pelacakan jalur lookahead tetap