Dobici:
- Sposobnost objašnjenja i primjene pojmova P, I, D i učinaka PID regulatora na AI s pravim kontekstom
- Sposobnost izvođenja Ziegler-Nicholsovih i eksperimentalnih metoda ugađanja korak po korak uz pomoć umjetne inteligencije
- Sposobnost prepoznavanja i uklanjanja PID zamki kao što je integralno navijanje, izvedeni šum u preporukama AI
Održavanje temperature pećnice konstantnom, pokretanje brzine motora na željenu vrijednost, balansiranje kuta drona; U središtu svih njih je kontrolni algoritam. Najčešći od njih je PID regulator, koji je okosnica industrije. PID; Jednostavan je, robustan i djeluje na širok raspon problema. Ali "jednostavan" ne znači "lak za podešavanje": neispravno postavljen PID će oscilirati, prekoračiti, kasniti ili postati potpuno nestabilan. Umjetna inteligencija ovdje je vrijedan pomoćnik: objašnjava pojmove PID-a, vodi kroz metode podešavanja, dijagnosticira tipične zamke i piše kod za podešavanje. Međutim, konačna prilagodba se vrši promatranjem fizičkog ponašanja vašeg sustava, a odluka o stabilnosti pripada inženjeru. U ovoj jedinici pokrivamo kako instalirati, podesiti i provjeriti PID zamke s AI.
Tri pojma PID-a
PID reagira na signal greške (e = cilj − izmjereno) na tri načina:
pojam
Što on gleda?
Učinak
u ekstremnom
P (proporcionalno)
trenutna greška
brz odgovor
Oscilacija, trajna pogreška
I (integral)
Akumulirana prošla pogreška
Poništava trajnu pogrešku
overshoot, windup, oscilacija
D (izvedeno)
Stopa promjene pogreške
Prigušivanje smanjuje prekoračenje
Pojačajte buku
Verbalni sažetak: P odgovara na pitanja "koliko sam sada daleko", I "koliko sam dugo bio odsutan", D "koliko brzo se približavam". Dobar kontroler uravnotežuje sva tri.
klasa 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, izmjereno, dt): pogreška = cilj - izmjereno # P p = samo.Kp * pogreška # I -- samo.integral sa zaštitom od previjanja += pogreška * dt i = samo.Ki * samo.integral # D -- osjetljiv na derivativni šum d = samo.Kd * (pogreška - samo.prethodna_pogreška) / dt samo.prethodna_pogreška = pogreška izlaz = p + i + d # Zasititi izlaz i ograničiti navijanje ako je izlaz > self.output_max: izlaz = self.out_max self.integral -= pogreška * dt # anti-windup: poništi integral elif output < self.output_min: output = self.output_min self.integral -= error * dt return output
Ovaj kod nije "PID za obuku", već kostur blizak proizvodnoj logici: uključuje izlaznu zasićenost i zaštitu od navijanja. Mnogi jednostavni PID-ovi koje daje AI zaobilaze ove dvije zaštite; Bez njih, kada aktuator dosegne svoju granicu, integral će nabubriti i sustav će neočekivano preskočiti.
Savjet: kada od umjetne inteligencije tražite PID, recite "dodaj zasićenje izlaza i anti-windup, primijeni derivat na mjerenju na termin derivata". Ova tri dodatka pretvaraju PID udžbenika u polje PID.
Integralni Windup i izvedeni šum
Dvije klasične zamke najčešći su uzroci kvara PID-a:
Integralno navijanje: Kada se aktuator zasiti (npr. motor je već na punoj snazi), pogreška i dalje postoji, a integralni član nastavlja rasti. Ovaj napuhani integral dovodi do velikog prekoračenja kada sustav dosegne cilj. Rješenje: zaustavljanje ili vraćanje integrala kada je izlaz zasićen (zaštita od previjanja, prikazano u gornjem kodu).
Izvedeni šum: D izraz uzima derivat pogreške; Izvod bučnog mjerenja je mnogo bučniji i vibrira aktuator. Rješenja: uzimanje derivacije iz mjerenja (derivacija mjerenja umjesto pogreške), dodavanje niskopropusnog filtra derivacijskom izrazu.
# Smanjenje buke izvedenice: derivacija mjerenja + filterd_raw = -(izmjereno - samo.prethodno_izmjereno) / dt umjesto pogreške
AI je dobra u prepoznavanju ovih zamki; Ako kažete "Moj PID uvelike prelazi kada dosegne cilj", preporučuje se navijanje. Ali vi provjerite mjerenjem radi li popravak na vašem sustavu.
Okruženje sa Ziegler-Nicholsom
Klasična metoda za pronalaženje dobitaka (Kp, Ki, Kd) od nule je Ziegler-Nichols. Njegova suština: počevši samo s P i povećavajući Kp dok sustav ne prijeđe u kontinuirano osciliranje; Izračunajte Kp, Ki, Kd iz tablice s kritičnim pojačanjem Ku i periodom oscilacije Tu u ovoj točki.
kontrolor
kp
Ti
Td
P.
0,5·Ku
–
–
P.I.
0,45·Ku
uto/1.2
–
PID
0,6·Ku
Uto/2
Uto/8
Ziegler-Nicholsovi koraci (plan će izraditi AI):1. Uzmi Ki=0, Kd=0. Samo pokrenite P.2. POLAKO povećavajte Kp dok ne počne stabilna, trajna oscilacija.3. Ovo Kp = Ku (kritično pojačanje), period oscilacije = Tu.4. Izračunajte Kp, Ti, Td iz tablice; Ki = Kp/Ti, Kd = Kp*Td.5. Počnite s ovim vrijednostima, a zatim izvršite eksperimentalna podešavanja.
Oprez: Ziegler-Nichols namjerno dovodi sustav do njegove granice stabilnosti (trajna oscilacija). Postoji rizik od mehaničkog naprezanja, prekomjerne struje i opasnosti kada se to radi na stvarnom hardveru; Ako je moguće, prvo to učinite u simulaciji, a zatim radite s niskim ograničenjem snage i E-stopom u hardveru. Ku koji predlaže AI je početna točka, mjeri se i provjerava u vašem sustavu.
Dijagnostika potpomognuta umjetnom inteligencijom
Možete dijagnosticirati ponašanje PID-a tako da ga opišete umjetnoj inteligenciji. Simptom → preslikavanje mogućeg uzroka:
simptom
mogući uzrok
Smjer koji će AI predložiti
sporo sjedenje
Kp/Ki nizak
povećati kp
Trajna greška
I je odsutan ili vrlo nizak
Ki dodati/povećati
Prekoračenje + oscilacija
Kp/Ki visok, nema D
Dodajte Kd, smanjite Ki
Aktuator se trese
izvedeni šum
Filtriraj/smanji D
Kad dostigneš veliko prekoračenje
integral windup
Dodajte zaštitu od navijanja
Slab upit / Jak upit
SLABO: "Daj pojačanja PID-a." (Koji sustav? Kakvo je ponašanje? Ima li mjerenja? Dolaze nasumični brojevi.) JAKO: "Podešavam PID za kontrolu brzine istosmjernog motora. Trenutačno je Kp=2, Ki=0,5, Kd=0. Prekoračuje 35% na ulazu koraka i kada dosegne cilj, dolazi do velikog sekundnog prekoračenja; potrebno je dugo vremena da se uspostavi. Uzorkovanje je 100 Hz Navedite moguće razloge iz ovih simptoma, koji dobivaju "Predložite u kojem smjeru bih trebao promijeniti i recite mi kako da testiram je li prekoračenje integralni vjetar."
Mini torbica
Kontrolni inženjer Kerem podešava kontrolu temperature ekstrudera. Uz dobitke koje sugerira AI, sustav brzo doseže cilj, ali pri svakoj promjeni podešenja napravi veliko prekoračenje i polako se smiri. Kerem objašnjava AI simptom; AI sumnja na integralno navijanje jer grijač neko vrijeme ostaje na punoj snazi (zasićen). Kerem PID kodu dodaje zaštitu od navijanja i prekoračenje se značajno smanjuje. Ali sada postoji lagano treperenje na izlazu grijača; On to pripisuje izrazu D koji pojačava šum senzora temperature i dodaje niskopropusni filtar derivatu. Konačno, grubo potvrđuje dobitke sa Ziegler-Nicholsom i izvodi eksperimentalno fino podešavanje. AI ima brzu dijagnozu; Ali Kerem je potvrdio svaku korekciju mjerenjem stvarnog odziva koraka - bilo da je navijanje ispravljeno ili je treperenje nestalo, moglo se vidjeti samo grafički.
Uobičajene greške
- Neuspjeh dodavanja izlazne zasićenosti i zaštite od navijanja PID-u i doživljavanje velikog prekoračenja ograničenja aktuatora.
- Uzimanje derivacije iz derivacije bučnog mjerenja i vibriranja aktuatora.
- Uz pretpostavku da je dt konstantan, dok razdoblje uzorkovanja varira.
- Izvođenje Ziegler-Nichols testa oscilacije na hardveru bez sigurnosnih mjera opreza.
- Prihvaćanje zarade generirane umjetnom inteligencijom kao "konačne" bez provjere specifične za sustav.
- Mijenjanje jednog pojačanja s vrlo velikim koracima i guranje sustava u nestabilnost.
Ukratko
- PID; Reagira s P (trenutna pogreška), I (akumulirana pogreška), D (stopa promjene pogreške).
- PID polja trebao bi uključivati izlazno zasićenje, anti-windup i derivativni filtar.
- Veliko prekoračenje integriranog namotaja, izvedena buka uzrokuje vibracije aktuatora.
- Ziegler-Nichols daje početak dobitka; Implementiran je uz sigurnosne mjere u hardveru.
- AI je brz u dijagnostici od simptoma do uzroka; Ispravak se potvrđuje mjerenjem.
- dt stvarno izmjereno; Promjene u zaradi rade se malim koracima i promatranjem.
Zadatak aplikacije
Odaberite sustav (pravi motor/grijač ili jednostavan model prvog/drugog reda u Pythonu) i neka AI generira PID klasu sa zasićenjem + anti-windup. Zatim: (1) promatrajte ponašanje oscilacija počevši samo s P i povećavajući Kp, (2) dodajte Ki da biste eliminirali trajnu pogrešku i vidjeli kako se prekoračenje povećava, (3) usporedite učinak na veliko prekoračenje uključivanjem i isključivanjem zaštite od navijanja. Iscrtajte odziv koraka na svakom koraku i zabilježite koji dobitak mijenja koje ponašanje. Usporedite dobitak od Ziegler-Nicholsa s dobitkom koji ste sami pronašli.