Yksikkö 5 / 9

Ohjausalgoritmit: PID- ja AI-tuettu viritys

Voitot:

  • Kyky selittää ja soveltaa PID-ohjaimen P, I, D termejä ja vaikutuksia tekoälyyn oikeassa kontekstissa
  • Kyky suorittaa Ziegler-Nicholsia ja kokeellisia viritysmenetelmiä askel askeleelta tekoälyn avulla
  • Kyky tunnistaa ja poistaa PID-loukut, kuten integroitu käämitys, johdannaiskohina AI-suosituksissa

Uunin lämpötilan pitäminen vakiona, moottorin nopeuden ajaminen halutulla arvolla, dronin kulman tasapainottaminen; Niiden kaikkien ytimessä on ohjausalgoritmi. Yleisin näistä on PID-säädin, joka on alan selkäranka. PID; Se on yksinkertainen, kestävä ja toimii monenlaisissa ongelmissa. Mutta "yksinkertainen" ei tarkoita "helppo viritettävää": väärin asetettu PID värähtelee, ylittää, myöhästyy tai muuttuu täysin epävakaaksi. Tekoäly on tässä arvokas apulainen: se selittää PID-termit, opastaa viritysmenetelmien läpi, diagnosoi tyypilliset sudenkuopat ja kirjoittaa virityskoodin. Lopullinen säätö tehdään kuitenkin tarkastelemalla järjestelmäsi fyysistä käyttäytymistä ja vakauden päätös kuuluu insinöörille. Tässä osiossa käsittelemme PID-loukkujen asentamista, viritystä ja tarkistamista tekoälyllä.

Kolme PID-ehtoa

PID reagoi virhesignaaliin (e = tavoite - mitattu) kolmella tavalla:

termi

Mitä hän katsoo?

Vaikutus

äärimmäisyydessä

P (suhteellinen)

nykyinen virhe

nopea vastaus

Värähtely, pysyvä virhe

minä (integraali)

Kertynyt aikaisempi virhe

Nollaa pysyvän virheen

ylitys, purkaminen, värähtely

D (johdannainen)

Virheen muutosnopeus

Vaimennus vähentää ylitystä

Vahvista melua

Sanallinen yhteenveto: P vastaa kysymyksiin "kuinka kaukana olen nyt", minä "kuinka kauan olen ollut poissa", D "kuinka nopeasti lähestyn". Hyvä ohjain tasapainottaa kaikki kolme.

luokan PID: def __init__(itse, Kp, Ki, Kd, output_min=-100, output_max=100): itse.Kp, itse.Ki, itse.Kd = Kp, Ki, Kd itse.ulos_min, itse.out_max = lähtö_min, output_max self.integral = 0.0_erfr. kohde, mitattu, dt): virhe = kohde - mitattu # P p = itse.Kp * virhe # I -- itse.integraali purkamissuojauksella += virhe * dt i = itse.Ki * itse.integraali # D -- johdannainen.kohinaherkkä d = itse.Kd * (virhe - itse.edellinen_virhe) / dt = itse.edellinen_virhe purkaminen jos lähtö > self.output_max: output = self.out_max self.integral -= error * dt # anti-windup: kumoa integraalin elif lähtö < self.output_min: output = self.output_min self.integral -= virhe * dt palauttaa lähtö

Tämä koodi ei ole "koulutus-PID", vaan luuranko lähellä tuotantologiikkaa: se sisältää lähdön kyllästymisen ja anti-windupin. Monet tekoälyn antamat yksinkertaiset PID-tunnisteet ohittavat nämä kaksi suojausta; Ilman niitä, kun toimilaite saavuttaa rajansa, integraali turpoaa ja järjestelmä ylittää odottamatta.

Vinkki: Kun kysyt tekoälyltä PID:tä, sano "lisää lähdön kylläisyys ja anti-windup, käytä derivaatta mittauksessa johdannaistermiin". Nämä kolme lisäystä muuntaa oppikirjan PID kenttään PID.

Integral Windup ja johdannaiskohina

Kaksi klassista sudenkuoppaa ovat yleisimpiä syitä PID-häiriöihin:

Integraalinen käämitys: Kun toimilaite kyllästyy (esim. moottori on jo täydellä teholla), virhe jatkuu ja integraalitermi jatkaa kasvuaan. Tämä paisunut integraali johtaa suureen ylitykseen, kun järjestelmä saavuttaa tavoitteen. Ratkaisu: integraalin pysäyttäminen tai peruuttaminen, kun lähtö on kyllästynyt (anti-windup, näkyy yllä olevassa koodissa).

Johdannainen kohina: D-termi ottaa virheen derivaatan; Meluisen mittauksen derivaatta on paljon meluisempi ja tärisee toimilaitetta. Ratkaisut: derivaatan ottaminen mittauksesta (mittauksen derivaatta virheen sijaan), alipäästösuodattimen lisääminen derivaatan termiin.

# Derivaattakohinan vähentäminen: mittausderivaatti + filterd_raw = -(mitattu - itse.edellinen_mitattu) / dt virheen sijaan

Tekoäly on hyvä tunnistamaan nämä sudenkuopat; Jos sanot "PID-tunnukseni ylittää suuresti, kun se saavuttaa tavoitteen", se suosittelee purkamista. Mutta varmistat mittaamalla, toimiiko korjaus järjestelmässäsi.

Asetus Ziegler-Nicholsin kanssa

Klassinen menetelmä voittojen (Kp, Ki, Kd) löytämiseksi tyhjästä on Ziegler-Nichols. Sen olemus: aloitetaan vain P:llä ja lisätään Kp:tä, kunnes järjestelmä siirtyy jatkuvaan värähtelyyn; Laske Kp, Ki, Kd taulukosta kriittisellä vahvistuksella Ku ja värähtelyjaksolla Tu tässä pisteessä.

ohjain

kp

Ti

Td

P.

0,5·Ku

P.I.

0,45·Ku

ti/1.2

PID

0,6·Ku

Tu/2

ti/8

Ziegler-Nicholsin vaiheet (suunnitelman tekee AI):1. Ota Ki=0, Kd=0. Suorita vain P.2. Lisää HITAASTI Kp:tä, kunnes vakaa, jatkuva värähtely alkaa.3. Tämä Kp = Ku (kriittinen vahvistus), värähtelyjakso = Tu.4. Laske Kp, Ti, Td taulukosta; Ki = Kp/Ti, Kd = Kp*Td.5. Aloita näillä arvoilla ja tee sitten kokeellisia muutoksia.

Varoitus: Ziegler-Nichols saattaa tarkoituksella järjestelmän stabiilisuusrajaansa (jatkuva värähtely). On olemassa mekaanisen rasituksen, ylivirran ja vaaran vaara, kun tämä tehdään todellisella laitteistolla; Jos mahdollista, tee se ensin simulaatiossa, sitten työskennelkää matalalla tehorajalla ja E-stopilla laitteistossa. Tekoälyn ehdottama Ku on lähtökohta, se mitataan ja tarkistetaan järjestelmässäsi.

AI-avusteinen diagnostiikka

Voit diagnosoida PID-käyttäytymisen kuvaamalla sen tekoälylle. Oire → mahdollinen syy kartoitus:

oire

mahdollinen syy

Suunta AI ehdottaa

hidas istuminen

Kp/Ki alhainen

lisää kp

Pysyvä virhe

Olen poissa tai hyvin alhainen

Lisää/lisää

Ylitys + värähtely

Kp/Ki korkea, ei D

Lisää Kd, vähennä Ki

Toimilaite tärisee

johdannainen melu

Suodata/vähennä D

Kun saavutat suuren ylityksen

integroitu purkaminen

Lisää anti-windup

Heikko kehote / Vahva kehote

HEIKKO:"Anna PID-vahvistukset."(Mikä järjestelmä? Miten käyttäytyy? Onko mittauksia? Satunnaisia ​​lukuja tulee.)STRONG:"Säädän PID-arvoa tasavirtamoottorin nopeudensäätöä varten. Tällä hetkellä Kp=2, Ki=0,5, Kd=0. Se ylittää 35 % askelsyötössä ja kun se saavuttaa suuren tavoitteen, kestää kauan. Näytteenotto on 100 Hz. Listaa mahdolliset syyt näistä oireista, jotka saavat "Ehdota mihin suuntaan minun pitäisi muuttaa ja kerro minulle, kuinka testaan, onko ylitys integroitu purkaminen."

Mini Kotelo

Ohjausinsinööri Kerem säätää ekstruuderin lämpötilan säätöä. Tekoälyn ehdottamien hyötyjen avulla järjestelmä saavuttaa tavoitteen nopeasti, mutta jokaisessa asetettujen muutosten yhteydessä se tekee suuren ylityksen ja asettuu hitaasti. Kerem selittää oireen tekoälylle; AI epäilee integroitua purkamista, koska lämmitin pysyy täydellä teholla (kyllästettynä) jonkin aikaa. Kerem lisää anti-windup PID-koodiin ja ylitys pienenee merkittävästi. Mutta nyt lämmittimen ulostulossa on pientä välkkymistä; Hän selittää tämän lämpötila-anturin kohinaa vahvistavan D-termin ansioksi ja lisää alipäästösuodattimen johdannaiseen. Lopuksi se vahvistaa karkeasti voitot Ziegler-Nicholsin kanssa ja suorittaa kokeellisen hienosäädön. Tekoälyllä on nopeutettu diagnoosi; Mutta Kerem vahvisti jokaisen korjauksen mittaamalla todellisen askelvasteen – olipa päättely korjattu tai välkkyminen hävinnyt, se voitiin nähdä vain graafisesti.

Yleisiä virheitä

  • Lähdön kyllästymisen ja purkamisen eston lisääminen PID:hen epäonnistui ja toimilaitteen raja ylittyy.
  • Otetaan derivaatta kohinaisen mittauksen derivaatta ja värähteletään toimilaitetta.
  • Olettaen, että dt on vakio, kun taas näytteenottojakso vaihtelee.
  • Ziegler-Nichols-värähtelytestin suorittaminen laitteistolle ilman turvatoimia.
  • Tekoälyn tuottamien tulojen hyväksyminen "lopullisiksi" ilman järjestelmäkohtaista vahvistusta.
  • Yhden vahvistuksen muuttaminen erittäin suurilla askelilla ja järjestelmän työntäminen epävakauteen.

Yhteenvetona

  • PID; Se reagoi P (current error), I (kertynyt virhe), D (virheen muutosnopeus) kanssa.
  • Kentän PID:n tulee sisältää lähdön kylläisyys, anti-windup ja johdannaissuodatin.
  • Integroitu käämitys suuri ylitys, johdannainen melu aiheuttaa toimilaitteen tärinää.
  • Ziegler-Nichols antaa mahdollisuuden voittoon; Se toteutetaan laitteiston turvatoimilla.
  • Tekoäly diagnosoi nopeasti oireesta syystä; Korjaus varmistetaan mittaamalla.
  • dt todellinen mitattu; Tulosmuutokset tehdään pienin askelin ja tarkkailulla.

Sovellustehtävä

Valitse järjestelmä (oikea moottori/lämmitin tai yksinkertainen ensimmäisen/toisen asteen malli Pythonissa) ja anna tekoälyn luoda PID-luokka saturaatiolla + anti-windup. Sitten: (1) tarkkaile värähtelykäyttäytymistä aloittamalla vain P:llä ja lisäämällä Kp:tä, (2) lisää Ki poistaaksesi pysyvä virhe ja katso kuinka ylitys kasvaa, (3) vertaa vaikutusta suureen ylitykseen kytkemällä anti-windup päälle ja pois. Piirrä askelvaste kussakin vaiheessa ja pane merkille, mikä vahvistus muuttaa käyttäytymistä. Vertaa Ziegler-Nicholsin voittoja itsellesi löytyneisiin voittoihin.