Studiewijzer MOD 4.1 v1.3

44
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

Transcript of Studiewijzer MOD 4.1 v1.3

Page 1: Studiewijzer MOD 4.1 v1.3

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

Page 2: Studiewijzer MOD 4.1 v1.3

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

Page 3: Studiewijzer MOD 4.1 v1.3

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

Page 4: Studiewijzer MOD 4.1 v1.3

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 )

Page 5: Studiewijzer MOD 4.1 v1.3

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.

Page 6: Studiewijzer MOD 4.1 v1.3

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.

Page 7: Studiewijzer MOD 4.1 v1.3

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.

Page 8: Studiewijzer MOD 4.1 v1.3

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];

Page 9: Studiewijzer MOD 4.1 v1.3

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

Page 10: Studiewijzer MOD 4.1 v1.3

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

Page 11: Studiewijzer MOD 4.1 v1.3

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.

Page 12: Studiewijzer MOD 4.1 v1.3

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.

Page 13: Studiewijzer MOD 4.1 v1.3

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.

Page 14: Studiewijzer MOD 4.1 v1.3

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).

Page 15: Studiewijzer MOD 4.1 v1.3

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)

Page 16: Studiewijzer MOD 4.1 v1.3

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:

Page 17: Studiewijzer MOD 4.1 v1.3

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<<

Page 18: Studiewijzer MOD 4.1 v1.3

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

Page 19: Studiewijzer MOD 4.1 v1.3

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.

Page 20: Studiewijzer MOD 4.1 v1.3

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.

Page 21: Studiewijzer MOD 4.1 v1.3

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)

Page 22: Studiewijzer MOD 4.1 v1.3

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:

Page 23: Studiewijzer MOD 4.1 v1.3

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)

Page 24: Studiewijzer MOD 4.1 v1.3

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);

Page 25: Studiewijzer MOD 4.1 v1.3

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?

Page 26: Studiewijzer MOD 4.1 v1.3

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

Page 27: Studiewijzer MOD 4.1 v1.3

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

Page 28: Studiewijzer MOD 4.1 v1.3

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

Page 29: Studiewijzer MOD 4.1 v1.3

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.

Page 30: Studiewijzer MOD 4.1 v1.3

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.

Page 31: Studiewijzer MOD 4.1 v1.3

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

Page 32: Studiewijzer MOD 4.1 v1.3

(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

Page 33: Studiewijzer MOD 4.1 v1.3

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

Page 34: Studiewijzer MOD 4.1 v1.3

-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:

Page 35: Studiewijzer MOD 4.1 v1.3

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.

Page 36: Studiewijzer MOD 4.1 v1.3

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.

Page 37: Studiewijzer MOD 4.1 v1.3

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

Page 38: Studiewijzer MOD 4.1 v1.3

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

Page 39: Studiewijzer MOD 4.1 v1.3

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:

Page 40: Studiewijzer MOD 4.1 v1.3

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

Page 41: Studiewijzer MOD 4.1 v1.3

).(,

,

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.

Page 42: Studiewijzer MOD 4.1 v1.3

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:

Page 43: Studiewijzer MOD 4.1 v1.3
Page 44: Studiewijzer MOD 4.1 v1.3

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!