Simuleringsalgoritmer

Like dokumenter
Simulering i MATLAB og SIMULINK

Sammenlikningav simuleringsverktøyfor reguleringsteknikk

Tilstandsestimering Oppgaver

Tilstandsestimering Oppgaver

Lineær analyse i SIMULINK

Minste kvadraters metode i MATLAB og LabVIEW

Observer HANS-PETTER HALVORSEN, Telemark University College Department of Electrical Engineering, Information Technology and Cybernetics

1 Tidsdiskret PID-regulering

Reguleringsteknikk. Finn Aakre Haugen. 16. juni 2014

Systemidentifikasjon Oppgaver

Systemidentifikasjon Oppgaver

MAT1030 Diskret matematikk

3.2.2 Tilstandsrommodeller

Foroverkopling. Kapittel Innledning

Forelesning 14. Rekursjon og induksjon. Dag Normann februar Oppsummering. Oppsummering. Beregnbare funksjoner

Artikkelserien Reguleringsteknikk

Kalmanfilter HANS-PETTER HALVORSEN,

Stabilitetsanalyse. Kapittel Innledning

SLUTTPRØVE. EMNEANSVARLIG: Finn Aakre Haugen. Tlf Epost: Antall sider: 14 (medregnet denne forsiden)

Simulerings-eksperiment - Fysikk/Matematikk

Kalmanfilter på svingende pendel

48 Praktisk reguleringsteknikk

MAT-INF 1100: Obligatorisk oppgave 1

Kapittel 6 Stabilitetsanalyse Oppgave 6.1 Stabilitetsegenskap for transferfunksjoner

Eksamensoppgave i TELE2001 Reguleringsteknikk

Spørretime / Oppsummering

UNIVERSITETET I OSLO

Prosjektoppgave FYS2130. Vår Innleveringsfrist: 09/ , 20 CEST

Tidsdiskrete systemer

Løsning til eksamen i IA3112 Automatiseringsteknikk ved Høgskolen i Sørøst- Norge

Norsk informatikkolympiade runde

Vi som skal undervise. MAT1030 Diskret matematikk. Hva er diskret matematikk? Hva er innholdet i MAT1030?

Brukergrensesnittet i LabVIEW

TMA 4110 Matematikk 3 Høsten 2004 Svingeligningen med kompleks regnemåte

Tilstandsestimering Løsninger

MAT-INF 1100: Obligatorisk oppgave 1

Plotting av data i grafer

Løsning til eksamen i IA3112 Automatiseringsteknikk

KYBERNETIKKLABORATORIET. FAG: Industriell IT DATO: OPPG.NR.: LV4. LabVIEW Temperaturmålinger BNC-2120

Differensiallikninger definisjoner, eksempler og litt om løsning

Kapittel 6: Funksjoner

Vektede grafer. MAT1030 Diskret matematikk. En kommunegraf. En kommunegraf. Oppgave

Løsning til eksamen i EK3114 Automatisering og vannkraftregulering ved Høgskolen i Sørøst-Norge

Control Engineering. State-space Models. Hans-Petter Halvorsen

SLUTTPRØVE. EMNEANSVARLIG: Finn Aakre Haugen. Tlf Epost: Antall sider: 15 (medregnet denne forsiden)

Control Engineering. MathScript. Hans-Petter Halvorsen

TDT4127 Programmering og Numerikk

Det matematisk-naturvitenskapelige fakultet Økt forståelse for matematikk ved bruk av programmering Sinusseminar 2019

Forelesning 25. MAT1030 Diskret Matematikk. Litt repetisjon. Litt repetisjon. Forelesning 25: Trær. Dag Normann

Repetisjon. MAT1030 Diskret Matematikk. Oppsummering. Oppsummering. Forelesning 15: Rekursjon og induksjon. Roger Antonsen

Control Engineering. Stability Analysis. Hans-Petter Halvorsen

MAT1030 Diskret Matematikk

Læreplan i Programmering og modellering - programfag i studiespesialiserende utdanningsprogram

Mengder, relasjoner og funksjoner

FYS3240/4240 Forslag til prosjektoppgave for Lab 4: DAQ-øvelse med LabVIEW

MAT1030 Forelesning 14

Forelesning 25. MAT1030 Diskret Matematikk. Litt repetisjon. Litt repetisjon. Forelesning 25: Trær. Roger Antonsen

Mindstorm, robot- og reguleringskurs

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2017

Løsning til eksamen i IA3112 Automatiseringsteknikk

Systemidentifikasjon Løsninger

HØGSKOLEN - I - STAVANGER. Institutt for elektroteknikk og databehandling

Rekursiv programmering

Modellbasert regulering: Foroverkopling

Løsning til eksamen i IA3112 Automatiseringsteknikk ved Høgskolen i Sørøst- Norge

ProFag Realfaglig programmering

Eksamensoppgave i TMA4320 Introduksjon til vitenskapelige beregninger

INF oktober Dagens tema: Uavgjørbarhet. Neste uke: NP-kompletthet

Svarforslag til ukeoppgaver til INF 4130

Løsningsforslag til sluttprøven i emne IA3112 Automatiseringsteknikk

EKSAMENSOPPGAVE. Høgskolen i Telemark. EMNE: IA3112 Automatiseringsteknikk. EMNEANSVARLIG: Finn Haugen (tlf ). EKSAMENSTID: 5 timer

Numerisk løsning av differensiallikninger Eulers metode,eulers m

MAT1030 Forelesning 25

Forelesning 24. Grafer og trær. Dag Normann april Vektede grafer. En kommunegraf

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Stabilitetsanalyse i MATLAB og LabVIEW

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

Kan micro:biten vår brukes som et termometer? Ja, den har faktisk en temperatursensor!

Reelle tall på datamaskin

HØGSKOLEN I SØR-TRØNDELAG Avdeling for teknologi

MA2501 Numeriske metoder

Tirsdag 21/11. Onsdag 24/11. Tirsdag 12/12. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case. Terje Rydland - IDI/NTNU. Lære å lage større og sammensatte programmer

MAT1030 Diskret Matematikk

Velkommen til MAT1030!

Stabilitetsanalyse. Hans- Pe/er Halvorsen, M.Sc.

MAT1030 Forelesning 25

Dette kan selvfølgelig brukes direkte som en numerisk tilnærmelse til den deriverte i et gitt punkt.

KYBERNETIKKLABORATORIET. FAG: Kybernetikk DATO: OPPG. NR.: R134 TEMPERATURREGULERING

Finn Haugen. Oppgaver i reguleringsteknikk 1. Nevn 5 variable som du vet eller antar kan være gjenstand for regulering i industrianlegg.

EDT211T-A Reguleringsteknikk PC øving 5: Løsningsforslag

Systemidentifikasjon

AU3: Espen Seljemo Torry Eriksen Vidar Wensel Magnus Bendiksen

Repetisjon: Sampling. Repetisjon: Diskretisering. Repetisjon: Diskret vs kontinuerlig. Forelesning, 12.februar 2004

Løsningsforslag Dataøving 2

Noen presiseringer mhp Diskret Fourier Transform. Relevant for oblig 1.

Ubestemt integrasjon.

2.2.1 Framgangsmåte for matematisk modellering Modellering av massesystemer. Modellbegreper... 15

Transkript:

Simuleringsalgoritmer Finn Aakre Haugen, dosent Høgskolen i Telemark 14. september 2015 1 Innledning 1.1 Hva er simulering? Simulering av et system er beregning av tidsresponser vha. en matematisk modell av systemet. Responsene beregnes som en numerisk løsning av differensiallikningene som utgjør systemets modell. Den numeriske løsningen gir tidsutviklingen av variablene i modellen. 1.2 Hvorfor simulere? Kapittel 12 i læreboka Reguleringsteknikk [Haugen, 2014] beskriver i detalj, og med eksempler, hvilken nytte vi kan av simulatorer. Her er en oppsummering: Testing: F.eks. kan regulatorer testes mot simulerte prosesser før de settes i drift mot den virkelige prosessen. Regulatorinnstilling: Du kan bruke eksperimentelle metoder for regulatorinnstilling, f.eks. Ziegler-Nichols svingemetode eller Skogestad-metoden, på en simulert prosess før regulatoren tas i bruk på den virkelige prosessen. Analyse: Med simuleringer kan en kjøre eksperimenter som av praktiske eller økonomiske grunner ellers ikke kan kjøres på det virkelige systemet. En kan se hvordan variable som en ellers ikke kan måle, utvikler seg. Dette kan gi ny innsikt og forståelse. 1

Opplæring og trening: Simuleringer kan med stor fordel brukes i opplæring i studier og i operatørtrening. Utforming (design): En kan bruke en simulator til utforming av et planlagt virkelig system, som altså ennå ikke eksisterer! 1.3 Hva dokumentet omhandler Dette dokumentet beskriver hvordan du kan utvikle simuleringsalgoritmer for dynamiske modeller (systemer), klare for programmering i et hvilket som helst programmeringsspråk. Modellene som dekkes i dette dokumentet, er av følgende to typer: 1. ordens differensiallikning (gjerne ulinær) Tidsforsinkelse Det er min erfaring fra simulatorutvikling i mange ulike prosjekter at disse to modelltypene dekker de aller fleste anvendelser. Hva hvis modellen er en 2. ordens differensiallikning 1, som jo er tilfelle for bevegelseslikningene for et legeme? Som vist senere i dokumentet, kan du utvikle en simuleringsalgoritme for en 2. ordens differensiallikning ved å skrive denne differensiallikningen som to 1. ordens differensiallikninger og så lage en simuleringsalgoritme for hver av dem. Dokumentet viser ikke hvordan vi kan lage en simulator for et tilbakekoplet reguleringssystem. Hvis vi bruker LabVIEW, som jo er blokkdiagrambasert, er det nokså rett-fram å kombinere en PID-regulatorfunksjon (LabVIEWs innebygde eller en egenutviklet) med en simuleringsalgoritme for prosessen som skal reguleres, siden struktur av LabVIEWs blokkdiagram vil være som for reguleringssystemet. I et rent tekstbasert programmeringsspråk, som f.eks. Matlab, kan du implementere prosessimulatoren øverst i programmet og regulatoren nedenfor. Både prosessen og regulatoren må selvsagt implementeres inne i for- eller while-løkka. 1 Differensiallikninger av orden høyere enn 2 har jeg aldri møtt. 2

2 Simuleringsalgoritme for 1. ordens differensiallikning Anta at modellen som skal simuleres, består av følgende differensiallikning: ẋ(t) = f(, t) (1) der uttrykket f(, t) representer alt som står på høyresiden av differensiallikningen.t er tidsvariabelen. Anta at vi skal utlede en simuleringsalgoritme som beregner verdien av x, som forresten kalles modellens tilstandsvariabel, som funksjon av t. En simuleringsalgoritme implementert i et program som kjører i en datamaskin, kan beregne x kun ved diskrete tidspunkter. Disse tidspunktene skal vi her betegne t k der k er en tellevariabel eller tidsindeks for de diskrete tidspunktene. k er heltallig. Avstanden i tid mellom de diskrete tidspunktene kalles simuleringstidsskrittet, eller bare tidsskrittet, som vi her symboliserer med T sim. Med andre ord: T sim er oppløsningen langs simuleringstidsaksen. Figur 1 illusterer disse størrelsene. I figuren er tidsskrittet antatt å være 0,1 s. (Tallverdiene langs t- og x-aksene er her kun antatte verdier.) I figur 1 representerer den heltruktne kurven en kontinuerlig (eller analog) respons, x(t). Vi skal finne en simuleringsalgoritme for beregning av den tilsvarende tidsdiskrete (eller digitale) responsen, x(t k ). Det fins mange forskjellige simuleringsalgoritmer, og det fins mange metoder for utvikling av algoritmer. Vi skal her utlede den enkleste av alle simuleringsalgoritmer, nemlig Eulers foroveralgoritme, også kalt Eulers eksplisitte algoritme. Denne algoritmen kan utledes fra en numerisk tilnærmelse (eller approksimasjon) til integrasjon eller fra en numerisk tilnærmelse til tidsderivasjon. Av disse to utledningene velges her sistnevnte, siden den er den enkleste av de to. Vi skal altså utlede Eulers foroveralgoritme ut fra en tilnærmelse til den tidsderiverte. Anta at modellen som skal simuleres, er gitt ved likn. (1). Eulers foroveralgoritme er basert på at ẋ(t k ) tilnærmes med stigningstallet for den stiplede kurven som går igjennom punktene x(t k ) og x(t k+1 ), se figur 1. Matematisk uttrykt: ẋ(t k ) x(t k+1) x(t k ) T sim (2) Vi erstatter nå ẋ(t k ) i likn. (1) med denne tilnærmelsen. Likn. (1) blir da x(t k+1 ) x(t k ) T sim f(, t k ) (3) 3

x Stigningstallet for x(t k. ), dvs. x(t k ), tilnærmes med stigningstallet for stiplet kurve som går gjennom punktene x(t k ) og x(t k+1 ). 2,0 1,5 x(t) x(t k ) x(t k+1) 1,0 0,5 x(t 0 ) x(t 1 ) x(t 2 ) T sim 0,0 0,0 0,1 0,2 t k t k+1 [s] 0,1 s 0 1 2 k k+1 Figur 1: Diskret tidsakse Vi løser nå likn. (3) med hensyn på x(t k+1 ) og har dermed kommet fram til Eulers foroveralgoritme (vi skriver nå for enkelthets skyld = i stedet for, men vi vet jo at det egentlig skal stå ): x(t k+1 ) = x(t k ) + T sim f(, t k ) (4) I likn. (4) representerer f(, t k ) verdien av funksjonen f beregnet for tidspunkt t k. Siden f(, t k ) er det samme som ẋ(t k ), kan vi skrive Eulers foroveralgoritme som x(t k+1 ) = x(t k ) + T sim ẋ(t k ) (5) hvilket gir litt enklere symbolbruk siden vi nå har droppet symbolet f. Algoritme (5) skal beregnes for hvert tidsskritt i simuleringen. Initialtilstanden x(t 0 ) må være kjent. Algoritme (5) er en eksplisitt formel for ett-skritts prediksjonen x(t k+1 ). Men vanligvis er det x(t k ), som er verdien av x ved nåtidspunktet t k, 4

som vi ønsker verdien av. x(t k ) vil selvsagt også være tilgjengelig i algoritmen, nemlig som prediksjonen beregnet ved forrige tidsskritt. Dette kommer forhåpentligvis klart fram i pseudokoden i følgende eksempel. Eksempel 1 Psuedokode for simuleringsalgoritme for 1. ordens differensiallikning Gitt modellen aẋ(t) = bx(t) + cu(t) (6) der a = 0, 5, b = 2 og c = 5 er parametre. Initialtilstanden er x(t 0 ) = 3. u er en inngangsvariabel i form av en rampe med startverdi 0 og stigningstall (rate) R = 0, 1. Vi starter med å skrive modellen på standardformen, jf. likn. (1), dvs. at den tidsderiverte skal stå alene på venstre side: ẋ(t) = b a x(t) + c u(t) (7) a Nedenfor er simuleringsalgoritmen implementert i pseudokode. Algoritmen kjører der syklisk i en for-løkke, men en while-løkke som kjører inntil en stoppbetingelse er oppfylt (f.eks. at brukeren har klikket på en stoppknapp), kan også brukes. Ved implementering i LabVIEW kan (bør) simuleringsalgoritmen programmeres i en Formula Node siden det kan være tungvint å realisere matematiske uttrykk vha. beregningsblokker. Husk at initialisering og preallokering av arrays for datalagring skal utføres kun n gang, jf. pseudokoden nedenfor. %Initialisering: a=0.5; b=-2; c=5; R=0.1; x_0=3; x_k=x_0; T_sim=0.01; t_slutt=10; N=t_slutt/T_sim; %Lengden av simuleringen i antall tidsskritt. %Preallokkering av arrays for lagring av sim-data: t=zeros(0,n); 5

u_tidsserie=zeros(0,n); x_tidsserie=zeros(0,n); for k_sim = 0 : N, { %Starten av simuleringssyklusen. t_k=k_sim*t_sim; u_k=r*t_k; dot_x_k=(b/a)*x_k+(c/a)*u_k; x_kp1=x_k+t_sim*dot_x_k; %Lagring av verdier i arrays for plotting %evt for eksport og analyse av data: t(k_sim)=t_k; u_tidsserie(k_sim)=u_k; x_tidsserie(k_sim)=x_k; %Indeksskift (forberedelse for neste tidsskritt): x_k=x_kp1; } %Slutten av simuleringssyklusen. figure(1) plot(t,x_tidsserie) figure(2) plot(t,u_tidsserie) Figur 2 viser inngangssignalet u(t) og responsen i tilstandsvariabelen x(t). (Simuleringsalgoritmen er programmert i Matlab, men er lik pseudokoden ovenfor.) [Slutt på eksempel 1] Simulering av 2. ordens differensiallikning Hvis modellen som skal simuleres, inneholder en 2. ordens differensiallikning, kan vi skrive denne differensiallikningen som to 1. ordens differensiallikninger og så lage en simuleringsalgoritme for hver av dem. Et eksempel er modellen for et masse-fjær-demper-system med følgende modell, jf. eksempel 6.3 på side 214 i læreboka Reguleringsteknikk [Haugen, 2014]: mÿ(t) = Dẏ(t) Ky(t) + F (t) (8) der m [kg] er legemets masse, D [N/(m/s)] er dempekonstanten, K [N/m] er fjærkonstanten, og F er ytre kraft på legemet. Initialtilstandene er y(0) (posisjon) og ẏ(0) (hastighet). Vi starter med å sørge for at den 6

u x 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10 t [s] 1 0.5 0 0 1 2 3 4 5 6 7 8 9 10 t [s] Figur 2: Eksempel 1: Simulert inngangssignal u(t) og responsen i tilstandsvariabelen x(t) dobbelderiverte står alene på venstre side: ÿ(t) = 1 [ Dẏ(t) Ky(t) + F (t)] (9) m Så definerer vi følgende to tilstandsvariable: Fra disse definisjonene får vi x 1 (t) = y(t) (posisjon) (10) x 2 (t) = ẏ(t) (hastighet) (11) ẋ 1 (t) = ẏ(t) = x 2 (t) (hastighet) (12) ẋ 2 (t) = ÿ(t) (akselerasjon) (13) 7

Den opprinnelige modellen, likn. (9), kan dermed representeres med følgende to 1. ordens differensiallikninger: ẋ 1 (t) = x 2 (t) (hastighet) (14) ẋ 2 (t) = 1 m [ Dx 2(t) Kx 1 (t) + F (t)] (akselerasjon) (15) Vi kan nå lage en simuleringsalgoritme for den gitte modellen ved å anvende Eulers foroveralgoritme på både likn. (14) og likn. (15). Initialtilstandene er x 1 (0) = y(0) og x 2 (0) = ẏ(0). 3 Simulering av tidsforsinkelse Tidsforsinkelse kalles også noen ganger transportforsinkelse eller dødtid. Ved simulering av reguleringssystemer er det viktig at eventuelle tidsforsinkelser er inkludert i simulatoren. Grunnen er at tidsforsinkelser i prosessen har stor betydning for stabilitetsforholdene i reguleringssystemet. Hvis du har stilt inn en regulator for en prosess uten tidsforsinkelse, mens det faktisk er en tidsforsinkelse i den virkelige prosessen, er det en mulighet for at reguleringssystemet for den virkelige prosessen blir ustabilt! Tidsforsinkelser kan simuleres med et array. Hvis tidsforsinkelsen er τ [s] og simuleringstidsskrittet er T sim, kan arrayets lengde, N τ, settes lik N τ = τ T sim (16) eller avrundet oppover til nærmeste heltall dersom T sim ikke går opp i τ. Figur 3 illustrerer hvordan en tidsforsinkelse kan realiseres vha. et array. Rekkefølgen av operasjonene i hver syklus av simuleringsalgoritmen er: 1. Det tidsforsinkede signalet, u ut (t) = u inn (t τ), kan hentes ut som det siste elementet i arrayet. 2. Signalet som skal tidsforsinkes, u inn (t), legges inn i det første element i arrayet. 3. Alle elementene flyttes ett trinn (i retning av økende arrayindeks). Eksempel 2 Implementering av tidsforsinkelse i MathScript Node i LabVIEW 8

u inn (t k-1 ) u inn (t k ) u inn (t k-2 ) Elementene flyttes én gang pr. simuleringssyklus. Element nr. N-1 Element nr. 0 N stk. elementer u ut (t k ) = u inn (t k-(n-1) ) = u inn (t k -τ) Figur 3: Realisering av en tidsforsinkelse vha. et array. Figur 4 viser frontpanelet for et LabVIEW-program som simulerer en tidsforsinkelse. Vi ser at inngangssignalet u inn er tidsforsinket med 2 sek. Figur 5 viser LabVIEW-programmets blokkdiagram. [Slutt på eksempel 2] Referanser [Haugen, 2014] Haugen, F. A. (2014). Reguleringsteknikk, 2. utgave. Fagbokforlaget. 9

Figur 4: Frontpanelet for et LabVIEW-program som simulerer en tidsforsinkelse. Figur 5: Blokkdiagrammet for et LabVIEW-program som simulerer en tidsforsinkelse. 10