NTNU Norges teknisknaturvitenskapelige universitet Institutt for teknisk kybernetikk vårsemesteret 2004 TTK 4140 Reguleringsteknikk m/elektriske kretser Dataøving 2 Fiskelabben G-116/G-118 Uke 16: Onsdag 14. april kl. 16.00-20.00 Uke 17: Onsdag 21. april kl. 16.00-20.00 Uke 18: Onsdag 28. april kl. 16.00-20.00 Det er veiledning 17.00-20.00 Innlevering : Fredag 30. april kl. 14.30. Innledning I denne dataøvingen skal vi se nærmere på det samme systemet som ble behandlet i Dataøving 1. Det vil ikke bli bruk for noe av det dere laget der, men vi skal istedet se på andre aspekter ved systemet. Frekvensanalyse og regulatordesign vil være sentralt Praktisk gjennomførelse Fiskelabben finner dere bak EL5. Det vil være studasser tilstede på labben i de oppsatte tidene. For å få utnyttet ressursene bedre, skal øvingene gjøres i grupper på 2-3 personer. Disse organiserer dere selv. Benytt gjerne samme gruppe som dataøving 1. Det er mulig at noen vil finne enkelte oppgaver ganske vanskelige, kanskje spesielt når det gjelder implementasjonen i Matlab. Ikke være redd for å spørre om hjelp! Hvis det likevel skulle bli altfor mye å gjøre bør det fremgå av rapporten hva som var vanskelig og hvorfor dere ikke har gjort det. Som en hovedregel vil besvarelser hvor mindre enn halvparten av oppgavene ikke er gjennomførte ikke bli godkjent. Dere skal levere én rapport pr. gruppe i innleveringsboksene i kjelleren, og aktuelle grafer skal legges ved. Dette betyr ikke at absolutt alle grafer skal skrives ut, men heller et representativt utvalg. Ingen krever at man skal gjøre all verden ut av rapporten, men den skal klart og tydelig vise at dere har forstått oppgavene. Husk å skrive navn, avdeling, årskurs, e-mail adresse (for alle gruppemedlemmer) på besvarelsen. side 1
Matlab Det er svært viktig at dere har satt dere litt inn i Matlab før dere begynner på øvingen. Ett godt utgangspunkt finner dere på ; http://www.itk.ntnu.no/fag//ttk4140/nyttig/matlab_lenker.pdf Help-funksjonen i Matlab er også nyttig. Teori Som tidligere nevnt, er det varmluftsrøret fra dataøving 1 som representerer systemet vårt denne gangen også. I D1 fant vi at følgende forenklede blokkdiagram kunne representere systemet (hvis vi ser bort fra forstyrrelsen): u h p (s) Θ e τs y Figur 1: Systemet som transferfunksjon og tidsforsinkelse Transferfunksjonen h p (s) skulle finnes på forrige øving. Skrevet ut med tallverdier blir det: h p ( s) = ----------------------------------- 1 0,177s + 0,248 Denne skal vi anta kjent her. Tidsforsinkelsen skulle være τ = 0,2818, og denne skal tilnærmes med en Padèapproksimasjon av 2. orden i denne oppgaven. Systemet skal reguleres med en begrenset PID-regulator, og denne kan skrives som : ( T h r ( s) K i T f + T i T d )s 2 + ( T i + T f )s + 1 = p --------------------------------------------------------------------------- T i T f s 2 + T i s lign.(1) Oppgave 1: Ziegler-Nichols lukket-sløyfe-metode I denne oppgaven skal vi finne en god regulator for systemet vha. Ziegler-Nichols metode for lukkede sløyfer (se 9.3.2 i læreboken). Følgende m-fil kan lagres som f.eks. init2.m på din egen katalog: side 2
init2.m % Initieringsfil til dataoeving 2 i fag TTK4140 % Prosessens transferfunksjon funnet i dataoeving 1 thp=1; % Teller hp nhp=[0.1770 0.2480]; % Nevner hp % Regulatorparametre Kp=0; Ti=1000000; % Satt stor i starten = Uendelig Td=0; % Regulatorens transferfunksjon Tf=Td/10; % Vanlig antakelse for begrensningen thr=kp*[(ti*tf+td*ti) (Ti+Tf) 1]; % Teller hr nhr=[ti*tf Ti 0]; % Nevner hr % Padeapproksjimasjon av tidsforsinkelse tau=0.2818; [tpade,npade]=pade(tau,2); % 2.ordens tilnaermelse % Sloeyfetransferfunksjonen th0=conv(thr,thp); th0=conv(th0,tpade); nh0=conv(nhr,nhp); nh0=conv(nh0,npade); Her er transferfunksjonene representert ved tellere og nevnere, noe som er hensiktsmessig i Matlab. Denne filen bør som sagt ligge under din egen katalog, f.eks. D:\user\<dittnavn> Se D1 for nærmere informasjon. Husk at denne filen må lagres og kjøres for hver gang du forandrer noe i den. Til å begynne med er det kun regulatorparametrene som trengs å forandres. Det er også lurt å lage følgende modell i Simulink: side 3
Alle nødvendige byggeklosser skal finnes i bibliotekene. Merk spesielt bruken av Workspace og Clock. Disse sender variable direkte til Matlab. Legg også merke til at vi ikke har tatt med noen forstyrrelse i systemet slik som forrige gang. Referansen ( Step -boksen) kan settes til å starte på verdien 10 for så å sprette opp til verdien 12 etter 5 tidsenheter. For å se grafen kan man nå gå i Matlabvinduet og skrive: >> plot(t,y) Ellers kan det være nyttig å gjøre bruk av kommandoene: grid, xlabel, ylabel, title, axis og zoom. Skriv f.eks.: >> help zoom for å få mer hjelp. For å forandre aksene kan man benytte kommandoen: >> axis([<x1> <x2> <y1> <y2>]) Flere grafer kan plottes i samme vindu hvis en benytter hold-kommandoen. Videre kan man få frem flere forskjellige figurvinduer ved å benytte: figure(<nr>) Prøv dere frem og spør studass hvis det blir for vanskelig! side 4
a.) Nedenfor er gitt transferfunksjonen for en PID-regulator med begrenset derivatvirkning: u --------- ( s) e( s) K K K ------ p p T d s = + + ---------------- p T i s T f s + 1 Vis at denne transferfunksjonen kan skrives som ligning (1). b.) Bruk Ziegler-Nichols metode til å finne en best mulig PID regulator for systemet. Simuler og se at regulatoren virker. Hvorfor velger man som oftest en regulator med begrenset derivatvirkning? Tips: La T i = og T d =0 (dvs. negliser integral og derivat leddene). Skru på regulatorforsterkningen K p inntil vi får stående svingninger på utgangen. Noter denne K p -verdien, som kalles for den kritiske forsterkningen K p,k. Ut fra plottet, finn perioden T k for de stående svingningene. Beregn så regulatorparametrene ut fra tabellen i boken om Ziegler-Nichols. c.) Finn også regulatorparametre for PI og P-regulatorer. Implementer disse og se om det er noen forskjell i systemets tidsforløp. Kommenter og forklar hvorfor vi har statisk avvik når vi bruker P-regulator. d.) Hvis referansen hadde vært en rampefunksjon istedet for et sprang, ville PID-regulatoren fått statisk avvik? Forklar (simulering trengs ikke.). Oppgave 2: Regulatordesign I den vedlagte m-filen er det illustrert hvordan man kan finne teller og nevner til sløyfetransferfunksjonen h 0 (s). Når man har disse, kan MATLAB hjelpe oss med å analysere systemet. De fleste funksjoner som er tilgjengelige der kan kalles på følgende måte: >> funksjonsnavn(teller,nevner) Viktige funksjoner nå vil bl.a. være: bode og margin. a.) Tegn opp bodediagrammet til sløyfetransferfunksjonen h 0 (s). Hva er systemets båndbredde? b.) Finn forsterkningsmarginen og fasemerginen til systemet. Skru på K p slik at man oppnår 6dB forsterkningsmargin. Hva blir den nye K p? Hvorfor ønsker man å spesifisere slike marginer når man designer en regulator for et system? c.) Simuler systemet med den nye K p. Blir innsvinget til stasjonærverdien raskere eller tregere? Hvorfor? d.) Tegn opp det nye bodediagrammet og kommenter den nye båndbredden til systemet i forhold til den gamle. Hvilke motstridende ønsker møter vi på når båndbredden og forsterknings/ fasemargin skal spesifiseres? e.) Tenk på frekvensinnholdet til den Fouriertransformerte av et enhetssprang. Kan du ut fra side 5
dette si noe om sammenhengen mellom hastigheten til innsvingningsforløpet og båndbredden til systemet? Bruk den nye regulatoren i de videre oppgavene! Oppgave 3: Følgeforhold og sensitivitet Vi skal nå se litt på følgeegenskaper og sensitivitet til systemet. For å implementere funksjonene T(s) og S(s)=1-T(s) vil det være lurt å skrive h 0 (s) som en brøk og herfra utlede uttrykk for disse. Når en så har funnet uttrykket vil det bli behov for å legge sammen tellervektoren og nevnervektoren til h 0 (s), men disse har sannsynligvis forskjellige lengde. For å utvide f.eks. tellervektoren med en null i starten (den har jo ingen innvirkning) kan man skrive følgende: >> th0=[0 th0] Det vil også være behov for å tegne opp følgende system i Simulink: Vi skal nå først konsentrere oss om følgenegenskapene, så amplituden til forstyrrelsen kan settes til null (dobbelklikk på Sine Wave -boksen for å forandre). Poenget her er altså at vi av en eller annen grunn vil ha temperaturen i varmluftsrøret vårt til å forandre seg med en gitt hastighet. Den ønskede temperaturen er (som du sikkert skjønner) referansen. Vi skal nå benytte frekvensanalyse for å se hvor raskt vi kan forandre referansen samtidig som regulatoren klarer å forandre utgangen y. a.) Tegn opp et bodeplott av følgeforholdet til systemet. For hvilke frekvenser har vi gode følgeegenskaper (husk at 0dB=1...)? Vi skal nå teste dette ut, og skrur litt på parametrene til referanse-sinusen. Sett ampituden til 1. side 6
Det kan også bli nødvendig å forandre sluttid for simuleringene. Denne kan forandres ved å gå inn i rullegardinmenyen Simulation og velge Parameters. For å plotte både referansen og utgangen i samme figur kan man f.eks. skrive: >> plot(t,y, -,t,r, -- ) Her vil utgangen være en heltrukken linje mens referansen er stiplet. b.) Sjekk om resultatet fra forrige deloppgave stemmer ved å prøve forskjellige frekvenser på referansesinusen. Husk at gode følgeegenskaper betyr at referansen og utgangen er like i tallverdi og uten tids- (fase-)forskyvning. Nå er det tid for å se på sensitiviteten for støy. Sett amplituden til referansen lik null, og amplituden til forstyrrelsen lik 0.5. Her tenker vi oss at en støykilde (f.eks. en annen varmekilde) påvirker temperaturen i varmluftsrøret. Målet er å undersøke om vår regulator kan begrense innvirkningen av denne. c.) Tegn opp et bodeplott av sensitivitetsfunksjonen til systemet. For hvilke frekvenser på støykilden klarer regulatoren vår å undertrykke innvirkningen? (Husk at veldig negativ desibelverdi <<1 i tallverdi.) Også dette skal vi verifisere ved forsøk på det egentlige systemet. d.) Skru på frekvensen til støy-sinusen og verifiser at vi har lav sensitivitet for forstyrrelse for de frekvensene du fant i forrige deloppgave. e.) Tenk på bodeplottet fra oppgave 1d). Kunne man ut fra dette ha funnet omtrentlig frekvensområde for gunstige T(s) og S(s)? Oppgave 4: Stabilitetsanalyse Vi skal her se litt på systemets stabilitetsegenskaper. Allerede i oppgave 1 spesifiserte vi robusthetskrav til systemet (forsterkningsmargin og fasemergin) da vi lagde regulatoren. For å se hvor polene til systemet ligger i det komplekse planet kan vi skrive: >> roots(nt) hvor nt er nevneren til T(s). Dette vil gi oss røttene til nevneren i transferfunksjonen fra referansen til utgangen, altså T(s). Dette er røttene til 1+h 0 (s), og disse vil som kjent være lik egenverdiene til A-matrisa når systemet er på tilstandsromform. 1+h 0 (s) er forøvrig et vedlig sentralt uttrykk når man undersøker stabilitet. a.) Finn polene til systemet. Systemets transferfunksjon, h p (s), er av 1. orden og regulatoren har bare 2. ordens s-ledd i nevneren, hvorfor får du likevel fem poler? b.) Hvordan kan du ut fra polenes beliggenhet si at systemet er stabilt? side 7
Vi skal nå se på Nyquistkurven til systemet. Skriv følgende for å få den frem: >> w=logspace(-1,1,100); >> sys=tf(th0,nh0); >> nyquist(sys,w); Vær oppmerksom på at dette kun viser deler av kurven! c.) Argumenter ut fra Nyquists stabilitetskriterium at systemet er stabilt. TIPS: Se læreboken kapittel 8.4. Argumenter også ut fra bodeplottet til h 0 (s) at systemet er stabilt. La oss gjøre systemet ustabilt. Forandre forsterkningen K p i regulatorparametrene til en verdi som gjør at systemet aldri svinger seg inn. Prøv f.eks. K p =1.9. Hvis du vil plotte polenes beliggenhet kan du f.eks. skrive: >> plot(roots(nt), x ),grid d.) Hva blir de nye polene? Simuler systemet med den første simulinkmodellen og verifiser at systemet ikke svinger seg inn til en stasjonærverdi. e.) Tegn opp Nyquistkurven til systemet nå. Argumenter ut fra denne at systemet er ustabilt. Forklar også ut fra bodeplottet til h 0 (s) at systemet har blitt ustabilt. Et delmål med øvingen har vært å demonstrere viktigheten og anvendeligheten til sløyfetransferfunksjonen h 0 (s). Tenk gjennom hvor mange deloppgaver denne har vært i bruk, og husk på alle disse bruksområdene når eksamen nærmer seg! side 8