Modprod2012 Tutorial1 Peter Fritzson ModelicaTutorial
Modprod2012 Tutorial1 Peter Fritzson ModelicaTutorial
Peter Fritzson
Linköping University, [email protected]
Olena Rogovchenko
Linköping University, [email protected]
Slides
Based on book and lecture notes by Peter Fritzson
Contributions 2004-2005 by Emma Larsdotter Nilsson, Peter Bunus
Contributions 2006-2008 by Adrian Pop and Peter Fritzson
Contributions 2009 by David Broman, Peter Fritzson, Jan Brugård,
and Mohsen Torabzadeh-Tari
Contributions 2010 by Peter Fritzson
Contributions 2011 by Peter F., Mohsen T,. Adeel Asghar
2012-02-07
• OpenModelica
• www.openmodelica.org
• Modelica Association
• www.modelica.org
1
New Introductory
Modelica Book
September 2011
232 pages
Wiley
IEEE Press
For Introductory
Short Courses on
Object Oriented
Mathematical Modeling
2
Outline
Part I Part II
Introduction to Modelica and a Modelica environments
demo example
Detailed Schedule
09:00 - Introduction to Modeling and Simulation
• Start installation of OpenModelica including OMEdit graphic editor
09:10 - Modelica – The Next Generation Modeling Language
09:25 - Exercises Part I (15 minutes)
• Short hands-on exercise on graphical modeling using OMEdit– RL Circuit
09:50 – Part II: Modelica Environments and the OpenModelica Environment
10:10 – Part III: Modelica Textual Modeling
10:15 - Exercises Part IIIa (30 minutes)
• Hands-on exercises on textual modeling using the OpenModelica environment
10:45 – Coffee Break
11:00 - Modelica Discrete Events and Hybrid Properties
11:15 - Exercises Part IIIb (10 minutes)
• Hands-on exercises on textual modeling using the OpenModelica environment
11:25 – Part IV: Components, Connectors and Connections
- Modelica Libraries
11:45 - Graphical Modeling using OpenModelica
12:00 - Exercises Part IV (30 minutes) – DCMotor etc.
• Hands-on exercises on graphical modeling using OpenModelica
3
Software Installation - Windows
• Go to
https://openmodelica.org/index.php/download/down
load-linux and follow the instructions.
4
Software Installation – MAC (requires internet connection)
• Go to
https://openmodelica.org/index.php/download/down
load-mac and follow the instructions or follow the
instructions written below.
• The installation uses MacPorts. After setting up a
MacPorts installation, run the following commands
on the terminal (as root):
• echo rsync://build.openmodelica.org/macports/ >>
/opt/local/etc/macports/sources.conf # assuming you installed into /opt/local
• port selfupdate
• port install openmodelica-devel
Part I
5
Modelica Background: Stored Knowledge
6
What is Modelica?
• Robotics
• Automotive
• Aircrafts
• Satellites
• Power plants
• Systems biology
What is Modelica?
7
What is Modelica?
8
Modelica Acausal Modeling
• Multi-Domain Modeling
• Visual acausal hierarchical component modeling
• Typed declarative equation-based textual language
• Hybrid modeling and simulation
9
What is Special about Modelica?
Multi-Domain
Modeling
Acausal model
(Modelica)
Causal
block-based
model
(Simulink)
10
What is Special about Modelica?
i
Component
qddRef
qdRef qRef k1 r3Control
r3Motor r3Drive1
cut joint
tn
axis6
Modeling
1 1
i 1
S S
qd axis5
qdRef Kd
S
0.03 rel
Jmotor=J joint=0
spring=c axis4
S
qRef pSum Kv sum w Sum rate2 rate3 iRef gear=i
fric=Rv0
+1 b(s) 340.8
0.3
- +1 - a(s) S
axis3
Srel = n*transpose(n)+(identity(3)-
Rd2=100 n*transpose(n))*cos(q)- axis1
Ri=10
skew(n)*sin(q); - -
-
wrela = n*qd; +
diff +
+
pow er
zrela = n*qdd; OpI
Sb = Sa*transpose(Srel);
Vs
Rd4=100
r0b = r0a; emf
Rd3=100
vb = Srel*va; g3
wb = Srel*(wa + wrela); y
ab = Srel*aa;
g1 x
inertial
zb = Srel*(za + zrela + cross(wa, wrela));
hall2
hall1 w r
11
What is Special about Modelica?
Continuous-time
Discrete-time
Typed
Declarative time
Hybrid
Equation-based Modeling
Textual Language
Causality
Systems
Derivation
Definition Modeling of
Subsystems (manual derivation of
System
Decomposition input/output relations) Implementation Simulation
Proprietary
Code
Block Diagram
Modelica
12
Modelica vs Simulink Block Oriented Modeling
Simple Electrical Model
Modelica: Keeps the Simulink:
Physical model – physical Signal-flow model – hard to
easy to understand structure understand
R1=10 R2=100
sum2
p
n n +1
+1
AC=220
n n
p
G
13
Multi-Domain (Electro-Mechanical) Modelica Model
The following equations are automatically derived from the Modelica model:
14
Model Translation Process to Hybrid DAE to Code
Modelica
Graphical Editor Modelica Modelica
Modelica Model Source code
Textual Editor Modelica Model
Frontend Translator
Modeling Flat model Hybrid DAE
Environment Analyzer
"Middle-end"
Sorted equations
Optimizer
Optimized sorted
equations
Backend Code generator
C Code
C Compiler
Executable
Simulation
29 Copyright © Open Source Modelica Consortium
Hello
Developed
by MathCore
for Siemens
Courtesy of Siemens Industrial Turbomachinery AB
15
Modelica in Automotive Industry
Modelica in Avionics
16
Modelica in Biomechanics
17
Brief Modelica History
Modelica Conferences
• The 1st International Modelica conference October, 2000
• The 2nd International Modelica conference March 18-19, 2002
• The 3rd International Modelica conference November 5-6, 2003 in
Linköping, Sweden
• The 4th International Modelica conference March 6-7, 2005 in Hamburg,
Germany
• The 5th International Modelica conference September 4-5, 2006 in Vienna,
Austria
• The 6th International Modelica conference March 3-4, 2008 in Bielefeld,
Germany
• The 7th International Modelica conference Sept 21-22, 2009 in Como, Italy
• The 8th International Modelica conference March 20-22, 2011 in Dresden,
Germany
• Coming: The 9th International Modelica conference Sept 3-5, 2012 in
Munich, Germany
18
Exercises Part I
Hands-on graphical modeling
(15 minutes)
R=10
R=100 L=1
L=0.1
A
C
19
Exercises Part I – OMEdit Instructions (Part I)
• Start OMEdit from the Program menu under OpenModelica
• Go to File menu and choose New, and then select Model.
• E.g. write RLCircuit as the model name.
• For more information on how to use OMEdit, go to Help and choose
User Manual or press F1.
20
Part II
Dymola
21
Simulation X
• ITI
• Germany
• Mechatronic systems
• www.simulationx.com
MapleSim
• Maplesoft
• Canada
• Recent Modelica tool on the
market
• Integrated with Maple
• www.maplesoft.com
22
MathModelica – MathCore / Wolfram Research
• Wolfram Research
• USA, Sweden
• General purpose
• Mathematica integration
• www.wolfram.com
• www.mathcore.com
Mathematica
Simulation and
analysis
Courtesy Car model graphical view
Wolfram
Research
23
OpenModelica (Part I)
• OpenModelica
• Open Source Modelica
Consortium (OSMC)
• Sweden and other countries
• Open source
• www.openmodelica.org
24
OSMC – Open Source Modelica Consortium
40 organizational members February 2012
Founded Dec 4, 2007
Open-source community services
• Website and Support Forum
• Version-controlled source base
• Bug database
• Development courses
• www.openmodelica.org
Code Statistics
25
OMNotebook Electronic Notebook with DrModelica
• Primarily for teaching
• Interactive electronic book
• Platform independent
Commands:
• Shift-return (evaluates a cell)
• File Menu (open, close, etc.)
• Text Cursor (vertical), Cell
cursor (horizontal)
• Cell types: text cells &
executable code cells
• Copy, paste, group cells
• Copy, paste, group text
• Command Completion (shift-
tab)
26
OpenModelica MDT – Eclipse Plugin
• Browsing of packages, classes, functions
• Automatic building of executables;
separate compilation
• Syntax highlighting
• Code completion,
Code query support for developers
• Automatic Indentation
• Debugger
(Prel. version for algorithmic subset)
Identifier Info on
Hovering
Code Outline for
easy navigation within
54
Modelica files
Copyright © Open Source Modelica Consortium
54
27
The OpenModelica MDT Debugger (Eclipse-based)
Using Japanese Characters
Examples of Simulation
Visualization
Simulation Control
Plot View
Requirements
Evaluation View
in ModelicaML
MaxLevel
Liquid
Source
Level h
Level h Domain-Specific
Visualization View
Tank 1 Tank 2
28
OMOptim – Optimization (1) Optimized
parameters
Model structure Model Variables Optimized
Objectives
29
General Tool Interoperability & Model Exchange
Functional Mock-up Interface (FMI)
The FMI development is part of the MODELISAR 29-partner project
• FMI development initiated by Daimler
• Improved Software/Model/Hardware-in-the-Loop Simulation, of physical
models and of AUTOSAR controller models from different vendors for
automotive applications with different levels of detail.
• Open Standard
• 14 automotive use cases for evaluation
• > 10 tool vendors are supporting it
etc.
Feedback
System
Simulation
Business Requirements Model-Driven Compilation
Process Capture Design & Code Gen
Control (PIM) (PSM)
Software &
Syst Product
Process Requirements Product Platform
models models models models
30
OpenModelica – ModelicaML UML Profile
SysML/UML to Modelica OMG Standardization
tank-height is 0.6m
31
OpenModelica – Recent Developments and Plans
• January 2012. OpenModelica 1.8.1 release with operator
overloading, faster compilation, ModelicaML with valuebindings
• 2012. Continued high priority on better support for the Modelica
standard library.
• Spring 2012. Support for larger models and improved simulation.
• February 2012. Shifting to bootstrapped OpenModelica compiler
for development.
• March 2011. Subset Fluid library flattening and simulating
• March 2012. Thermopower library simulating
• March 2011. Further improved support for MultiBody simulation.
• April 2011. Most of Fluid library flattening
• April-May 2011. Most of Media and Fluid libraries simulating
• May-June 2012. Integrated Modelica debugger.
Part III
Typed
Declarative Hybrid
Equation-based Modeling
Textual Language
32
Acausal Modeling
Visual
Component
Level
33
Simple model - Hello World!
0.8
simulate(HelloWorld, stopTime = 2)
0.6
plot(x)
0.4
0.2
0.5 1 1.5 2
34
A Simple Rocket Model
thrust mass gravity
Rocket acceleration
mass
thrust
mass massLossRate abs thrust
apollo13
mg altitude velocity
velocity acceleration
declaration
new model class Rocket "rocket class" comment
parameters (changeable parameter String name;
before the simulation) Real mass(start=1038.358);
Real altitude(start= 59404);
floating point Real velocity(start= -2003); start value
type Real acceleration;
Real thrust; // Thrust force on rocket
Real gravity; // Gravity forcefield
parameter Real massLossRate=0.000277; name + default value
equation
(thrust-mass*gravity)/mass = acceleration; mathematical
der(mass) = -massLossRate * abs(thrust); equation (acausal)
der(altitude) = velocity;
differentiation with der(velocity) = acceleration;
regards to time end Rocket;
35
Moon Landing
Rocket apollo13
thrust moon . g moon .mass
apollo . gravity
mg
apollo .altitude moon .radius 2
altitude
CelestialBody
class MoonLanding
parameter Real force1 = 36350;
parameter Real force2 = 1308;
only access protected
inside the class parameter Real thrustEndTime = 210;
parameter Real thrustDecreaseTime = 43.2;
access by dot public
notation outside Rocket apollo(name="apollo13");
the class CelestialBody moon(name="moon",mass=7.382e22,radius=1.738e6);
equation
apollo.thrust = if (time < thrustDecreaseTime) then force1
else if (time < thrustEndTime) then force2
else 0;
apollo.gravity=moon.g*moon.mass/(apollo.altitude+moon.radius)^2;
end MoonLanding;
30000
50 100 150 200
25000
-100
20000
-200
15000
10000 -300
5000 -400
36
Specialized Class Keywords
• Classes can also be declared with other keywords, e.g.: model, record,
block, connector, function, ...
• Classes declared with such keywords have specialized properties
• Restrictions and enhancements apply to contents of specialized classes
• After Modelica 3.0 the class keyword means the same as model
Modelica Functions
function sum
input Real arg1;
input Real arg2;
output Real result;
algorithm
result := arg1+arg2;
end sum;
37
Function Call – Example Function with for-loop
Inheritance
parent class to Color
38
Multiple Inheritance
class ColoredPointWithoutInheritance
Real x;
Real y, z;
parameter Real red = 0.2; Equivalent to
parameter Real blue = 0.6;
Real green;
equation
red + blue + green = 1;
end ColoredPointWithoutInheritance;
class Rectangle
extends VerticalLine;
extends HorizontalLine;
end Rectangle;
39
Simple Class Definition
...
Real altitude(start= 59404);
...
40
The Moon Landing - Example Using Inheritance (I)
Rocket
apollo13 thrust
inherited
parameters
model MoonLanding
parameter Real force1 = 36350;
parameter Real force2 = 1308;
parameter Real thrustEndTime = 210;
parameter Real thrustDecreaseTime = 43.2;
Rocket apollo(name="apollo13", mass(start=1038.358) );
CelestialBody moon(mass=7.382e22,radius=1.738e6,name="moon");
equation
apollo.thrust = if (time<thrustDecreaseTime) then force1
else if (time<thrustEndTime) then force2
else 0;
apollo.gravity =moon.g*moon.mass/(apollo.altitude+moon.radius)^2;
end Landing;
41
Inheritance of Protected Elements
If an extends-clause is preceded by the protected keyword,
all inherited elements from the superclass become protected
elements of the subclass
class ColoredPoint
class Point protected
Real x; extends Color;
class Color
Real y,z; public
Real red;
end Point; extends Point;
Real blue;
Real green; end ColoredPoint;
equation
red + blue + green = 1; Equivalent to
end Color;
class ColoredPointWithoutInheritance
The inherited fields from Point keep Real x;
Real y,z;
their protection status since that protected Real red;
extends-clause is preceded by protected Real blue;
public protected Real green;
equation
red + blue + green = 1;
A protected element cannot be end ColoredPointWithoutInheritance;
accessed via dot notation!
83 Copyright © Open Source Modelica Consortium
Exercises Part II
(30 minutes)
42
Exercises Part II
43
Exercise 2.1 – Hello World!
0.4
0.2
0.5 1 1.5 2
simulate(VanDerPol,stopTime = 25)
1
plotParametric(x,y)
-2 -1 1 2
-1
-2
44
Exercise 2.3 – DAE Example
1.0 time
0.2 0.4 0.6 0.8 1
0.95
0.90
45
Exercise 2.5 – Functions
46
Hybrid Modeling
Hybrid modeling = continuous-time + discrete-time modeling
Continuous-time Real x;
Voltage v;
Current i;
Discrete-time
discrete Real x;
Integer i;
Boolean b;
time
Events
• A point in time that is instantaneous, i.e., has zero duration
• An event condition so that the event can take place
• A set of variables that are associated with the event
• Some behavior associated with the event,
e.g. conditional equations that become active or are deactivated at
the event
Event creation – if
47
Event creation – when
when-equations
when <conditions> then
<equations> time
end when; event 1 event 2 event 3
sample(t0,d)
The call sample(t0,d) returns
true and triggers events at times true
t0+i*d, where i=0,1, …
false time
t0 t0+d t0+2d t0+3d t0+4d
Variables need to be
discrete
model SamplingClock Creates an event
Integer i;
discrete Real r;
after 2 s, then
equation each 0.5 s
when sample(2,0.5) then
i = pre(i)+1;
r = pre(r)+0.3;
end when;
end SamplingClock; pre(...) takes the
previous value
before the event.
48
Reinit - discontinuous changes
The value of a continuous-time state variable can be instantaneously
changed by a reinit-equation within a when-equation
Initial conditions
Reinit ”assigns”
continuous-time variable
velocity a new value
49
Part IV
50
Connectors and Connector Classes
51
Physical Connector
connect-equations
Connections between connectors are realized as equations in Modelica
connect(connector1,connector2)
+ v v +
pin1 pin2
i i
Pin pin1,pin2;
//A connect equation
//in Modelica:
connect(pin1,pin2);
Corresponds to pin1.v = pin2.v;
pin1.i + pin2.i =0;
52
Connection Equations
Pin pin1,pin2;
//A connect equation
//in Modelica
connect(pin1,pin2);
Corresponds to pin1.v = pin2.v;
pin1.i + pin2.i =0;
v1 v2 v3 vn
Each primitive connection set of flow variables is used to generate
sum-to-zero equations of the form:
i1 i2 ( ik ) in 0
53
Electrical Components
model Resistor ”Ideal electrical resistor”
extends TwoPin; p.i n.i
parameter Real R; +
equation
p.v n.v
R*i = v; v
end Resistor;
model Source
extends TwoPin; v(t)
p.i n.i
parameter Real A,w;
+
equation
v = A*sin(w*time); p.v n.v
end Resistor;
model Ground
Pin p; p.v p.i
equation
p.v = 0;
end Ground;
54
Resistor Circuit
i1 i2
n R1 p p R2 n
v1 v2
v3
p R3 n
i3
model ResistorCircuit
Resistor R1(R=100);
Resistor R2(R=200);
Resistor R3(R=300);
equation R1.p.v = R2.p.v;
connect(R1.p, R2.p); Corresponds to
R1.p.v = R3.p.v;
connect(R1.p, R3.p); R1.p.i + R2.p.i + R3.p.i = 0;
end ResistorCircuit;
55
Modelica Standard Library cont’
Modelica.Blocks
Library
Continuous
Examples:
56
Modelica.Electrical
Examples:
V2
R2 R4
Gnd9
C2 Gnd3 Gnd6 C4
R1 Transistor1 Transistor2 R3
V1 C1 I1 C5 C3 Gnd4
Modelica.Mechanics
57
Modelica.Stategraph
58
Some Commercial Libraries
• Powertrain
• SmartElectricDrives
• VehicleDynamics
• AirConditioning
• HyLib
• PneuLib
• CombiPlant
• HydroPlant
• …
ex ac iner vsen
model Generator
Modelica.Mechanics.Rotational.Accelerate ac;
Modelica.Mechanics.Rotational.Inertia iner;
Modelica.Electrical.Analog.Basic.EMF emf(k=-1);
Modelica.Electrical.Analog.Basic.Inductor ind(L=0.1);
Modelica.Electrical.Analog.Basic.Resistor R1,R2;
Modelica.Electrical.Analog.Basic.Ground G;
Modelica.Electrical.Analog.Sensors.VoltageSensor vsens;
Modelica.Blocks.Sources.Exponentials ex(riseTime={2},riseTimeConst={1});
equation
connect(ac.flange_b, iner.flange_a); connect(iner.flange_b, emf.flange_b);
connect(emf.p, ind.p); connect(ind.n, R1.p); connect(emf.n, G.p);
connect(emf.n, R2.n); connect(R1.n, R2.p); connect(R2.p, vsens.n);
connect(R2.n, vsens.p); connect(ex.outPort, ac.inPort);
end Generator;
59
DCMotor Model Multi-Domain (Electro-Mechanical)
model DCMotor
Resistor R(R=100);
Inductor L(L=100);
VsourceDC DC(f=10);
Ground G;
EMF emf(k=10,J=10, b=2);
Inertia load;
equation R L
connect(DC.p,R.n); emf
connect(R.p,L.n); DC
connect(L.p, emf.n);
connect(emf.p, DC.n); load
connect(DC.n,G.p);
connect(emf.flange,load.flange); G
end DCMotor;
Exercises Part IV
Graphical Modeling Exercises
using
OpenModelica
60
Graphical Modeling - Using Drag and Drop Composition
61
Multi-Domain (Electro-Mechanical) Modelica Model
The following equations are automatically derived from the Modelica model:
62
Exercise 3.1
Exercise 3.2
• If there is enough time: Add a torsional spring to the
outgoing shaft and another inertia element. Simulate
again and see the results. Adjust some parameters to
make a rather stiff spring.
63
Exercise 3.3
• If there is enough time: Add a PI controller to the system
and try to control the rotational speed of the outgoing shaft.
Verify the result using a step signal for input. Tune the PI
controller by changing its parameters in OMEdit.
64
Learn more…
• OpenModelica
• www.openmodelica.org
• Modelica Association
• www.modelica.org
• Books
• Principles of Object Oriented Modeling and Simulation with
Modelica 2.1, Peter Fritzson
http://eu.wiley.com/WileyCDA/WileyTitle/productCd-
0471471631.html
• Modeling and Simulation of Technical and Physical
Systems with Modelica. Peter Fritzson.
http://eu.wiley.com/WileyCDA/WileyTitle/productCd-
111801068X.html
• Introduction to Modelica, Michael Tiller
Summary
Typed
Declarative Hybrid
Textual Language Thanks for listening! Modeling
65