前页 | 后页 |
对OpenModelica Simulation进行故障排除
尽管本主题描述了使用OpenModelica时可能出现的问题,但是许多要点同样适用于使用MATLAB Simulink执行仿真。
常见的模拟问题
下表介绍了一些常见问题,这些问题可能会导致在使用OpenModelica时无法模拟模型。在“系统输出”窗口的“构建”选项卡中检查输出。这些消息是从OpenModelica编译器(omc.exe)中转储的,该编译器通常将您带到Modelica源代码的各行。这将帮助您找到大多数错误。
问题 |
描述 |
---|---|
方程的数量小于变量的数量。您可能忘记了将某些属性设置为“ PhSConstant”,这意味着该值在仿真过程中不会更改。在开始模拟之前,您可能必须提供“ PhSConstant”属性值。 (通过“模拟数据集”设置值。) |
|
键入端口的块可能不包含保守的属性。例如,块“ ChargePort”包含两个部分-“ v:电压”和“ i:电流”。应将属性“ i:当前”定义为PhSVariable,并将属性“ isConserved”设置为“真”。 |
|
PhSConstants可能没有默认值-应该随其提供。 |
|
PhSVariable可能没有开始的初始值,应提供一个初始值。 |
|
这些属性可以由已配置包外部的元素(块或值类型)来输入;使用程序包导入连接器来解决此问题。 |
SysML仿真配置过滤器
“ SysML Simulation配置”对话框默认显示包中的所有元素,包括值类型,块,约束块,零件和端口,约束属性,连接器,约束和数据集。对于中型模型,完整列表可能会很长,您可能很难找到潜在的建模错误。
在TwoTanks示例中,如果我们清除Tank.area属性'PhSConstant',然后进行验证,则会发现此错误:
错误:方程式太少,系统欠定。该模型有11个方程式和13个变量。
该错误表明我们可能忘记了为“ PhSConstant”设置某些属性。
现在我们可以做的是单击工具栏右侧的第二个按钮(用于配置的过滤器),然后打开此处显示的对话框。单击全部按钮,然后取消选择“抑制块”和“抑制可变零件”复选框,然后单击“确定”按钮。
现在我们将有一个更短的变量列表,从中我们可以发现在仿真过程中“区域”没有变化。然后,将其定义为“ PhSConstant”,并提供一个初始值来解决此问题。
模型验证示例
信息 |
讨论区 |
---|---|
约束中未定义的变量 |
在TwoTanks示例中,当我们浏览到'constraintBlock.Outcontrol.Constraint'时,假设我们发现了键入错误:我们在约束中键入了'v'而不是'b'。 因此,代替: a = b *(c + d) 我们输入: a = v *(c + d) 单击工具栏上的验证按钮。这些错误消息将出现在“ Modelica”标签中: 验证模型... 错误:在范围OutControl中找不到变量v。 (表达式:“ a = v *(c + d);”) 错误:展平模型TanksConnectedPI时发生错误 发现的错误和警告数量:2 双击错误行;将显示配置列表,并突出显示约束。 将“ v”更改回“ b”,然后再次单击“验证”按钮。找不到错误,此问题已得到解决。 提示:使用SysML Simulation配置视图是更改块或约束块的约束的快捷方式。您可以:
|
变量名称重复 |
在TwoTanks示例中,浏览至block.tank.constraintProperty.e1 。假设我们给两个属性命名相同:
验证模型... 错误:重复的元素(由于继承的元素)不相同:(表达式:“ SensorValue e2;”) 错误:展平模型TanksConnectedPI时发生错误 发现的错误和警告数量:2 双击错误行;将显示配置列表,其中突出显示了约束属性。 将其中之一的名称从e2更改回e1 ,然后再次单击Validate按钮;找不到错误,此问题已得到解决。 |
未使用约束块中定义的属性 |
在TwoTanks示例中,在“浏览器”窗口中,浏览到元素“ Example Model.Systems Engineering.ModelicaExamples.TwoTanks.constraints.OutFlow”。 假设我们添加了一个属性“ c ”并可能添加了一个新的约束,但是我们忘记了为实例同步约束属性。如果我们不运行验证,这将导致方程太少,无法确定的系统错误。 在“ SysML Simulation配置”对话框中重新加载软件包,然后单击工具栏上的“验证”按钮。这些错误消息将出现在“ Modelica”标签中: 验证模型... 错误:ConstraintProperty'e4'缺少在键入ConstraintBlock'OutFlow'中定义的参数。 (遗失:c) 错误:方程式太少,系统欠定。该模型有11个方程式和12个变量。 发现的错误和警告数量:2 双击错误行;配置列表显示为高亮显示约束属性。约束属性的类型为outFlow,并且缺少新参数' c '。 右键单击配置列表中的约束属性,选择“在所有图表中查找”,然后右键单击图表中的“约束”属性,然后选择“功能|零件/属性”并选中“显示拥有/继承的”复选框,然后单击“ c”。 在“ SysML Simulation配置”对话框中重新加载模型,然后单击“验证”按钮。这些错误消息将出现在“ Modelica”标签中: 验证模型... 错误:ConstraintProperty'e4'对于参数'c'没有任何传入或传出的绑定连接器。 错误:方程式太少,系统欠定。该模型有11个方程式和12个变量。 发现的错误和警告数量:2 为了解决此问题,我们可以根据实际逻辑做两件事之一:
|