一种快速可重构的1553B总线测试软件设计
   来源:现代电子技术     2021年01月27日 23:57

一种快速可重构的1553B总线测试软件设计

朱珂+刘彦伟+丁凯+刘伟升

摘 要: 为了提高1553B总线测试系统应对被测系统在拓扑结构或通信协议变化时的快速可重构性,提出一种基于通用1553B总线仿真卡的快速可重构的1553B总线测试软件设计方法。分析当前1553B总线测试系统可重构性不足的缺点,详细介绍快速可重构1553B总线测试软件的设计架构和实现方法。这里提出的软件设计方法通过总线服务划分和代理托管的方式使软件的代码实现不依赖于总线协议的具体格式,并且极大地减少了软件编程的代码量,从而在代码可重构和配置可重构两方面实现软件的快速可重构。该软件设计具有可靠性强、编程效率高、重构速度快,现场可重配置等特点,其应用实例软件的代码重构率小于1‰,并已经在多个航天器的1553B总线子系统测试中取得了良好的效果。

关键词: 快速可重构性; 1553B总线; 测试软件; 软件设计

中图分类号: TN912.202?34 文献标识码: A 文章编号: 1004?373X(2015)14?0059?05

0 引 言

1553B总线,全称为MIL?STD?1553B总线,是一种集中控制式的数字时分命令/响应型多路串行数据总线标准,具有互连简单、高可靠、灵活性强和速率较高等优点。近年来,随着航天技术的进步,1553B总线在航空航天等军工电子信息系统中已经得到了越来越广泛的应用[1?3]。

1553B总线系统采用集中控制、分布式处理的双冗余度总线系统结构,连接在1553B总线上的设备称为终端,分为总线控制器(BC)、远程终端(RT)和总线监视器(BM)3类。其中BM实现对总线上传输数据的采集监视,BC掌握总线系统的所有控制权,总线上的一切活动都由BC端发起和控制,BC与RT之间、RT与RT之间的相互通信遵循规定的1553B总线协议。通常在1553总线通信系统研制过程中,对BC和各RT终端之间规定的总线通信协议实现正确性的测试是必不可少也是至关重要的环节。总线测试也即对各RT设备的1553B总线接口的匹配性、总线通信功能的正确性乃至特定总线协议符合性的综合评价。

目前快速构建1553B总线测试系统的方法即是采用基于总线仿真卡的1553B进行应用软件开发,这样的测试系统具备既简单快捷又灵活方便的优点,也正被越来越多的工程实践所采用。1553B总线仿真卡可以实现对总线BC,RT,BM终端的模拟,通过硬件厂家提供的SDK库即可实现1553B总线仿真模拟。虽然1553B仿真卡通常会自带有总线测试软件,但是这些软件是面向总线消息,而难以模拟完整的总线协议也不利于被用户直观掌握被测系统的状态,测试效率低下。

现有的基于仿真卡的1553B总线测试软件在应用上存在一定的局限:文献[2?3]提出的1553B总线测试软件虽然对1553B总线消息进行了仿真,但其主要侧重RT终端接口正确性的测试或对某一特定协议符合性的测试,不具备通用性和可扩展性。文献[1]虽然具有通用性设计,但软件功能单一,仅能够实现对总线消息进行单一解析,测试结果晦涩难懂,不具备人机交互性,测试效率较低,因而不能满足复杂总线协议测试要求。

在实际应用中,对于不同型号项目而言,其总线系统拓扑结构和采用的1553B总线协议不可能完全一致,同一型号航天器的不同终端设备在1553B总线上传输数据的处理格式、内容及物理意义不同,而现有软件针对总线系统和通信协议多样性的适应性和通用性均相对较差,难以直接移植,尤其在待测系统拓扑结构或者总线协议类型的变化时几乎需要对整个软件进行重新设计。因此,面对越来越多的型号研制任务,构建一种快速可重构的1553B总线测试仿真系统,提供总线测试系统的构建效率对于提高型号研制效率,缩短研制进程,降低研制成本等各方面则显得尤为必要,具有及其重要的意义。

本文设计并实现了一种基于仿真卡的快速可重构1553B总线测试软件,通过配置可重构和代码可重构两方面手段,实现即能够应对总线系统拓扑结构的变化,又能应对总线协议类型的变化。首先提出了基于仿真卡1553B总线快速可重构测试软件的设计方案,分别对软件架构、通信层设计、应用层设计和接口设计进行说明,其次在此基础上对软件的快速可重构特性设计从配置可重构和代码可重构两方面进行了详细介绍;最后结合型号实际应用,给出基于该方法实现的软件实例及其代码评估。

1 1553B总线测试软件设计

快速可重构的1553B总线测试软件是基于1553B总线仿真卡开发,实现对航天器总线通信协议的仿真模拟。软件通过采用层次化设计架构将总线的底层总线消息通信和应用层总线通信协议仿真相分离,从而实现底层测试系统不依赖于1553B总线消息和RT终端参数的具体协议定义,保证了应用层面向总线通信协议的快速可重构的特性。

1.1 软件架构

快速可重构的1553B总线测试软件总体上划分为应用层和通信层2部分。应用层负责和用户进行界面显示与交互;通信层负责通过1553B仿真卡与各终端设备之间进行总线数据通信。为实现软件的快速可重构特性,软件尽可能降低用户层和通信层之间的耦合度,即用户层和通信层在设计时通过独立的代码实现,其之间的信息交换通过特定接口开展,软件主要划分为3个部分:

(1) 应用层:实行与用户直接的对话,包括界面显示与交互、用户对仿真卡的启动和停止的控制、被测系统面向用户的数据解析处理等功能;

(2) 通信层:主要完成对1553B仿真卡的控制、总线消息数据的发送和接收、周期性消息的更新与发送或接收;

(3) 数据接口:主要完成应用层和通信层之间的数据和控制信息的交换,并完成数据区的管理和维护。

软件的整体系统架构如图1所示。

图1 快速可重构1553B总线测试软件系统架构

通过层次化的软件架构设计,便于将1553总线通信协议中的子地址协议转换为通信层的服务项,从而被应用层各RT对象所复用,大大减少应用层RT对象实例化的软件代码量,提高了应用层程序快速重构的效率。

1.2 通信层设计

通信层作为底层实现被划分为各种向应用层提供的数据服务。通信层软件代码通过调用1553B板卡提供的SDK驱动程序,实现与1553B总线仿真卡的通信和控制;驱动总线仿真卡实现与总线终端的物理通信。通信层程序将需要通过总线发送的数据进行分解并通过驱动程序转换为遵循MIL?STD?1553B总线标准的消息字进行发送,同时也接收来自总线其他终端发送的消息字,对消息字中的数据进行整合,从而供应用层使用。

通信层将总线消息划分为2类:周期性消息和非周期性消息。其中周期性消息不需要用户通过应用层进行干预;而非周期性消息完全根据应用层的用户指令进行控制。由于二者之间没有直接的数据通信,因此分别采用独立的线程实现,以提高程序的运行效率。为避免2个线程同时占用硬件板卡而导致数据就丢失,线程间采取互斥锁的方式实现线程同步并控制最小的总线消息间隔。

这样的通信层设计,能够将底层实现划分为各种数据服务类型,而被应用层所调用。通信层所处理的内容仅需限制在数据本身,而不需要考虑数据的对于用户而言的物理意义,因此可以很方便的根据不同的总线通信协议需求扩展服务类型,从而为面向用户的应用层快速可重构提供了基础。

1.3 应用层设计

应用层实现与用户之间的交互,其核心作用在于将不易被用户识别的底层数据转换为用户可以方便识别的应用信息。应用层首先构建与用户之间的软件界面,实现与用户的信息传递,并在界面基础上开展总线终端的管理。

应用层对于各RT终端通信的管理采用类的形式进行分装,从而能够通过类的接口特性实现外部控制,并利用类的可重用性和继承性实现代码的快速可重构性。与通信层类似,应用层RT终端类也能够根据不同子地址划分为不同的服务项。但与通信层不同,应用层需要面对不同RT终端应用项目进行重构,如设备遥测的信息,其在数量,物理含义上对于不同终端而言都可能相去甚远。因此,如果仅简单的采用类的继承方式实现重构,不同的RT终端类仅能单纯地继承父类的接口函数,而主要的编程工作需要集中于接口函数的重构,这种继承方式仍然需要较大的代码量,难以实现测试软件的快速可重构性。

为解决1553B总线测试软件应用层设计的快速可重构问题,软件对于总线终端相关的各类服务项采用代理程序(或代理子类)的方式实现,每种服务项对应一项代理程序,通过代理程序读取对应总线终端的应用层协议描述文件完成应用层到通信层之间接口数据的解析处理,如图1中的应用层构造所示。每项代理程序与总线协议中的一种消息类型(总线子地址)对应,每种代理程序能够被所需要的总线终端类直接复用,只需在程序外部通过配置不同的描述文件就能够实现不同终端各自所需的应用层协议,从而大大减少了类重构所需要编写的代码量,既能简化软件本身的设计,又能够在不改变软件代码的情况下实现总线终端的协议重配置,从而保证了整个测试系统的快速可重构性。与通信层相同,应用层也通过独立的线程实现。

1.4 数据接口设计

数据接口用于实现应用层与通信层之间的数据交换,为达到快速可重构的目的,要求数据接口具备可扩展性。本软件专门设计一个接口类用于数据交换,对终端及其各子地址需要的总线数据进行内存的管理,并提供写入与读取函数的接口。由于应用层与通信层采用多线程的设计,接口类中设计了互斥量来表征不同线程对终端收发总线数据的访问权限,实现不同线程之间数据正常传递并且避免不同线程中程序对同一数据资源的同时访问。

2 快速可重构设计

本文给出的软件针对配置和代码2个方面开展了快速可重构设计。一方面在层次式的软件架构基础上实现代码的快速可重构;另一方面通过配置文件实现应用层的用户信息与底层数据的相互转换格式和通信层的总线消息数据格式的快速可重构。配置文件的快速可重构可以在总线终端拓扑不变的前提下,便于用户变更总线数据的格式和内容。代码的快速可重构可以在总线终端拓扑或协议发生变化时,增添新的终端实例和服务程序。下面给出了配置可重构和代码可重构的具体实现。

2.1 代码可重构

代码可重构主要应对被测总线系统的拓扑结构发生变化,其分为2类:

(1) 总线终端数量可重构;

(2) 总线协议数据类型可扩展。

首先,当被测系统的总线终端数量发生变化时,由于应用层和通信层之间相互独立,在软件应用层代码中可以通过继承当前已有的总线终端类并加载相关的代理程序即可增加新的总线终端,同时在数据接口上派生新的数据接口类并创建实例对象即可实现应用层新增终端使用通信层提供的底层服务。其次,在前文的软件架构中,每种总线协议的数据类型(即子地址)作为通信层中的一种服务类型进行管理,当总线协议的数据类型发生变化时,首先对通信层中的服务程序进行变更或增加,并在数据接口上派生新的数据接口类增加相应的数据管理功能,而应用层程序只需增加对数据接口中管理新数据的服务代理程序并加载至相关的总线终端类即可完成对新协议数据的操作。代码可重构的模型示意图如图2所示,其中RT?3继承于RT?1或RT?2的终端类及其代理程序,同时对于RT?3需要支持的新的总线协议向,在各层创建新的服务代理程序即可实现。这种软件设计能够充分的复用代理程序,极大的减少应用层总线终端类的重构代码量。

图2 代码可重构的模型示意图

2.2 配置可重构

配置可重构能够实现待测总线系统拓扑结构未变化而总线协议数据类型发生变化时的快速可重构。配置可重构只需要改变软件外部的配置文件而不需要更改软件代码,具有快速灵活的特定。配置文件被设计为2种类型:

(1) 通信层总线消息配置文件和;

(2) 应用层参数配置文件。

总线消息配置文件以总线消息为基本单位对航天器1553B总线消息协议进行描述,软件启动初始化时对总线消息描述文件进行解析,软件运行时,按照总线消息执行列表进行总线消息的发送或接收。通信层总线消息描述文件内容以消息序号为行,以消息属性为列,其中消息属性包含消息名称、消息内容、RT地址、子地址、通信方式、消息数 、数据字计数、是否循环缓冲、消息周期、优先级、消息间隔,文件内容格式如图3所示。

图3 通信层总线消息描述文件格式

应用层参数配置文件以用户接收终端或向终端发送的数据参数配置文件为例,针对不同终端设备,软件配置不同的参数描述文件。在软件启动时,各终端对象的代理程序对参数配置文件进行解析,软件运行时,终端实例将通信层接收到的总线消息送给代理程序根据配置文件进行解析,再将解析后的参数值等信息显示到指定界面。应用层参数文件以单个参数为行,以参数属性为列,其中参数属性包含参数代号、参数名称、位置类型、起始字节、起始比特、比特长度、数据类型、是否解析、解析公式、公式系数、正常范围等,文件内容格式如图4所示。

图4 应用层参数配置文件格式

对于用户在软件界面上输入的向终端发送的注入数据或指令等信息,软件终端将数据发送至代理程序,通过代理程序将用户信息转换为总线指令码数据,再通过数据接口转发给通信层发送至终端设备。以总线指令参数配置文件为例,其中包含指令代号指令名称和指令码等参数,文件内容格式如图5所示。

图5 注入数据或指令配置文件格式

2.3 软件信息流

软件中的终端对象、代理程序和配置文件各模块之间的信息流向如图6所示。

图6 软件信息流向图

对于软件向总线上发出的消息,用户通过软件界面提出发送请求(如点击某总线指令发送按钮),软件RT终端收到用户的发送请求后将界面的发送消息信息(如指令代号)提交代理程序,代理程序根据预先读入的指令配置文件将该指令转换为指令代码,并通过数据接口传送给通信层程序,通信层程序再根据指令代码转换为总线消息发送至总线硬件系统。对于从总线上接收的消息,通信层程序先将总线消息转换为数据源码并通过数据接口传输给RT终端,RT终端将数据源码提交代理程序,通过代理程序对数据源码进行解析处理后形成应用层数据反馈给RT终端,最后由RT终端将应用层数据送给软件界面向用户显示。

3 应用实例

基于本文软件设计方法实现的基于总线仿真卡的1553B总线测试软件,已成功应用于某航天器总线通信子系统的通信协议测试验证。例如应用于某分系统的8台总线RT终端的测试系统,硬件平台的1553B总线仿真卡采用美国GE Condor公司的型号为QCP?1553?2M的标准1553B仿真测试卡,软件界面集成了8个终端设备仿真通信控制界面,通过配置1个通信层总线消息描述文件、8个应用层终端参数配置文件、8个指令配置文件和4个注入数据配置文件实现与各终端设备的不同总线数据格式的关联。软件设计的总线数据类型包括注入数据、总线指令、总线遥测参数、广播消息等。图7给出了软件模拟的BC终端与被测RT终端设备1进行总线通信的显示与交互界面。

图7 软件对被测终端1进行测试的界面示例

该软件总代码行数为14 573行,其中通信层代码为9 711行,约占总代码量的66%,应用层代码为2 822行,占19%,其中应用层的代理程序代码为1 766行,占应用层代码的62%,而8个RT终端协议管理对象代码共计1 056行,平均每个RT终端的代码行数为132行,占总代码量的0.7%,即单个终端的代码量能够达到小于软件总代码量1‰。从实际应用可以看出,应用本文设计方法实现的软件,如果被测试系统不增加总线RT终端的数量只改变总线协议,则不需要对软代码进行更改,只需要重新配置相关的参数文件,如果被测系统新增RT终端,其代码的重构量也平均在1‰左右,且不会随RT终端的协议数据量的增加而增大,在快速可重构方面具有明显的优越性。

4 结 语

作为型号研制的重要环节,1553B总线通信系统的测试已经成为必不可少的环节,本文针对当前基于1553B总线仿真卡的测试软件灵活性和兼容性不足的问题,提出了的一种快速可重构的1553B总线测试软件设计。首先,软件采用通信层和应用层的分离的架构,使得总线通信协议的实现不依赖底层总线仿真卡通信的特性,极大地增加了软件的灵活性。其次,软件将通信层和应用层的服务项与总线通信协议的子地址关联,通过服务代理的方式实现测试系统应用协议的现场可重构能力。最后,应用层总线终端的协议管理通过总线终端类的继承结合服务代理应用的方式实现,极大的减少了派生类所需要重构的软件代码,从而能够快速应对总线系统拓扑结构上的变化。文本给出的应用实例表明,基于该方法实现的1553B总线测试软件其总线协议管理程序的代码量仅为整个程序的1‰,具备极强的快速可重构能力,目前已成功应用于多型号航天器1553B总线子系统的测试,极大地提高了构建测试系统的效率,取得了良好的效果。

参考文献

[1] 李筱雅,尚丽娜,张芹芹.1553B总线测试仿真系统设计与实现[J].现代电子技术,2012,35(10):54?60.

[2] 梁林灿.1553B总线测试系统中上位机软件的设计与实现[D].广州:中山大学,2007.

[3] 郭坚,张红军,付连芳.面向星载应用的1553B总线仿真卡二次开发软件[J].航天器工程,2012,21(4):78?82.

[4] 赵爽,刘占渠,苗克坚.通用1553B总线消息解析软件的设计与实现[J].电子测量技术,2010,33(1):78?81.

[5] 史国庆,高晓光,吴勇,等.1553B总线监测仪系统软件设计[J].火力与指挥控制,2009,34(6):141?143.

[6] 刘桂山,胡军程.1553B总线信息流设计[J].北京理工大学学报,2003(3):301?304.

总线 终端 软件