Hva er gode strategier for innstilling av PID-sløyfer?

Innstilling av kontrollergevinster kan være vanskelig, hva generelt strategier fungerer bra for å få et stabilt system som konvergerer til riktig løsning?

Kommentarer

  • Et spørsmål målrettet mot et mer spesifikt spørsmål vil være mer nyttig. Ellers bør du bare se på PID -artikkelen, med et avsnitt om innstilling
  • I ‘ har alltid funnet at avstemming av PID er veldig avhengig av egenskapene til systemet, og det er grunnen til at jeg ‘ aldri har funnet autojustering -systemer veldig nyttig. De er fine for et første pass, sett med lave ytelsesparametere, men de er langt fra optimale, og du vil ha det samme problemet med alle generelle strategier som ikke er optimalisert for de mekaniske, elektriske og kontrollaspektene av et gitt system.

Svar

For små motorer med lite dreiemoment med liten eller ingen giring, er en prosedyre du kan bruke for å få en god baseline-tune å undersøke svaret på en forstyrrelse.

For å tune en PID, bruk følgende trinn:

  1. Sett alle gevinster til null.
  2. Øk P-forsterkningen til responsen på en forstyrrelse er jevn svingning.
  3. Øk D-forsterkningen til svingningene forsvinner (dvs. den er kritisk dempet).
  4. Gjenta trinn 2 og 3 til økning av D-forsterkningen ikke stopper svingningene.
  5. Sett P og D til de siste stabile verdiene.
  6. Øk I-gevinsten til den bringer deg til innstillingspunktet med ønsket oscillasjon (vanligvis null, men en raskere respons kan oppnås hvis du ikke har noe imot et par oscillasjoner av overskudd)

Hvilken forstyrrelse du bruker, avhenger av mekanismen kontrolleren er festet til. Normalt er nok å bevege mekanismen for hånd vekk fra settpunktet og slippe. Hvis svingningene blir større og større, må du redusere P-forsterkning.

Hvis du setter D-forsterkningen for høyt, vil systemet begynne å skravle (vibrere med en høyere frekvens enn P-forsterkningsoscillasjonene). Hvis dette skjer, reduser D-forsterkningen til den stopper.

Jeg tror denne teknikken har et navn. Jeg vil sette den her når jeg finner den.

Kommentarer

  • Høres ut som Ziegler-Nichols: en.wikipedia.org/wiki/Ziegler%E2%80%93Nichols_method
  • @ Throwback1986, Dette er definitivt ikke Ziegler-Nichols som bare bruker P-gevinsten og hvor I- og D-forsterkning blir deretter beregnet tilsvarende fra den oscillerende P-forsterkningen og svingningsperioden
  • Har du ytterligere råd for å innstille spesifikt en robotarm som har flere ledd som trenger innstilling? Starter du fra basen og jobber utover til endeffektoren, eller omvendt, eller betyr det til og med noe?
  • I en akademisk eller industriell setting vil du ha en mer sofistikert kontrollmetode. For en hobbiest; tyngdekraften har en dempende effekt, så still inn hver skjøt i vinkelen der tyngdekraften påvirker motorene minst. For eksempel med armen som peker rett opp slik at tyngdekraften virker på lagrene og ikke motoren. Orden spiller ingen rolle. Å legge til en feedforward tyngdekompensasjonsperiode til kontrollen din er sannsynligvis den enkleste forbedringen (bruk rekursiv Newton-Euler for en seriearm) hvis du ikke kan ‘ t får den ytelsen du ønsker. >
  • Verktøyet pidtuner.com har gitt meg bedre resultater enn Ziegler-Nichols-metoden, som har flere kjente ulemper; folk.ntnu.no/skoge/publications/2003/tuningPID/more/…

Svar

En lignende eksperimentell metode som hauptmechs svar som jeg ble lært på college:

  1. Sett alle gevinster til 0.
  2. Øk Kd til systemet svinger.
  3. Reduser K d med en faktor på 2-4.
  4. Sett Kp til omtrent 1% av K d .
  5. Øk Kp til svingninger starter.
  6. Reduser Kp med en faktor på 2-4.
  7. Still Ki til omtrent 1% av Kp .
  8. Øk Ki til svingninger starter.
  9. Reduser Ki med en faktor på 2-4.

Ziegler-Nichols-metoden er mer presis hvis du kan få et nøyaktig tall for svingningsperioden. Det forårsaker vanligvis svingninger ved å bruke «cla ssic PID «-tall gitt, så det er ikke alltid optimalt.

For generelle regler om effekten av hvert begrep på stigetid, overskridelse, avregningstid, steady-state feil og stabilitet, se tabell 1 av «PID Control System Analysis and Design» , av Li, Ang og Chong i IEEE Control Systems Magazine.

Kommentarer

  • Kd først? Jeg trodde alltid at det var best å starte med Kp.
  • Jeg ‘ m transkriberer fra gamle forelesningsbilder, hvis det ‘ en god grunn til ikke å gjøre det på den måten. Jeg ‘ ville være nysgjerrig på å høre det.
  • At ‘ s algoritmen som jeg går inn for » sete på buksen » tuning. Det ‘ kommer til å komme deg så nært du kan uten å modellere systemet eller måle dets respons. (Modellering og / eller måling er den eneste veien å gå hvis du virkelig trenger riktig innstilling).
  • Innstilling av Kd først gir ikke ‘ ikke mening for meg , som i alle PID I ‘ har implementert tegnet på Kd er negativt. Det ‘ brukes til å redusere styresignalet når det oppstår svært store endringer i feil, som i virkeligheten demper systemet. Hvis du bare har Kd, vil systemet bevege seg i motsatt retning, øke feilen og forverre problemet. Hvis Kd er positiv, vil ‘ når det skjer en stor endring i feilen, gjøre at den endres enda raskere og overskytter målet ditt.
  • Egentlig gir tuning av D forsterkning først mening, men jeg ‘ m forutsatt at » øker » D-forsterkning betyr økende absoluttverdi, og det ‘ øker bare demping. Det største problemet med D-forsterkning er at den forsterker høyfrekvent støy og det ‘ er hyggelig å se den effekten uten P-forsterkningen. Så du ‘ begynner egentlig å lete etter gevinstene der den slutter å oppføre seg som demping og begynner å forsterke støy og forsinkede feilsignaler. Jeg ‘ Jeg antar for trinn 2, du må stikke anlegget ditt for å se om det svinger.

Svar

Embedded.com har flyttet artikkelen min enda en gang, men her er der den er nå. Dette viser deg både hvordan du skriver en PID-løkke (å finne ut hvordan du gjør det i noe annet enn flytende punkt, er igjen som en øvelse til leseren) og hvordan du kan stille den.

PID Uten doktorgrad

Den beste måten avhenger mye av dine evner. Måten å få best tuning , forutsatt at du er en erfaren kontrollsystemhånd, er vanligvis å måle reaksjonen til anlegget («plante» == «tingen du kontrollerer»), avhengig av hvordan du utførte målingene, hentet ut en modell av anlegget og designet til det, eller bare design direkte til målene.

For visse vanskelige planter vil du finne ut at du aldri kan gjøre tilfredsstillende målinger, i så fall må du gå etter modeller alene. Disse er sjeldne, men tilfredsstillende når du får dem til å fungere.

Svar

Sebastian Thrun presenterte en enkel algoritme for å stille inn PID i sin «Hvordan programmere en robotbil» -klasse. Det kalles «twiddle», han beskriver det her .

Twiddle er veldig utsatt for å finne lokale minima – dette betyr at du kunne komme med et sett med tre konstanter som er i orden, men ikke optimale for situasjonen. Problemet med å stille PID-konstanter er en delmengde av et mer generelt søkeproblem for å finne bestemte parametere for å maksimere verktøyet ( i dette tilfellet, minimering av feil i PID-algoritmen). Du kan se på andre generelle løsninger på dette problemet, som å klatre, simulert annealing, genetiske algoritmer osv. som kan ende opp med å finne mer optimale løsninger.

Svar

I motsetning til de to andre svarene vil jeg si at en god manuell måte å innstille en PID på er å ignorere Kd. Så start ved 0 og øk Kp til du kommer til målet, og øk deretter Ki for å bli kvitt steady state-feil.

Kd kan forvirre problemet da det reagerer dårlig på støy, så begynner du å legge til filtre på den analoge inngangen din, og spør deretter hva det gjør i tillegg til å redusere kontrollen din og gjøre det hele vanskeligere å trene …

En annen ting som forvirrer meg er at PID-ligningen er i standardform eller i en uavhengig (parallell i wikipedia) form. Virkningen av Ki ser ut til å vende om når formen er feil vei til hva du tror det er. Begge typene brukes i automatisering, noen ganger med muligheten til å bytte mellom dem.

Svar

Systemmodellering

Selvfølgelig kan eksperimentell tuning gjøres som nevnt i de andre svarene, men hvis du er i stand til å definere en rimelig dynamisk modell for hva du vil kontrollere og er i stand til å identifisere parametrene , bør du kunne designe kontrolleren din basert på veldefinerte kriterier som overskridelse , stigetid , avregningstid , jevn -stat feil og så videre.

Det er til og med verktøy i MATLAB som er i stand til å stille kontrolleren din til å optimalisere for en kombinasjon av disse kriteriene, noe som gjør det enda bedre å bruke.

Kjenn kontrolleren din

Lær hva hver parameter i PID-kontroller gjør det også. Alle eksperimentelle algoritmer er på en eller annen måte basert på denne typen kunnskap. Hvis du ikke bare følger instruksjonene, men klarer å få den følelsen selv, kan det være lettere å stille inn kontrolleren din manuelt.

Virkelige problemer

Det er en sjanse for at en av disse tingene blant annet kommer på vei når du stiller inn kontrolleren din: windup , utilstrekkelig samplingsfrekvens , metning .

Konklusjon

Til slutt kommer alt an på hva du faktisk kan gjøre med din system for å få litt kunnskap om hvordan det fungerer og hva slags eksperimentering som kan gjøres. Det beste er faktisk å lære mer om PID-kontrollere og kontrollteori generelt, IMO, men jeg er partisk 🙂

Kommentarer

  • I ikke ‘ t forstå hvorfor folk fortsetter å foreslå heuristikk for å stille PID mens vi i dag er utstyrt med mange automatiske verktøy for anleggsidentifikasjon og kontrollerdesign som ikke ‘ t krever dyp teoretisk bakgrunn. Tommel opp for dette svaret da.

Svar

Jeg vil prøve å utvide litt fra min erfaring for de som kan være interessert. Jeg tror problemet er at vi har mye kontrollteori som er noe utilgjengelig (og noen ganger ikke nyttig), og så har vi tommelfingerregler som gir antagelser om systemer som ofte er unøyaktige.

Stabilitet

La oss snakke først om hvorfor kontrollløkker blir ustabile. For denne diskusjonen vil jeg anta et lineært system . Uformelt betyr dette at hvis styresignalet ditt er en sinusbølge ved en gitt frekvens, så er den observerte utgangen din på samme frekvens, og hvis du endrer amplituden til kontrollsystemet ditt, svarer utgangen din i samme forhold. Denne antagelsen er en god tilnærming for mange virkelige systemer og lar oss se på forskjellige frekvenser isolert.

Hvis du ser på kontrollstien, har du et settpunkt, din PID-kontroller, systemet ditt (aka «Plant»), og deretter sensoren din. Tenk deg et fast settpunkt og en sinusbølge fra sensoren din (dette tilsvarer en forstyrrelse fra den virkelige verden ved sensoren, tilbakekalt). I et ustabilt system får tilbakemeldingen kontrollsløyfen til å forsterke feilen i stedet for å redusere den slik at amplituden øker etter hvert som tiden øker. Årsaken til at dette skjer skyldes en forsinkelse, eller for denne frekvensen et faseskift mellom inngang og utgang. For en gitt frekvens kan vi se på den åpne sløyfen (dvs. ingen tilbakemelding) forskyvning og amplitude på utgangen, og når vi tegner alle de på en graf, får vi noe sånt som et Bode Plot . Hvis vi har en situasjon i denne åpne sløyfediagrammet der feilen stadig blir forsterket, har vi et ustabilt system. Hvis forsinkelsen er mindre enn 1/2 bølgelengden eller forsterkningen er mindre enn x1, vil systemet være stabilt . I praksis vil vi ha litt margin fra dette punktet (forsterkningsmargin og fasemargin), og det er grunnen til at du «vil se dette» baksides «i mange av de manuelle / heuristiske metodene.

Hovedproblemet med denne håndboken metoder er at du flyr blind og du er ganske garantert å få et dårlig kontrollsystem.

Husk også at betydningen P, I og D er relatert til det sensoren din måler og hvilken kontroll du bruker. En vanlig feil i hjemmebyggede kontrollere er at folk tror de bruker P når de faktisk ikke er det. Motorkontrollere har ofte en posisjonssløyfe, som kjører over en hastighetssløyfe som går over en dreiemomentløkke. (A kaskade )

OK, men hvordan hjelper dette oss?

Det første punktet jeg ønsker å gjøre er at hvis du bygger din egen PID-kontroller, bør du også bygge en måte å måle den åpne sløyfen på. respons. Gjør en frekvenssveiping på inngangen til kontrolleren din og mål sensorens utgang med tilbakemeldingen frakoblet. Deretter kan du tegne den åpne sløyfen Bode-plottet og se hvorfor systemet ditt er stabilt og være i stand til å handle av de forskjellige kontrollene. Det er også nyttig å måle responsen med lukket sløyfe, og du kan gjøre det med hvilket som helst system ved å utføre en frekvensfeiring av innstillingspunktet mens sløyfen er lukket. Begge disse er ikke så harde og krever ikke mye teoretisk kunnskap.

Hvis du bare justerer kontrollene uten å forstå hva som skjer under panseret, vil du ikke kunne for å optimalisere systemet ditt. Å bygge litt intuisjon om disse systemene er ikke så vanskelig. F.eks. den proporsjonale forsterkningen har ingen effekt på fasen, men øker ganske enkelt åpen sløyfeforsterkning over alle frekvenser. Så det du gjør når du øker den proporsjonale forsterkningen i alle disse manuelle innstillingsmetodene, er å finne frekvensen der fasen går til -180. Se dette for å få litt mer ide om effekten av de forskjellige kontrollene på frekvensresponsen din.

Ofte innebærer det å få best ytelse med lukket sløyfe justering av systemet og ikke bare kontrolleren gevinster. Det du ønsker er å gjøre systemet så «stivt» som mulig. Dette lar deg øke kontrollparametrene og få den beste åpne og lukkede båndbredden. I min erfaring med motorstyringsapplikasjoner er den proporsjonale forsterkningen den som skal gjøre det meste av «arbeidet» og integratoren «resten». Jeg tror ikke du trenger et D-uttrykk i det hele tatt. Å ha et lavpassfilter og et hakkfilter hjelper mye i situasjoner der du kan ha litt mekanisk resonans, men å sette dem uten en Bode-plott er veldig vanskelig (svingningsfrekvensen du observerer under lukket sløyfe kan være annerledes enn den åpne sløyfen).

Hvis sikkerhet er en bekymring (veldig kraftige motorer eller et system som kan bli ødelagt av at motoren går ut av kontroll), må du sette inn noen grenser før du begynner å innstille (f.eks. nåværende grense, maksimal posisjonsfeil) for å beskytte systemet. Da må du få en slags følelse av rekkevidden til parameterne. Hvis tilbakemeldingen din har 40 teller per rotasjon eller 4000 teller per rotasjon, vil parametrene dine vil være en faktor på 100 for et gitt system. Min tilnærming vil være å først finne et område der du har dårlig kontrollerbarhet, og deretter rampe opp derfra og begynne med P og deretter jeg (men igjen flyr du blind). Sikkerhetskopiering skaper denne stabilitetsmarginen.

Utover lukket sløyfe

Lukket sløyfe prøver å fjerne feilen fra systemet. Det vil alltid ha en noe begrenset ytelse. Det du vil gjøre er å minimere feilen din lukkede sløyfekontrolleren ser, og en måte å gjøre det på er gjennom en teknikk som heter feed fremover . I feed-forward går du rundt kontrolleren og kjører en kommando direkte til systemet. Et eksempel på det ville være akselerasjon feed-forward. Hvis du vet at du er motorens dreiemomentkonstant og du vet belastning kan du ganske mye fortelle hvor mye strøm du trenger for å kjøre for å få en viss akselerasjon av lasten. Du tar ganske enkelt kommandoinngangsakselerasjonen, multipliserer den med en konstant og legger til i kontrollerens stasjonskommando. Du gjør i utgangspunktet det som skal til for å kjøre systemet hvis det ikke var noen kontroller, og jo nærmere du kan komme, desto mindre feil må løkken din ta, og jo bedre vil systemet utføre. Det gjør en stor forskjell i praksis. / p>

Kommentarer

  • » Etter min erfaring med motorstyringsapplikasjoner er den proporsjonale forsterkningen den som skal være gjør det meste av » arbeidet » og integratoren » resten «. Jeg tror ikke ‘ jeg trenger ikke en D-term i det hele tatt. » Jeg er enig i det for typisk motorstyringsapplikasjon. P gjør hovedjobben og jeg kompenserer for langsiktig drift / feil. Men her vil quadcopter bli utsatt for mye ekstern turbulens, så D-begrepet er viktig for å få rask respons. for jeg-begrepet, med mindre quad er i autonom navigasjonsmodus, er det er ikke så viktig.
  • @ dm76: Det meste av min erfaring er med motorstyring, og jeg gjør den ansvarsfraskrivelsen 😉 Min intuisjon sier imidlertid at der ‘ er fortsatt rom for jeg i quadcopter-applikasjon, og jeg tror at hvis P er veldig høy, kan det håndtere eksterne forstyrrelser (akkurat som det gjør i motorstyring). Jeg må virkelig se nærmere på disse systemene for å si noe bestemt om quadcopters …Jeg tror mye av det jeg sier her gjelder (gjør spesielt din innstilling i frekvensdomenet og har systemets åpne looprespons).
  • @ dm76: Og egentlig de » tommelfingerregel » PID-innstilling resulterer i veldig middelmådig ytelse i motorer og antagelig den samme i quadcopters. Noen ganger kan et godt plassert hakkfilter gjøre en størrelsesorden forskjell …

Svar

Ziegler-Nichols er en enkel manuell metode. Mer robuste metoder eksisterer også – disse er vanligvis avhengige av matematiske løsninger (analytisk, iterativ optimalisering osv.)

Utover det, google «self-tuning PID» for noen automatiserte teknikker. Min favoritt er anvendelsen av nevrale nettverk til PID-innstilling.

Svar

Hvis du vil ha en nøyaktig PID-koeffisient:

  • Få statistiske aktuatordata (dvs. samle inngangsspenninger + kodepulser i en konst ofte (0.01sec) tid for 20secs som 3 x 2000 matrise)
  • Få overføringsfunksjon (TF) til aktuatoren din (ved hjelp av Ident verktøykasse i MATLAB).
  • Til slutt, bruk PIDTool verktøykasse i MATLAB og last opp transformasjonsfunksjonen din.

Eller på en rask og enkel måte:

Det er en raskere tilnærming kalt Ziegler – Nichols : enter bildebeskrivelse her

Og i dette bildet demonstrer PID-parametereffekter :
PID-parametereffekter

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *