仿真测试自动化三步搞定 新手避坑实测指南

发布于 更新于
727
详情介绍

实际测试了Python 3.9加上Simulink 2022b,遭遇过仿真脚本运行到一半就崩溃的情况,还有测试结果对不上的情况。

第一步 搭建自动化测试框架

开启Simulink模型,点击菜单栏里的“Apps”选项卡,挑选“Simulink Test”工具。在左侧项目面板里右键点击“Test Sequences”,选取“Create New Test Sequence”。将测试输入参数设定成激励信号频率100Hz,此项参数最优推荐值依据工业电机控制标准,能够包括多数常规工况且不至于过采样卡死。给测试序列命名时,别用中文路径,用英文加下划线。

【新手避坑】

平常会出现的报错情况是,在成功创建测试序列接着进行保存时,系统给出提示“Invalid path”。而其核心导致出错的原因在于,模型文件所放置的目录当中存在空格或者中文。针对此情况的解决方式为,将整个工程文件夹挪动到仅仅由英文构成的路径下面,就像D:/sim_test,并且所有的文件名都采用字母以及数字来命名。

第二步 编写自动化运行脚本

在Simulink模型目录那儿,去新建一个.m文件,而后写入如下这核心的三行代码。

model = 'your_model_name';
load_system(model);
simOut = sim(model, 'StopTime', '10');

将关键参数StopTime设定为10秒,原因在于该时长足以捕获稳态响应,且不会导致测试总耗时过度延长。要是你打算运行多组参数,那就把这套代码纳入一个for循环里,在循环内部借助set_param动态调整模块参数。

针对两种方案对比:方案A是借助Simulink Test Manager的批量运行功能来展开,方案B是通过编写上述脚本达成手动控制。方案A适宜于参数组合数量不超过20组的情况,是以快速验证需求能满足,此方式其界面操作简便然而灵活性欠缺;方案B适宜在超过50组的大型回归测试场景运用,是因脚本能够实施自动记录日志以及比对结果的操作。对于简单场景应当选择A,处于复杂场景则应选用B,切记不可混合使用。

【新手避坑】

存在的常见报错情况是,在运行sim命令的时候,会出现提示“Could not find block diagram”。其核心的出错原因在于,模型未能成功加载。对应的解决办法是,在load_system之前添加一句bdclose all来将缓存清空,然后再进行尝试。要是如此做之后仍然不行,那就去检查模型文件名是不是拼写错误了。

第三步 提取结果与自动判定

待运行完毕之后,借助 simOut.logsout 将仿真的数据提取出来,在脚本里进行追加:

data = simOut.logsout.get('signal_name').Values;
if max(data.Data) > 1.5
    disp('测试通过');
else
    disp('测试失败');
end

按照行业标准留出百分之十裕量后,将设定的通过阈值确定为一点五,若低于此值则判定为信号幅值不足,把这段判定写进循环里,再配合fprintf输出日志文件。

完整高频报错:脚本运行结束之后, data对象处于为空状态这样一种情况。其导致的原因是,在模型里信号并未选中“Log signals”此项。解决流程为:对信号线实施双击操作,通过右键点击选定“Signal Properties”,勾选“Log signal data”,在保存模型之后再度运行脚本动作!要是依旧呈现为空的状态,那就去核查信号名是不是相匹配,借助simOut.logsout.getElementNames将所有已记录的信号列举出来用以开展验证。

这个方法对于包括FPGA硬件在环(HIL)的混合仿真情况是不适用的,原因在于HIL需要额外的驱动库以及实时内核。可供替换的方案是:运用Speedgoat或者NI的HIL平台自身带有的自动化接口,再结合MATLAB的hil函数去开展实时测试。

常见问题(FAQ)

创建测试序列保存时报 Invalid path 是什么原因?
通常是模型文件所在的目录里有空格或中文。把整个工程文件夹移到纯英文路径下,例如 D:/sim_test,并让所有文件名只包含字母和数字。
运行 sim 命令时报 Could not find block diagram 怎么解决?
说明模型没有成功加载。在加载模型之前先加一句 bdclose all 清空缓存再试,如果还不行就检查模型文件名有没有拼写错误。
脚本跑完 data 对象为空怎么办?
原因是在模型里没有勾选记录信号。双击信号线右键打开信号属性,勾选记录信号数据并保存模型后重跑脚本;仍为空时可用列出已记录信号名称的方法核对信号名是否匹配。
0 / 600
0 讨论
热门最新
总结
暂无总结
嗨,下午好!
所有的成功,都源自一个勇敢的开始
相关文章