Loading... 在基于模型的系统工程中,谈到MIL、SIL、PIL和HIL这四种在环测试方法,下面简要的记录一下它们各自的功能和联系。 # 定义 * MIL:Model in loop,验证控制算法模型是否准确地实现了功能需求; * SIL:Software in loop,在PC上验证代码实现的功能是否与模型一致; * PIL:Processor in loop,在目标处理器上验证代码实现的功能是否与模型一致; * HIL:Hardware in loop,在ECU/EPP/整套系统上验证代码实现的功能是否与需求定义一致。 # MIL MIL就是模型在环,狭义的MIL就是将控制器和被控对象连接起来并形成闭环,让控制器去控制被控对象。通俗一点理解就是对模型在模型的开发环境下(如SIMULINK)进行仿真,通过输入一系列的测试用例,验证模型是否满足了设计的功能需求。MIL是所有测试中最关键的,因为MIL的测试通过准则必须源于功能需求,没有其它的东西可以参考。而SIL/PIL的测试用例往往都是借用MIL的测试用例,一旦在MIL这个阶段的使用了错误测试用例,这个Bug很有可能会最终流出去。 # SIL SIL是一种等效性测试,测试的目的是验证生成的代码和模型在所有功能上是完全一致的。其基本原则一般是使用与MIL完全相同的测试用例输入,将MIL的测试输出与SIL的测试输出进行对比,考察二者的偏差是否在可接受的范围之内。 ![](http://blog.lxalxy.com/usr/uploads/2021/03/1258285951.jpg) 因此这个测试的目的就决定了带不带被控对象模型并不是那么重要。SIL测试一般在PC上完成,对代码的编译器一般是LCC,SDK,MSC等。 # PIL PIL测试与SIL测试的不同在于软件是使用的目标MCU的编译器(Tasking)进行编译链接,也需要运行在目标板上,其基本工作原理如下: ![](http://blog.lxalxy.com/usr/uploads/2021/03/37193761.jpg) PIL的一般流程为:将生成的嵌入式C代码编译为目标文件下载到目标硬件,硬件与PC进行硬件通信方式连接,建立模型的开发环境(如SIMULINK)和硬件开发板上MCU之间的通信通路。开发环境信号源提供信号输入,经过串口传递给目标硬件,经过MCU计算之后通过串口传回Simulink模型。 其测试通过准则是,使用与SIL相同的测试用例输入进行测试时,比较PIL和SIL的输出,如果两者之差在容许范围之内,则测试通过。 此外,PIL测试还能够测量某个功能模块的程序运行时间、堆栈(系统和用户)使用情况等等如下图,这些数据在所有软件功能模块集成之前对软件CPU Load、软件是否有跑飞的风险都是有非常大的帮助的。 # HIL HIL测试的目的是为了验证控制器的,HIL过程中,会把**被控对象**的模型生成C代码并编译成可执行的文件放到工控机上运行,以便工控机替代真实的被控对象,然后把控制器和工控机连接起来,实现闭环控制,从控制器的角度上看,就相当于工作到实际控制系统之中。HIL 经常被用于以下几种情形: * 被控对象非常昂贵,如果控制器不成熟会导致被控对象的损害; * 被控对象失效会危及人身安全; * 开发过程中,先开发出了控制器,而被控对象还没有开发出来。 HILS提供一个平台,能够将各种复杂的被控对象以数学的表示方法作为动态系统追加到测试环境中,它能够很好地仿真被控对象,这些被仿真的被控对象通过传感器等设备作为接口,将控制系统MCU与被控对象的HIL平台连接起来,进行实时仿真。 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏