多领域物理统一建模语言与MWORKS实践 课件 4-1-Modelica语法详解-Modelica文本一般结构及语法概览(1.5学时)_第1页
多领域物理统一建模语言与MWORKS实践 课件 4-1-Modelica语法详解-Modelica文本一般结构及语法概览(1.5学时)_第2页
多领域物理统一建模语言与MWORKS实践 课件 4-1-Modelica语法详解-Modelica文本一般结构及语法概览(1.5学时)_第3页
多领域物理统一建模语言与MWORKS实践 课件 4-1-Modelica语法详解-Modelica文本一般结构及语法概览(1.5学时)_第4页
多领域物理统一建模语言与MWORKS实践 课件 4-1-Modelica语法详解-Modelica文本一般结构及语法概览(1.5学时)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Modelica语法详解Modelica文本一般结构及语法概览计算学部-工业软件中心哈工大重庆研究院-无人装备中心曲明成

博士/副教授

qumingcheng@2025年4月23日问题:如何对以上物理现象进行仿真分析?自由落体弹跳小球先来看两个现象自由落体classFall"自由落体"

Realg=9.81;

Realh(start=10);

Realv;equation

-v=der(h);

der(v)=g;endFall;物理现象数学原理代码实现仿真求解结果查看《两个铁球同时落地》:伽利略研究了亚里士多德的“物体落下的速度和它的质量成正比”这个观点后产生了质疑。让手中两个质量不等的铁球同时从比萨斜塔顶垂直自由落下,两个球同时着地。在自由落体的基础上,小球在触地瞬间,重置速度即可class

Ball"弹跳小球"constantModelica.SIunits.Accelerationg=9.8

"重力加速度";

parameter

Realcoef=0.9

"弹性系数";

parameter

Modelica.SIunits.Heighth0=10

"初始高度";

Modelica.SIunits.Heighth(start=h0)"小球高度";

Modelica.SIunits.Velocityv"小球速度";

Booleanflying"是否运动";equation

flying=not(h<=0

andv<=0);

der(v)=ifflyingthen-gelse

0;v=der(h);

whenh<=0

then

reinit(v,-coef*v);

endwhen;endBall;物理现象数学原理代码实现仿真求解结果查看弹跳小球

Modelica代码包含哪些要素?如何构建完备的Modelica代码?目录1.

Modelica文本一般结构2.Modelica语法概览1.Modelica文本一般结构classFall"自由落体"

Realg=9.81;

Realh(start=10);

Realv;equation

v=der(h);

der(v)=-g;endFall;classname“模型描述”Declaration1Declaration2…equationequation1equation1…endname;class

Ball"弹跳小球"finalparameter

Modelica.SIunits.Accelerationg=9.8

"重力加速度";

parameter

Realcoef=0.9

"弹性系数";

parameter

Modelica.SIunits.Heighth0=10

"初始高度";

Modelica.SIunits.Heighth(start=h0)"小球高度";

Modelica.SIunits.Velocityv"小球速度";

Booleanflying"是否运动";equation

flying=not(h<=0

andv<=0);

der(v)=ifflyingthen-gelse

0;v=der(h);

whenh<=0

then

reinit(v,-coef*v);

endwhen;endBall;开始模型定义:class+模型名称+

“模型描述”声明模型参数声明模型变量声明继承或被调用的模型(如接口)通过方程或算法,描述模型行为结束模型定义:end+模型名称;两个模型代码有什么共同之处?classname“模型描述”…endname;1.1Modelica文本一般结构-模型的开始与结束类型是对模型基本属性的描述Modelica语言定义了10种特化类Class类package包record记录function函数type类型model模型connector连接器block框图operatorrecord运算符记录operator运算符operatorfunction运算符函数modelExample1“示例1”…end

Example1;connectorExample2“示例2”…end

Example2;其他类型定义…开始模型定义:类型+模型名称+“模型描述”…结束模型定义:end+模型名称;1.2Modelica文本一般结构-变量声明classname“模型描述”

VariableDeclarations…endname;开始模型定义:类型+模型名称+“模型描述”变量声明…结束模型定义:end+模型名称;变量定义一般格式:

(数据前缀+)数据类型+变量名称(属性描述)+“变量描述”例如:Modelica.SIunits.Heighth0(start=10)"初始高度";Modelica语言定义了5种数据类型以及多种数据属性关键词class

VariableDeclaration“变量声明示例”

Real

A(max=1)“A变量描述";Integer

B(min=0)“B变量描述";Boolean

C(start=true)“C变量描述";String

D“D变量描述";type

E=enumeration(e1,e2,...,en)“E变量描述”;

endVariableDeclaration;1.3Modelica文本一般结构-变量声明classname“模型描述”ParameterDeclarations

VariableDeclarations…endname;开始模型定义:类型+模型名称+“模型描述”参数声明变量声明…结束模型定义:end+模型名称;参数声明也是一种变量声明,一般格式如下:

数据前缀+数据类型(单位)=值+“参数描述”Modelica语言定义了4类8个数据前缀class

ParameterDeclaration“参数声明示例”

parameter

IntegerA=1“A参量描述";

constantReal

B(unit=“m/s”)=1“B参数描述";

finalparameterReal

C=1“C参数描述";

endParameterDeclaration;1.4Modelica文本一般结构-模型行为描述classname“模型描述”ParameterDeclarations

VariableDeclarationsalgorithm…equation…endname;开始模型定义:类型+模型名称+“模型描述”参数声明变量声明模型行为描述算法模型行为描述方程结束模型定义:end+模型名称;class

Example“模型行为描述示例”

parameterReala=1;

Realb;

Realc;

equation

a=b+c;

end

Example;Modelica语言支持使用方程或算法对模型行为进行描述,对应的关键词分别为equation与algorithm。完整模型一般结构目录1.

Modelica文本一般结构2.Modelica语法概览2.Modelica语法概览2.1Modelica语法概览-类及内置类型类及内置类型—构成模型的最基本属性Modelica语言定义了:10种特化类5种数据类型多种前缀关键词多种数据属性关键词model

Fall

"自由落体"

final

parameter

Real

g

=

9.81;

Real

h(start

=

10);

Real

v;equation

der(h)=v;

der(v)

=

-g;end

Fall;2.2Modelica语法概览-数组数组—多个同类型变量的集合确定数组的维度以及各维度的长度数组赋值以及简单方式生成数组将多个数组组合成一个数组读取数组中某个元素或某个区域元素的值对数组进行求解运算Modelica可定义多维数组:0维数组:标量,如:3.141维数组:向量,如:2维数组:矩阵,如:modelFlatThrow"平抛运动"

finalparameter

Realg=9.81;

parameter

Realv0=1;

Realx(start=0);

Realh(start=10);

Realposition[2]={x,h};

Realv[2];equation

v[1]=v0;v[1]=der(x);v[2]=der(h);

der(v[2])=-g;endFlatThrow;Realc[3,3]2.3Modelica语法概览-模型行为描述模型行为描述—通过方程或算法定义模型的行为声明区域方程声明方程变形方程初始化方程initialequation方程区域方程常规方程等式方程=连接方程connect循环方程for条件方程ifwhen其他方程assert()terminatereinit()算法区语句算法语句赋值语句“:=”循环语句forwhile条件语句ifwhen其他语句breakreturnassertterminatereinitmodelWhenRealx;Realy;algorithm

whenx>2

then

y=x;

elsewhenx>3

then

y=0;endwhen;endWhen;modelTerminateReala;equation

a=sin(time);

whena<=-0.5

then

terminate("退出仿真");

endwhen;endTerminate;一般建议把算法封装到函数中,然后模型调用函数。如果不封装,就可能导致代数环在数字计算机仿真中,当输入信号直接取决于输出信号,同时输出信号也直接取决于输入信号时,由于数字计算的时序性,而出现的由于没有输入无法计算输出,没有输出也无法得到输入的“死锁环”,称之为代数环。2.4Modelica语法概览-连接与连接器连接与连接器—定义组件与外部的通讯连接器:因果连接器非因果连接器可扩展连接器隐式连接器2.5Modelica语法概览-函数函数—数学模型的天然组成部分Modelica提供了:多种内部函数自定义函数C、C++、FORTRAN外部函数集成如何计算一条直线上的点?functionLineWithProtected

input

Realx;

input

Realp0[2];

input

Realp1[2];

output

Realy;protected

Realm=(p1[2]-p0[2])/(p1[1]-p0[1]);

Realb=(p1[2]+p0[2]-m*(p1[1]+p0[1]))/2.0;algorithm

y:=m*x+b;endLineWithProtected;C/C++函数longlabs(longn)doubleexp(doublex)Java函数publicstaticintadd(inta,intb)functionEqual

input

Realx1;

input

Realx2=2;

input

Realx3=3;

output

Realy1;

output

Realy2;

output

Realy3;algorithm

y1:=x1;y2:=x2;y3:=x3;endEqual;2.6Modelica语法概览-注解注解—定义与Modelica模型关联的附加信息注解功能:组件参数框设计图标设计模型帮助文档设计动态显示设计文本其他注释2.7Modelica语法概览-模型重用模型重用—极大地提高建模效率模型重用:继承重用实例化重用重声明重用基类partialmodel

PartialPortModelica.SIunits.Voltagev;

Modelica.SIunits.Currenti;

Interfaces.PositivePinp;

Interfaces.PositivePinn;equation

v=p.v-n.v;i=p.i;-i=n.i;

endPartialPort;model

Resistanceparameter

Modelica.SIunits.ResistanceR=10;extendsPartialPort;equation

v=R*i;endResistance;modelCapacitorparameter

Modelica.SIunits.CapacitanceC=1;extendsPartialPort;equation

i=C*der(v);end

Capacitor;model

Inductor

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论