Modelica:导入其他模型的变量

时间:2015-11-18 15:46:11

标签: modelica

我尝试编写一个模型(修复),其中我想使用不同模型(房间)的变量:该变量被称为:room.Temp。 如果我在模型中使用"修复"变量:room.Temp - >我收到一条错误消息:使用未声明的变量room.Temp。

我是否必须在我的模型中导入变量"修复" ? Thanx为您提供帮助

3 个答案:

答案 0 :(得分:3)

在您的情况下,可能会使用inner / outer个关键字。

我不知道您的模型的确切细节和目的,但我认为room.Temp代表了整个模型中其他组件应该知道的室温。

例如,您可以查看Modelica.Fluid.Examples中的任何示例。在这里,您会看到system(小写' s')模型被定义为类inner的{​​{1}}实例 - 一个包含多个通用的模型变量(环境压力和温度等)应该是示例中其他组件所知的。

Modelica.Fluid中的许多组件需要类Modelica.Fluid.System的{​​{1}}实例 - 并且应该命名为outer。例如,请参阅System

在实例化模型时应用system关键字(在Dymola中,将其拖到画布上,右键单击,选择Modelica.Fluid.Interfaces.PartialTwoPort并勾选inner)。

在您的情况下,如果您的View Attributes类引用名为' room'的外部实例,则应确保您只有{strong>一个的{ {1}}类,它被称为Inner(不是FixRoom或其他)。 room类中的注释room1room_1defaultComponentName可以为您提供帮助(请参阅defaultComponentPrefixes中的注释)。

祝你好运, Rene Just Nielsen

答案 1 :(得分:3)

我不知道您需要哪种先进的解决方案,但我能看到的最简单的解决方案如下:我假设您的模型看起来像这样:

model Room
  Real temp;
end Room;
model Fix
  Real room_temp /* = ... Room.temp*/;
end Fix;

model Combined
  Room room;
  Fix fix;
end Combined;

然后添加"输入"在" room_temp"前面并将一行更改为:

Fix fix(room_temp=room.temp);

将room_temp更改为连接器使其更加图形化。

答案 2 :(得分:2)

我猜你没有在“修复”模型中实例化“房间”模型。你能在这里添加你的代码吗?