MIL测试即模型在环测试,可以在模型初步开发完成之后,通过纯软件仿真的形式,验证控制模型是否满足功能需求。能尽早地发现模型中的问题,效率较高,是V流程开发中极其重要的一部分,广泛应用于新能源汽车的ECU开发过程。 图中的软件组件测试、软件集成测试都可以通过MIL测试实现。 对于嵌入式ECU来说,其开发过程是一个反复迭代的过程,这就意味着测试工程师会重复地对软件功能进行测试。如果每一轮测试都根据测试用例手动调整接口,将会特别耗费精力,也容易出现错误。自动化测试就是在这样的背景下产生的。 今天,脚主将谈一谈如何在Simulink中实现MIL的自动化测试? Simulink实现自动化测试的方法有多种,脚主这里介绍最常见的方法之一。 简单来讲,MIL的自动化测试可以分为以下三个步骤。 脚主将以下图所示的simulink模型为例进行具体介绍,就是一个与门逻辑。 第一步、测试用例编写。 测试用例主要是根据功能需求来编写的。测试工程师可以不了解具体的模型,把模型当成一个黑盒,直接根据系统需求进行测试场景、期望结果的设计。 对于上述例子的与门模型,可以设计如下图所示的excel测试用例,仅当两输入同为1时输出才为1。 其实对这个模型来说,这4个测试用例是不够的,例如输入值有不为0/1的情况没有考虑。这里仅列举这4个作为范例参考。 第二步、Simulink模型设置 模型设置包括两方面内容:输入输出接口设置、配置参数设置。 模型输入输出接口需要设置为与测试用例一致,这样便于数据的导入以及测试结果对比,所以把上述模型输入输出接口分别改为a/b/c,如下图所示。 配置参数设置包括求解器、数据输入输出设置。 求解器设置主要根据测试用例的需求设置仿真时间、求解器选择、仿真步长等,这些也可以通过自动化代码进行不同测试用例的差异化设置。本例中进行逻辑需求验证,所以这里运行一个步长即可,选择Stop time=0。 数据输入输出设置,这是最为关键的一步,一定要保证输入数据的名称与模型的Inport名称一致,所以这里Input选择[0,a]、[0,b]。这样在进行模型仿真时,才可以把workspace中的数据a/b作为输入信号导入模型,实现模型的正常仿真计算。模型的输出会通过yout输出至workspace。 第三步、自动化测试代码编写 自动化测试代码主要包括3个指令:xlsread、sim、xlswrite。 先用xlsread把测试用例的输入和期望输出读取进来;借助for循环,实现每一个测试用例的单独执行,这里会用到sim(‘XX.mdl’),把执行完的结果与期望的结果对比即可获得测试结果;最后把测试结果通过xlswrite写入excel。 并不是所有的测试结果都是一个具体的期望数值,有的可能是一个范围,有的可能只是一种状态,需要我们去设计一个合理的评判标准。当我们不能通过某一标准去识别测试结果时,可以把测试结以Map的形式反馈至测试报告中,以便做进一步分析。 具体代码如下图所示。 运行自动化测试代码,得到以下结果。 4个测试用例都通过,说明模型基本正确。 以上,简要介绍了MIL自动化测试的方法,不妥之处,欢迎交流。 文章来源【新能源汽车控制】版权归原作者所有 |