Pelnas:
- Gebėjimas paaiškinti ir pritaikyti P, I, D terminus ir PID valdiklio efektus AI su tinkamu kontekstu
- Gebėjimas atlikti Ziegler-Nichols ir eksperimentinius derinimo metodus žingsnis po žingsnio su AI pagalba
- Gebėjimas atpažinti ir pašalinti PID spąstus, tokius kaip integruotas suvyniojimas, išvestinis triukšmas AI rekomendacijose
Išlaikyti pastovią orkaitės temperatūrą, paleisti variklio greitį norima reikšme, subalansuoti drono kampą; Visų jų esmė yra valdymo algoritmas. Dažniausias iš jų yra PID valdiklis, kuris yra pramonės pagrindas. PID; Tai paprasta, tvirta ir tinka įvairioms problemoms spręsti. Tačiau „paprasta“ nereiškia „lengva derinti“: neteisingai nustatytas PID svyruos, peršoks, vėluos arba taps visiškai nestabilus. Dirbtinis intelektas čia yra vertingas asistentas: jis paaiškina PID terminus, nurodo derinimo metodus, diagnozuoja tipinius spąstus ir rašo derinimo kodą. Tačiau galutinis koregavimas atliekamas atsižvelgiant į jūsų sistemos fizinį elgesį, o sprendimas dėl stabilumo priklauso inžinieriui. Šiame skyriuje aptarsime, kaip įdiegti, suderinti ir patikrinti PID gaudykles naudojant AI.
Trys PID sąlygos
PID reaguoja į klaidos signalą (e = tikslas – išmatuotas) trimis būdais:
terminas
Į ką jis žiūri?
Efektas
kraštutiniu atveju
P (proporcingas)
dabartinė klaida
greitas atsakymas
Virpesiai, nuolatinė klaida
aš (neatsiejama)
Sukaupta praeities klaida
Iš naujo nustato nuolatinę klaidą
viršijimas, apvija, svyravimas
D (išvestinė)
Klaidos kitimo greitis
Slopinimas sumažina viršijimą
Padidinkite triukšmą
Žodinė santrauka: P atsako į klausimus "kiek aš dabar esu", aš "kiek laiko buvau išvykęs", D "kaip greitai aš artėju". Geras valdiklis subalansuoja visus tris.
klasės 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_erffr. tikslas, išmatuotas, dt): klaida = taikinys - išmatuotas # P p = self.Kp * klaida # I -- self.integral with windup protection += error * dt i = self.Ki * self.integral # D -- išvestinė triukšmo jautrumas d = self.Kd * (klaida - self.previous_error) / dt.ankstesnis_klaida windup if output > self.output_max: output = self.out_max self.integral -= error * dt # anti-windup: anuliuokite integralo elif išvestį < self.output_min: output = self.output_min self.integral -= error * dt return output
Šis kodas yra ne „mokomasis PID“, o gamybos logikai artimas skeletas: jis apima išvesties prisotinimą ir anti-windup. Daugelis paprastų PID, kuriuos suteikia AI, apeina šias dvi apsaugas; Be jų, pavarai pasiekus savo ribą, integralas išsipūs ir sistema netikėtai peršoks.
Patarimas: kai AI prašote nustatyti PID, pasakykite „pridėti išvesties prisotinimą ir apsaugoti nuo išsijungimo, taikykite išvestinę išvestinėje išvestinėje dalyje“. Šie trys papildymai konvertuoja vadovėlio PID į lauką PID.
Integral Windup ir išvestinis triukšmas
Du klasikiniai spąstai yra dažniausios PID gedimo priežastys:
Integruotas sujungimas: kai pavara prisisotina (pvz., variklis jau veikia visu pajėgumu), klaida išlieka ir integralinis terminas toliau auga. Šis išpūstas integralas sukelia didelį viršijimą, kai sistema pasiekia tikslą. Sprendimas: sustabdyti arba grąžinti integralą, kai išvestis yra prisotinta (apsauga nuo sugadinimo, parodyta aukščiau esančiame kode).
Išvestinis triukšmas: D terminas paima klaidos išvestinę; Triukšmingo matavimo išvestinė medžiaga yra daug triukšmingesnė ir vibruos pavarą. Sprendimai: paimti išvestinę iš matavimo (matavimo išvestinę vietoj paklaidos), prie išvestinės dalies pridedant žemo dažnio filtrą.
# Išvestinio triukšmo mažinimas: matavimo išvestinė + filterd_raw = -(išmatuota - self.previous_measured) / dt vietoj paklaidos
AI puikiai atpažįsta šias spąstus; Jei sakote: „Mano PID labai viršija, kai pasiekia tikslą“, tai rekomenduoja nutraukti. Bet jūs patikrinate matuodami, ar taisymas veikia jūsų sistemoje.
Nustatymas su Ziegler-Nichols
Klasikinis pelno (Kp, Ki, Kd) nustatymo metodas nuo nulio yra Ziegler-Nichols. Jo esmė: pradedant tik nuo P ir didinant Kp, kol sistema pereina į nuolatinį svyravimą; Apskaičiuokite Kp, Ki, Kd pagal lentelę su kritiniu padidėjimu Ku ir svyravimo periodu Tu šiame taške.
valdiklis
kp
Ti
Td
P.
0,5 · Ku
–
–
P.I.
0,45·Ku
Tu/1.2
–
PID
0,6 · Ku
Tu/2
Tu/8
Ziegler-Nichols žingsniai (planą sudarys AI):1. Paimkite Ki = 0, Kd = 0. Tiesiog paleiskite P.2. LĖTAI didinkite Kp, kol prasidės stabilus, nuolatinis svyravimas.3. Šis Kp = Ku (kritinis stiprinimas), svyravimo periodas = Tu.4. Apskaičiuokite iš lentelės Kp, Ti, Td; Ki = Kp/Ti, Kd = Kp*Td.5. Pradėkite nuo šių verčių, tada atlikite eksperimentinius pakeitimus.
Atsargiai: Ziegler-Nichols sąmoningai priartina sistemą iki stabilumo ribos (nuolatinis svyravimas). Jei tai daroma naudojant tikrą aparatūrą, kyla mechaninio įtempimo, per didelės srovės ir pavojaus pavojus; Jei įmanoma, pirmiausia atlikite tai modeliuodami, tada dirbkite su mažos galios ribojimu ir E-stop aparatinėje įrangoje. AI siūlomas Ku yra atskaitos taškas, jis matuojamas ir patikrinamas jūsų sistemoje.
AI padedama diagnostika
Galite diagnozuoti PID elgesį aprašydami jį AI. Simptomas → galimų priežasčių žemėlapis:
simptomas
galima priežastis
AI pasiūlys kryptį
lėtas sėdėjimas
Kp/Ki žemas
padidinti kp
Nuolatinė klaida
Manęs nėra arba labai mažai
Ki pridėti / padidinti
Perviršis + svyravimas
Kp/Ki didelis, nėra D
Pridėkite Kd, sumažinkite Ki
Pavara dreba
išvestinis triukšmas
Filtruoti / sumažinti D
Kai pasieksite didelį viršijimą
integruotas suvyniojimas
Pridėti anti-windup
Silpnas raginimas / stiprus raginimas
WEAK:"Pateikite PID padidėjimą."(Kokia sistema? Kaip elgiasi? Ar yra kokių nors matavimų? Atsitiktiniai skaičiai.)STRONG:"Aš reguliuoju PID nuolatinės srovės variklio greičio reguliavimui. Šiuo metu Kp=2, Ki=0,5, Kd=0. Žingsnio įvestis viršija 35 %, o kai pasiekia tikslą, reikia daug laiko; Mėginių ėmimas yra 100 Hz. Išvardykite galimas priežastis, susijusias su šiais simptomais.
Mini dėklas
Valdymo inžinierius Kerem reguliuoja ekstruderio temperatūros valdymą. Turėdama AI siūlomus pranašumus, sistema greitai pasiekia tikslą, tačiau kiekvieną kartą pakeitus nustatymą, ji smarkiai viršija ir lėtai nusistovi. Kerem paaiškina simptomą AI; AI įtaria integruotą apvyniojimą, nes šildytuvas kurį laiką veikia visa galia (prisotintas). Kerem prideda anti-windup prie PID kodo ir viršijimas žymiai sumažėja. Tačiau dabar šiek tiek mirga prie šildytuvo išleidimo angos; Jis tai priskiria D terminui, stiprinančiam temperatūros jutiklio triukšmą, ir prie išvestinės prideda žemųjų dažnių filtrą. Galiausiai jis apytiksliai patvirtina Ziegler-Nichols pranašumus ir atlieka eksperimentinį koregavimą. AI turi pagreitintą diagnozę; Tačiau Keremas patvirtino kiekvieną pataisymą išmatuodamas faktinį žingsnio atsaką – nesvarbu, ar išjungimas buvo ištaisytas, ar mirgėjimas išnyko, tai buvo galima matyti tik grafiškai.
Dažnos klaidos
- Nepavyko pridėti išvesties sodrumo ir apsaugos nuo perjungimo prie PID ir pastebimas didelis pavaros ribos viršijimas.
- Paimama išvestinė iš triukšmingo matavimo išvestinės ir vibruojama pavara.
- Darant prielaidą, kad dt yra pastovus, o mėginių ėmimo laikotarpis skiriasi.
- Ziegler-Nichols virpesių testo atlikimas aparatinėje įrangoje nesiimant saugos priemonių.
- AI sugeneruotas uždarbis priimamas kaip „galutinis“ be konkrečios sistemos patvirtinimo.
- Vieno padidėjimo keitimas labai dideliais žingsniais ir sistemos pastūmimas į nestabilumą.
Apibendrinant
- PID; Jis reaguoja su P (dabartinė klaida), I (sukaupta klaida), D (klaidos kitimo greitis).
- Lauko PID turėtų apimti išėjimo sodrumą, anti-windup ir išvestinį filtrą.
- Integruotas apvyniojimas didelis viršijimas, išvestinis triukšmas sukelia pavaros vibraciją.
- Ziegler-Nichols suteikia pradžią įgyti; Jis įgyvendinamas naudojant saugumo priemones aparatinėje įrangoje.
- AI greitai diagnozuojama nuo simptomo iki priežasties; Pataisa patikrinama išmatuojant.
- dt faktiškai išmatuotas; Pajamų pokyčiai vyksta mažais žingsneliais ir stebint.
Taikymo užduotis
Pasirinkite sistemą (tikrą variklį / šildytuvą arba paprastą pirmos ar antros eilės modelį Python) ir leiskite dirbtiniam intelektui sugeneruoti PID klasę su prisotinimu ir apsauga nuo išsijungimo. Tada: (1) stebėkite virpesių elgesį, pradėdami tik nuo P ir padidindami Kp, (2) pridėkite Ki, kad pašalintumėte nuolatinę klaidą ir pamatytumėte, kaip padidėja viršijimas, (3) palyginkite poveikį dideliam viršijimui įjungdami ir išjungdami anti-windup. Nubraižykite žingsnio atsaką kiekviename žingsnyje ir atkreipkite dėmesį, kuris padidėjimas keičia elgesį. Palyginkite Ziegler-Nichols naudą su pelnu, kurį radote patys.