Wat zijn goede strategieën om PID-lussen af te stemmen?

Het afstemmen van controllerwinsten kan moeilijk zijn, wat algemeen strategieën werken goed om een stabiel systeem te krijgen dat convergeert naar de juiste oplossing?

Reacties

  • Een vraag gericht op een meer specifieke vraag zou meer zijn nuttig. Anders zou je gewoon naar het PID -artikel moeten kijken, met een sectie over afstemmen
  • I ‘ vond het afstemmen van PIDs altijd erg afhankelijk van de kenmerken van het systeem, daarom heb ik ‘ nooit gevonden dat auto-tune systemen vreselijk handig. Ze zijn prima voor een eerste doorgang, laag presterende set parameters, maar ze zijn verre van optimaal, en je zult hetzelfde probleem hebben met elke algemene strategie die niet geoptimaliseerd is voor de mechanische, elektrische en besturingsaspecten van een bepaald systeem.

Antwoord

Voor kleine motoren met een laag koppel met weinig of geen versnelling, een procedure die u kunt gebruiken om een goede basislijnafstemming te krijgen, is het peilen van de reactie op een storing.

Gebruik de volgende stappen om een PID af te stemmen:

  1. Zet alle versterkingen op nul.
  2. Verhoog de P-versterking totdat de respons op een storing een gestage oscillatie is.
  3. Verhoog de D-versterking totdat de oscillaties verdwijnen (bijv. het is kritisch gedempt).
  4. Herhaal stappen 2 en 3 totdat het verhogen van de D-versterking de oscillaties niet stopt.
  5. Zet P en D op de laatste stabiele waarden.
  6. Verhoog de I-versterking totdat het je naar het instelpunt brengt met het gewenste aantal oscillaties (normaal gesproken nul, maar een snellere reactie is mogelijk als je het niet erg vindt om een paar oscillaties door te schieten)

Welke storing u gebruikt, hangt af van het mechanisme waaraan de controller is bevestigd. Normaal gesproken is het met de hand verplaatsen van het mechanisme van het instelpunt en loslaten voldoende. Als de oscillaties groter en groter worden, moet u de P-versterking.

Als u de D-versterking te hoog instelt, begint het systeem te chatteren (trillen met een hogere frequentie dan de P-versterkingsoscillaties). Als dit gebeurt, verlaag dan de D-versterking totdat deze stopt. / p>

Ik denk dat deze techniek een naam heeft. Ik zal hem hier plaatsen als ik hem vind.

Reacties

  • Klinkt als Ziegler-Nichols: en.wikipedia.org/wiki/Ziegler%E2%80%93Nichols_method
  • @ Throwback1986, Dit is zeker niet Ziegler-Nichols die alleen de P-versterking gebruikt en waar De I- en D-versterking worden vervolgens berekend op basis van de oscillerende P-versterking en de oscilatieperiode.
  • Heeft u aanvullend advies voor het afstemmen van specifiek een robotarm met meerdere gewrichten die afgesteld moeten worden? Begin je bij de basis en werk je naar buiten toe naar de eindeffector, of andersom, of maakt het zelfs uit?
  • In een academische of industriële omgeving wil je een meer geavanceerde controlemethode. Voor een hobbiest; de zwaartekracht heeft een dempend effect, dus stem elk gewricht af op de hoek waar de zwaartekracht de motoren het minst beïnvloedt. Bijvoorbeeld met de arm recht omhoog gericht, zodat de zwaartekracht op de lagers inwerkt en niet op de motor. Bestelling doet er niet toe. Het toevoegen van een feedforward-term voor zwaartekrachtcompensatie aan uw besturing is waarschijnlijk de gemakkelijkste verbetering (gebruik recursieve Newton-Euler voor een seriële arm) als u ‘ niet de gewenste prestaties kunt krijgen.
  • De tool pidtuner.com heeft me betere resultaten gegeven dan de Ziegler-Nichols-methode, die verschillende bekende nadelen heeft; folk.ntnu.no/skoge/publications/2003/tuningPID/more/…

Antwoord

Een vergelijkbare experimentele methode als het antwoord van hauptmech dat ik op de universiteit heb geleerd:

  1. Zet alle winsten op 0.
  2. Verhoog Kd totdat het systeem oscilleert.
  3. Verlaag K d met een factor 2-4.
  4. Stel Kp in op ongeveer 1% van K d .
  5. Verhoog Kp totdat oscillaties beginnen.
  6. Verlaag Kp met een factor 2-4.
  7. Stel Ki in op ongeveer 1% van Kp .
  8. Verhoog Ki totdat oscillaties beginnen.
  9. Verlaag Ki met een factor 2-4.

De Ziegler-Nichols-methode is nauwkeuriger als u een nauwkeurig getal voor de oscillatieperiode kunt krijgen. Het veroorzaakt over het algemeen oscillaties met de cla ssic PID “-nummers gegeven, dus het is niet altijd optimaal.

Voor algemene regels over het effect van elke term op stijgtijd, overshoot, settling-tijd, steady-state error en stabiliteit, zie Tabel 1 van “Analyse en ontwerp van PID-regelsysteem” , door Li, Ang en Chong in IEEE Control Systems Magazine.

Reacties

  • Kd eerst? Ik dacht altijd dat het het beste was om met Kp te beginnen.
  • Ik ‘ m transcriberen van oude presentatiedias, als er ‘ is een goede reden om het niet op die manier te doen, ik ‘ zou nieuwsgierig zijn om het te horen.
  • Dat ‘ is het algoritme dat ik bepleit voor ” zetel van de broek ” afstemming. Het ‘ brengt je zo dichtbij als je kunt zonder het systeem te modelleren of de respons ervan te meten. (Modelleren en / of meten is de enige manier om te gaan als je echt de juiste afstemming nodig hebt).
  • Eerst afstemmen op Kd ‘ heeft geen enkele zin voor mij , zoals in elke PID die ik ‘ heb geïmplementeerd, is het teken van Kd negatief. Het ‘ wordt gebruikt om het stuursignaal te verminderen wanneer er zeer grote veranderingen in fouten optreden, in wezen het dempen van het systeem. Als je alleen Kd hebt, zal het systeem in de tegenovergestelde richting bewegen, waardoor de fout toeneemt en het probleem groter wordt. Als Kd positief is, zul je ‘ elke grote verandering in de fout in de goede richting laten veranderen en je doel voorbijschieten.
  • Eigenlijk is het afstemmen van D-versterking eerst logisch, maar ik ‘ ga ervan uit dat ” toeneemt met ” D-versterking betekent dat de absolute waarde toeneemt en het ‘ s alleen maar een toenemende demping. Het grootste probleem met D-versterking is dat het hoogfrequente ruis versterkt en het ‘ is leuk om dat effect te zien zonder de P-versterking. Dus je ‘ begint in wezen met het zoeken naar de winsten waarbij het zich niet meer als demping gedraagt en begint met het versterken van ruis en vertraagde foutsignalen. Ik ‘ m aangenomen dat je voor stap 2 je plant moet porren om te zien of deze oscilleert.

Antwoord

Embedded.com heeft mijn artikel weer verplaatst, maar hier is het nu. Dit laat je zowel zien hoe je een PID-lus schrijft (uitzoeken hoe je het moet doen in iets anders dan een drijvende komma wordt overgelaten als een oefening voor de lezer) als hoe je het kunt afstemmen.

PID zonder doctoraat

De beste manier hangt sterk af van je capaciteiten. De manier om de beste afstemming te krijgen, ervan uitgaande dat u “een ervaren hand van het besturingssysteem bent, is gewoonlijk om de respons van de plant te meten (” plant “==” het ding dat u “bestuurt”), vervolgens, afhankelijk van hoe je de metingen hebt gedaan, een model van de plant extraheren en daarop ontwerpen, of gewoon rechtstreeks naar de metingen ontwerpen.

Voor bepaalde moeilijke planten zul je merken dat je nooit een bevredigende metingen, in dat geval moet u alleen op modellen gaan. Die zijn zeldzaam, maar geven voldoening als je ze aan het werk krijgt.

Antwoord

Sebastian Thrun presenteerde een eenvoudig algoritme voor het afstemmen van PID in zijn Klasse “Hoe een robotauto te programmeren”. Het “heet” twiddle “, hij beschrijft het hier .

Twiddle is zeer geneigd om lokale minima te vinden – dit betekent dat u zou een set van drie constanten kunnen bedenken die oké zijn, maar niet optimaal voor de situatie. Het probleem van het afstemmen van PID-constanten is een subset van een algemener zoekprobleem om bepaalde parameters te vinden om de bruikbaarheid te maximaliseren ( in dit geval het minimaliseren van fouten in het PID-algoritme). U kunt andere algemene oplossingen voor dit probleem onderzoeken, zoals heuvelklimmen, gesimuleerde gloeien, genetische algoritmen, enz. die uiteindelijk meer optimale oplossingen kunnen vinden.

Answer

In tegenstelling tot de andere twee antwoorden “zou ik zeggen dat een goede handmatige manier om een PID af te stemmen het negeren van de Kd is. Dus begin bij 0 en verhoog Kp totdat je bij het doel bent, en verhoog dan Ki om de steady-state-fout te verwijderen.

Kd kan het probleem verwarren omdat het slecht reageert op ruis, en dan begin je filters toe te voegen op je analoge ingang en vraag je dan af wat dat doet behalve je controle vertragen en het geheel moeilijker maken om uit te werken …

Een ander ding dat me zeker zal verwarren, is als de PID-vergelijking in de standaardvorm is of in een onafhankelijke (parallel in wikipedia) vorm. Het effect van Ki lijkt omgekeerd te worden wanneer de vorm de verkeerde kant op is van wat je denkt dat het is. Beide typen worden gebruikt in automatisering, soms met de mogelijkheid om ertussen te schakelen.

Antwoord

Systeemmodellering

Natuurlijk kan experimentele afstemming worden gedaan zoals vermeld in de andere antwoorden, maar als je in staat bent een redelijk dynamisch model te definiëren voor alles wat je wilt besturen en in staat bent om identificeer de parameters ervan , je zou in staat moeten zijn om je controller te ontwerpen op basis van welomschreven criteria zoals overshoot , stijgtijd , insteltijd , stabiel -state -fout enzovoort.

Er zijn zelfs tools in MATLAB die je controller kunnen afstemmen om te optimaliseren voor een combinatie van deze criteria, wat hem nog beter maakt te gebruiken.

Ken uw controller

Leren wat elke parameter in de De PID-controller is ook heel nuttig. Alle experimentele algoritmen zijn op de een of andere manier op dit soort kennis gebaseerd. Als u niet alleen de instructies volgt, maar ook dat gevoel zelf kunt krijgen, vindt u het misschien gemakkelijker om uw controller handmatig af te stemmen.

Echte wereldproblemen

Er is een kans dat een van deze dingen, onder andere, onderweg zal zijn bij het afstemmen van je controller: windup , onvoldoende bemonsteringssnelheid , verzadiging .

Conclusie

Uiteindelijk hangt het allemaal af van wat u werkelijk kunt doen met uw systeem om wat kennis te krijgen over hoe het werkt en wat voor soort experimenten er kunnen worden gedaan. Het beste is om eigenlijk meer te leren over PID-controllers en regeltechniek in het algemeen, IMO, maar ik “m bevooroordeeld 🙂

Opmerkingen

  • I don ‘ begrijp niet waarom mensen heuristieken blijven voorstellen voor het afstemmen van PID, terwijl we tegenwoordig worden voorzien van veel automatische tools voor plantidentificatie en controllerontwerp die niet ‘ heb geen diepgaande theoretische achtergrond nodig. Duim omhoog voor dit antwoord.

Antwoord

Ik zal proberen mijn ervaring een beetje uit te breiden voor degenen die mogelijk geïnteresseerd zijn. Ik denk dat het probleem is dat we veel controletheorie hebben die enigszins ontoegankelijk (en soms niet bruikbaar) is en dan hebben we vuistregels die aannames doen over systemen die vaak onnauwkeurig zijn.

Stabiliteit

Laten we eerst praten over waarom regelkringen instabiel worden. Voor deze discussie ga ik uit van een lineair systeem . Informeel betekent dit dat als uw stuursignaal een sinusgolf is bij een bepaalde frequentie, uw waargenomen output op dezelfde frequentie is en als u de amplitude van uw controlesysteem verandert, reageert uw output met dezelfde verhouding. Deze aanname is een goede benadering voor veel systemen uit de echte wereld en stelt ons in staat om verschillende frequenties afzonderlijk te bekijken.

Als je naar het controlepad kijkt, heb je een instelpunt, je PID-controller, je systeem (ook bekend als “Plant”), en dan je sensor. Stel je een vast setpoint en een sinusgolf van je sensor voor (dit is gelijk aan een echte storing bij de sensor, teruggekoppeld). In een onstabiel systeem zorgt uw feedback ervoor dat de regelkring de fout versterkt in plaats van deze te verkleinen, zodat uw amplitude naarmate de tijd toeneemt, toeneemt. De reden dat dit gebeurt, is een vertraging of voor deze specifieke frequentie een faseverschuiving tussen de input en output. Voor een bepaalde frequentie kunnen we kijken naar die open lus (dwz geen feedback) verschuiving en amplitude van de output en als we ze allemaal in een grafiek tekenen, krijgen we zoiets als een Bode-plot . Als we een situatie hebben in deze open-lus-grafiek waarin de fout steeds groter wordt, dan hebben we een onstabiel systeem. Als de vertraging minder is dan 1/2 van de golflengte of de versterking kleiner is dan x1, is het systeem stabiel . In de praktijk willen we wat marge vanaf dat punt (winstmarge en fasemarge), daarom zul je dit “terug zien gaan” in veel van de handmatige / heuristische methoden.

Het grootste probleem met die handleiding methode is dat je “blind vliegt” en dat je vrijwel gegarandeerd een slecht controlesysteem krijgt.

Houd er ook rekening mee dat de betekenis P, I en D verband houdt met wat je sensor meet en welke controle u toepast. Een veelgemaakte fout bij zelfgebouwde controllers is dat mensen denken dat ze P toepassen terwijl ze dat eigenlijk niet zijn. Motorregelaars hebben vaak een positielus, die over een snelheidslus loopt die over een koppellus loopt. (A cascade )

OK, maar hoe helpt dit ons?

Het eerste punt dat ik “zou willen maken, is dat als je je eigen PID-controller bouwt, je ook een manier moet bouwen om de open lus te meten reactie. Voer een frequentie-sweep uit bij de ingang van uw controller en meet de output van de sensor met de feedback losgekoppeld. Vervolgens kunt u de open-loop Bode-plot tekenen en zien waarom uw systeem stabiel is en kunt u handelen van de verschillende bedieningselementen. Het is ook handig om de gesloten-lusrespons te meten en u kunt dat met elk systeem doen door een frequentie-sweep van uw setpoint uit te voeren terwijl de lus gesloten is. Beide zijn niet zo moeilijk en vereisen niet veel theoretische kennis.

Als je gewoon de bedieningselementen aanpast zonder enig begrip van wat er onder de motorkap gebeurt, kun je niet om uw systeem te optimaliseren. Het opbouwen van enige intuïtie over deze systemen is niet zo moeilijk. Bijv. de proportionele versterking heeft geen effect op de fase, maar verhoogt gewoon de open lusversterking over alle frequenties. Dus wat je doet als je de proportionele versterking verhoogt in al die handmatige afstemmingsmethoden, is de frequentie vinden waar de fase naar -180 gaat. Zie dit om een idee te krijgen van de impact van de verschillende bedieningselementen op uw frequentierespons.

Vaak is het verkrijgen van de beste closed loop-prestaties het systeem aanpassen en niet alleen de controller wint. Wat u wilt, is het systeem zo “stijf” mogelijk maken. Op die manier kunt u de regelparameters verhogen en de beste bandbreedte voor open en gesloten lus krijgen. In mijn ervaring met motorbesturingstoepassingen is de proportionele winst degene die het meeste “werk” zou moeten doen en de integrator de “rest”. Ik denk niet dat je helemaal geen D-term nodig hebt. Het hebben van een laagdoorlaatfilter en een notch-filter helpt veel in situaties waarin je wat mechanische resonantie hebt, maar ze instellen zonder een Bode-plot is erg moeilijk (de oscillatiefrequentie die je waarneemt onder een gesloten lus kan anders zijn dan de open lus).

Als veiligheid een probleem is (zeer krachtige motoren of een systeem dat kan worden vernietigd doordat de motor uit de hand loopt), moet u wat limieten voordat u begint met afstemmen (bijv. huidige limiet, maximale positiefout) om het systeem te beschermen. Dan moet u een idee krijgen van het bereik van de parameters. Als uw feedback 40 tellingen per rotatie of 4000 tellingen per rotatie heeft, moeten uw parameters zal een factor 100 zijn voor een bepaald systeem. Mijn benadering zou zijn om eerst een bereik te vinden waar je een slechte beheersbaarheid hebt en dan vanaf daar op te voeren, beginnend met P en dan ik (hoewel je weer blind vliegt). Terugtrekken creëert deze stabiliteitsmarge.

Beyond closed loop

Closed loop probeert de fout uit het systeem te verwijderen. Het heeft altijd een ietwat beperkte prestatie. Wat u wilt doen, is de fout minimaliseren die uw closed loop-controller ziet en een manier om dat te doen is door middel van een techniek genaamd feed vooruit . In feed-forward ga je om de controller heen en stuur je een commando rechtstreeks naar het systeem. Een voorbeeld hiervan is acceleratie-feed-forward. Als je weet dat je de koppelconstante van de motor bent en je kent de belasting kun je vrijwel zien hoeveel stroom je nodig hebt om een bepaalde versnelling van de belasting te krijgen. Je neemt gewoon het commando input versnelling, vermenigvuldigt dit met een constante en voegt dat toe aan het aandrijfcommando van de controller. Je doet eigenlijk wat er nodig is om het systeem aan te sturen als er geen controller was en hoe dichter je komt, hoe minder fout je loop hoeft te verwijderen en hoe beter je systeem zal presteren. In de praktijk maakt het een enorm verschil. / p>

Opmerkingen

  • ” In mijn ervaring met motorbesturingstoepassingen is de proportionele winst degene die zou moeten zijn de meeste ” werk ” en de integrator de ” rest “. Ik denk niet dat ‘ niet dat je überhaupt een D-term nodig hebt. ” Daar ben ik het mee eens voor typische motorbesturingstoepassingen. De P doet de hoofdtaak en de I compenseert voor langdurige drift / fouten. Maar hier zal de quadcopter onderhevig zijn aan veel externe turbulentie, dus de D-term is belangrijk om een snelle respons te krijgen. voor de I-term, tenzij de quad zich in autonome navigatiemodus bevindt, is het is niet zo cruciaal.
  • @ dm76: De meeste van mijn ervaring is met motorische controle, en ik maak die disclaimer 😉 Mijn intuïtie zegt echter dat er ‘ s nog steeds ruimte voor I in quadrocoptertoepassing en ik denk dat als P erg hoog is, het kan omgaan met externe storingen (net als bij motorbesturing). Ik zou die systemen echt eens nader moeten bekijken om iets definitiefs te zeggen over quadcopters …Ik denk dat veel van wat ik hier zeg, ook van toepassing is (doe vooral je afstemming in het frequentiedomein en heb de open-loop respons van het systeem).
  • @ dm76: En echt die ” vuistregel ” PID-afstemming resulteert in zeer matige prestaties in motoren en vermoedelijk hetzelfde in quadcopters. Soms kan een goed geplaatste notch-filter een verschil in grootteorde maken …

Answer

Ziegler-Nichols is een gemakkelijke handmatige methode. Er bestaan ook robuustere methoden – deze zijn meestal gebaseerd op wiskundige oplossingen (analytische, iteratieve optimalisatie, enz.).

Verder Google “zelfafstemmende PID” voor sommige geautomatiseerde technieken. Mijn favoriet is de toepassing van neurale netwerken op PID-afstemming.

Antwoord

Als je een nauwkeurige PID-coëfficiënt wilt hebben:

  • Haal uw statistische actuatorgegevens op (bijv. verzamelen van ingangsspanningen + encoderpulsen in een const vaak (0.01sec) tijd voor 20secs als een 3 x 2000 matrix)
  • Haal de overdrachtsfunctie (TF) van uw actuator op (met behulp van Ident toolbox in MATLAB).
  • Gebruik ten slotte PIDTool toolbox in MATLAB en upload uw transformatiefunctie.

Of op een snelle en eenvoudige manier:

Er is een snellere benadering genaamd Ziegler – Nichols : enter beschrijving van de afbeelding hier

En in deze afbeelding demonstreren van PID-parametereffecten :
PID-parameters effecten

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *