Satuan 5 / 9

Algoritma Kontrol: Penyetelan yang Didukung PID dan AI

Keuntungan:

  • Kemampuan untuk menjelaskan dan menerapkan istilah P, I, D dan efek pengontrol PID ke AI dengan konteks yang tepat
  • Kemampuan untuk melakukan Ziegler-Nichols dan metode penyetelan eksperimental selangkah demi selangkah dengan bantuan AI
  • Kemampuan untuk mengenali dan menghilangkan jebakan PID seperti penyelesaian integral, kebisingan turunan dalam rekomendasi AI

Menjaga suhu oven tetap konstan, menggerakkan kecepatan motor pada nilai yang diinginkan, menyeimbangkan sudut drone; Inti dari semuanya adalah algoritma kontrol. Yang paling umum adalah pengontrol PID, yang merupakan tulang punggung industri. PID; Ini sederhana, kuat dan bekerja pada berbagai masalah. Namun "sederhana" tidak berarti "mudah disetel": PID yang disetel secara tidak tepat akan berosilasi, melampaui batas, lambat, atau menjadi tidak stabil sepenuhnya. Kecerdasan buatan adalah asisten yang berharga di sini: ia menjelaskan istilah-istilah PID, memandu metode penyetelan, mendiagnosis kesalahan umum, dan menulis kode penyetelan. Namun, penyesuaian akhir dilakukan dengan melihat perilaku fisik sistem Anda dan keputusan stabilitas berada di tangan teknisi. Dalam unit ini kami membahas cara memasang, menyetel, dan memverifikasi perangkap PID dengan AI.

Tiga Ketentuan PID

PID merespons sinyal kesalahan (e = target − terukur) dalam tiga cara:

istilah

Apa yang dia lihat?

Efek

secara ekstrim

P (proporsional)

kesalahan saat ini

respon cepat

Osilasi, kesalahan permanen

saya (integral)

Akumulasi kesalahan masa lalu

Mereset kesalahan permanen

overshoot, penyelesaian, osilasi

D (turunan)

Tingkat perubahan kesalahan

Redaman mengurangi overshoot

Perkuat kebisingan

Ringkasan verbal: P menjawab pertanyaan “seberapa jauh saya sekarang”, I “sudah berapa lama saya pergi”, D “seberapa cepat saya mendekat”. Pengontrol yang baik menyeimbangkan ketiganya.

kelas PID: def __init__(self, Kp, Ki, Kd, output_min=-100, output_max=100): self.Kp, self.Ki, self.Kd = Kp, Ki, Kd self.out_min, self.out_max = output_min, output_max self.integral = 0.0 self.previous_error = 0.0 def hitung(self, target, terukur, dt): error = target - terukur # P p = self.Kp * error # I -- self.integral dengan perlindungan penyelesaian += error * dt i = self.Ki * self.integral # D -- turunan noise sensitif d = self.Kd * (error - self.previous_error) / dt self.previous_error = error out = p + i + d # Jenuhkan output dan batasi penyelesaian jika output > self.output_max: output = self.out_max self.integral -= error * dt # anti-windup: membatalkan keluaran integral elif < self.output_min: keluaran = self.output_min self.integral -= error * dt mengembalikan keluaran

Kode ini bukan "PID pelatihan", tetapi kerangka yang mirip dengan logika produksi: kode ini mencakup saturasi keluaran dan anti-penutupan. Banyak PID sederhana yang diberikan oleh AI mengabaikan kedua perlindungan ini; Tanpa mereka, ketika aktuator mencapai batasnya, integral akan membengkak dan sistem akan melampaui batasnya secara tidak terduga.

Tip: Saat meminta AI untuk PID, ucapkan "tambahkan saturasi keluaran dan anti-windup, terapkan turunan pada pengukuran ke suku turunan". Ketiga penambahan ini mengubah PID buku teks menjadi PID lapangan.

Penyelesaian Integral dan Kebisingan Turunan

Dua kendala klasik adalah penyebab paling umum kegagalan PID:

Penutupan integral: Ketika aktuator jenuh (misalnya motor sudah berada pada daya penuh) kesalahan tetap ada dan suku integral terus bertambah. Integral yang meningkat ini menyebabkan overshoot yang besar ketika sistem mencapai target. Solusi: menghentikan atau memutar kembali integral ketika output sudah jenuh (anti-windup, ditunjukkan pada kode di atas).

Kebisingan turunan: Suku D mengambil turunan dari kesalahan; Turunan dari pengukuran kebisingan jauh lebih berisik dan akan menggetarkan aktuator. Solusi: mengambil turunan dari pengukuran (turunan dari pengukuran, bukan kesalahan), menambahkan low pass filter ke suku turunannya.

# Mengurangi noise turunan: turunan pengukuran + filterd_raw = -(diukur - self.previous_measured) / dt sebagai ganti kesalahan

AI pandai mengidentifikasi kendala-kendala ini; Jika Anda mengatakan "PID saya melampaui batas saat mencapai target", ini merekomendasikan penghentian. Namun Anda memverifikasi dengan mengukur apakah perbaikan berhasil di sistem Anda.

Pengaturan dengan Ziegler-Nichols

Metode klasik untuk mencari keuntungan (Kp, Ki, Kd) dari awal adalah Ziegler-Nichols. Esensinya: dimulai hanya dengan P dan meningkatkan Kp hingga sistem mengalami osilasi berkelanjutan; Hitung Kp, Ki, Kd dari tabel dengan penguatan kritis Ku dan periode osilasi Tu pada titik ini.

pengontrol

kp

Ti

Td

hal.

0,5·Ku

hal.i.

0,45·Ku

Tu/1.2

PID

0,6·Ku

Tu/2

Tu/8

Langkah Ziegler-Nichols (rencana dibuat oleh AI):1. Ambil Ki=0, Kd=0. Jalankan saja P.2. PERLAHAN naikkan Kp hingga stabil, osilasi berkelanjutan dimulai.3. Kp ini = Ku (penguatan kritis), periode osilasi = Tu.4. Hitung Kp, Ti, Td dari tabel; Ki = Kp/Ti, Kd = Kp*Td.5. Mulailah dengan nilai-nilai ini, lalu lakukan penyesuaian eksperimental.

Perhatian: Ziegler-Nichols sengaja membawa sistem ke batas stabilitasnya (osilasi berkelanjutan). Ada risiko ketegangan mekanis, arus berlebih, dan bahaya saat melakukan hal ini pada perangkat keras sebenarnya; Jika memungkinkan, lakukan simulasi terlebih dahulu, kemudian bekerja dengan batas daya rendah dan E-stop di perangkat keras. Ku yang disarankan oleh AI adalah titik awal, diukur dan diverifikasi di sistem Anda.

Diagnostik Berbantuan AI

Anda dapat mendiagnosis perilaku PID dengan menjelaskannya kepada AI. Gejala → kemungkinan pemetaan penyebab:

gejala

kemungkinan penyebabnya

Arah yang disarankan AI

duduk lambat

Kp/Ki rendah

meningkatkan kp

Kesalahan permanen

Saya tidak hadir atau sangat rendah

Ki tambah/tambah

Overshoot + osilasi

Kp/Ki tinggi, tidak ada D

Tambah Kd, Kurangi Ki

Aktuator bergetar

kebisingan turunan

Menyaring/mengurangi D

Ketika Anda mencapai batas yang besar

penyelesaian integral

Tambahkan anti-penutupan

Prompt Lemah / Prompt Kuat

LEMAH:"Berikan keuntungan PID."(Sistem yang mana? Bagaimana perilakunya? Apakah ada pengukuran? Angka acak datang.)KUAT:"Saya sedang menyesuaikan PID untuk kontrol kecepatan motor DC. Saat ini, Kp=2, Ki=0.5, Kd=0. Ini melampaui 35% pada input langkah dan ketika mencapai target, ada overshoot kedua yang besar; perlu waktu lama untuk menyelesaikannya. Pengambilan sampel adalah 100 Hz. Sebutkan kemungkinan alasannya dari gejala-gejala ini, yang memperoleh "Sarankan ke arah mana saya harus mengubahnya dan beri tahu saya cara menguji apakah overshoot merupakan penyelesaian integral."

Kasus Mini

Insinyur kontrol Kerem menyesuaikan kontrol suhu ekstruder. Dengan keuntungan yang disarankan oleh AI, sistem mencapai target dengan cepat, namun pada setiap perubahan set, sistem membuat overshoot yang besar dan perlahan-lahan menjadi tenang. Kerem menjelaskan gejalanya pada AI; AI menduga penutupan tidak terpisahkan karena pemanas tetap pada daya penuh (jenuh) untuk sementara waktu. Kerem menambahkan anti-windup ke kode PID dan overshoot berkurang secara signifikan. Tapi sekarang ada sedikit kedipan di stopkontak pemanas; Dia mengaitkan hal ini dengan istilah D yang memperkuat kebisingan sensor suhu dan menambahkan filter low-pass ke turunannya. Terakhir, secara kasar memvalidasi perolehan dengan Ziegler-Nichols dan melakukan penyesuaian eksperimental. AI memiliki diagnosis yang cepat; Namun Kerem memastikan setiap koreksi dengan mengukur respons langkah sebenarnya—apakah penyelesaiannya sudah terkoreksi atau kedipannya hilang, hal itu hanya dapat dilihat secara grafis.

Kesalahan Umum

  • Gagal menambahkan saturasi keluaran dan anti-windup pada PID dan mengalami overshoot yang besar pada batas aktuator.
  • Mengambil turunan dari turunan pengukuran kebisingan dan menggetarkan aktuator.
  • Dengan asumsi dt konstan, sedangkan periode pengambilan sampel bervariasi.
  • Melakukan uji osilasi Ziegler-Nichols pada perangkat keras tanpa tindakan pencegahan keselamatan.
  • Menerima penghasilan yang dihasilkan AI sebagai “final” tanpa verifikasi spesifik sistem.
  • Mengubah penguatan tunggal dengan langkah yang sangat besar dan mendorong sistem ke dalam ketidakstabilan.

Singkatnya

  • PID; Bereaksi dengan P (kesalahan saat ini), I (akumulasi kesalahan), D (tingkat perubahan kesalahan).
  • PID bidang harus mencakup saturasi keluaran, anti-windup, dan filter turunan.
  • Overshoot besar penyelesaian integral, kebisingan turunan menyebabkan getaran aktuator.
  • Ziegler-Nichols mulai memperoleh keuntungan; Hal ini diimplementasikan dengan langkah-langkah keamanan di perangkat keras.
  • AI cepat dalam diagnosis dari gejala hingga penyebab; Koreksi diverifikasi dengan pengukuran.
  • dt sebenarnya diukur; Perubahan pendapatan dilakukan dalam langkah-langkah kecil dan observasi.

Tugas aplikasi

Pilih sistem (motor/pemanas asli atau model orde pertama/kedua sederhana dengan Python) dan minta AI menghasilkan kelas PID dengan saturasi + anti-penutupan. Kemudian: (1) amati perilaku osilasi dengan memulai dari P saja dan meningkatkan Kp, (2) menambahkan Ki untuk menghilangkan kesalahan permanen dan melihat bagaimana overshoot meningkat, (3) membandingkan efek pada overshoot yang besar dengan menyalakan dan mematikan anti-windup. Plot respons langkah pada setiap langkah dan catat perubahan mana yang memperoleh perilaku. Bandingkan keuntungan dari Ziegler-Nichols dengan keuntungan yang Anda temukan sendiri.