身为本人, 实际测试了Python 3.9加上Simulink 2022b, 遭遇过仿真脚本运行到一半就崩溃的状况, 还有测试结果对不上的情况, 对于新手而言, 依照步骤一步步去操作, 便能够轻……
身为本人, 实际测试了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函数去开展实时测试。
微信扫一扫
还没有评论呢,快来抢沙发~