连接到一组连接器

时间:2012-04-23 19:17:05

标签: modelica

我有一系列连接器,我想将另一个较小的类似连接器阵列连接到此连接器阵列的一部分。 a数组x个连接符的示例,b一组y个连接符,x < 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循环连接每个连接器)?

2 个答案:

答案 0 :(得分:2)

这必须是工具限制,因为规范说:

  

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

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

答案 1 :(得分: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;

所以它似乎不是切片本身就是问题,但可能更复杂(关于特定连接器,尺寸变化等等)。