我想模拟一个基于能量工作的质量弹簧模型的控制器:
model model
//parameters
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;
但这会导致错误消息:
翻译错误
展平模型时出错
如果您能帮助我了解问题所在以及如何解决,我将不胜感激。
PS1。 SIMULINK也无法完成!
PS2。可以在这里看到新版本的代码。
P.S.3. According to this discussion on Discord, the algorithm
section was not really meant for casual relations. More information about the keyword is here.