科普:嵌入式代码软件在环(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.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构(邓俊辉)学习笔记】绪论05——动态规划

文章目录 0.前言1. Fibonacci数应用1.1 fib():递归1.1.1 问题与代码1.1.2 复杂度分析1.1.3 递归分析 1.2 fib():迭代 0.前言 make it work,make it right,make it fast. 让代码能够不仅正确而且足够高效地…

明日周刊-第7期

转眼间就又快到了五一假期,小长假有什么计划吗。封面配图是杭州高架上的月季花,非常好看。 文章目录 一周热点资源分享言论歌曲推荐 一周热点 鸿蒙系统持续扩大影响力:近期,华为官方宣布广东省已有超过600款应用加入鸿蒙系统&…

大模型的研究新方向:混合专家模型(MoE)

大模型的发展已经到了一个瓶颈期,包括被业内所诟病的罔顾事实而产生的“幻觉”问题、深层次的逻辑理解能力、数学推理能力等,想要解决这些问题就不得不继续增加模型的复杂度。随着不同应用场景的实际需求,大模型的参数会变得越来越大,复杂性和规模不断的增加,尤其是在多模…

C# 生成图形验证码

目录 应用场景 开发运行环境 设计 生成内容 生成图片 实现 核心代码 调用示例 小结 应用场景 我们当用户登录系统时经常会用到图形验证码技术,要求用户识别图片中的内容,并正确输入,方可尝试登录。类似的场景还有用户注册或者涉及…

svg图标填充渐变色及CSS鼠标悬停纯色渐变色转换

svg图标填充渐变色及CSS鼠标悬停纯色渐变色转换&#xff1a; HTML&#xff1a; <!--底部导航--> <ul class"milliaNav"> <li class"active"><a href"#"> <svg class"icon" viewBox"0 0 1024 1024&qu…

随手记:树结构翻页和定位指定数据逻辑

业务背景&#xff1a; 树形组件展示数据&#xff0c;数据包含过去数据&#xff0c;现在数据&#xff0c;未来数据&#xff0c;用户在首次进入页面时&#xff0c;展示的是当天的数据&#xff0c;如果当天没有数据&#xff0c;则显示最近一条的过去数据。数据按照时间越长数据会…

【AMBA Bus ACE 总线 5 -- Non-cached master】

文章目录 Non-cached masterNon-cached master 图 1-1 Non-cached master 意思就是,比如对于master0,它想写的时候,就直接发起transaction,它不是对自己的local cache进行操作,比如以non-shareable write 为例,master0在写的时候分别在AW,和 W channel发起命令和数据,见…

CV | 360BEV: Panoramic Semantic Mapping for Indoor Bird‘s-Eye View理解

本文主要是对于论文360BEV的解读和实现。 Paper:2023.03_360BEV: Panoramic Semantic Mapping for Indoor Birds-Eye View 360BEV&#xff1a;室内鸟瞰全景语义映射 arxiv.org/pdf/2303.11910 Code:jamycheung/360BEV: Repository of 360BEV (github.com) Demo:360BEV (jamyche…

win11 修改hosts提示无权限

win11下hosts的文件路径 C:\Windows\System32\drivers\etc>hosts修改文件后提示无权限。 我做了好几个尝试&#xff0c;都没个啥用~比如&#xff1a;右键 管理员身份运行&#xff0c;在其他版本的windows上可行&#xff0c;但是win11不行&#xff0c;我用的是微软账号登录的…

Android 组件提供的状态保存(saveInstanceState)与恢复(restoreInstanceState)

在Android的组件Activity中&#xff0c;有这样一对方法: onSaveInstanceeState 和 onRestoreInstanceState 这两对方法&#xff0c;可以让我在Activiy被异常销毁时&#xff0c;保存状态&#xff1b;以及在Activity重建时&#xff0c;恢复状态。 比如&#xff1a;当我们在输入…

就业班 第三阶段(负载均衡) 2401--4.18 day2 LVS-DR模式

3、LVS/DR 模式 实验说明&#xff1a; 1.网络使用NAT模式 2.DR模式要求Director DIP 和 所有RealServer RIP必须在同一个网段及广播域 3.所有节点网关均指定真实网关 主机名ip系统用途client172.16.147.1mac客户端lvs-server172.16.147.154centos7.5分发器real-server1172.16.…

SpringCloud简介

微服务架构理论 微服务架构概述 Spring Cloud简介Spring Cloud 技术栈SpringBoot和SpringCloud的关系SpringCloud和Dubbo区别对比相关文档 微服务架构概述 微服务是一种架构模式&#xff0c;将单一应用程序划分成一组小的服务&#xff0c;服务之间相互协调、相互配合&#xff0…

OSPF的LSA与特殊区域

Area区域概念 *一个区域维护一张LSDB&#xff0c;路由器详细的链路信息只在这个区域内传播 不是每一台路由器都需要了解所有外部目的地的详细信息 *OSPF网络的层次化设计 通过区域ID标识 骨干&#xff08; Backbone &#xff09;区域&#xff0c;必须是area 0(骨干区域…

milvus对象存储和消息中间件的工厂设计模式分析

milvus对象存储和消息中间件的工厂设计模式分析 需求 根据参数设置创建mq和storage mq有kafka,pulsar storage有local,minio,remote 配置文件 根据配置文件选择初始化mq和存储: mq:type: pulsarcommon:storageType: minio对于这种类型一个是mq&#xff0c;一个是存储&…

kubernetes部署控制器Deployment

一、概念 在学习rc和rs控制器资源时&#xff0c;这两个资源都是控制pod的副本数量的&#xff0c;但是&#xff0c;他们两个有个缺点&#xff0c;就是在部署新版本pod或者回滚代码的时候&#xff0c;需要先apply资源清单&#xff0c;然后再删除现有pod&#xff0c;通过资源控制&…

接口测试和Mock学习路线(上)

一、接口测试和Mock学习路线-第一阶段&#xff1a; 掌握接口测试的知识体系与学习路线掌握面试常见知识点之 HTTP 协议掌握常用接口测试工具 Postman掌握常用抓包工具 Charles 与 Fiddler结合知名产品实现 mock 测试与接口测试实战练习 1.接口协议&#xff1a; 需要先了解 O…

Vue3 + Element-Plus 对接高德地图实现搜索提示选址、点击地图选址、自我定位功能(最新)

Vue3 Element-Plus 对接高德地图实现搜索提示选址、点击地图选址、自我定位功能&#xff08;最新&#xff09; 1、效果展示2、实现代码2.1 GaoDeMap.vue2.2 SystemDialog.vue2.3 UnusedList.vue.vue 1、效果展示 2、实现代码 2.1 GaoDeMap.vue <template><div style…

【个人博客搭建】(11)swagger添加jwt信息

这个主要是为了方便使用swagger时&#xff0c;能更好的带入我们的token。 ps&#xff1a;如果使用其他第三方api工具&#xff08;apipost、postman等&#xff09;则不需要。 &#xff08;当然&#xff0c;不用不能没有&#xff0c;是吧&#xff09; 1、在AddSwaggerGen内添加…

文件权限管理

文件权限管理 1. 权限对象 权限对象含义u属主&#xff0c;所有者g属组o其他人 2. 权限类型 权限类型含义值r读权限4w写权限2x执行权限1 3. 修改文件属主及属组 命令:chown(change own)更改文件或目录属主与属组名 3.1 修改文件属主与属组 只修改属主&#xff1a;chown $…

【数据结构】链表的中间节点

给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 Definition for singly-linked list.struct ListNode {int val;struct ListNode *next;};typedef struct ListNode ListNode; struct ListNode…