基于软件总线技术的管控软件框架设计

2019-04-27 02:29坤,沈伟,邓
舰船电子对抗 2019年6期
关键词:总线构件消息

许 坤,沈 伟,邓 洲

(中国船舶重工集团公司第七二三研究所,江苏 扬州 225101)

0 引 言

现代软件开发的一个趋势是软件构件化[1]。软件开发的规模越来越大,功能越来越复杂,这对于软件模块的可靠性、可重用性提出了更高的要求。为了有效提高软件开发效率,缩短开发周期[2-3],降低人力物力成本,基于构件的软件总线技术逐渐被广泛应用。

软件总线是为保证软件系统开发过程规范性和系统应用中的适用性以及可扩展性而提出的一种设计思想。软件总线是一种虚拟总线[4],这组总线可以为多种语言编写的不同类型不同功能的程序服务。软件总线是一组标准的软件模块,它为计算机操作系统、各种软部件提供数据传输,并为这些程序提供虚拟共享的通道与接口界面[3]。

本文基于软件总线技术设计了一种管控软件,对某大型系统中电磁收发设备的频谱使用进行管理。该系统内电子设备数量多、密度大、对电磁频谱资源的占用存在较为严重的冲突,需要采取有效管理措施。本文设计的软件,目的就是依据一定的决策规则对系统内电子设备进行管控,实现各电子设备的兼容协同工作。

1 软件总线技术

软件总线是一组虚拟的数据传输通道和即插即用的构件集成框架,也就是提供数据传输通道的软件及其标准接口[2],支持应用程序间、软件构件间的功能共享和信息交互,能有效降低应用程序之间、构件之间的耦合度。

软件总线一般完成4个基本功能[5]:

(1)通信功能:软件总线的最重要功能,能够实现安装在软件总线上的由不同语言编写的异构构件之间的相互通信。

(2)构件调度功能:实现软件构件库的管理,完成对软件构件的安装、卸载、调用。

(3)管理控制功能:解决对软件总线的合理分配、有效使用等问题。

(4)接口功能:解决软件总线与不同语言编写的软件构件间的通信、数据传输的接口问题。

“软件总线+构件”技术,可以理解为面向对象技术的扩展与提升。构件是可复用软件模块,是被封装的对象类。构件实现一定的功能,可以单独开发调试,调试完成后插入到软件总线上使用[6]。软件总线对构件进行组装集成,使多个构件以公共接口互相连接,实现构件的即插即用。接口规范的统一,使软件总线与构件、构件与构件之间的通信复杂度大大降低。软件总线的结构模型见图1。

图1中,构件安装或加载到总线上,构件间通过软件总线进行通讯,相互协作,完成较为复杂的功能;部分构件通过不同层次的总线生成复合构件,再插入底层软件总线,实现系统的结构分层,提供了一个可重用的软件系统解决方案。

2 基于软件总线的管控软件框架设计

2.1 软件基本框架

传统软件总线的设计思想,是着眼于网络环境下的分布式应用[7]。本文在单机系统中基于软件总线技术进行管控软件开发,避免了分布式应用中面临的容错处理、负载平衡等比较繁琐的问题。软件总线及各构件之间的通信采用消息机制,降低了构件间的耦合性,增强了系统的灵活性与可扩展性。

管控软件的框架见图2。

图2 管控软件基本框架

在软件框架中包含5类模块:总线调度模块、驱动模块、策略模块、设备信息处理模块、显示模块,其功能描述如下:

总线调度模块:创建软件总线并维护其运行;创建消息队列并维护其运行;对各软构件进行安装、注册以及卸载。

驱动模块:包括网络驱动、串口驱动、并口驱动3种构件。网络驱动为软件系统提供了与外部进行网络信息交换的功能,包括UDP协议和TCP协议2种通信协议方式。串口驱动为系统提供了与外部以RS232或RS422方式进行串口通讯的功能。并口驱动则为系统提供了与外部进行I/O通讯的功能。

设备信息处理模块:包括若干个设备信息处理构件,每个构件对应被管控的一个外部电子设备。负责接收、处理、存储外部设备的工作状态及参数,以及策略模块下发的管理命令。

策略模块:包括一个管控策略构件。根据收集到的各外部设备的工作状态、参数,进行电磁兼容态势判断,依据一定的决策规则,作出综合决策,并发出管控命令。

显示模块:包括一个人机界面构件。负责显示各外部设备的工作状态、参数以及对各外部设备下发的管理命令。

2.2 软件总线结构分析

本文设计的软件总线,核心是对构件进行集成的链表结构以及构件之间进行通信的的消息机制。链表是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序通过链表中的指针链接次序实现。链表由一系列结点组成。图3描述了软件总线的链表结构。

图3 软件总线的链表结构

这是一个双向链表,可以从任意结点开始,很方便地访问其前驱结点(通过prev指针)与后继结点(通过next指针)。结点中包含一个构件ID与指向该构件对象的指针。对链表进行遍历操作,很容易实现对各构件的访问。

构件对象中包含数据、功能函数,以及规范的消息处理接口函数。构件之间交互通过消息机制实现。软件总线作为各个构件的集成平台,负责消息的传递、派发。软件总线为构件提供透明的服务,使遵循总线接口规范的构件实现即插即用。

2.3 软件总线的消息机制

消息中包含着构件之间需要传输的信息,信息类型包括设备状态、数据、控制命令等,所以消息也有多种类型。消息结构中包含多个域,其定义如表1所示。

表1 消息结构中的域说明

构件既是消息发生的主体与来源,也是消息派送的目的地。图4描述了软件总线的消息传输机制。应用程序工作时,总线调度模块首先调用rngCreate函数创建1个ring buffer缓冲区,这是1个FIFO型消息队列,缓冲区的大小根据程序的需要而定。当构件由于外部事件驱动而产生消息后,即调用rngBufPut函数,把消息压进消息队列。与此同时,总线调度模块中执行着一个不断从消息队列中检测消息的无限循环,一旦读到了有消息存在,就调用rngBufGet函数提取消息,并调用MsgDispatch函数进行消息派送。消息派发的主要依据是消息中的目标。从链表的首结点开始,对目标进行构件ID匹配,并按照链表的次序一直执行到底。一旦检测到有构件的ID匹配成功,则由该构件调用消息接收处理函数,完成消息响应。这个消息响应有可能会导致该构件发出新的消息,并进而产生新一轮的消息循环。

2.4 管控软件功能的实现

在VxWorks系统中进行如图2所示的软件总线框架设计,基于双向链表结构和消息机制,由总线调度模块把生成的若干构件进行集成。系统启动后,对构件进行注册、初始化,开始工作并等待消息。作为驱动模块的3个构件:网络驱动、串口驱动和并口驱动,将响应外部事件的激励,接收外部设备的网络报文、串口报文或I/O信号,转化为内部消息发给相应的设备信息处理构件。收到消息的设备信息处理构件从中提取并存储设备状态、数据,再发出消息给管控策略构件。管控策略作为业务处理核心构件,根据收集到的各外部设备工作状态、参数,进行全局电磁兼容态势判断,依据一定的决策准则,作出综合决策,以消息的形式发出管控命令给对应的设备信息处理构件。设备信息处理构件再根据业务规则生成管理命令报文或数字量信息,发送消息给驱动构件,最终由驱动构件完成报文或I/O信号的发出。

图4 软件总线的消息传输机制

3 结束语

基于软件总线技术进行软件系统开发,具有即插即用、灵活性、开放性、易扩展性等优点,大大提高了开发效率,降低了开发成本与难度,逐渐成为软件开发的主流技术。本文基于软件总线技术设计的管控软件,有效解决了某系统内部的电磁频谱冲突问题,使系统内各电子设备协同工作。该软件框架具有通用性与可扩展性,适用于单机系统的软件开发设计。

猜你喜欢
总线构件消息
钢筋混凝土构件裂缝控制
关于CAN总线的地铁屏蔽门控制思路论述
一张图看5G消息
晚步见道旁花开
基于构件的软件工程技术与理论方法探讨
Q&A热线
PCI9030及其PCI总线接口电路设计
基于构件的软件开发实践
基于复合连接器的插拔式构件组装方法研究