Yunit 5 / 9

Control Algorithm: PID at AI Supported Tuning

Mga nadagdag:

  • Kakayahang ipaliwanag at ilapat ang mga tuntunin at epekto ng P, I, D ng PID controller sa AI na may tamang konteksto
  • Kakayahang magsagawa ng Ziegler-Nichols at mga eksperimentong paraan ng pag-tune nang sunud-sunod sa tulong ng AI
  • Kakayahang kilalanin at alisin ang mga PID traps tulad ng integral windup, derivative noise sa mga rekomendasyon ng AI

Pagpapanatiling pare-pareho ang temperatura ng oven, pagmamaneho ng bilis ng motor sa nais na halaga, pagbabalanse ng anggulo ng drone; Sa puso ng lahat ng mga ito ay isang control algorithm. Ang pinakakaraniwan sa mga ito ay ang PID controller, na siyang backbone ng industriya. PID; Ito ay simple, matatag at gumagana sa isang malawak na hanay ng mga problema. Ngunit ang "simple" ay hindi nangangahulugang "madaling ibagay": ang isang maling set na PID ay mag-o-oscillate, mag-overshoot, maupo nang huli, o magiging ganap na hindi matatag. Ang artificial intelligence ay isang mahalagang katulong dito: ipinapaliwanag nito ang mga termino ng PID, gumagabay sa mga paraan ng pag-tune, nag-diagnose ng mga tipikal na pitfalls at nagsusulat ng tuning code. Gayunpaman, ang panghuling pagsasaayos ay ginawa sa pamamagitan ng pagtingin sa pisikal na pag-uugali ng iyong system at ang desisyon ng katatagan ay pagmamay-ari ng engineer. Sa unit na ito, saklaw namin kung paano mag-install, mag-tune, at mag-verify ng mga PID traps gamit ang AI.

Tatlong Tuntunin ng PID

Tumutugon ang PID sa signal ng error (e = target − sinusukat) sa tatlong paraan:

termino

Ano ang tinitingnan niya?

Epekto

sa sukdulan

P (proporsyonal)

kasalukuyang error

mabilis na tugon

Oscillation, permanenteng error

ako (integral)

Naipon na nakaraang error

Nire-reset ang permanenteng error

overshoot, windup, oscillation

D (derivative)

Rate ng pagbabago ng error

Binabawasan ng pamamasa ang overshoot

Palakasin ang ingay

Verbal summary: Sumasagot si P sa mga tanong na "gaano ako kalayo ngayon", ako ay "gaano na ako katagal wala", D "gaano ako kabilis lumapit". Ang isang mahusay na controller ay nagbabalanse sa lahat ng tatlo.

class 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 self.revious_error = kalkulasyon - sinusukat # P p = sarili.Kp * error # I -- self.integral na may proteksyon sa windup += error * dt i = self.Ki * self.integral # D -- derivative noise sensitive d = self.Kd * (error - self.previous_error) / dt self.previous_error = error out = p + i + d # Saturate ang output kung_output: p + i + d # Ibuhos ang max na output. self.out_max self.integral -= error * dt # anti-windup: i-undo ang integral elif output < self.output_min: output = self.output_min self.integral -= error * dt return output

Ang code na ito ay hindi isang "training PID", ngunit isang skeleton na malapit sa production logic: kabilang dito ang output saturation at anti-windup. Maraming simpleng PID na ibinigay ng AI ang lumalampas sa dalawang proteksyong ito; Kung wala ang mga ito, kapag ang actuator ay umabot sa limitasyon nito, ang integral ay swell at ang system ay mag-overshoot nang hindi inaasahan.

Tip: Kapag humihiling sa AI para sa PID, sabihing "magdagdag ng saturation ng output at anti-windup, ilapat ang derivative sa pagsukat sa derivative term". Ang tatlong karagdagan na ito ay nagko-convert ng textbook na PID sa field na PID.

Integral Windup at Derivative Noise

Dalawang klasikong pitfalls ang pinakakaraniwang sanhi ng pagkabigo ng PID:

Integral windup: Kapag nabusog ang actuator (hal. ang motor ay nasa buong lakas na) nagpapatuloy ang error at patuloy na lumalaki ang integral term. Ang napalaki na integral na ito ay humahantong sa isang malaking overshoot kapag naabot ng system ang target. Solusyon: ihinto o i-roll back ang integral kapag saturated ang output (anti-windup, ipinapakita sa code sa itaas).

Derivative noise: Ang D term ay tumatagal ng derivative ng error; Ang derivative ng isang maingay na pagsukat ay mas maingay at mag-vibrate sa actuator. Mga solusyon: pagkuha ng derivative mula sa pagsukat (derivative ng pagsukat sa halip na error), pagdaragdag ng low pass na filter sa derivative na termino.

# Pagbabawas ng derivative noise: measurement derivative + filterd_raw = -(measured - self.previous_measured) / dt sa halip na error

Ang AI ay mahusay sa pagtukoy sa mga pitfalls na ito; Kung sasabihin mong "Labis na nag-overshoot ang aking PID kapag naabot nito ang target", inirerekomenda nito ang pagwawakas. Ngunit ibe-verify mo sa pamamagitan ng pagsukat kung gumagana ang pag-aayos sa iyong system.

Setting kasama si Ziegler-Nichols

Ang isang klasikong paraan para sa paghahanap ng mga nadagdag (Kp, Ki, Kd) mula sa simula ay ang Ziegler-Nichols. Ang kakanyahan nito: nagsisimula lamang sa P at pagtaas ng Kp hanggang sa mapunta ang sistema sa patuloy na oscillation; Kalkulahin ang Kp, Ki, Kd mula sa talahanayan na may kritikal na nakuha na Ku at ang oscillation period na Tu sa puntong ito.

controller

kp

Ti

Td

P.

0.5·Ku

P.I.

0.45·Ku

Tu/1.2

PID

0.6·Ku

Tu/2

Tu/8

Mga hakbang ng Ziegler-Nichols (planong gagawin ng AI):1. Kunin ang Ki=0, Kd=0. Patakbuhin lang ang P.2. Dahan-dahang taasan ang Kp hanggang sa stable, magsisimula ang sustained oscillation.3. Itong Kp = Ku (kritikal na pakinabang), panahon ng oscillation = Tu.4. Kalkulahin ang Kp, Ti, Td mula sa talahanayan; Ki = Kp/Ti, Kd = Kp*Td.5. Magsimula sa mga halagang ito, pagkatapos ay gumawa ng mga pang-eksperimentong pag-aayos.

Babala: Sinadya ni Ziegler-Nichols na dinadala ang system sa limitasyon ng katatagan nito (sustained oscillation). May panganib ng mechanical strain, overcurrent at panganib kapag ginagawa ito sa totoong hardware; Kung maaari, gawin muna ito sa simulation, pagkatapos ay gumana sa mababang limitasyon ng kapangyarihan at E-stop sa hardware. Ang Ku na iminungkahi ng AI ay isang panimulang punto, ito ay sinusukat at na-verify sa iyong system.

AI-Assisted Diagnostics

Maaari mong i-diagnose ang gawi ng PID sa pamamagitan ng paglalarawan nito sa AI. Sintomas → posibleng sanhi ng pagmamapa:

sintomas

posibleng dahilan

Ang direksyon na imumungkahi ng AI

mabagal na pag-upo

Mababa ang Kp/Ki

dagdagan ang kp

Permanenteng error

Wala ako o napakababa

Ki add/increase

Overshoot + oscillation

Mataas ang Kp/Ki, walang D

Magdagdag ng Kd, Bawasan ang Ki

Nanginginig ang actuator

derivative na ingay

Salain/bawas D

Kapag naabot mo ang malaking lampasan

integral windup

Magdagdag ng anti-windup

Mahina Prompt / Malakas na Prompt

MAHINA:"Ibigay ang PID gains."(Aling sistema? Paano ang pag-uugali? Mayroon bang anumang mga sukat? Dumating ang mga random na numero.) MALAKAS:"Ina-adjust ko ang PID para sa kontrol ng bilis ng motor ng DC. Sa kasalukuyan, Kp=2, Ki=0.5, Kd=0. Lumalampas ito ng 35% sa input ng hakbang at kapag naabot nito ang target, nangangailangan ng isang malaking segundong oras upang ma-settle. 100 Hz Ilista ang mga posibleng dahilan mula sa mga sintomas na ito, na nakakuha ng "Magmungkahi kung aling direksyon ang dapat kong baguhin at sabihin sa akin kung paano subukan kung ang overshoot ay isang integral na windup."

Mini Case

Inaayos ng control engineer na si Kerem ang temperature control ng isang extruder. Sa mga pakinabang na iminungkahi ng AI, mabilis na naaabot ng system ang target, ngunit sa bawat pagbabago ng hanay ay gumagawa ito ng malaking overshoot at dahan-dahang bumababa. Ipinaliwanag ni Kerem ang sintomas sa AI; Pinaghihinalaan ng AI ang integral windup dahil ang heater ay nananatiling nasa buong lakas (saturated) nang ilang sandali. Ang Kerem ay nagdaragdag ng anti-windup sa PID code at ang overshoot ay bumaba nang malaki. Ngunit ngayon ay may bahagyang pagkurap sa labasan ng pampainit; Iniuugnay niya ito sa terminong D na nagpapalakas sa ingay ng sensor ng temperatura at nagdaragdag ng low-pass na filter sa derivative. Sa wakas, halos pinapatunayan nito ang mga nadagdag sa Ziegler-Nichols at nagsasagawa ng pang-eksperimentong fine-tuning. Ang AI ay may mabilis na sinusubaybayang diagnosis; Ngunit kinumpirma ni Kerem ang bawat pagwawasto sa pamamagitan ng pagsukat sa aktwal na tugon ng hakbang—kung ang windup ay naitama o nawala ang pagkutitap, makikita lamang ito sa graphical na paraan.

Mga Karaniwang Pagkakamali

  • Nabigong magdagdag ng output saturation at anti-windup sa PID at nakakaranas ng malaking overshoot sa limitasyon ng actuator.
  • Kinukuha ang derivative mula sa derivative ng maingay na pagsukat at vibrating ang actuator.
  • Ipagpalagay na ang dt ay pare-pareho, samantalang ang panahon ng sampling ay nag-iiba.
  • Pagsasagawa ng Ziegler-Nichols oscillation test sa hardware nang walang pag-iingat sa kaligtasan.
  • Pagtanggap ng mga kita na binuo ng AI bilang "pangwakas" nang walang pag-verify na partikular sa system.
  • Pagbabago ng isang pakinabang na may napakalaking hakbang at pagtulak sa system sa kawalang-tatag.

Sa buod

  • PID; Ito ay tumutugon sa P (kasalukuyang error), I (naipon na error), D (rate ng pagbabago ng error).
  • Dapat kasama sa field PID ang saturation ng output, anti-windup at derivative na filter.
  • Integral windup large overshoot, derivative noise nagdudulot ng actuator vibration.
  • Ziegler-Nichols ay nagbibigay ng simula upang makakuha; Ito ay ipinatupad na may mga hakbang sa seguridad sa hardware.
  • Ang AI ay mabilis sa diagnosis mula sa sintomas hanggang sa sanhi; Ang pagwawasto ay napatunayan sa pamamagitan ng pagsukat.
  • dt aktwal na sinusukat; Ang mga pagbabago sa kita ay ginagawa sa maliliit na hakbang at pagmamasid.

Gawain ng aplikasyon

Pumili ng system (tunay na motor/heater o isang simpleng first/second order na modelo sa Python) at hayaan ang AI na bumuo ng PID class na may saturation + anti-windup. Pagkatapos: (1) obserbahan ang gawi ng oscillation sa pamamagitan ng pagsisimula sa P lamang at pagtaas ng Kp, (2) idagdag ang Ki upang maalis ang permanenteng error at makita kung paano tumataas ang overshoot, (3) ihambing ang epekto sa malaking overshoot sa pamamagitan ng pag-on at off ng anti-windup. I-plot ang hakbang na tugon sa bawat hakbang at tandaan kung alin ang nakakakuha ng mga pagbabago kung aling pag-uugali. Ikumpara ang mga natamo mula sa Ziegler-Nichols sa mga natamo mo mismo.