复杂产品通常涉及机械、控制、电子、液压、气动和软件等多学科领域,其设计过程需要进行仿真,以满足对成本、质量、性能等的要求。目前各个学科和领域都已经有了比较成熟的仿真软件,但大部分仿真软件仅适用于本学科领域,并在模型表述中采用自己专门的格式,而复杂产品的整体性能需要多个领域仿真软件的协同仿真,需要在多个仿真软件间进行大量的数据交换,并进行系统层面上的建模,单领域仿真建模工具很难满足要求。Modelica语言就是在这一背景下推出的一种面向对象的非因果关系的仿真建模语言。它的目的是为动态系统建立一种标准的基于方程模型的仿真语言,使得仿真建模与具体的仿真工具分离,实现仿真建模的标准化。

  用Modelica语言建模可以采用两种方式,一种是使用图形建模工具,通过拖放模型库中的标准部件、绘制部件间的连接、给出部件的参数,来建立系统的模型组成。另一种方式是用Modelica语言的文本方式。

  求解方程时不需考虑信号的传输方向,因此不必像其他仿真软件那样分析模块间的因果关系,大大降低了建模的难度,这与Simulink不同,Simulink本质上是一种赋值运算,由其方框图描述的系统是因果的

  下面是一个RLC 电路图,要仿真电阻两端电压随时间变化的暂态过程。

  OpenModelica是一个开源的基于Modelica语言的建模和仿真环境,用于工业界和学术界研究。长期由非赢利组织Open Source Modelica Consortium (OSMC) 开发。在OpenModelica中新建一个类,命名为RLC1,在库中选择Electrical/Basic/Analog中的电容、电阻、电感以及大地模块和Source中的恒定电压源模块,将其拖入组件视图中,设定好参数后,将其连接。

  设置仿真时间为1s,然后开始仿真,输出曲线如下图所示。

  以电阻两端电压Uo作为输出,根据电阻、电容、电感的特性和基尔霍夫电压定律,可以列出系统的2阶微分方程:


$$LC\frac{d^2u_0}{dt^2}+\frac{L}{R} \frac{du_0}{dt}+u_0=u_i$$

  则系统传递函数为:

  $$\frac{U_o(s)}{U_i(s)}=\frac{1}{LCs^2+\frac{L}{R} s+1}$$

  在MATLAB/Simulink中仿真二阶系统的阶跃响应

  可以得到相同的结果:

参考:

电气方面的实例

多领域统一建模

多领域物理统一建模规范与技术研究进展

OpenModelica仿真的更多相关文章

  1. OpenModelica 在特定目录下生成仿真结果文件

    OMEdit的仿真结果文件存放在:C:\Users\***\AppData\Local\Temp\OpenModelica\OMEdit 可以在仿真时设置仿真结果文件名,可使用用绝对路径或相对路径 使 ...

  2. OpenModelica中simulate的用法

    先把官网上的说明文档放上来: simulate simulates a modelica model by generating c code, build it and run the simula ...

  3. 基于modelsim-SE的专业进阶仿真流程

    基于modelsim-SE的专业进阶仿真流程 通过<基于modelsim-SE的简单仿真流程>和<调用altera IP核的仿真流程>是否感受到仿真流程中的繁琐步骤,特别是在m ...

  4. 调用altera IP核的仿真流程—下

    调用altera IP核的仿真流程—下 编译 在 WorkSpace 窗口的 counter_tst.v上点击右键,如果选择Compile selected 则编译选中的文件,Compile All是 ...

  5. 调用altera IP核的仿真流程—上

    调用altera IP核的仿真流程—上 在学习本节内容之后,请详细阅读<基于modelsim-SE的简单仿真流程>,因为本节是基于<基于modelsim-SE的简单仿真流程>的 ...

  6. 基于modelsim-SE的简单仿真流程—下

    基于modelsim-SE的简单仿真流程—下 编译 在 WorkSpace 窗口的 counter_tst.v上点击右键,如果选择Compile selected 则编译选中的文件,Compile A ...

  7. 基于modelsim-SE的简单仿真流程—上

    基于modelsim-SE的简单仿真流程 编写RTL功能代码 要进行功能仿真,首先得用需要仿真的模块,也就是RTL功能代码,简称待测试的模块,该模块也就是在设计下载到FPGA的电路.一个电路模块想要有 ...

  8. 室内定位系列(二)——仿真获取RSS数据

    很多情况下大家都采用实际测量的数据进行定位算法的性能分析和验证,但是实际测量的工作量太大.数据不全面.灵活性较小,采用仿真的方法获取RSS数据是另一种可供选择的方式.本文介绍射线跟踪技术的基本原理,以 ...

  9. lattice 与 modelsim 仿真 笔记

    对于 lattice  Diamond 与 modelsim 的联合仿真,我总结了一句话,那就是—— 难者不会,会者不难.  也许刚开始 觉得 摸不着 头脑,但是 一旦学会 感觉还是很简单和直观的. ...

随机推荐

  1. Issue 2:Introduction 方法论

    1 清晰的思路 论文投稿完毕,彻底完事儿后,原本很反感的论文书写过程也有了些许心得:论文就是科研工作的文字总结,知识再提炼的过程. 想要写好Introduction,脑子里的一条主线必须清楚. 1.1 ...

  2. RDIFramework.NET ━ .NET快速信息化系统开发框架 记录所有操作的Sql

    在实际开发或试运行过程中,我们有时需要查看或分析模块执行的所有sql,以便进行相关分析.有时我们可以通过数据库自带的软件抓取,如:SQL Server Profiler.在我们RDIFramework ...

  3. JS学习之路

    前言 接触js也有四五年的时间了,对js的认识也逐渐加深,想把自己这几年学习js的经历记录一下. 总则-都是对象,都是引用 在接触js前用的比较多的是java,在刚开始接触js的时候,老实讲,我是有点 ...

  4. Leetcode: Valid Word Abbreviation

    Given a non-empty string s and an abbreviation abbr, return whether the string matches with the give ...

  5. ANE 从入门到精通 --- 使用R* 访问资源

    在AIR4.0版本之前,ANE内无法使用R*,操作资源仅能使用getResourceID(). 对于接SDK来说尤为头疼. 不过4.0以后可以通过在打包时候指定platform.xml来直接使用R*访 ...

  6. 002-添加网站ico图标

    <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" me ...

  7. C#如何实现下载文件保存到本地上面去

    public void btnTemplate_Click(object sender, EventArgs e) { string strResult = string.Empty; string ...

  8. sqlserver查询数据的所有表名和行数

    //查询所有表明 select name from sysobjects where xtype='u' select * from sys.tables //查询数据库中所有的表名及行数 SELEC ...

  9. linux shell脚本使用结构化命令(2)

    一.for命令 二.while命令 三.until命令 1.for命令基本格式 for var in list do commands done oracle@suse:~/testshell> ...

  10. uboot补丁的分析

    接下来分析一下韦老师的uboot补丁: -------------------------------------------------------------------------------- ...