Care sunt strategiile bune pentru reglarea buclelor PID?

Reglarea câștigurilor controlerului poate fi dificilă, ceea ce general strategiile funcționează bine pentru a obține un sistem stabil care converge către soluția potrivită?

Comentarii

  • O întrebare care vizează o întrebare mai specifică ar fi mai util. În caz contrar, ar trebui să te uiți la articolul PID , cu o secțiune despre reglaj
  • I ‘ am găsit întotdeauna că PID-urile de reglare depind foarte mult de caracteristicile sistemului, motiv pentru care ‘ nu am găsit niciodată sisteme auto-tune teribil de util. Sunt bine pentru o primă trecere, set de parametri cu performanță scăzută, dar sunt departe de optimi și veți avea aceeași problemă cu orice strategie generală care nu este optimizată pentru aspectele mecanice, electrice și de control ale unui sistem dat.

Răspuns

Pentru motoare cu cuplu mic cu un reductor redus sau deloc, o procedură pe care o puteți folosi pentru a obține o melodie bună de bază este de a testa răspunsul la o perturbare.

Pentru a regla un PID, urmați pașii următori:

  1. Setați toate câștigurile la zero.
  2. Măriți câștigul P până când răspunsul la o perturbare este o oscilație constantă.
  3. Măriți câștigul D până când oscilațiile dispar (adică este amortizat critic).
  4. Repetați pașii 2 și 3 până când creșterea câștigului D nu oprește oscilațiile.
  5. Setați P și D la ultimele valori stabile.
  6. Creșteți câștigul I până când vă aduce la punctul de referință cu numărul de oscilații dorite (în mod normal zero, dar poate avea un răspuns mai rapid dacă nu vă deranjează câteva oscilații de depășire)

Ce perturbație utilizați depinde de mecanismul la care este atașat controlerul. În mod normal, deplasarea manuală a mecanismului de la punctul de referință și eliberarea este suficientă. Dacă oscilațiile cresc din ce în ce mai mari, atunci trebuie să reduceți P gain.

Dacă setați câștigul D prea mare, sistemul va începe să vorbească (vibrează la o frecvență mai mare decât oscilațiile P gain). Dacă se întâmplă acest lucru, reduceți câștigul D până se oprește.

Cred că această tehnică are un nume. O voi pune aici când o voi găsi.

Comentarii

  • Sună ca Ziegler-Nichols: en.wikipedia.org/wiki/Ziegler%E2%80%93Nichols_method
  • @ Throwback1986, Acesta este cu siguranță nu Ziegler-Nichols care folosește doar câștigul P și unde Câștigul I și D sunt apoi calculați în consecință din câștigul P oscilant și din perioada de oscilare
  • Aveți sfaturi suplimentare pentru reglarea specifică a unui braț robot care are articulații multiple care necesită reglare? Începeți de la bază și lucrați spre exterior până la efectorul final sau invers, sau chiar contează?
  • Într-un cadru academic sau industrial, veți dori o metodă de control mai sofisticată. Pentru un pasionat; gravitația are un efect de amortizare, deci reglați fiecare articulație la unghiul în care gravitația afectează cel mai puțin motoarele. De exemplu, cu brațul îndreptat în sus, astfel încât gravitația acționează asupra rulmenților și nu asupra motorului. Ordinea nu contează. Adăugarea unui termen de compensare a gravitației feedforward la controlul dvs. este probabil cea mai ușoară îmbunătățire (utilizați Newton-Euler recursiv pentru un braț serial) dacă nu puteți ‘ obține performanța dorită. >
  • Instrumentul pidtuner.com mi-a oferit rezultate mai bune decât metoda Ziegler-Nichols, care are câteva dezavantaje cunoscute; folk.ntnu.no/skoge/publications/2003/tuningPID/more/…

Răspuns

O metodă experimentală similară cu răspunsul hauptmech, care mi-a fost predat în facultate:

  1. Setați toate câștigurile la 0.
  2. Creșteți Kd până când sistemul oscilează.
  3. Reduceți K d cu un factor de 2-4.
  4. Setați Kp la aproximativ 1% din K d .
  5. Creșteți Kp până când încep oscilațiile.
  6. Reduceți Kp cu un factor de 2-4.
  7. Setați Ki la aproximativ 1% din Kp .
  8. Creșteți Ki până când încep oscilațiile.
  9. Reduceți Ki cu un factor de 2-4.

Metoda Ziegler-Nichols este mai precisă dacă puteți obține un număr precis pentru perioada de oscilație. În general, provoacă oscilații folosind „cla numere SSIC PID „date, deci nu este întotdeauna optim.

Pentru reguli generale despre efectul fiecărui termen asupra timpului de creștere, depășire, timp de decontare, eroare la stabilitate și stabilitate, vezi Tabelul 1 din „Analiza și proiectarea sistemului PID de control” , de Li, Ang și Chong în revista IEEE Control Systems.

Comentarii

  • Kd mai întâi? M-am gândit întotdeauna că este mai bine să încep cu Kp.
  • Transcriu din diapozitive vechi de prelegere, dacă există ‘ un motiv întemeiat să nu o fac așa. ‘ aș fi curios să-l aud.
  • Că ‘ s algoritmul pe care îl susțin pentru ” scaunul pantalonilor ” reglare. ‘ vă va aduce cât mai aproape posibil fără a modela sistemul sau a măsura răspunsul acestuia. (Modelarea și / sau măsurarea este singura modalitate de urmat dacă într-adevăr aveți nevoie de reglajul corect).
  • Reglarea Kd nu are mai întâi sens pentru mine ‘ , ca în fiecare PID I ‘ am implementat semnul lui Kd este negativ. ‘ este utilizat pentru a reduce semnalul de control atunci când apar modificări foarte mari ale erorilor, în esență amortizând sistemul. Dacă aveți doar Kd, sistemul se va deplasa în direcția opusă, crescând eroarea și agravând problema. Dacă Kd este pozitiv, atunci ori de câte ori se produce o schimbare mare în eroare în direcția corectă, ‘ o veți face să se schimbe și mai repede și să vă depășească ținta.
  • De fapt, reglarea câștigului D are mai întâi sens, dar ‘ presupun că ” crește ” Câștigul D înseamnă creșterea valorii absolute și ‘ crește doar amortizarea. Cea mai mare problemă cu câștigul D este că amplifică zgomotul de înaltă frecvență și ‘ este plăcut să vezi acel efect fără câștigul P. Deci, ‘ reîncepeți în esență prin căutarea câștigurilor la care nu se mai comportă ca amortizarea și începe să amplifice zgomotul și semnalele de eroare întârziate. ‘ presupunând pentru pasul 2, trebuie să vă aruncați planta pentru a vedea dacă oscilează.

Răspuns

Embedded.com mi-a mutat din nou articolul, dar iată-l acum. Acest lucru vă arată atât cum să scrieți o buclă PID (a afla cum să o faceți în altceva decât virgula mobilă este lăsată ca exercițiu pentru cititor), și cum să o reglați.

PID fără doctorat

Cel mai bun mod depinde foarte mult de abilitățile tale. Modul de a obține cea mai bună reglare , presupunând că sunteți o mână experimentată a sistemului de control, este de obicei să măsurați răspunsul plantei („plantă” == „lucrul pe care„ îl controlați ”), apoi, în funcție de modul în care ați făcut măsurătorile, extrageți un model al plantei și proiectați-o sau pur și simplu proiectați-o direct la măsurători.

Pentru anumite plante dificile, veți găsi că nu puteți face vreodată satisfăcătoare măsurători, caz în care trebuie să mergeți doar pe modele. Acestea sunt rare, dar satisfăcătoare când le faci să funcționeze.

Răspuns

Sebastian Thrun a prezentat un algoritm simplu pentru reglarea PID în Clasa „Cum să programezi o mașină robotică”. Se numește „twiddle”, el îl descrie aici .

Twiddle este foarte predispus la găsirea de valori minime locale – asta înseamnă că ar putea veni cu un set de trei constante care sunt în regulă, dar nu optime pentru situație. Problema reglării constantelor PID este un subset al unei probleme de căutare mai generale pentru a găsi anumiți parametri pentru a maximiza utilitatea ( în acest caz, minimizarea erorii algoritmului PID). Puteți căuta alte soluții generale la această problemă, cum ar fi alpinismul, recușirea simulată, algoritmii genetici etc. care ar putea ajunge să găsească soluții mai optime.

Răspuns

Spre deosebire de celelalte două răspunsuri, aș spune că un mod manual bun de a regla un PID este ignorarea Kd. Deci începeți de la 0 și măriți Kp până când ajungeți la țintă, apoi măriți Ki pentru a scăpa de eroarea de stare staționară.

Kd poate confunda problema deoarece răspunde slab la zgomot, apoi începeți să adăugați filtre pe intrarea dvs. analogică și apoi puneți întrebări despre ce face asta, în afară de a vă încetini controlul și de a face totul mai greu de rezolvat …

Un alt lucru care mă încurcă este dacă ecuația PID este în forma standard sau într-o formă independentă (paralelă în Wikipedia). Efectul Ki pare să fie invers atunci când forma este o cale greșită către ceea ce crezi că este. Ambele tipuri sunt utilizate în automatizare, uneori cu opțiunea de a comuta între ele.

Răspuns

Modelare sistem

Desigur, reglarea experimentală se poate face așa cum se menționează în celelalte răspunsuri, dar dacă sunteți capabil să definiți un model dinamic rezonabil pentru tot ceea ce doriți să controlați și puteți identificați parametrii , ar trebui să puteți proiecta controlerul pe baza unor criterii bine definite, cum ar fi overshoot , timpul de creștere , timpul de stabilire , constant -state eroare și așa mai departe.

Există chiar și instrumente în MATLAB care pot regla controlerul pentru a optimiza pentru o combinație a acestor criterii, ceea ce îl face și mai bun de utilizat.

Cunoaște-ți controlerul

Află ce este fiecare parametru din Controlerul PID nu este de asemenea util. Toți algoritmii experimentali se bazează cumva pe acest tip de cunoștințe. Dacă nu numai că urmați instrucțiunile, dar puteți să vă simțiți singuri acel sentiment, este posibil să vă fie mai ușor să vă reglați manual controlerul.

Probleme din lumea reală

Există o șansă ca unul dintre aceste lucruri, printre altele, să iasă în cale atunci când vă reglați controlerul: lichidare , rata de eșantionare inadecvată , saturație .

Concluzie

În cele din urmă, totul depinde de ceea ce puteți face cu pentru a obține unele cunoștințe despre cum funcționează și ce fel de experimentare se poate face. Cel mai bun lucru este să învăț de fapt mai multe despre controlerele PID și teoria controlului în general, IMO, dar „sunt părtinitor 🙂

Comentarii

  • nu ‘ nu înțelegeți de ce oamenii sugerează în continuare euristică pentru reglarea PID, în timp ce în zilele noastre ni se oferă o mulțime de instrumente automate pentru identificarea plantelor și proiectarea controlerelor care nu ‘ nu necesită un fundal teoretic profund. Apăsați acest răspuns atunci.

Răspundeți

Voi încerca să mă extind puțin din experiența mea pentru cei care ar putea fi interesați. Cred că problema este că avem o mulțime de teorii de control care sunt oarecum inaccesibile (și uneori inutile) și apoi avem reguli generale care fac presupuneri despre sisteme care sunt adesea inexacte.

Stabilitate

Să vorbim mai întâi de ce buclele de control devin instabile. Pentru această discuție, voi presupune un sistem liniar . În mod informal, acest lucru înseamnă că dacă semnalul dvs. de control este o undă sinusoidală la o anumită frecvență, atunci ieșirea observată este la aceeași frecvență și dacă modificați amplitudinea sistemului de control, ieșirea dvs. răspunde la același raport. Această ipoteză este o bună aproximare pentru multe sisteme din lumea reală și ne permite să privim diferite frecvențe în mod izolat.

Dacă te uiți la calea de control ai un set-point, controlerul tău PID, sistemul tău (aka „Plant”), apoi senzorul. Imaginați-vă un set-point fix și o undă sinusoidală de la senzor (aceasta este egală cu o perturbare a lumii reale la senzor, alimentată înapoi). Într-un sistem instabil, feedback-ul dvs. face ca bucla de control să amplifice eroarea, mai degrabă decât să o reducă astfel încât, pe măsură ce timpul crește, amplitudinea dvs. crește. Motivul pentru care se întâmplă acest lucru se datorează întârzierii sau, pentru această frecvență, o schimbare de fază între intrare și ieșire. Pentru o anumită frecvență putem privi schimbarea și amplitudinea buclei deschise (adică fără feedback) și atunci când desenăm pe toate pe un grafic obținem ceva de genul Bode Plot . Dacă avem o situație în acest grafic în buclă deschisă în care eroarea continuă să se amplifice, atunci avem un sistem instabil. Dacă întârzierea este mai mică de 1/2 lungimea de undă sau câștigul este mai mic de x1, sistemul va fi stabil . În practică, dorim o anumită marjă din acel moment (marja de câștig și marja de fază), motiv pentru care veți vedea acest „backing off” în multe dintre metodele manuale / euristice.

Problema principală cu acele manuale metodele constau în faptul că „zburați orb și că aveți destul de mult garantat că veți obține un sistem de control slab.

Rețineți, de asemenea, că sensul P, I și D este legat de măsurarea senzorului dvs. și ce control aplicați. O greșeală obișnuită la controlerele construite în casă este ca oamenii să creadă că aplică P atunci când de fapt nu. Controlerele motorului au adesea o buclă de poziție, care rulează peste o buclă de viteză care rulează peste o buclă de cuplu. (O cascadă )

OK, dar cum ne ajută asta?

Primul punct pe care aș dori să-l subliniez este că, dacă îți construiești propriul controler PID, ar trebui să construiești și un mod de măsurare a buclei deschise raspuns. Efectuați o măturare a frecvenței la intrarea în controler și măsurați ieșirea senzorului cu feedback-ul deconectat. Apoi puteți desena graficul Bode în buclă deschisă și vedeți de ce sistemul dvs. este stabil și puteți tranzacționa de pe diferitele controale. De asemenea, este util să măsurați răspunsul în buclă închisă și puteți face acest lucru cu orice sistem efectuând o măturare a frecvenței set-point-ului dvs. în timp ce bucla este închisă. Ambele nu sunt atât de greu și nu necesită o mulțime de cunoștințe teoretice.

Dacă pur și simplu modificați controalele fără a înțelege ce se întâmplă sub capotă, nu veți putea pentru a vă optimiza sistemul. Construirea unor intuiții despre aceste sisteme nu este atât de grea. De exemplu. câștigul proporțional nu are efect asupra fazei, ci pur și simplu crește câștigul în buclă deschisă pe toate frecvențele. Deci, ceea ce faceți atunci când creșteți câștigul proporțional în toate acele metode de reglare manuală este găsirea frecvenței în care faza merge la -180. Consultați aceasta pentru a vă face o idee despre impactul diferitelor controale asupra răspunsului dvs. în frecvență.

Destul de des obținerea celor mai bune performanțe în buclă închisă implică modificarea sistemului și nu doar câștigurile controlerului. Ceea ce doriți este să faceți sistemul cât mai „rigid” posibil. Acest lucru vă va permite să creșteți parametrii de control și să obțineți cea mai bună lățime de bandă în buclă deschisă și închisă. Din experiența mea în aplicațiile de control al motorului, câștigul proporțional este cel care ar trebui să facă cea mai mare parte a „muncii”, iar integratorul „restul”. Nu cred că aveți deloc nevoie de un termen D. Având un filtru de trecere scăzut și un filtru de notch ajută foarte mult în situațiile în care este posibil să aveți o rezonanță mecanică, dar setarea lor fără un grafic Bode este foarte dificil (frecvența de oscilație sub buclă închisă poate fi diferită de cea cu buclă deschisă).

Dacă siguranța este o problemă (motoare foarte puternice sau un sistem care ar putea fi distrus de motorul care iese din control) trebuie să introduceți unele limite înainte de a începe reglarea (de exemplu, limita curentă, eroarea maximă de poziție) pentru a proteja sistemul. Apoi, trebuie să obțineți un anumit sentiment pentru gama parametrilor. Dacă feedback-ul dvs. are 40 de conturi pe rotație sau 4000 de conturi pe rotație parametrii dvs. va fi un factor de 100 pentru un sistem dat. Abordarea mea ar fi să găsesc mai întâi o gamă în care să ai un control slab și apoi să urci de acolo începând cu P și apoi eu (deși din nou zbori orb). Backing-ul creează această marjă de stabilitate.

Dincolo de buclă închisă

Buclă închisă încearcă să elimine eroarea din sistem. Va avea întotdeauna o performanță oarecum limitată. Ceea ce doriți să faceți este să minimizați eroarea pe care o vede controlerul dvs. cu buclă închisă și o modalitate de a face acest lucru este printr-o tehnică numită feed înainte . În feed-forward, întoarceți controlerul și conduceți o comandă direct la sistem. Un exemplu în acest sens ar fi accelerarea feed-forward. Dacă știți că sunteți constantul de cuplu al motorului și cunoașteți Încărcați, puteți spune cât de mult curent trebuie să conduceți pentru a obține o anumită accelerare a încărcării. Pur și simplu luați accelerația de intrare a comenzii, o multiplicați cu o constantă și o adăugați la comanda unității controlerului. Practic, faceți ceea ce ar fi necesar pentru a conduce sistemul dacă nu a existat controler și cu cât vă puteți apropia, cu atât mai puțină eroare are de eliminat bucla și cu atât sistemul va funcționa mai bine. Face o diferență uriașă în practică.

Comentarii

  • ” Din experiența mea în aplicațiile de control al motorului, câștigul proporțional este cel care ar trebui să fie efectuând cea mai mare parte a ” lucru „, iar integratorul ” restul „. Nu cred că ‘ nu cred că ai nevoie de un termen D. ” Aș fi de acord cu asta pentru aplicația tipică de control al motorului. P face treaba principală și I compensează deriva / erorile pe termen lung. Dar aici, quadcopterul va fi supus multor turbulențe externe, deci termenul D este important pentru a obține un răspuns rapid. pentru termenul I, cu excepția cazului în care quad-ul este în modul de navigație autonom, acesta nu este atât de crucial.
  • @ dm76: Cea mai mare parte a experienței mele este cu controlul motorului și fac acea declarație de respingere 😉 Deși intuiția mea spune că există ‘ e încă loc pentru I în aplicația quadcopter și cred că dacă P este foarte mare s-ar putea ocupa de perturbări externe (la fel ca în controlul motorului). Chiar aș avea nevoie să arunc o privire mai atentă asupra acestor sisteme pentru a spune ceva clar despre quadcoptere …Cred că o mulțime din ceea ce spun aici se aplică (în special, reglați-vă în domeniul frecvenței și aveți răspunsul în buclă deschisă al sistemului). „>

regula generală ” Reglarea PID are ca rezultat performanțe foarte mediocre la motoare și probabil la fel la quadcoptere. Uneori, un filtru de notch bine plasat poate face o diferență de ordine de mărime …

Răspuns

Ziegler-Nichols este o metodă manuală ușoară. Există, de asemenea, metode mai robuste – acestea se bazează de obicei pe soluții matematice (analitice, optimizare iterativă etc.)

Dincolo de asta, Google „auto-reglare PID” pentru unele tehnici automatizate. Preferatul meu este aplicarea rețelelor neuronale la reglarea PID.

Răspuns

Dacă doriți să aveți un coeficient PID precis:

  • Obțineți datele statistice ale actuatorului dvs. (adică colectarea tensiunilor de intrare + impulsurile codificatorului într-o constantă (0.01sec) timp pentru 20secs ca 3 x 2000 matrice)
  • Obțineți funcția de transfer (TF) a actuatorului dvs. (utilizând caseta de instrumente Ident în MATLAB).
  • În cele din urmă, utilizați Caseta de instrumente PIDTool în MATLAB și încărcați funcția de transformare.

Sau într-un mod simplu și rapid:

Există o abordare mai rapidă numită Ziegler – Nichols : introduceți descrierea imaginii aici

Și în această imagine demonstrați efectele parametrilor PID :
Efecte parametri PID

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *