OpenModelica模型导入Simulink运行的方法

1、参考文献分析

1、modelica建模并导入simulink观察(机械实例)
2、FMI and TLM-Based Simulation and Co-simulation of External Models

文献1实现了OpenModelica模型导入Simulink运行的基本过程,但是存在两个问题,即JModelica已经不再开源。
在这里插入图片描述windows用户还需要安装jmodellica-SDK才行,而安装这个还要填各种表。
在这里插入图片描述用linux的话还得安装很多环境
在这里插入图片描述
因此这两个问题导致文献1的方法后续基本难以执行。不过观察文献1的方法,最终导入simulink的是FMU文件,那么最终只需要将modelica模型转化为FMU文件即可,因此问题变为如何转化为FMU文件。

文献2提到,可以用OpenModelica来生成FMU文件,可以采用命令行方法,也可以采用鼠标操作。因此文献1中问题解决。
在这里插入图片描述

2 、实际操作

2.1 modelica代码(参考文献1)

model SecondOrderSystemInitParams
  "A second order rotational system with initialization parameters"
  type Angle=Real(unit="rad");
  type AngularVelocity=Real(unit="rad/s");
  type Inertia=Real(unit="kg.m2");
  type Stiffness=Real(unit="N.m/rad");
  type Damping=Real(unit="N.m.s/rad");
  parameter Angle phi1_init = 0;
  parameter Angle phi2_init = 1;
  parameter AngularVelocity omega1_init = 0;
  parameter AngularVelocity omega2_init = 0;
  parameter Inertia J1=0.4 "Moment of inertia for inertia 1";
  parameter Inertia J2=1.0 "Moment of inertia for inertia 2";
  parameter Stiffness k1=11 "Spring constant for spring 1";
  parameter Stiffness k2=5 "Spring constant for spring 2";
  Damping d1=0.2 "Damping for damper 1";
  Damping d2=1 "Damping for damper 2";
  output Angle phi1 "Angle for inertia 1";
  output Angle phi2 "Angle for inertia 2";
  output AngularVelocity omega1 "Velocity of inertia 1";
  output AngularVelocity omega2 "Velocity of inertia 2";
initial equation
  phi1 = phi1_init;
  phi2 = phi2_init;
  omega1 = omega1_init;
  omega2 = omega2_init;
equation
  omega1 = der(phi1);
  omega2 = der(phi2);
  J1*der(omega1) = k1*(phi2-phi1)+d1*der(phi2-phi1);
  J2*der(omega2) = k1*(phi1-phi2)+d1*der(phi1-phi2)-k2*phi2-d2*der(phi2);
end SecondOrderSystemInitParams;

2.2 利用OpenModelica导出FMU文件

在这里插入图片描述在这里插入图片描述

2.3 FMU文件导入simulink

FMU Import在Simulink Extras的FMU Import位置
在这里插入图片描述初次导入会有FMU模式选择,是做Co-simulation还是Model Exchange,暂时选择Model Exchange。
在这里插入图片描述

2.4 仿真对比

FMU导入后能在simulink中运行,仿真曲线和在OpenModelica内仿真一致。
在这里插入图片描述

3、后记

最近也是在了解Modelica的优势,以及如何与simulink联合仿真。Modelica的优势在于利用非因果律建模,相当于实际的物理系统。simulink相当于因果律建模,实际上还是要先对实际物理系统抽象一次。2008年以来推出的simscape是参照Modelica进行非因果律建模,但是并不是文本形式建模,需要通过ssc语言转换成模型才能用,还是比较折腾。
后续考虑采用Modelica对模型建模,然后转化为FMU文件嵌入simulink中进行仿真。猜测到时候电机、电池等模型都用modelica写好,导入simulink后就全部为控制信号,不用考虑物理信号和控制信号转换的问题了。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值