首页 > 解决方案 > 在可扩展连接器中连接参数变量

问题描述

两个模型通过(空的)可扩展连接器连接。两者之一,在可扩展连接器和parameter变量之间建立连接。

我没想到有任何问题。相反,我遇到了一些问题:

我究竟做错了什么?我错过了什么吗?我的最终目标是将parameter变量链接到可扩展的连接器(例如,通知不同的车辆组件电池单元的数量,比如说),而不需要额外的冗余变量。这可能吗?

测试代码如下:

标签: modelicadymolaopenmodelica

解决方案


你可以使用

Modelica.Blocks.Interfaces.RealOutput num

声明一个可在连接语句中使用的 Real。

编辑: 据我所知,将参数连接到连接器是不可能的。Dymola 将产生错误:

Connect 不是指 connect 中的连接器

官方的方式是使用Modelica.Blocks.Sources.Constant,相当于RealOutput. 您可以直接使用这样的参数:

model bus_param_out
  parameter Real number = 3;
  Modelica.Blocks.Sources.Constant num_con(k=number);
  bus controlBus;
equation 
  connect(controlBus.num, num_con.y);
end bus_param_out;

使用可扩展连接器并连接这些连接器时,您必须确保bus.num只设置一次。其他一切都会导致错误。

尝试用图形界面连接所有东西,这可能会让事情变得清晰。

您可以在 connect 之外使用可扩展连接器,如下所示:

model bus_param_out
  Real number_of_bus;
  parameter Real number = 3;
  Modelica.Blocks.Sources.Constant num_con(k=number);
  bus controlBus;
equation 
  connect(controlBus.num, num_con.y);
  number_of_bus = controlBus.num;
end bus_param_out;

但是尝试声明parameter Real number_of_bus会导致以下错误:

定义方程的可变性:number_of_bus = controlBus.num;高于变量声明的可变性。

因为连接器是时变的并且参数是常数。


推荐阅读