1
model try
  Real x(start = 1);

algorithm 
  when x >= 7 then
      reinit(x, 5);
  end when;

equation
      der(x) = 1 ;

end try;

when每当保护条件从 false 更改为 true 时,都应该触发该语句。但在 OpenModelica 中并非如此。tryOpenModelica 中的示例显示when仅触发一次。我想知道这是OpenModelica的错误还是我的一些误解。

4

1 回答 1

4

你是对的。我很确定这将是 OpenModelica 中的一个错误。该模型的工作原理与您在 Dymola 2013 中所期望的一样。

我的猜测是,这与您的 when 条件涉及x并且内部的语句最终改变x(相同的变量)这一事实有关。可能是它没有注意到监视器函数中的 reinit 用于确定 when 子句应该触发的点。

于 2012-09-17T21:09:48.767 回答