• No results found

Optimering av styrsystem för DC-servo

N/A
N/A
Protected

Academic year: 2021

Share "Optimering av styrsystem för DC-servo"

Copied!
39
0
0

Loading.... (view fulltext now)

Full text

(1)

ISRN UTH-INGUTB-EX-E-2018/01-SE

Examensarbete 15 hp

Februari 2018

Optimering av styrsystem för

DC-servo

Emil Åberg

(2)

Teknisk- naturvetenskaplig fakultet UTH-enheten Besöksadress: Ångströmlaboratoriet Lägerhyddsvägen 1 Hus 4, Plan 0 Postadress: Box 536 751 21 Uppsala Telefon: 018 – 471 30 03 Telefax: 018 – 471 30 00 Hemsida: http://www.teknat.uu.se/student

Abstract

Optimization of control system for DC servo

Emil Åberg

Automatic control is used to operate all kinds of processes:

everything from temperature in houses to the control of robots. The course in automatic control in Uppsala University includes

laboratory experiments where students conduct tests on a wheel controlled by a, so called, PID-controller which is one of the most widely used control mechanisms. This is a prime opportunity for students to get practical experience of working with PID-regulators and test how different parameters influence results.

That system has been improved in this project as there were previously several issues with the system. The system was buggy and one of the tasks where the students are to test the systems’

reaction to oscillating input signals was cancelled because that feature had not been implemented yet. These issues were successfully fixed in this project and all tasks are now doable. Another problem was (and is still to some degree) that a lot of measurement noise occurs when measuring speed. This in turn causes the part of the controller that is sensitive to noise (the

derivative part, for those familiar with PID-controllers) to

function poorly. Some improvement has been made to this by using low-pass filtering for control purposes and the least square method for display purposes, but the signal is still noisy.

The key to solving this issue lies in implementing an algorithm that can precisely estimate the speed without distorting any other information, or alternatively buy sensors with higher precision.

ISRN UTH-INGUTB-EX-E-2018/01-SE Examinator: Tomas Nyberg

Ämnesgranskare: Ping Wu Handledare: Gabriel Dag

(3)

Sammanfattning

Målet med det här projektet var att förbättra styrsystemet av ett servosystem med ett vertikalt hjul. Då detta hjul används i laborationer för undervisning av reglerteknik i Uppsala

Universitet är det viktigt att systemet fungerar i enlighet med teorin som eleverna studerar. I det här systemet fanns förut ett flertal buggar, vilket i detta projekt har åtgärdats. En funktion har även har lagts till i programmet där användaren kan undersöka hur systemet reagerar på sinussignaler. Detta gör det möjligt för eleverna att göra en uppgift som tidigare var borttagen.

Ett annat problem var (och är fortfarande till viss grad) att då systemet ska uppskatta hjulets hastighet har mätbrus gjort att den delen i styrsystemet som ansvarar för att förbättra stabilitet (den deriverande delen, för den som har kännedom om PID-reglering) har fungerat dåligt. I det här projektet har ett filter implementerats för den delen av systemet, vilket har gjort viss förbättring hos signalen men den är fortfarande brusig.

Genom att använda minsta kvadratmetoden och filtrering har viss förbättring gjorts i förmågan att mäta hastighet, speciellt i den nya sinusfunktionen då den gamla algoritmen inte alls var lämplig för att uppskatta låga, oscillerande hastigeter. Dock används minsta

kvadratmetoden endast i visningssyfte medan regulatorn fortfarande använder samma algoritm som förut. Anledningen till det här är att minstakvadratanpassning är för

beräkningsmässigt dyr att utföras av en Arduino, i vilken regulatorn är implementerad, och måste utföras på PC i stället, i LabVIEW programmet.

Nyckeln till att lösa det problemet för den som ska göra fortsatt arbete ligger i att implementera en beräkningsmetod som noggrannt kan uppskatta hastigheten utan att det blir brus och utan att förvränga den resterande informationen, alternativt inhandla mer precisa rotationsgivare.

(4)

Innehållsförteckning

1 INTRODUKTION ... 1

1.1 Bakgrund ... 1

1.2 Problembeskrivning ... 2

1.3 Syfte och projektuppgifter ... 2

1.4 Rapportöversikt ... 2

2 TEORI ... 4

2.1 Reglerteknik ... 4

2.1.1 Återkopplat styrsystem ... 4

2.1.2 Egenskaper hos ett återkopplat styrsystem ... 5

2.2 Modell av processen ... 7 2.3 PID-reglering av DC-servo ... 8 2.3.1 PID-regulatorns egenskaper ... 9 2.4 Digitalt filter ... 13 2.5 Minsta kvadratanpassning ... 13 3 SERVOSYSTEMET ... 16 3.1 Översikt ... 16 3.2 Hårdvaror ... 16 3.2.1 H-brygga ... 16 3.2.2 Arduino UNO ... 17 3.2.3 Pulsgivare ... 17 3.3 Mjukvaror ... 18 3.3.1 LabVIEW ... 18 3.3.2 Arduino IDE ... 18 4 ANALYS ... 19 4.1 Undersökning av störningar ... 19

4.2 Jämförelse mellan olika metoder för att uppskatta hastighet ... 19

5 IMPLEMENTERING ... 21

5.1 Lågpassfilter ... 21

5.2 Hastighetsuppskattning med minstakvadratmetoden ... 21

6 RESULTAT OCH DISKUSSION ... 23

6.1 Prestandaevaluering ... 23 6.1.1 P-reglering ... 23 6.1.2 PI-reglering ... 24 6.1.3 PID-reglering ... 25 6.2 Störningsdämpning ... 26 6.3 Övriga ändringar ... 27

7 SLUTSATSER OCH FORTSATT ARBETE ... 28

REFERENSER ... 29

BILAGA ... 30

B.1 PID-kontroller för DC-servo – Användarhandledning ... 30

(5)

1 INTRODUKTION

1.1 Bakgrund

PID-reglering, det vill säga återkopplande automatisk styrning, används för att styra alla möjliga typer av processer: allt ifrån temperaturen hos bostäder till autopiloter i flygplan. I denna typ av reglering mäts avvikelsen från det önskade värdet hos den storhet man kontrollerar för att baserat på dess värde, derivata och integral styra drivdonen.

Kursen Reglerteknik inkluderar en laboration där en PID-kontroller styr en DC-motor som driver ett vertikalt hjul. Det här är bra tillfälle för studenter att få praktisk erfarenhet av att arbeta med PID-regulatorer och se hur olika parametrar påverkar stabilitet, snabbhet och noggrannhet.

Styrsystemet i den här laborationen var utvecklat av tidigare studenter och PID-kontrollern är implementerad i mjukvaran hos en Arduino, som är kopplad till servomotorn, samt en pulsgivare som används för att mäta hjulets position och hastighet. Ett tillhörande grafiskt användargränssnitt är utvecklat i LabVIEW.

(6)

1.2 Problembeskrivning

Det ursprungliga laborationssystemet har fungerat delvis, där väl kalibrerade parametrar producerar ett snabbt och stabilt resultat och det startar och stannar smidigt. Dock har det rapporteras att det finnas någon typ av störning i systemet då regulatorn ska reglera hastighet.

I laborationen ingår även att man ska kunna identifiera systemet genom att skicka en sinussignal som insignal och studera utsignalen. Det nuvarande programmet saknar den här funktionen. Studenter och handledare har även stött på buggar som gör det mindre smidigt att utföra laborationen. Projektmålet för mig var att åtgärda alla dessa problem.

1.3 Syfte och projektuppgifter

Det här projektet kan delas upp i en samling av deluppgifter:

 Identifiera de störningar som finns och förbättra systemet mot dem

 Lägg till en funktion där man kan testa systemets reaktion på sinussignaler  Hitta och ta bort buggar i hela systemet

 Gör användargränssnittet mer användarvänligt  Gör en prestandaevaluering

 Revidera labbinstruktionerna

Syftet med dessa uppgifter är tvåfaldigt. Ett är att laborationen ska gå smidigt.

Användarvänligthet, tydliga instruktioner och ett system fritt från buggar kan innebära skillnaden mellan att laborationen tar tre timmar och att den tar hälften så lång tid.

Det andra syftet med detta projekt är att ha ett system vars beteende stämmer överens med teorin eleverna läser.

1.4 Rapportöversikt

Rapporten har sex kapitel utöver det här introduktionskapitlet. Nedan är en översikt av innehållet i varje kapitel.

TEORI

Innehåller en genomgång av grundläggande begrepp inom reglerteknik inklusive

stegsvarsanalys, och de egenskaper ett reglersystem kan ha. Det här följs av en beskrivning av servons reglersystem. Här finns även härledning för minstakvadratlösningen och för första ordningens digitala filter.

SERVOSYSTEMET

Här beskrivs hur servosystemet är uppbyggt, vilka mjukvaru- och hårdvarusystem det är bestående av och hur de är sammankopplade.

ANALYS

En översiktlig undersökning av de störningar, främst mätstörningar, som uppstår i systemet. Här finns även en jämförelse mellan olika beräkningsmetoder för att uppskatta hjulets hastighet.

IMPLEMENTERING

Här presenteras de kodstycken i LabVIEW-programmet och Arduino-programmet som implementerar lösningarna som presenterades i teoridelen.

(7)

RESULTAT

Här visas vad som händer då systemet körs med olika parametrar och resultatet jämförs med teorin. Det finns även en demonstration av hur lågpassfiltret dämpar störningarna hos

regulatorns deriverande del och en demonstration av den nya funktionen där användaren kan testa systemets reaktion på sinussignaler. De buggar som fixades och de nya funktionerna som lades till i gränssnittet gås också igenom.

SLUTSATSER OCH FORTSATT ARBETE

De lyckade aspekterna i projektet är presenterade här och även vad som behöver mer arbete, vilket främst har visat sig vara mätstörningarna vid hastighetsreglering. Här finns även ett par rekommendationer till fortsatt arbete.

(8)

2 TEORI

2.1 Reglerteknik

Reglerteknik är en bred term som omfattar tillämpningen av mekanismer för drift av processer utan kontinuerligt mänskligt ingripande. Karakteristiskt för de flesta reglersystem är att en eller flera storheter, som till exempel temperaturen i ett hus eller vattennivån i en behållare, ska kontrolleras på ett föreskrivet sätt. Följande komponenter ingår i ett reglersystem:

Reglerobjekt – den process eller det system som ska regleras, vilket i det här projektet är

hjulets rotation.

Drivdon – ett don som används för att styra reglerobjektet. I det här projektets fall är det en

DC-motor.

Regulator – den komponent som beräknar och ställer ut en styrsignal till drivdonet.

2.1.1 Återkopplat styrsystem

De flesta reglersystem är återkopplade. Återkopplad reglering innebär att utsignalen utnyttjas för att beräkna en felsignal och att det ofta även finns en givare i systemet, d.v.s. någon typ av sensor, som regelbundet mäter de storheter som ska regleras. Den informationen används sedan av regulatorn för att bestämma lämplig styrsignal till drivdonet. Denna typ av system kan beskrivas med ett blockdiagram bestående av delsystemen: regulator, process och givare.

Figur 2.1, generell modell av återkopplade styrsystem. [1]

I Figur 2.1 är GR(s), GP(s) och GG(s) är regulatorns, processens och givarens

överföringsfunktioner, respektive. I det här projektet försummas dock givarens inverkan på signalen och givarens förstärkning antas vara 1 för alla frekvenser. Signalerna i reglersystemet är:

Börvärde – den reglerade storhetens önskade värde, r(t).

Ärvärde – den reglerade storhetens aktuella värde, y(t).

(9)

När man försummar givarens inverkan (sätter GG =1) så kan man uttrycka

överföringsfunktionen för hela reglersystemet, d.v.s. allting i blockdiagrammet i Figur 2.1 som: ) ( ) ( 1 ) ( ) ( ) ( s G s G s G s G s G P R P R T   (2.1)

2.1.2 Egenskaper hos ett återkopplat styrsystem

2.1.2.1 Stabilitet

När man undersöker ett reglersystem gör man det typiskt genom att titta på dess stegsvar. Det finns flera egenskaper man är intresserad av. Ett är systemets stabilitet. Ett system anses vara stabilt så länge utsignalen inte börjar skena iväg eller pendla med tilltagande amplitud för begränsade insignaler.

Även om ett system är stabilt så är man då intresserad av hur stabilt systemet är. I det ideala fallet har utsignalen ett icke oscillerande beteende och når börvärdet utan att överskrida det. Dock är det så att i system med sämre stabilitet har utsignalen en viss oscillation. Figur

2.2 visar exempel på stegsvar av system med olika grader av stabilitet.

Figur 2.2, stegsvar från system med olika grader av stabilitet. Översvängen, M, är angiven för den orangea kurvan.

I de fall stegsvaret har ett oscillativt förlopp är den storhet i stegsvaret som karaktäriserar stabiliteten dess översväng:

Översväng – M, hur mycket utsignalen överskrider börvärdet som högst. Storleken av

översvängen anges vanligtvis i procent av jämnviktsvärdet.

Ett systems stabilitet kan bestämmas utifrån överföringsfunktionen för hela reglersystemet,

GT(s). Då GT (s) innehåller komplexa poler kommer stegsvaret att ha en oscillerande

komponent, då det i tidsdomän motsvaras av en sinus eller cosinus term vilket i sin tur resulterar i att systemet har översväng. Figur 2.3 visar exempel på hur polplaceringen påvärkar stabiliteten. Ju närmare imaginäraxeln polerna ligger desto mer försämras

(10)

Figur 2.3, stegsvar för system med olika poler. 2.1.2.2 Snabbhet

En annan egenskap man är intresserad av är systemets snabbhet. Med snabbhet menar man hur fort utsignalen svänger in sig efter börvärdesändringar och hur snabbt det kan eliminera reglerfel. Det finns flera mått som kan användas för att ange snabbheten hos ett system, men de två vanligaste, och de som används i den här rapporten, är stigtid och insvängningstid:

Stigtid – tr, hur lång tid det tar för utsignalen att ändra sig från 10% till 90% av sitt slutvärde vid en stegformad börvärdesändring.

Insvängningstid – ts, hur lång tid det tar för systemets utsignal att lägga sig inom en viss procent av dess slutvärde (vanligtvis ±5%).

Figur 2.4, stegsvar med stigtiden tr och insvängningstiden ts utplacerade.

Viktigt att beakta är att insvängningstiden är ett ”kombinationsmått” som beror både på systemets snabbhet och stabilitet.

(11)

2.1.2.3 Statisk noggrannhet

Ännu en egenskap man är intresserad av är reglersystemets statiska noggrannhet. Med statisk noggrannhet avses hur väl det kan eliminera störningar då man förbiser insvängningsförloppet och enbart betraktar sluttilsståndet. Det mått som används för att ange statisk noggrannhet är:

Kvarstående fel – det reglerfel som återstår efter en börvärdesändring vid sluttillståndet,

lim e(t) e0

t  .

Det kvarstående felet efter en stegformad börvärdesändring med steghöjd a kan utryckas som:

) ( ) ( 1 lim 0 0 s G s G a e P R s    (2.2)

Någonting man märker är att om antingen GR(s) eller GP(s) innehåller faktorn 1/s, d.v.s. att

regulatorn eller processen har integrering, så blir det kvarstående felet 0. Viktigt att notera är att åvanstående ekvation endast beräknar det fel som uppstår på grund av reglersystemets,

GT(s), egenskaper. Figur 2.5 visar blockdiagramsmodellen då även störningar är modellerade

och kommer in som en signal v(t). Detta kan leda till ytterligare en felkälla.

Figur 2.5, modell av ett återkopplat styrsystem med en störning v(t).[2]

Då det kommer in en störning, v(t), som är stegformad, med steghöjd a kan det resulterande kvarstående felet uttryckas som:

) ( ) ( 1 ) ( lim 0 G s G s a s G e P R p s v    (2.3)

2.2 Modell av processen

En enkel modell av processen, GP(s), kan fås fram med momentlagen. Enligt momentlagen

blir sambandet mellan det totala vridmomentet Mt, hastigheten v(t) och tröghetsmomentet I:

dt t dv I

Mt  ( ) (2.4)

Det finns två moment som verkar på hjulet: det moment som motorn tillför, M, och ett dämpande moment som motverkar motorn och som ökar med rotationshastigheten. I det enklaste fallet är det dämpande momentet proportionellt hastigheten och det totala momentet beskrivs då som: Mt=M-fv(t), där f är en proportionalitetskonstant. Sätter man in detta i Ekv.

(2.4) får man följande differentialekvation:

) ( ) ( ) ( t M t fv dt t dv I   (2.5)

(12)

Om man gör antagandet att motorns moment är proportionell insignalen så att u(t)=kM(t), sätter hjulets hastighet, v(t), som utsignal och laplacetransformerar detta uttryck får man processens överföringsfunktion: sT K s U s V f   1 ) ( ) ( (2.6)

, där Kfk/ f och TI/ f . Notera att rotationshastighet är derivata av vinkelposition.

Detta innebär att Ekv. (2.5) kan skrivas om som:

) ( ) ( ) ( 2 2 t M dt t d f dt t d I     (2.7)

Laplacetransformering av detta utryck resulterar i överföringsfunktionen för positionen, Ekv.

(2.8), vilket är ett andra ordningens system.

) 1 ( ) ( ) ( sT s K s U s P f   (2.8)

2.3 PID-reglering av DC-servo

Det nämndes i tidigare sektion att de flesta reglersystem är återkopplade. Ett exempel på återkopplad reglering är PID-reglering, vilket är den typ av reglersystem som används för att styra hjulet i det här projektet. PID-står för Proportional, Integral, Derivative och, som

namnet antyder, beror utsignalen hos en PID-regulator på reglerfelets proportion, dess integral och dess derivata.

Hur PID-reglering tillämpas i det här projektet framgår av Figur 2.2, där drivdonet utgörs av DC-motorn. Reglerobjektet utgörs av hjulets rotation där ärvärdet, y(t), återkopplas via en rotationsgivare. Själva regulatorn i den här modellen uppgörs av alla block mellan felvärdet, e(t), och styrsignalen, u(t). Användaren kan välja om den reglerade storheten ska vara hjulets hastighet eller vinkelposition.

Figur 2.6, modell av det återkopplade styrsystemet.[3]

Regulatorns utsignal beskrivs av Ekv. (2.1) där Kp, Ki och K , är regulatorns parametrar. d

dt t de K d e K t e K t u d t i p ) ( ) ( ) ( ) ( 0   

  (2.1)

(13)

Laplacetransformerar man åvanstående utryck och löser för ( ) ) ( ) ( s G s E s U R  får man överföringsfunktionen, Ekv. (2.2); d i p R sK s K K s G ( )   (2.2)

2.3.1 PID-regulatorns egenskaper

Hur stort bidraget ska vara från regulatorns tre delar kan bestämmas via parametrarna Kp, Ki

och Kd. Effekten av att ändra dessa parametrar är att systemets snabbhet, stabilitet och statisk

noggrannhet ändras. I detta underkapitel kommer det gås igenom exakt vad effekten blir på dessa egenskaper.

2.3.1.1 Den proportionella termen

Den proportionella delen av regulatorn beror endast på reglerfelet, e(t). En hög proportionell förstärkning resulterar i stor styrsignal för i förhållande till reglerfelet vilket innebär att systemet blir snabbare, men om den proportionella förstärkningen är för hög kan systemet börja oscillera och stabiliteten försämras. Om den ökas ytterligare kan systemet börja oscillera ur kontroll och bli instabilt.

Hur den proportionella delen påverkar stabilitet beror dock väldigt mycket på systemets ordning och hur de andra parametrarna är inställda. Om man till exempel reglerar ett andra ordningens system (som hjulets position i det här projektet) med endast proportionell reglering (Ki och Kd är då alltså setta till 0) erhålls följande överföringsfunktion:

p f p f f p f p R P R P T K K s Ts K K sT s K K sT s K K s G s G s G s G s G          2 ) 1 ( 1 ) 1 ( ) ( ) ( 1 ) ( ) ( ) ( (2.3)

Polerna hos systemet är komplexa då

f p K T K 4

 och kommer vid dessa värden att ha översväng. Dock har systemets poler negativ realdel oavsett vilka positiva värden Kf, Kp och

T har, därmed kommer systemet alltid att vara stabilt. Eftersom processen GP(s) har

integration så blir det inget kvarstående fel. Man kan då undra sig varför man överhuvudtaget ska ha med integrerande reglering i det här fallet. Dock innebär integration i processen inte att kvarstående fel från störningar kommer elimineras. Det kvarstående fel som orsakas av en stegstörning blir: p P f f s P f f s P R p s v K a K K sT s a K K sT s K a sT s K s G s G a s G e                 lim (1 ) ) 1 ( 1 ) 1 ( lim ) ( ) ( 1 ) ( lim 0 0 0 (2.4)

, där a är steghöjden. För att försäkra sig om att det här felet elimineras, krävs integrerande reglering.

(14)

Figur 2.7, P-reglering av ett andra ordningens system med olika värden på Kp. Om man i stället reglerar ett första ordningens system (som hjulets hastighet) så erhålls följande överföringsfunktion: p f p f f p f p R P R P T K K sT K K sT K K sT K K s G s G s G s G s G          1 1 1 1 ) ( ) ( 1 ) ( ) ( ) ( (2.5)

Här visar det sig att det inte finns någon imaginär pol eller pol med positiv realdel oavsett positivt värde på Kp så att stegsvaret alltid vara stabilt och inte ens ha översväng.

Det blir dock ett kvarstående fel som minskar med ökat Kp:

f p f p s P R s K K sT K K s G s G a e          1 1 1 1 1 lim ) ( ) ( 1 lim 0 0 0 (2.6)

Figur 2.8, P-reglering av ett första ordningens system med olika värden på Kp.

2.3.1.2 Den integrerande termen

Den integrerande termen summerar felet över hela förloppet vilket innebär att även ett litet fel kommer ge ett längsamt ökande bidrag till styrsignalen. Integralen kommer att fortsätta öka så

(15)

länge reglerfelet inte är noll. Därmed blir effekten av att ha integrarande reglering att kvarstående fel elimineras. Det här kan man även se om man använder Ekv. (2.2) och Ekv.

(2.3) för att beräkna kvarstående fel både efter börvärdesändringat och stegstörningar. Som

synes i nedanstående två ekvationer blir slutvärdet då 0 (förutsatt att Ki är skilt från 0).

0 ) ( ) ( lim 1 ) 1 ( 1 lim 2 2 2 0 0 0               f d i p s f d i p s s s T sK K s K K T s s a sT K sK K s K a e (2.7) 0 ) ( lim 1 ) 1 ( 1 1 lim 2 2 0 0                 f d i p f s f d i p f s v K K s K sK T s s a sK sT K sK K s K a sT K e (2.8)

I åvanstående exempel används ett andra ordningens system som process men att använda vilket system som helst där ordningen i nämnaren överstiger ordningen i täljaren ger samma resultat. Den integrerande termen garanterar alltså att kvarstående fel av båda typerna elimineras.

Inte olikt Kp, innebär högre Ki att man offrar stabilitet för snabbhet. I Figur 2.9 visas stegsvaret hos ett reglersystem där ett andraordningenssystem regleras av en PI-regulator. Som vi ser i Figur 2.9 innebär högre Ki att stigtiden blir kortare, dock blir oscillationer större vilket leder till högre insvängningstid och sämre stabilitet. Om Ki är för stort blir systemet instabilt.

Figur 2.9, PI-reglering av ett andra ordningens system med olika värden på Ki.

Vid PI-reglering av ett första ordningens system är dock reglersystemet alltid stabilt vilket kan ses i överföringsfuntionen för hela det systemet:

f i p f i f p f i p f i p R P R P T K K K s T s K K K sK sT K sK K sT K sK K s G s G s G s G s G              ) 1 ( 1 ) ( 1 1 ) ( ) ( ) ( 1 ) ( ) ( ) ( 2 (2.9)

(16)

Där systemets poler har positiv realdel för alla positiva parametrar och har översväng då: f f p i TK K K K 4 1   .

2.3.1.3 Den deriverande termen

Den deriverande termen får utsignalen att minska då ärvärdet ökar. Till skillnad från den proportionella och integrerande termerna som strävar efter att felet blir noll så jobbar den deriverande termen mot att derivatan istället blir noll. Den deriverande termen försöker alltså ”platta till" utsignalen. Detta innebär att oscillationer dämpas, översväng minskar och därmed att stabilitet förbättras med ökat Ki.

För att förstå hur den deriverande termen påvärkar stigtid måste man komma ihåg att derivatan på en stegfunktion är oändlig vid tidpunkten noll. Figur 2.10 visar ett hypotetiskt stegsvarsförlopp samt reglerfelets derivata i det fallet. Derivatan är negativ under stigtiden med undantag för t=0 då det uppstår en oändligt hög impuls. För praktiska regulatorer är denna impuls inte oändlig men har en viss bredd och höjd som varierar från fabrikat till fabrikat.

Figur 2.10, hypotetiskt stegsvarsförlopp och tillhörande derivata.

För att undvika den här impulsen baserar många praktiska regulatorer derivatan i PID-ekvationen (Ekv. 2.1) på ärvärdet istället för reglerfelet. Då ersätter man alltså de(t)/dt med –dy(t)/dt. Den enda effekten av den här ändringen blir att impulsen vid börvärdesändringar försvinner.

Om man bortser från impulsen ger den deriverande termen negativt bidrag under stigtiden och därmed kan högre Ki innebära att systemet får längre stigtid. I praktiken använder de flesta PID-regulatorer väldigt lite deriverande reglering, alltså litet Ki, då den

deriverande delen är väldigt känslig för mätbrus. Om mätbruset är för stort kan den deriverande termen göra systemet instabilt.

2.3.1.4 Sammanfattning av parametrarna

Utifrån de resonemang som gåtts igenom i detta underkapitel kan effekten av att ändra de tre parametrarna kan sammanfattas som:

(17)

Högre Kp

Mindre stigtid, högre översväng, sämre stabilitet, mindre kvarstående fel.

Högre Ki

Mindre stigtid, högre översväng, högre insvängningstid. Att överhuvudtaget ha en integrerande del, d.v.s. Ki>0, gör att kvarstående fel förr eller senare elimineras.

Högre Kd

Minskar översväng, minskar insvängningstid, bättre stabilitet. Dock väldigt känslig för mätbrus och därför sätts Kd vanligtvis lågt.

2.4 Digitalt filter

Ett analogt förstagradigt lågpassfilter beskrivs av överföringsfunktionen Ekv. (2.10), där  är c brytfrekvensen. c j s X s Y     1 1 ) ( ) ( (2.10)

För att skapa ett digitalt filter med approximativt samma egenskaper kan den bilinjära transformen användas vilket transformerar funktionen till z-domänen. Då sätts

) 1 ( ) 1 ( 2    z h z j ,

där h är steglängden. Transformering av Ekv. (2.10) ger då, efter lite algebraisk upprensning, överföringsfunktionen, Ekv. (2.11). 1 1 ) 2 ( 2 ) ( ) (        z h h hz h z X z Y c c c c     (2.11)

Invers z-transformering av Ekv. (2.11) ger ett uttryck för det önskade filtret i k-domänen, Ekv

(2.12), där k är en diskret variabel och är relaterad till tidsvariabeln t enligt t=kh:

  

  

 

  

1 1 1 1 2 1 1 2               h f k x k x h f k y h f h k x k x h k y h k y c c c c c c      (2.12)

2.5 Minsta kvadratanpassning

Minstakvadratanpassning är en metod för att approximera en lösning till överbestämda ekvationsystem och används typiskt för kurvanpassning. I Figur 2.3 har en andragradskurva ansatts till en datamängd med minstakvadratmetoden. Kurvan blir anpassad så att summan av kvadraten av residualerna,

  n i i r S 1 2

(18)

Figur 2.3, exemel på kurvanpassning med minstakvadratmetoden.

För att beräkna hjulets hastighet görs ansatsen att hjulets vinkelposition för de senaste n mätpunkterna har ett andragradsbeteende enligt Ekv. (2.13).

2 2 1 0 ) (t a at a t p    (2.13)

För att hitta a-koefficienterna sätter man in de n mätpunkterna, (tin,pin), i Ekv. (2.13) vilket

ger ett överbestämt ekvationsystem, Ekv. (2.14):

A x b                                            n n n p p p a a a t t t t t t . . 1 . . . . . . 1 1 2 1 2 1 0 2 2 2 2 2 1 1 ´ (2.14)

Multiplicerar man båda sidor av matrisekvationen med transponaten av matris A får man ett ekvationsystem med entydig lösning, Ekv. (2.15):

ATA x ATb                                               

           2 1 1 1 2 1 0 1 4 1 3 1 2 1 3 1 2 1 1 2 1 i n i i i n i i n i i n i i n i i n i i n i i n i i n i i n i i n i i t p t p p a a a t t t t t t t t n (2.15)

(19)

Utryck för hastigheten fås genom att derivera Ekv. (2.13) och då blir resultatet Ekv. (2.16). Insättning av koefficienterna a , 1 a och den aktuella tiden ger en uppskattning av den 2

aktuella hastigheten. t a a t v dt t dp 2 1 2 ) ( ) ( (2.16)

(20)

3 SERVOSYSTEMET

3.1 Översikt

Systemet består av både hårdvaru- och mjukvarukomponenter. Det finns fem hårdvarusystem som är ihopkopplade med varandra: ett mikrokontrollerkort av modell Arduino UNO som är kopplat till en persondator, en H-brygga, en rotationssensor och en DC-motor som driver hjulet. Sedan finns det även två mjukvarusystem: ett Arduinoprogram i mikrokontrollern, vilket implementerar regulatorn, och ett LabVIEW program på persondatorn som utgör

användargränssnittet. Kopplingschemat för hårdvarukomponenterna kan ses nedan i Figur 3.1.

Figur 3.1, systemets kopplingsschema.

3.2 Hårdvaror

3.2.1 H-brygga

Motorn får sin strömförsöjning via en H-brygga av modell L298N. Det är en billig komponent som kan köpas för under 40kr och är kapabel att strömförsörja upp till 2A. Insignalen till H-bryggan är en PWM-signal från arduinon där pulsbredden bestämmer spänningen över DC-motorn. H-bryggan kan hantera motorns båda riktningar i och med att den kan växla mellan att försörja positiv och negativ spänning.

(21)

3.2.2 Arduino UNO

Arduino UNO är en mikrokontroller baserad på Atmels ATmega328P mikroprocessor avsedd för att göra elektronik mer tillgänglig. I det här systemet får den sin strömförsörjning via en nätadapter, men den kan även försörjas via USB. Arduinon är kopplad till pulsgivaren och H-bryggan, och det är i Arduinos kod som regulatorn är implementerad.

Figur 3.3, Arduino UNO [5]

3.2.3 Pulsgivare

Pulsgivaren AEAT-601B (Figur 3.4) används för att bestämma både hjulets vinkelposition och hastighet. Den har tre utgångar: en generar en puls när hjulet har snurrat ett helt varv och de andra två genererar 256 pulser per varv, fasförskjutna mellan varandra 90 grader. När man använder stigande och fallande flank från båda kanaler för att detektera en positionsförändring ger det här en upplösning på 1024 mätbara nivåer per varv, d.v.s. 10 bitars upplösning.

(22)

Figur 3.5 utsignalen från pulsgivarens tre kanaler [7]

3.3 Mjukvaror

3.3.1 LabVIEW

LabVIEW, som står för Laboratory Virtual Instrument Engineering Workbench är en

utvecklingsmiljö med ett grafiskt programmeringsspåk som vanligen används för att utveckla applikationer för datainsamling, automation och instrumentkontroll. Det är i LabVIEW som användargränsnittet är utvecklat. Programmeringsspråket i LabVIEW är ett grafiskt

programmeringsspråk där kod representeras av blockdiagram.

Figur.3.6, Huvudloopen i programmet som körs efter att kommunikation med Arduino har etablerats.

3.3.2 Arduino IDE

Likt hårdvaran är mjukvaran gjord att vara enkel och lättillgänglig. Arduino har sitt eget programmeringsspråk som är likt C/C++, fast med många förenklingar. Det krävs till exempel endast två funktioner för att kunna köra ett program: setup(), som anropas i början av

programmet, och loop(), som anropas upprepat medan Arduino är påslagen.

Arduino har även sin egen utvecklingsmiljö, skrivet i Java, där kompilering och uppladdning kan utföras med ett enda klick.

(23)

4 ANALYS

4.1 Undersökning av störningar

När man undersöker störningar är det viktigt att differentiera mellan procesströrningar och mätbrus. Detta är på grund av att processtörningar, till skillnad från mätstörningar, är någonting man vill kunna se, speciellt när den informationen ska användas av en regulator.

För att undersöka de störningar som finns har systemet körts med PI-reglering och konstant börvärde där regulatorn är inställd på att reglera hastighet. I Figur.7 visas resultatet av tre körningar med olika börvärde. Kurvorna p1, p2 och p3 visar den position som mättes upp vid körningarna och v1, v2 och v3 visar den hastighet man får när man använder den metod, Ekv. (4.1), som systemet använder för att uppskatta hastigheten för respektive körning.

Figur 4.1, positionen för tre körningar och dess beräknade hastigheter.

Det märks att det är väldigt mycket högfrekvent brus hos den uppskattade hastigheten. Det som i synnerhet gör mätbrus till ett problem är att att den deriverande delen i regulatorn är känslig för det och får en väldigt ojämn utsignal.

Någonting annat som syns i grafen är att hastigheten för varje körning även har en lågfrekvent störning med tydlig frekvens. Hjulet som dessa tester utfördes på var väldigt skevt och det gick att se hastighetsvariationen med blotta ögat så det här är processtörningar. Det upptäcktes senare att det hjulet råkade vara det sämsta av alla hjul i inventariet, och de andra hjulen har betydligt lindrigare processtörningar. Dock har hjulen gemensamt att eventuella processtörningar vid PI-reglering är lågfrekventa.

4.2 Jämförelse mellan olika metoder för att uppskatta

hastighet

Det finns olika sätt att uppskatta hastigheten ifrån den uppmätta positionen. De två enklaste metoderna är att man antingen mäter upp tidsåtgången mellan ett bestämt antal pulser

(24)

T P v  (4.1) T P v   (4.2)

Båda metoderna har sina för- och nackdelar. Att ha konstant ΔP Ekv. (4.1) innebär att upplösningen (och även processorbelastningen) blir proportionell mot hastigheten. Den här metoden ger ingen information om rotationsriktningen. Att skriva ytterligare kod för att detektera riktning är förstås inget svårt, men det vore ytterligare en belastning på processorn. Ytterligare ett problem med denna metod är att i och med att hastigheten endast uppdateras då hjulet är i rörelse uppstår det ett kvarstående mätfel efter att hjulet har stannat.

När man använder konstant ΔT, Ekv. (4.2), har man inte dessa problem, däremot så uppstår det en omsampling av signalen istället vilket leder till en annan felkälla. Ett försök gjordes med att implementera Ekv. (4.2) med hjälp av timeravbrott med klassbiblioteket

Timer1 [8], men tyvärr visade det sig att det får pwm-porten, som är kopplad till h-bryggan,

att sluta fungera.

För att åtgärda dessa problem har en ytterligare metod testats: minsta kvadratanpassning. En härledning till hur hastigheten beräknas med den metoden finns i teoridelen av den här rapporten i sektion 2.4.

I Figur 3.8 visas en kort körning av systemet då hastigheten mäts med både Ekv. (4.1) (grön gurva) och minsta kvadratanpassning (svart kurva). De förväntade problemen dyker upp: den gröna kurvan har låg upplösning vid låg hastighet och lämnar ett kvarstående fel efter att hjulet stannat. Den svarta kurvan har inte det här problemet.

Figur 4.2, hastigheten beräknad med minstakvadratanpassning (svart kurva) och Ekv. 4.1 (grön kurva).

(25)

5 IMPLEMENTERING

5.1 Lågpassfilter

Lågpassfiltret som beskrivs av Ekv. (2.5) kan implementeras enkelt med nedanstånde kodstycke i Arduino för att anropas varhelst det behövs. Det här filtret används vid hastighetsreglering för att filtrera D-delens utsignal. Frekvensen hos processtörningarna i

Figur 4.1 verkar vara ungefär dubbelt så stora som hastigheten. När den här metoden sedan

anropas i koden har argumentet fc (brytfrekvensen) därför satts till börvärdet*4 för att hålla processtörningarna inom passbandet.

X är invärdet, Xp är invärdet från föregående anrop, Yp är utvärdet från föregående anrop fc är brytfrekfensen och h är steglängden (tidsåtgången sen föregående anrop).

float LPfilter(float X, float Xp, float Yp, float fc, float h) {

return ((1-PI*fc*h)*Yp+PI*fc*h*(X+Xp))/(PI*fc*h+1); }

Det visade sig att även med minstakvadratanpassning blir hastigheten brusig, åtminstone vid konstant hastighet. För att filtrera det värsta av det har ett lågpassfilter implementerats i LabVIEW, men brytfrekvensen har hållits hög för att inte riskera att det övriga

frekvensinnehållet får en märkbar fasvridning. I Figur 5.1 visas det digitala lågpassfiltret beskrivet av Ekv. (2.5). Terminalen ”Step length” i figuren matas med tidsåtgången mellan anropen.

Figur 5.1, lågpassfiltret implementerat i LabVIEW som en subVI.

5.2 Hastighetsuppskattning med minstakvadratmetoden

Hastighetsuppskattning med minstakvadratmetoden är implementerad i LabVIEW. För att det ska fungera måste ett visst antal tidigare mätpunkter lagras. Detta görs i två cirkulära köer: en för positionsvärdena och en för tillhörande tidsvärden.

Den del av programmet som upprätthåller cirkulära köer har jag valt att placera i en egen subVI, RotateAndReplace.vi som visas i Figur 5.2. Varje gång den anropas kommer det äldsta elementet i arrayen att tas bort. Sedan kommer alla återstående element att flytta sin position i arrayen ett steg och slutligen kommer ett nytt element att matas in. På så sätt kommer elementen i arrayen att hållas sorterade efter den ordning de har matats in.

(26)

Figur 5.2, subVI för upprätthållning av cirkulära köer.

Hastighetsuppskattning med minstakvadratmetoden görs av subVIn

CalcSpeedUsingLeastSquare.vi som visas i Figur 5.3. Matrisekvationen Ekv. (2.8) från sida 8

löses med en .vi-fil som redan finns i LabVIEW ämnad för det ändamålet, General

Polynomial Fit.vi. Dessa koefficienter sätts in i Ekv. (2.9) och hastigheten är därmed beräknad.

Denna subVI anropas kontinuerligt i programmet för att hålla hastigheten uppdaterad.

(27)

6 RESULTAT OCH DISKUSSION

6.1 Prestandaevaluering

För att undersöka systemets egenskaper har stegsvarstester gjorts med både

hastighetsreglering och positionsreglering. Börvärdet vid hastighetsreglering har satts till 1varv/s och, vid positionsreglering, 360 grader. Någonting som märktes vid positionsreglering är att flera körningar med samma parametrar kan ge lite varierande resultat. Variationen kan dock minskas genom att se till att hjulet hela tiden startar från samma vinkelposition i varje körning i stället för att bara säga åt den att röra sig 360 grader framåt ifrån där den stannade.

6.1.1 P-reglering

De sex graferna nedan visar resultatet då systemet körs med endast P-reglering, det vill säga

Ki=Kd=0. Tre av körningarna körs med positionsreglering och tre med hastighetsreglering,

med olika värden för Kp.

Vid hastighetsregleringskörningarna minskar det kvarstående felet med ökad

hastighetsreglering, vilket är vad Ekv. (2.6) i teoridelen av den här rapporten säger att den ska göra. Dock är det så att det inte blir någon märkbar skillnad i stigtid trots att i teorin ska snabbheten öka med ökat Ki (jämför Figur 6.2, 6.4 och 6.6 med det teoretiska

stegsvarsförloppet i Figur 2). En möjlig förklaring för det här kan vara att det maximala vridmomentet som motorn kan tillföra har nåtts för dessa värden och hjulet kan därmed inte accelereras snabbare.

Vid positionsregleringskörningarna, så som teorin säger att det ska göra, minskar stigtiden med ökat Kp och högt Kp leder till översväng. I teoridelen av den här rapporten

faställdes det att vid P-reglering av ett störningsfritt andra ordningens system blir det inget kvarstående fel. I Figur 6.1 och 6.3 kan vi se att det blir ett visst fel, vilket betyder att det finns en (icke-oscillerande) störning.

Positionsreglering Hastighetsreglering

(28)

Figur 6.3, positionsreglering, Kp=0,10. Figur 6.4, hastighetsreglering, Kp=100.

Figur 6.5, positionsreglering, Kp=0,20. Figur 6.6, hastighetsreglering, Kp=150.

6.1.2 PI-reglering

I dem fyra graferna nedan kan man se resultatet då man har samma värden på Kp som i Figur

6.1 och Figur 6.2 då även integrerande verkan kopplas på.

Vid hastighetsreglering gör tillägget av integrarande reglering precis den effekt som den ska har i teorin: det kvarstående felet elimineras och om man jämför Figur 6.8 med Figur

6.10 så ser man att ökat Ki innebär att man offrar stabilitet (högre Ki ger upphov till

översväng) för snabbhet (kortare stigtid).

Vid positionsreglering händer samma sak, dock kan systemet ha ett speciellt beteende och det är att hjulet inte alltid är i rörelse tills den når börvärdet. Detta kan observeras i Figur

6.7 där hjulet stannar en bra bit ifrån börvärdet och efter ett tag börjar röra sig igen mot

börvärdet.

(29)

Figur 6.7, positionsreglering, Kp=0,09; Ki =0.01 Figur.6.8, hastighetsreglering, Kp=50; Ki=40

Figur 6.9 , positionsreglering, Kp=0,09; Ki =0,05 Figur 6.10, hastighetsreglering, Kp=50; Ki=200

En möjlig källa till störningen som orsakar det kvarståendefelet vid P-reglering av position samt ”pausen” vid PI-reglering av position är friktionen. Modellen av processen, GP(s)

beskrivet i sektion 2.2 i den här rapporten tar inte hänsyn till hjulets friktion. Det som troligtvis hände då hjulet ”pausade” i Figur 6.7 är att motorns moment vid det tidsintervallet var för lågt för att övervinna friktionen.

6.1.3 PID-reglering

De fyra graferna nedan visar vad som händer när man utför körningar med samma Kp och Ki parametrar som i föregående sektion i Figur.6.9 och Figur 6.8, men även lägger till

deriverande verkan. Desto högre Ki, desto mer minskar översväng och stigtid.

Trots att regulatorn är implementerad så att den använder felets derivata istället för ärvärdets så syns inget spår av impulsen som demonstrerades i Figur 2.10 vid varken hastighetsreglering eller positionsreglering, dock borde den vara filtrerad vid

hastighetsreglering.

Vid hastighetsreglering blir hastigheten tyvärr ojämn, speciellt i Figur 6.14 där D-verkan är hög. Det här är effekt av de högfrekventa mätstörningar som finns i hastigheten vilket D-delen i regulatorn är känslig för.

Ett annat problem som uppstår vid positionsreglering, om man jämför med Figur 6.9 som inte har D-verkan, är att insvängingstiden blir längre i stället för kortare. En möjlig orsak till det här kan vara att, eftersom D-delen jobbar för att motverka ändringar i felet, när hjulet stannar blir det bidraget från derivatan ytterligare ett hinder utöver friktionen mot att få hjulet i rörelse igen.

Positionsreglering Hastighetsreglering

(30)

Figur 6.13, positionsreglering, Kp=0,09; Ki =0.05; Kd=0.04 Figur 6.14, hastighetsreglering, Kp=50; Ki=40; Kd=30

6.2 Störningsdämpning

En del förbättringar av systemets prestanda och även förmåga att uppskatta hastighet har åstadskommits. De ändringar gällande hastighetsuppskattningen har dock endast gjorts i visningsyfte och påvärkar inte kontroll-loopen.

Innan det här projektet gjorde tillägget av integrerande verkan vid hastighetsreglering att utsignalen, och därmed motorns beteende, blev väldigt ojämn. Det här hade inträffat på grund av en bugg i Arduinokoden. Nu har det här dock åtgärdats.

Hastighetsuppskattningen lider av skarpt brus, vilket gör att den uppskattade derivatan blir väldigt förvrängd. I Figur 6.15 kan man se derivatan av hastigheten före och efter

filtrering. Det digitala lågpassfiltrer har gjort en viss förbättring, men utsignalen av D-delen är fortfarande väldigt ojämn.

Figur 6.15, derivatan av hastigheten före (svart kurva) och efter filtrering (röd kurva).

Att använda minstakvadratmetoden istället för den algoritm som tidigare användes för hastighetsuppskattning gör att (i alla fall gällande den information som visas för användaren) att gör det inte längre är låg upplösning för låga hastigheter, samt att riktning detekteras. Dessa är förutsättningar för att läsa av hastigheten då den är sinusformad. I Figur 6.16 visas en jämförelse av de resultat den gamla och nya beräkningsmetoden får då hastigheten ska uppskattas och insignalen är en sinussignal.

(31)

Figur 6.16, svart kurva visar hastigheten uppskattad med minsta kvadratmetoden, grön kurva visar hastigheten uppskattad med Ekv. (4.1). Röd kurva är insignalen.

Det finns dock ett problem med den implementation av minsta kvadratmetoden som använts. Eftersom minstakvadratprogrammet utförs i LabVIEW-programmets huvudloop blir

samplingsfrekvensen beroende på datorns prestanda, vilket betyder att det finns risk att olika datorer visar olika resultat.

6.3 Övriga ändringar

LabVIEW programmet bluescreenade datorn förut. Det här kunde hända slumpmässigt närsomhelst oavsett vad användaren gjorde. Det här löstes efter att ändra en inställning hos blocket VISA read (IO-mode ställdes in på synkront). Det här gör att den anropande tråden ägnar sig endast till att utföra dataöverföringen tills det är klart [9].

Ett annat problem var en bugg som gjorde att om man stoppade programmet så gick det inte att köra det igen föränn efter att man stängt ner LabVIEW helt och hållet först.

Anledningen till detta visade sig vara att seriell kommunikation med Arduino kvarstod vilket resulterade i fel när den försökte starta den igen. Det här har åtgärdats genom att helt enkelt se till att programmet stänger kommunikationen först ifall den redan är igång.

En bugg i arduinoprogrammet upptäcktes och fixades som gjorde att hjulet fick ojämn hastighet då reglulatorn hade I-verkan. Anledningen till det här var att programmet hade använt tecknet på felet i stället för tecknet på PID-ekvationens utsignal, Ekv. (2.1), för att avgöra motorns riktning.

Flera mindre mindre ändringar har gjorts för att få ett mer användarvänligt program: användaren har nu möjlighet att justera Y-axeln, spara bilder på grafen som .bmp-fil och användaren kan även återställa ärvärdet vid positionsreglering.

(32)

7 SLUTSATSER OCH FORTSATT ARBETE

Buggarna som tidigare fanns i systemet är helt borta, användaren har mer alternativ i hur information visas och sinusfunktionen fungerar utan problem.

Minstakvadratanpassning i LabVIEW har visat sig fungera bra för att visa hastigheten då den är sinusformad, även vid låga hastigheter och höga frekvenser. Däremot visar den fortfarande en del brus vid konstant hastighet. Det är heller inte information som regulatorn har tillgång till utan den använder samma beräkningsmetod som innan det här projektet för att uppskatta hastigheten.

Nyckeln till att lösa dem problem som finns i systemet är att antingen köpa rotationsgivare med högre precision eller hitta och implementera en beräkningsmetod i Arduino som kan uppskatta hastigheten utan att det blir brus och utan att det tappas viktig information (kraftig filtrering t.ex., kan orsaka fasfördröjning för det återstående

frekvensinnehållet). Det här skulle inte bara ge användaren precis information utan också få den deriverande delen vid hastighetsreglering att fungera ordentligt. En fungerande D-del i sin tur kan användas för att motverka eventuella processtörningar.

(33)

REFERENSER

[1], [2], [3] Modifierade bilder, orginalbild från Wikimedia (2018)

https://commons.wikimedia.org/wiki/File:PID.svg

[4] Oddwires (2018) L298N Dual H Bridge DC Stepper Motor Controller

http://www.oddwires.com/l298n-dual-h-bridge-dc-stepper-motor-controller-module-for-arduino/

[5] store.arduino (2018) Arduino UNO Rev 3

https://store.arduino.cc/arduino-uno-rev3

[6] Uk.rs-online (2018). Broadcom Incremental Encoder 256ppr 12000rpm.

http://uk.rs-online.com/web/p/rotary-encoders/7140237/

[7] Broadcom (2018). Magnetic Incremental Encoder.

https://www.broadcom.com/products/motion-control-encoders/magneticencoders/ aeat-601bf06

[8] Arduino (2018) Timer1

https://playground.arduino.cc/Code/Timer1

[9] digital.ni (2018) Choosing Between Synchronous and Asynchronous NI-VISA Functions

(34)

BILAGA

B.1 PID-kontroller för DC-servo – Användarhandledning

1. INSTALLATION

För att kunna använda mjukvaran behöver LabVIEW 2017 eller LabVIEW Run-Time Engine 2017 vara installerat. Man behöver även ha NI-VISA 17.0 installerat.

LabVIEW Run-Time Engine för Windows

http://www.ni.com/download/labview-run-time-engine-2017/6821/en/

NI-VISA 17.0 för Windows

http://www.ni.com/download/ni-visa-17.0/6646/en/

2. STARTA KOMMUNIKATION MED HÅRDVARAN

Efter att LabVIEW och NI-VISA är installerade och hjulet är inkopplat, starta applikationen FerrisWheel.exe. Längst upp till höger finns en drop down meny rubricerad ”USB Port”. Välj den USB port hjulet är inkopplad till. Efter att USB-port har valts kommer programmet frysa i några sekunder och sedan, om hjulet upptäcks på den porten, kommer grafen att börja rulla och resten av programmet är nu redo för användning.

Välj den USB-port hjulet är inkopllad till. Ifall programmet inte upptäcker hjulet hos den valda porten

dyker följande felmedellande upp.

Om programmet inte upptäcker hjulet på den porten kommer ett fel-medelande att dyka upp i rutan längst ner till vänster. I så fall välj en annan port och testa igen. Ifall ingen USB-port fungerar kolla att NI-VISA faktiskt är installerad.

3. ANVÄNDNING AV PID-KONTROLLERN

För att utföra en körning välj vilken typ av körning du vill köra genom att välja någon av de fyra flikarna: ”Position”, ”Speed”, ”System ID” eller ”ID Sinus”. Välj sedan parametrar och börvärde (till höger om grafen) och sedan tryck på ”DRIVE”. För att stoppa en körning som pågår tryck på ”DRIVE” igen.

(35)

Hur man utför en körning.

I positionsregleringsfliken finns en extra knapp, ”SET”. Den knappen sätter hjulets nuvarande position till att vara 0. Tyck på denna mellan varje positionskörning för att nollställa ärvärdet. Kom ihåg att stoppa föregående körning först genom att se till att ”DRIVE” är avstängt innan ni trycker på ”SET”.

Obs! Olika positionskörningar med samma parametrar kan ge lite varierande resultat. Det är

rekommenderat att man startar hjulet från ungefär samma vinkelposition då man utför flera positionskörningar. Det här minskar variationen i resultatet.

(36)

B.2 PID-kontroller för DC-servo – Labbinstruktion

INLEDNING

Reglerteknik har oerhört många tillämpningsområden.

Ett vanligt exempel är positionsreglering av t.ex. robotarmar, servostyrning i en bil, där ett visst rattutslag skall motsvara ett visst läge (vinkelposition) på hjulen eller styrning av en likströmsmotor kopplat till ett stående hjul. I alla dessa exempel vill man att robotarmen eller hjulen snabbt ställer in sig i rätt läge (följer börvärdesändringen). Detta betyder att

reglersystemet skall reagera snabbt, men även att det snabbt och säkert stabiliserar sig i det önskade läget. (Reglersystemet skall ha optimala egenskaper: kort stig- och insvängningstid, liten översläng, inget kvarstående fel.) Rörelsen hos robotarmen, eller ett hjul skiva kan erhållas med hjälp av en likströmsmotor (DC-servo).

SYFTET med laborationen är att få förståelse för grundläggande begrepp inom reglerteknik

såsom börvärde, ärvärde, styrsignal, stegsvar, stegsvarssanalys, överföringsfunktion. I denna laboration undersöks även samverkan mellan regulator och process, inställningen av

reglerparametrar för PID-reglering och hur parametrarna påverkar reglersystemets egenskaper. Syftet är även att redovisa resultaten skrifligt gruppvis i en rapport (enligt anvisningar i Bilaga 0.)

MODELLEN

Det återkopplade reglersystemet representeras av det välkända blockschemat:

Processen i denna laboration är ett DC-servosystem (en vanlig DC-motor kopplad till ett stående hjul) som regleras med en PID-regulator.

Beroende på den reglerade storheten (ärvärdet), är processmodellen vid hastighetsreglering ett första ordningens system och vid positionsreglering ett andra ordningens system.

Regulatorn kan ställas in som P, PI eller PID regulator. PID regulatorns överföringsfunktion är:

) 1 1 ( ) ( T s s T K s K s K K s G d i d i p

R       (Läs i kursboken T:sid.66, sid.218)

Insignalen kan i gränssnittet väljas som ett steg- eller en sinussignal. I laborationen skall de beräknade stegsvaren jämföras med de verkliga som uppmätts på servosystemet.

Gränssnittet är gjort i LabView.

Läs härledningen av motorns överföringsfunktion i Bilaga 1!

r + e u y

Regulator

G

R

Process

G

P Bör-värde Fel-signal Styr-signal Är-värde vs Störning

(37)

1. Hastighetsreglering: ett första ordningens system

Låt oss börja med att undersöka den enklaste (första ordningens) process i ett återkopplat reglersystem: då vi betraktar likspänningen u som motorns insignal och rotationshastigheten v som servots utsignal.

Processens överföringsfunktion vid hastighetsreglering blir:

GP(s) = ) ( ) ( s U s V sT Kf   1

Ett första ordningens system karakteriseras av sin förstärkning/tröghet Kf och sin tidskonstant

T (beroende av motorns egenskaper).

Bekanta dig med det enkla gränssnittet!

För att utföra en körning välj parametrar och börvärde och tryck sedan på knappen ”DRIVE”. Du ser bilden av ett oscilloskop med 2 kanaler med både börvärdet och ärvärdet samtidigt. Alla bör- och ärvärden är omskalade till rätt enhet: grader aller varv/s. Man kan se i realtid vad som skett upp till 20s bakåt i tiden.

För att få bilder av grafen till rapporten, pausa grafen genom att trycka på ”Pause graph” knappen och sedan tryck på ”SAVE” knappen.

Uppgift 1:

Beräkna stegsvaret för det återkopplade reglersystemet, med en P regulator: GR = K.

Insignalen är börvärdet r (hjulets önskade hastighet) och utsignalen y är hjulets aktuella hastighet v .

Uppgift 2:

Välj fliken ”Speed” längst upp i gränssnittet för att ställa in systemet på hastighetsreglering. Koppla in bara en P regulator först: ställ in Kp = 50, 100 och 150, Ki = 0 och Kd = 0.

Skriv in börvärdet 1 för ett enhetssteg.

Max. hastigheten är begränsad i gränssnittet till 6,5 varv/s. Spara/bifoga stegsvaren.

Hur påverkar Kp stigtiden och den eventuella maximala översvängen?

Uppgift 3:

Hur påverkas stegsvaret vid Kp = 50 då även den integrerande regleringen är med,

t.ex. välj Ki = 40 och 200 och börvärdet = 1 varv/s? Vad händer med det kvarvarande felet?

Hur skiljer sig resultaten med olika Ki?

Vilken ändring sker i stegsvaret då även den deriverande regleringen kopplas in med

Kd = 10 och 30 (vid Kp = 50, Ki = 40)?

Spara/bifoga stegsvaren. Kommentera.

r + e u y (=v)

K

K

f

1 + sT

vs

(38)

Uppgift 4:

Som du kanske märker är hastigheten på hjulet något ojämnt, vad beror det på? Påverkar den ojämna hastigheten resultaten i uppgift 3?

Uppgift 5:

Nu ska vi titta på stegsvaret för det öppna systemet för att kunna identifiera systemet. Välj läget ”System ID” i gränssnittet. Under denna flik går det att skicka en heaviside-funktion som insignal till systemet. Sätt amplituden till 1V (om ni har ett hjul med högt rullmotstånd och hjulet inte rör sig kan ni använda 1.5V i stället). I grafen kan du läsa ut den heaviside-signalen som går in i systemet samt hur systemet reagerar på denna signal

(hastigheten hos hjulet). Regleringen är nu urkopplad och det som visas är alltså det öppna systemet stegsvar.

Dra en slutsats utifrån systemets stegsvar vilken ordning systemet har. Ta fram

överföringsfunktionen för systemet utifrån stegsvaret.

2. Positionsreglering: ett andra ordningens system

Nu betraktar vi skivans position (d.v.s. vinkelläge θ) som utsignal: y = θ. Insignalen är spänningen u över motorn. Eftersom hastigheten är derivatan av positionen ger en ren integration av hastigheten skivans position. Systemet är därför ett andra ordningens system:

) ( ) 1 ( ) ( U s sT s K s f   

Där GP( )sKf

s(1sT)

är processens överföringsfunktion från U till Θ.

Uppgift 6:

Beräkna det återkopplade systemets totala överföringsfunktion GT(s), då regulatorn är en P

regulator med K förstärkning. Insignalen är det önskade vinkelläget: börvärdet R(s) och utsignalen är skivans verkliga vinkelläge θ(s).

Uppgift 7:

Välj i gränssnittet fliken ”Position” för att ställa in systemet på positionsregering.

Ändra börvärdet till 360 grader. Tryck på ”SET” knappen innan varje körning när ”DRIVE” är avstängt för att nollställa ärvärdet.

Redovisa stegsvaren för det återkopplade systemet när det bara en P reglering är inställd. Välj Kp = 0.09, 0.1 och 0.2. Spara/Bifoga stegsvaren. Kommentera. Hur påverkas systemets

snabbhet, stabilitet och kvarstående fel?

r + e u y (= )

K

K

f

1 + sT

vs

1

s

(39)

Uppgift 8:

Hur påverkas stegsvaret vid Kp = 0.09 då även den integrerande regleringen är med (PI reg.),

t.ex. välj Ki = 0.01, 0.05 och 0.09 och börvärdet = 360grader.

Vilken ändring sker i stegsvaret då även den deriverande regleringen (PID reg.) kopplas in med Kd = 0.02 och 0.04 vid Ki = 0.05? (Justera parametervärden efter tydliga ändringar i

stegsvaret.)

Redovisa stegsvaren.

Ange parametrarna till den mest optimala regulatorinställningen, då stabilitetskraven prioriteras högst, d.v.s. den maximala relativ översväng är 15 %.

Uppgift 9:

Välj fliken ”ID SINUS” i gränssnittet. Under denna flik kan amplituden och frekvensen på en sinussignal som ställs som insignal väljas. I grafen kan du läsa ut den sinusvåg som går in i systemet u(t) =A1 (sin ωt) samt hur systemet reagerar på denna signal Θ(t)=A2sin(ωt+φ)

(hastigheten hos skivan givet den spänning som ligger på i varje givet ögonblick).

Regleringen är nu urkopplad och det som visas är alltså hur det öppna systemet reagerar på sinusformade insignaler av olika frekvenser. (Läs bilaga 2.)

Sätt A1 till 2V.

Läs av amplitudförstärkning 2 1

|G| A

A

samt fasvridning φ från grafen för åtta sinussignaler av olika frekvenser. Du är fri att välja vilka frekvenser du vill inom intervallet [0,2 ≤ f ≤ 2,5] men se dock till att ändfrekvenserna 0,2 samt 2,5 Hz ingår i dina åtta mätvärden. Plotta sedan in de åtta mätvärdena i lin-log skalan i bilagan för att producera ett ungefärligt Bodediagram. För att enklare läsa av tidskillnaden mellan ut- och in-signal kan ni skära grafen i hälften genom att först se till att knappen ”Enable autoscaling” är avstängd och sedan trycka på ”Set Y-axis min value to 0”.

Kan man i det Bodediagram du just plottat se frekvensen ωπ, den frekvens då

fasförskjutningen mellan insignal och utsignal är -180°?

Kan man se överkorsningsfrekvensen, den frekvens då amplitudförstärkningen är 1?

Är systemet stabilt enligt Nyquists förenklade stabilitetskriterium? Hur stor är amplitud- och fasmarginalen?

Motsvarar det experimentella Bodediagrammet vad du förväntar dig?

Uppgift 10:

Beräkna vid hastighetsregleringen (som i t.ex. Uppgift 2) med enbart proportionell reglering

för värdet Kp = 50 det kvarstående felet. Gör uträkningen för både stegformade

References

Related documents

Idag har vi dock en situation där möjligheten till inflytande för samer i alla frågor som berör oss, är begränsade och inte levs upp till, något som fått och fortfarande

I den slutliga handläggningen har deltagit chefsjurist Elin Häggqvist och jurist Linda Welzien, föredragande..

rennäringen, den samiska kulturen eller för samiska intressen i övrigt ska konsultationer ske med Sametinget enligt vad som närmare anges i en arbetsordning. Detta gäller dock inte

avseende möjligheter som står till buds för främst Sametinget och samebyar, när det gäller att få frågan prövad om konsultationer hållits med tillräcklig omfattning

Enligt remissen följer av förvaltningslagens bestämmelser att det normalt krävs en klargörande motivering, eftersom konsultationerna ska genomföras i ärenden som får

Lycksele kommun ställer sig positiv till promemorians bedömning och välkomnar insatser för att stärka det samiska folkets inflytande och självbestämmande i frågor som berör

Länsstyrelsen i Dalarnas län samråder löpande med Idre nya sameby i frågor av särskild betydelse för samerna, främst inom.. Avdelningen för naturvård och Avdelningen för

Utredningen om producentansvar för textil lämnade i december 2020 över förslaget SOU 2020:72 Ett producentansvar för textil till regeringen.. Utredningens uppdrag har varit