
1. 基于模型的设计基于模型的设计方法 (MBD, Model Based Design) 采用图形化设计和自动化代码生成不同于基于手工编程和纸上规范的传统编程方法具有如下优点在统一的开发测试平台上允许从需求分析阶段就开始验证并做到持续不断的验证与测试产品的缺陷暴露在产品开发的初级阶段开发者把主要精力放在算法和测试用例的研究上嵌入式代码的生成和验证则留给计算机去自动完成大大缩短了开发周期与降低开发成本。基于模型的设计方法的不同阶段分别采用 MIL/SIL/PIL/HIL 等测试方法有效的对嵌入式代码进行测试和验证。其中MIL, Model in the Loop模型在环测试验证控制算法模型是否满足功能需求SIL, Software in the Loop软件在环测试在PC上验证模型是否与代码功能一致PIL, Processor in the Loop处理器在环测试在目标处理器上验证模型是否与代码功能一致HIL, Hardware in the Loop硬件在环测试在ECU/EPP/整套系统上验证代码是否与需求功能一致。2. MIL假设我们已经在支持MBD的工具如Simulink中使用图形化的方法开发出了AEB的算法现在想要验证该算法是否满足要求那么我们需要开发一个或是有现成的其他工具被控对象模型在这里例子里是一个车辆模型。将控制算法和车辆模型连接起来形成闭环并变换输入和车辆模型状态来对控制算法的功能进行测试。如下图所示3. SIL现在我们将Simulink中开发的算法自动生成为C代码。但是由于代码自动生成工具本身的原因或者代码生成工具没有正确设置或者其他未知原因自动生成代码过程可能会引入一些错误。所以我们需要验证自动生成的代码与算法模型的一致性这就是SIL测试。SIL测试使用与MIL相同的测试用例查看对于相同的测试用例查看其输出是否与MIL阶段一致。为了测试的高效性有时甚至不接入被控对象模型而是对算法模型和生成代码进行相同的输入查看输出是否一致。如下图所示4. PIL将自动生成的代码编译为目标处理器需要的形式并下载到目标处理运行为了防止编译过程引入新的错误此时需要进行PIL测试。PIL测试也是等效性测试其方式与SIL类似不同之处是编译好的算法运行在目标处理器上SIL测试是在算法开发环境进行的如Windows。5. HIL在开发出完整的控制器后有时被控对象整车还未完成开发有时使用真实被控对象进行测试太危险或成本高出于这些不同的原因采用真实控制控制器和虚拟被控对象的HIL测试常常被使用。如下图所示6. 总结四种测试方法各自的特点如下表所示参考文献自动驾驶虚拟仿真测试介绍7MIL、SIL、PIL和HIL是个啥-爱建模MIL/SIL/PIL/HIL的区别与具体定义_zolty-CSDN博客_mil、sil、hil