我希望在组件的 GUI 中看到导入包的清晰表示。在 OpenModelica 中,您可以选择一个组件图标并右键单击参数。这里你得到两个字段:
Path - describes from where the component is taken
Parameters - if the package has a redeclared package it is shown here
我认为最好在这两个字段中显示进口的来源。今天,您只能在“路径”字段中看到它,而在“参数”字段中看不到。
下面的小示例说明了包 DEMO_v91 和两个不同模型文件 D91_1 和 D91_3 的问题,它们仅在导入方式上有所不同。当我们想要在另一个包(例如 DEMO_v92)中重复使用该文件时,请注意文件 D91_3 中的便利性。您只需更改一行代码,而不是 D91_1 中的五行代码。
package DEMO_v91
package A
constant Real a=1;
constant Real b=2;
constant Real c=3;
end A;
model M1
replaceable package A = DEMO_v91.A;
Real x, y, z;
equation
x = A.a;
y = A.b;
z = A.c;
annotation(Diagram,Icon(graphics = {Rectangle(origin = {1, 0}, extent = {{-39, 40}, {39, -40}})}));
end M1;
model M2
replaceable package A = DEMO_v91.A;
Real x, y, z;
equation
x = 2*A.a;
y = 2*A.b;
z = 2*A.c;
annotation(Diagram,Icon(graphics = {Rectangle(extent = {{-38, 40}, {38, -40}})}));
end M2;
end DEMO_v91;
模型文件D91_1
model D91_1
DEMO_v91.M1 m1(redeclare package A = DEMO_v91.A)
annotation(Placement(transformation(origin = {-76, -4}, extent = {{-10, -10}, {10, 10}})));
DEMO_v91.M2 m2(redeclare package A = DEMO_v91.A)
annotation(Placement(transformation(origin = {40, -4}, extent = {{-10, -10}, {10, 10}})));
equation
end D91_1;
导入更方便的模型文件D91_3
model D91_3
import DEMO_v91.*;
M1 m1(redeclare package A = A)
annotation(Placement(transformation(origin = {-76, -4}, extent = {{-10, -10}, {10, 10}})));
M2 m2(redeclare package A = A)
annotation(Placement(transformation(origin = {40, -4}, extent = {{-10, -10}, {10, 10}})));
equation
end D91_3;
比较 OpenModelica 中 D91_1 和 D91_3 两种实现的参数接口的屏幕截图
为什么 D91_3 的参数字段不能包含 D91_1 的完整路径?
(请注意,一般情况下,M1 和 M2 可能是从另一个包裹中取出的,而不是从 A 包裹中取出的。)
似乎是 OpenModelica 中的一个选择。 如果修改Demo_v91如下:
replaceable package A = DEMO_v91.A annotation(choicesAllMatching=true);
这是一个标准的 Modelica 注释,允许更方便的选择,那么 Dymola 至少会在两种情况下显示
DEMO_v91.A
作为输入字段的工具提示(并缩短选择)。