密级:公开
文档编号:
版本号:
Modelica
建模知识点讲解
注:可通过我的个人博客留言交流 modelica 语言和基于 modelica 语言的项目、
工作等。
编制 张作宝
审核
生效日期
2011-09-24~
批准
目录
1. Modelica 语言介绍 .............................................................................................. 1
1.1 Modelica 目标 ............................................................................................. 1
1.2 Modelica 特点 ............................................................................................. 1
1.3 Modelica 模型表达 ..................................................................................... 2
1.3.1 Modelica 模型本质 ........................................................................... 2
1.3.2 简单的微分方程 .............................................................................. 3
1.3.3 微分代数方程 .................................................................................. 3
2. 例子程序.............................................................................................................. 4
2.1 HelloWorld .................................................................................................. 4
2.2 Pendulum ..................................................................................................... 4
2.3 DAE Example .............................................................................................. 5
2.4 VanDerPol.................................................................................................... 6
2.5 SimpleCircuit ............................................................................................... 7
2.6 Bouncing Ball .............................................................................................. 8
2.7 DCMotorCircuit ........................................................................................... 9
2.8 一个简单的火箭模型 ................................................................................10
2.9 在月球着陆模型 ....................................................................................... 11
2.10 在月球着陆模型——使用继承 ..............................................................12
2.11 连接在弹簧上的质量振荡模型...............................................................13
3. 语法基本知识 .....................................................................................................14
3.1 变量(Variable) ......................................................................................14
3.1.1 基本数据类型(除枚举外)内置属性 ..........................................15
3.1.2 Discrete ............................................................................................15
3.2 常量(Constant) .....................................................................................15
3.3 变量初值(start) .....................................................................................16
3.4 注释(Comment) ....................................................................................16
3.5 国际单位制(SIunits).............................................................................17
3.6 标识符命名规则 .......................................................................................17
3.6.1 命名惯例(Naming Conventions) ................................................17
I
4. 面向对象的数学建模 .........................................................................................19
4.1 类和实例(Class and Instance) ...............................................................19
4.1.1 类(Class) ....................................................................................19
4.1.2 实例(Instance)............................................................................21
4.1.3 初始化(Initialization) .................................................................21
4.1.4 受限类(Restricted Classes) ........................................................21
4.1.5 类成员的访问 .................................................................................24
4.1.6 实例变型及其复用(Reuse by Modifier) ....................................24
4.1.7 内置类型(Built-in Classes) ........................................................25
4.1.8 继承(Inheritance) .......................................................................26
4.1.9 变型(Modification) ....................................................................31
4.1.10 泛型类(Generic Class) .............................................................31
4.1.11 outer/inner ......................................................................................33
4.1.12 抽象类(Partial Class) ...............................................................33
4.2 基于组件建模 ...........................................................................................36
4.2.1 组件(Component) ......................................................................37
4.2.2 连接图(Connection Diagram) ....................................................38
4.2.3 连接器(Connector).....................................................................38
4.2.4 连接(Connection) .......................................................................39
4.2.5 可扩展连接.....................................................................................44
4.2.6 连接方程(Connection Equation) ................................................46
4.2.7 层次结构化组件 .............................................................................47
4.2.8 常用流变量和势变量 .....................................................................48
4.2.9 隐式连接(Inner/Outer) ...............................................................49
4.3 数组(Array) ..........................................................................................49
4.3.1 数组声明 ........................................................................................49
4.3.2 数组下标(Array Index) ..............................................................50
4.3.3 数组索引 ........................................................................................50
4.3.4 数组四则运算 .................................................................................51
4.3.5 数组函数 ........................................................................................53
4.3.6 数组构造 ........................................................................................53
4.3.7 数组连接(Array Concatenation).................................................54
4.3.8 数组切分(Array Slice) ...............................................................55
4.3.9 向量构造 ........................................................................................55
4.3.10 函数向量化调用 ...........................................................................55
II
4.4 非因果物理建模 .......................................................................................56
4.4.1 比较非因果建模与基于块图建模 ..................................................57
4.5 方程(Equation) .....................................................................................58
4.5.1 方程 vs 赋值语句 ...........................................................................59
4.5.2 产生方程的场景 .............................................................................59
4.5.3 方程语法形式 .................................................................................60
4.6 算法构造 ...................................................................................................65
4.6.1 算法(Algorithm) ........................................................................65
4.6.2 语句(Statements)........................................................................66
4.7 函数(Functions) ....................................................................................70
4.7.1 语法 ................................................................................................70
4.7.2 函数调用 ........................................................................................72
4.7.3 MIMO 函数(多输入多输出函数) ...............................................72
4.7.4 内置函数 ........................................................................................73
4.7.5 外部函数(External Functions)....................................................73
4.7.6 算法与函数.....................................................................................74
4.7.7 运算符重载(Operator Overloading) ...........................................75
4.8 离散事件与混合建模(连续离散混合建模) .........................................75
4.8.1 触发事件 ........................................................................................76
4.8.2 离散变量(Discrete Variables) .....................................................76
4.8.3 离散建模方法 .................................................................................76
4.8.4 事件操作符.....................................................................................81
4.9 包(Packages).........................................................................................84
4.9.1 包的用途 ........................................................................................84
4.9.2 包的物理组织形式 .........................................................................84
4.9.3 包的导入 ........................................................................................87
4.9.4 encapsulated 和 within ....................................................................87
4.10 文档与可视化 .........................................................................................88
4.10.1 注解的使用场景 ...........................................................................88
4.10.2 组件模型设置 ...............................................................................89
4.10.3 Diag(组件)Icon(视图) ..........................................................89
4.10.4 Info(说明) .................................................................................90
4.10.5 PreView ..........................................................................................91
4.10.6 Default name ..................................................................................91
4.10.7 Default name&outer inner ..............................................................92
4.10.8 参数对话框 ...................................................................................92
III
4.10.9 仿真设置 ......................................................................................95
4.10.10 加密 ............................................................................................95
4.10.11 动态组件 .....................................................................................95
5. 高级建模.............................................................................................................97
5.1 简单电路 ...................................................................................................97
5.1.1 可复用组件建模 .............................................................................97
5.2 模型库开发 ...............................................................................................98
5.2.1 创建库 ............................................................................................98
5.2.2 命名惯例 ........................................................................................99
5.2.3 组织结构 ........................................................................................99
5.2.4 重用性 .......................................................................................... 100
5.2.5 健壮性 .......................................................................................... 100
5.2.6 文件组织 ...................................................................................... 100
5.3 模型求解与效率 ..................................................................................... 101
5.3.1 模型初始条件 ............................................................................... 101
5.3.2 提高仿真效率 ............................................................................... 102
6. Modelica 库 ....................................................................................................... 104
6.1 Modelica 标准库(MSL) ....................................................................... 104
6.2 Modelica 模型库 ...................................................................................... 105
6.3 Modelica 模型求解流程 ........................................................................... 108
IV
Modelica
1. Modelica 语言介绍
l Modelica—A United Object-Oriented Language for Physical Systems
Modeling
统一的面向对象物理系统建模语言。
Modelica 建模语言由瑞典 Linköping 的非赢利组织 Modelica 协会开发,是一
种适用于大规模复杂异构物理系统建模的面向对象语言,可以免费使用。
Modelica 可以满足多领域建模需求,例如机电模型(机器人、汽车和航空应用中
的机电系统包含了机械、电子、液压和控制子系统)、过程应用、电力发电和输
送等。Modelica 模型的数学描述是微分、代数和离散方程(组),相关的 Modelica
工具能够决定如何自动求解方程变量,因而无需手工处理。对具有超过 10 万个
方程的大规模模型,可以使用专门的算法进行有效处理。Modelica 适用于半实物
仿真和嵌入式控制系统。
1.1 Modelica 目标
(1). 统一面向对象的建模语言。
(2). 物理模型高度可复用性。
(3). 覆盖不同工程学科的物理构件。
(4). 支持 LE/NLE/ODE/DAE/DE/PDE 方程描述。
(5). 生成高效仿真代码。
(6). 开发构件库。
1.2 Modelica 特点
(1). 基于方程的非因果建模
相对于赋值语句,方程体现了不同的数据流向,能够更好地支持组
件复用。
(2). 多领域建模
能够描述电气、机械、热力学、液压、生物、控制等多领域模型或
组件,已有大量可复用的领域库。
(3). 面向对象建模
具有面向对象语言特征:类、泛型(C++模板)、子类型,允许组件
复用和模型进化。
第 1 页, 共 109 页
建模
提供良好的软组件模型,通过组件(接口)相互连接,快速搭建复
杂物理系统。
(4). 连续-离散混合建模
1.3 Modelica 模型表达
1.3.1 Modelica 模型本质
第 2 页