朱 伟,许春雷,孔 军
(江苏自动化研究所,江苏 连云港 222006)
指挥控制系统作为作战系统的核心子系统,是作战信息处理中心和指挥员实施指挥的直接部位,通常需要同时完成情报综合处理、作战辅助决策、武器综合控制等多个独立功能[1]。实时多任务VxWorks操作系统以其卓越的多任务事务处理能力已成为军事指控控制领域中使用最广泛的系统。近年来,由于指挥控制系统功能日趋复杂,对人机交互界面的实时性、灵活性、扩展性等提出了更高的要求。另一方面,所见即所得的Tilcon人机交互界面开发工具为嵌入式系统下的人机交互界面开发提供了简便快捷的界面设计方式[2],但也存在着人机交互处理集中、任务之间耦合性强,无法兼容其他人机交互方式、实时性难以保证等不足。如何应用Tilcon设计多任务人机交互软件,对于确保指控系统的实时性、扩展性,提高任务的可靠性、可移植性,促进指控系统下功能任务的构件化设计均具有重要意义。
Tilcon是wind River推出的多平台用户界面开发工具,具有功能齐全、界面美观、使用方便的特点,支持Windows、VxWorks、Linux、QNX 等多种平台。Tilcon人机交互界面开发环境提供了常用界面控件,用户可以直接拖放控件到窗口上构造自己的图形、表页界面,实现了所见即所得的人机界面开发方式[3],已成为嵌入式系统下主流的人机交互界面开发工具。
Tilcon主要由三个组件构成[4],即人机交互界面运行引擎EVE、应用程序API接口函数和可视化人机交互界面开发环境,其组成及关系如图1所示[5][6]。
图1 Tilcon构成及关系图
运行在嵌入式系统之上的EVE 是一个独立于用户应用程序的微内核, 以两种方式管理所有的用户界面显示及人机交互事件: 1)执行应用程序的API 命令进行屏幕绘制;2)以事件、回调函数等形式处理操控消息,驱动应用程序运行。
API 是供用户应用程序调用的一组基本函数,为EVE和用户程序之间提供交互接口,用户可以通过它动态地创建对象、修改对象属性。
Tilcon 可视化界面开发环境集成了大量常用控件, 用户通过拖拉控件来设计界面, tilcon界面采用平台无关的二进制资源形式存储,具有较好的移植性。
Tilcon通过一个循环任务来处理人机交互事件。任务初始化需要先后完成:1)调用TRT_Start接口函数来启动tilcon图形引擎;2)调用TRT_WindowLoad函数来加载 twd界面资源文件;3)调用TRT-WindowDisplay 函数人机交互图形界面。初始化完成后调用 TRT_Getlnput函数建立主框架循环。TRT_Getlnput 函数处于等待状态并实时接收、处理来自于Tilcon 引擎所传递的界面操控事件。Tilcon人机交互事件处理流程如图2所示[7]。
图2 Tilcon人机交互事件处理流程
从Tilcon的人机交互事件处理方式来看,所有Tilcon的控件交互事件在一个循环任务中来完成,无论系统中有多少个任务、多少窗口和控件。Tilcon人机交互处理方式如图3所示。如果基于Tilcon建立多任务系统,每个任务多个窗口,每个窗口包含多个控件的话,具有以下明显不足:
1)体系结构不好,由于所有任务的人机交互处理在Tilcon主任务中完成,功能任务之间耦合紧密,不利于任务的独立设计、维护和移植。
2)Tilcon人机交互处理任务软件规模将过于庞大,人机交互事件的处理过于复杂。
3)由于Tilcon采用循环方式来处理人机交互事件,所以从本质上来说Tilcon串行处理所有的人机交互事件。如果前面的人机交互处理时间较长,则直接影响到后续人机交互响应的实时性。
4)在Tilcon人机交互处理任务中完成各个任务的人机交互处理,如图3所示。人机交互处理在Tilcon任务中,其他功能模块在任务中,不利于任务的模块后、构件化设计,不便于系统的功能扩展和伸缩配置。
指控系统显控设备一般都配置专用功能键、非标数字小键盘、专用触摸屏/触摸板等人机交互设备,作为窗口控件操作的快捷或备用输入手段。但由于Tilcon主任务无法处理这些设备操控事件,需重复配置这些操控事件的处理模块,带来了系统功能代码的重复。
图3 Tilcon多任务人机交互处理示意图
软件架构反映了软件系统构成要素、构成要素之间的相互关系。好的软件架构应用以下几个基本特征[8]:
1)结构清晰、易于理解。软件架构具有层次性,不同层次组件具有依赖关系,同层组件关系简单,耦合松散。
2)易于维护、升级。同层组件之间的松耦合特性使得应用需求发生变化、需要升级或增加新的组件时,不会对整个架构和其他组件带来影响。
3)具有较好的移植性。层次化软件架构带来了软件较好的适应性。软件从一个平台移植到另一个平台时,只需把平台紧密相关的层次升级或替换即可,不会影响业务处理层次的组件。
在对指控系统任务和人机交互事件进行深入分析基础上,采用层次化、组件件化设计思想,建立了基于Tilcon的多输入、多任务人机交互处理模型,如图4所示。
该模型最上层为功能任务层。任务功能完整、可独立设计、开发和维护,便于采用构件化思想进行开发。各任务可通过信号量、事件或消息通信等方式响应人机交互通用中间件的人机交互输入命令。
人机交互通用中间件位于功能任务和交互设备预处理中间层,响应Tilcon、数字小键盘、触摸屏等人机交互输入事件,并规范化交互方式,匹配人机交互输入和相应的任务,启动任务进行处理人机交互事件。中间件和功能任务之间采用规范化交互方式,可以屏蔽底层人机交互输入的差异性,方便系统功能的扩展和功能任务的移植,具有较好的开放性和兼容性。
图4 基于Tilcon的多输入、多任务人机交互处理模型
层次化的人机交互模型把人机交互处理功能模块配置在对应的任务中,输入设备预处理和人机交互中间件只是简单处理、分发人机交互信息,整个系统结构清晰,人机交互效率较高,可有效保证系统人机交互的实时性。
不失一般性,利用信号量同步机制[9],给出了基于Tilcon的人机交互设计实例。信号量机制不具备参数传递能力,所以设计了一个规范化的信息交互数据结构,实现人机交互中间件和功能任务之间的事件信息的交互。信息交互数据结构C语言定义示例如下:
为规范信息交互结构中各参数含义,可以使用宏方式定义,在人机交互中间件和各服务模块中包含此宏定义。如果参数含义改变,只需要直接改变宏定义即可。
Tilcon任务(或其他输入设备)预处理完毕后,启动人机交互中间件,人机交互中间件完成交互信息的规范化后,释放信号量启动功能任务处理模块:
Tilcon是嵌入式系统下主流的人机交互界面设计工具,由于Tilcon在主任务中完成人机交互事件的处理,不适于实现多输入、多任务人机交互界面的设计。通用多输入、多任务人机交互处理模型降低了功能任务和Tilcon处理任务的耦合度,提高了系统的结构化水平和人机交互实时性,有利于实现功能任务的构件化设计,下一步有待开展指控系统下功能任务的构件化实现研究。
[1]赵祖铭.潜艇指控系统技术和发展分析[J].指挥控制与仿真,2007,29(2):1-8.
[2]侯小鹏,谭显春,秦克.基于Tilcon 的交互式多页面的设计[J]. 微计算机信息,2010, 26 (52):84-85.
[3]张加林,李松,汪高武,等. 基于Tilcon的VxWorks图形界面开发技术[J].指挥控制与仿真,2007,29(5):100-103.
[4]刘炳锋,李江红,等.基于Tilcon的某武器显控系统界面设计[J]. 计算机测量与控制,2008,16(8):1153-1154.
[5]Wind River Systems Inc. WindML DDK 3.0 PROGRAMMER’S GUIDE[R]. 2002.
[6]Tilcon SoftWare White Paper[Z]. Canada: Tilcon Software Ltd,2003.
[7]韩改宁,李永锋.基于嵌入式的Tilcon 用户图形界面设计与开发[J]. 现代电子技术,2009,16(3):51-53.
[8]祖兆研.基于插件技术的软件架构设计及应用[D].南京:河海大学硕士学位论文, 2007.
[9]孔祥营,柏桂枝.嵌入式实时操作系统 VxWork及其开发环境[M]. 北京: 中国电力出版社,2002.