Logic Modelica中的时间和条件

Logic Modelica中的时间和条件,logic,modelica,Logic,Modelica,嗨,我有一些关于这个事件的谜题,以及什么时候在Modelica。下面是我的代码: model test Integer bar(start=5, fixed=true); equation when (time < 2) then bar = 1; end when; annotation(experiment(StopTime=3)); end test; 模型试验 整数条(开始=5,固定=true); 方程式 当(时间

嗨,我有一些关于这个事件的谜题,以及什么时候在Modelica。下面是我的代码:

model test
  Integer bar(start=5, fixed=true);
equation 
  when (time < 2) then
    bar = 1;
  end when;
  annotation(experiment(StopTime=3));
end test;
模型试验
整数条(开始=5,固定=true);
方程式
当(时间<2)那么
bar=1;
结束时;
注释(实验(停止时间=3));
结束试验;

我的问题是,为什么当时间少于2时,我得到的是5而不是1?在这种情况下,我如何理解事件(时间<2)?Modelica中的when子句与其他编程语言(如c)有什么区别。

只有当条件变为真时,
when
方程才有效。在您的情况下,条件
time<2
从一开始就是真的,只会变为假

when
-块可以有意转换为

b = time < 2;

if not(pre(b)) and b then
  bar = 1;
else
  bar = pre(bar);
end 
b=时间<2;
如果不是(前(b))和b,则
bar=1;
其他的
巴=预(巴);
结束

有关更多信息,您可以参考规范。

只有当条件变为真时,方程才有效。在您的情况下,条件
time<2
从一开始就是真的,只会变为假

when
-块可以有意转换为

b = time < 2;

if not(pre(b)) and b then
  bar = 1;
else
  bar = pre(bar);
end 
b=时间<2;
如果不是(前(b))和b,则
bar=1;
其他的
巴=预(巴);
结束

有关更多信息,您可以参考规范。

只有当条件变为真时,方程才有效。在您的情况下,条件
time<2
从一开始就是真的,只会变为假

when
-块可以有意转换为

b = time < 2;

if not(pre(b)) and b then
  bar = 1;
else
  bar = pre(bar);
end 
b=时间<2;
如果不是(前(b))和b,则
bar=1;
其他的
巴=预(巴);
结束

有关更多信息,您可以参考规范。

只有当条件变为真时,方程才有效。在您的情况下,条件
time<2
从一开始就是真的,只会变为假

when
-块可以有意转换为

b = time < 2;

if not(pre(b)) and b then
  bar = 1;
else
  bar = pre(bar);
end 
b=时间<2;
如果不是(前(b))和b,则
bar=1;
其他的
巴=预(巴);
结束

有关更多信息,请参阅规范。

Tobias的回答是正确的。但是我认为对于初学者来说,调用
pre
构造或将它们发送到规范中可能有点令人畏惧。因此,除了托拜厄斯的答案,我还要指出感兴趣的读者,以及在我的书中。特别感兴趣的(我怀疑)是当和它与有什么不同,如果托拜厄斯的答案是正确的。但是我认为对于初学者来说,调用
pre
构造或将它们发送到规范中可能有点令人畏惧。因此,除了托拜厄斯的答案,我还要指出感兴趣的读者,以及在我的书中。特别感兴趣的(我怀疑)是当和它与有什么不同,如果托拜厄斯的答案是正确的。但是我认为对于初学者来说,调用
pre
构造或将它们发送到规范中可能有点令人畏惧。因此,除了托拜厄斯的答案,我还要指出感兴趣的读者,以及在我的书中。特别感兴趣的(我怀疑)是当和它与有什么不同,如果托拜厄斯的答案是正确的。但是我认为对于初学者来说,调用
pre
构造或将它们发送到规范中可能有点令人畏惧。因此,除了托拜厄斯的答案,我还要指出感兴趣的读者,以及在我的书中。特别感兴趣的(我怀疑)是当和它与如果你的平均值变为

时的以及它与的区别,这表明情况应该从假变为真。谢谢。@user3658215是的,“成为”的重点很重要。谢谢你的评论。我在这方面修改了答案。你的平均值变为,这表明条件应该从FALSE变为TRUE。谢谢。@user3658215是的,“成为”的重点很重要。谢谢你的评论。我在这方面修改了答案。你的平均值变为,这表明条件应该从FALSE变为TRUE。谢谢。@user3658215是的,“成为”的重点很重要。谢谢你的评论。我在这方面修改了答案。你的平均值变为,这表明条件应该从FALSE变为TRUE。谢谢。@user3658215是的,“成为”的重点很重要。谢谢你的评论。我在这方面修改了答案。