Следующая простая модель верна и работает в дымоле:
model new_timer
Modelica.Blocks.Logical.Timer timer;
Real my_time( start=0);
equation
timer.u=true;
my_time=timer.y;
end new_timer;
Однако приведенный ниже пример верен во время «проверки» с помощью dymola, но не работает во время моделирования:
model new_timer
Modelica.Blocks.Logical.Timer timer;
Real my_time( start=0);
algorithm
timer.u:=true;
my_time:=timer.y;
end new_timer;
Я задавался вопросом и искал способ заставить последнее работать. Ошибка, о которой сообщает dymola, выглядит следующим образом:
Failed to generate code for an algebraic loop
involving when equations or algorithms with when parts.
Unknowns:
my_time
timer.entryTime
timer.u
timer.y
Equations:
when timer.u then
timer.entryTime = time;
end when;
timer.y = (if timer.u then time-timer.entryTime else 0.0);
algorithm
timer.u := true;
my_time := timer.y;
You may be able to cut the loop
by putting 'pre' around some of the references to
unknown continuous time variables in when parts or when conditions.
Translation aborted.