UPPSALA UNIVERSITET AVDELNINGEN FÖR SYSTEMTEKNIK BC, CFL, CT 960, rev BC 970, BC, MM 980, AR 042, HN 06, PN 070 REGLERTEKNIK W3 & ES3 BERÄKNINGSLABORATION. Introduktion till MATLAB 2. Poler och stegsvar 3. Stegsvar, återkoppling och statiskt fel Förberedelseuppgifter:. Läs igenom laborationsinstruktionen noggrant. 2. Läs igenom kapitel 2.6, samt avsnitten 3.5 3.6. i Glad/Ljung 3. Lös uppgift 4. i denna instruktion (sid ) Namn Handledarens kommentarer Årskurs Inskrivningsår Utförd den Förb. uppg. godkänd Lab godkänd Sign Sign
Innehåll Start av beräkningslaborationerna 2 Introduktion till MATLAB 2. MATLAB-exempel............................... 3 2.. Att spara och läsa in data....................... 3 2..2 Att skriva program........................... 3 2..3 Enskilda kommandon......................... 4 2..4 Stegsvarssyntes.............................. 5 2..5 LTI-Viewer............................... 7 3 Poler och stegsvar 8 3. Reella poler................................... 9 3.2 Poler med konstant............................. 9 3.3 Poler med konstant realdel........................... 0 3.4 Poler som vandrar över i det högra halvplanet................ 0 4 Stegsvar, återkoppling och statiskt fel 4. Det slutna systemets överföringsfunktion och poler............. 4.2 Stegsvaret som funktion av Ã......................... 2 4.3 Stegsvaret som funktion av Ì......................... 2 i
Start av beräkningslaborationerna Följande ska göras inför varje pass: Logga in och starta MATLAB. Se till att du står i rätt arbetskatalog. Info om allt detta finns på lappen MATLAB startup, som bör ingå i ert labhäfte samt finnas på kurshemsidan.på denna lapp finns även information om var ni kan spara egendefinierade filer etc. Några tips: Se till att vara väl förberedd! Man hinner normalt inte med att även göra förberedelseuppgifterna under labbtillfället. Det händer ibland att de grafiska macrona i matlab hänger sig och slutar rita nya kurvor. Om det händer tryck på quit och starta om macrot. Ge gärna tips/kommentarer om du hittar uppgifter som kan göras tydligare, mera illustrativa etc! 2 Introduktion till MATLAB MATLAB är en förkortning av MATRIX LABORATORY och är ett matrisbaserat integrerat system för numeriska beräkningar och grafisk presentation av data. Programmet är mycket kraftfullt och har blivit en standard inom många discipliner. MATLAB har en kärna av inbyggda kommandon och funktioner. Dessa kommandon kan delas in i följande tre huvudklasser: klass exempel. matrisoperationer [Î ] = eig() egenvektorer och egenvärden till matrisen 2. grafik plot(ü Ý) plottar Ý mot Ü semilogy(ü Ý) plottar ÐÓ 0 (Ý) mot Ü 3. data save filnamn sparar alla variabler i filen filnamn load filnamn läs in alla variabler i filen filnamn I MATLAB kan man exekvera makrofiler. Dessa är vanliga textfiler som innehåller en sekvens av kommandon. Makrofiler kallas i MATLAB för m-filer eftersom de slutar på.m. För att styra programflödet i filerna används kommandon som for, while, och if. Man konstruerar enkelt egna makrofiler med hjälp av en vanlig texteditor. I Windowsversionen av MATLAB finns en integrerad texteditor som enkelt kan nås från en rullgardinsmeny. Med MATLAB som bas har ett stort antal toolboxar utvecklats. Dessa toolboxar består av makrofiler som är skräddarsydda för numeriska beräkningar inom ett visst tekniskt
område. En toolbox av speciellt intresse för reglerteknik är Control System Toolbox. Där finns funktioner för stegsvarsanalys, frekvensanalys, rotort och mycket mer. I MATLAB specifieras ett system på överföringsfunktionsform med följande syntax (kallas LTI; Linear Time Invariant systems): sys = tf(òùñ Ò) Täljarpolynomet (num) och nämnarpolynomet (den) representeras i MATLAB med radvektorer där koefficienterna är ordnande efter sjunkande gradtal på. Till exempel ger kommandot sys = tf([ 0] [ 2 0]) följande överföringsfunktion (lagrad i dummynamnet sys) 2 + 2 + 0 Några exempel på hur MATLAB kan användas för olika reglertekniska analyser visas i tabellen nedan (systemet antas finnas definierad i variabeln sys) funktion Ý = impulse(sys,tid) Ý = step(sys,tid) Ý = lsim(sys,ù,tid) [ÑÔ ] = bode(sys,frekv) [ÑÔ ] = nyquist(sys,frekv) förklaring beräknar impulsvar (tid kan utelämnas, se help impulse) beräknar stegsvar beräknar utsignalen för insignalen Ù beräknar Bodediagram beräknar Nyquistdiagram Kommandopekaren i MATLAB är och man exekverar ett kommando eller en kommandofil genom att skriva dess namn och trycka på RETURN-tangenten. MATLAB har ett mycket användbart system för hjälp. Systemet är uppbyggt kring kommandot help. Den huvudsakliga användningen är help kommando, vilket ger hjälp om kommandot kommando. Mycket användbart! Notera ochså att omfattande hjälp finns tillgänglit som html filer, som kan läsas med en webbläsare. MATLAB har en mycket flexibel och omfattande programmeringsmiljö och det tar lång tid att lära sig alla dess funktioner och möjligheter. Ett sätt att komma i gång med MATLAB är att studera några enkla exempel, vilket vi ska göra i nästa avsnitt. 2
2. MATLAB-exempel Vi ska här studera några praktiska exempel hur man använder MATLAB. Följande moment kommer att behandlas:. Att spara och läsa in data. 2. Att skriva program. 3. Enskilda kommandon. 4. Stegsvarsberäkning. 2.. Att spara och läsa in data För att spara de variabler man har genererat i MATLAB används kommandot save. För att läsa in variabler som tidigare sparats används kommandot load. Exemplen nedan visar hur dessa kommandon används. save filnamn save filnamn a b c load filnamn sparar alla variabler i filen filnamn.mat sparar variablerna a b c i filen filnamn.mat läser in alla variabler som sparats i filen filnamn.mat 2..2 Att skriva program Gå in på File-menyn och tryck på New om ny fil skall skapas eller Open M-file för att redigera gammal fil. Skriv önskad kod och spara filen med ett filnamn som slutar på.m (t ex test.m). Notera att det går att byta defaulteditor (Gå till menyn Preferences under File). 3
2..3 Enskilda kommandon Specificering av matriser: A=[ 2 3; 4 5 6; 7 8 9] ger = ¾ 2 3 4 5 6 7 8 9 B=A(:,) ger :a kolumnen av, = C=A(,:) ger :a raden av, = [ 2 3 ] D=A; =, med ; i slutet av kommandot, skrivs resultatet inte ut t=[0:0.:0] ger radvektorn Ø = [ 0 0 02 0 ] ¾ 4 7 Speciella matriser: A=ones(M,N) A=zeros(M,N) A=eye(N) A=randn(M,N) ger en Å Æ matris av ettor ger en Å Æ matris av nollor ger en Æ Æ enhetsmatris ger en Å Æ matris av normalfördelade slumptal Matrisberäkning: C=A+B C=A*B C=A C=inv(A) C(M,N) ger summan av A(M,N) och B(M,N) (C(M,N) betecknar en matris med M rader och N kolumer.) C(M,L) ger produkten av A(M,N) och B(N,L) C(N,M) ger transponatet av A(M,N) C(M,M) ger inversen av A(M,M) Elementvis beräkning : [ 2 3][4 5 6] ger [ 2 3] [4 5 6] ger 4 2 5 3 6 4 0 8 Senare i kursen kommer ni att se att linjär algebra inklusive matrisberäkningar kan används för att lösa reglertekniska problem 4
Övning 2. Skriv in matrisen = ¾ 2 3 7 6 5 8 4 9 och beräkna med kommandot inv(). Kontrollera resultatet genom att beräkna inv()*! Grafik: plot(y) plot(x,y) plot([x,y]) loglog(y) plottar vektorn Y plottar vektorn Y mot vektorn X plottar kolumnvektorn X och Y i samma diagram plottar vektorn Y i ett loglog-diagram Allmänna kommandon: help kommando ger information om kommandot kommando who skriver ut alla variabler whos skriver ut alla variabler och deras storlek clear variabel raderar varabeln variabel clear raderar alla variabler exit lämnar MATLAB! kommando exekverar DOS kommandot kommando (utanför MATLAB), utan att behöva lämna MATLAB 2..4 Stegsvarssyntes. Nedan visas hur man beräknar och plottar stegsvaret hos ett tredje ordningens system med överföringsfunktionen ( ) = ÒÙÑ( ) Ò( ) = 2 + 25 + 3 + 3 2 + 4 + 2 (2.) 5
num = [ 2.5 ]; den = [ 3 4 2]; sys = tf(num,den) t = [0:0.05:0]; y = step(sys,t); plot(t,y); grid; title( Stegsvar ) tr = risetime(y,t); ov = overshoot(y); l = length(y); yf = y(l); täljare, given i form av en radvektor nämnare, given i form av en radvektor def. av system en sekvens av tidpunkter, given i form av en radvektor [ 0 005 00 05 00 ] systemets stegsvar beräknas i de tidpunkter som specificeras av radvektorn Ø radvektorn Ý plottas gentemot radvektorn Ø ger ett rutnät diagrammets titel stigtiden beräknas och resultatet lagras i variabeln ØÖ överslängen beräknas och resultatet lagras i variabeln ÓÚ längden av radvektorn Ý beräknas och resultatet lagras i variabeln Ð Det sista simulerade y-värdet lagras i variabeln Ý. Om simuleringstiden är tillräckligt lång ger detta värde en bra approximation av slutvärdet. Övning 2.2 Mata in kommandona ovan. Vad har systemet för stigtid, översläng och slutvärde? Jämför slutvärdet med (0) (dvs beräkna ( ) i ekvation (2.) då = 0). Det som gör MATLAB till ett så mångsidigt verktyg är möjligheten att skriva egna makron och funktioner. Om man t ex skriver in ovanstående kommandon i en fil som sparas under namnet steg.m utförs alla beräkningarna då man i MATLAB skriver steg. Ännu kraftfullare blir det om man skriver en funktion som kan anropas med ett antal indata. Följande exempel visar grundprincipen: function dc=gain(num,den) % A line with a comment starts with a % % A stable G(s)= B(s)/A(S) is assumed % Use: num=[bo b...] and den=[ a...] % nd = length(den); nn = length(num); dc = num(nn)/den(nd); end Övning 2.3 Om ovanstående funktion lagras med namnet gain.m kan rutinen sedan köras med valfria indata. Vad gör funktionen (jämför med sista frågan i uppgift 2.2)? 6
2..5 LTI-Viewer Med hjälp av det inbyggda grafiska interfacet LTI Viewer kan man enkelt studera linjära dynamiska system. Denna funktion kan vara användbar i hela kursen i reglerteknik. Bland funktionerna som kan användas finns: Plottning av stegsvar och impulssvar för ett eller flera system. Möjlighet att zooma in intressanta avsnitt. Beräkning av stigtid, insvängningstid, översläng och slutvärde. Plottning av Bode och Nyquist diagram (se kapitel 4 i Glad/Ljung). Plottning av poler och nollställen. Övning 2.4 Testa LTI Viewern enligt följande exempel Antag att vi vill studera systemet ( ) = 2 + 05 + Definiera först systemet i Matlab med funktionen tf(num,den): Mittsys=tf([],[ 0.5 ]) Starta sedan LTI Viewern med kommandot ltiview(mittsys). Systemet är nu aktiverat och olika aspekter kan studeras (se ovan). Notera att det går bra att studera flera system samtidigt. Återkopplade system kan även studeras, Antag t.ex. att G(s) ovan regleras med en P- regulator med förstärkning K=5. För att studera det återkopplade systemet gör följande: K=5; Minreg=tf([K],[]) Go=series(Mittsys,Minreg) Gc=feedback(Go,) I första steget definieras regulatorn, i detta fall en ren förstärkning. I det andra steget definieras det öppna systemet, Go=K*G. Till sist bestäms det slutna systemet Gc=Go/(+Go). Notera att kommandot feedback antar att negativ återkoppling används. Ni kan nu studera t.ex stegsvaret i LTI Viewern. Välj då systemet Gc. 7
3 Poler och stegsvar Vi ska här undersöka hur stegsvaret hos ett andra ordningens system med överföringsfunktion ( ) = Ô Ô ( + Ô)( + Ô) = («2 + 2 ) ( + («+ ))( + («)) ändras med systemets pollägen. I dessa uppgifter kommer ni att använda ett grafiskt gränssnitt som är konstruerat i MATLAB. Ni kommer att variera lägena hos systemets poler och se hur stegsvaret ändras. Polerna kan flyttas antingen med en rullningslist eller genom att man klickar i poldiagrammet. Kommentera uppgifterna utgående ifrån följande samband som gäller för andra ordningens system (se kap. 2.6, sid 37, och exempel 3.3, sid 64 i Glad/Ljung): Stigtiden Ì Ö 0 tan = 0 [ Insvängningstiden Ì 3 0 = 3 Re( 0 ) Överslängen Å = 00 Relativa dämpningen = cos tan 2 3 + Ç(4 )] (för små ) 2 där och 0 är definierade enligt figur. Im ω 0 φ Re Figur : Definition av och 0. 2 Notera att Ì i allmänhet är en diskontinuerlig funktion, en liten förändring i t ex kan göra en stor förändring i Ì. 8
3. Reella poler bl är en kommandofil som plottar systemets stegsvar för pollägen längs den reella axeln, 2 Ô, dvs för polerna i figuren till höger. Exekvera bl. Flytta polerna längs reella axeln och beskriv kortfattat hur stegsvaret ändras (stigtid, översläng, insvängningstid). Kommentera detta utifrån teorin. 6 5 4 3 2-5 -4-3 -2 - - -2-3 -4-5 -6 3.2 Poler med konstant bl 2 är en kommandofil som plottar systemets stegsvar för pollägen längs linjen «=, dvs för polerna i figuren till höger. Exekvera bl 2. Flytta polerna längs reella axeln och beskriv kortfattat hur stegsvaret ändras (stigtid, översläng, insvängningstid). Kommentera detta utifrån teorin. Á 6 5 4 3 2-5 -4-3 -2 - - -2-3 -4-5 -6 9
3.3 Poler med konstant realdel bl 3 är en kommandofil som plottar systemets stegsvar för «= 2, 0 6, dvs för polerna i figuren till höger. Exekvera bl 3. Flytta polerna längs linjen «= 2 och beskriv kortfattat hur stegsvaret ändras (stigtid, översläng). Kommentera detta kortfattat utifrån teorin. Vad gäller enligt teorin för insvängningstiden Ì då polerna har konstant realdel och dämpfaktorn är liten? 6 5 4 3 2-5 -4-3 -2 - - -2-3 -4-5 -6 3.4 Poler som vandrar över i det högra halvplanet bl 4 är en kommandofil som plottar systemets stegsvar för 2«+ = 4, 2 «, dvs för polerna i figuren till höger. Exekvera bl 4. Flytta polerna längs linjen 2«+ = 4 och beskriv kortfattat hur stegsvaret ändras (stigtid, översläng). Studera speciellt vad som händer då polerna är rent imaginära samt då de har en positiv realdel. Kommentera detta utifrån teorin. 6 5 4 3 2-5 -4-3 -2 - - -2-3 Í -4-5 -6 0
4 Stegsvar, återkoppling och statiskt fel Betrakta följande modell (jämför uppg 2. i Exercise Manual) av ett återkopplat likströmsservo ¹ Ö Ù Σ ¹ Ã Ó ( ) = ( + Ì ) ¹ där à kan tänkas representera en proportionell regulator. Vi ska här studera hur det slutna systemets stegsvar påverkas av parameterförändringar i det öppna systemet, d v s av förändringar i à och Ì. 4. Det slutna systemets överföringsfunktion och poler Beräkna slutna systemets överföringsfunktion, ( ), på formen ( ) = 0 Ñ + Ñ + + Ñ Ò + Ò + + Ò och dess poler. Bestäm villkor på à 0 och Ì 0 för att polerna ska vara rent reella. Bestäm det statiska felet Ó = lim ؽ (Ø) då Ö Glad/Ljung). är ett enhetssteg (se avsnitt 3.6 i
4.2 Stegsvaret som funktion av à bl 2 2 är en kommandofil som plottar systemets stegsvar för olika à med Ì = 0. Exekvera bl 2 2 och variera Ã. Beskriv kortfattat hur stegsvaret ändras med à (stigtid, översläng)). Notera när polerna börjar bli imaginära. Kontrollera att det statiska felet Ó uppfyller det värde ni räknat fram i uppg 4.. 4.3 Stegsvaret som funktion av Ì bl 2 3 är en kommandofil som plottar systemets stegsvar för olika Ì med à = 0. Exekvera bl 2 3 och variera Ì. Beskriv kortfattat hur stegsvaret ändras med Ì för små respektive stora värden på Ì. 2