Wat zijn goede strategieën voor het afstellen van PID loops?

Ik zal proberen wat uit te wijden vanuit mijn ervaring voor degenen die misschien geïnteresseerd zijn. Ik denk dat het probleem is dat we veel regeltheorie hebben die enigszins ontoegankelijk is (en soms niet bruikbaar) en dan hebben we vuistregels die aannames doen over systemen die vaak onnauwkeurig zijn.

Stabiliteit

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

Als je naar het regelpad kijkt, heb je een set-point, je PID regelaar, je systeem (alias “Plant”), en dan je sensor. Stel je een vast set-point voor en een sinusgolf van je sensor (dit is gelijk aan een echte storing bij de sensor, teruggekoppeld). In een instabiel systeem zorgt de terugkoppeling ervoor dat de regelkring de fout versterkt in plaats van vermindert, zodat de amplitude toeneemt naarmate de tijd toeneemt. De reden dat dit gebeurt is dat er een vertraging is, of voor deze specifieke frequentie een faseverschuiving tussen de ingang en de uitgang. Voor een bepaalde frequentie kunnen we kijken naar die open lus (d.w.z. geen terugkoppeling) verschuiving en de amplitude van de uitgang en als we die allemaal op een grafiek tekenen krijgen we zoiets als een Bode Plot. Als we in deze open-lus grafiek een situatie hebben waarin de fout steeds groter wordt, dan hebben we een onstabiel systeem. Als de vertraging kleiner is dan 1/2 van de golflengte of de versterking kleiner is dan x1, dan is het systeem stabiel. In de praktijk willen we enige marge vanaf dat punt (versterkingsmarge en fasemarge) en daarom zie je dit “terugdraaien” in veel van de handmatige/heuristische methoden.

Het grootste probleem met die handmatige methoden is dat je blind vliegt en vrijwel zeker een slecht regelsysteem krijgt.

Bedenk ook dat de betekenis van P, I en D gerelateerd is aan wat je sensor meet en welke regeling je toepast. Een veel voorkomende fout bij zelfgebouwde regelaars is dat mensen denken dat ze P toepassen terwijl dat eigenlijk niet zo is. Motorregelaars hebben vaak een positielus, die over een snelheidslus loopt, die over een koppellus loopt. (Een cascade)

OK maar hoe helpt ons dit?

Het eerste punt dat ik wil maken is dat als je je eigen PID regelaar bouwt, je ook een manier moet maken om de open-lus respons te meten. Doe een frequentie sweep aan de ingang van je regelaar en meet de uitgang van de sensor met de feedback losgekoppeld. Dan kun je de open-lus Bode plot tekenen en zien waarom je systeem stabiel is en kun je de verschillende regelaars op elkaar afstemmen. Het is ook nuttig om de gesloten lus-responsie te meten en dat kun je met elk systeem doen door een frequentie sweep te doen van je set-point terwijl de lus gesloten is. Beide zijn niet zo moeilijk en vereisen niet veel theoretische kennis.

Als je alleen de regelaars aanpast zonder enig begrip van wat er onder de motorkap gebeurt, zul je niet in staat zijn je systeem te optimaliseren. Het is niet zo moeilijk om wat intuïtie over deze systemen op te bouwen. De proportionele versterking heeft bijvoorbeeld geen effect op de fase, maar verhoogt gewoon de open-lus versterking over alle frequenties. Dus wat je doet als je de proportionele versterking verhoogt in al die handmatige afstemmethodes is het vinden van de frequentie waar de fase naar -180 gaat. Zie dit om een idee te krijgen van de invloed van de verschillende regelaars op je frequentierespons.

Natuurlijk moet je voor de beste closed loop prestaties het systeem afstellen en niet alleen de regelaar gains. Wat je wilt is het systeem zo “stijf” mogelijk maken. Dan kun je de regelparameters opvoeren en de beste open en gesloten lus bandbreedte krijgen. In mijn ervaring in motorbesturingstoepassingen is de proportionele versterking degene die het meeste “werk” zou moeten doen en de integrator de “rest”. Ik denk dat je helemaal geen D-term nodig hebt. Een laagdoorlaatfilter en een notchfilter helpen veel in situaties waar mechanische resonantie optreedt, maar het is erg moeilijk om deze in te stellen zonder een Bode Plot (de oscillatiefrequentie die je waarneemt in closed loop kan anders zijn dan in open loop).

Als veiligheid een punt van zorg is (zeer krachtige motoren of een systeem dat vernietigd kan worden doordat de motor de controle verliest) moet je limieten instellen voordat je begint met afstemmen (bijv. stroomlimiet, maximale positie fout) om het systeem te beschermen. Daarna moet je een soort gevoel krijgen voor het bereik van de parameters. Als uw terugkoppeling 40 tellingen per omwenteling of 4000 tellingen per omwenteling heeft, zullen uw parameters een factor 100 zijn voor een bepaald systeem. Mijn benadering zou zijn om eerst een bereik te vinden waar je wat slechte controleerbaarheid hebt en dan vanaf daar op te voeren beginnend met P en dan I (hoewel je weer blind vliegt). Terugschakelen creëert deze stabiliteitsmarge.

Verder dan closed loop

Closed loop probeert de fout uit het systeem te halen. Het zal altijd een enigszins beperkte prestatie hebben. Wat je wilt doen is de fout minimaliseren die je closed loop controller ziet en een manier om dat te doen is door middel van een techniek die feed forward wordt genoemd. Bij feed-forward ga je om de regelaar heen en stuur je een commando rechtstreeks naar het systeem. Een voorbeeld hiervan zou acceleratie feed-forward zijn. Als je de koppelconstante van je motor kent en je kent de belasting, dan kun je vrij goed zeggen hoeveel stroom je nodig hebt om een bepaalde versnelling van de belasting te krijgen. U neemt eenvoudig de opdrachtinputversnelling, vermenigvuldigt het met een constante en voegt dat aan het aandrijvingsbevel van de controlemechanisme toe. U doet fundamenteel wat het zou nemen om het systeem te drijven als er geen controlemechanisme was en dichter u kunt worden de minder fout uw lijn moet nemen uit en beter uw systeem zal presteren. Het maakt een enorm verschil in de praktijk.

Geef een antwoord

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