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
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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!