Enota 5 / 9

Nadzorni algoritmi: PID in AI podprta nastavitev

Dobički:

  • Sposobnost razlage in uporabe izrazov P, I, D in učinkov PID regulatorja na AI s pravim kontekstom
  • Sposobnost izvajanja Ziegler-Nicholsovih in eksperimentalnih metod uglaševanja korak za korakom s pomočjo AI
  • Sposobnost prepoznavanja in odpravljanja pasti PID, kot je integralno navijanje, izvedeni šum v priporočilih AI

Ohranjanje konstantne temperature pečice, poganjanje hitrosti motorja na želeno vrednost, uravnoteženje kota drona; V središču vseh je nadzorni algoritem. Najpogostejši med njimi je krmilnik PID, ki je hrbtenica industrije. PID; Je preprost, robusten in deluje na širok spekter težav. Vendar "preprost" ne pomeni "lahek za nastavitev": nepravilno nastavljen PID bo nihal, presegel, zamujal ali postal popolnoma nestabilen. Umetna inteligenca je tukaj dragocen pomočnik: razlaga izraze PID, vodi skozi metode uglaševanja, diagnosticira tipične pasti in piše kodo uglaševanja. Vendar pa je končna prilagoditev narejena z opazovanjem fizičnega obnašanja vašega sistema, odločitev o stabilnosti pa pripada inženirju. V tej enoti obravnavamo, kako namestiti, nastaviti in preveriti pasti PID z AI.

Trije pogoji PID

PID se na signal napake (e = cilj − izmerjeno) odzove na tri načine:

termin

Kaj gleda?

Učinek

v skrajnem

P (sorazmerno)

trenutna napaka

hitra odzivnost

Nihanje, stalna napaka

I (integral)

Nakopičena pretekla napaka

Ponastavi trajno napako

overshoot, windup, oscilacija

D (izpeljanka)

Stopnja spremembe napake

Dušenje zmanjša prekoračitev

Ojačajte hrup

Besedni povzetek: P odgovarja na vprašanja "kako daleč sem zdaj", I "kako dolgo me ni bilo", D "kako hitro se približujem". Dober krmilnik uravnoteži vse tri.

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 def izračun(self, target, izmerjeno, dt): napaka = cilj - izmerjeno # P p = self.Kp * napaka # I -- self.integral z zaščito pred vetrom += napaka * dt i = self.Ki * self.integral # D -- občutljivost na izpeljani šum d = self.Kd * (napaka - self.previous_error) / dt self.previous_error = error out = p + i + d # Nasiči izhod in omeji navijanje, če je output > self.output_max: output = self.out_max self.integral -= error * dt # anti-windup: razveljavi integral elif output < self.output_min: output = self.output_min self.integral -= error * dt return output

Ta koda ni "vadbeni PID", ampak okostje, ki je blizu produkcijski logiki: vključuje nasičenost izhoda in zaščito pred previjanjem. Številni preprosti PID-ji, ki jih poda AI, obide ti dve zaščiti; Brez njih bo, ko aktuator doseže svojo mejo, integral nabreknil in sistem bo nepričakovano preskočil.

Nasvet: Ko AI vprašate za PID, recite "dodaj izhodno nasičenost in zaščito pred navijanjem, uporabi izpeljanko pri meritvi za izpeljanko". Ti trije dodatki pretvorijo PID učbenika v polje PID.

Integralni vetrni in izpeljani šum

Dve klasični pasti sta najpogostejša vzroka za okvaro PID:

Integralno navijanje: Ko se aktuator nasiči (npr. motor je že pri polni moči), napaka ostaja in integralni člen še naprej raste. Ta napihnjen integral povzroči veliko prekoračitev, ko sistem doseže cilj. Rešitev: zaustavitev ali povrnitev integrala, ko je izhod nasičen (proti previjanju, prikazano v zgornji kodi).

Izpeljan hrup: Izraz D vzame izpeljanko napake; Izpeljanka hrupne meritve je veliko bolj hrupna in bo vibrirala aktuator. Rešitve: vzamemo izpeljanko iz meritve (izpeljanko meritve namesto napake), dodamo nizkopasovni filter k izpeljanki.

# Zmanjšanje izpeljanega hrupa: izpeljanka meritve + filterd_raw = -(izmerjeno - self.previous_measured) / dt namesto napake

AI je dober pri prepoznavanju teh pasti; Če rečete "Moj PID močno preseže, ko doseže cilj", priporoča navijanje. Z merjenjem pa preverite, ali popravek deluje na vašem sistemu.

Postavitev z Ziegler-Nicholsom

Klasična metoda za iskanje dobičkov (Kp, Ki, Kd) iz nič je Ziegler-Nichols. Njegovo bistvo: začeti samo s P in povečevati Kp, dokler sistem ne preide v trajno nihanje; Iz tabele izračunajte Kp, Ki, Kd s kritičnim ojačanjem Ku in nihajno dobo Tu na tej točki.

krmilnik

kp

Ti

Td

p.

0,5·Ku

P.I.

0,45·Ku

tor/1.2

PID

0,6·Ku

tor/2

tor/8

Ziegler-Nicholsovi koraki (načrt bo izdelal AI):1. Vzemite Ki=0, Kd=0. Samo zaženite P.2. POČASI povečujte Kp, dokler se ne začne stabilno, trajno nihanje.3. Ta Kp = Ku (kritično ojačenje), obdobje nihanja = Tu.4. Iz tabele izračunajte Kp, Ti, Td; Ki = Kp/Ti, Kd = Kp*Td.5. Začnite s temi vrednostmi, nato naredite eksperimentalne popravke.

Pozor: Ziegler-Nichols namenoma spravi sistem na njegovo mejo stabilnosti (trajno nihanje). Obstaja nevarnost mehanske obremenitve, prevelikega toka in nevarnost, če to počnete na pravi strojni opremi; Če je mogoče, to najprej naredite v simulaciji, nato pa delajte z nizko omejitvijo moči in E-stop v strojni opremi. Ku, ki ga predlaga umetna inteligenca, je izhodišče, izmerjen in preverjen v vašem sistemu.

Diagnostika s pomočjo AI

Vedenje PID lahko diagnosticirate tako, da ga opišete AI. Simptom → preslikava možnega vzroka:

simptom

možen vzrok

Smer, ki jo bo predlagal AI

počasno sedenje

Kp/Ki nizek

povečanje kp

Trajna napaka

I je odsoten ali zelo nizek

Ki dodajanje/povečanje

Prekoračitev + nihanje

Kp/Ki visoko, brez D

Dodajte Kd, zmanjšajte Ki

Aktuator se trese

izpeljan hrup

Filtriraj/zmanjšaj D

Ko dosežete velik presežek

integralno navijanje

Dodajte zaščito pred navijanjem

Šibek poziv / močan poziv

WEAK:»Daj povečanja PID.«(Kateri sistem? Kakšno je vedenje? Ali obstajajo meritve? Prihajajo naključne številke.)MOČNO:»PID prilagajam za krmiljenje hitrosti motorja na enosmerni tok. Trenutno je Kp=2, Ki=0,5, Kd=0. Prekorači 35 % pri vhodnem koraku in ko doseže cilj, pride do velike sekundne prekoračitve; traja dolgo časa, da se poravna. Vzorčenje je 100 Hz. Naštejte možne razloge za te simptome, ki pridobijo "Predlagajte, v katero smer naj ga spremenim, in mi povejte, kako naj preizkusim, ali je prekoračitev integralno vetrenje."

Mini etui

Nadzorni inženir Kerem prilagodi temperaturni nadzor ekstruderja. Z izboljšavami, ki jih predlaga umetna inteligenca, sistem hitro doseže cilj, vendar pri vsaki spremembi nastavitev naredi veliko prekoračitev in se počasi umiri. Kerem pojasni simptom AI; AI sumi na integrirano navijanje, ker grelnik nekaj časa ostane pri polni moči (nasičen). Kerem kodi PID doda zaščito pred navijanjem in prekoračitev se znatno zmanjša. Toda zdaj je na izhodu grelnika rahlo utripanje; To pripisuje izrazu D, ki ojača hrup temperaturnega senzorja, in derivatu doda nizkopasovni filter. Na koncu grobo potrdi pridobitve z Ziegler-Nicholsom in izvede poskusno fino uravnavanje. AI ima diagnozo po hitrem postopku; Toda Kerem je potrdil vsak popravek z merjenjem dejanskega odziva na korak – ali je bilo navijanje popravljeno ali je utripanje izginilo, je bilo mogoče videti le grafično.

Pogoste napake

  • PID-u ni uspelo dodati nasičenosti izhoda in preprečevanja navijanja, kar je povzročilo veliko prekoračitev mejne vrednosti aktuatorja.
  • Izvajanje izpeljave hrupne meritve in vibriranje aktuatorja.
  • Ob predpostavki, da je dt konstanten, medtem ko se obdobje vzorčenja spreminja.
  • Izvajanje Ziegler-Nicholsovega preskusa nihanja na strojni opremi brez upoštevanja varnostnih ukrepov.
  • Sprejemanje zaslužka, ustvarjenega z umetno inteligenco, kot »končnega« brez preverjanja, specifičnega za sistem.
  • Spreminjanje posameznega ojačanja z zelo velikimi koraki in potiskanje sistema v nestabilnost.

Če povzamem

  • PID; Reagira s P (trenutna napaka), I (akumulirana napaka), D (stopnja spremembe napake).
  • PID polja mora vključevati izhodno nasičenost, zaščito pred previjanjem in izpeljani filter.
  • Veliko prekoračitev integriranega navijanja, izpeljani hrup povzroča vibracije aktuatorja.
  • Ziegler-Nichols začne pridobivati; Izvaja se z varnostnimi ukrepi v strojni opremi.
  • AI hitro postavi diagnozo od simptoma do vzroka; Popravek se preveri z meritvijo.
  • dt dejansko izmerjeno; Spremembe zaslužka potekajo z majhnimi koraki in opazovanjem.

Aplikacijska naloga

Izberite sistem (pravi motor/grelec ali preprost model prvega/drugega reda v Pythonu) in naj AI ustvari razred PID z nasičenostjo + zaščito pred previjanjem. Nato: (1) opazujte obnašanje nihanja tako, da začnete samo s P in povečate Kp, (2) dodajte Ki, da odpravite trajno napako in si oglejte, kako se prekoračitev poveča, (3) primerjajte učinek na veliko prekoračitev z vklopom in izklopom zaščite pred navijanjem. Narišite odziv koraka pri vsakem koraku in zabeležite, kateri dobiček spremeni katero vedenje. Primerjajte pridobitve Ziegler-Nicholsove z dobički, ki ste jih ugotovili sami.