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

如何用时间序列预填充Simulink数据存储(Simulink.Signal)而非仅设初始值

解决Simulink数据存储预填充测试需求的可行方案

针对你用基础工作区Simulink.Signal创建数据存储、需在测试阶段预填充全周期时间序列的需求,以下是无需频繁替换模块或添加冗余变体的可行方案:

方案一:仿真回调+模块使能控制(无工具箱依赖)

这个方案通过全局开关控制生产/测试模式,结合回调实现测试数据的实时注入:

  • 定义全局模式变量:在基础工作区创建test_mode = true;,测试时设为true,生产时设为false
  • 控制Write模块使能:给所有需要禁用的Data Store Write模块添加使能端口,将使能信号设为~test_mode(生产模式下正常写入,测试模式下禁用)
  • 准备测试时间序列:在基础工作区创建测试数据,比如:
    test_ds_data = timeseries(sin(0:0.1:10), 0:0.1:10); % 按模型仿真步长生成对应时间序列
    
  • 添加测试数据写入模块:在模型中添加MATLAB Function模块,设置采样时间与数据存储更新频率一致,模块代码如下:
    function write_test_data()
        persistent idx
        if isempty(idx)
            idx = 1;
        end
        global test_mode test_ds_data your_signal_name
        if test_mode
            % 按仿真步序写入测试数据
            assignin('base', 'your_signal_name', test_ds_data.Data(idx));
            idx = idx + 1;
            % 超出序列长度时保持最后一个值(可按需改为循环)
            if idx > length(test_ds_data.Data)
                idx = length(test_ds_data.Data);
            end
        end
    end
    
  • 设置模块优先级:将这个MATLAB Function模块的执行优先级设为高于所有Data Store Read模块,确保每步仿真先写入测试数据

方案二:基于仿真时间的动态数据匹配

如果需要严格按仿真时间匹配测试数据(而非步序),可以用仿真回调实现:

  • 同方案一,定义test_mode变量并控制Write模块使能
  • 准备测试时间序列,确保时间戳覆盖全仿真周期
  • 创建MATLAB脚本update_test_data.m:
    function update_test_data()
        global test_mode test_ds_data your_signal_name
        if test_mode
            t = get_param(bdroot, 'SimulationTime');
            % 找到与当前仿真时间最接近的测试数据点
            [~, idx] = min(abs(test_ds_data.Time - t));
            your_signal_name = test_ds_data.Data(idx);
        end
    end
    
  • 配置仿真回调:在模型的PostOutputFcn回调中添加update_test_data;,确保每步仿真后更新数据存储值

如果有Simulink Test工具箱,可通过测试 harness 完全隔离测试与生产环境:

  • 选中需要测试的子系统,右键选择Test Harness > Create
  • 在生成的harness中,将原Data Store Read模块的逻辑入口替换为From Workspace模块,连接预定义的测试时间序列
  • 测试时直接运行harness,生产时运行主模型,无需修改主模型的任何模块

注意事项

  • 测试时间序列的采样时间需与模型仿真步长/求解器配置匹配,避免数据错位
  • 建议用Simulink.Parameter管理test_mode变量,替代全局变量,提升模型规范性
  • 多数据存储场景下,可将测试数据封装为结构体,批量处理写入逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:15:33