Включение причинно-следственной связи в моделирование Modelica приводит к ошибке перевода при выравнивании модели
Я хочу смоделировать контроллер для модели масса-пружина, которая работает на основе энергии:
model model
//constants
parameter Real m = 1;
parameter Real k = 1;
parameter Real Fmax = 3;
parameter Real x0 = 1;
parameter Real x1 = 2;
parameter Real t1 = 1;
//variables
Real x, v, a, xy, vm;
initial equation
x = x0;
v = 2;
equation
v = der(x);
a = der(v);
m * a + k * x = F;
algorithm
vm := sign(xy - x)*sqrt(2 * (Fmax * abs(xy - x) + k * (xy^2 - x^2) / 2) / m);
// step signal
if time < t1 then
xy := x0;
else
xy := x1;
end if;
if xy == x then
F := k * x;
else
F := sign(vm - v) * Fmax;
end if;
end model;
Но это приводит к сообщению erorr:
Ошибка перевода
Произошла ошибка при выравнивании модели
Буду признателен, если вы поможете мне узнать, в чем проблема и как я могу ее исправить.
PS1. SIMULINK также не может закончить!
PS2. Новую версию кода можно посмотреть здесь.