Unit 5 / 9

Algoritma Kawalan: Penalaan PID dan AI Disokong

Keuntungan:

  • Keupayaan untuk menerangkan dan menggunakan istilah P, I, D dan kesan pengawal PID kepada AI dengan konteks yang betul
  • Keupayaan untuk menjalankan Ziegler-Nichols dan kaedah penalaan percubaan langkah demi langkah dengan bantuan AI
  • Keupayaan untuk mengenali dan menghapuskan perangkap PID seperti penggulungan integral, hingar terbitan dalam pengesyoran AI

Mengekalkan suhu ketuhar tetap, memacu kelajuan motor pada nilai yang dikehendaki, mengimbangi sudut dron; Di tengah-tengah kesemuanya ialah algoritma kawalan. Yang paling biasa ialah pengawal PID, yang merupakan tulang belakang industri. PID; Ia mudah, teguh dan berfungsi pada pelbagai masalah. Tetapi "mudah" tidak bermaksud "mudah ditala": PID yang ditetapkan dengan salah akan berayun, overshoot, duduk lewat atau menjadi tidak stabil sepenuhnya. Kecerdasan buatan ialah pembantu yang berharga di sini: ia menerangkan istilah PID, membimbing melalui kaedah penalaan, mendiagnosis perangkap biasa dan menulis kod penalaan. Walau bagaimanapun, pelarasan akhir dibuat dengan melihat tingkah laku fizikal sistem anda dan keputusan kestabilan adalah milik jurutera. Dalam unit ini kami merangkumi cara memasang, menala dan mengesahkan perangkap PID dengan AI.

Tiga Syarat PID

PID bertindak balas kepada isyarat ralat (e = sasaran − diukur) dalam tiga cara:

istilah

Apa yang dia pandang?

Kesan

secara melampau

P (berkadar)

ralat semasa

respon pantas

Ayunan, ralat kekal

saya (integral)

Ralat lalu terkumpul

Menetapkan semula ralat kekal

overshoot, windup, ayunan

D (derivatif)

Kadar perubahan ralat

Redaman mengurangkan overshoot

Besarkan bunyi

Ringkasan lisan: P menjawab soalan "sejauh mana saya sekarang", saya "berapa lama saya pergi", D "berapa cepat saya menghampiri". Pengawal yang baik mengimbangi ketiga-tiganya.

PID kelas: def __init__(self, Kp, Ki, Kd, output_min=-100, output_maks=100): self.Kp, self.Ki, self.Kd = Kp, Ki, Kd self.out_min, self.out_max = output_min, output_maks diri.integral = 0.0 self.previous_drror = 0.0 self.previous_error, ddef = 0.0 self.previous_error - diukur # P p = diri.Kp * ralat # I -- diri.integral dengan perlindungan penggulungan += ralat * dt i = diri.Ki * diri.integral # D -- derivatif hingar sensitif d = diri.Kd * (ralat - diri.ralat_sebelumnya) / dt diri.sebelum_error = ralat keluar = p + i + d # Tepu keluaran maks. self.out_max self.integral -= ralat * dt # anti-windup: buat asal keluaran integral elif < self.output_min: output = self.output_min self.integral -= ralat * dt pulangan output

Kod ini bukan "PID latihan", tetapi rangka yang hampir dengan logik pengeluaran: ia termasuk ketepuan output dan anti-windup. Banyak PID mudah yang diberikan oleh AI memintas kedua-dua perlindungan ini; Tanpa mereka, apabila penggerak mencapai hadnya, kamiran akan membengkak dan sistem akan melampaui batas tanpa diduga.

Petua: Apabila meminta AI untuk PID katakan "tambah ketepuan output dan anti-windup, gunakan derivatif pada pengukuran kepada istilah terbitan". Tiga tambahan ini menukar PID buku teks kepada PID medan.

Penggulungan Integral dan Bunyi Terbitan

Dua perangkap klasik ialah punca kegagalan PID yang paling biasa:

Penggulungan kamiran: Apabila penggerak tepu (mis. motor sudah berada di kuasa penuh) ralat berterusan dan istilah kamiran terus berkembang. Kamiran melambung ini membawa kepada overshoot yang besar apabila sistem mencapai sasaran. Penyelesaian: menghentikan atau melancarkan kamiran apabila output tepu (anti-windup, ditunjukkan dalam kod di atas).

Bunyi terbitan: Istilah D mengambil terbitan ralat; Terbitan ukuran bising adalah lebih bising dan akan menggetarkan penggerak. Penyelesaian: mengambil terbitan daripada ukuran (terbitan ukuran bukannya ralat), menambah penapis lulus rendah pada istilah terbitan.

# Mengurangkan hingar terbitan: terbitan ukuran + filterd_raw = -(diukur - diri.sebelum_diukur) / dt bukannya ralat

AI pandai mengenal pasti perangkap ini; Jika anda menyebut "PID saya melampaui batas apabila ia mencapai sasaran", ia mengesyorkan penggulungan. Tetapi anda mengesahkan dengan mengukur sama ada pembetulan berfungsi pada sistem anda.

Tetapan dengan Ziegler-Nichols

Kaedah klasik untuk mencari keuntungan (Kp, Ki, Kd) dari awal ialah Ziegler-Nichols. Intipatinya: bermula hanya dengan P dan meningkatkan Kp sehingga sistem masuk ke ayunan berterusan; Kira Kp, Ki, Kd daripada jadual dengan keuntungan genting Ku dan tempoh ayunan Tu pada ketika ini.

pengawal

kp

Ti

Td

P.

0.5·Ku

P.I.

0.45·Ku

Tu/1.2

PID

0.6·Ku

Tu/2

Tu/8

Langkah Ziegler-Nichols (rancangan untuk dibuat oleh AI):1. Ambil Ki=0, Kd=0. Jalankan P.2 sahaja. Naikkan Kp secara perlahan-lahan sehingga stabil, ayunan mampan bermula.3. Kp ini = Ku (keuntungan kritikal), tempoh ayunan = Tu.4. Kira Kp, Ti, Td daripada jadual; Ki = Kp/Ti, Kd = Kp*Td.5. Mulakan dengan nilai ini, kemudian buat tweak percubaan.

Awas: Ziegler-Nichols sengaja membawa sistem ke had kestabilannya (ayunan berterusan). Terdapat risiko ketegangan mekanikal, arus lebihan dan bahaya apabila melakukan ini pada perkakasan sebenar; Jika boleh, lakukan dalam simulasi dahulu, kemudian gunakan had kuasa rendah dan E-stop dalam perkakasan. Ku yang dicadangkan oleh AI adalah titik permulaan, ia diukur dan disahkan dalam sistem anda.

Diagnostik Berbantukan AI

Anda boleh mendiagnosis tingkah laku PID dengan menerangkannya kepada AI. Gejala → pemetaan sebab yang mungkin:

gejala

sebab yang mungkin

Arah yang akan dicadangkan oleh AI

lambat duduk

Kp/Ki rendah

naikkan kp

Ralat kekal

Saya tidak hadir atau sangat rendah

Ki tambah/tambah

Overshoot + ayunan

Kp/Ki tinggi, tiada D

Tambah Kd, Kurangkan Ki

Penggerak bergegar

bunyi terbitan

Tapis/kurangkan D

Apabila anda mencapai besar melebihi

penggulungan integral

Tambah anti-windup

Gesaan Lemah / Gesaan Kuat

LEMAH:"Berikan keuntungan PID."(Sistem yang manakah? Bagaimana kelakuannya? Adakah terdapat sebarang ukuran? Nombor rawak datang.)KUAT:"Saya sedang melaraskan PID untuk kawalan kelajuan motor DC. Pada masa ini, Kp=2, Ki=0.5, Kd=0. Ia melebihi 35% pada input langkah dan apabila ia mencapai sasaran yang lama, terdapat masa yang lama untuk menyelesaikan Samp. 100 Hz Senaraikan sebab yang mungkin daripada simptom ini, yang mendapat "Cadangkan arah mana saya harus mengubahnya dan beritahu saya cara untuk menguji sama ada overshoot adalah penggulungan penting."

Mini Case

Jurutera kawalan Kerem melaraskan kawalan suhu penyemperit. Dengan keuntungan yang dicadangkan oleh AI, sistem mencapai sasaran dengan cepat, tetapi pada setiap perubahan set ia membuat overshoot yang besar dan perlahan-lahan menetap. Kerem menerangkan gejala kepada AI; AI mengesyaki penggulungan integral kerana pemanas kekal pada kuasa penuh (tepu) untuk seketika. Kerem menambah anti-windup pada kod PID dan overshoot berkurangan dengan ketara. Tetapi kini terdapat sedikit kelipan pada saluran keluar pemanas; Dia mengaitkan ini dengan istilah D yang menguatkan hingar sensor suhu dan menambah penapis laluan rendah kepada terbitan. Akhir sekali, ia secara kasar mengesahkan keuntungan dengan Ziegler-Nichols dan melakukan penalaan halus eksperimen. AI mempunyai diagnosis pantas; Tetapi Kerem mengesahkan setiap pembetulan dengan mengukur tindak balas langkah sebenar—sama ada penggulungan telah dibetulkan atau kelipan hilang, ia hanya boleh dilihat secara grafik.

Kesilapan Biasa

  • Gagal menambah ketepuan output dan anti-windup pada PID dan mengalami overshoot besar dalam had penggerak.
  • Mengambil terbitan daripada terbitan ukuran bising dan menggetarkan penggerak.
  • Dengan mengandaikan dt adalah malar, manakala tempoh pensampelan berbeza-beza.
  • Melakukan ujian ayunan Ziegler-Nichols pada perkakasan tanpa langkah keselamatan.
  • Menerima pendapatan yang dijana AI sebagai "akhir" tanpa pengesahan khusus sistem.
  • Menukar satu keuntungan dengan langkah yang sangat besar dan mendorong sistem ke dalam ketidakstabilan.

Secara ringkasnya

  • PID; Ia bertindak balas dengan P (ralat semasa), I (ralat terkumpul), D (kadar perubahan ralat).
  • PID medan harus termasuk ketepuan output, penapis anti-windup dan terbitan.
  • Penggulungan bersepadu besar overshoot, hingar terbitan menyebabkan getaran penggerak.
  • Ziegler-Nichols memberi permulaan untuk mendapat; Ia dilaksanakan dengan langkah keselamatan dalam perkakasan.
  • AI adalah pantas dalam diagnosis daripada gejala kepada punca; Pembetulan disahkan melalui pengukuran.
  • dt diukur sebenar; Perubahan pendapatan dibuat dalam langkah kecil dan pemerhatian.

Tugasan permohonan

Pilih sistem (motor/pemanas sebenar atau model tertib pertama/kedua yang mudah dalam Python) dan minta AI menjana kelas PID dengan ketepuan + anti-windup. Kemudian: (1) perhatikan tingkah laku ayunan dengan bermula dengan P sahaja dan tambah Kp, (2) tambah Ki untuk menghapuskan ralat kekal dan lihat bagaimana overshoot meningkat, (3) bandingkan kesan pada overshoot besar dengan menghidupkan dan mematikan anti-windup. Plotkan tindak balas langkah pada setiap langkah dan catatkan yang mendapat perubahan tingkah laku. Bandingkan keuntungan daripada Ziegler-Nichols dengan keuntungan yang anda dapati sendiri.