徐萌飞, 周艳红
一种应用于推进系统的开放式通讯调测平台
徐萌飞, 周艳红
( 武汉船用电力推进装置研究所,武汉 430064 )
在船用电力推进系统中,控制系统常由多个部件组成。通过部件之间的通讯,指令下发、信息采集、故障告警等多种功能才得以实现。由于各部件之间的通讯接口多种多样,如CAN、485、以太网等。可采用的通讯协议也很多样,标准协议和自定义协议都存在,所以通讯功能调测也变得重要且复杂。在调测通讯接口的过程中,采用轻量级的开放式测试平台,比起等所有部件开发完毕后集中调试要更为便利。本文介绍了一种开放式通讯调测平台的设计方案。此调测平台可直接运行于各种pc或便携机上,具有测试接口多样、测试脚本可定制的优点。在实际应用中,已取代了plc和触摸屏等多种部件进行通讯功能的调测,给开发人员带来了很大便利。
通讯调测平台 软件架构设计 UML
在船用电力推进系统中,控制系统一般由多个部件组成,如上位机、集控设备、远程监控设备、带通讯功能的触摸屏、PLC、控制器等。各个部件之间需要进行指令、运行信息、模拟量、数字量、报警、故障等多种信息的通讯。通讯采用的接口形式也多种多样,例如485、can、以太网等。采用的通讯协议也会根据实际情况采用标准协议(如modbus)或自定义协议。通过通讯接口,指令下发、信息采集、故障告警等多种功能得以实现。
由于控制系统中包含的各个部件开发进度不同,如果没有方便的调测工具,先完成的部件将不得不等待其他部件开发完毕后才能通过双方的通讯接口调试功能,从而影响了调试进度。
此外,在调试时,很多部件体积较大,连接线较多,携带不方便,每次要进行集成安装后再调试会比较麻烦。
最后,不同的项目使用不同的通讯协议内容,既有通用参数,也有本项目专用参数。而且在实际的测试过程中,通讯协议字段会根据实际需要做临时变化,导致陪试部件要针对新的协议重新修改,编译,调试。很容易影响调测效率。
为解决以上问题,开发了一种开放式通讯调测平台,此平台具有以下特点。1) 支持自定义消息脚本,通讯协议字段和内容变化都可通过直接修改修改脚本文件实现,无需二次开发。支持通用标准协议如modbus协议等,也支持自定义协议;2) 支持多种通讯接口,包括485、can、以太网等;3) 软件运行于win/PC平台,pc和便携机上均可运行,携带方便;4) 通讯过程可记录日志,便于分析定位问题,支持定时调测。
要完成此通讯调测平台系统架构设计,首先要根据功能,质量和需求,规划平台需要解决的关键问题,形成概念性架构设计。
在本项目中,主要对象包含三个部分,使用者,调测平台以及被测对象。三者之间的关系是:使用者操作用户界面,让调测平台发送符合测试要求的测试指令给被测对象,这些指令可以预先定义在消息脚本文件中,也可以通过界面实时创建。发送也可以定时或实时发送。同时,调测平台接收到被测试对象反馈回的消息后,根据通讯参数配置定义(用户通过人机界面加载参数定义文件),将消息解析、显示。
整个系统采用的分层架构见图1。由于涉及到通讯协议的解析,所以在接口管理层中,采用了常见的管道过滤器模式。在业务层为实现定时消息的有序发送和接收,采用了常用的生产者/消费者模式。
随着UML(统一建模语言)的诞生,采用UML来描述4+1视图模型也成为业界常用方法。4+1视图模型主要采用逻辑视图、开发视图、进程视图、物理视图以及场景和动作序列来对软件系统架构进行表达,本次通讯调测平台的架构也采用这种方式。
用例视图描述了对软件架构设计起关键作用的需求子集,是对问题领域的模拟抽象,建立了最终软件系统的功能范围,描述了参与者和系统之间的交互作用。
经过对通讯调测平台的需求分析,调测平台主要通过人机界面和用户交互,通过消息接口和被测系统进行交互。调测平台需要支持以下主要功能:
1)选择和配置通讯接口,并标识接口状态(是否可用);
2)可根据需要选择和配置通讯协议;
3)可通过调测平台加载消息脚本文件,然后实时或实时发送消息;
4)支持在随时自定义消息发送;
5)平台接收到被测系统回复后,可根据用户加载的参数定义文件,将接收到的消息按配置参数,系统状态,告警和故障信息等分类显示在界面上;
6)可通过平台通讯功能下发配置参数给被测系统,也可以将从被测系统获取的配置参数上传到本地保存。
以上功能以用例图形式展现,见图2。
逻辑视图描述的是设计的对象模型,包含整个软件系统中最重要的设计类、包和子系统,最终将不同的职责分配给功能模块、类等不同粒度的逻辑单元。一般采用协作图来描述逻辑视图,协作图见图3
在图中可以看到,整个系统架构采用了较多的factory设计模式,使用通用接口工厂类,屏蔽了对外接口的多样性,便于以后支持的新的通讯接口。使用通用协议工厂类,屏蔽了通讯协议的多样性,使得系统能支持各种标准通讯协议和自定义协议的消息封装和解包。
此外,将推进系统中常用的通讯书划分为三大类:配置参数、状态参数、故障和告警。
使用Facade模式,为内容解析服务提供统一的接口。从而用户可根据需要,使用自定义或他人已定义的参数文件,对消息进行解析,无需重复开发代码。当协议内容或字段变化时,也不用修改软件,直接修改配置文件,使得开发工作量降低为配置工作量。从而将研发人员在测试中的重点集中于协议参数内容和被测试对象的业务流程处理和响应上,进一步提高了效率。
实现视图描述了开发环境中软件的静态组织结构,包含了按模块划分为包和层的模型组织。描述了将逻辑视图中的包和类分配到实现过程中的包和类。本系统构件图见图4。从实现视图可知,概念架构设计中的分层原则已经落地于构件群中。窗体界面构件体现了概念架构中的展现层,包括收发消息的显示,实时消息的修改,配置参数的配置,定时间隔的设置,接口的选择和参数配置等功能。概念架构设计中的业务层,主要由参数内容解析服务组件,消息队列管理组件,消息发送服务组件,消息接收服务组件构成,实现参数解析,消息发送和接收,消息队列管理功能。而日志处理、参数定义处理和消息脚本处理三个组件,共同构成了概念架构设计中的数据管理层。最后,接口类组件和协议类组件实现了概念架构设计中接口管理层的功能。
进程视图包含所涉及任务(进程和线程)的描述以及任务的交互、配置, 关注的不仅仅是构件静态的依赖关系,而是体现了整个系统的运行架构。进程视图关注进程和线程等对象运行时的并发、同步、通信,并关注他们之间的交互。因篇幅限制,此处不过多描述。
部署视图描述了软件到硬件的映射,包含对平台的实际运行节点的描述。本次调测平台为了方便使用,只需要部署在一台pc或者便携机上,部署非常简单,所以此处不再赘述。
软件体系架构描述了软件系统中的最基本的结构组织,通常提供了一组已定义好的子系统或者构件,指定其职责,并给出把他们组织在一起的描述和表达。通过软件体系架构设计,可以清晰表达系统的功能和运作特性,从概念上清晰分析,从而能将一些常用的设计模式应用其中,减少设计遗漏和重复代码,避免系统包含过多隐含缺陷和累赘。
本文通过4+1视图表示法,描述了应用于推进系统的开放式通用通讯调测平台的实现机制,展示了平台通用性和灵活性。此平台在实际应用中,也取得了良好的效果。未来在此基础上,将进一步扩展接口的灵活性,争取实现接口定义插件化,让更多的应用者能够在此基础上独立扩展接口。同时,对消息性能测试,也是新版本实现的方向之一。期待此软件在未来的推进系统通讯测试中发挥更大功效。
[1] 杜育根. IBM RUP方法实践 . 机械工业出版社, 2013.
[2] 温昱. 软件架构设计. 电子工业出版社, 2010.
[3] Gamma&Helm&Johnson&Vlissides. 设计模式. 机械工业出版社, 2000.
[4] 佚名. UML教程. www.ChinaPub.com .
An Open Communication Test Platform for Marine Electric Propulsion System
Xu Mengfei, Zhou Yanhong
(Wuhan Institute of Marine Electric Propulsion , Wuhan 430064 , China)
TP202
A
1003-4862(2014)09-0018-04
2014-07-15
国家科技支撑计划项目(2012BAG03B01)
徐萌飞(1976-), 男,高级工程师。研究方向:控制工程、软件工程。