Vilka är bra strategier för att ställa in PID-loopar?

Det kan vara svårt att ställa in styrningsvinster, vad allmänt strategier fungerar bra för att få ett stabilt system som konvergerar till rätt lösning?

Kommentarer

  • En fråga riktad mot en mer specifik fråga skulle vara mer användbar. Annars bör du bara titta på PID -artikeln, med ett avsnitt om inställning
  • I ’ har alltid funnit att avstämning av PID är mycket beroende av systemets egenskaper, varför jag ’ aldrig hittat automatisk inställning fruktansvärt användbart. De är bra för ett första pass, parametrar med låg prestanda, men de är långt från optimala, och du kommer att ha samma problem med någon allmän strategi som inte är optimerad för de mekaniska, elektriska och styrande aspekterna av ett givet system.

Svar

För små motorer med lågt vridmoment med liten eller ingen växling är en procedur som du kan använda för att få en bra baslinjelängd att undersöka dess svar på en störning.

För att ställa in en PID, använd följande steg:

  1. Ställ in alla förstärkningar till noll.
  2. Öka P-förstärkningen tills svaret på en störning är konstant svängning.
  3. Öka D-förstärkningen tills svängningarna försvinner (dvs. det är kritiskt dämpat).
  4. Upprepa steg 2 och 3 tills ökning av D-förstärkningen inte stoppar svängningarna.
  5. Ställ in P och D till de senaste stabila värdena.
  6. Öka I-förstärkningen tills den tar dig till börvärdet med antalet önskade svängningar (normalt noll men ett snabbare svar kan fås om du inte tänker några svängningar av överskjutning)

Vilken störning du använder beror på vilken mekanism styrenheten är ansluten till. Normalt är det tillräckligt att flytta mekanismen för hand bort från börvärdet och släppa. Om svängningarna blir större och större måste du minska P-förstärkning.

Om du ställer in D-förstärkningen för högt kommer systemet att börja chatta (vibrera vid en högre frekvens än P-förstärkningssvingningarna). Om detta händer, minska D-förstärkningen tills den slutar.

Jag tror att den här tekniken har ett namn. Jag lägger den här när jag hittar den.

Kommentarer

  • Låter som Ziegler-Nichols: sv.wikipedia.org/wiki/Ziegler%E2%80%93Nichols_method
  • @ Throwback1986, Detta är definitivt inte Ziegler-Nichols som bara använder P-förstärkning och var I- och D-förstärkningen beräknas därefter i enlighet med den oscillerande P-förstärkningen och svängningsperioden.
  • Har du ytterligare råd för att ställa in specifikt en robotarm som har flera fogar som behöver ställas in? Börjar du från basen och arbetar utåt till sluteffektorn, eller tvärtom, eller spelar det någon roll?
  • I en akademisk eller industriell miljö vill du ha en mer sofistikerad kontrollmetod. För en hobbiest; tyngdkraften har en dämpande effekt, så ställ in varje fog i den vinkel där tyngdkraften påverkar motorerna minst. Till exempel med armen riktad rakt upp så att tyngdkraften verkar på lagren och inte motorn. Beställning spelar ingen roll. Att lägga till en feedforward gravitationskompensationsterm till din kontroll är förmodligen den enklaste förbättringen (använd rekursivt Newton-Euler för en seriell arm) om du ’ inte kan få den prestanda du vill ha.
  • Verktyget pidtuner.com har gett mig bättre resultat än Ziegler-Nichols-metoden, som har flera kända nackdelar; folk.ntnu.no/skoge/publications/2003/tuningPID/more/…

Svar

En liknande experimentell metod som hauptmechs svar som jag lärde mig på college:

  1. Ställ alla vinster till 0.
  2. Öka Kd tills systemet svänger.
  3. Minska K d med en faktor på 2-4.
  4. Ställ in Kp på cirka 1% av K d .
  5. Öka Kp tills svängningarna börjar.
  6. Minska Kp med en faktor på 2-4.
  7. Ställ in Ki på ungefär 1% av Kp .
  8. Öka Ki tills svängningar börjar.
  9. Minska Ki med en faktor på 2-4.

Ziegler-Nichols-metoden är mer exakt om du kan få ett exakt antal för svängningsperioden. Det orsakar vanligtvis svängningar med ”cla ssic PID-siffror ges, så det är inte alltid optimalt.

För allmänna regler om effekten av varje term på stigningstid, överskridande, avvecklingstid, steady-state-fel och stabilitet, se tabell 1 av ”PID Control System Analysis and Design” , av Li, Ang och Chong i IEEE Control Systems Magazine.

Kommentarer

  • Kd först? Jag trodde alltid att det var bäst att börja med Kp.
  • Jag ’ jag transkriberar från gamla föreläsningsbilder, om det finns ’ en bra anledning att inte göra det på det sättet Jag ’ skulle vara nyfiken på att höra det.
  • Att ’ s algoritmen som jag förespråkar för ” byxans säte ” tuning. Det ’ kommer att få dig så nära du kan utan att modellera systemet eller mäta dess svar. (Modellering och / eller mätning är det enda sättet att gå om du verkligen behöver rätt tuning).
  • Tuning Kd först gör inte ’ t meningsfullt för mig , som i varje PID jag ’ har implementerat Kd-tecken är negativt. Det ’ används för att minska styrsignalen när mycket stora förändringar i fel inträffar, vilket i själva verket dämpar systemet. Om du bara har Kd kommer systemet att gå i motsatt riktning, öka felet och förvärra problemet. Om Kd är positivt kommer ’ att ’ gör att det ändras ännu snabbare och överskrider ditt mål.
  • Egentligen är det bra att ställa in D förstärkning först, men jag ’ antar att ” ökar ” D-förstärkning betyder att absolutvärdet ökar och det ’ ökar bara dämpningen. Det största problemet med D-förstärkning är att det förstärker högfrekvent brus och det ’ är trevligt att se den effekten utan P-förstärkningen. Så du ’ börjar i huvudsak med att leta efter vinsterna där det slutar fungera som dämpning och börjar förstärka brus och eftersläpna felsignaler. Jag ’ om jag antar för steg 2 måste du sticka din växt för att se om den svänger.

Svar

Embedded.com har flyttat min artikel ännu en gång, men här är den nu. Detta visar dig både hur man skriver en PID-slinga (ta reda på hur man gör det i något annat än flytande punkt är kvar som en övning för läsaren) och hur man ställer in den.

PID utan doktorsexamen

Det bästa sättet beror mycket på dina förmågor. Sättet att få bästa inställningen , förutsatt att du är en erfaren styrsystemhand, är vanligtvis att mäta växternas svar (”växt” == ”det du kontrollerar”), sedan beroende på hur du gjorde mätningarna extraherar du en modell av växten och designar till det, eller bara designar direkt efter mätningarna. mått, i vilket fall du måste gå ensam efter modeller. De är sällsynta, men tillfredsställande när du får dem att fungera.

Svar

Sebastian Thrun presenterade en enkel algoritm för att ställa in PID i sin ”Hur man programmerar en robotbil”. Det kallas ”twiddle”, han beskriver det här .

Twiddle är mycket benägen att hitta lokala minima – det betyder att du kan komma med en uppsättning av tre konstanter som är okej, men inte optimala för situationen. Problemet med att ställa in PID-konstanter är en delmängd av ett mer generellt sökproblem för att hitta vissa parametrar för att maximera nyttan ( i det här fallet, minimera felet i PID-algoritmen). Du kan titta på andra allmänna lösningar på detta problem, som bergsklättring, simulerad glödgning, genetiska algoritmer etc. som kan komma att hitta mer optimala lösningar.

Svar

Till skillnad från de andra två svaren skulle jag säga att ett bra manuellt sätt att ställa in en PID är att ignorera Kd. Så börja vid 0 och öka Kp tills du når målet, öka sedan Ki för att bli av med steady state-fel.

Kd kan förvirra problemet eftersom det reagerar dåligt på brus, då börjar du lägga till filter på din analoga ingång och sedan ifrågasätta vad det gör förutom att sakta ner din kontroll och göra det hela svårare att träna …

En annan sak som förvirrar mig är om PID-ekvationen är i standardform eller i en oberoende (parallell i wikipedia) form. Effekten av Ki verkar vara omvänd när formen är fel väg till vad du tror att den är. Båda typerna används i automatisering, ibland med möjlighet att växla mellan dem.

Svar

Systemmodellering

Naturligtvis kan experimentell inställning göras som nämnts i de andra svaren, men om du kan definiera en rimlig dynamisk modell för vad du vill kontrollera och kan identifiera dess parametrar , du bör kunna designa din controller baserat på väldefinierade kriterier som överskridning , stigtid , inställningstid , stabil -stat fel och så vidare.

Det finns till och med verktyg i MATLAB som kan ställa in din controller för att optimera för en kombination av dessa kriterier, vilket gör det ännu bättre att använda.

Känn din controller

Lär dig vad varje parameter i PID-kontroller gör är också ganska bra. Alla experimentella algoritmer är på något sätt baserade på denna typ av kunskap. Om du inte bara följer instruktionerna utan kan få den känslan själv kan det vara lättare att ställa in din handkontroll manuellt.

Verkliga problem

Det finns en chans att en av dessa saker bland annat kommer på väg när du ställer in din controller: windup , otillräcklig samplingshastighet , mättnad .

Slutsats

Till slut beror allt på vad du faktiskt kan göra med din system för att få lite kunskap om hur det fungerar och vilken typ av experiment som kan göras. Det bästa är att faktiskt lära sig mer om PID-styrenheter och styrteori i allmänhet, IMO, men jag är partisk 🙂

Kommentarer

  • I förstår inte ’ varför människor fortsätter att föreslå heuristik för att ställa in PID medan vi idag får massor av automatiska verktyg för anläggningsidentifiering och styrdesign som inte ’ t kräver djup teoretisk bakgrund. Tummen upp för det här svaret.

Svar

Jag kommer att försöka utöka lite från min erfarenhet för dem som kan vara intresserade. Jag tror att problemet är att vi har mycket kontrollteori som är något otillgängliga (och ibland inte användbara) och sedan har vi tumreglar som antar system som ofta är felaktiga.

Stabilitet

Låt oss tala först om varför kontrollöglor blir instabila. För denna diskussion antar jag ett linjärt system . Informellt betyder detta att om din styrsignal är en sinusvåg vid en given frekvens så är din observerade utgång på samma frekvens och om du ändrar amplituden för ditt styrsystem svarar din utgång i samma förhållande. Detta antagande är en bra approximation för många verkliga system och låter oss titta på olika frekvenser isolerat.

Om du tittar på kontrollvägen har du ett börvärde, din PID-styrenhet, ditt system (aka ”Plant”) och sedan din sensor. Föreställ dig en fast börpunkt och en sinusvåg från din sensor (detta är lika med en verklig störning i sensorn, återkopplad). I ett instabilt system får din feedback att styrslingan förstärker felet snarare än att minska det så att tiden ökar, ökar din amplitud. Anledningen till att detta händer beror på en fördröjning eller för denna frekvens en fasförskjutning mellan ingång och utgång. För en given frekvens kan vi titta på den öppna slingan (dvs ingen feedback) förskjutning och amplitud på utgången och när vi ritar alla dem i en graf får vi något som en Bode Plot . Om vi har en situation i det här öppna slingdiagrammet där felet fortsätter att förstärkas har vi ett instabilt system. Om fördröjningen är mindre än 1/2 våglängden eller förstärkningen är mindre än x1 blir systemet stabilt . I praktiken vill vi ha en viss marginal från den punkten (förstärkningsmarginal och fasmarginal) varför du ”kommer att se detta” backa upp ”i många av de manuella / heuristiska metoderna.

Det största problemet med dessa manualer metoder är att du flyger blind och du garanterar ganska mycket att du får ett dåligt kontrollsystem.

Tänk också på att betydelsen P, I och D är relaterad till vad din sensor mäter och vilken kontroll du tillämpar. Ett vanligt misstag i hembyggda styrenheter är att människor tror att de använder P när de faktiskt inte gör det. Motorstyrenheter har ofta en positionsslinga som löper över en hastighetsslinga som löper över en momentslinga. (A kaskad )

OK men hur hjälper det oss?

Den första punkten jag skulle vilja göra är att om du bygger en egen PID-kontroller bör du också bygga ett sätt att mäta den öppna slingan svar. Gör en frekvenssvep vid ingången till din styrenhet och mät sensorns utgång med återkopplingen frånkopplad. Sedan kan du rita den öppna slingan Bode-plot och se varför ditt system är stabilt och kan handla från de olika kontrollerna. Det är också användbart att mäta svaret på sluten slinga och du kan göra det med vilket system som helst genom att göra en frekvenssvep av ditt börvärde medan slingan är stängd. Båda dessa är inte så svåra och kräver inte mycket teoretisk kunskap.

Om du helt enkelt justerar kontrollerna utan att förstå vad som händer under huven kommer du inte att kunna för att optimera ditt system. Att bygga lite intuition om dessa system är inte så svårt. T.ex. den proportionella förstärkningen har ingen effekt på fas utan ökar helt enkelt öppen slingförstärkning över alla frekvenser. Så vad du gör när du ökar den proportionella förstärkningen i alla dessa manuella inställningsmetoder är att hitta frekvensen där fasen går till -180. Se detta för att få lite mer uppfattning om effekterna av de olika kontrollerna på ditt frekvensrespons.

Ofta får du bästa möjliga prestanda med sluten slinga justera systemet och inte bara styrenhetens vinster. Vad du vill är att göra systemet så ”styvt” som möjligt. På så sätt kan du öka kontrollparametrarna och få bästa bandbredd med öppen och sluten slinga. Enligt min erfarenhet av motorstyrningsapplikationer är den proportionella förstärkningen den som borde göra det mesta av ”arbetet” och integratorn ”resten”. Jag tror inte att du behöver en D-term alls. Att ha ett lågpassfilter och ett hackfilter hjälper mycket i situationer där du kan ha lite mekanisk resonans men att ställa in dem utan en Bode Plot är mycket svårt (svängningsfrekvensen du observerar under sluten slinga kan vara annorlunda än den öppna slingan).

Om säkerhet är ett problem (mycket kraftfulla motorer eller ett system som kan förstöras genom att motorn går ur kontroll) måste du sätta in några innan du börjar ställa in (t.ex. aktuell gräns, maximalt lägesfel) för att skydda systemet. Då måste du få någon form av känsla för parametrarnas intervall. Om din feedback har 40 räknas per rotation eller 4000 räknas per rotation dina parametrar kommer att vara en faktor 100 för ett visst system. Mitt tillvägagångssätt skulle vara att först hitta ett område där du har lite dålig kontrollerbarhet och sedan stiga upp därifrån med början med P och sedan jag (även om du åter flyger blind). Säkerhetskopiering skapar denna stabilitetsmarginal.

Bortom sluten slinga

Stängd slinga försöker ta bort felet från systemet. Det kommer alltid att ha en något begränsad prestanda. Vad du vill göra är att minimera det fel som din slutna slinga ser och ett sätt att göra det är genom en teknik som heter framåt . Vid matning framåt går du runt styrenheten och kör ett kommando direkt till systemet. Ett exempel på detta kan vara snabbmatning framåt. Om du vet att du är motorns momentkonstant och du vet belastning kan du ganska mycket berätta hur mycket ström du behöver köra för att få en viss acceleration av lasten. Du tar helt enkelt kommandoinmatningsacceleration, multiplicerar den med en konstant och lägger till det i styrenhetens körkommando. Du gör i princip vad som krävs för att driva systemet om det inte fanns någon styrenhet och ju närmare du kan komma desto mindre fel får din slinga att ta ut och desto bättre kommer ditt system att prestera. Det gör en enorm skillnad i praktiken.

Kommentarer

  • ” Enligt min erfarenhet av motorstyrningsapplikationer är den proportionella förstärkningen den som borde vara gör det mesta av ” arbete ” och integratorn ” vila ”. Jag tror inte ’ att du alls behöver en D-term. ” Jag håller med om det för typiska motorstyrningsapplikationer. P gör huvudarbetet och jag kompenserar för långvarig drift / fel. Men här kommer fyrhjulingen att utsättas för mycket extern turbulens, så D-termen är viktig för att få ett snabbt svar. för I-termen, såvida inte quad är i autonomt navigationsläge, är det är inte så avgörande.
  • @ dm76: Det mesta av min erfarenhet är med motorstyrning, och jag gör den ansvarsfriskrivningen 😉 Min intuition säger dock att det finns ’ är fortfarande utrymme för jag i quadcopterapplikation och jag tror att om P är mycket hög kan det hantera externa störningar (precis som det gör i motorstyrning). Jag skulle verkligen behöva titta närmare på dessa system för att säga något bestämt om fyrhjulingar …Jag tror att mycket av det jag säger här gäller (speciellt gör din inställning i frekvensdomänen och har systemets öppna slingansvar).
  • @ dm76: Och verkligen de ” tumregel ” PID-inställning resulterar i mycket medelmåttig prestanda i motorer och förmodligen samma i fyrkoptrar. Ibland kan ett välplacerat hackfilter göra en storleksskillnad …

Svar

Ziegler-Nichols är en enkel manuell metod. Mer robusta metoder finns också – dessa brukar förlita sig på matematiska lösningar (analytisk, iterativ optimering, etc.)

Utöver det, google ”självjusterande PID” för vissa automatiserade tekniker. Min favorit är tillämpningen av neurala nätverk på PID-inställning.

Svar

Om du vill ha en exakt PID-koefficient:

  • Få dina statistiska ställdondata (dvs. samlar in ingångsspänningar + kodarpulser i en konst ofta (0.01sec) tid för 20secs som 3 x 2000 matris)
  • Få överföringsfunktionen (TF) för din ställdon (med Ident verktygslåda i MATLAB).
  • Slutligen, använd PIDTool verktygslåda i MATLAB och ladda upp din transformfunktion.

Eller på ett snabbt och enkelt sätt:

Det finns ett snabbare tillvägagångssätt som heter Ziegler – Nichols : enter bildbeskrivning här

Och i den här bilden visar PID-parametrar effekter :
PID-parametrar påverkar

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *