MetaModelica A Unified Equation-Based S emantical and Mathematical - - PowerPoint PPT Presentation
MetaModelica A Unified Equation-Based S emantical and Mathematical - - PowerPoint PPT Presentation
MetaModelica A Unified Equation-Based S emantical and Mathematical Modeling Language Adrian Pop and Peter Fritzson Programming Environment Laboratory Department of Computer and Information S cience Linkping University 2006-09-14 JMLC
2
Outline
Modelica
Introduction Language properties Example
MetaModelica
Motivation MetaModelica extensions to Modelica Example
Future Work Conclusions
3
Modelica – General Formalism to Model Complex S ystems
Robotics Automotive Aircrafts S
atellites
Biomechanics Power plants Hardware-in-the-loop,
real-time simulation
etc
4
Modelica – The Next Generation Modeling Language
Declarat ive language
Equations and mathematical functions allow acausal
modeling, high level specification, increased correctness
Mult i-domain modeling
Combine electrical, mechanical, thermodynamic,
hydraulic, biological, control, event, real-time, etc...
Everyt hing is a class
S
trongly typed obj ect-oriented language with a general class concept, Java & Matlab like syntax
Visual component programming
Hierarchical system architecture capabilities
Efficient , nonpropriet ary
Efficiency comparable to C; advanced equation
compilation, e.g. 300 000 equations
5
Modelica Language Properties
Declarat ive and Obj ect -Orient ed Equat ion-based; continuous and discrete equations Parallel process modeling of concurrent applications,
according to synchronous data flow principle
Funct ions with algorithms without global side-effects
(but local data updates allowed)
Type syst em inspired by
Abadi/ Cardelli (Theory of Obj ects)
Everyt hing is a class – Real, Integer, models,
functions, packages, parameterized classes....
6
The Form - Equations
Equations were used in the third millenium B.C. Equality sign was introduced by Robert Recorde in 1557 Newton (Principia, vol. 1, 1686) still wrote text:
“The change of motion is proportional to the motive force impressed; ...”
CSSL (1967) introduced special form of “equation”: variable = expression v = INTEG(F) / m Programming languages usually do not allow equations
∑
= ⋅
i
F v m dt d ) (
Modelica Background
7
Modelica Acausal Modeling Semantics
- What is acausal modeling/design?
- Why does it increase reuse?
The acausality makes Modelica classes more reusable than traditional classes containing assignment statements where the input-output causality is fixed.
- Example: a resistor equation:
R*i = v; can be used in three ways: i := v/R; v := R*i; R := v/i;
8
Modelica - Reusable Class Libraries
Info
R= C= L= G AC= DC= Vs Is S D T
- +
Op V i E : 1
Info
shaft3DS=
S
shaft3D= shaftS=
S
shaft= gear1= gear2= planetary= diff= sun= planet= ring= bearing fixTooth S moveS move torque c= d= fric= fricTab clutch= converter r w a t fixedBase
S
state
Info
inertial bar= body= bodyBar= cylBody= bodyShape= revS=
S
prismS=
S
screw S=
S
cylS=
S
univS
S
planarS= S sphereS S freeS S rev= prism= screw = cyl= univ planar= sphere free C barC= barC2= x y C sphereC c= d= cSer= force torque lineForce= lineTorque= sensor s sd lineSensor Library advanced Library drive Library translation
9
Graphical Modeling - Drag and Drop Composition
10
inertial x y axis1 axis2 axis3 axis4 axis5 axis6
r3Drive1 1 r3Motor r3Control qdRef 1 S qRef 1 S k2 i k1 i qddRef
cut joint
l
qd
tn
Jmotor=J gear=i spring=c fric=Rv0
S
rel joint=0
S
Vs
- +
diff
- +
pow er emf La=(250/(2*D*w m)) Ra=250 Rd2=100 C=0.004*D/w m
- +
OpI Rd1=100 Ri=10 Rp1=200 Rp2=50 Rd4=100 hall2 Rd3=100 g1 g2 g3 hall1 g4 g5 r w
qd q
rate2 b(s) a(s) rate3 340.8 S rate1 b(s) a(s) tacho1 PT1 Kd 0.03 w Sum
- sum
+1 +1 pSum
- Kv
0.3 tacho2 b(s) a(s)
q
qd
iRef qRef qdRef Srel = n*n' + (identity(3) - n*n')*cos(q) - skew(n)*sin(q); wrela = n*qd; zrela = n*qdd; Sb = Sa*Srel'; r0b = r0a; vb = Srel*va; wb = Srel*(wa + wrela); ab = Srel*aa; zb = Srel*(za + zrela + cross(wa, wrela)); fa = Srel'*fb; ta = Srel'*tb;
Hierarchical Composition Diagram for a Model of a Robot
11
Multi-Domain Modelica Model - DCMotor
A DC motor can be thought of as an electrical circuit
which also contains an electromechanical component.
model DCMotor Resistor R(R=100); Inductor L(L=100); VsourceDC DC(f=10); Ground G; ElectroMechanicalElement EM(k=10,J=10, b=2); Inertia load; equation connect(DC.p,R.n); connect(R.p,L.n); connect(L.p, EM.n); connect(EM.p, DC.n); connect(DC.n,G.p); connect(EM.flange,load.flange); end DCMotor
load EM DC G R L
12
Modelica compilation stages
Modelica Source Code Translator Analyzer Optimizer Code Generator C Compiler Simulation
Modelica model Flat model Topologically sorted equations Optimized sorted equations C code Executable
13
Corresponding DCMotor Model Equations
The following equations are automatically derived from the Modelica model:
(load component not included)
14
Connector Classes, Components and Connections
Keyword flow indicates that currents of connected pins sums to zero. A connect statement in Modelica corresponds to connector Pin Voltage v; flow Current i; end Pin;
connect(Pin1,Pin2)
Connection between Pin1 and Pin2
Pin1.v = Pin2.v Pin1.i + Pin2.i = 0
15
Common Component Structure as SuperClass
model TwoPin ”Superclass of elements with two electrical pins” Pin p,n; Voltage v; Current i; equation v = p.v – n.v; 0 = p.i + n.i; i = p.i; end TwoPin;
16
Electrical Components Reuse TwoPin SuperClass
model Inductor ”Ideal electrical inductor” extends TwoPin; parameter Real L ”Inductance”; equation L*der(i) = u end Inductor; model Resistor ”Ideal electrical resistor” extends TwoPin; parameter Real R ”Resistance”; equation R*i = u end Resistor;
17
Corresponding DCMotor Model Equations
The following equations are automatically derived from the Modelica model:
(load component not included)
18
MetaModelica - Context
S
yntax - there are many efficient parser generator tools
lex (flex), yacc (bison), ANTLR, Coco, etc.
S
emant ics:
t here are no st andard efficient and easy t o use
compiler-compiler t ools
19
MetaModelica - Motivation
Can we adapt the Modelica equation-based style
to define semantics of programming languages?
Answer: Yes!
MetaModelica is j ust a part of the answer
executable language specification based on
a model (abstract syntax tree) semantic functions over the model
elaboration and typechecking translation meta-programming transformation etc.
Further improvement – more reuse of language
specification parts when building specifications for a new language (Future Work)
20
MetaModelica - Idea
We started from
The Relational Meta-Language (RML)
A system for building executable natural semantics specifications Used to specify Java, Pascal-subset, C-subset, Mini-ML, etc.
The OpenModelica compiler for Modelica specified in RML
Idea: int egrat e RML met a-modeling and met a-
programming facilit ies wit hin OpenModelica by ext ending t he Modelica language. The not ion of equat ion is used as t he unifying feat ure
Now we have
The MetaModelica language The Modelica executable language specification (OpenModelica
compiler) in MetaModelica (~114232 lines of code)
Meta-programming facilities for Modelica
21
MetaModelica extensions to Modelica (I)
Modelica
classes, models, records, functions, packages behaviour is defined by equations or/ and functions equations
differential equations algebraic equations partial differential equations difference equations conditional equations
MetaModelica extensions
local equations pattern equations match expressions lists, tuples, option and uniontypes
22
MetaModelica extensions to Modelica (II)
pattern equations
unbound variables get their value by unification
Env.BOOLVAL(x,y) = eval_something(env, e);
match expressions
pattern matching case rules
pattern := match expression opt ional-local-declarat ions case pat t ern-expression opt -local-declarat ions
- pt ional-local-equat ions then value-expression;
case ... ... else opt ional-local-declarat ions
- pt ional-local-equat ions then value-expression;
end match;
23
MetaModelica – Example (I)
package ExpressionEvaluator // abstract syntax declarations ... // semantic functions ... end ExpressionEvaluator;
24
package ExpressionEvaluator // abstract syntax declarations // semantic functions ... end ExpressionEvaluator;
MetaModelica – Example (II)
uniontype Exp record RCONST Real x1; end RCONST; record PLUS Exp x1; Exp x2; end PLUS; record SUB Exp x1; Exp x2; end SUB; record MUL Exp x1; Exp x2; end MUL; record DIV Exp x1; Exp x2; end DIV; record NEG Exp x1; end NEG; end Exp; Expression: 12+5*13 Representation:
PLUS( RCONST(12), MUL( RCONST(5), RCONST(13) ) ) PLUS MUL RCONST RCONST RCONST 12 5 13
25
MetaModelica – Example (III)
package ExpressionEvaluator // abstract syntax declarations ... // semantic functions
function eval input Exp in_exp;
- utput Real out_real;
algorithm
- ut_real := match in_exp
local Real v1,v2,v3; Exp e1,e2; case RCONST(v1) then v1; case ADD(e1,e2) equation v1 = eval(e1); v2 = eval(e2); v3 = v1 + v2; then v3; case SUB(e1,e2) equation v1 = eval(e1); v2 = eval(e2); v3 = v1 - v2; then v3; case MUL(e1,e2) equation v1 = eval(e1); v2 = eval(e2); v3 = v1 * v2; then v3; case DIV(e1,e2) equation v1 = eval(e1); v2 = eval(e2); v3 = v1 / v2; then v3; case NEG(e1) equation v1 = eval(e1); v2 = -v1; then v2; end match; end eval;
end ExpressionEvaluator;
26
Modelica/ MetaModelica Development Tooling (MDT)
S
upports textual editing of Modelica/ MetaModelica code as an Eclipse plugin
Was created to ease the development of the
OpenModelica development (114232 lines of code) and to support advanced Modelica library development
It has most of the functionality expected from a
Development Environment
code browsing code assistance code indentation code highlighting error detection automated build of Modelica/ MetaModelica proj ects debugging
27
Modelica/ MetaModelica Development Tooling Code Assistance on function calling.
28
Conclusions and Future Work
MetaModelica a language that integrates modeling
- f
physical systems programming language semantics
at the equation level MetaModelica is a step towards reusable libraries
- f specifications for programming language