您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 模型库 Model Center   Code  
会员   
   
业务架构设计
4月18-19日 在线直播
基于UML和EA进行系统分析设计
4月25-26日 北京+在线
AI 智能化软件测试方法与实践
5月23-24日 上海+在线
     
   
 
 订阅
交互式使用OpenModelica
 
 
 
  127  次浏览      5 次
2025-4-24
 
编辑推荐:
本文详细阐述了在OpenModelica环境中通过OMShell进行交互式操作的过程,涉及对话开始、模式应用、冒泡排序演示及系统命令使用,如cd()和cat命令。希望对你的学习有帮助。
本文来源于CSDN,由火龙果软件Linda编辑,推荐。

前言

以下是在OpenModelica环境中使用交互式会话处理程序的交互式会话。称为OMShell-OpenModelica Shell。这些示例中的大多数也可以在OMNotebook中使用

DrModelica和DrControl UsersGuideExamples.onb以及testmodels:

使用OpenModelica版本运行以下命令:

一、开始使用交互式对话

在Windows下,转到开始菜单并运行OpenModelica->OpenModelica Shell,它以

交互窗口;

在Linux下,运行OMShell-terminal在提示符下启动交互式会话。我们输入由范围构造表达式1:12创建的向量表达式的赋值,以存储在变量x。返回表达式的值。

二、使用交互式的模式

在交互模式下运行OMC (例如使用OMShell) 时,可以加载类并执行

命令。这里我们举几个例子。

三、尝试使用冒泡排序算法

加载函数bubblesort,可以使用下拉菜单File->Load Model,也可以显式给出

命令:

下面调用函数bubblesort以降序对向量x进行排序。返回排序后的结果连同它的类型。请注意,结果向量的类型为Real[:],实例化为Real[12],因为这是声明的函数结果的类型。输入整数向量自动转换为实数向量需要根据Modelica类型强制规则。如果以前没有这样做,则调用该函数时会自动编译。

另一个响应:

四、使用cd()指令

也可以通过系统实用功能给出操作系统命令。命令提供为一个string参数。下面的示例显示了应用于UNIX命令cat的系统实用程序,在这里从命令行运行omc时,将文件bubblesort.mo的内容输出到输出流。

注意: 当运行基于CORBA的客户端,而不是进入可见的GUI窗口。因此,上述cat命令发出的文本将不会返回,这就是为什么它被重定向到另一个文件。

读取文件内容的更好方法是readFile命令:

系统命令只返回成功代码

另一个内置命令是cd,更改当前目录命令。返回生成的当前目录为一个字符串。

一、 Trying the system and cd Commands

也可以通过系统实用功能给出操作系统命令。命令提供为一个string参数。下面的示例显示了应用于UNIX命令cat的系统实用程序,在这里从命令行运行omc时,将文件bubblesort.mo的内容输出到输出流。

注意: 当运行基于CORBA的客户端,而不是进入可见的GUI窗口。因此,上述cat命令发出的文本将不会返回,这就是为什么它被重定向到另一个文件。

读取文件内容的更好方法是readFile命令:

系统命令只返回成功代码

另一个内置命令是cd,更改当前目录命令。返回生成的当前目录为一个字符串。

二、 Modelica Library and DCMotor Model

我们加载一个模型,这里是整个Modelica标准库,这也可以通过File-> load Mod-

elica库菜单项:

我们还加载一个包含dcmotor模型的文件:

注: dcmtor要求3.2.2版的Modelica软件包。使用Modelica 3.2.3代替,其中指出它是完全兼容的,无需转换脚本。

(一直到P12都是代码)

注:

通知: dcmtor请求了3.2.2版的软件包Modelica。使用Modelica 3.2.3代替,其中指出

它是完全兼容的,无需转换脚本。

我们绘制部分模拟结果如图:

三、The val() function

val(variableName,time) scription函数可用于检索仿真结果的内插值变量在模拟时间的某个点,请参阅下面的BouncingBall模拟中的usagc。

#四、 BouncingBall and Switch Models

我们加载并模拟包含何时方程和if表达式的弹跳球示例 (为了更好的可读性,Modelica关键字已经手动粗体处理):

我们不是仅仅给出一个模拟和绘图命令,而是执行一个runScript命令。mos (Modelica脚本)

包含这些命令的sim_BouncingBall.mos文件

使用val(variableName,time) 函数检索时间 = 0时的itot值:

我们注意到,变量open从false (0) 切换到true (1),导致itot从1.0增加到2.0。

四、Clear All Models

现在,首先清除所有加载的库和模式

列出加载的模型:当前是没有的

五、VanDerPol Model and Parametric Plot

我们加载另一个模型,VanDerPol模型 (或通过菜单文件-> 加载模型):

仿真:

跑图:

将代码实例化为VanDerPol模型的平面形式

六、Using Chinese or Japanese Characters

可以在引号 (单引号) 标识符中使用日语、中文和其他类型的UniCode字符,例如,下图中右侧的变量名称:

七、Scripting with For-Loops, While-Loops, and If-Statements

一个简单的求和整数循环 (使用多行输入而不评估每一行到OMShell需要复制-从另一个文档粘贴为一个操作):

嵌套循环求和实数和整数:

通过将两个 (或更多) 变量或赋值语句以分号分隔,以变量结尾,可以观察多个变量值:

一个具有向量遍历和字符串元素连接的for循环:

正常的while循环与10个 “abc” 字符串的连接:

一个简单的if语句。通过将变量放在最后,在分号之后,其值在评估后返回:

八、 Variables, Functions, and Types of Variables

将向量分配给一个变量:

函数中的输入:

函数的引用:

查看变量a的值:

查看a的类型;

检索b的类型:

mySqr是什么类型呢?尚无法即时处理:

列出可获得的变量:

Clear again:

九、Getting Information about Error Cause

在模拟失败后,调用getErrorString()函数可以获取更多关于错误原因的信息。

十、Alternative Simulation Output Formats

有几种输出格式可供选择,mat是默认格式。plt和mat是唯一允许在模拟后使用val()或plot()函数的格式。与plt的速度相比,对于小文件来说,mat大约快5倍,并且由于它是一种二进制格式,对于大文件来说扩展性更好。csv格式在数据密集型模拟中的速度大约是plt的两倍。plt格式在模拟期间将所有输出数据分配到RAM中,这意味着在32位平台上,由于应用程序只能寻址4GB的内存,模拟可能会失败。Empty不输出任何内容,应该是最快的。csv和plt格式适用于使用外部脚本或工具(如gnuplot)生成图表或处理数据。mat格式可以在MATLAB或Octave中进行后处理。

还可以通过使用POSIX扩展正则表达式来指定结果文件中应该包含哪些变量。给定的表达式必须匹配完整的变量名(^和$符号会自动添加到给定的正则表达式中)。

• 默认情况下,匹配所有内容:simulate(…, variableFilter=“,")

• 仅匹配包含数字1至3的变量myVar的索引:simulate(…, variableFilter="myVar[1-3]”)

• 匹配x、y或z:simulate(…, variableFilter=“x|y|z”

十一、Using Parallel Simulation via OpenMP Multi-Core Support

可以通过使用OpenModelica的新特性在多核计算机上获得更快的模拟速度,该特性自动分区方程组,并使用基于共享内存的OpenMP执行调度不同部分。获得的加速取决于模型结构,以及方程组是否可以很好地分区。当前OpenModelica版本中的这个版本是一个没有负载平衡的实验版本。以下命令将在模型上运行并行模拟(目前还不能从OpenModelica GUI中使用):

十二、Loading Speciffc Library Version

存在许多不同版本的Modelica库,它们之间并不兼容。可以通过调用getModelicaPath()函数来保存同一个库的多个版本。通过调用loadModel(Modelica, “3.2”),OpenModelica会搜索名为"Modelica 3.2"的目录或名为"Modelica 3.2.mo"的文件。可以指定多个库版本以供搜索,并优先考虑已安装的库的预发布版本。如果搜索的版本是"default",优先级顺序为:没有版本名称(Modelica)、主要发布版本(Modelica 3.1)、预发布版本(Modelica 3.1Beta 1)和无序版本(Modelica Special Release)。

loadModel命令在加载后还会查看顶级类的uses注释。给定以下包,Complex 1.0和ModelicaServices 1.1也会自动加载到AST中。

如果模型有一个uses注释,包也会被加载:

注意:

通知:由于M中的uses注释,自动加载了包Modelica 3.2.1。

通知:由于Modelica中的uses注释,自动加载了包Complex 3.2.1。

通知:由于Modelica中的uses注释,自动加载了包ModelicaServices 3.2.1。

通过查看路径中的第一个标识符,包也会被加载:

注意:

通知:由于Modelica中的uses注释,自动加载了包Complex 4.0.0。

通知:由于Modelica中的uses注释,自动加载了包ModelicaServices 4.0.0。

通知:由于使用,自动加载了包Modelica default。

十三、Calling the Model Query and Manipulation API

在OpenModelica系统文档中,描述了一个外部API(应用程序编程接口),它返回有关模型的信息和/或允许操纵模型。这些函数的调用可以像下面这样交互式地完成,但更典型的是通过程序客户端对OpenModelica编译器(OMC)服务器进行调用。此类客户端的当前示例包括OpenModelica MDT Eclipse插件、OMNotebook、OMEdit图形模型编辑器等。出于性能原因,此API是未类型的,即在调用上不进行类型检查,且错误检查最小化。调用的结果以Modelica语法形式的文本字符串返回,客户端需要解析这些字符串。OMNotebook源代码中提供了一个C++的示例解析器,而MDT Eclipse插件中提供了一个Java的示例解析器。

下面我们展示了对之前模拟的BouncingBall模型进行的一些调用。关于这个API的完整文档可以在系统文档中找到。首先我们再次加载并列出模型,以展示其结构:

不同的调用和返回结果:

十四、Quit OpenModelica

十五、Dump XML Representation

命令dumpXMLDAE根据几个可选参数,将模型的XML表示形式转储出来。

dumpXMLDAE(modelname[,asInSimulationCode] [,filePrefix] [,storeInTemp] [,addMathMLCode])

这个命令使用XML表示形式转储模型的数学表示,带有可选参数。特别是,asInSimulationCode定义了在翻译过程中何时停止(在转储模型之前),其他选项与文件存储有关:filePrefix用于指定不同的名称,storeInTemp用于使用临时目录。可选参数addMathMLCode提供了不在xml文件中打印MathML代码的可能性,使其更易读。使用非常简单,只需:addMathMLCode=true/false(默认值是false)。

十六、Dump Matlab Representation

命令export根据几个可选参数,将模型的Matlab表示形式转储出来。

exportDAEtoMatlab(modelname):

这个命令使用Matlab表示形式转储模型的数学表示。示例:

 

   
127 次浏览       5
 
相关工具

文档生成器(DocGenerator)
代码工程师 Code Engineer
模型检查器 Checker
WebEA
自动建模器(AutoModeler)
 
相关文章

ASPICE 4.0 过程指南
采用SysML对FPGA逻辑单元进行建模(对应到VHDL代码)
DoDAF建模图例(EA+UPDM)
EA集成第三方工具:Polarion、JIRA、AzureDevOps
UML建模指南(建模工具iSpace)
 
相关课程

ASPICE4.0核心开发过程指南
使用NML进行系统分析与建模
基于UML和EA进行系统分析设计
业务建模与业务分析
基于SysML和EA进行系统设计与建模

最新活动计划
人工智能.机器学习TensorFlow 5-22[北京]
AI智能化软件测试方法与实践 5-23[北京]
图数据库与知识图谱 5-22[北京]
DeepSeek大模型应用开发 6-12[厦门]
基于 UML 和EA进行分析设计 6-23[北京]
嵌入式软件架构-高级实践 7-9[北京]
 
 
最新文章
在EA中内嵌文档- Artifact
EA中模型视图
EA中的实体关系图
使用EA进行风险建模
EA中的项目词汇表
EA的模型导出或导入csv文件
自定义表格(Custom Table)EA中使用
Gap Analysis Matrix(差距分析矩阵)
更多...   
MBSE工具
MBSE平台
建模工具 EA
模型库-Model Center
需求管理-ReqManager
自动建模-Modeler
多级仿真-Sys Simulator
代码工程-Code Engineer
文档生成器-DocGenerator
更多...   
成功案例
广汽研究院 SysML+EA+软件分析设计
高合汽车研发部门 建模工具EA、WebEA、
国汽智联 建模工具EA、模型库、WebEA
亿咖通 MBSE工程体系与工具链咨询
中航无人机 MBSE工具链
吉利汽车 购买EA工具
华科汽车零部件 购买EA工具
东风岚图汽车 购买EA工具 以及EA定制开发
更多...