Beruflich Dokumente
Kultur Dokumente
Scilab/Scicos
Sbastien FURIC
Imagine
Agenda
Basic concepts
Overview
Basic concepts
Structuring knowledge
Structured types
Connectors
Blocks
Models
Functions
Packages
Enumerations
Compound classes
Arrays
Connections
Functions
Data abstraction
Class description
Restricted classes
Elements include:
Visibility modifiers
Scoping rules
constantRealpi=3.1416;
Realx;
Barb;
classBar
Realy=cos(2*pi*time);
endBar;
classBaz
constantReale=2.71828;
endBaz;
importModelica.Math.*;
equation
Baz.e*x=b.y;
endFoo;
Order of declarations
Component declaration
specification
A component declaration is
composed of:
A type specifier
An identifier
An optional comment
Examples of component
declarations
To declare a constant:
constantRealpi=3.141592654;
Type prefix
Component modifications
Class inheritance
Replaceable elements
classElectricalMotor
replaceableIdealResistorR(R=100);
...
endElectricalMotor;
classCircuit
ElectricalMotorm(redeclareMyResistorModelR);
...
endCircuit;
Partial classes
Equation clauses
Conditional equation:
ifmode==Modes.basicthen
x=basicControl.c;
else
x=complexControl.c;
endif;
For equation:
forkin1:nloop
v[k]=R[k]*i[k];
endfor;
Connect equation:
connect(R.p,Src.p);
When equation:
whenx<=0.0then
reinit(a,a);
reinit(v,0);
endwhen;
Function call:
assert(n>0,Modelisnotvalid);
Expressions
Conditional expressions
Event-free expressions
Variability of expresions
constant
parameter
discrete
Examples of equations
Algebraic equation:
v=R*i;
i=v/R;//alessgeneralformulation
Differential equation:
a=g;
der(v)=a;
der(x)=v;//der(der(x))=aisillegal!
Algorithm clauses
Assignment:
y:=2*x;
If statement:
ifx>=0.0then
y:=x;
else
y:=x;
endif;
For statement:
foriin1:nloop
y[i]:=2*x[i];
endfor;
While statement:
whileabs(xy)>epsloop
x:=y;
y:=xf(x)/fdot(x);
endwhile;
When statement:
whenx==0.0then
y:=0;
endwhen;
Continuation statements:
return;
break;
References
http://www.modelica.org
Books:
Principles of Object-Oriented
Modeling and Simulation with
Modelica 2.1, by P. Fritzson
Notion of package
Contents of a package
Many more...
Interfaces of classes
Instantiable classes
packageInterfaces
partialmodelTwoPin
...
endTwoPin;
...
endInterfaces;
...
endMyElectricalLibrary;
Building models
Define connectors
Overview
History
Symbolic manipulation of
mathematical expressions
Inside Modelicac
Symbolic manipulation
Code generation
Compilation modes
Model transformation
Modelicac -c <model.mo>
Compilation process
Library model files
*.mo
*.moc
modelicac -c <model.mo>
Defining connectors
classPin
Realv;
flowReali;
endPin;
Generated C code
...
if(flag==0){
v0=sin(314.16*get_scicos_time());
res[0]=0.01*xd[0]+0.1*x[0]22.0*v0;
res[1]=0.1*xd[1]+100.0*x[1]220.0*v0;
}
...