UPPSALA UNIVERSITET AVDELNINGEN FÖR SYSTEMTEKNIK HN 15 januari 2015 Projektorienterad laboration i REGLERTEKNIK Kompensering av DC-servo Förberedelseuppgifter: 1. Planering av laborationsarbetet se avsnitt 3.1 i denna laborationshandledning. Läsanvisningar: 1. Glad/Ljung kapitel 1 5. 2. Denna laborationshandledning.
Innehåll I Introduktion 1 1 Inledning, utförande och examination 1 2 Mål 1 II Laborationsuppgifter 2 3 Uppgiftsformulering 2 3.1 Planering...................................... 2 3.2 Modellering..................................... 2 3.3 Modellbaserad regulatordesign.......................... 3 3.4 Redovisning..................................... 4 III Bakgrundsmaterial 5 4 Förberedelseuppgifter 5 5 Laborationsutrustning 8 5.1 DC-servot...................................... 8 5.2 Gränssnittet..................................... 8 5.3 Signaler och mätdata................................ 9 6 MATLAB-funktioner 9 6.1 Laborationsspecifika MATLAB-funktioner.................... 9 6.2 Andra användbara MATLAB-funktioner..................... 10 A Help-text för MATLAB-funktioner 11 i
Del I Introduktion 1 Inledning, utförande och examination Denna laboration är projektorienterad och ställer därför stora krav på att man på egen hand kan komma fram till hur laborationsuppgiften ska lösas. Detta kräver i sin tur att man är mycket väl förberedd inför laborationsarbetet. Ett första led i förberedelserna är att läsa igenom denna laborationshandledning noggrant. Laborationsuppgiften är uppdelad i tre moment: planering, laborationsarbete samt redovisning. Laborationen utföres i grupper om (högst) fyra studenter, och arbetet är huvudsakligen ett gruppsarbete. Själva laborationsarbetet går ut på att på experimentell väg skaffa en modell av laborationsprocessen och att sedan med hjälp av denna modell konstruera ett reglersystem som uppfyller givna specifikationer. Redovisning sker dels skriftligt, dels muntligt. Det kanske viktigaste momentet är dock planeringen. Planeringen kan ses som ett verktyg för att förbereda sig på ett bra sätt inför laborationsarbetet. Planeringen ska också i förväg lämnas in i skriftlig form för granskning. Detta är ett sätt att säkerställa att laborationsgruppen är väl förberedd. Återkoppling i form av kommentarer om eventuella kompletteringar på den skriftliga planen kommer att ges före laborationstillfället. Avsätt åtminstone 8 timmars arbete för förberedelserna för att överhuvudtaget få börja arbeta i laborationssalen måste planen vara godkänd. Examinationen sker dels genom en skriftlig rapport, där varje grupp lämnar in en rapport, dels muntligt, där examinationen är individuell. För att bli godkänd på labkursen måste varje gruppmedlem visa att han/hon tagit del i samtliga delar av laborationen, samt varit aktiv på det muntliga förhöret. Laborationsinstruktionen består av tre delar: Del I är en introduktion om laborationens uppbyggnad och syfte. Del II beskriver själva laborationsuppgiften. Läs igenom den noga! Del III innehåller material som är till stöd vid planeringen och lösandet av själva laborationsuppgiften. Där finns ett antal förberedelseuppgifter, en beskrivning av laborationsprocessen och dess gränssnitt, och en beskrivning av användbara MATLAB-funktioner. Förberedelseuppgifterna är inte obligatoriska dvs. de behöver inte redovisas. Däremot rekommenderas det starkt att försöka lösa dem i samband med planeringen de återspeglar i stor grad de uppgifter som ska lösas i laborationssalen. För att lösa laborationsuppgiften måste man kunna de moment som förberedelseuppgifterna omfattar. 2 Mål Syftet med denna laboration är att ge förståelse för frekvensegenskaper hos linjära system, visa hur en modell på experimentell väg kan mätas upp för ett system, demonstrera hur man systematiskt kan designa en kompenseringslänk (ett lead-lagfilter) för att uppfylla givna specifikationer, givet en modell av systemet, ge träning i att lösa en given uppgift i grupp, med planering, utförande och redovisning. 1
Del II Laborationsuppgifter 3 Uppgiftsformulering I detta avsnitt presenteras de olika moment som ingår i laborationen. För att bli godkänd på laborationen krävs att samtliga moment är godkända. 3.1 Planering För att själva laborationsarbetet ska gå snabbt och smidigt måste man vara väl förberedd. Ett lämpligt sätt är att läsa igenom denna laborationsinstruktion noggrant samt motsvarande delar av kursboken, speciellt kapitel 5, samt att räkna igenom förberedelseuppgifterna i avsnitt 4 i denna laborationsinstruktion. Även beräkningslaboration 3 är en nyttig förberedelse. Ge också den första laborationen (Inledande laboration) en återblick! Uppgift: För att överhuvud taget få börja arbeta i reglerlabbet måste varje grupp redovisa en skriftlig plan för själva laborationsarbetet för laborationshandledaren, och få den godkänd. 1 Syftet med detta är att alla ska ha tänkt igenom vilka moment som ska genomföras och hur detta ska ske, för att komma i gång så snabbt som möjligt och hinna klart på utsatt tid. Denna skriftliga plan ska vara kortfattad, t.ex. i punktform, och helst i kronologisk ordning. Den ska beskriva varje delmoment (se avsnitt 3.2 och 3.3) och hur det ska genomföras. Ange bl.a. vilka MATLAB-funktioner som ni planerar att använda (se avsnitt 6), hur och var ni genererar data, hur ni analyserar data, hur ni flyttar data mellan laborationsgränssnittet och MATLAB, hur ni utifrån de i tidsplanet givna specifikationerna får fram motsvarande specifikationer i frekvensplanet, t.ex. i termer av skärfrekvens och fasmarginal (beräkna dessa!) se förberedelseuppgifterna 3 och 4 i avsnitt 4. Referera gärna till kursboken (specificera då med avsnitt/sidnummer och ev. ekvationsnummer, och ange också vilken upplaga av boken som avses). Kommentar: Vid själva genomförandet måste man naturligtvis inte följa planen till punkt och pricka, men den ska tydligt återspegla hur laborationsgruppen förberett sig för att genomföra respektive laborationsmoment. Redovisning: Före laborationens start. OBS: Måste lämnas in för granskning senast tre hela arbetsdagar före den dag laborationen börjar. Se även till att ha planen med er till laborationen. laborationens början. 3.2 Modellering För att kunna konstruera en regulator behövs någon kännedom om hur systemet som ska styras fungerar. Vid modellbaserad regulatordesign krävs en modell över systemet, och en sådan modell kan ibland härledas matematiskt utifrån kända samband (s.k. first principles ), men det går också ofta att empiriskt mäta upp en modell. Här ska en modell över systemet tas fram på experimentell väg. 1 Att planen är godkänd är ingen garanti för att den är komplett och korrekt modifieringar av tillvägagångssättet kan behövas ändå... 2
Uppgift: Mät upp ett Bodediagram för DC-motorn. Anta att systemet beskrivs av ( ) = ( )Í( ), där insignalen Ù är spänningen över motorn, och utsignalen Ý är skivans vinkelläge det är då alltså ( ) och arg ( ) som ska mätas upp. Kommentar: Uppgiften löses lämpligen genom att utnyttja sinus in sinus ut, frekvens för frekvens se förberedelseuppgift 1. Var noga med att bestämma vilken signal som är ut- respektive insignal, så att förstårkning och fas blir rätt. Mät vid åtminstone åtta olika frekvenser, inom intervallet 0 2 8 radianer/s. Frekvenspunkterna behöver inte vara jämnt fördelade i frekvensintervallet, men ändpunkterna (0 2 och 8 rad/s) ska vara med. Se även till att ha en mätpunkt vid den önskade skärfrekvensen. Använd moden Control Signal vid modelleringsexperimenten. Vid början av varje experiment bör skivan stå i vinkelläget noll detta kan åstadkommas genom att ställa in moden Position och sätta Position Set Point till noll (ändra sedan tillbaka till moden Control Signal). Redovisning: Bodediagrammet, d.v.s. belopp- och faskurvorna, ska redovisas i rapporten, tillsammans med en redogörelse för hur de tagits fram. 3.3 Modellbaserad regulatordesign Huvuduppgiften är att konstruera ett positionsservo med hjälp av DC-motorn och genom att använda återkoppling med lead-lagkompensering. Det gäller att konstruera ett återkopplat system sådant att skivan hamnar i önskad vinkel tillräckligt snabbt och med tillräcklig dämpning. Uppgift: Konstruera en så enkel regulator (av så låg ordning) som möjligt, sådan att det slutna systemet, d.v.s. positionsservot, uppfyller följande specifikationer: Stegsvar: Skivan ska från ett initialt stillastående läge kunna vridas 1 0 radian så att 1. stigtiden Ì Ö blir högst 0 6 sekunder, 2. överslängen Å blir högst 15, 3. det statiska felet = Ý Ö Ý elimineras helt. Störningseliminering: När man spänner ett gummiband mellan piggen på skivan och piggen i hörnet, uppstår en laststörning i form av ett extra moment som vill vrida skivan från det önskade läget. Det fel som då uppstår ska elimineras helt i stationäritet (när Ø ½). Kommentar: Börja med att ta fram initiala specifikationer för skärfrekvensen och fasmarginalen (se t.ex. förberedelseuppgift 3 för hur stegsvarsspecifikationer kan översättas till specifikationer i frekvensplanet). Använd sedan det uppmätta Bodediagrammet som utgångspunkt när ni löser denna uppgift. Med hjälp av detta kan ni få fram en första regulator. Prova regulatorn för att se om den uppfyller de givna specifikationerna. Om den inte gör det så modifiera regulatorparametrarna och/eller frekvensspecifikationerna tills en regulator som uppfyller specifikationerna erhålls (vilket kan kräva några iterationer se förberedelseuppgift 4). Kom ihåg att ställa in vippbrytaren uppe till höger i gränssnittet på Lead-Lag. För att testa att stegsvarsspecifikationerna är uppfyllda är det viktigt att referenssignalen verkligen är ett steg. Använd därför inte ratten för att generera steget. Istället, börja med att sätta Ý Ö = 0, och skriv sedan in 1 00 i rutan under ratten detta värde aktiveras när man klickar utanför rutan, eller om man trycker på tab-tangenten (tryck inte på return!). (Här ska inget gummiband användas.) För att testa att kravet på störningseliminering är uppfyllt, ställ först in Ý Ö = 0, spänn sedan fast gummibandet och gör ett litet negativ steg (d.v.s. moturs) på referenssignalen ( 0 2 radianer, så att drivremmen inte slirar på skivan). 3
Redovisning: Presentera tillvägagångssättet för att ta fram den första regulatorkandidaten, samt de modifieringar som krävts för att uppfylla specifikationerna. Plottar för stegsvar och störningseliminering ska också redovisas, liksom Bode- och Nyquistdiagram över kretsförstärkningen och Bodediagram (åtminstone beloppkurvan) för det slutna systemet (med den slutgiltiga regulatorn). Motivera varför ev. lead- och/eller lagfilter behövs. 3.4 Redovisning Laborationen ska redovisas dels med en kortfattad skriftlig rapport, dels muntligt. Skriftlig rapport: Varje laborationsgrupp ska lämna in en skriftlig rapport, senast tre hela arbetsdagar efter laborationstillfället. Följ instruktionerna i Lathund för rapportskrivning i Relgerteknik när ni skriver rapporten. Rapporten måste innehålla följande: En kort beskrivning av syftet med laborationsarbetet beskriv laborationsprocessen, specifikationerna samt tillvägagångssättet. Kommentera/reflektera gärna över ev. (större) avvikelser från den skriftliga planen vid laborationens genomförande. En beskrivning av modelleringen, d.v.s. presentera det uppmätta Bodediagrammet, och redogör för hur ni bar er åt för att få fram det. En beskrivning av regulatordesignen, från den första regulatorkandidaten till den slutgiltiga regulatorn, med beskrivning av tillvägagångssättet. Varje del av regulatorn måste motiveras! Redovisa hur det slutna systemet (med era regulatorer) uppfyller specifikationerna. Plotta stegsvaren för samtliga regulatorkandidater även referenssignalen ska finnas med i plottarna! Glöm inte stegsvaret med störningselimineringen! En resultatdel med Bode- och Nyquistdiagram för kretsförstärkningen, samt Bodediagrammets beloppkurva för det slutna systemet. Med utgångspunkt från dessa plottar, bestäm den skärfrekvens och fasmarginal som slutligen uppnås (visa också i plottarna) samt bestäm det slutna systemets bandbredd. Visa också (om möjligt) att det slutna systemet är stabilt. Plottarna får med fördel vara infogade i texten, men det är också tillåtet att bifoga dem som bilagor/appendix. Notera dock att samtliga ovan efterfrågade plottar (åtminstone sex stycken) måste finnas med i rapporten, och att de måste beskrivas i texten (i rapporten). Numrera därför samtliga plottar så att de är enkla att referera till detta är ett krav! Rapporten kan skrivas på svenska eller engelska. Självklart måste språket/texten vara korrekt och begripligt en rapport med för många stavfel, grammatiska fel, eller andra felaktigheter kommer inte att bli godkänd. Icke godkända rapporter måste kompletteras enligt kommentarer från laborationshandledare före läsårets slut. Muntlig redovisning: Varje grupp ska också presentera/försvara sin rapport inför en laborationshandledare. Den muntliga redovisningen sker förvisso gruppvis men den är individuell, d.v.s. alla i gruppen kommer att få frågor och måste vara beredda att kunna redogöra för såväl rapporten, själva laborationsarbetet, såväl som relaterade frågor (t.ex. om förberedelseuppgifterna). Detta betyder att det är möjligt att ge några i gruppen rest, samtidigt som andra i gruppen får godkänt! Den som inte blir godkänd på den muntliga redovisningen får lösa en separat extrauppgift för att bli godkänd. Denna ska redovisas så snart som möjligt, och absolut före läsårets slut. 4
Del III Bakgrundsmaterial 4 Förberedelseuppgifter I detta avsnitt finns ett antal övningsuppgifter som relaterar starkt till laborationsuppgifterna. I princip handlar uppgifterna här om hur man systematiskt kan konstruera en regulator i form av ett lead-lagfilter för att tillgodose stegsvarsspecifikationer, vilket också laborationsarbetet går ut på. Det är därför en god förberedelse inför laborationen att försöka lösa dessa uppgifter på ett bra sätt. De flesta uppgifterna går att lösa med papper och penna, samt tillgång till kursboken, Reglerteknik - Grundläggande teori, T Glad och L Ljung. För den sista uppgiften är det dock en fördel att använda MATLAB. Uppgift 1 För ett system ( ) = ( )Í( ) mäter man experimentellt upp ett Bodediagram. Detta görs genom utnyttjande av sinus in sinus ut, d.v.s. insignalen är en sinussignal, Ù(Ø) = sin Ø, varmed ( ) och arg ( ) bestäms från den uppmätta utsignalen, Ý(Ø) = ( ) sin ( Ø + arg ( )). Detta experiment upprepas för ett antal olika vinkelfrekvenser. I plottarna nedan visas resultatet från dessa experiment för fyra olika vinkelfrekvenser. OBS: I samtliga fall är insignalen Ù markerad med heldragen linje och utsignalen Ý med streckad linje. Använd plottarna för att för respektive experiment ta reda på vinkelfrekvensen (i rad/s), 2 1.6 1.2 0.8 0.4 0 0.4 0.8 1.2 1.6 2 0 2 4 6 8 10 12 14 tid (sekunder) 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 0 1.0 2.0 3.0 4.0 5.0 tid (sekunder) 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 0 2 4 6 8 10 12 14 tid (sekunder) 1 0 1.0 2.0 3.0 4.0 5.0 tid (sekunder) beloppet ( ) samt fasen arg ( ) (i grader). På nästa sida finns en tom tabell samt ett tomt Bodediagram (belopp- respektive faskurva) fyll i dessa. 5
(rad/s) ( ) arg ( ) ( Æ ) G(iω) 10 0 arg G(iω) ( o ) 10 1 10 1 10 0 90 100 110 120 130 140 150 160 170 ω (rad/s) 180 10 1 10 0 ω (rad/s) 6
Uppgift 2 Blockschemat nedan visar ett positionsservo i form av en återkopplad likströmsmotor. Utsignalen Ý är motoraxelns vinkelutslag och referenssignalen Ý Ö är det önskade vinkelutslaget. Insignalen Ù är spänningen över motorn, vilken är proportionell mot vridmomentet motorn genererar. Dessutom finns två störningar, dels Ú som verkar direkt på Ý, d.v.s. en störning på motoraxelns vinkel (vilket egentligen är ganska orealistiskt), dels en laststörning som verkar på samma sätt som Ù, d.v.s. som ett vridmoment på motoraxeln (vilket är mycket realistiskt). Ú Ý Ö + Σ ( ) + Ù Σ + 1 ( +1) + Σ + Ý (a) Anta att man använder en regulator utan integralverkan (d.v.s. (0) = där ½). Bestäm hur stort det stationära reglerfelet lim (Ø) blir, dels då (i) Ý Ö är ett enhetssteg, Ø ½ dels då (ii) Ú är ett enhetssteg. Övriga insignaler är noll i respektive fall. (b) Anta nu att laststörningen är ett enhetssteg (och att övriga insignaler är noll). Bestäm (Ø), dels för fallet med (i) regulator utan integralverkan, d.v.s. att (0) = där ½, lim Ø ½ dels för fallet med (ii) regulator med integralverkan, d.v.s. att ( ) = 1 ¼ ( ) där ¼ (0) = 0. Anta att det återkopplade systemet är stabilt. Uppgift 3 (a) För kretsförstärkningar av andra ordningen, utan nollställen och med en pol i origo finns det exakta samband mellan stegsvarsspecifikationer och skärfrekvens och fasmarginal se exempel 5.2 och diagrammen i figur 5.11 och 5.12 i Glad/Ljung. Om ett system styrs genom återkoppling från reglerfelet, t.ex. med ett lead-lagfilter, så kommer kretsförstärkningen, liksom det återkopplade systemet, (nästan alltid) att vara av ordning högre än två. Genom att anta att kretsförstärkningen kan approximeras med just ett andra ordningens system utan nollställen och med en pol i origo går det att utnyttja dessa samband för att översätta stegsvarsspecifikationer till motsvarande krav på skärfrekvens och fasmarginal. Ange vilken skärfrekvens och vilken fasmarginal ³ Ñ man bör ha om man vill ha stigtiden Ì Ö = 0 1 sekunder och överslängen Å = 20 (givet att en sådan approximation är möjlig/rimlig 2 ). (b) Man har ett återkopplat system, med en regulator som gör att kretsförstärkningen får en viss skärfrekvens ¼ och en viss fasmarginal ³ ¼ Ñ. Det slutna systemets stegsvar har stigtiden Ì ¼ Ö och överslängen Å ¼. Anta att man vill byta ut regulatorn för att få ett system som är lika dämpat men dubbelt så snabbt som det man har från början. D.v.s. man vill ha samma översläng men halvera stigtiden. Vad bör den nya kretsförstärkningen då ha för skärfrekvens och fasmarginal ³ Ñ? 2 Man behöver inte göra approximationen det räcker med att anta att det går... 7
Uppgift 4 Konstruera en regulator för systemet ( ) = så att följande specifikation är uppfyllda: 1 ( + 1) Í( ) stegsvaret för slutna systemet ska ha en stigtid på högst 0 7 sekunder och överslängen får högst vara 10 stegsvarets kvarvarande reglerfel ska elimineras helt det kvarvarande reglerfelet får högst vara 0 05 när referenssignalen är en ramp, Ý Ö (Ø) = Ø för Ø 0. Ledning: Om specifikationerna inte är uppfyllda med din regulator så modifiera den önskade och/eller ³ Ñ. Fundera över hur och ³ Ñ påverkar stigtiden respektive överslängen (se t.ex. figur 5.11 och 5.12 i Glad/Ljung). 5 Laborationsutrustning 5.1 DC-servot Själva laborationsprocessen består av en likströmsmotor som via en rem driver en aluminiumskiva. Motorn och skivan är monterade på en platta av aluminium, som i sin tur står på en likadan platta, bottenplattan. I mellanrummet mellan plattorna finns alltså själva likströmsmotorn, men också styrelektroniken för motorn (för- och effektförstärkare etc.) samt DAQ-kortet. DAQ-kortet kommunicerar med PC:n via USB-porten. På aluminiumskivans axel sitter en induktiv lägesgivare som mäter skivans vinkelläge. Mätsignalen går sedan via DAQ-kortet till PC:n och laborationsprocessens gränssnitt. 5.2 Gränssnittet Gränssnittet hittas genom att gå in på Computer och Gemensamt (G:), och sedan klicka sig till mappen ProgramÒSystemteknikÒReglerteknikÒProjektLabÒControlGUI. Där finns det grafiska användargränssnittet ControlGUI.exe (GUI Graphical User Interface), som är gjort i LabVIEW. Gränssnittet består av fyra delar. Övre vänstra delen utgörs av en graf, som i realtid visar trendkurvor för styrsignalen (Control Signal), uppmätt vinkelläge (Position), uppmätt vinkelhastighet (Velocity), samt referenssignalerna för läge och hastighet (Position Set Point respektive Velocity Set Point). Upp till fyra kurvor kan visas samtidigt. Man kan också välja vilka kurvor man vill se i grafen genom att bocka för respektive signaler i rutorna under grafen. Den nedre vänstra delen utgörs huvudsakligen av en ratt. Ratten ställer in olika insignaler till servosystemet. Vilken signal ratten representerar beror på vilken mod man kör i. Moden ställs in med menyn till vänster ovanför ratten. Systemet kan köras i tre moder: Control Signal, Velocity samt Position. Vid moden Control Signal används öppen styrning. Ratten representerar då styrsignalen Ù. Vid moderna Velocity och Position är systemet återkopplat från vinkelhastigheten respektive vinkelläget. Ratten representerar då referenssignalen för vinkelhastighet respektive vinkelläge. Notera även att värdet på dessa signaler kan ställas in i den lilla rutan under ratten. 8
Den övre högra delen av gränssnittet visar vilken form av återkoppling som används. Här ställer man in värdet på regulatorparametrarna. (Denna del har bara betydelse vid moderna Velocity och Position.) Man kan välja antingen rent proportionell återkoppling eller att använda ett lead-lagfilter. Detta styrs med den lilla vippbrytaren (byt genom att klicka på den). I den nedre högra delen kan man dels välja att köra mot en simulerad version av processen, eller mot den riktiga hårdvaran. Dels kan man välja att låta insignalen till systemet läsas från en fil (genererad t.ex. från MATLAB) istället för från ratten. Den från filen lästa insignalen tolkas då på samma sätt som rattens signal, d.v.s. i enlighet med vilken mod som är inställd. Man kan här också spara experimentdata till fil, för att kunna utvärdera/analysera i t.ex. MATLAB (se avsnitt 5.3). När man ska spara till fil är det lämpligt att nollställa tidräkningen (Reset Time) innan man trycker på Save. Obs! När man skriver in värden i en ruta (t.ex. regulatorparametrarna, eller under ratten) aktiveras dessa värden när man klickar utanför rutan, eller när man trycker på tab-tangenten. Tryck inte på return! Ifall man råkar trycka på return börjar gränssnittet läsa data från fil detta kan avbrytas genom att trycka på Stop. 5.3 Signaler och mätdata Gränssnittet används uteslutande för att köra processen. Förutom att generera insignalen (styr- eller referenssignalen) till processen direkt från gränssnittet är det också möjligt att låta insignalen vara fördefinierad gränssnittet läser då in signalen från en fil. Det är också möjligt att spara ned mätdata under en körning till fil, som kan läsas in i MATLAB och användas för analys i efterhand. Se avsnitt 5.2 för hur detta går till. Såväl generering av fördefinierade insignaler som analys av uppmätta mätdata sker i MAT- LAB se avsnitt 6 för en lista av användbara MATLAB-funktioner. Laborationsgränssnittet och MATLAB kan inte kommunicera med varandra direkt. Istället får man mellanlagra alla data lokalt på hårddisken. Det betyder alltså att gränssnittet sparar/skriver mätdata till en fil som i efterhand kan laddas upp till MATLAB för vidare analys. På motsvarande sätt kan man också generera en insignal till systemet i MATLAB, spara den i en fil som sedan läses och appliceras av gränssnittet. Detta sker med fördel i katalogen Data (under C:). 6 MATLAB-funktioner 6.1 Laborationsspecifika MATLAB-funktioner I detta avsnitt beskrivs kortfattat några MATLAB-funktioner som skrivits speciellt för denna laboration. Dessa funktioner är tillrättalagda för denna laboration så att hanteringen av data ska gå så smidigt som möjligt. De är skrivna för att kunna användas rakt upp och ner man behöver inte förstå hur de fungerar (detta beskrivs i vis mån ändå...). GenSine: Genererar en sinussignal med given vinkelfrekvens. Amplituden 3 och längden på signalen är automatiskt anpassade för DC-servot (förutsatt att dessa inte sätts manuellt). SaveToFile: Sparar ned en signal till en fil som går att använda från DC-servots gränssnitt. Rekommenderat är att använda default fil (c:òdataòposition result.cda) för lagring (dvs. inget input) för att förenkla syntax. Sköter konvertering av decimalpunkt till decimalkomma. 3 Amplituden är proportionell mot vinkelfrekvensen. 9
LoadFromFile: Laddar in mätdata från fil som sparats med DC-servots gränssnitt i MATLAB. Om default fil för lagring använts behövs inget inget input. Spara inläst data i MATLAB istället. Data delas upp i tidsvektor och olika signaler. Sköter konvertering av decimalkomma till decimalpunkt. EstSine: Anpassar en sinussignal av given vinkelfrekvens till en given, uppmätt signal. Gör en minstakvadratskattning av sinussignalen och kompenserar också för konstant off-set och linjär drift. De anpassade sinussignalerna är praktiska att använda vid uppmätning av Bodediagram (detta kan annars vara svårt p.g.a. brusiga signaler, drift etc.). Mer information om hur man använder dessa funktioner får du med help dessa help-texter finns också listade i Appendix A. Filerna för dessa funktioner hittas på samma sätt som ControlGUI genom att gå in på Computer och Gemensamt (G:), och sedan klicka sig till mappen ProgramÒSystemteknikÒ ReglerteknikÒProjektLab. Filerna är skrivskyddade så om du vill göra modifieringar i filerna måste du kopiera dem och lägga dem i en annan katalog. 6.2 Andra användbara MATLAB-funktioner I detta avsnitt beskrivs andra, fördefinierade MATLAB-funktioner som är användbara i denna laboration, flera av dem tillhör MATLABs Control Systems Toolbox. plot, loglog, semilogx: Plotfunktioner för plottar med linjära, logaritmiska, eller både linjära och logaritmiska skalor. tf, zpk: Skapar LTI-objekt som representerar dynamiska system. LTI-objekt skapade med tf är representerade som en överföringsfunktion och de som skapats med zpk är representerade av sina nollställen sina poler och sin förstärkning. (Dessa kräver tillgång till CST (Control Systems Toolbox).) frd: Skapar LTI-objekt som representerar ett dynamiskt system i form av dess frekvenssvar. Som argument anger man dels en vektor med frekvenssvaret, dels med en vektor med de motsvarande vinkelfrekvenserna. Frekvenssvaret är här alltså en vektor med de komplexa talen ( ) (i rektangulär form) Bodediagrammet anger de polära koordinaterna, ( ) = ( ) arg ( ) (tänk på att fasen måste anges i radianer för få rätt realdel och imaginärdel vid omvandling från polär till rektangulär form). LTI-objekt som är skapade med frd kan kombineras med andra sorters LTI-objekt, t.ex. genom feedback. Det resulterande LTI-objektet blir då ett frd-objekt. Funktioner som verkar i frekvensplanet (t.ex. bode, nyquist och margin) fungerar för frd-objekt, däremot inte sådana som verkar i tidsplanet eller Laplace-planet. DC-servot i denna laboration, vars Bodediagram ju mäts upp, kan lämpligen representeras med ett LTI-objekt skapat med frd. (Kräver CST.) bode: Ger Bodediagrammet för ett LTI-objekt, som plot eller i vektorform. Notera att i beloppkurvan i plotten används decibel (db) för beloppet. Med vektorformen fås dock beloppet i absoluta tal. (Kräver CST.) nyquist: Ger Nyquistkurvan/-diagrammet för ett LTI-objekt, som plot eller i vektorform. (Kräver CST.) margin: Ger fas- och amplitudmarginalen, samt respektive skärfrekvens för ett LTIobjekt. Plottar Bodediagram med fasmarginal och skärfrekvens markerade. (Kräver CST.) 10
feedback: Ger LTI-objekt för det slutna systemet, givet LTI-objekt för det som utgör kretsförstärkningen. (Kräver CST.) save: Sparar variabler i MATLABs arbetsminne (workspace) till fil. load: Laddar in variabler från fil till MATLABs arbetsminne. help: Är du osäker på vad en MATLAB-funktion gör, eller hur den används, så använd help-funktionen skriv help <funktionsnamn>. För mer information om hur dessa funktioner används, använd help-funktionen! A Help-text för MATLAB-funktioner Nedan listas de help-texter som finns för de för denna Laboration specialskrivna MATLABfunktionerna. sin_est=estsine(x,t,w) Estimates a sine wave signal from a given data sequence: sin_est(t) = A*sin(w*t) + B*cos(w*t), where A & B are chosen to minimize x(t) - sin_est(t) ^2. Also compensates for an offset and a linear trend or drift. INPUT PARAMETERS: x observed/measured data sequence, vector t time vector, corresponding to x(t) w angular frequency for sine signal, scalar OUTPUT PARAMETER: sin_est estimated sine wave signal, vector (corresponds to the time vector t) x=gensine(w) Generates a sine wave signal: x(t) = C*cos(w*t) Amplitude and durance is adapted for the DC motor process when run in mode Control signal. INPUT PARAMETER: w angular frequency of the sine wave signal OUTPUT PARAMETER: x sine wave signal [t,ext,pos,vel,u]=loadfromfile or [t,ext,pos,vel,u]=loadfromfile(filename) Loads and labels experimental data from file. 11
OPTIONAL INPUT PARAMETER: filename string with filename (default filename= C:\Data\position_result.cda ) OUTPUT PARAMETERS: t time vector (seconds) ext external input signal (u or y_ref depending on mode) pos angular position of disk (radians) vel angular velocity of disk (rad/s) u control signal, motor voltage (Volts) SaveToFile(x) or SaveToFile(x,filename) Saves a vector/signal to file in ascii, to be readable from lab interface. INPUT PARAMETER: x vector/ signal to be saved OPTIONAL INPUT PARAMETER: filename string with filename (default filename= C:\Data\position.cda ) 12