编辑推荐: |
本文来自于苏州同元_882的博客,文章主要介绍了Modelica语言与Modelica标准库工程领域常用的组件模型,希望对您的学习有所帮助。 |
|
Modelica语言与Modelica标准库(Modelica Standard
Library)是由Modelica协会开发并维护的。Modelica标准库中包含许多工程领域常用的组件模型,包括常量(constants)、类型(types)、连接器(connectors)、抽象模型(partial
models)和组件模型(model classes),并通过对应的包(package)来集中管理。获取标准库源代码可登陆http://www.Modelica.org/library/library.htm
图1 Modelica 2.2.2标准库涵盖领域示意图
表1 Modelica 2.2.2标准库主要内容
1.1 Modelica.Constants
Modelica.Constants提供数学、机械等领域以及自然界中一些常量。
1.2 Modelica.Icons
Modelica.Icons包含常见类型的图标定义,可以通过继承或者复制图标(Icon)视图的内容进行使用。
1.3 Modelica.Math
Modelica.Math包含一些基本的数学函数。
1.4 Modelica.SIunits
Modelica.SIunits提供基于ISO 31-1992标准的SI单位定义,覆盖到主要的工程领域,例如质量Mass、长度Length、时间Time等。
type Angle =
Real(final quantity = "Angle",
final unit = "rad",
displayUnit = "deg"); |
Modelica.SIunits.Conversions还包含与非SI单位的转换接口,例如:
function to_minute
"Convert from second to minute"
extends ConversionIcon;
input Time s "second value";
output NonSIunits.Time_minute minute "minute
value";
algorithm
minute := s / 60;
end to_minute; |
1.5 Modelica.Electrical
Modelica.Electrical包含四个子库,包括了模拟与数字电路、电动机、发电机以及三相感应电机和异步电机等模型。
1.5.1 Modelica.Electrical.Analog
以模型Modelica.Electrical.Analog.Examples.HeatingRectifier为例:
图3 HeatingRectifier模型组件图以及电容两端电压和热容器温度曲线
在交流电压源SineVoltage1作用下,电容器Capcitor1两端电压v升高与降低交替进行,仅当电压升高过程中发热二极管HeatingDiode1才接通,进而导致热容器HeatingDiode1的温度T间歇升高。
1.5.2 Modelica.Electrical.Digital
Digital库包含有数字电路的一些组件。其系统和模型基于VHDL标准(IEEE Std 1076-1993
VHDL,IEEE Std 1164多值逻辑系统)按整数值编码,对应关系如下表:
使用示例如半加器模型:
图4 半加器模型组件连接图(上)和仿真曲线(中、下)
Adder输出的结果为9值逻辑的结果,对照表5可知其对应的二进制值。这一转换过程可由连接图中右端的LogicToReal组件完成,结果如下:
图5 半加器输出的Real结果
1.5.3 Modelica.Electrical.Machines
Machines为电机的简单模型库,其中做了一些限制与理想化假设:
$1__VE_ITEM__l 相数为3,因此将其定义为 constant m=3
$1__VE_ITEM__l 绕阻及整个电机结构相位对称
$1__VE_ITEM__l 只考虑了空间的谐波
$1__VE_ITEM__l 电压与电流(关于时间)的波形没有约束
$1__VE_ITEM__l 参数常量处理,不考虑饱和、集肤效应
$1__VE_ITEM__l 无铁耗、涡流、摩擦损耗,只有定子与转子的电阻损耗
使用示例如鼠笼式异步感应电机:
图6 鼠笼式异步感应电机测试用例组件连接图
图7 鼠笼式异步感应电机仿真曲线图
从开始时间tStart起,为异步电机提供三相交流电压,电机从静止状态启动,由于负载转矩取决于速度的二次方,最终达到稳定的额定转速。
1.5.4 Modelica.Electrical.MultiPhase
MultiPhase是基于Modelica.Electrical.Analog开发的多相电子组件库,其使用方法与模型库Modelica.Electrical.Analog相同,使得多相电模型设计变得更容易。
1.6 Modelica.Blocks
Blocks为基本的输入输出框图模型库,主要包括连续、离散、逻辑和表四个部分。
连续框图使用示例如PID控制器Modelica.Blocks.Examples.PID_Controller:
图8 PID控制器使用组件连接图(上)和仿真曲线(下)
曲线中integrator.y为目标转速,inertia.w为标准库中相应设置下的实际转速。
1.7 Modelica.Mechanics
Mechanics为机械模型库,主要包括转动、平动和多体三个部分。
1.7.1 Modelica.Mechanics.Rotational
Modelica.Mechanics.Rotational为一维转动模型库,使用可参考节1.6,图8。
1.7.2 Modelica.Mechanics.Translational
Modelica.Mechanics.Translational为一维转动模型库。标准Modelica2.2中此模型库是完全面向对象的方式建成的,允许任何有实际意义的连接方式。
使用示例如Modelica.Mechanics.Translational.Examples.Oscillator:
图9 一维平动机械库使用示例Oscillator组件连接(上)和仿真曲线(下)
上面的模型对应无阻尼振荡,振幅越来越大;下面的模型属于有阻尼振荡,振幅在一段时间后达到相对稳定状态。
1.7.3 Modelica.Mechanics.MultiBody
MultiBody提供3维机械组件用以搭建机械系统,如机器人、机器机构、车辆等。多体模型库与众不同地含有动画组件。使用示例如6自由度机械手Modelica.Mechanics.MultiBody.Examples.Loops.EngineV6_analytic:
图10 多体库使用示例
Modelica.Mechanics.MultiBody.Examples.Loops.EngineV6_analytic
左上:模型动画 左下:单个活塞缸组件连接图 右:曲轴速度仿真曲线
1.8 Modelica.Thermal
Thermal库主要包括简单热流体和传热两个模型库。使用示例如简单冷却器Modelica.Thermal.FluidHeatFlow.Examples.SimpleCooling:
图11 Thermal库使用示例SimpleCooling组件连接图(左)和仿真曲线(右)
热源产生热量从热导体耗散,由管路内的制冷剂将热量带走,进入环境模型Ambient2中。换热器导热量随温差减小而减小,因此热容器的温度渐渐达到稳定状态。
HeatTransfer中的组件使用可参考上述示例(图3?18)中的对流模型Convection。
1.9 Modelica.Media
Media为媒介属性模型库,定义媒介模型的组织形式即接口定义并给出了一些单相或多相流态下的单一或混合流体:
理想气体:基于NASA Glenn系数1241高精度气体模型,+基于数据的理想混合气体模型
水模型:ConstantPropertyLiquidWater,WaterIF97(据IAPWS/IF97的高精度水模型)
空气模型:简单空气、Nasa干空气、湿空气模型
不可压缩介质:基于表格的不可压缩流体模型(性质由密度(温度)、热容(温度)表等定义)
可压缩介质:简单的线性可压缩性质的液体模型
media库的已有模型类型均为package型,一般通过继承的方式(继承参考***)使用,具体使用方法如下:
model Pump
replaceable package Medium = Modelica.Media.Interfaces.PartialMedium
"Medium model" annotation (choicesAllMatching
= true);
Medium.BaseProperties medium_a "Medium
properties at location a (e.g. port_a)";
// Use medium variables (medium_a.p, medium_a.T,
medium_a.h, ...)
...
end Pump; |
1.10 Modelica.StateGraph
StateGraph基于JGraphChart方法构建,并结合了Modelica描述“行为”的特点,可为离散事件和反应系统的层次状态机建模。
|