Datorövningar i systemidentifiering Del 1 Denna version: 24 augusti 2015 REGLERTEKNIK AUTOMATIC CONTROL LINKÖPING
Målsättning Detta häfte innehåller datorövningar i systemidentifiering. Området är i mångt och mycket ganska teoretiskt och kopplingen till dess (stora) praktiska användning är inte alltid självklar. Detta häfte syftar till att ge inblick i och kunskap om hur det går till att ta fram en bra modell med hjälp av ett systemidentifieringsverktyg. Målsättningarna är följande: illustrera en lämplig arbetsgång vid ett identifieringsproblem ge en inblick i hur ett standardverktyg, System Identification Toolbox (SITB) för Matlab används och fungerar peka på vilka storheter som är lämpliga att studera vid validering av modeller SITB:s grafiska användargränssnitt Figur 1: Det grafiska användargränssnittet till SITB. Allt arbete med förbehandling av data, identifiering och validering kan göras i ett grafiskt användargränssnitt till System Identification Toolbox (SITB) i Matlab, se figur 1. Detta användargränssnitt startas genom att skriva 2
>> ident i Matlabs terminalfönster. För att få en bild av hur detta verktyg fungerar ges här en kortfattad beskrivning av gränssnittet. Till vänster i figur 1 syns ett antal ikoner som representerar de olika datamängder som används i modelleringsförfarandet. Detta kan vara estimerings- och valideringsdata samt övriga datamängder som är relevanta för modellen. Dessa dataset kan studeras i tids- och frekvensdomänen med hjälp av att markera Time plot och Data spectra under Data Views. Det dataset som för tillfället bearbetas finns som ikon i fältet Working Data. Rätt dataset för förbehandling fås genom att dra den ikon som representerar det intressanta datasetet till Working Data. Detta dataset kan förbehandlas (Preprocess) eller användas till modellskattning (Estimate). De behandlade datasetet hamnar under Data med ett nytt namn, så om man önskar göra ytterligare manipulationer av detta dataset måste det flyttas till Working Data. De skattade modellerna illustreras av ikoner till höger i figuren. Egenskaperna hos de skattade modellerna kan studeras med hjälp av att markera de olika rutorna under Model Views. I de fall data behövs för att validera modellen används det dataset som finns vid Validation Data. Ikoner som representerar data eller modeller kan slängas i Trash om de inte skall användas mer. Nya dataset kan flyttas till Working Data, Validation Data eller Trash genom att dra ikonerna för dataseten och släppa dem över respektive plats. De arbeten som är utförda kan (och bör) sparas då och då för att lätt kunna fortsätta arbetet vid ett senare tillfälle. Detta görs under File och sedan Save session. Detta är extra värdefullt i detta häfte, då många av övningarna bygger på varandra! Notera För att komma åt olika filer för uppgifterna, kör i Matlab kommandot initcourse TSRT62 Allt som kan göras i grafiska användargränssnittet (och en hel del extra) kan även göras från kommandoraden. Detta är ibland enklare och lättare, speciellt om många alternativ ska prövas (kan t ex skriva Matlab-script). Kör help ident för att få info om kommandonamn. iddemo är också användbart. Man kan också högerklicka på skattade modeller i användargränssnittet och där se vilka kommandon som körts. 3
Importering och förbehandling av data Om man har sparat insamlade data under exempelvis filnamnet myfile kan dessa laddas in i Matlab genom kommandot >> load myfile Datasekvenserna kan läsas in i användargränssnittet genom att trycka på Import data och sedan välja Time domain data. Data kan vara lagrade i två olika format, antingen som vektorer/matriser eller som iddata-objekt. Vid inläsningen till användargränssnittet väljs detta under Data Format for Signals. Vidare är det möjligt att namnge datasetet, mata in värden på samplingsintervall och starttid samt att ge lite kommentarer om datasetet. Genom att trycka på knappen Preprocess visas menyn enligt figur 2. Här Figur 2: Möjliga alternativ för att förbehandla data via användargränssnittet i SITB. kan man utföra en rad operationer på det dataset som ligger i Working Data. De som är av intresse för detta häfte är förklarade här. Se också [2, kapitel 14.3] Select range. Välj ut de data som skall ingå i de olika dataseten. Remove means. Tar bort medelvärde från in- och utsignaler. 4
1 Ickeparametrisk identifiering Här skall vi studera icke-parametriska frekvensskattningsmetoder, se [2, kapitel 11]. Dessa nås i användargränssnittet under knappen Estimate och sedan Spectral Model. Tre olika metoder är implementerade, nämligen Blackman- Tukeys metod (SPA), SPAFDR och ETFE. Modellerna studeras genom att man under Model Views väljer Frequency resp. Vi kommer också skatta impulssvar mha CRA, vilket här görs utanför grafiska användargränssnittet, dvs genom att använda kommandoraden (förslagsvis genom att skriva en m-fil som körs). 1. En kemisk reaktor kan lite förenklat beskrivas som en tank som innehåller en vätskeblandning i vilken en kemisk reaktion äger rum. Ofta har man ett kontinuerligt in- och utflöde från reaktorn som man kan variera för att påverka koncentrationen av en reaktionsprodukt i utflödet och man ser till att hålla vätskeblandningen i reaktorn homogen genom att hela tiden röra om den. En hundraliters Van de Vusse-reaktor kan i en viss arbetspunkt beskrivas av modellen G(s) = 1.1170s + 3.1472 s 2 + 4.6429s + 5.3821 Insignalen till reaktorsystemet är flödet (i l/min) in i reaktorn och utsignalen är koncentrationen (i mol/l) av den intressanta produkten i utflödet. Antag nu att modellen är okänd, men att det har gjorts ett antal experiment på reaktorn. Data finns lagrade i filen reaktordata.mat som ett antal iddata-objekt (kör load reaktordata). I filen finns även objekten Gd och Fd, där Gd är reaktormodellen G(s) diskretiserad med samplingstiden T = 0.1 s och Fd är den tidsdiskreta regulatorn som använts vid experimenten z2 z5. Gd och Fd kan laddas in i SITB genom att välja Import Models. (a) Ta in datasetet z1 i SITB och studera vilka tids- och frekvensegenskaper det har. (b) Skatta några olika ickeparametriska modeller. Använd både SPA och ETFE och variera fönsterbredden M (benämnd γ i [2]) under Frequency Resolution. Hur påverkar fönsterbredden skattningarna? 5
Prova även den mer avancerade metoden SPAFDR och variera antalet frekvenser. Frequency Resolution sätts då enklast till [] (default). (c) Dataset z1 var insamlat genom att variera insignalen slumpmässigt och mäta utsignalen från systemet. Ladda nu istället in dataset z2 som är insamlat under återkoppling. Insignalen kommer då istället från en regulator som drivs av skillnaden mellan en slumpmässig referenssignal och den uppmätta utsignalen. Hur blir de icke-parametriska skattningarna nu? Vad är problemet? (d) För att vidare utreda återkopplingens inverkan finns två ytterligare dataset, z3 och z4, där amplituden på referenssignalen förstärkts 10 gånger (z3) respektive satts till 0 (z4). Försök med hjälp av z2, z3 och z4 förklara hur skattningen påverkas av återkopplingen och referenssignalen. (e) Extrauppgift: Periodiska data. Prova även periodiska data genom att använda dataset z5. Referenssignalen var vid experimentet periodiskt brus (dvs samma brussekvens upprepas flera gånger) med tio perioder. För att SITB ska förstå detta har z5.period satts till N/10 = 200. Använd ETFE och jämför skattningen med den du får från dataset z2 (som har samma amplitud på referenssignalen men ej är periodisk). 2. Vid simulering av akustik i rum används normalt ett stort antal sampel (flera tusen) från rummets impulssvar. I denna uppgift ska vi jämföra akustiken i två olika rum (en föreläsningssal och ett kontorsrum), dels genom att lyssna, dels genom att skatta impulssvaren med hjälp av CRA och studera hur de skiljer sig åt. Filen akustikdata.mat (kör load akustikdata) innehåller signalerna u, y1 och y2 där u är en trumpetfanfar och y1 och y2 är inspelade ljud hur fanfaren låter i de två olika rummen. Alla signalerna innehåller N = 41154 sampel med samplingsfrekvens f s = 16 khz. Notera: Denna uppgift bör lösas utanför GUI:t, dvs genom att använda kommandoraden. Orsaken är att flera kommandon som behöver användas ej finns tillgängliga i GUI:t (däribland CRA 1 ). (a) Studera hur de olika signalerna skiljer sig åt, t ex genom att plotta signalerna. Om du har möjlighet, försök också spela upp ljuden. 1 Under Estimate -> Correlation Models finns enbart metoden impulse som är en annan metod än CRA. Normalt ger den ett bättre resultat än CRA, men den är alltför långsam här när vi behöver skatta så många koefficienter i impulssvaret. 6
Kan du redan nu säga vilken signal som kommer från vilket rum? Tips: För att spela upp en signal u, använd kommandot: fs=16000; soundsc(u,fs); (b) Skatta de 500 första laggarna i impulssvaret för de olika rummen genom att använda metoden CRA. För att få en bra skattning behöver du höja ordningen på vitningsfiltret (L(q) på s. 251 i [2]). Justera upp ordningen tills ytterligare höjning inte ger någon direkt skillnad. Tips: Impulssvaret med filterordning 100 skattas med: T=1/fs; z1=iddata(y1,u,t); M=500; na=100; g1hat=cra(z1,m,na,0); figure; stairs(ghat1); (c) Använd de skattade impulssvaren för att räkna ut avståndet till närmaste objekt i de olika rummen. (d) Använd ditt skattade impulssvar för att simulera akustiken i ett av rummen. Hur väl lyckas du återskapa ljudet? Prova olika längd på impulssvaret och ordning på vitningsfiltret för att förbättra resultatet. Tips: Simulering görs med kommandot: y1hat=filter(g1hat,1,u); 3. För många mekaniska system (t ex broar, flygplan, bilkarosser) är det vanligt att göra vibrationsanalys. Detta innebär ofta att man studerar systemets resonanser genom att skatta frekvenssvaret från pålagd kraft till rörelser i konstruktionen (vanligtvis acceleration). Krafter brukar normalt genereras på tre olika sätt: impulshammare, skakare eller normal drift. Rörelserna mäts vanligtvis med accelerometer. Uppgiften går ut på att ta fram och jämföra spektralskattningar från två olika dataset. Filen vibrationdata.mat (kör load vibrationdata) innehåller iddata-objekten zh (impulshammare) och zs (skakare). Dessutom finns modellen Gd som kan användas i efterhand för att verifiera skattningarna. (a) Ta fram spektralskattningar för de två dataseten med hjälp av några av SPA, ETFE och SPAFDR. Hur många resonanser hittar du? (b) Samma maxamplitud för kraften har använts i de båda dataseten (vilket ofta är rimligt eftersom konstruktionen inte tål hur 7
stora krafter som helst). Hur påverkar det noggrannheten i spektralskattningen som erhålls för de olika dataseten? 4. Du har fått i uppdrag att ta fram en modell av en elmotor med last, se figur 3. En fysikalisk modell för en viss sådan elmotor ges approximativt av 1 G(s) = (1) s 3 + 0.9s 2 + 1.1s + 0.46 Vid ett identifieringsexperiment har 1000 datapunkter samlats in med en samplingstid på 0.3 s. Datasetet har sparats som vektorer under namnet elmotor, där insignalen är benämnd u och utsignalen y. u Figur 3: Elmotor (a) Ta in datasetet i SITB och studera vilka tids- och frekvensegenskaper det har. Kontrollera att data ser normalt ut, d.v.s. att inga trender finns i data eller att någon outlier har kommit med. (b) Hur ser bodediagrammet ut för en elmotorn beskriven enligt (1)? (c) Skatta några olika icke-parametriska modeller. Använd både SPA, SPAFDR och ETFE och variera fönsterbredden M (benämnd γ i [2]). Hur påverkar valet av M skattningen? Stämmer det ideala bodediagrammets utseende med de skattade? 8
Diskussion/lösningsförslag Nedan följer högst ungefärliga lösningsförslag på uppgifterna. Ickeparametrisk identifiering 1. (a) Signalerna verkar okej, dvs det är bara att fortsätta till (b). (b) Litet M ger bias (ej rätt väntevärde), stort M ger hög varians. En bra kompromiss ligger runt M = 200 för SPA och ETFE. För SPAFDR väljs Frequency Spacing Logarithmic. Skattningen blir nu mycket bra för ett stort intervall av frekvenser. Notera speciellt att fladdret vid höga frekvenser försvinner då Logarithmic väljs istället för Linear. (c) Skattningarna blir felaktiga i hela frekvensintervallet, med för låg amplitud upp till 1 rad/s och sedan för hög amplitud. Orsaken är att insignal är korrelerad med bruset på grund av återkopplingen. (d) För ETFE ges skattningen vid återkoppling av (då N ): Ĝ(iω) G(iω)Φ r(ω) [F (iω)] 1 Φ v (ω) Φ r (ω) + Φ v (ω) Biasen beror därför på signal-brus-förhållandet. Om r görs 10 gånger större blir Φ r 100 gånger större och biasen bör därför minska med motsvarande faktor. Sätts r till 0 så fås istället 1/F. Detta kan verifieras genom att ladda in regulatorn Fd via Import models. (e) Biasen minskar då z5 används eftersom ETFE medelvärdesbildar över de olika perioderna, vilket sänker brusvariansen Φ v en faktor 10. Dock minskar frekvensupplösningen motsvarande faktor. 2. (a) Plotta till exempel signalerna med: fs=16000; T=1/fs; N=length(u); t=t*(1:n) ; figure; plot(t,[u y1 y2]); Man ser redan här att signalerna från rummen har längre utsträckning i tiden pga ekon. Signalen y1 har längst utsträckning, vilket borde svara mot det större rummet. Ett lyssnartest visar stor skillnad i akustik: 9
soundsc(u,fs); soundsc(y1,fs); soundsc(y2,fs); (b) Impulssvaret för y1 skattas med följande kod: z1=iddata(y1,u,t); Ni = 500; na = 300; g1hat=cra(z1,ni,na,0); t=t*(0:ni) ; figure; stairs(t,[g1hat,g1(1:ni+1)]) där det sanna impulssvaret g1 använts (finns med i akustikdata.mat). Ordningen bör vara runt 300 för att få rätt de första 100 laggarna nära noll. För y2 fås liknande resultat. (c) Det finns en direktterm vid 0, men sedan är impulssvaret nära noll fram tills 6.5 ms för y1 och 3 ms för y2. Mikrofonen sitter därför nära instrumentet och ljudhastigheten 343 m/s ger 2.2 resp 1 m. Dessa sträckor ska halveras för att få avståndet till objektet. (d) Den svåraste signalen är y1. Kör följande kod för olika Ni och na: Ni=2000; na=300; g1hat=cra(z1,ni,na,0); y1hat=filter(g1hat,1,u); soundsc(y1,fs); soundsc(y1hat,fs); Antalet laggar Ni behöver vara minst 2000 för att få rätt rumskänsla. Om na minskas blir ljudet väldigt dovt. 3. (a) Systemet har resonanser vid frekvenserna 2.2, 6.5, 12, 21, och 45 rad/s. Av dessa drunknar den översta i bruset för båda dataseten. Den första resonansen vid 2.2 rad/s kan också vara svår att urskilja med ETFE och SPA (med Frequency Spacing Linear). De övriga tre resonanserna syns dock tydligt för dataset zs om man väljer tillräckligt stor frekvensupplösning (M 5000 fungerar bra). För dataset zh kan även den fjärde resonansen vara svår att urskilja eftersom brusnivån är högre. För SPAFDR ger Frequency Spacing Logarithmic och cirka 500 frekvenser ett bra resultat för dataset zs. Då syns även den första resonansen. Detta går också med SPA om man väljer Frequency Spacing Logarithmic och M 10000. För dataset zh kan det vara svårt att hitta en inställning så att både första och fjärde resonansen syns. 10
Värt att notera är att det är svårt att få dämpningen rätt (höjden på resonanstopparna) för detta odämpade system. Detta kan verifieras genom att ladda in systemet Gd via Import models. (b) Jämför man signalerna (Time plot) syns det att utsignalen då skakaren används är ca 100 gånger högre. Spektrum för signalerna (Data spectra) är också dramatiskt olika. För att få samma resultat med impulshammare som med skakare måste man alltså tillåta en mycket större kraft. 4. (b) Bodediagrammet för elmotorn med last kan ses i figur 4. Vi kan 10 0 Bode Diagram Magnitude (abs) 10 2 10 4 10 6 Phase (deg) 10 8 0 45 90 135 180 225 270 10 2 10 1 10 0 10 1 10 2 Frequency (rad/sec) Figur 4: Bode-diagram för elmotorn med last. se att vid ungefär 1 rad/s har systemet en resonanstopp och för höga frekvenser är lutningen 3. (c) Brusigheten i skattningarna ökar med ökande M, samtidigt minskar biasen. Ett bra värde för detta system ligger runt 70-80. Referenser [1] T. Glad and L. Ljung. Reglerteknik. Grundläggande teori. Studentlitteratur, 2006. [2] L. Ljung and T. Glad. Modellbygge och simulering. Studentlitteratur, 2004. 11