Sie sind auf Seite 1von 11

Systemsimulation

Abfragen, Bedingungen und Schleifen

Yannick Fürst & Leo Keilmann


24. Juli 2018
Hermann-Rietschel-Institut

TU Berlin
Hinweise (Boolean)

Boolean Definiert eine Boolean-Variable (true/false)

Boolean var(start=true, fixed=true);

Diskretes Verhalten — Leo Keilmann 1/6


Abfragen, Bedingungen und
Schleifen
if-Bedingung

Mehrzeilig

if <cond1> then
// <expr1> used if <cond1>==true
elseif <condn> then
// <exprn> used if all previous conditions are false and
↪ <condn>==true
else
// <exprn+1> used otherwise
end if;

Einzeilig

exprLHS = if <cond1> then <expr1RHS> elseif <condn> then


↪ <exprnRHS> else <exprn+1RHS>;

Diskretes Verhalten — Leo Keilmann 2/6


if-Bedingung

Achtung
Zu jeder Zeit der Simulation muss unabhängig von der
derzeit aktiven Teilabfrage der if-Bedingung die Anzahl der
Variablen gleich der Anzahl an Gleichungen sein!
Dies gilt auch bei der Deklartion von Variablen. Variablen die
aufgrund einer if-Bedingung im equation -Block nicht
genutzt werden, müssen entsprechend bei der Deklartion
ebenfalls durch eine if-Bedingungen zu- bzw. abgeschaltet
werden.

Diskretes Verhalten — Leo Keilmann 2/6


when-Bedingung

when <cond1> then


// <expr1> used when <cond1>==true
elsewhen <cond2> then
// <expr2> used when <cond2>==true
end when;

Hinweis
Eine when -Bedingung wird nur für den Moment aktiv, in der
der auslösende Ausdruck ( <condi> ) wahr wird. Hingegen
werden bei der if -Bedingung die Anweisungen für den
gesamten Zeitraum ausgeführt, in der der auslösende
Ausdruck wahr ist.

Diskretes Verhalten — Leo Keilmann 3/6


when-Bedingung

Achtung
Die folgenden Abfragen sind nicht identisch! Während die
Variante in Vektorschreibweise {<cond1>, <cond2>}
zweimal aktiv wird (Triggern: wenn <cond1> wahr ist und
wieder, wenn <cond2> wahr ist), wird bei der Variante mit
or die Bedingung einmal wahr (entweder <cond1> oder
<cond2>) und behält anschließend den wahr-Zustand.

when {<cond1>, <cond2>}


when <cond1> or <cond2> then
↪ then
...
...
end when;
end when;

Diskretes Verhalten — Leo Keilmann 3/6


while-Schleife

while <cond> loop


...
end while;

Achtung
While-Schleifen werden so lange ausgeführt, bis die
Bedingung <cond> wahr wird. Wird die Bedingung niemals
wahr, wird die Schleife und somit die Berchnung niemals
beendet!

Diskretes Verhalten — Leo Keilmann 4/6


for-Schleife

Aufbau

for <var> in <range> loop


...
end for;

Möglichkeiten zur Implementierung

for i in 1:10 loop // looping over a range of integers 1,


↪ 2,...,10
for i in 1.0 : 1.5 : 5.5 loop // looping over a range of reals
↪ 1.0, 2.5, 4.0, 5.5
for i in {1, 3, 6, 7} loop // looping over a collection of
↪ values 1, 3, 6, 7

Diskretes Verhalten — Leo Keilmann 5/6


Fragen?
Literaturangaben

Fritzon, Peter (2015). Principles of Object-Oriented Modeling


and Simulation with Modelica 3.3: A Cyber-Physical
Approach. Wiley-IEEE Press.
Tiller, Michael M. (2015). Modelica by Example.
http://book.xogeny.com.
Tiller, Michael und Derek Cheng (20. Juli 2017). Modelica Web
Reference. url: http://modref.xogeny.com/.

Diskretes Verhalten — Leo Keilmann

Das könnte Ihnen auch gefallen