MiL 和 SiL简单介绍

MiL 模型在环测试

物理测试被广泛用于表征机械系统。但是,在许多情况下,现在可以使用数学模型来充分描述部分试样的行为。因此,可以构想出将样品分成物理部分和虚拟部分的测试系统,即实时计算机模拟,这具有增强便利性和降低成本的潜力。上述描述的就是就是在我们汽车行业经常说的MIL模型在环测试。
MIL(Model in the Loop),模型在环测试,用模型驱动工程开发嵌入式系统的时候,在开发的初期阶段及建模阶段中进行的仿真方式。与HIL测试(硬件在环测试)不同,HIL测试是用于代码验证的方法,而我们这一期要讲的MIL测试是一种设计验证的方法。
在这里插入图片描述
MIL测试通俗一点理解就是对模型在模型的开发环境下(如SIMULINK)进行仿真,通过输入一系列的测试用例,验证模型是否满足了设计的功能需求。MIL是所有测试中最关键的,因为MIL的test accept criterion必须源于功能需求,没有其它的东西可以参考。而SIL/PIL的测试用例往往都是借用MIL的测试用例,一旦在MIL这个阶段的使用了错误测试用例,即使后面的测试都通过了,这个错误还是会产生影响。
模型在环是较节省成本的嵌入式系统测试方式。模型驱动开发的开发及仿真环境有MATLAB/Simulink。机械系统通常在实验室中进行测试,以评估其动态特性。例如,道路车辆、飞机或建筑结构的新设计可以用这种方法来评估。此类测试通常包括使用执行器驱动机械系统以模拟其载荷条件,并测量系统在运动、力应变等方面的响应。模型在回路测试是一种测试样本部分真实部分虚拟的新模式。通过实时计算机仿真实现了虚拟部分。
根据应用程序的不同,这种测试方法也有许多潜在的优点:
1)仅对动力学未知的关键部件进行物理测试,降低了物理测试仪器的成本和复杂性。
2)一个新设计的系统可以测试,即使有些部分实际上还没有实现,这些部分是用模拟代替的。
3)有时很难在物理上创造在实验室中的使用条件,例如实际环境或空气动力,这些影响可以用计算机模型更准确地表示。
4)模拟系统的特性可以改变以表示可选配置,这比改变物理组件更方便。

SiL 系统在环测试

SIL测试(software in-the-loop)简单介绍
SIL测试,通过运行系统环境中的车辆模型和虚拟ECU中的I/O模型来模拟控制器所需的各种传感器信号,并能接收台架传感器的信号和虚拟ECU发出的控制信号,从而与被测虚拟ECU的代码信息(包括基础软件和硬件参数等)和系统环境模型相连接,最终实现闭环仿真对控制系统进行测试验证。
随着电控系统技术的飞速发展,ECU在车辆上的应用领域越来越广泛,算法日益复杂,功能逐步增多。针对日益增长的ECU功能测试需求,电控测试需要更多的测试时间,造成车辆试验的成本逐渐增加。软件在环仿真(SIL)能通过设置ECU的相关信号与仿真平台相连,实现目标控制器算法的在线或离线仿真,从而为开发电控系统的算法节约时间、减少成本。
在这里插入图片描述

由于目前许多汽车公司已经从传统的开发模式转移到V形开发模型,以减少重复的代码编制和实车试验。在V形开发模式下,通过SIL平台一方面可在开发过程中更早介入,以确保在早期的开发过程中通过对嵌入式软件的测试及时发现存在的问题,提高改进的效率,从而很大程度上可以节约ECU功能开发成本和周期。
在SIL(software in-the-loop)测试中,用相应自动生成的软件的可执行目标代码替换了MIL测试中的模型。自动代码生成器,通常建立在标准化的建模准则下,并且可以帮助系统工程师使用建模语言的功能。建模和仿真工具环境,提供了一个预测试步骤实现从模型生成源代码,模型的软件体系结构会决定模块化,数据结构和生成的源代码的大小。然后,系统编译运行模拟环境的基础主机PC的源代码,并自动生成SIL测试所需的代码,使用与MIL测试相同的测试用例输入,并记录测试输出的值,最后比较输出是否与MIL测试输出一致。 MIL使用浮点算术执行这些基础计算,使用特定于工具的库,这些库为基本模型块提供必要的功能和计算。然而SIL测试使用实际代码在定点执行计算,这反映了最终目标系统中将进行的实际计算。并非所有工具都在SIL中提供定点执行。这种方法可以检测出由于可变数据大小的设计选择不当而引起的任何可能的溢出和被零除故障的发生。
在这里插入图片描述

SIL测试中被测对象是Simulink中开发算法自动生成的c代码。但是在自动生成c代码时,可能由于代码自动生成工具本身的原因比如没有正确设置或者其他的一些未知原因,自动生成代码过程中可能会引入一些错误,导致生成的c代码可能会有错误。所以我们就需要验证自动生成的c代码(使用设计主机编译器)是否满是否满足要求,也就是保证MIL测试中算法模型与c代码的一致性。这就是我们常说的SIL测试。
其中上述提到的自动生成代码过程中可能引入的错误可以分为两类:
①代码生成用户:代码自动生成过程是一个可以定制化的过程,那么用户在这个过程中做一些自己的定制也是被允许的,但是如果用户定制化的内容没有经过严格、充分的验证,那么也是很容易引入bug的;
②代码生成工具:自动生成代码的工具本身是一种软件,所以和其他软件一样,没有哪个软件能够保证在任意使用场景下都能够正常运行、不出现bug;
虽然我们选择自动生成代码的工具来生成c代码,说明我们还是信任我们所用的生成工具的,也就是说自动生成工具生成代码过程中出现错误的概率几乎为零,但是我们还是得“小心行事”,确保这一过程生成的c代码没有错误,保证后续的PIL(Processor in-the-loop)处理器在环测试以及HIL(Hareware in-the-loop)硬件在环测试是无误的。况且,SIL测试基本上需要的时间很少,所以基本不增加开发时间又能给我们的整个开发测试流程再加一个保障,做一个SIL测试还是非常值得的。
在MATLAB/simulink中如何使用SIL测试呢?
在这里插入图片描述

在MATLAB/simulink中SIL测试模型分为两个,其中一个是测试环境模型,提供输入信号源,设置为Normal模式,另一个是被测模型,存储为独立的slx。在测试环境模型中使用两个Model Referrence引用被测模型,并设置其中一个为Normal模式,另一个为SIL模式,然后进行仿真。

更多内容 请关注公众号自动驾驶解决方案

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_49762095/article/details/108990379