一种基于分布式结构的半实物仿真测试环境设计

2016-12-15 13:23:43李兆阳陈泉根
环境技术 2016年5期
关键词:测试环境时序实物

李兆阳,陈泉根

(1.中国工程物理研究院计算机应用研究所,绵阳 621900; 2.中国工程物理研究院研究生院,绵阳 621900)

一种基于分布式结构的半实物仿真测试环境设计

李兆阳1,2,陈泉根1

(1.中国工程物理研究院计算机应用研究所,绵阳 621900; 2.中国工程物理研究院研究生院,绵阳 621900)

半实物仿真技术广泛用于航空航天,通信,军事等领域,对于验证嵌入式软件的可靠性提供了有利的依据。针对分布式和可扩展的测试需求,提出了一种基于分布式结构的半实物仿真测试环境设计,并且讨论了该测试环境中测试脚本、控制器、软设备等关键部分的设计方法,最后将该系统与现有半实物测试环境进行对比并进行了总结。

分布式;半实物;仿真

前言

半实物仿真又称硬件在回路的仿真,其通过I/O,CAN,1553B等外部接口模拟被测件工作环境与其进行数据交换来达到测试软件可靠性等目的。半实物仿真系统能保持嵌入式系统的完整性,它只对被测件的外部交联系统以及物理环境进行仿真,同时在高实时性要求的靠可性测试中,能够提供更高的置信度。

随着被测系统的多样化,对于半实物测试系统的分布式测试场景愈来愈多,常常出现“单测试节点”对“多被测节点”的情况,这种情况的增加对于传统半实物测试系统的分布式能力提出了更高的要求。并且随着测试领域的多样化,测试系统外部接口的可扩展能力也面临挑战。因此,需要引入新的系统设计方案来解决上述问题。

本文针对以上问题提出了一种分布式的半实物测试系统的设计方法,希望通过该设计提升半实物系统的接口可扩展性以及分布式测试能力。

1 半实物测试环境设计

1.1 测试环境硬件结构

本文设计的测试环境硬件结构示意图如图1所示,硬件设计采用主从式结构,即一台测试引擎部署宿主计算机,通过网络连接多台测试处理计算机。对于现有的大多数半实物仿真测试环境而言,要完成这种分布式部署是可能的,但是因为现有半实物测试环境采用的是多数工作在宿主机上完成,即仿真测试引擎的“负担”过重,一旦变为分布式部署,使系统性能下降。测试引擎不光要完成测试脚本解释翻译,命令传输,更需要进行多节点的任务调度,并且随着测试领域的增多和测试接口的复杂化,接口协议的可扩展性也不能得到很好满足。因此,我们提出一种三层结构的系统设计方法,希望通过这个设计简化和明确测试过程中各个部分的任务,通过设计多节点上下位机交互协议、引入自定义的测试命令、加入软设备等方式来实现图1所示结构。

1.2 系统整体架构

基于分布式结构的半实物仿真测试环境系统整体架构如图2所示。

系统的整体架构包涵三层,由测试总线和控制总线隔开,第一层为仿真引擎层;第二层为多节点的控制器层;第三层为软设备层。测试人员通过仿真引擎部署的宿主计算机,进行测试用例的设计与测试脚本开发,将测试脚本通过测试总线传输到目的节点控制器存储,当引擎向挂载的节点处理器下达统一的测试命令时,节点控制器按照自定义的脚本命令进行有时序的任务执行调度,此时的任务调度是控制器对于挂载在其上面的软设备进行的时序操作,最终单个测试用例注入命令由软设备通过I/0总线传入被测件而达到测试目的。

由于为了使得系统的分布式能力和可扩展性,设计较传统半实物仿真测试环境的不同之处主要体现在第二和第三层上,因此以下着重讨论系统整体架构中第二和第三层所进行的一些设计。

2 各部分设计

2.1 测试总线服务

测试总线加载于网络上的总线,其为测试主要提供两种服务:①测试准备或进行时节点控制器和仿真引擎的数据交换服务。②测试开始时的时钟对齐服务。

在TCP/IP模型中,存在TCP和UDP两个传输层协议,负责承担数据传输任务。其中,TCP是面向连接的协议,它能够保证传输的可靠性,但相对于UDP而言,UDP的处理简单相对,并且效率高于TCP,在分布式的数据传输中,要求数据传输是大量的,测试的实时数据要求能够做到大量的可靠传输,因此,为了保证测试过程中能做到实时数据可靠传输,由能提高效率,我们对UDP进行以下的改造:

1)在测试总线服务的程序设计时,设置相应大小的缓存区,以防止多个节点向引擎回馈实时数据时发生的阻塞现象。

2)每个UDP包中尾部加上一个节点顺序戳序号以及一个校验和,当引擎与控制器通过网络建立连接,分发测试命令时,控制器根据控制命令描述字符位获得命令,并且验证数据校验和以及顺序序号,验证校验和保证了数据的完整性,节点顺序戳序号保证该节点当前获得的测试信息顺序正确,如二者都正确,则说明此次通信正确,没有丢包的情况存在。如果校验和与顺序戳序号有误,则处理器要求引擎重新发送数据。

图1 硬件结构示意图

图2 半实物仿真测试环境系统整体架构

在分布式多节点测试时,测试节点的时间一致性是个必然的要求,当测试命令下达时,要求各节点之间软时钟同步,需要设置测试开始命令开始时刻为测试零时刻,时间对齐服务使各测试节点测试时间一致,在并行测试过程中,这种对齐机制可以以测试开始时刻为标准,明确每个测试动作时序上的相互关系,并进行记录。对齐流程如图3所示。

2.2 控制器及自定义命令

节点控制器的功能主要为负责测试任务的时序地调度,采用单个进程的方式进行实现,软件设计中,该进程包括一个控制器类,控制器类主要由三个部分组成:①控制器描述符——带有该节点控制器在该分布式测试中的唯一标识信息以及该控制器下的参数信息如:任务列表地址,任务断点个数,输入输出缓存buff大小,同步时钟等;②控制器类需要的各种方法;③用于存储测试命令的测试任务表和等待条件列表。

控制器是一个拥有两个状态的二维状态机,状态包括测试管理态和测试执行态。两个状态通过测试开始或者结束命令进行相互转换,在测试管理态时,引擎下发的测试管理命令可直接执行无严格的时序要求(测试数据查询,测试设备查询,测试端口配置等)。而下发的执行命令被控制器存储进测试任务队列,待测试进入执行态后再开始执行,现有的半实物环境对于多节点的调度一般集中于仿真引擎之上,我们希望将调度功能放于每个节点分散进行,这需要控制器能够识别时序进行该节点下的调度过程,因此,我们通过嵌于一种自定义命令格式,按照一定解释规则,使得控制器能够完成这个功能,自定义命令格式如下:

其中:

@ :时序命令标志。

:命令行执行条件位。

: 命令行进行的操作位。

:数据1。

:数据2。

:数据3。

time以测试总线对齐时钟一个计数时常为单位;命令执行条件包括中断,接受,发出,等待等;进行的操作包括接受,注入,触发,重复发送等;数据为对各种端口进行操作的具体数据。在测试执行状态下,控制器对已有的操作任务进行的调度逻辑如图4所示。

图3 时钟对齐流程

图4 控制器调度逻辑

当控制器接到时序命令行时,将执行条件位数据存入条件等待列表,标记命令序号,同时将时序关系位,操作位,数据位存入测试任务表,绑定相同的命令序号。测试执行时,一次取列表命令,如条件位为空,则无条件等待,直接执行对应的任务列表命令。当条件不为空时,进行等待,待条件满足时,取出相同序号的等待条件和测试任务,在满足条件time个单位时间后,将操作位与操作数通过控制总线下发至软设备。

2.3 软设备

控制总线下挂载了多个软设备模块,每个软设备代表一个不同接口类型,如can,I/O,1553b等。

软设备的目的是将最基本的测试激励收发以及测试端口的配置等测试过程中最简单的操作进行统一封装,对于上层而言,调用软设备所使用的接口是不变的,这样就增加了在复杂接口的情况下,系统的插拔和可扩展能力,软设备采用三层的设计结构。分别包括应用层,协议层以及驱动层,如图5所示。

应用层主要是为上一层的测试总线和控制器提供统一的操作方法接口,其中包括协议参数配置,协议参数获取,接受发送激励,清除或者设置缓存队列等操作。

协议层主要实现的是各种端口协议的统一封装,协议层面向应用层的接口也是统一的,主要包括协议修改等操作接口。这样在协议改变的情况下,就需要修改具体协议个某些方法的具体实现即可,在每一个软设备的协议层中,都加入了一个FIFO的链表缓存队列,其只保存一定帧数的实时数据,目的是为了方便测试人员在测试过程中能够回退查找相应端口之前的几帧数据,从而能够更加快速的找到测试过程中的问题所在。

驱动层主要包涵两个函数,_recv()和_send(),其主要面向的是被测件的驱动层,收发函数下面均为调用相应接口的驱动,最终驱动层将测试的整个过程简化为收发的基本操作。

3 应用案例

为了验证设计的可行性,我们将该半实物仿真环境的原型机应用于某航天遥测系统程控模块的软件测试中,主要以CAN和串口为主,将编 辑好的xml文本(内嵌自定义的测试用例命令)导入原型机中,原型机通过解析命令完成测试,一共完成了1 432条测试命令,主要包括功能测试和故障测试,所收到的测试结果均与预期结果一致,并且能够正常完成测试初始状态的设置和被测件测试需求的全覆盖,从而验证了测试原型机的可行性。

图5 三层设计结构

4 总结及下一步工作

本文提出了一种三层架构的分布式半实物仿真测试环境的设计,与现有的半实物仿真测试环境相比,其通过引入时序命令,软设备模块等多个设计,将分布式测试过程中的时序调度任务分散到各个节点进行处理,将底层的协议和执行动作进行统一封装,使得整个系统的测试任务自上而下逐渐细化,从而提高了半实物系统的分布式能力和可扩展性,并且这种设计使得仿真引擎的工作得到了减少,为整个上层系统实现更多的功能集成提供了可行性。不过设计还是有很多不足和值得改进的地方,例如此次设计主要针对半实物仿真测试中下位机部分进行展开,针对引擎部分没有进行深入探讨,另外,测试系统的传输速率、实时性,脚本翻译成时序命令机制等方面还需要进行进一步深入研究。

[1]阮镰, 刘斌, 陈雪松.软件可靠性测试及其环境[J].测控技术, 2000, 19(2).

[2]刘斌, 高小鹏, 陆民燕,等.嵌入式软件可靠性仿真测试系统研究[J]北京航空航天大学学报, 2000, 26(4).

[3]王恒霖,曹建国 .仿真系统的设计与应用[M].北京:科学出版社, 2003.

李兆阳,男,(1991-),硕士,主要研究领域为软件可靠性测试。

陈泉根,男,(1967-),研究员,硕士生导师,主要研究领域为计算机控制、信息安全。

A Design of Half-physical Simulation Environment Based on Distributed Architecture

LI Zhao-yang1,2, CHEN Quan-gen1
(1.The institute of computer application of CAEP, Mianyang 621900; 2.The Graduate School of CAEP, Mianyang 621900)

Hardware-in-the-loop simulation technology is widely used in aerospace, communications, and military, etc.It provides advantageous basis to verify the reliability of embedded software.In the view of the distributed and scalable test requirements, this paper proposes a design of half-physical simulation environment based on distributed architecture, which describes how to design the key parts of the environment included the script language, the controller, and the soft devices, etc.Finally the design compared with already existing hardware-in-the-loop test environment in a summary.

distributed; half-physical; simulation

TP391

A

1004-7204(2016)05-0082-04

猜你喜欢
测试环境时序实物
时序坐标
带你学习实物电路图的连接
基于Sentinel-2时序NDVI的麦冬识别研究
全数字仿真测试环境在航天软件测试中的应用研究
雷达航迹处理测试环境构建方法研究
科技视界(2019年10期)2019-09-02 03:22:27
当手绘遇上实物
网络设备自动化测试设计与实现
当手绘遇上实物
基于Arduino控制的半实物模拟驾驶系统
电子制作(2018年1期)2018-04-04 01:48:26
一种毫米波放大器时序直流电源的设计
电子制作(2016年15期)2017-01-15 13:39:08