Tuning af controllergevinster kan være vanskelige, hvad generelt strategier fungerer godt for at få et stabilt system, der konvergerer til den rigtige løsning?
Kommentarer
- Et spørgsmål målrettet mod et mere specifikt spørgsmål ville være mere nyttig. Ellers skal du bare se på PID -artiklen med et afsnit om tuning
- I ‘ har altid fundet, at tuning af PIDer er meget afhængige af systemets egenskaber, hvorfor jeg ‘ aldrig har fundet auto-tune -systemer frygtelig nyttigt. De er fine til et første pas, lavt præstationssæt med parametre, men de er langt fra optimale, og du vil have det samme problem med enhver generel strategi, der ikke er optimeret til de mekaniske, elektriske og styringsmæssige aspekter af et givet system.
Svar
For små motorer med lavt moment med lille eller ingen gearing er en procedure, du kan bruge til at få en god baseline-tune, at undersøge dens reaktion på en forstyrrelse.
For at tune en PID skal du bruge følgende trin:
- Sæt alle forstærkninger til nul.
- Forøg P-forstærkningen, indtil reaktionen på en forstyrrelse er konstant svingning.
- Forøg D-forstærkningen, indtil svingningerne forsvinder (dvs. det er kritisk dæmpet).
- Gentag trin 2 og 3, indtil stigningen i D-forstærkning ikke stopper svingningerne.
- Indstil P og D til de sidste stabile værdier.
- Forøg I-forstærkning, indtil den bringer dig til sætpunktet med det ønskede antal svingninger (normalt nul, men der kan opnås hurtigere svar, hvis du ikke har noget imod et par svingninger af overskridelse)
Hvilken forstyrrelse du bruger, afhænger af den mekanisme, styreenheden er fastgjort til. Normalt er det nok at flytte mekanismen manuelt væk fra setpunktet og give slip. Hvis svingningerne bliver større og større, skal du reducere P-forstærkning.
Hvis du indstiller D-forstærkning for højt, begynder systemet at chatte (vibrere med en højere frekvens end P-forstærkningssvingningerne). Hvis dette sker, skal du reducere D-forstærkningen, indtil den stopper.
Jeg tror, at denne teknik har et navn. Jeg vil lægge den her, når jeg finder den.
Kommentarer
- Lyder som Ziegler-Nichols: da.wikipedia.org/wiki/Ziegler%E2%80%93Nichols_method
- @ Throwback1986, Dette er bestemt ikke Ziegler-Nichols, som kun bruger P-forstærkning og hvor I- og D-forstærkning beregnes derefter i overensstemmelse med den oscillerende P-forstærkning og svingningsperioden
- Har du yderligere råd til at indstille specifikt en robotarm, der har flere led, der har brug for tuning? Starter du fra basen og arbejder udad til sluteffektoren eller omvendt, eller betyder det endda noget?
- I en akademisk eller industriel indstilling vil du have en mere sofistikeret kontrolmetode. For en hobbiest; tyngdekraften har en dæmpende virkning, så indstil hver samling i den vinkel, hvor tyngdekraften påvirker motorerne mindst. For eksempel med armen pegende lige op, så tyngdekraften virker på lejerne og ikke motoren. Orden betyder ikke noget. Tilføjelse af en feedforward tyngdekompensationsperiode til din kontrol er sandsynligvis den nemmeste forbedring (brug rekursivt Newton-Euler til en seriel arm), hvis du ikke kan ‘ t får den ønskede ydeevne.
- pidtuner.com værktøjet har givet mig bedre resultater end Ziegler-Nichols-metoden, som har flere kendte ulemper; folk.ntnu.no/skoge/publications/2003/tuningPID/more/…
Svar
En lignende eksperimentel metode til hauptmechs svar, som jeg fik undervisning på college:
- Sæt alle gevinster til 0.
- Forøg Kd indtil systemet svinger.
- Reducer K d med en faktor på 2-4.
- Indstil Kp til ca. 1% af K d .
- Forøg Kp indtil svingninger starter.
- Formindsk Kp med en faktor på 2-4.
- Indstil Ki til ca. 1% af Kp .
- Forøg Ki indtil svingninger starter.
- Sænk Ki med en faktor på 2-4.
Ziegler-Nichols-metoden er mere præcis, hvis du kan få et nøjagtigt tal for svingningsperioden. Det forårsager generelt svingninger ved hjælp af “cla ssic PID-tal er givet, så det er ikke altid optimalt.
For generelle regler om virkningen af hvert udtryk på stigetid, overskridelse, afregningstid, steady-state-fejl og stabilitet, se tabel 1 af “PID Control System Analysis and Design” , af Li, Ang og Chong i IEEE Control Systems Magazine.
Kommentarer
- Kd først? Jeg troede altid, at det var bedst at starte med Kp.
- Jeg ‘ m transkriberer fra gamle forelæsningsglas, hvis der ‘ en god grund til ikke at gøre det på den måde Jeg ‘ ville være nysgerrig efter at høre det.
- At ‘ er den algoritme, som jeg fortaler for ” sædet til bukserne ” tuning. Det ‘ kommer til at komme dig så tæt som muligt uden at modellere systemet eller måle dets svar. (Modellering og / eller måling er den eneste vej at gå, hvis du virkelig har brug for den rigtige indstilling).
- Indstilling af Kd først giver ikke ‘ t nogen mening for mig , som i alle PID I ‘ har implementeret tegnet på Kd er negativt. Det ‘ bruges til at reducere styresignalet, når der opstår meget store ændringer i fejl, hvilket i det væsentlige dæmper systemet ned. Hvis du kun har Kd, bevæger systemet sig i den modsatte retning, øger fejlen og forværrer problemet. Hvis Kd er positiv, skal du ‘, når der sker en stor ændring i fejlen, i den rigtige retning.
- Faktisk giver tuning af D forstærkning først mening, men jeg ‘ m forudsat at ” øger ” D-forstærkning betyder stigende absolut værdi, og det ‘ er kun stigende dæmpning. Det største problem med D-forstærkning er, at det forstærker højfrekvent støj, og det ‘ er rart at se den effekt uden P-forstærkning. Så ‘ starter i det væsentlige med at lede efter de gevinster, hvormed det holder op med at opføre sig som dæmpning og begynder at forstærke støj og forsinkede fejlsignaler. Jeg ‘ hvis jeg antager til trin 2, skal du stikke din plante for at se, om den svinger.
Svar
Embedded.com har endnu en gang flyttet min artikel, men her er hvor den er nu. Dette viser dig både, hvordan man skriver en PID-løkke (at finde ud af, hvordan man gør det i noget andet end flydende punkt, er tilbage som en øvelse for læseren), og hvordan man indstiller det.
Den bedste måde afhænger meget af dine evner. Vejen til at få den bedste indstilling forudsat at du er en erfaren styresystemhånd, er normalt at måle plantens respons (“plante” == “den ting, du” styrer “), så afhængigt af hvordan du foretog målingerne, udvind en model af anlægget og design til det eller bare design direkte til målingerne.
For visse vanskelige planter vil du finde ud af, at du aldrig kan gøre tilfredsstillende målinger, i hvilket tilfælde du skal gå efter modeller alene. Disse er sjældne, men tilfredsstillende, når du får dem til at fungere.
Svar
Sebastian Thrun præsenterede en simpel algoritme til tuning af PID i sin “Sådan programmeres en robotbil”. Det kaldes “twiddle”, han beskriver det her .
Twiddle er meget tilbøjelig til at finde lokale minima – det betyder, at du kunne komme med et sæt med tre konstanter, der er okay, men ikke optimale for situationen. Problemet med at indstille PID-konstanter er en delmængde af et mere generelt søgeproblem for at finde bestemte parametre for at maksimere nytteværdien ( i dette tilfælde minimering af PID-algoritmens fejl). Du kan se på andre generelle løsninger på dette problem, såsom bjergbestigning, simuleret udglødning, genetiske algoritmer osv., der måske ender med at finde mere optimale løsninger.
Svar
I modsætning til de to andre svar vil jeg sige, at en god manuel måde at indstille en PID på er at ignorere Kd. Så start ved 0 og øg Kp, indtil du når målet, og øg derefter Ki for at slippe af med steady state-fejl.
Kd kan forvirre problemet, da det reagerer dårligt på støj, så begynder du at tilføje filtre på din analoge indgang, og spørg derefter, hvad det gør udover at bremse din kontrol og gøre det hele sværere at træne …
En anden ting, der er bundet til at forvirre mig, er, hvis PID-ligningen er i standardform eller i en uafhængig (parallel i wikipedia) form. Virkningen af Ki ser ud til at vende om, når formularen er den forkerte vej til hvad du synes, den er. Begge typer bruges i automatisering, nogle gange med mulighed for at skifte mellem dem.
Svar
Systemmodellering
Selvfølgelig kan eksperimentel tuning udføres som nævnt i de andre svar, men hvis du er i stand til at definere en rimelig dynamisk model for hvad du vil kontrollere og er i stand til identificer dens parametre , skal du være i stand til at designe din controller baseret på veldefinerede kriterier såsom overskridelse , stigetid , afregningstid , stabil -stat fejl og så videre.
Der er endda værktøjer i MATLAB , der er i stand til at indstille din controller til at optimere til en kombination af disse kriterier, hvilket gør det endnu bedre at bruge.
Kend din controller
Lær hvad hver parameter i PID-controller gør det også ret nyttigt. Alle de eksperimentelle algoritmer er på en eller anden måde baseret på denne form for viden. Hvis du ikke kun følger instruktionerne, men selv er i stand til at få den følelse, kan det være lettere for dig at indstille din controller manuelt.
Problemer i den virkelige verden
Der er en chance for, at en af disse ting blandt andet kommer på vej, når du indstiller din controller: windup , utilstrækkelig samplingshastighed , mætning .
Konklusion
I sidste ende afhænger det hele af, hvad du rent faktisk kan gøre med din system for at få lidt viden om, hvordan det fungerer, og hvilken slags eksperimenter der kan udføres. Det bedste er faktisk at lære mere om PID-controllere og kontrolteori generelt, IMO, men jeg er forudindtaget 🙂
Kommentarer
- I forstår ikke ‘ hvorfor folk fortsætter med at foreslå heuristik til tuning af PID, mens vi i dag er forsynet med masser af automatiske værktøjer til planteidentifikation og controller-design, som ikke id = “fc18e3c2d2”>
t kræver dyb teoretisk baggrund. Tommelfinger op for dette svar derefter.
Svar
Jeg vil prøve at udvide lidt fra min erfaring til dem, der kan være interesserede. Jeg tror, at problemet er, at vi har en masse kontrolteori, der er noget utilgængelig (og nogle gange ikke nyttig), og så har vi tommelfingerregler, der antager antagelser om systemer, der ofte er unøjagtige.
Stabilitet
Lad os først tale om, hvorfor kontrolsløjfer bliver ustabile. Til denne diskussion antager jeg et lineært system . Uformelt betyder det, at hvis dit styresignal er en sinusbølge ved en given frekvens, så er din observerede output på den samme frekvens, og hvis du ændrer amplituden på dit styresystem, svarer din output i det samme forhold. Denne antagelse er en god tilnærmelse til mange virkelige verdenssystemer og lader os se på forskellige frekvenser isoleret.
Hvis du ser på kontrolstien, har du et sætpunkt, din PID-controller, dit system (aka “Plant”), og derefter din sensor. Forestil dig et fast sætpunkt og en sinusbølge fra din sensor (dette svarer til en forstyrrelse i den virkelige verden ved sensoren, fodret tilbage). I et ustabilt system får din feedback kontrolsløjfen til at forstærke fejlen i stedet for at reducere den, så når tiden øges, øges din amplitude. Årsagen til dette sker skyldes en forsinkelse, eller for denne særlige frekvens er et faseskift mellem input og output. For en given frekvens kan vi se på det åbne loop (dvs. ingen feedback) forskydning og amplitude af output, og når vi tegner alle dem på en graf, får vi noget i retning af et Bode Plot . Hvis vi har en situation i denne åbne sløjfediagram, hvor fejlen bliver forstærket, har vi et ustabilt system. Hvis forsinkelsen er mindre end 1/2 bølgelængden eller forstærkningen er mindre end x1, vil systemet være stabilt . I praksis vil vi have en vis margen fra dette punkt (gevinstmargen og fasemargin), hvorfor du “vil se dette” bakke op “i mange af de manuelle / heuristiske metoder.
Det største problem med disse manualer metoder er, at du ”flyver blind, og du” er stort set garanteret at få et dårligt kontrolsystem.
Husk også, at betydningen P, I og D er relateret til, hvad din sensor måler og hvilken kontrol du anvender. En almindelig fejl i hjemmebyggede controllere er, at folk tror, at de “anvender P, når de” faktisk ikke er det. Motorstyringer har ofte en positionssløjfe, der løber over en hastighedssløjfe, der løber over en momentsløjfe. (A kaskade )
OK, men hvordan hjælper dette os?
Det første punkt, jeg gerne vil gøre, er, at hvis du “bygger din egen PID-controller, skal du også bygge en måde at måle den åbne sløjfe på respons. Foretag en frekvensfejning ved indgangen til din controller og mål sensorens output med feedback frakoblet. Derefter kan du tegne det åbne loop-Bode-plot og se hvorfor dit system er stabilt og være i stand til at handle fra de forskellige kontroller. Det er også nyttigt at måle den lukkede sløjfesvar, og du kan gøre det med ethvert system ved at foretage en frekvensfejning af dit sætpunkt, mens sløjfen er lukket. Begge disse er ikke så hårde og kræver ikke en masse teoretisk viden.
Hvis du bare tilpasser kontrollerne uden nogen forståelse for, hvad der foregår under emhætten, vil du ikke være i stand til for at optimere dit system. At opbygge noget intuition om disse systemer er ikke så svært. For eksempel. den forholdsmæssige forstærkning har ingen effekt på fasen, men forøger blot den åbne sløjfeforstærkning på tværs af alle frekvenser. Så hvad du laver, når du øger den proportionelle forstærkning i alle disse manuelle indstillingsmetoder, er at finde frekvensen, hvor fasen går til -180. Se dette for at få lidt mere idé om indvirkningen af de forskellige kontroller på dit frekvensrespons.
Ofte involverer det bedst at få den bedste lukkede ydeevne tilpasning af systemet og ikke kun controlleren vinder. Hvad du ønsker er at gøre systemet så “stift” som muligt. Dette giver dig mulighed for at øge kontrolparametrene og få den bedste åbne og lukkede båndbredde. Efter min erfaring inden for motorstyringsapplikationer er den proportionelle gevinst den, der skal udføre det meste af “arbejdet” og integratoren “resten”. Jeg tror slet ikke, at du har brug for et D-udtryk. At have et lavpasfilter og et hakfilter hjælper meget i situationer, hvor du muligvis har en vis mekanisk resonans, men at indstille dem uden et Bode-plot er meget vanskeligt (den svingningsfrekvens, du observerer under lukket sløjfe kan være anderledes end den åbne sløjfe en.
Hvis sikkerhed er et problem (meget kraftige motorer eller et system, der kan blive ødelagt af motoren, der går ud af kontrol), skal du sætte nogle ind grænser inden du begynder at tune (f.eks. nuværende grænse, maksimal positionsfejl) for at beskytte systemet. Så skal du få en slags fornemmelse for rækkevidden af parametrene. Hvis din feedback har 40 tæller pr. rotation eller 4000 tæller pr. rotation dine parametre vil være en faktor på 100 for et givet system. Min tilgang ville være at først finde et interval, hvor du har en vis dårlig kontrol, og derefter rampe op derfra startende med P og derefter jeg (selvom du igen flyver blind). Backing off skaber denne stabilitetsmargen.
Ud over lukket sløjfe
Lukket sløjfe forsøger at fjerne fejlen fra systemet. Det vil altid have en noget begrænset ydeevne. Hvad du vil gøre er at minimere den fejl, din lukkede sløjfecontroller ser, og en måde at gøre det på er gennem en teknik kaldet feed fremad . I feed-forward går du rundt i controlleren og kører en kommando direkte til systemet. Et eksempel på det ville være acceleration feed-forward. Hvis du ved, er du motorens momentmoment konstant, og du kender load kan du stort set fortælle, hvor meget strøm du har brug for at køre for at få en bestemt acceleration af belastningen. Du tager simpelthen kommandoindgangsacceleration, gang det med en konstant og tilføj det til controllerens drevkommando. Du laver dybest set det, der kræves for at køre systemet, hvis der ikke var nogen controller, og jo tættere du kan komme, jo mindre fejl skal din sløjfe tage, og jo bedre fungerer dit system. Det gør en enorm forskel i praksis.
Kommentarer
- ” Efter min erfaring med motorstyringsapplikationer er den proportionale forstærkning den, der skal være gør det meste af ” arbejde ” og integratoren ” hvile “. Jeg tror slet ikke ‘ du har brug for et D-udtryk. ” Jeg er enig i det til typisk motorstyringsapplikation. P udfører hovedopgaven, og jeg kompenserer for langsigtet drift / fejl. Men her vil quadcopteren udsættes for masser af ekstern turbulens, så D-udtrykket er vigtigt for at få et hurtigt svar. for I-udtrykket, medmindre quad er i autonom navigationsfunktion, er det er ikke så afgørende.
- @ dm76: Det meste af min erfaring er med motorstyring, og jeg gør den ansvarsfraskrivelse 😉 Min intuition siger dog, at der ‘ er stadig plads til I i quadcopter-applikation, og jeg tror, at hvis P er meget høj, kan det håndtere eksterne forstyrrelser (ligesom det gør i motorstyring). Jeg ville virkelig have brug for at se nærmere på disse systemer for at sige noget bestemt om quadcopters …Jeg tror, at meget af det, jeg siger her, finder anvendelse (især gør din indstilling i frekvensdomænet og har systemets åbne looprespons).
- @ dm76: Og virkelig de ” tommelfingerregel ” PID-tuning resulterer i meget middelmådig ydeevne i motorer og formodentlig den samme i quadcopters. Nogle gange kan et velplaceret hakfilter gøre en størrelsesforskel …
Svar
Ziegler-Nichols er en nem manuel metode. Mere robuste metoder findes også – disse er normalt afhængige af matematiske løsninger (analytisk, iterativ optimering osv.)
Ud over det, google “selvindstillende PID” til nogle automatiserede teknikker. Min favorit er anvendelsen af neurale netværk til PID-tuning.
Svar
Hvis du vil have en nøjagtig PID-koefficient:
- Få dine statistiske aktuatordata (dvs. indsamling af indgangsspændinger + encoderimpulser i en konst ofte (
0.01sec
) tid til20secs
som3
x2000
matrix) - Få overførselsfunktion (TF) til din aktuator (ved hjælp af Ident værktøjskasse i MATLAB).
- Endelig skal du bruge PIDTool værktøjskasse i MATLAB og upload din transformeringsfunktion.
Eller på en hurtig og enkel måde:
Der findes en hurtigere tilgang kaldet Ziegler – Nichols :