studiewijzer mod 4.1 v1.3
TRANSCRIPT
Hogeschool van Amsterdam
domein Techniek
Engineering Design and Innovation
STUDIEWIJZER EN READER
Modelleren Simulink
4100MOD411
MINOR ENERGIE EN DUURZAAMHEID
versie 1.2a
Coördinator: Wilbert te Velde (velwa)
Studiejaar: 2011/2012 Amsterdam, augustus 2011
1. Studiewijzer .......................................................................................................... 4
1.1 Inleiding ............................................................................................................ 4
1.2 leerdoelen ......................................................................................................... 4
1.3 Gerelateerde documenten en literatuur ............................................................ 4
1.4 Opzet en organisatie ......................................................................................... 5
1.5 Toetsing ............................................................................................................ 5
2. READER: Verdieping Simulink ................................................................................ 6
2.1 Uit- en inzoomen ............................................................................................... 6
2.2 Het gebruik van lookup tables ........................................................................... 6
2.3 Functieblokken .................................................................................................. 7
2.3.1 Fcn-blok ..................................................................................................... 7
2.3.2 Matlab Fcn-blok ......................................................................................... 7
2.4 Wegschrijven van data naar Matlab .................................................................. 7
2.5 Importeren van data uit Matlab ........................................................................ 8
2.5.1 Oefening 1 het From Workspace-blok ........................................................ 8
2.5.2 het From Workspace-blok met gebruik van de Pre-Load functie ................. 9
2.5.3 Het from file-blok ....................................................................................... 9
2.6 Exporteren van data naar Matlab .....................................................................10
2.6.1 Oefening 5 het To File-blok........................................................................10
2.7 Importeren en wegschrijven van data uit en naar Excel ....................................11
2.7.1 xlsread ......................................................................................................11
2.7.2 xlswrite .....................................................................................................11
2.8 Bewerken van datareeksen in .mat-files zodat ze bruikbaar worden voor een
simulatie .....................................................................................................................12
2.9 Gebruik van subsystemen ................................................................................12
2.10 Het werken met parameters ............................................................................13
2.11 Centraal invoeren van de grootheden ..............................................................13
2.12 Parameters definiëren in workspace ................................................................13
2.13 De pre load function .........................................................................................13
2.14 Maskeren van subsystemen .............................................................................14
2.15 Voorbeeld van het instellen van een masked subsystem ..................................14
2.16 Uitvoer van de variabelen ................................................................................17
2.17 Set path ............................................................................................................17
2.18 Overzichtelijk maken van een model ................................................................18
2.19 Het maken van een bibliotheek ........................................................................18
2.20 Overdrachtsfuncties .........................................................................................18
2.21 Regelsystemen .................................................................................................18
2.22 Iteraties in Simulink ..........................................................................................18
2.23 Validatie ...........................................................................................................18
3. BIJLAGE 1 INTRODUCTIE MATLAB ........................................................................19
3.1 Eerste kennismaking met Matlab .....................................................................19
3.1.1 Oefeningen: ..............................................................................................20
3.2 Help en doc ......................................................................................................21
3.3 Programma’s opslaan .......................................................................................21
3.3.1 Het schrijven van een m-file ......................................................................21
3.3.2 Functies .....................................................................................................22
3.4 Plotten .............................................................................................................23
3.5 Matrixrekenen .................................................................................................24
3.6 Geluidengenerator ...........................................................................................24
4. BIJLAGE 2 INTRODUCTIE SIMULINK ......................................................................26
4.1 Overzicht blokken per library ...........................................................................27
4.2 Bouwen van een model ....................................................................................28
4.2.1 Verbinden van de blokken .........................................................................28
4.2.2 Kopiëren van blokken en lijnen..................................................................29
4.2.3 Draaien van blokken ..................................................................................29
4.2.4 Aftakken van signalen ...............................................................................29
4.2.5 Loskoppelen blokken van signalen: ...........................................................29
4.3 Runnen van een model .....................................................................................29
4.3.1 Solvers en step size ...................................................................................30
4.4 Algemene aanwijzingen bij het modelleren van een dynamisch model ............31
4.5 Voorbeeld van een differentiaalvergelijking .....................................................31
4.5.1 Voorbeeld 1: het modelleren van een bungeejumper ...............................32
4.5.2 Voorbeeld 2: Ongeregeld vertrekmodel ....................................................36
4.5.3 Voorbeeld 3: geregeld vertrekmodel .........................................................38
4.5.4 Voorbeeld 4 compressor ...........................................................................40
1. Studiewijzer
1.1 Inleiding
In het tweede jaar van E, D & I werd in de vakken MOD 2.1 t/m 2.4 al aandacht besteed aan
Modelleren. Om te voorspellen hoe een constructie of een systeem zich in de praktijk zal
gedragen gebruikt de ingenieur tal van hulpmiddelen: berekeningen, (schaal)modellen en een
heel scala aan berekeningssoftware. Als het systeem dan in de tijd ook nog een veranderende
input ondergaat (bijvoorbeeld een windbelasting, een van temperatuur veranderend object of
een veranderende snelheid) dan worden statische berekeningen wel heel bewerkelijk. In dat
geval verdient het aanbeveling om met een simulatiepakket te werken. In de lessen MOD 4.2
worden in de eerste drie weken nog enkele handige simulatiepakketten geïntroduceerd. Daarna
gaan de studenten van de minor ED verder met het pakket Matlab-Simulink.
(Duurzame) energiesystemen lenen zich bij uitstek om te worden doorgerekend met een
dynamisch pakket als Simulink. We gaan verder met de stof uit MOD 2.2 en diepen die flink uit.
Deze reader is in ontwikkeling en zal mogelijk tijdens de lesperiode vervangen worden door een
nieuwere versie. In de bijlage van deze reader staat de basis van Modelvorming, Matlab en
Simulink uitgelegd.
1.2 leerdoelen
De student
• kan een complex probleem uit de praktijk uitrafelen tot een model door systematisch te
denken.
• kan op basis van de product- / dienstspecificaties op gestructureerde wijze een ontwerp
maken met behulp van berekeningen, modellering-, simulatiehulpmiddelen
• kan door analyse de onderdelen van een systeem onderscheiden en deze
vereenvoudigen
• kan een differentiaalvergelijking opzetten uit een behoudsvergelijking
• kan een differentiaalvergelijking vertalen naar een dynamisch simulatiemodel
• kan (onderdelen van) een systeem omzetten in een (simulatie)model
• kan een (simulatie)model testen
• kan de benodigde gegevens uit een (simulatie)model onttrekken, juist interpreteren en
theoretisch/praktisch onderbouwen
• kan een parameteranalyse doen met een (simulatie)model
• kan een (simulatie)model gebruiken om het systeem te optimaliseren
• kan een simulatiemodel testen en de uitvoer juist interpreteren
• kan de resultaten verslagtechnisch duidelijk weergeven
1.3 Gerelateerde documenten en literatuur
Weekopdrachten MOD 2.2 (op intranet onder Handleiding/Studiemateriaal MOD 4.2)
Weekopdrachten MOD 4.2ED (op intranet)
Als achtergrond informatie kunnen gebruikt worden (niet verplicht):
-simulatie van technische systemen met Matlab/Simulink- Taeke van der Veen- Academic Service
(verouderd, niet meer leverbaar, maar toch het beste Nederlandstalige boek)
-Essential MATLAB for Engineers and Scientists-Brian Hahn
-Matlab en Simulink tutorials van de Mathworks site
(http://www.mathworks.com/academia/student_center/tutorials/simulink-launchpad.html en
http://www.mathworks.com/academia/student_center/tutorials/launchpad.html )
1.4 Opzet en organisatie
Lessen zijn in de vorm van een werkcollege. Tijdens de les worden stukken nieuwe stof
behandeld en vervolgens wordt daarmee door middel van opdrachten vaardigheid mee
opgedaan. De student houdt een portfolio bij van alle gemaakte opdrachten.
1.5 Toetsing Toetsing vindt plaats door het maken van een individuele eindopdracht. Eindopdrachten en
criteria waar deze aan moeten voldoen worden in de loop van de lessen bekendgemaakt.
2. READER: Verdieping Simulink
2.1 Uit- en inzoomen
Handeling Toetsencombinatie
Inzoomen Shift-R
Uitzoomen Shift-V
Totale model past in scherm Shift-F of Shift-B
2.2 Het gebruik van lookup tables
Een Lookup-table is een door de gebruiker geprogrammeerde grafiek.
Het inputsignaal (vector of input values) is de x-as. Het outputsignaal (table data) is de
bijbehorende y-waarde die wordt afgelezen uit de grafiek. De lookup table staat standaard op de
methode interpolatie-extrapolatie: voor een inputwaarde die niet in de vector of input values
voorkomt wordt automatisch een output-waarde gekozen die het best past.
N.B. Let er bij het programmeren van de lookup table op dat de vector of input values en de table
data precies evenveel elementen bevatten, anders komt er een foutmelding. Een goede hulp bij
het programmeren van een lookup table is de lookup table editor, te openen met Tools > Lookup
Table Editor.
Het is ook mogelijk om meerdere lijnen te programmeren in een Lookup table (2D), bijvoorbeeld
p-Φv lijnen van een waaierpomp bij verschillende toerentallen n. Bij de row index input values
dan de toerentallen n invullen, bij de colum index of input values de opvoerdruk p en bij vector of
output values (=table data) alle Φv-lijnen.
2.3 Functieblokken
2.3.1 Fcn-blok
Hierin is in Matlab-code een formule te zetten. Het inputsignaal wordt weergegeven met de
variabele u.
De volgende operators kunnen gebruikt worden: + - * / ^
De volgende wiskundige functies mogen gebruikt worden: abs acos asin atan cos cosh exp ln log
log10 pow power sin sinh sqrt tan tanh
Voorbeeld: exp(-u)*30*sin(2*pi*u) of exp(-u)/(30*sin(2*pi*u))
2.3.2 Matlab Fcn-blok
Hierin wordt verwezen naar een complete Matlab-script (een .m-file) dat zich in de current
directory moet bevinden.
2.4 Wegschrijven van data vanuit Simulink naar workspace Standaard wordt in de workspace een file aangemaakt met de naam tout. Deze file bevat de
tijdvector. Standaard worden berekende waarden als er in het model een out-port (sinks-library)
wordt gezet de waarden van dat signaal in de workspace opgeslagen met de naam yout. Zie
voorbeeld hieronder.
Het voordeel hiervan is dat de datafiles vanuit Matlab verder bewerkt kunnen worden,
bijvoorbeeld door er grafieken van te maken (die kunnen worden opgeslagen).
Indien een signaal uit meerdere signalen bestaat (mux of bus creator) of indien er meerdere
outports zijn dan worden alle waarden in yout opgeslagen.
In de configuration parameters (Simulation > Configuration Parameters) kunnen de benamingen
worden veranderd:
2.5 Importeren van data uit Matlab Het importeren van data uit Matlab wordt bijvoorbeeld gebruikt bij tijdreeksen, zoals weerdata
(windsnelheid, zonnestraling).
Hiervoor heeft Simulink twee blokken: From Workspace en From File (beiden in de Sources-
library).
2.5.1 Oefening 1 het From Workspace-blok
Bij het From Workspace-blok wordt een tweetal even grote kolommen uit Matlab gehaald,
waarbij de eerste kolom staat voor de tijd.
1. maak in de command window van Matlab de tijdkolom t=[1;2;3;4;5;6;7;8;9;10];
2. maak in de command window van Matlab de kolom met bijbehorende waarden u=
[2;5;7;4;1.1;-1;5;10;12;4];
3. bouw het hiernaast staande model, stel de
simulatietijd op 10 s en druk op de play-toets
4. verander de simulatietijd op 20 s en kijk wat er gebeurt na 10 s.
Als alternatief kan simin ook in de workspace van Matlab gedefinieerd worden: simin=[t,u];
2.5.2 het From Workspace-blok met gebruik van de Pre-Load functie
Simulink kan datareeksen automatisch laden. De oefening hieronder geeft een voorbeeld hoe
dat moet
Oefening 2
1. Maak een mat-file van t en u (oefening1) door in de command window te typen: save
tijdreeks1 t u; er verschijnt in de current directory een file tijdreeks1.mat. Deze blijft
bewaard als je Matlab afsluit.
2. Maak je workspace en command window schoon met clear en clc
3. Open de model properties van je model en toets onder het kopje PreLoadFcn load
tijdreeks1.mat. Sluit af met OK. Nu zal iedere keer dat je het model opent tijdreeks1.mat
worden geopend (check dat in je workspace de variabelen t en u verschijnen).
4. Run het model.
2.5.3 Het from file-blok
Net als bij oefening 2 kan Matlab een .mat file lezen zonder de PreLoad-functie met behulp van
het From File-blok. Het verschil is dat de data nu in rijen in plaats van kolommen geschreven
moeten worden:
Blok tijdreeks datareeks
From workspace kolom1 kolom2
From File rij1 rij2
Oefening 3 het from file-blok
1. maak in de command window van Matlab de tijdrij time=[0:1:10];
2. maak in de command window van Matlab de datarij waarden=cos(time);
3. maak een matrix u aan u=[time;waarden];
4. maak een mat-file tijdreeks2 aan met het commando save tijdreeks2 u;
5. Bouw het model volgens bovenstaande afbeelding
2.6 Exporteren van data naar Matlab Het kan handig zijn om de resultaten van een simulatie in Simulink te bewaren. Dit kan natuurlijk
door de grafiek op te slaan, maar soms is een numerieke uitvoer verstandiger. In dat geval heeft
Simulink de blokken To Workspace en To File (beiden in de Sinks-library).
2.6.1 Oefening 4 het To Workspace-blok
We willen het signaal u(t)=sin2(t) wegschrijven naar de workspace
1. Bouw bovenstaand model, sla het op onder een willekeurige naam, maak workspace en
command window schoon en run het model. Er is in de workspace een structure simout
geladen.
2. Omdat dit gezien de Matlab-ervaring van de student niet handig is dient het blok to
workspace een ander soort output te hebben. Dit kan door er op te dubbelklikken en het
save format te veranderen van structure in array. Run nu nog een keer de simulatie en
zie dat er een enkele rij is opgeslagen onder de naam simout (uiteraard kan deze naam
gewijzigd worden in de block properties van het to workspace-blok)
Als Matlab wordt afgesloten zal de data niet bewaard blijven, tenzij deze wordt opgeslagen
volgens de methode uit oefening 2.
2.6.2 Oefening 5 het To File-blok
We willen het signaal u(t)=sin(t) opslaan. Bouw het onderstaande model en sla het op onder een
willekeurige naam.
1. Run de simulatie en zie wat er gebeurt. Er is een .mat-file tijdreeks3.mat aangemaakt in
de current directory. Deze zal bewaard blijven als Matlab afgesloten wordt.
2. Open tijdreeks3.mat door in de command window load tijdreeks3.mat; te typen. Er
blijkt in de workspace een matrix ans te zijn geladen. De matrix bestaat uit twee rijen. De
bovenste rij is de tijdreeks en de onderste rij is de bijbehorende waarde sin(t) van het
signaal.
Samenvattend in tabelvorm:
Blok in workspace (verdwijnt bij
afsluiten programma)
in current directory (blijft bewaard
bij afsluiten programma)
To workspace als variabele -
To File als variabele als .mat-file
2.7 Importeren en wegschrijven van data uit en naar Excel
Het commando voor het inlezen van een excel-bestand is xlsread en voor het wegschrijven als
een Excel-bestand is xlswrite.
2.7.1 xlsread
Algemene syntax voor het inlezen van een Excel-bestand:
filename=xlsread(‘naam excelfile.xls’,’naam tabblad’,’reeks’).
Zie verder onder doc xlsread voor de overige mogelijkheden
Oefening 1 het inlezen van een klimaatfile
Als voorbeeld Excel-bestand wordt hier de klimaatfile van de Bilt genomen, die zich op DLWO
bevindt:
https://dlwo.techniek.hva.nl/NL/Opleidingen/20102011EDI/Studiedelen/2011-2012-EDI-
6100MOD411-Voltijd/Lesmateriaal/Typical_climate_data_Netherlands_deBILT64-65.xls
Sla deze file op in je current directory.
Bekijk deze file in Excel om de opbouw te begrijpen. De rijen geven de uren van het jaar weer (te
beginnen op 1 januari en eindigend op 31 december, totaal 24*365=8760 uur). De kolommen
zijn de buitentemperatuur, de relatieve vochtigheid, de directe zonnestraling en de diffuse
zonnestraling op vlakken met diverse oriëntatie)
Als we nu bijvoorbeeld de eerste kolom (de buitentemperatuur) willen inlezen in Matlab dan kan
dat met het volgende commando in het command window:
T_outdoor= xlsread('Typical_climate_data_Netherlands_deBILT64-65.xls','Toutdoor','A5:A8764');
Let op de aanhalingstekens, haakjes, hoofdletters. Is dit begrijpelijk?
Matlab maakt dan in de Workspace een vector T_outdoor aan waarin de 8760
buitentemperaturen staan. Deze vector is zowel in Matlab als in Simulink te gebruiken. Plotten in
Matlab gaat bijvoorbeeld met het commando
plot(T_outdoor);
Verder kunnen de bewerkingen uit paragraaf 2.5, 2.6 en 2.8 worden losgelaten op T_outdoor.
Opdracht:
1. maak een vector voor de directe straling op een vlak dat op het zuiden gericht is en doe
ditzelfde voor de diffuse straling.
2. de waarden staan in W/m2. Verander deze in J
3. Schrijf de verschillende vectoren weg naar een .mat-file climate_1965.mat. Zie oefening
2 van paragraaf 2.5
2.7.2 xlswrite
Zie doc xlswrite voor de mogelijkheden.
2.8 Bewerken van datareeksen in .mat-files zodat ze bruikbaar worden voor een simulatie
Stel we willen een simulatie maken van een autonoom energiesysteem met een windturbine als
elektriciteitsopwekker. Hiervoor is een tabel nodig met de windsnelheid.
Basis van deze oefening is de file windreeks_10_sec.mat die gezipt op DLWO staat. Pak
deze uit in je current directory.
Als deze geopend wordt met het commando
Load windreeks_10_sec.mat
dan wordt in de workspace de tweekoloms-matrix windreeks2_stapgrootte_10_s geschreven. Dit
is een file met in de eerste kolom de tijd in minuten en in de tweede kolom de windsnelheid in
m/s.
De simulatie werkt standaard met tijd in seconden, dus we zullen de waarden in de eerste kolom
met 60 moeten vermenigvuldigen om van minuten naar seconden te komen. Dat gebeurt als
volgt:
Stap 1 de eerste kolom uit de matrix halen en hem A noemen:
A=windreeks2_stapgrootte_10_s(:,1);
Stap 2 de tweede kolom uit de matrix halen en hem B noemen:
B=windreeks2_stapgrootte_10_s(:,2);
Stap 3 de waarden in kolom A met 60 vermenigvuldigen
A=60*A;
De oorspronkelijke waarden van A worden hierdoor overschreven.
Stap 4 de kolommen weer samenvoegen in
windreeks2_stapgrootte_10_s =[A B];
De oorspronkelijke file windreeks2_stapgrootte_10_s wordt hierdoor overschreven. Als je dit
wilt voorkomen, geef de file van stap 4 dan een andere naam.
Nu kan volgens de methode hierboven beschreven in oefeningen 1 en 2 de windfile in Matlab
gebruikt worden. N.B. de simulatie loopt bijna 209000 seconden (58 uur).
Indien de voorkeur gegeven wordt om het commando from file te gebruiken moet de matrix
getransponeerd worden. Dat kan met het commando
windreeks_week_4= windreeks2_stapgrootte_10_s';
Opdracht
Maak een simulatie van een windturbine met een rotordiameter van 4 meter en een cp=0,36. De
molen begint pas bij 3,5 m/s te produceren. Gebruik hiervoor het blok lookup table. Gevraagd
wordt hoeveel kWh er geproduceerd wordt in de periode van 58 uur.
2.9 Gebruik van subsystemen Subsystemen worden gebruikt om overzicht en hiërarchie in een model te brengen.
Subsystemen kunnen zelf gemaakt worden door een aantal blokken te selecteren, met rechts te
klikken en dan Create Subsystem te selecteren.
Er zijn ook standaardsubsystemen in de subsystems-library. Die worden hier nog niet behandeld.
Door rechts te klikken op het subsystem kunnen meerdere mogelijkheden gekozen worden
waaronder:
Subsystem parameters (=function block parameters). Hierin kan aan de in het subsystem
gebruikte variabelen een waarde worden toegekend. Die variabelen moeten wel eerst
gedefinieerd worden.
Mask subsystem . Zie paragraaf 2.14.
2.10 Het werken met parameters Materiaalgrootheden die niet of nauwelijks veranderen zoals bijvoorbeeld de
zwaartekrachtversnelling g kunnen natuurlijk plaatselijk in het model gezet worden. Lastiger
wordt dat met grootheden die we willen kunnen veranderen zoals bijvoorbeeld een
buitentemperatuur, een oppervlak of een R-waarde. Deze grootheden worden parameters
genoemd. Zeker bij wat complexere modellen verdient het aanbeveling om die ergens centraal in
het model te kunnen veranderen. Matlab/Simulink biedt daar de volgende mogelijkheden toe:
• Centraal invoerscherm met alle grootheden
• Parameters definiëren in workspace
• De pre-load function van een model
• Parameters definiëren d.m.v. een masked subsystem.
De mogelijkheden worden hieronder toegelicht.
2.11 Centraal invoeren van de grootheden Er kan in het hoofdscherm of in een subsystem een hele reeks grootheden gedefinieerd worden
met behulp van constant-blokken. Door middel van goto-blokken kan verwezen worden naar
lokale from-blokken op de plek waar de grootheid nodig is.
Voorbeeld van het invoeren van de grootheden centraal in het model
2.12 Parameters definiëren in workspace Indien bijvoorbeeld op verschillende plaatsen in een model gewerkt wordt met de
buitentemperatuur dan kan dat bijvoorbeeld ook gebeuren door daar waar die nodig is
(bijvoorbeeld in een constant-blok, een gain-blok of een Fcn-blok) in plaats van de waarde een
naam in te voeren, bijvoorbeeld t_buiten. Als Simulink deze naam tegen komt zal er automatisch
in de Workspace gezocht worden naar de waarde van de grootheid t_buiten. Deze moet
natuurlijk wel eerst gedefinieerd worden door in het Command Window het commando
t_buiten=10; ◄╝ te typen. Mocht de grootheid niet gevonden worden dan geeft
Matlab/Simulink een foutmelding.
Bovenstaande handeling is te automatiseren door de variabelen te definiëren in een .m-file,
function of .mat-file. Voordat het simulink-model gerund wordt dient dan wel eerst de m-file
gerund of mat-file geopend te worden. Dit is helemaal handig met behulp van de pre load
function, zie volgende paragraaf.
2.13 De pre load function Als een model wordt opgestart dan bestaat er de mogelijkheid dat er een aantal commando’s
wordt verricht, zoals het openen van .mat-file (bijvoorbeeld een bestand met weergegevens) of
het definiëren van een aantal waarden. Dit kan in de pre-load function die te vinden is onder
file>model properties.
In het rechtergedeelte van het scherm kan een script in Matlab-code gezet worden, bijvoorbeeld
c_w=4180 % soortelijke warmte water in [J/kgK]
A=15 % oppervlak [m^2]
eta_brander=0.8 % branderrendement =80 %
Nu kan overal in het model waar bijvoorbeeld de cw van water nodig is (bijvoorbeeld in een
constant-blok, een gain-blok of een Fcn-blok) c_w ingevuld worden in plaats van 4180. Het
voordeel hiervan is dat de waarden centraal veranderd kunnen worden.
Zie verder de Matlab help-functie onder “Using Callback Functions”.
2.14 Maskeren van subsystemen Het maskeren van een subsystem is de eerste stap op weg naar het aanleggen van een eigen
modellenbibliotheek. Met het masker kan aan het subsysteemblok ook een eigen uiterlijk
worden toegekend door er een afbeelding (het icon) op te projecteren. Gemaskeerde
subsystemen werken niet met de workspace van Matlab, maar met hun eigen workspace.
Een subsysteem wordt gemaskeerd door rechts te klikken en Mask subsystem te kiezen. De mask
editor wordt dan geopend.
Met het tabblad icon wordt het icoon ingesteld. Dat gebeurt met een string in Matlab-code, die
wordt geplaatst in het scherm drawing commands. Onderaan de mask editor staan voorbeelden
van de syntax van de drawing commands. Als er wordt gekozen voor de mogelijkheid ‘image’ dan
dient de afbeelding waarnaar verwezen wordt zich in de current directory te bevinden.
Met het tabblad parameters kunnen de variabelen in het subsystem worden gedefinieerd. Deze
variabelen kunnen later door op het subsystem te klikken ingesteld worden in het dialoogvenster
function block parameters.
Met het tabblad initialization worden in Matlab-code commando’s gezet die worden uitgevoerd
op het moment dat het complete model wordt uitgevoerd.
Met het tabblad documentation kan extra informatie worden ingevoerd over het subsysteem. De
informatie verschijnt in het dialoogblok function block parameters.
2.15 Voorbeeld van het instellen van een masked subsystem Open het model solarhomesystem.mdl (staat op intranet onder “systeem met accu”). Dit model
bevat 2 subsystemen.
Maak van het subsystem PV een masked subsystem door rechtsklikken. Open de mask editor.
Zoek op internet een geschikte afbeelding (.jpg) voor op het subsystem. Zet deze afbeelding in je
current directory en geef hem de naam PV.jpg. Onder drawing commands in het tabblad icon
toets je de volgende string:
image(imread(‘PV.jpg’))
Druk op Apply en als het goed is staat de foto nu op het subsystem.
Nu worden de volgende variabelen aan het subsystem toegekend:
A (oppervlak in m2) en eta (rendement van het zonnepaneel).
Dat gebeurt als volgt:
Stap 1: vul de parameters als hierboven in. Klik op Apply
Stap 2: open het subsystem (rechtsklikken + look under mask) en verander de constante blokken
area m2 en efficiency % op bovenstaande wijze. Dat kan door er op te klikken en de Constant
value A te noemen (of eta)
Stap 3 dubbelklik op het subsystem PV en nu verschijnt het bovenstaande dialoogvenster. Vul
hier de gewenste waarden in en sluit het scherm af.
Stap 4: vul in de mask editor bij tabblad documentation het bovenstaande in.
Nu ziet de function block parameters dialoogbox er als volgt uit:
2.16 Uitvoer van de variabelen De variabelen zijn alle grootheden die tijdens de simulatie veranderen, zoals bijvoorbeeld een
temperatuur of een snelheid. Een model wordt een stuk overzichtelijker als die variabelen
ergens centraal worden neergezet. Dit kan bijvoorbeeld in een centraal uitvoerscherm naar
analogie van paragraaf 2.11.
2.17 Set path Bij het opstarten van Matlab wordt een vooraf door de gebruiker ingesteld aantal directories
doorlopen. De documenten die in deze directories staan worden in het geheugen van het
programma opgeslagen.
Het voordeel hiervan is dat bestanden die door modellen worden opgeroepen, zoals
bijvoorbeeld een image of een klimaatfile, centraal opgeslagen kunnen worden. Zo zou er
bijvoorbeeld een file “images” gemaakt kunnen worden waarin alle afbeeldingen die op maskers
komen geplaatst worden.
Het instellen van het set path gaat als volgt:
Ga naar file>set path
Klik op add folder en stel de gewenste directory in. Klik op save en close. Matlab zal de
bestanden die in deze directory staan bij de eerst volgende keer opstarten voortaan weten te
vinden.
>>het is nog de vraag of dit op de schoolcomputers wordt toegestaan<<
2.18 Overzichtelijk maken van een model Om de leesbaarheid en uniformiteit tussen de blokken te vergroten kan een model op de
volgende wijze worden verbeterd.
• Werk standaard van links naar rechts en bij terugkoppelingen van rechts naar links.
• Subsystemen gebruiken, zo mogelijk gestandaardiseerde blokken voorzien van masker
met afbeelding (hiervoor moet wel eerst een custom made library worden aangelegd).
• Zet lokale parameters (bijvoorbeeld de afmetingen van een wand in een subsysteem) zo
veel mogelijk in de vorm van function Block parameters in een masked subsystem.
• Zorg dat modelwijde parameters, dat zijn niet veranderlijke materiaalgrootheden (zoals
soortelijke warmte, dichtheid) en variabelen (waarden die tijdens de simulatie
veranderen zoals bijvoorbeeld de buitentemperatuur) zo veel mogelijk centraal in het
model worden neergezet. Verwijs in subsystemen naar deze parameters. Verwijzen kan
door middel van go to en from-blokken, maar bijvoorbeeld ook door de parameters in de
pre-load function van het model te zetten.
• Afspreken om energie- en materiaalstromen door middel van pijlen (al dan niet gemuxt
of gebust) en stuursignalen door middel van from en goto blokken.
• Massastromen, drukken en temperaturen tussen blokken zo veel mogelijk muxen of via
bus creator combineren
• Wees consequent in het labellen van de signalen, blokken en in- en outpoorten van
subsystemen.
2.19 Het maken van een bibliotheek De Simulink-bibliotheek kan uitgebreid worden met een custom-made bibliotheek. Zelf
gemaakte blokken kunnen in deze bibliotheek geplaatst. Als deze blokken in een model worden
gebruikt dan behouden ze een relatie met het oorspronkelijke blok in de bibliotheek.
Nader uit te werken.
2.20 Overdrachtsfuncties Gebruik LaPlace-transformaties om een overdrachtsfunctie uit te beelden in Simulink.
Nader uit te werken
2.21 Regelsystemen Soorten regelingen: PI, PD, PID
Voorbeelden van responsies.
Nader uit te werken
2.22 Iteraties in Simulink Nader uit te werken
2.23 Validatie Nader in te vullen
3. BIJLAGE 1 INTRODUCTIE MATLAB De inhoud van dit hoofdstuk is overgeslagen in het tweede jaar ED&I. De bedoeling van dit
hoofdstuk is om een zeer globale indruk te geven van de mogelijkheden van Matlab.
Matlab is een programmeertaal die gebaseerd is op Matrixrekenen. Het is een krachtig
rekenprogramma dat goed overweg kan met opgaven uit de engineering- en wetenschappelijke
wereld.
3.1 Eerste kennismaking met Matlab Start Matlab op.
Onderscheid de volgende delen van het scherm:
• command window. Het invoerscherm. Invoeren kan na de prompt >>
• current directory. In deze directory kijkt Matlab als er een bestand wordt opgevraagd en
hierin worden alle files opgeslagen die na het afsluiten van het programma bewaard
blijven. Na opstarten Matlab altijd eerst de Current Directory instellen op de eigen H-
schijf of Memory Stick! Zie daarvoor de witte balk bovenaan de pagina.
• command history. Overzicht van eerder gedane commando’s.
workspace. Een overzicht van alle gedefinieerde variabelen. Na het afsluiten van het programma
worden deze variabelen gewist.
Matlab is een programmeertaal die op het eerste gezicht wat lastig lijkt omdat de taal erg
gevoelig is voor de syntax. Dat is de ‘code’, de manier waarop een commando geschreven wordt.
Ook is Matlab hoofdlettergevoelig. Als je niet meer precies weet hoe een commando geschreven
wordt, ga dan naar de help-functie door bijvoorbeeld in de command window
doc sin ◄╝ in te toetsen, als je wilt weten hoe de syntax van het commando sin (sinus) is
In het command window kan direct gerekend worden:
5*8◄╝
sin(pi/4) ◄╝
In beide gevallen wordt het antwoord als ans in de Workspace gezet, iedere keer wordt ans
vervangen
Je kunt ook variabelen definiëren:
a=5*8◄╝
b=8◄╝
c=a-b◄╝
Ook langere namen:
Aantal_studenten_TIS_Delft=1482◄╝ (let op de underscores, Matlab kan niet overweg met
spaties)
3.1.1 Oefeningen:
91,25
e-1
5*11
/14 sin(90°)
√29 cos(π/4)
De Matlab-code lijkt erg op bijvoorbeeld Maple-code.
Matlab rekent standaard met radialen.
Je kunt een rij definiëren met spaties of komma’s
D=[1 2 3 4] ◄╝
E=[1,2,3,4] ◄╝
Je kunt met puntkomma’s kolommen definiëren:
F=[1;2;3;4] ◄╝
g=sin(F) ◄╝
g=sin(f) ◄╝ geeft een foutmelding: het programma is gevoelig voor hoofd- en kleine letters
Je kunt ook een rij definiëren op de volgende manier:
h=1:1:10◄╝
de syntax van deze reeks is h={eerste waarde}:{stapgrootte}:{laatste waarde}
Het kan hinderlijk zijn als er direct de echo in de command window verschijnt. De echo is een
herhaling van de invoer of wat het programma zojuist berekend heeft. Dit met een puntkomma
verhelpen:
h=1:1:10;◄╝
Je kunt D en E wel optellen en aftrekken, maar niet vermenigvuldigen en delen. Je kunt D en F
wel vermenigvuldigen. Dit komt omdat Matlab rijen en kolommen als een matrix beschouwt.
Matrixrekenen bewerkt deze (vermenigvuldigen, delen, machtsverheffen enz.) op een andere
manier dan element voor element.
Matlab ziet alle rijen als een matrix van 1 rij en n kolommen of 1 kolom en n rijen.
Als je D en E puntsgewijs met elkaar wilt vermenigvuldigen dan dien je dit aan te geven met het
vermenigvuldigingsteken .* . Dat geldt ook voor de commando’s .^ en ./ :
D.*E◄╝
Bij bijvoorbeeld kwadratische bewerkingen:
D^2◄╝
geeft een foutmelding
D.^2◄╝
geeft geen foutmelding
Je kunt D en h niet bij elkaar optellen. Dit komt omdat de rijen niet even lang zijn.
Oude commando’s kunnen met de pijltjes worden opgehaald: ↑↓
Scherm schoonmaken:
clc◄╝
Workspace schoonmaken:
clear◄╝
3.2 Help en doc Matlab heeft een hele krachtige help-functie
Die kan aangeklikt worden, maar ook opgevraagd met
help sin◄╝
of nog veel duidelijker:
doc sin◄╝
In dat laatste geval wordt uitgebreide informatie gegeven in een apart scherm
Ook online via www.mathworks.com veel informatie beschikbaar:
Via help=>web resources
Ook demo’s, tutorials, handleidingen
3.3 Programma’s opslaan
3.3.1 Het schrijven van een m-file
Open de m-file editor op de onderstaande manier:
Maak in de editor de volgende commando’s aan
x=[0 pi/4 pi/3 pi/2];
y=sin(x)
opslaan als example_1(let op directory). Hij krijgt automatisch de extensie .m en verschijnt in de
current directory (en bijvoorbeeld ook in Windows Explorer)
terugroepen vanuit command window als example_1
3.3.1.1 Moeilijkheden met opslaan
Let op bij het opslaan van Matlab-files: Matlab kan niet overweg met de volgende naamgeving:
-cijferreeksen in de bestandsnaam (bijv. 123week4.m)
-Matlab-commando’s (bijv. load.m) in de bestandsnaam
-spaties in de naam (bijv.opdracht week 1.m) Gebruik hiervoor underscores (bijv.
opdracht_week_1.m)
3.3.1.2 Oefeningen:
1. h=0:pi/90:2*pi;
j=cos(h);
plot (h,j)
opslaan als example2.m en runnen vanuit command window
2. Schrijf een m-file voor 0≤x≤10 , stapgrootte 0,5 en d=x2-6x-12; geef in een grafiek
d tegen x weer.
3.3.2 Functies
Zijn m-files met een variabele input:
Open de m-file editor en schrijf de volgende script:
function z = macht (x,y)
z=x^y;
opdracht vanaf command window bijv.: macht(2,4) ◄╝
De syntax bij een function is
function uitgangsvariabele = functienaam (inputvariabele1,inputvariabele2)
Oefening:
In de volgende oefening worden de Matlab-commando’s input en disp geïntroduceerd. Maak
een m-file met de volgende script:
%dit programma bepaalt de inhoud van een cilinder met diameter D en hoogte H
D = input ('geef de diameter van de cilinder in mm: ');
H = input ('geef de hoogte van de cilinder in mm: ');
V = pi/4*D^2*H*1e-06;
disp ('Volume is [l]:')
disp (V)
Alles dat na het %-teken staat beschouwt Matlab als tekst. Op deze wijze kan de programmeur
extra informatie kwijt om de script begrijpelijker te maken.
Opdracht:
Schrijf een m-file voor het grafisch weergeven van de relatie y=ax3+bx
2+cx+d voor het domein
-10≤x≤10, stapgrootte 0,5, waarbij eerst gevraagd wordt naar de waarden van a, b, c en d. sla dit
op als grafiek_derdemachtscurve.m
3.4 Plotten Algemeen:
1. definieer het domein
2. definieer de functie
3. geef plot (x,y)
Bijvoorbeeld de volgende script:
t=[0:pi/3:20*pi];
f=exp(-0.1*t).*sin(t);
plot (t,f)
Wat opvalt is dat de grafiek geen mooi vloeiende curve is. Dit komt door de stapgrootte pi/3
Verander die in pi/10
Oefening:
Nog een paar commando’s om een grafiek aan te kleden: legend, xlabel, ylabel, grid, title. Voor
nog veel meer mogelijkheden toets doc plot in de command window
x = -pi:.1:pi;
y = sin(x);
z=cos(x);
plot(x,y,'--',x,z,'+')
legend('sin(x)','cos(x)')
xlabel('t')
grid on
title('goniometrische vergelijkingen')
Zie verder:
doc plot◄╝
Opdrachten:
1. Maak een plot van de functie y= cos(10t) * e-t
voor 0< t<=2*pi, stapgrootte pi/10
(dient p1/100 te zijn voor een mooi vloeiend verloop t=[0:pi/100:2*pi];
y=cos(10*t).*exp(-1*t);
plot (t,y)
2. Maak een plot van 1
2
+x
x voor 0< =x<=3, stapgrootte 0.1 (hierbij gaat het erom dat het
vergeten van ./ geen foutmelding oplevert maar een constante waarde) x=[0:.1:3];
y=x.^2./(x+1);
plot (x,y)
3.5 Matrixrekenen Een matrix bestaat uit een aantal rijen en kolommen:
A=[1 2 3;4 5 6;7 8 9] ◄╝
B=[4 5 6;7 8 9;1 2 3] ◄╝
Vergelijk A*B en A.*B. Wat had je verwacht?
Je kunt hier een element uit opvragen bijvoorbeeld 1e rij, derde kolom:
A(1,3) ◄╝
Je kunt hier rijen of kolommen uithalen door:
C=(:,2) ◄╝
geeft de tweede kolom van A
D=(2,:) ◄╝
geeft de tweede rij van A
Of meerdere kolommen:
E=(:,2:3) ◄╝
Bij bewerking van meetgegevens heb je vaak grote reeksen getallen
Horizontaal samenvoegen (voorwaarde is dat beide matrices een zelfde aantal rijen heeft):
F=[A B]
Verticaal samenvoegen (voorwaarde dat beide matrices een zelfde aantal kolommen heeft):
G=[A;B]
Matrixrekenen wordt gebruikt bij het oplossen van n vergelijkingen met n onbekenden en bij
bijvoorbeeld eindige elementen methode.
Stel we hebben de volgende vergelijkingen:
43 21 =− yy 532 21 =+− yy
We kunnen dat in een matrixvorm schrijven als:
=
−
−
5
4.
32
31
2
1
y
y
of byA =.
Uit bAy1−= kunnen y1 en y2 bepalen.
In Matlab verwerken we dat als volgt:
A=[ 1 -3; -2 3];
b=[4; 5];
A^-1*b
3.6 Geluidengenerator Meer voor de grap de volgende oefening als voorbeeld van de oneindige mogelijkheden van
Matlab. Maak een m-file met de volgende tekst. Run de file met de luidspreker van je PC aan.
fs=4000; f0=25; t=0.1:1/fs:4.5; y1=sin(2*pi*f0*t); y2=sin(2*pi*2*f0*t);
y3=sin(2*pi*3*f0*t); y0=y1+y2+y3; call=3*exp(-0.5*t).*sin(2*pi*0.65*t).*y0; sound(call) plot(call)
Vraag: wat gebeurt hier precies?
4. BIJLAGE 2 INTRODUCTIE SIMULINK De inhoud van dit hoofdstuk komt in grote lijnen overeen met de in MOD 2.2 (nu MOD 2.3)
behandelde stof in het tweede jaar van ED&I.
Simulink is een tool van Matlab. In tegenstelling tot Matlab is het grafisch vormgegeven,
waardoor het gebruik makkelijker te leren is dan Matlab.
Er geldt ook hier: Na opstarten Matlab altijd eerst de Current Directory instellen op de eigen H-
schijf of Memory Stick! Zie daarvoor de witte balk bovenaan de pagina. Alle modellen worden
dan geopend vanuit en opgeslagen in deze directory.
Simulink kan gestart worden door achter de Command Prompt in de Command Window in:
>> Simulink◄╝
of klik op de Simulink-icoon:
De Simulink Library Browser wordt dan geopend. Dit is de
basisbibliotheek met blokken.
Indien een blok gezocht wordt dan kan gebruik gemaakt
worden van de zoekfunctie. Typ hierin de naam van het blok
en druk (een aantal keer …) op enter of op het
verrekijkericoon. De bibliotheek wordt dan doorzocht.
zoekfunctie
4.1 Overzicht blokken per library Continuous:
integrator integreert het signaal naar de tijd
derivative geeft de afgeleide van het signaal naar de tijd
Discontinuities:
relay Relais: als het signaal het gespecificeerde switch on point bereikt gaat het relais open en
geeft het als uitvoer de gespecificeerde output when on. Als het signaal het gespecificeerde
switch off point bereikt gaat het relais dicht en geeft het als uitvoer de gespecificeerde output
when off.
saturation limiteert het inputsignaal tot de uiterste gedefiniëerde ondergrens en bovengrens (als
het inputsignaal buiten deze range ligt). Ligt het binnen de range dan wordt het signaal gewoon
doorgegeven.
Lookup tables:
lookup table Hierin is een grafiek te programmeren met het inputsignaal op de x-as. Het
outputsignaal is de bijbehorende y-waarde die wordt afgelezen uit de grafiek.
Math Operations:
add (in nieuwere versies heet dit blok sum) en subtract. Optel- en aftrekblok. De vorm kan
cirkelvormig of rechthoekig worden ingesteld. Het aantal inputs is in te stellen
divide vermenigvuldigen en delen van de inputsignalen. Aantal inputs en soort input (* of /) is in
te stellen
product Vermenigvuldigen van de inputsignalen. Het aantal inputs is in te stellen.
gain Vermenigvuldigt het inputsignaal met een in te stellen waarde
math function wiskundige bewerking van het inputsignaal. Staat standaard op ex maar kan ook
op andere bewerkingen ingesteld worden.
relational operator vergelijkt de bovenste input met de onderste en stuurt afhankelijk van de
ingestelde voorwaarde (==; ~=;<; <=;>=; >) een 0 of een 1 als output.
Signal Routing:
Bus Creator en Bus selector combineren van signalen tot één signaal. Komt de duidelijkheid van
het model ten goede. Bij bus-signalen worden de signalen weliswaar gecombineerd, maar met
de bus-selector kunnen op elke willekeurige plaats de signalen afzonderlijk afgetakt worden.
Mux combineren en Demux weer ontrafelen van signalen tot één signaal. Komt de duidelijkheid
ten goede. Bij mux en demux kunnen signalen alleen als geheel worden gecombineerd en weer
ontrafeld. Het is niet mogelijk om er een signaal uit te halen en dit af te takken.
From en Goto stuurt het signaal draadloos van het goto blok naar het corresponderende from-
blok. Het goto en from blok moeten dezelfde Tag hebben (bijvoorbeeld A)
Switch schakelt de output met het bovenste of onderste inputsignaal, afhankelijk van een
stuursignaal (de middelste input)
Sinks. dit zijn eindblokken (met alleen een input):
Display Geeft de actuele waarde van het signaal
Scope Geeft de grafiek van het signaal tegen de tijd
Stop Simulation zolang het inputsignaal 0 is wordt er gesimuleerd. Verandert deze waarde dan
stopt de simulatie.
To File schrijft waarden naar een bestand weg dat zich in de current directory bevindt
To Workspace schrijft waarden weg naar een bestand dat zich in de workspace bevindt
Sources dit zijn blokken die een signaal maken, hebben alleen een output:
Clock geeft als uitvoer de tijd
Constant geeft als uitvoer een in te stellen constant. Ook te geven in de vorm van bijvoorbeeld
3*pi/2
From File leest waarden in uit een bestand dat zich in de current directory bevindt
From Workspace leest waarden in uit een bestand dat zich in de workspace bevindt
Sine Wave genereert een sinus- of cosinusvormige functie. Frequentie, amplitude, offset van de
x-as (bias) en fase (pi/2 invullen voor een cosinus, standaard 0 voor een sinus)
Step op een te definiëren tijdstip (step time) verandert het signaal sprongsgewijs van de initial
value naar de final value.
User defined functions:
Fcn een van de handigste blokken. Hierin is in Matlab-code een formule te zetten. Het
inputsignaal wordt weergegeven met de variabele u. Voorbeeld: exp(-u)*30*sin(2*pi*u)
Daarnaast dient de student het gebruik van subsystems te beheersen.
4.2 Bouwen van een model Een model wordt geopend door op de New Model icoon te klikken, of Ctrl-N in te drukken:
Nu kunnen door met de linker muisknop blokken vanuit de bibliotheek in het model gesleept
worden.
4.2.1 Verbinden van de blokken
Verbinden van de blokken kan op verschillende manieren:
• door links slepen van de uitgang van het eerste blok naar de ingang van het tweede blok
• door het eerste blok aan te klikken, Ctrl ingedrukt te houden en dan het tweede blok aan
te klikken.
New Model
4.2.2 Kopiëren van blokken en lijnen
Kopiëren van blokken en lijnen kan op de volgende manieren:
• aanklikken en Ctrl-c Ctrl-v
• met rechter muisknop ingedrukt slepen
4.2.3 Draaien van blokken
• aanklikken en Ctrl-r voor 90° draaien
• aanklikken en Ctrl-i voor 180° draaien
4.2.4 Aftakken van signalen
• ga met de cursor op de plaats van de aftakking staan en sleep met rechts een nieuwe
aftakking
4.2.5 Loskoppelen blokken van signalen:
• houd de Shift-toets ingedrukt en sleep het blok met links
Er worden in lesverband diverse opdrachten gemaakt om vaardig te worden met Simulink. Zie
ook het aparte bestand ONT7-Weekopdrachten dat zich op intranet bevindt.
4.3 Runnen van een model
Als een model gebouwd is kan het gerund worden. Dit gebeurt door de Play-knop aan te klikken.
4.3.1 Solvers en step size
Simulink rekent met een solver. Een solver is een wiskundig algoritme dat speciaal geschikt is om
differentiaalvergelijkingen op te lossen. Er zijn meerdere solvers te gebruiken in Simulink, maar
het gaat in deze cursus te ver om hier op in te gaan.
Simulink verricht de berekeningen in tijdstappen. Dit kunnen vaste tijdstappen zijn of variabele
tijdstappen. In dit laatste geval kiest het programma afhankelijk van of er op een bepaald tijdstip
veel verandert of weinig verandert een kleine stapgrootte of grote stapgrootte.
Standaard staat Simulink op automatische stapgrootte. Aan het begin van een simulatieronde
berekent de solver eerst de stapgrootte. Het kan dan voorkomen dat grafieken schokkerig
worden weergegeven. Dan is de stapgrootte te grof. De stapgrootte is ook handmatig in te
stellen door in het model Simulation > Configuration Parameters > Solver. Standaard staat
Simulink op:
Bij een schokkerige grafiek zou de Max step size kunnen worden ingesteld op een vaste waarde,
bijvoorbeeld 0.2 s. Let er wel op dat bij lange simulaties het instellen van een kleine max step
size betekent dat er door het programma heel lang gerekend wordt.
4.4 Algemene aanwijzingen bij het modelleren van een dynamisch model
Een kenmerk van een dynamisch model (zie paragraaf 2.1) is dat de berekende waarde op tijdstip
1 wordt teruggevoerd in het systeem en wordt gebruikt in de volgende rekenstap op tijdstip 2.
Voorbeelden van een dynamisch systeem zijn:
-een massaveersysteem (bijvoorbeeld een trillende veer of een bungeejumper)
-een vallend voorwerp met wrijving
-een leeglopend vat (met of zonder wrijving)
-het opwarmen of afkoelen van een voorwerp
Het modelleren van dit soort systemen leidt tot een differentiaalvergelijking (dit zal gaandeweg
de lessen duidelijk worden). Het kenmerk daarvan is dat in de vergelijking zowel de variabele x
als zijn eerste afgeleide en/of tweede afgeleide voorkomen. Als de variabele en zijn eerste
afgeleide samen voorkomen heet het een eerste orde systeem, komt ook de tweede afgeleide
voor dan spreekt men van een tweede orde systeem. Er zijn systemen met hogere ordes, maar
die worden hier niet behandeld.
4.5 Voorbeeld van een differentiaalvergelijking Het is bekend dat de afgeleide naar de tijd van de verplaatsing x de snelheid v is en de afgeleide
van de snelheid v naar de tijd de versnelling a:
2
2
dt
xd
dt
dva ==
De evenwichtsvergelijking van een vallende parachutist met luchtwrijving is:
Fversnelling = -FG + Fluchtweerstand
(Let op: het teken + of – wordt bepaald door de keuze die je van tevoren geeft aan wat de plus-
en wat de min-richting is. In dit voorbeeld is omhoog positief en omlaag negatief genomen)
2
2
1vAcgmam w ∗∗∗∗+∗−=∗ ρ waarin a en v de variabelen zijn. Omdat a de eerste
afgeleide is van v is dit een differentiaalvergelijking van de eerste orde.
Het model van dit eerste ordesysteem zou er zo uit kunnen zien:
(In dit model zit meteen een addertje onder het gras: het teken van de snelheid v is negatief omdat de snelheid naar
beneden gericht is. Door de snelheid te kwadrateren wordt het teken positief. In dit geval is dat ook de bedoeling
want de luchtweerstandskracht moet een positief teken hebben omdat hij omhoog gericht is. Zou het de bedoeling
zijn om het negatieve teken wel te behouden dan moet voor het kwadrateren een Fcn-blok genomen worden. Toets
hierin de string u*abs(u). Ga na dat de output dan altijd hetzelfde teken heeft als de input)
Dynamische systemen gaan over:
Verplaatsing 2
2
dt
xd
dt
dva ==
Hoekverplaatsing: 2
2
dt
d
dt
d ϕωα == (hoekversnelling, hoeksnelheid, hoek)
Verband tussen vermogen en temperatuur bij opwarming of afkoeling: dt
dTcmP ∗∗=
Verband tussen energie en vermogen: dt
dEP =
4.5.1 Voorbeeld 1: het modelleren van een bungeejumper
Er is een standaardaanpak die kan helpen bij het modelleren van dynamische systemen volgens
het volgende stappenplan:
1. Bepaal wat je te weten wilt komen
2. Teken een vrij lichaams schema (VLS). Bepaal wat de positieve richting is en wat de
negatieve.
3. Zet alle krachten die op het lichaam werken in de tekening
4. Doe onderbouwde vereenvoudigingen
5. Stel de evenwichtsvergelijking(en) op
6. Zoek de juiste formules en zet die in het VLS
7. Bij niet voldoende gegevens: maak onderbouwde aannames
8. Stel de differentiaalvergelijking op.
Uitwerking
Stap 1
We willen de verplaatsing tegen de tijd te weten komen
Stap 2, 3 en 6
Richting van de tekens: alle krachten die naar boven wijzen zijn positief. Alle krachten naar
beneden zijn negatief
Stap 4
Vereenvoudiging:
Neem aan dat het elastiek zich gedraagt als een trekveer (kracht is evenredig met de uitrekking)
neem aan dat het elastiek geen inwendige wrijving heeft
neem aan dat het elastiek al direct na de sprong strak staat
neem aan dat de luchtweerstandscoëfficiënt cw en het frontale oppervlak A constant zijn. Omdat
ρ ook min of meer constant is geldt ρ*cw*A= constant, dus Fluchtwrijving=C*v2.
Onderbouwing: de werkelijkheid is complexer dan het model, maar we willen vooral het gedrag
van het systeem bekijken (de verplaatsing tegen de tijd)
Stap 5
Beschouw het moment dat de jumper naar beneden beweegt. Op dat moment geldt:
-FZ+Felastiek+Fluchtwrijving=Fresultante (let op zowel Fluchtwrijving en Fresultante veranderen van richting)
Stap 7
Er is voldoende bekend
Stap 8
-m*g+k*x+C*v2=m*a [5.3a]
FZ=m*g
Fluchtwrijving=1/2*ρ*cw*A*v2 Felastiek=k*x
Fresultante=m*a
-m*a-C*v2-k*x=m*g [5.3b]
- mgkxdt
dxC
dt
xdm =−−
2
2
dit is een tweede orde differentiaalvergelijking
Vervolg stappenplan
9. Begin het model te bouwen met vergelijking 5.3a als basis. Zie rode rechthoek in het model
hieronder. De input van het blok zijn de drie krachten links van het =-teken, de output is de
resultante kracht m*a.
10. Deel het outputsignaal door m en integreer 2 maal zodat de signalen v en x ontstaan: de
blauwe rechthoek.
11. Maak het model af door de signalen van v en x bewerkt terug te koppelen
12. N.B. v verandert van teken, maar door het kwadrateren komt er uit het blok u2 altijd een
positieve waarde. Daarom wordt u vermenigvuldigd met de absolute waarde van u. Ga na
dat het teken van de output dan altijd gelijk blijft aan het teken van de input.
Nog een voorbeeld van een basismodel:
Fig. model van een voorwerp in vrije val vanaf een hoogte van 400 m. Rechtsonder is een automatische stopfunctie
ingebouwd als het voorwerp de grond raakt. Het groen omrande gedeelte kan vervangen worden door het weg te
laten en het integrator1-blok aan te klikken. Zet dan de initial condition op 400.
4.5.2 Voorbeeld 2: Ongeregeld vertrekmodel
Met dit model kunnen we zien wat de binnenluchttemperatuur wordt bij een gegeven buitenluchttemperatuur en warmteafgifte door de radiator. Uitgangspunt is een beginwaarde voor de binnentemperatuur. Hiervoor zullen we 0 oC nemen. Warmtebalansvergelijkingen: Toegevoerde warmte - afgevoerde warmte = toename warmte-inhoud
dt
dTcmuitwinw ..,, =Φ−Φ
uitgewerkt voor een vertrek: Toegevoerde warmte door radiator – transmissieverliezen = toename warmteinhoud van vertrek.
dt
dTcmTTAU i
uirad ..).(. =−−Φ
In het Simulinkmodel wordt gebruikgemaakt van de Laplace-operator dt
ds = .
iuirad TscmTTAU ...).(. =−−Φ
Vervolgens kunnen we Ti expliciet schrijven:
( )smc
TTAUT uiradi
1.
1.).(. −−Φ=
In onderstaand model zijn deze vergelijkingen m.b.v. Simulinkblokken weergegeven. Bouw dit model na. Neem Φrad=400 W, Tu=-10 oC, m*c=200 kJ/kg.K en UA=10 W/K.
Klik op Simulation en stel de eindtijd van de berekening in: 4 dagen= 4*24*3600 s. Klik op de run-knop. En dubbelklik vervolgens op de scope. We gaan nu een eigen Simulinkblok maken voor het vertrek. Dat kunnen we doen door te groeperen. Trek mbv de linkermuisknop ingedrukt een rechthoek volgens onderstaande figuur.
run
Selecteer Edit en Create subsystem. Sleep eventueel blokken en/of lijnen om het geheel ordelijk te krijgen. Door een masker op het subsysteem te zetten en bij drawing commando’s disp(‘vertrek’) in te tikken verschijnt op het blok het woord ‘vertrek’. Het resultaat is dan:
4.5.3 Voorbeeld 3: geregeld vertrekmodel
We gaan nu een regeling aanbrengen. We willen dat er een regeling gebouwd wordt waarbij de verwarming uitgaat wanneer de temperatuur 0,5 K boven de gewenste temperatuur komt en aangaat wanneer de temperatuur 0,5 K onder de gewenste temperatuur komt. Haal uit de Simulinklibrary het blok Relay en bouw onderstaand model:
subsystem
Stel als schakeldifferentie in: 0,5 en –0,5 K. We kunnen net als voor het vertrek gemaskeerde subsystemen maken voor de radiator, de thermostaat en de buitenluchttemperatuur:
Ook kunnen we een subsysteem maken voor de uitvoer: Het resultaat wordt dan:
Zorg er nu voor dat de buitentemperatuur verloopt volgens een sinus tussen –10 en 10 oC. Het resultaat ziet er dan zo uit:
4.5.4 Voorbeeld 4 compressor
We zullen een Simulinkmodel bouwen van een compressor.
We kunnen het model voorstellen volgens onderstaand blokschema. We zoeken in toegepaste energieleer de relevante vergelijkingen:
De eenheden zijn: T in oC, p in kPa, mΦ in kg/s.
Aan de compressor wordt arbeid toegevoerd waardoor de druk en temperatuur stijgt.
We beschouwen een stationaire toestand dus:
inmuitmm ,, Φ=Φ=Φ
Voor de vermogensformule geldt dan:
)()( inuitpminuitmcompr TTchhP −Φ=−Φ=
Hiermee is uitT te bepalen:
pm
compr
inuitc
PTT
Φ+= [1]
De uitgaande druk is te bepalen door de isentropische toestandsverandering te beschouwen.
De uitgaande temperatuur volgt uit:
inT
inm,Φ
inp uitp
uitT
uitm,Φ
Pelek
Compressor:
ηm, ηe, ηis
).(,
,
inuitisinisuit
inuit
inisuit
is TTTTTT
TT−+=⇒
−
−= ηη
Vervolgens kunnen we de uitgaande druk bepalen m.b.v. de wet van Poisson:
Cp
Tk
k
=−1
Houd er rekening mee dat de temperatuur in K uitgedrukt wordt.
Dus
11
,
−−=
n
in
n
in
n
uit
n
isuit
p
T
p
T -->
1,
−
=
k
k
in
isuit
inuitT
Tpp [2]
[3]
Verder hebben we het rendement van de elektromotor en mechanisch rendement waardoor
elekmecompr PP ..ηη= [4]
Stap 2 bouwen simulinkmodel
We maken eerst een omgeving aan. D.w.z. dat we de compressor nog als een lege blackbox
bouwen. Bouw met behulp van blokken uit de simulinkbibliotheek (library) : constanten,
sumblock, busselector en display het onderstaande model. De busselector heeft tot doel om
verwisselen van variabelen binnen het model te voorkomen.
Klik op de lijnen van de ‘Sources’ waar de invoervariabelen toegekend worden en breng labels
aan: q_m, T resp. p.
Druk op ► om te testen. Wanneer je dit model goed gebouwd hebt, krijg je in de 3 displays de
getallen 1, 20 en 100 te zien.
Vervolgens maken we een subsysteem van het binnengedeelte en maskeren dat. Breng op het
masker de tekst compressor aan door commando disp(‘compressor’). Daarin gaan we dadelijk
het compressormodel maken.
We zien dat de variabelen naar en van het blok van de compressor worden toe- of afgevoerd. De
parameters voeren we dadelijk in via een dialoogbox.
We gaan naar het hoofdschema, kiezen bij compressor Edit mask en drukken op parameters.
Voer onder de kolom Prompt de invoertekst in en bij de variable de parameternaam.
Wanneer we op OK drukken en vervangens op het compressorblok krijgen we een dialoogbox te
zien:
We gaan nu het compressorsysteem in:
Pak een Fcn-blok uit de ‘user-defined functions’ bibliotheek en bouw daarmee vergelijking [1]:
Het bouwen van de formule moet zorgvuldig plaatsvinden. Zo worden ronde haakjes ( en )
gebruikt voor wiskundige bewerkingen en worden de rechte haakjes [ en ] gebruikt voor de
vectorvariabelen zoals u[1].
Vergeet niet om het signaal uit het Fcn-blok te labellen!
label T aanbrengen door dubbelklik op lijn!