我有一系列连接器,我想将另一个较小的类似连接器阵列连接到此连接器阵列的一部分。 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循环连接每个连接器)?
答案 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;
所以它似乎不是切片本身就是问题,但可能更复杂(关于特定连接器,尺寸变化等等)。