Когда и если в 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 вместо 1, когда время меньше 2? Как я могу понять событие (время < 2) в этом случае? В чем отличие предложения когда в Modelica и другом языке программирования, например c.

2 ответа

Решение

Тобиас ответил правильно. Но я думаю, что для начинающих это может быть немного сложно pre построить или отправить их в спецификации. Поэтому, в дополнение к ответу Тобиаса, я бы указал заинтересованному читателю на этот вопрос, а также на эту главу в моей книге. Особый интерес (я подозреваю) был бы этот подраздел на when и чем он отличается от if,

when Уравнение активно только тогда, когда условие становится истинным. В вашем случае условие time < 2 верно с самого начала и становится ложным.

when-блок может быть преднамеренно переведен на

b = time < 2;

if not(pre(b)) and b then
  bar = 1;
else
  bar = pre(bar);
end 

Для получения дополнительной информации вы можете обратиться к спецификации https://modelica.org/documents/ModelicaSpec33Revision1.pdf.

Другие вопросы по тегам