Когда и если в 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.