переход false-true при инициализации OpenModelica - PullRequest
0 голосов
/ 14 февраля 2020

У меня возникла проблема с инициализацией Modelica. Я хочу смоделировать начальный шаг конечного автомата, и я хотел бы, чтобы начальное состояние начиналось с ложного и мгновенно становилось истинным в начале симуляции.

equation
      OUTPUT=active;
    algorithm
      when change(INPUT) then X:= not X; reinit(t,0); end when;
    initial algorithm
      active:=true;

Вот код. Переменные INPUT, OUTPUT и X имеют логический тип. INPUT - это переменная, которая изменяет состояние (с истинного на ложное и наоборот).

Код выполняет установку активной переменной в значение true при инициализации. То, что я хотел бы получить, это то, что он начинается с ложного и становится истинным в момент времени t = 0; в основном я хотел бы видеть переход от ложного к истинному в первый момент симуляции. Возможно ли это?

1 Ответ

0 голосов
/ 21 февраля 2020

РЕДАКТИРОВАТЬ 2: Глядя на эту проблему , используя initial() для предложения when решает проблему.

model Test
  Boolean x(start=false) "state";
  Boolean u;
  Modelica.Blocks.Interfaces.BooleanOutput y;
equation
  u=true;
  when initial() then
    x = not pre(x);
  elsewhen edge(u) then
    x = not pre(x);
  end when;
  y=x;
end Test;

Глядя на отладчик OpenModelica, сначала x получает назначенное начальное значение false, затем переходит в предложение when и устанавливает его в true.

enter image description here

...