Modelica:混合连接器和直接输入

时间:2015-04-22 13:51:28

标签: modelica openmodelica

以下Modelica软件包 - 虽然既不特别有用也不感兴趣 - 不会产生任何警告。

var test = function(){
    return{
        value: "hi",
        func1: function(){
            func2();
        } // <-- no invocation here, make `func1` a method not `undefined`
    };
}();

function func2(){
    alert(test.value);
}

test.func1(); // "hi"

但是,当package P connector C Real c; end C; model A input C x; output Real y; equation y = x.c; end A; model B input C inp; output C out; A a; equation a.x = inp; out.c = a.y; end B; end P; 不使用连接器时,如下例所示,会出现警告:以下输入缺少绑定等式:A 。显然,a.x有一个约束方程式。为什么会出现这样的警告?

a.x

1 个答案:

答案 0 :(得分:3)

这里的问题是一个绑定方程。只有一个普通的等式。绑定方程是作为元素的修改而应用的方程,例如

model B
  input C inp;
  output C out;
  A a(x=inp.c) "Binding equation";
equation 
  out.c = a.y;
end B;

请注意,一般情况下,如果两个连接器是连接器,则不应将它们等同,它们应该连接。这将有助于您避免此问题。所以在你的B的第一个版本中:

model B
  input C inp;
  output C out;
  A a;
equation
  connect(a.x, inp); 
  out.c = a.y;
end B;

绑定方程限制的原因与确保组件平衡有关。您可以在规范或Modelica by Example中详细了解相关内容。通过使用它作为一个约束方程,它清楚地表明这个方程可用于求解这个变量(即,包含该变量的方程中的项不会消失或生病)。