Enhet 5 / 9

Kontrollalgoritmer: PID- og AI-støttet innstilling

Gevinster:

  • Evne til å forklare og bruke P, I, D-begrepene og effektene til PID-kontrolleren på AI med riktig kontekst
  • Evne til å utføre Ziegler-Nichols og eksperimentelle tuningmetoder trinn for trinn ved hjelp av AI
  • Evne til å gjenkjenne og eliminere PID-feller som integral windup, avledet støy i AI-anbefalinger

Holde temperaturen på en ovn konstant, kjøre hastigheten til en motor til en ønsket verdi, balansere vinkelen til en drone; I hjertet av dem alle er en kontrollalgoritme. Den vanligste av disse er PID-kontrolleren, som er ryggraden i bransjen. PID; Den er enkel, robust og fungerer på en lang rekke problemer. Men "enkel" betyr ikke "lett å stille inn": en feil innstilt PID vil oscillere, overskride, sitte sent eller bli helt ustabil. Kunstig intelligens er en verdifull assistent her: den forklarer PID-termer, veileder gjennom tuningmetoder, diagnostiserer typiske fallgruver og skriver tuningkoden. Den endelige justeringen gjøres imidlertid ved å se på den fysiske oppførselen til systemet ditt, og stabilitetsbeslutningen tilhører ingeniøren. I denne enheten dekker vi hvordan du installerer, tuner og verifiserer PID-feller med AI.

Tre vilkår for PID

PID-en reagerer på feilsignalet (e = mål − målt) på tre måter:

sikt

Hva ser han på?

Effekt

i det ekstreme

P (proporsjonal)

gjeldende feil

rask respons

Oscillasjon, permanent feil

I (integral)

Akkumulert tidligere feil

Tilbakestiller permanent feil

oversving, avvikling, oscillasjon

D (derivat)

Feilendringer

Demping reduserer oversving

Forsterk støyen

Verbal oppsummering: P svarer på spørsmålene "hvor langt er jeg nå", jeg "hvor lenge har jeg vært borte", D "hvor fort nærmer jeg meg". En god kontroller balanserer alle tre.

klasse PID: def __init__(selv, 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,f. dt): error = target - measured # P p = self.Kp * error # I -- self.integral with windup protection += error * dt i = self.Ki * self.integral # D -- derivative noisesensitive d = self.Kd * (error - self.previous_error) / dt self.previous_error if output if output the + d out limit = p self.output_max: output = self.out_max self.integral -= feil * dt # anti-windup: angre den integrale elif output < self.output_min: output = self.output_min self.integral -= feil * dt returnere utgang

Denne koden er ikke en "trenings-PID", men et skjelett nær produksjonslogikk: den inkluderer utgangsmetning og anti-avvikling. Mange enkle PID-er gitt av AI omgår disse to beskyttelsene; Uten dem, når aktuatoren når sin grense, vil integralen svelle og systemet vil overskride uventet.

Tips: Når du spør AI om PID, si "legg til utgangsmetning og anti-avvikling, bruk derivat på måling til derivatterm". Disse tre tilleggene konverterer lærebokens PID til feltet PID.

Integral Windup og Derivative Noise

To klassiske fallgruver er de vanligste årsakene til PID-svikt:

Integral windup: Når aktuatoren mettes (f.eks. motoren er allerede på full effekt) vedvarer feilen og integralleddet fortsetter å vokse. Denne oppblåste integralen fører til et stort oversving når systemet når målet. Løsning: stoppe eller rulle tilbake integralet når utgangen er mettet (antiavvikling, demonstrert i koden ovenfor).

Derivativ støy: D-leddet tar den deriverte av feilen; Avledningen av en støyende måling er mye mer støyende og vil vibrere aktuatoren. Løsninger: ta den deriverte fra målingen (deriverte av målingen i stedet for feilen), legge til et lavpassfilter til den deriverte termen.

# Reduserer derivert støy: målederivert + filterd_raw = -(målt - self.previous_measured) / dt i stedet for feil

AI er flink til å identifisere disse fallgruvene; Hvis du sier "Min PID overskrider kraftig når den når målet", anbefaler det avvikling. Men du bekrefter ved å måle om reparasjonen fungerer på systemet ditt.

Setting med Ziegler-Nichols

En klassisk metode for å finne gevinster (Kp, Ki, Kd) fra bunnen av er Ziegler-Nichols. Dens essens: starter bare med P og øker Kp til systemet går i vedvarende oscillasjon; Beregn Kp, Ki, Kd fra tabellen med den kritiske forsterkningen Ku og oscillasjonsperioden Tu på dette punktet.

kontrolleren

kp

Ti

Td

P.

0,5·Ku

P.I.

0,45·Ku

Tu/1.2

PID

0,6·Ku

Tu/2

Tir/8

Ziegler-Nichols trinn (plan for å bli laget av AI):1. Ta Ki=0, Kd=0. Bare kjør P.2. Øk sakte Kp til stabil, vedvarende oscillasjon begynner.3. Denne Kp = Ku (kritisk forsterkning), oscillasjonsperiode = Tu.4. Beregn Kp, Ti, Td fra tabellen; Ki = Kp/Ti, Kd = Kp*Td.5. Start med disse verdiene, og gjør deretter eksperimentelle justeringer.

Forsiktig: Ziegler-Nichols bringer bevisst systemet til stabilitetsgrensen (vedvarende oscillasjon). Det er fare for mekanisk belastning, overstrøm og fare når du gjør dette på ekte maskinvare; Hvis det er mulig, gjør det i simulering først, og jobb deretter med lav effektgrense og nødstopp i maskinvare. Ku foreslått av AI er et utgangspunkt, det måles og verifiseres i systemet ditt.

AI-assistert diagnostikk

Du kan diagnostisere PID-atferd ved å beskrive den til AI. Symptom → mulig årsakskartlegging:

symptom

mulig årsak

Retningen AI vil foreslå

sakte sittende

Kp/Ki lav

øke kp

Permanent feil

Jeg er fraværende eller veldig lav

Ki legge til/øke

Oversving + oscillasjon

Kp/Ki høy, ingen D

Legg til Kd, reduser Ki

Aktuatoren rister

avledet støy

Filtrer/reduser D

Når du når den store overskridelsen

integrert avvikling

Legg til anti-windup

Svak forespørsel / sterk forespørsel

SVAK:"Gi PID-gevinstene."(Hvilket system? Hvordan er oppførselen? Er det noen målinger? Tilfeldige tall kommer.)STERK:"Jeg justerer PID for en DC-motorhastighetskontroll. For øyeblikket er Kp=2, Ki=0.5, Kd=0. Den overskrider 35 % på trinninngangen og når den når målet, tar det en lang overskytingstid for andre; 100 Hz Liste over mulige årsaker fra disse symptomene, som får "Foreslå hvilken retning jeg bør endre det og fortell meg hvordan jeg skal teste om overskridelsen er en integrert avvikling."

Mini etui

Kontrollingeniør Kerem justerer temperaturkontrollen til en ekstruder. Med gevinstene foreslått av AI, når systemet målet raskt, men ved hvert settskifte gjør det et stort oversving og slår seg sakte ned. Kerem forklarer symptomet til AI; AI mistenker integrert oppkopling fordi varmeren forblir på full effekt (mettet) en stund. Kerem legger til anti-windup til PID-koden og overskytingen reduseres betydelig. Men nå er det et lite flimmer ved varmeapparatets uttak; Han tilskriver dette D-begrepet som forsterker temperatursensorstøyen og legger til et lavpassfilter til den deriverte. Til slutt validerer den grovt sett gevinstene med Ziegler-Nichols og utfører eksperimentell finjustering. AI har rask diagnose; Men Kerem bekreftet hver korrigering ved å måle den faktiske trinnresponsen – enten avviklingen ble korrigert eller flimringen borte, kunne den bare sees grafisk.

Vanlige feil

  • Klarer ikke å legge til utgangsmetning og anti-windup til PID og opplever en stor oversving i aktuatorgrensen.
  • Tar derivatet fra derivatet av den støyende målingen og vibrerer aktuatoren.
  • Forutsatt at dt er konstant, mens prøveperioden varierer.
  • Utføre Ziegler-Nichols oscillasjonstest på maskinvare uten sikkerhetstiltak.
  • Godta AI-genererte inntekter som "endelige" uten systemspesifikk verifisering.
  • Endre en enkelt forsterkning med veldig store trinn og presser systemet inn i ustabilitet.

Oppsummert

  • PID; Den reagerer med P (aktuelt feil), I (akkumulert feil), D (rate of error change).
  • Felt-PID bør inkludere utgangsmetning, antiavvikling og derivatfilter.
  • Integrert opprullingsstor oversving, avledet støy forårsaker aktuatorvibrasjoner.
  • Ziegler-Nichols gir start å vinne; Det er implementert med sikkerhetstiltak i maskinvaren.
  • AI er rask i diagnose fra symptom til årsak; Korreksjonen verifiseres ved måling.
  • dt faktisk målt; Inntjeningsendringer gjøres i små trinn og observasjon.

Søknadsoppgave

Velg et system (ekte motor/varmer eller en enkel første/andre ordre modell i Python) og få AI til å generere en PID-klasse med metning + anti-windup. Deretter: (1) observer oscillasjonsatferden ved å starte med bare P og øke Kp, (2) legg til Ki for å eliminere den permanente feilen og se hvordan oversvinget øker, (3) sammenlign effekten på det store oversvinget ved å slå anti-windup på og av. Plott trinnresponsen ved hvert trinn og noter hvilken gevinst som endrer hvilken atferd. Sammenlign gevinstene fra Ziegler-Nichols med gevinstene du fant selv.