【问题标题】:How to simulate a disturbance in scilab program (not xcos)如何在 scilab 程序(不是 xcos)中模拟干扰
【发布时间】:2021-06-17 20:41:20
【问题描述】:

你好吗?

我需要使用 scilab 模拟控制系统中的扰动,即 csim 函数用于通过使用阶跃、脉冲、斜坡或任何其他输入来模拟系统的响应,但是,我需要输入例如在 t = 0.5s 内的扰动以查看系统行为。

这给我带来了另一个问题,因为我不知道如何让 csim 或 syslin 来确认两个不同的输入,或者它就像定义两个系统一样简单,一个具有参考输入,另一个具有干扰入口,并对两者求和?.

提前感谢您的帮助。

【问题讨论】:

    标签: controls pid scilab


    【解决方案1】:

    假设你有以下线性时不变系统(A,B,C)

    x'=A*x+B1*v+B2*d
    y=C*x
    

    其中 B=[B1,B2],其中 v 是控制/输入,d 是干扰。如果你想要例如模拟阶跃响应和扰动,您必须定义自己的整体输入 [v;d] 并决定何时应用扰动。这是一个例子:

    function ud = step(t)
        ud = [1;0];
    endfunction
    
    function ud = input(t)
        ud = zeros(t);
        ud(1,:) = 1;
        s = abs(t-0.5);
        // 0.2 is the half-width of disturbance
        ud(2,:) = -0.1*(1-s/0.2).*(s<0.2)
    endfunction
    
    A = [-2 1;
          1 -2];
    B1 = [1;0];
    B2 = [0;4];
    C = [0 1];
    
    sl = syslin('c',A,[B1 B2],C);
    t = linspace(0,5,1000);
    
    x = csim(step,t,sl)
    xd = csim(input,t,sl)
    
    clf
    plot(t,x,t,xd,t,input(t)(2,:))
    legend('step','step and disturbance','disturbance',2)
    

    我在这里做了两个 csim 调用,一个用于通常的阶跃响应,第二个用于扰动阶跃响应。但是,我警告您 csim 使用的 ode 求解器:不连续的输入很容易被遗漏,这就是我在这里应用帽子形干扰的原因。扰动输入的代码旨在允许向量时间输入,以便轻松绘制扰动图。

    【讨论】:

    • 感谢 Stephane,根据您的解释,我将编写一些代码在 PID tf 之后应用干扰以查看行为。我会联系的
    • 好的,根据你的问题,我认为很容易概括到你的 pid 案例,你能验证答案吗?不过,我认为在将 pid 控制应用于自然输入之后,您只需考虑 syslin 和 csim 调用的剩余输入(即干扰)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    相关资源
    最近更新 更多