Monday, 11 December 2017

Glidande medelvärde pid


Testresultat från City of London visar resultat på A-nivå Vi är glada att rapportera ett annat framgångsrikt år på A-nivå, med över två tredjedelar av gruppen som uppnår minst en A. Det fanns fantastiska resultat i moderna utländska språk med 33 A-grader, jämfört med ett nationellt genomsnitt på cirka 8,2. I de kombinerade vetenskapsämnena fanns det ett imponerande medelvärde av 94 A-B-betyg. 100 av eleverna fick en A - eller A-grad inom Design Technology, vilket har varit fallet under de senaste 6 åren. Matematikresultat var också utmärkt, med 87 A-A. Engelska resultat var lika imponerande, med över hälften av eleverna som uppnådde As. Konstkvaliteter tilldelades en enastående 77 As. Flickorna fortsätter att imponera på oss alla med sin beslutsamhet och den stolthet de tar i sitt arbete. Deras resultat visar oss vilken inspirerande undervisning i kombination med en genuin törst för lärande kan uppnå. Jag är mycket tacksam för personalen för allt de har gjort för tjejerna. Vi är glada över att så många av tjejerna nu fortsätter att driva sina akademiska intressen vid de universitet som de väljer. Vi vet att CLSG har förberett dem fantastiskt bra för att vara livslånga elever och att konfrontera sig med alla utmaningar som står inför. Fru Ena Harrop, Headmistress Även om jag är oerhört nöjd med mina tre som, vad jag kommer att ta bort från staden mest av allt är hur stödjat jag kände på skolan. Jag har känt värderad inte bara akademiskt utan också personligen, och utan detta hade jag inte kunnat uppnå dessa resultat. Lärarna och eleverna på City gjorde det möjligt för mig att trivas. Ellie Arnold Stöd från vänner och personal på CLSG har dragit mig genom ett svåra antal år. Tack så mycket CLSG för att hjälpa mig att säkra tre As och min drömplats vid Oxford University. Alannah Burns Jag är stolt över mina resultat och är verkligen glad att allas arbete har löpt ut. Det kommer vara ledsen att lämna staden efter 11 år men jag är väldigt glad att jag går vidare till universitetet nästa år och studerar det ämne jag tycker mest om. Jennifer Griggs GCSE-resultat Studenter på City of London School for Girls firar ytterligare ett utmärkt år med GCSE-resultat. En imponerande 78 betyg fick A, och 95 av alla betyg var A-A betyg. Nästan hälften av eleverna uppnådde 10 Som eller mer, betonade flickornas engagemang och individuella framgångar. En elev fick en anmärkningsvärd 12 As, med ungefär en tredjedel av kohorten som uppnår As i alla sina ämnen. Flickor uppnådde särskilt glädjande resultat i moderna främmande språk, med i genomsnitt 93 elever som uppnådde A-betyg på sex språk. Över de naturvetenskapliga ämnena (Biologi, Kemi och Fysik) fanns det ett fantastiskt genomsnitt på över 88 A-A. 87 En betyg uppnåddes i engelsk litteratur med liknande anmärkningsvärda resultat i historia och musik, med respektive 82 respektive 85 A betyg. Stadens tjejer har än en gång gjort fantastiskt bra i sina GCSE-tentor i år. Deras resultat är ett testamente för deras engagemang och hårda arbete och den utmärkta undervisning och pastorala vård som de har fått. Att så många av tjejerna har uppnått sådana enastående resultat samtidigt som de utmärker sig i sina extrautbildade sysslor är ännu mer imponerande. Vi ser fram emot att välkomna dem i september, redo att gå in på sina sexte formstudier. Fru Ena Harrop, Headmistress Jag är så nöjd med mina resultat i år, jag är över månen Jag vill tacka alla mina lärare och jag ser fram emot att spendera de närmaste två åren på City. Caroline Kram Jag är verkligen nöjd med mina resultat och jag uppskattar allt vad mina lärare har gjort för att stödja mig. Min tid på City har gett mig en mängd färdigheter för att hjälpa mig med framtida lärande. Roxy Brill Grattis till alla elever på deras hårda arbete och beslutsamhet (Detta är Modifikation 2 i en större serie om att skriva en solid PID-algoritm) Problemet Denna modifikation kommer att justera derivatperioden en bit. Målet är att eliminera ett fenomen som kallas 8220Derivative Kick8221. Bilden ovan illustrerar problemet. Eftersom errorSetpoint-Input orsakar varje ändring i börvärdet en omedelbar förändring av felet. Derivatet av denna förändring är oändlighet (i praktiken, eftersom dt isn8217t 0 det bara blåser upp att vara ett riktigt stort tal.) Detta nummer matas in i pid-ekvationen, vilket resulterar i en oönskad spik i utmatningen. Lyckligtvis finns det ett enkelt sätt att bli av med det här. Lösningen Det visar sig att derivatet av felet är lika med negativt derivat av ingång, med undantag av när börvärdet ändras. Det här är en perfekt lösning. Istället för att lägga till (Kd-derivat av fel) subtraherar vi (Kd-derivat av Input). Detta är känt som att använda 8220Derivative on Measurement8221 Ändringarna här är ganska enkla. We8217re ersätter dError med - dInput. Istället för att komma ihåg det sista, kommer vi nu ihåg den senaste Input Resultatet Here8217s vad dessa modifieringar får oss. Observera att ingången fortfarande ser ungefär ut. Så vi får samma prestanda, men vi skickar inte ut en enorm Output spike varje gång börvärdet ändras. Det kan eller inte vara en stor sak. Det beror helt på hur känslig din ansökan är att producera spikar. Hur jag ser det men det tar inte mer jobb att göra det utan att sparka, så varför inte göra saker rätt. Nästa Inlägget publicerades den 15 april 2011 kl. 15:02 och är arkiverat under kodning. PID. Du kan följa alla svar på denna post via RSS 2.0-flödet. Du kan lämna ett svar. eller trackback från din egen webbplats. 9 Responses to 8220Bemynda nybörjare PID 8211 Derivat Kick8221Account Inaktiverad E-postbekräftelse krävs Nästan gjort Registrering Tack för att du registrerar Skapa nytt lösenord Skapa nytt lösenord Logga in för att slutföra konto Sammanfoga Skicka bekräftelsemail Verifiering Email Skickat e-post Verifierat Ändra lösenord Lösenord ändrat Skapa nytt lösenord Skapa ny Lösenord PID utan doktorsavhandling Spara till mitt bibliotek Följ kommentarer Tim WescottOctober 01, 2000 Editors Anmälan: Tim Wescotts PID utan doktorand var ursprungligen publicerad Embedded Systems Programming i oktober 2000. Artikeln blev en stor hit under åren och blev repurposed av andra webbplatser , som EE Times India, och länkas till av många webbplatser, som Wikipedia. Vi visste att det här var en populär artikel och det fortsatte så tills det blev otillgängligt när vi redesignade vår webbplats i juli 2010. Personalen på Embedded arbetar noggrant för att återställa allt vårt gamla innehåll och göra det tidigare presenterade innehållet tillgängligt snart. Här är den fullständiga ursprungliga PDF-filen av artikeln PID utan doktorand. Obs! Denna artikel PDF är under upphovsrätt till Embedded Systems Design magazine och får inte reposteras någon annanstans utan tillstånd. Den ursprungliga artikeltexten ägs av Tim Wescott och får inte användas utan tillstånd av författaren. Vänligen länka till artikeln istället. Nedan finns HTML-versionen av artikeln. Kontakta oss för ytterligare information eller förfrågningar: Susan Rambo Managing Editor, ESD-tidningen susan. ramboubm PID Utan PhD PID (proportional, integral, derivat) kontroll är inte så komplicerat som det låter. Följ dessa enkla genomförandesteg för snabba resultat. På jobbet är jag en av tre utsedda servo killar, och den enda som implementerar styrslingor i programvara. Som ett resultat har jag ofta anledning att designa digitala styrslingor för olika projekt. Jag har funnit att även om det säkert finns kontrollproblem som kräver all kompetens som jag kan bära, kan ett stort antal kontrollproblem lösas med enkla kontrollanter utan att tillgripa någon kontrollteori alls. Den här artikeln kommer att berätta för dig hur du implementerar och justerar en enkel kontroller utan att komma in i tung matematik och utan att du behöver lära dig någon kontrollteori. Tekniken som används för att ställa in kontrollen är en provad och sann metod som kan tillämpas på nästan vilket kontrollproblem som helst med framgång. PID-kontroll PID-regulatorn har använts i över ett sekel i olika former. Det har haft popularitet som en rent mekanisk enhet, som en pneumatisk enhet, och som en elektronisk apparat. Den digitala PID-regulatorn som använder en mikroprocessor har nyligen kommit till sin egen i branschen. Som du kommer se är det en enkel uppgift att bädda in en PID-kontroller i din kod. PID står för proportionell, integrerad, derivat. Dessa tre termer beskriver de grundläggande elementen i en PID-kontroller. Vart och ett av dessa element utför en annan uppgift och har en annan effekt på hur ett system fungerar. I en typisk PID-styrenhet drivs dessa element av en kombination av systemkommandot och återkopplingssignalen från objektet som styrs (vanligtvis kallat växten). Deras utgångar läggs till för att bilda systemutgången. Figur 1 visar ett blockdiagram över en grundläggande PID-kontroller. I detta fall drivs derivatelementet endast från anläggningsåterkoppling. Anläggningsreaktionen subtraheras från kommandosignalen för att generera ett fel. Denna felsignal driver de proportionella och integrerade elementen. De resulterande signalerna läggs ihop och används för att driva växten. Jag har inte beskrivit vad dessa element ännu gör - bra till det senare. Ive inkluderade en alternativ placering för proportionalelementet (prickade linjer) - Detta kan vara en bättre plats för proportionalelementet, beroende på hur du vill att systemet ska svara på kommandon. Provplantor För att diskutera detta ämne med någon känsla av verklighet behöver vi några exempel system. Jag använder tre exempel på växter i hela denna artikel och visar effekterna av att de olika styrenheterna appliceras på dem: En motor som kör ett tåg Ett precisionspositionssystem Ett värmesystem Var och en av dessa system har olika egenskaper och var och en kräver en annan kontrollstrategi till få bästa prestanda. Motor och växellåda Det första exemplet är en motor som kör ett tåg, vars växellådans utgångsläge övervakas av en potentiometer eller någon annan positionsläsningsenhet. Du kanske ser den här typen av mekanism som kör en vagn på en skrivare, eller en gasmekanism i ett bilkryssningsstyrningssystem, eller nästan alla andra måttligt exakta positionskontroller. Figur 2 visar ett diagram över ett sådant system. Motorn drivs av en spänning som styrs av mjukvaran. Motorutgången är nedkopplad för att driva själva mekanismen. Positionen för den här sista enheten mäts av potentiometern. En likströmsmotor som drivs av en spänning vill gå i konstant hastighet som är proportionell mot den applicerade spänningen. Vanligtvis har motorns armatur en viss motstånd som begränsar dess förmåga att accelerera, så motorn kommer att ha viss fördröjning mellan förändringen i ingångsspänningen och den resulterande hastighetsförändringen. Växeltåget tar rörelsen av motorn och multiplicerar den med en konstant. Slutligen mäter potentiometern utmatningsaxelns läge. Figur 3 visar stegsvaret hos motorn och växelkombinationen. Jag använder ett tidskonstantvärde av t0 0.2s. Stegsvaret hos ett system är bara utmatningens beteende som svar på en ingång som går från noll till något konstant värde vid tiden t 0. Eftersom det handlade om ganska generiska exempel här visade Ive stegsvaret som en bråkdel av full skala , så går det till 1. Figur 3 visar stegingången och motorns svar. Motorns reaktion börjar långsamt på grund av tidskonstanten, men när det är ur vägen ramar motorns position vid en konstant hastighet. Precision actuator Det är ibland nödvändigt att styra positionen på något mycket exakt. Ett exakt positioneringssystem kan byggas med hjälp av ett fritt rörligt mekaniskt steg, en högtalarspole (ett spole - och magnetarrangemang) och en positionsgivare utan kontakt. Du kan förvänta dig att se denna typ av mekanism som stabiliserar ett element i ett optiskt system, eller lokaliserar någon annan utrustning eller sensor. Figur 4 visar ett sådant system. Programvaran kommandonerar strömmen i spolen. Denna ström sätter upp ett magnetfält som utövar en kraft på magneten. Magneten är fäst vid scenen, vilken rör sig med en acceleration proportionell mot spolströmmen. Slutligen övervakas scenpositionen av en icke-kontaktpositionsomvandlare. Med detta arrangemang är kraften på magneten oberoende av scenrörelsen. Lyckligtvis isolerar detta scenen från externa effekter. Tyvärr är det resulterande systemet väldigt halt och kan vara en utmaning att kontrollera. Dessutom kan de elektriska kraven för att bygga en bra ström / utgång förstärkare och icke-kontakt givare gränssnitt vara utmanande. Du kan förvänta dig att om du gör ett sådant projekt är du medlem i ett ganska begåvat team (eller du arbetar med ett kortvarigt projekt). Rörelsens ekvationer för detta system är ganska enkla. Kraften på scenen är proportionell mot körkommandot ensam, så accelerationen av systemet är exakt proportionell mot frekvensomriktaren. Stegsvaret för detta system i sig är en parabola, såsom visas i figur 5. Som vi ser senare gör det här kontrollproblemet mer utmanande på grund av den tröghet som scenen börjar röra sig och sin entusiasm att fortsätta att röra sig när den går. Temperaturkontroll Det tredje exemplet anläggningen Ill användning är en värmare. Figur 6 visar ett diagram över ett exempelsystem. Fartyget upphettas av en elvärmare och temperaturen på dess innehåll avkännes av en temperaturavkänningsanordning. Termiska system tenderar att ha mycket komplexa svar. Jag kommer att ignorera lite detalj och ge en mycket ungefärlig modell. Om inte dina prestandakrav är svåra är det inte nödvändigt med en exakt modell. Figur 7 visar stegsvaret hos systemet till en förändring i Vd. Ive använde tidskonstanter av t1 0.1s och t2 0.3s. Svaret tenderar att lösa ut till en konstant temperatur för en given enhet, men det kan ta mycket tid att göra det. Också, utan mycket isolering, tenderar termiska system att vara mycket känsliga för yttre effekter. Denna effekt visas inte i figuren, men det går väl att undersöka det senare i artikeln. Controllers Elementen i en PID-controller som presenteras här, antingen tar in sig från den uppmätta anläggningen eller från felsignalen, vilket är skillnaden mellan anläggningens utgång och systemkommandot. Jag ska skriva kontrollkoden med hjälp av flytpunkten för att hålla genomförandedetaljer ur diskussionen. Det är upp till dig att anpassa det här om du ska implementera din controller med heltal eller annan fastpunktsräkning. Jag kommer att anta ett funktionsanrop som visas nedan. När diskussionen utvecklas, ser du hur datastrukturen och internerna i funktionen bildas. Anledningen till att jag skickar felet till PID-uppdateringsrutinen istället för att överföra kommandot är att ibland vill du spela tricks med felet. Om du lämnar ut felkalkylen i huvudkoden blir applikationen av PID mer universell. Denna funktion kommer att användas så här: Proportional Proportional Control är den enklaste feedback kontrollen att implementera, och enkel proportionell kontroll är förmodligen den vanligaste typen av kontrollslinga. En proportionell styrenhet är bara felsignalen multiplicerad med en konstant och matad ut till enheten. Den proportionella termen beräknas med följande kod: Figur 8 visar vad som händer när du lägger till proportionell återkoppling till motor och växelsystem. För små vinster (kp 1) går motorn till rätt mål, men det gör det ganska långsamt. Att öka förstärkningen (kp 2) ökar svaret på en punkt. Utöver den punkten (kp 5, kp 10) startar motorn snabbare, men den överskrider målet. I slutändan löser systemet inte något snabbare än det skulle ha med lägre vinst, men det finns mer överskridande. Om vi ​​fortsatte att öka vinsten skulle vi så småningom nå en punkt där systemet bara svängde runt målet och aldrig löste ut - systemet skulle vara instabilt. Motorn och växeln börjar överskugga med höga vinster på grund av fördröjningen i motorresponsen. Om du ser tillbaka på Figur 2. du kan se att motorns position inte börjar raka upp omedelbart. Denna fördröjning, plus hög återkopplingsvinst, är vad som orsakar överskridandet som ses i figur 8. Figur 9 visar svaret från precisionsaktuatorn endast med proportionell återkoppling. Proportionell kontroll ensam hjälper inte detta system. Det finns så mycket fördröjning i anläggningen att oavsett hur låg vinsten är, kommer systemet att oscillera. Eftersom förstärkningen ökar ökar frekvensen av utmatningen, men systemet kommer inte att lösa sig. Figur 10 visar vad som händer när du använder ren proportionell återkoppling med temperaturregulatorn. Jag visar systemets svar med en störning på grund av en förändring i omgivande temperatur vid t 2s. Även utan störningen kan man se att proportionell kontroll inte får temperaturen till önskad inställning. Att öka förstärkningen hjälper, men även med kp 10 är utsignalen fortfarande under målet, och du börjar se en stark överskott som fortsätter att resa fram och tillbaka (detta kallas ringning). Som de föregående exemplen visar kan en proportionell kontroller ensam vara användbar för vissa saker, men det hjälper inte alltid. Växter som har för mycket fördröjning, precis som precisionsdonet, kan inte stabiliseras med proportionell kontroll. Vissa växter, som temperaturregulatorn, kan inte sättas till önskad börvärde. Växter som motor - och växelkombinationen kan fungera, men de kan behöva köras snabbare än vad som är möjligt med proportional kontroll ensam. För att lösa dessa kontrollproblem behöver du lägga till integrerad eller differentiell kontroll eller båda. Integral Integral kontroll används för att lägga till långsiktig precision i en styrslinga. Den används nästan alltid i samband med proportionell kontroll. Koden för att implementera en integrator visas nedan. Integratorstaten, iState är summan av alla föregående ingångar. Parametrarna iMin och iMax är minsta och maximala tillåtna integratorstatusvärden. Integral kontroll av sig sjunker vanligtvis stabiliteten, eller förstör den helt och hållet. Figur 11 visar motorn och växeln med ren integrerad kontroll (pGain 0). Systemet löser sig inte. Precis som precisionsmanöverdonet med proportionell styrning, kommer motor och växelsystem med integrerad styrning att oscillera med större och större gungor tills någonting träffar en gräns. (Förhoppningsvis är gränsen inte kapabel.) Figur 12 visar temperaturkontrollsystemet med ren integrerad kontroll. Det här systemet tar mycket längre tid att lösa sig än samma anläggning med proportionell kontroll (se figur 10), men märk att när det löser sig, sätter det sig till målvärdet - även om störningen är tillagd. Om ditt problem vid hand kräver inte snabb avveckling, detta kan vara ett fungerande system. Figur 12 visar varför vi använder en integrerad term. Integratortillståndet kommer ihåg allt som har gått på förut, vilket gör det möjligt för regulatorn att avbryta eventuella långsiktiga fel i utmatningen. Samma minne bidrar också till instabilitet - regulatorn svarar alltid för sent efter att anläggningen har stigit fart. För att stabilisera de två tidigare systemen behöver du lite av deras nuvärde, vilket du får från en proportionell term. Figur 13 visar motorn och växeln med proportionell och integrerad (PI) - kontroll. Jämför detta med figurerna 8 och 11. Positionen tar längre tid att reglera än systemet med ren proportionell kontroll, men det kommer inte att lösa sig till fel plats. Figur 14 visar vad som händer när du använder PI-styrningen på värmesystemet. Värmaren sätter sig ändå ut till den exakta måltemperaturen, som med ren integrerad kontroll (se Figur 12), men med PI-kontroll sätter den sig ut två till tre gånger snabbare. Denna figur visar operationen ganska nära gränsen för den hastighet som uppnås med PI-kontroll med denna anläggning. Innan vi lämnar diskussionen om integratorer finns det två saker jag behöver påpeka. Först, eftersom du lägger till felet över tiden blir den provtagningstid du kör blir viktig. För det andra måste du vara uppmärksam på intervallet av din integrator för att undvika windup. Den hastighet som integratortillståndet ändrar är lika med medelfelet multiplicerat med integratorförstärkningen multiplicerad med samplingsfrekvensen. Eftersom integratorn tenderar att släta ut saker på lång sikt kan du komma undan med en något ojämn samplingsfrekvens, men det behöver genomsnittligt utgå till ett konstant värde. I värsta fall bör din samplingsfrekvens variera med högst 20 över ett 10-provintervall. Du kan till och med komma undan med att missa några prover så länge som din genomsnittliga samplingsfrekvens ligger inom gränserna. För en PI-kontrollör föredrar jag emellertid ett system där varje prov faller inom 1 till 5 av rätt provtid och en långsiktig genomsnittshastighet som ligger direkt på knappen. Om du har en kontroller som behöver driva anläggningen hårt, kommer din regulatorutgång att spendera betydande mängder tid utanför gränserna för vad din enhet faktiskt kan acceptera. Detta tillstånd kallas mättnad. Om du använder en PI-kontroller kan hela tiden i mättnad leda till att integratortillståndet växer (vind upp) till mycket stora värden. När växten når målet är integratorvärdet fortfarande väldigt stort, så växten går utanför målet medan integratorn avvecklas och processen återgår. Denna situation kan bli så dålig att systemet aldrig löser sig, men svänger bara långsamt runt målpositionen. Figur 15 illustrerar effekten av integratorvindup. Jag använde motorstyrenheten i Figur 13. och begränsade motordrivningen till 0,2. Inte bara är kontrollenheten mycket större än den som är tillgänglig för motorn, men motorn visar allvarliga överskridanden. Motorn når faktiskt sitt mål på ungefär fem sekunder, men det vrider inte riktning till åtta sekunder och släpper inte ut tills 15 sekunder har gått. Det enklaste och mest direkta sättet att hantera integrator windup är att begränsa integratorstaten, som jag visade i mitt tidigare kodexempel. Figur 16 visar vad som händer när du tar systemet i Figur 15 och begränsar integratorterminalen till den tillgängliga frekvensomriktaren. Regulatorns utdata är fortfarande stor (på grund av den proportionella termen), men integratorn hamnar inte mycket långt och systemet börjar lösa ut efter fem sekunder och slutar på ungefär sex sekunder. Observera att med koden exemplet ovan måste du skala iMin och iMax när du ändrar integratorförstärkningen. Vanligtvis kan du bara ställa in integratorns minimum och maximalt så att integratorutgången matchar minsta och maximala frekvensomriktaren. Om du vet att dina störningar kommer att vara små och du vill ha snabbare avveckling, kan du begränsa integratorn ytterligare. Differential Jag visade inte ens precisionsdonet i föregående avsnitt. Detta beror på att precisionsdonet inte kan stabiliseras med PI-kontroll. I allmänhet, om du inte kan stabilisera en anläggning med proportionell kontroll, kan du inte stabilisera det med PI-kontroll. Vi vet att proportional kontroll behandlar växtens nuvarande beteende, och den integrerade kontrollen handlar om plantans tidigare beteende. Om vi ​​hade något element som förutspår växtbeteendet så kan det här användas för att stabilisera växten. En differentierare gör tricket. Koden nedan visar skillnaden i en PID-kontroller. Jag föredrar att använda den faktiska växtpositionen i stället för felet eftersom det här gör att smidigare övergångar blir när kommandovärdet ändras. Differensbegreppet i sig är det sista värdet av läget minus nuvarande värde för positionen. Detta ger en grov uppskattning av hastigheten (deltapositionsprovstiden), vilken förutspår var positionen kommer att vara på ett tag. Med differentialreglering kan du stabilisera precisionsmanövreringssystemet. Figur 17 visar svaret på precisionsaktuatorsystemet med proportionell och derivat (PD) - kontroll. Detta system sätter sig på mindre än 12 sekunder, jämfört med flera sekunder för de andra systemen. Figur 18 visar värmesystemet med PID-kontroll. Du kan se prestandaförbättringen som skulle uppnås genom att använda full PID-kontroll med denna anläggning. Differentiell kontroll är mycket kraftfull, men det är också det mest problematiska med de kontrolltyper som presenteras här. De tre problem som du troligtvis kommer att uppleva är provtagning oregelbundenheter, buller och högfrekventa svängningar. När jag presenterade koden för ett differentialelement nämnde jag att utsignalen är proportionell mot positionsändringen dividerad med provtiden. Om positionen ändras i en konstant takt men din samplingstid varierar från prov till prov, kommer du att få ljud på din differentiella term. Eftersom differentialförstärkningen är vanligtvis hög, kommer detta ljud att förstärkas mycket. När du använder differentialstyrning måste du noggrant uppmärksamma jämn provtagning. Id säger att du vill att provtagningsintervallet alltid ska vara konsekvent inom 1 av det totala, ju närmare desto bättre. Om du inte kan ställa in hårdvaran för att upprätthålla provtagningsintervallet, utforma din programvara för att prova med mycket hög prioritet. Du behöver inte faktiskt utföra kontrollenheten med så stel precision - bara se till att den faktiska ADC-omvandlingen sker vid rätt tidpunkt. Det kan vara bäst att sätta hela din provtagning i en ISR eller mycket hög prioritet, och kör sedan kontrollkoden på ett mer avslappnat sätt. Differentiell kontroll lider av bullerproblem eftersom bruset vanligtvis sprids relativt jämnt över frekvensspektret. Kontrollkommandon och plantutgångar har emellertid oftast det mesta av deras innehåll vid lägre frekvenser. Proportionell kontroll överför ljud genom osmält. Integral kontroll medför dess ingångssignal, vilket tenderar att döda ljud. Differentiell kontroll ökar högfrekvenssignalerna, så det ökar ljudet. Titta på de differentiella vinster som Ive satt på plantorna ovan, och tänk på vad som händer om du har ljud som gör varje prov lite annorlunda. Multiplicera den lilla biten med en differentialförstärkning på 2000 och tänk på vad det betyder. Du kan låta passera din differentialutgång för att minska bruset, men det kan drabba användbarheten. Teorin bakom hur man gör det här och hur man bestämmer om det kommer att fungera ligger utanför ramen för denna artikel. Förmodligen det bästa du kan göra med detta problem är att se hur sannolikt du ser ljud, hur mycket det kostar för att få tysta ingångar, och hur dåligt behöver du den höga prestanda som du får från differentialkontrollen. När du har arbetat med det här kan du helt enkelt undvika differentialstyrning, prata med dina hårdvarubolk för att få en lägre ljudingång eller leta efter en expert på kontrollsystem. Den fullständiga texten till PID-kontrollerkoden visas i Listing 1 och finns tillgänglig på eetimesdesignembeddedsource-code4200393Wescott-txt. Listning 1: PID-kontrollerkod Tuning Det trevliga med att ställa in en PID-kontroller är att du inte behöver ha en bra förståelse för formell kontrollteori för att göra ett ganska bra jobb med det. Omkring 90 av de applikationer med sluten slingkontroll som finns i världen gör det mycket bra med en kontroller som bara är rätt inställd. Om du kan kan du koppla upp systemet till en viss testutrustning eller skriva in en del debug-kod så att du kan titta på lämpliga variabler. Om systemet är tillräckligt långsamt kan du spotta rätt variabler ut på en seriell port och diagramma dem med ett kalkylblad. Du vill kunna titta på drivutmatningen och anläggningens utgång. Dessutom vill du kunna använda en slags kvadratvågsignal till kommandotangenten på ditt system. Det är ganska lätt att skriva en testkod som genererar ett lämpligt testkommando. När du har klarat installationen, ställ in alla vinster till noll. Om du misstänker att du inte behöver differentieringskontroll (som motor - och växelexempel eller termiskt system) hoppar du sedan ner till det avsnitt som diskuterar att ställa in proportionell vinst. Annars börja med att justera din differentialförstärkning. Sättet som styrenheten är kodad kan du inte använda differentialkontrollen ensam. Ange din proportionella vinst till något litet värde (en eller mindre). Kontrollera om systemet fungerar. Om det svänger med proportionell förstärkning bör du kunna bota den med differentiell vinst. Börja med cirka 100 gånger mer differentiell vinst än proportionell vinst. Titta på din körsignal. Börja nu öka differentialförstärkningen tills du ser oscillation, överdriven brus eller överdriven (över 50) överskridande på frekvensomriktaren eller anläggningen. Observera att oscillationen från för mycket differentialförstärkning är mycket snabbare än oscillationen från inte tillräckligt. Jag gillar att skjuta upp vinsten tills systemet ligger på gränsen till svängning, då får du vinsten med en faktor på två eller fyra. Se till att frekvensomriktaren fortfarande ser bra ut. Vid denna tidpunkt kommer ditt system antagligen att reagera mycket trögt, så det är dags att ställa in proportionella och integrerade vinster. Om den inte redan är inställd, sätt den proportionella förstärkningen till ett startvärde mellan 1 och 100. Ditt system kommer troligen antingen att visa fruktansvärt långsam prestanda eller det kommer att oscillera. Om du ser oscillation, släpp den proportionella förstärkningen med faktorer på åtta eller 10 tills oscillationen stannar. Om du inte ser oscillation, öka proportionalförstärkningen med faktorer på åtta eller 10 tills du börjar se oscillation eller överdriven överskott. Precis som med differentialregulatorn stämmer jag vanligtvis helt upp till punkten med för mycket överskott och minskar förstärkningen med en faktor på två eller fyra. När du är nära, finjustera proportionalförstärkningen med två faktorer tills du gillar vad du ser. När du har en proportionell vinstuppsättning börjar du öka integralförstärkningen. Dina startvärden kommer troligen att vara från 0,0001 till 0,01. Här vill du hitta intervallet av integrerad förstärkning som ger dig rimligt snabb prestanda utan för mycket överskott och utan att vara för nära oscillation. Andra problem Om du inte arbetar med ett projekt med mycket kritiska prestandaparametrar kan du ofta klara av med kontrollvinster som ligger inom en faktor av två av rätt värde. Det betyder att du kan göra alla dina multiplikationer med skift. Detta kan vara mycket användbart när du arbetar med en långsam processor. Samplingsfrekvens Så länge har jag bara pratat om provräntor vad gäller hur konsekvent de behöver vara, men jag har inte berättat hur man bestämmer sig förut för tiden vad samplingsfrekvensen måste vara. Om din samplingsfrekvens är för låg kanske du inte kan uppnå den prestanda du vill ha, på grund av den samlade provfördröjningen. Om din samplingsfrekvens är för hög skapar du problem med ljud i din differentiator och överflöde i din integrator. Tumregeln för digitala styrsystem är att provtiden ska vara mellan 110 och 1100 av den önskade systemnedläggningstiden. Systemets avvecklingstid är hur lång tid det går att köra från mättnad tills styrsystemet har avgjort. Om du tittar på Figur 16. regulatorn kommer ur mättnad på ca 5,2s, och har avgjort på omkring 6,2s. If you can live with the one second settling time you could get away with a sampling rate as low as 10Hz. You should treat the sampling rate as a flexible quantity. Anything that might make the control problem more difficult would indicate that you should raise the sampling rate. Factors such as having a difficult plant to control, or needing differential control, or needing very precise control would all indicate raising the sampling rate. If you have a very easy control problem you could get away with lowering the sampling rate somewhat (I would hesitate to lengthen the sample time to more than one-fifth of the desired settling time). If you arent using a differentiator and you are careful about using enough bits in your integrator you can get away with sampling rates 1,000 times faster than the intended settling time. Exert control This covers the basics of implementing and tuning PID controllers. With this information, you should be able to attack the next control problem that comes your way and get it under control. Tim Wescott has a masters degree in electrical engineering and has been working in industry for more than a decade. His experience has included a number of control loops closed in software using 8- to 32-bit microprocessors, DSPs, assembly language, C, and C. He is currently involved in control systems design at FLIR Systems where he specifies mechanical, electrical, and software requirements and does electrical and software design. You can contact him at timwescottdesign.

No comments:

Post a Comment