You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置S-Function输出以在Simulink中获取系统单位阶跃响应

修改方法

你只需要修改S-Function的两处代码即可实现需求:

  • 调整直接馈通标志:因为需要输出输入量u,属于直接馈通场景,需要把初始化部分的s.DirFeedthrough从0改为1
  • 补充case3的第三个输出项:在输出分支里增加第三个输出为输入量u

修改后的完整S-Function代码如下:

function [sys,x0,str,ts]=massamola_sfcn(t,x,u,flag,x10,x20)
switch flag
    case 0      %初始化
        str=[];
        ts = [0 0];
        s = simsizes;
            s.NumContStates=2;
            s.NumDiscStates=0;
            s.NumOutputs=3;
            s.NumInputs=1;
            s.DirFeedthrough=1; % 这里修改为1,开启直接馈通
            s.NumSampleTimes=1;
         sys = simsizes(s);
         x0 = [x10;x20];
    case 1      %计算微分
        sys = massamola(t,x,u);
    case 3          %输出
        sys(1) = x(1); % 位置
        sys(2) = x(2); % 速度
        sys(3) = u; % 新增:输出输入的阶跃信号
    case {2 4 9}    % 离散状态更新、计算下一个采样时刻、终止
        sys = [];
    otherwise
        error(['unhandled flag=',num2str(flag)]);
end

Simulink侧操作

S-Function的参数配置保持原有设置即可,之后将S-Function的三个输出端口分别接入Scope的三个输入,运行模型后就能同时看到阶跃输入信号、位置响应、速度响应三条曲线,和你预期的效果一致。

内容的提问来源于stack exchange,提问作者user13053456

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 21:15:03