科普:嵌入式代码软件在环(SiL)测试的可靠性

关键词:嵌入式系统、软件在环(SiL)、测试、生命周期

01.简介

当前,嵌入式系统开发的大趋势为通过软件实现大量的硬件功能,这导致软件的复杂程度显著上升——代码开发成本和风险也成倍增加。复用已有系统中的软件组件是改进嵌入式系统生命周期的一种可能的解决方案,对代码的可移植性和可测试性有较高要求。

测试的复杂度和成本与代码量正相关,尽早发现可能存在的错误可以避免后续阶段的成本。考虑到软件开发过程的“V”型模型,在软件模块测试(Module tests)和软件集成测试(Integration tests)阶段应该使用 SiL(Software-in-the-Loop)环境。

▲嵌入式系统设计阶段的“V”模型

本文的主要目的在于横向对比应用HiL和SiL测试环境所获得的结果,以证明SiL测试的可靠性。本文被测嵌入式系统针对英飞凌C167CR单片机开发,操作系统选用的是典型的实时操作系统(RTOS,Real Time Operating System)OSEK 操作系统,被测功能为控制直流电机的转速。

02.实践1:HIL测试

硬件在环(HiL)测试是一种无损检测环境,常见的被测设备(Device Under Test, DUT)一般为控制器硬件,如整车控制器VCU(Vehicle Control Unit)、电池管理系统BMS(Battery Management System)。本实践的HiL测试框图如下图所示,带有DUT的接口板是使用NI PCI 6251高速多功能数据采集板完成。

▲HiL测试框图

本实践中,HiL测试由三部分组成:

  • 主机PC(HOST PC):直流电机模型由MATLAB/Simulink实现,并使用Real-Time Workshop和xPC Target编译为xPC实时内核。
  • 目标计算机:直流电机模型通过实时约束运行,模拟信号通过接口板卡转换为物理信号。
  • 嵌入式硬件系统:被测控制算法。

A:直流电机模型

用于直流电动机建模的方程如下所示:

其中,Ia为电机电流,Va为电机电压,Ωm为角速度,Ra为终端电阻,La为终端电感,J为惯性,b为摩擦系数,Km为扭矩常数,Ts为采样周期,T为电机扭矩,TL为负载扭矩,Vb为反电动势电压。

基于上述公式的MATLAB/Simulink离散模型实现如下图所示:

▲直流电机的Simulink离散模型

B:控制算法实现

本实践所采用的控制算法选择的是工业应用最为广泛的PID算法(比例积分微分)。使用积分项的双线性变换法和微分项的反向变换法,即可从下列公式中获得PID算法的递归离散形式:

其中,K是比例常数,τi是积分常数,τd是导数常数,Ts是采样周期。

控制算法是在基于OSEK实时操作系统的10毫秒任务上实现的。角速度的测量方法如文献[2]所述,使用 HALL传感器,在1Hz至10kHz范围内的绝对精度小于1Hz。

03.实践2:SIL测试

本实践的SiL测试基于OSEK实时操作系统的仿真,测试框图如下图所示:

  • OSEK实时操作系统、被测控制算法代码和XCP模块一起封装成一个S函数。
  • 仿真操作系统、底层驱动程序、XCP和S函数与MATLAB/Simulink模型中的直流电机模型形成闭环。
  • GUI:Graphical User Interface,图形用户界面。

▲SiL测试框图

XCP主要用于测量和校准嵌入式系统变量,所选用的标定工具为CANApe,也用于保持数据测量值与在HiL环境中所获得的数据测量值一致。通过这种方式可以轻松比较以证明SiL测试的可靠性。

选用四个非抢占式任务:10ms、20ms、40ms和80ms。任务启动延迟及其时间调度如下图所示:

▲数据对比图

SiL测试中,每个任务的执行时间被认为等同于仿真步长,因此不会出现某个任务运行时间过长而影响另一个任务的情况,无需采取特别措施。

外围设备等与处理器相关的一切都在S函数内模拟;硬件驱动器和信号调节电路通过MATLAB/Simulink 模型中的附加系统进行模拟;PWM驱动器模型和HALL传感器模型已经实现。Simulink模型如下图所示:

▲SiL测试中的MATLAB/Simulink模型

04.对比结果与结论

在完成SiL和HiL测试环境的搭建后,对比同一条件下的测试结果即可证实SiL的可靠性。为此,使用相同的参数对控制算法进行校准,将角速度设定为1000rpm。通过对比角速度反馈值(模拟步长均为200us)可知,两种测试结果完全相同,SiL的可靠性得到证实。

▲SiL与HiL的测试结果

然而,通过测试不同步长下的实际模拟执行时间可知,模拟的时间越短,实际执行时间就越长,因此必须权衡模拟精度和实际执行时间,选择一个折中、合适的模拟步长。显然,SiL环境下主机PC的性能对实际执行时间的影响很大。

▲不同步长下,模拟1分钟所需的实时执行时间

模型的复杂性同样会对实际执行时间产生影响。SiL最大的优点在于不会受到时间约束和模型复杂性的约束,而HiL测试下,使用复杂模型则可能会导致数据损坏,能够使用HiL测试的模型复杂性与真实HiL硬件的处理能力和可用资源密切相关,正确的模型选择便成为HiL测试的难点。

综上所述,SiL测试对于嵌入式代码测试是可靠的。最大的缺点与模拟步长参数有关:实现模型的精度越高,执行时间越长。因此得出结论:

当测试目标为与硬件相关的参数时,如通过测量操作系统的空闲任务来测量处理器负载、任务激活延迟、任务运行时间值、中断锁定时间、资源锁定时间等,SiL测试是不可靠的。

当测试目标为软件功能时,SiL是可靠的。

此外,模块之间的接口也可以在集成阶段进行测试。

参考文献

[1] Muresan M, Pitica D. Software in the loop environment reliability for testing embedded code[C]//2012 IEEE 18th international symposium for design and technology in electronic packaging (SIITME). IEEE, 2012: 325-328.

[2] Muresan M, Pitica D. Software in the loop environment reliability for testing embedded code[C]//2012 IEEE 18th international symposium for design and technology in electronic packaging (SIITME). IEEE, 2012: 325-328.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/650861.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

函数模板与类模板初阶

如果要写一个交换函数,不同类型的话调用不同的交换函数,如果使用重载的话只能解决函数名相同但是会根据参数类型调用不同的函数。即使这样也依旧要写很多不同类型的swap交换函数 函数重载的交换函数 仔细观察会发现除了类型不同其他的函数结构什么的都一…

编程新手必看,Python3中继承知识点及语法学习总结(28)

1、继承 在Python 3中,继承是面向对象编程的一个核心概念,它允许我们创建一个新的类(称为子类或派生类),该类继承另一个类(称为父类或基类)的属性和方法。通过这种方式,子类可以重用…

Linux下基本指令-掌握

目录 为什么要学命令行 Linux下基本指令-掌握 ls 指令 pwd命令 cd 指令 touch指令 mkdir指令(重要): rmdir指令 && rm 指令(重要): man指令(重要): cp指…

ThingsBoard远程RPC调用设备

使用 RPC 功能 客户端 RPC 从设备发送客户端 RPC 平台处理客户端RPC 服务器端 RPC 服务器端RPC结构 发送服务器端RPC 使用 RPC 功能 ThingsBoard 允许您从服务器端应用程序向设备发送远程过程调用 (RPC),反之亦然。基本上,此功能允许您向设备发送命…

【Flutter】自动生成图片资源索引插件二:FlutterAssetsGenerator

介绍 FlutterAssetsGenerator 插件 :没乱码,生成的图片索引命名是小驼峰 目录 介绍一、安装二、使用 一、安装 1.安装FlutterAssetsGenerator 插件 生成的资源索引类可以修改名字,我这里改成R 2. 根目录下创建assets/images 3. 点击image…

HPE Aruba Networking推出新一代Wi-Fi 7接入点 助力企业高效应对安全、AI与物联网挑战

HPE ArubaNetworking推出的全新Wi-Fi 7接入点,提供全面的AI就绪边缘IT解决方案,旨在为用户和物联网设备提供安全、高性能的连接服务,以实现数据的捕获和路由,从而满足AI训练和推理需求 休斯顿-2024年4月23日-慧与科技(NYSE: HPE)近…

Python浅谈清朝秋海棠叶版图

1、清朝疆域概述: 清朝是我国最后一个封建王朝,其始于1616年建州女真部努尔哈赤建立后金,此后统一女真各部、东北地区。后又降服漠南蒙古,1644年入关打败农民起义军、灭南明,削三藩,复台湾。后又收外蒙&am…

el-input-number 只能输入整数,最小值1,最大值5

<el-form-item label"排序" prop"name" > <el-input-number v-model"form.sort" placeholder"请输入唯一排序" :min1 :max"5" :precision"0" class"custom-input-number" /> </el-form-…

addr2line + objdump 定位crash问题

目录 背景 godbolt汇编工具 tombstone ARM平台汇编知识 寄存器介绍 常见汇编指令 函数入参及传递返回值过程 入参顺序 变参函数 虚函数表 典型问题分析过程 Crash BackTrace Addr2line objdump 拓展 为什么SetCameraId函数地址偏移是40(0x28) 参考 背景 最近在…

新兴游戏引擎Godot vs. 主流游戏引擎Unity和虚幻引擎,以及版本控制工具Perforce Helix Core如何与其高效集成

游戏行业出现一个新生事物——Godot&#xff0c;一个免费且开源的2D和3D游戏引擎。曾经由Unity和虚幻引擎&#xff08;Unreal Engine&#xff09;等巨头主导的领域如今迎来了竞争对手。随着最近“独特”定价模式的变化&#xff0c;越来越多的独立开发者和小型开发团队倾向于选择…

目前软件测试前景怎么样?有哪些机遇和挑战?

随着信息技术的快速发展&#xff0c;软件已经成为了我们生活中不可或缺的一部分。而软件的质量和稳定性也直接关系到用户的使用体验和企业的竞争力。因此&#xff0c;软件测试作为软件质量保证的重要环节&#xff0c;其前景也备受关注。 首先&#xff0c;从行业角度来看&#x…

javaEE--多线程学习-进程调度

进程调度不明白&#xff1f;看这一篇文章就够了&#xff0c;逻辑衔接严密&#xff0c;文末附有关键面试题&#xff0c;一个海后的小故事让你瞬间明白这里面的弯弯绕绕&#xff01; 目录 1.什么是进程&#xff1f; 2.进程控制块&#xff08;PCB&#xff09; 2.1 一个PCB就是一…