本文研究通过Signal Builder模块生成输入信号的方法。
文章目录
- 1 生成输入信号
- 2 仿真过程
- 2.1 搭建被测模型
- 2.2 搭建Signal Builder输入模块
- 2.3 配置仿真log及仿真
- 3 总结
1 生成输入信号
在汽车的电控软件开发中,经常会在Simulink模型内部进行单元测试。单元测试的本质就是对某一单元(可以是模型级别或者子系统级别)给一组特定的输入信号,通过Simulink仿真得到一组对应的输出信号,然后再与自己期望的输出信号进行比较,从而得出该测试用例是否通过的结论。
Signal Builder模块就是一种产生自定义的输入信号的模块。除此之外,Signal Editor、Test Sequence等模块也可以自定义输入信号,但是博主工作中用Signal Builder模块比较顺手,就在这里介绍这一种。
本文会通过简单的例子,来研究Signal Builder模块的用法,从而为以后的单元测试的学习打下基础。
2 仿真过程
2.1 搭建被测模型
1)新建一个Simulink模型,将其配置为离散求解器,仿真步长配置为0.01;
这里的仿真步长是对应的该模块的调度周期。这里要注意仿真的初始时刻和终止时刻设为0到10秒。
2)在模型中建立一个子系统,用于将车速的mps单位转换为kph单位;
3)模型内部通过一个Gain模块,将mps单位的车速信号乘以3.6,变成kph单位的信号;
至此,简单的demo模型就建立完毕了,功能就是将车速单位进行转换。例如当前车速是1m/s,输出就是3.6km/h。
2.2 搭建Signal Builder输入模块
1)新建一个Signal Builder输入模块如下:
可以观察到模块上有Group1和Signal1的字样。这表示在Signal Builder内部可以设置多个Group,其中每个Group包含多组Signal。在仿真的时候,切换不同的Group就可以达到生成不同的Signal的效果。
2)双击Signal Builder后,可以编辑其中的Group和Signal;
如果需要生成多个组,或者多个信号,可以在菜单栏的Group或者Signal中添加。
3)关于信号线的定义,只需要选中对应的线段,或者端点,就可以在下方的point中看到它的坐标;
例如上图中博主选中(4,0)点,就会显示时刻T=4,坐标值Y=0;
4)将T改成2,信号线就会变成一个斜坡;
这里就用上图的形状作为输入即速度曲线是2到4s为一个匀加速的斜坡,4到6s为1m/s的匀速。
另外,如果要在线上增加端点,操作为按住shift键,点击线段上某一位置。
5)最后,把信号线名字改掉,以及把SignalBuilder的仿真步长也改成0.01;
2.3 配置仿真log及仿真
接下来就是配置仿真log记录数据,以及开始仿真。
1)首先,将信号线连接起来;
2)在输入信号线和输出信号线上右键进行信号线log;
接着,信号线上就会出现一个类似wifi的图标;
3)点击上方的仿真按钮,接着点击右边的信号线显示;
在弹出的信号显示界面就可以选择需要显示的信号线;
这样就能观察到给定的输入信号,经过仿真后的输出是否为我们期望的输出信号;
3 总结
本文研究通过Signal Builder模块生成输入信号的方法,这种方式比较适合简单的子系统测试,或者一些实际情况下不容易达到的边界条件输入的测试。
>>返回个人博客总目录