0

我想模拟一个基于能量工作的质量弹簧模型的控制器:

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.

4

0 回答 0