2

我有一个连接器阵列,我想将另一个较小的类似连接器阵列连接到该连接器阵列的一部分。连接器数组、连接器a数组的示例:xbyx < y

connect(a[:], b[1:x]); // works fine
connect(a[:], b[2:x+1]); // gives an error

我在第二种情况下得到的错误(在 Dymola 2012 中检查模型时)说:

Error: Failed to expand connect(a[:], b[2:x+1])

这是语言还是工具限制?是否有解决方法(除了使用 for 循环连接每个单独的连接器)?

4

2 回答 2

2

这一定是一个工具限制,因为规范说:

连接器引用中的下标应为参数表达式或特殊运算符“:”。

我能想到的唯一解决方法是一个 for 方程或更明显的方法:向 Dymola 团队提交错误报告。我会为 OpenModelica 做同样的事情(它会生成方程,但是是错误的)。

于 2012-04-24T07:23:25.377 回答
2

我认为我们需要更多代码来了解发生了什么。我没有看到 Dymola 有任何明显的限制。例如,以下代码在 Dymola 2012 FD01 中运行良好:

model SlicedConnectors 
  parameter Integer n(start=5);
  Modelica.Blocks.Interfaces.RealInput a[n];
  Modelica.Blocks.Interfaces.RealOutput b[2*n];
equation 
  connect(a[:],b[1:n]);
  connect(a[:],b[(n+1):(2*n)]);
end SlicedConnectors;

因此,问题似乎并不是切片本身,而是可能更复杂(有关特定连接器、尺寸可变性等的一些问题)。

于 2012-04-27T08:48:04.297 回答