曹雄伟,倪琳轩,齐洪豪,钟 媛
(航空工业洪都,江西 南昌,330024)
航空总线系统传输的数据通常种类繁多且数据量大,这就意味着其ICD 也比较复杂。传统的ICD 管理软件存在许多弊端,首先是数据库结构复杂,条理不清晰,不能对数据进行分层批量修改[1]。二是兼容性、通用性不强,只能对特定的航空总线ICD 进行管理,很难在多种航空总线的测试中重复使用[2,3]。其三是软件界面不够友好,信号中各参数的显示不能一目了然,ICD 包含的数据众多且格式繁杂,界面设计的缺陷很容易使操作员在分析数据时出错[4]。
针对传统ICD 数据库管理系统存在的上述问题,本文设计了ICD 数据库管理系统。ICD 数据库管理系统数据模型如图1 所示,数据模型采用链表结构。此链表基于Visual C++的两个模板类CTypedPtrList 和CArray 实现,在数据库中包括数据块元素和数据元素。链表的每个节点对应一个数据块,包含数据块属性、数据属性、下一数据块的句柄,属于该数据块的信号数据子节点被链接到数据块节点上。
图1 ICD 数据库管理系统的数据结构
ICD 数据库管理系统基于数据描述表实现,数据描述表代表了数据块/信号的数据模型,我们把ICD的内容按从属关系分成三类数据描述表,它们分别是数据块信息统计表、数据块描述表和信号描述表。
数据块信息统计表统计并列举ICD 数据库中全部数据块的规范号、数据块名称、信号字数等基本信息,该描述表的内容在系统初始化和修改数据块信息时刷新。数据块描述表关联了同源同目的的信号元素,描述了一个数据块中全部信号元素的共同属性,即块属性,根据块属性设计出以下字段:源、目标、符合标准、传输类型、中断、系统方式、允许重写、更新周期和最大延迟时间。数据块描述表还统计列举了该块中的全部信号,在数据块描述表中对块属性的修改将使全部信号的块属性发生更新。信号描述表描述信号数据属性,根据这些属性设计出以下字段:码制、更新速率、发送速率、单位、信号范围、精度和分辨率。信号描述表会列举属于该信号的所有数据位,这些数据位可能单独或组合在一起代表某种状态组合,也可能代表某种参数值,用户可以根据实际情况进行编辑。信号数据位属性如状态描述、数据单位、起始位、停止位等均详细描述于信号描述表中,对应于各信号数据位字段。
为了兼容各种航空总线,本文设计了一个兼容各种航空总线标准的C++数据结构来管理航空总线系统的数据块元素和数据元素,该数据结构如下所示:
软件工作流程如图2 所示:
图2 软件工作流程
根据软件工作流程,ICD 数据库管理系统的功能模块划分为:主模块、初始化模块、数据管理模块、文件处理模块、显示模块、数据库模块。各功能模块间的关系见图3。
图3 系统各模块间关系
主模块是软件运行的主流程,根据用户在ICD数据库管理系统主界面进行的添加、修改、删除等操作,调用相应的功能模块完成对应的功能。
初始化模块实现主界面初始化和功能模块初始化,其中功能模块初始化包含数据管理模块初始化、显示模块初始化和数据库模块初始化。数据管理模块初始化ICD 数据结构;显示模块初始化树形结构和数据描述表;数据库模块初始化COM 库,创建数据库连接对象实例和记录集对象实例。
数据管理模块响应显示模块发送的数据编辑消息,通过数据链表编辑数据,并保存于ICD 数据库中,同时向显示模块发送数据显示消息,刷新数据描述表。消息结构体定义如下:
对于某些航空总线,其ICD 数据要添加到数据中指定的记录之后,由于ICD 中的数据之间是相互关联的,添加数据可能会涉及到其他数据某些字段的改动,在此使用CArray 模板类,把指定记录之后的数据临时剪切到CArray 的对象中,待新数据插入记录集后,把CArray 对象中数据的某些字段(如数据编号等)按照数据之间的关联关系做必要的修改后加入记录集并刷新,保证了数据间的关联性。
显示模块负责响应数据管理模块的数据显示消息,加载指定的数据描述表,读取用户选择的数据块及数据信息并直观地显示在数据描述表中。用户可在此模块中修改数据块和数据属性,系统会向数据管理模块发送修改消息,保存修改后的数据,完成数据库的修改更新。
文件处理模块实现航空总线数据导入、查询、分析、回放、报表生成和打印功能。根据通用性的设计思想,所有航空总线系统数据的定义都按特定的规范存储在ICD 数据库中,并且可以导出为db 格式的文件,实现了系统通用性。在对数据进行事后分析时,可以通过此模块导入db 格式的文件,完成数据回放功能。
ICD 数据库管理系统采用ADO 技术访问数据库,它是基于OLE DB 接口上实现的COM 对象。
ADO 模型主要对象有3 个:Connection、Command 和Recordset,分别用来管理应用程序与数据库之间的通信,处理重复执行的查询,获取数据。这些对象可以被独立创建和释放。为方便实现数据库的访问,我们将ADO 对象及其各自的方法封装到数据库模块中,通过模块对象调用其中的方法,实现数据库的连接、打开、查询和修改等操作。
系统基于MFC 的单文档多视图框架,ICD 数据库采用Microsoft Office Access 2000,数据信息显示在客户区框架视图的数据描述中,界面的初始化流程如图4 所示。
图4 界面的初始化流程
首先连接打开ICD 数据库;然后初始化链表,打开数据块记录集,把块属性等信息加载于链表,遍历记录集,将该块的信号数据生成该节点的子节点,并依次将全部数据块载入链表;其次关闭数据库,初始化树形结构,通过链表把ICD 数据库的数据块和信号名称显示于树形结构;最后初始化数据描述表。软件界面如图5 所示。在界面中,左侧树形结构供用户选择所需观察的数据块,树形结构的右键弹出菜单、系统菜单和工具栏提供了完整的数据操作功能,根据菜单,用户可实现数据块和信号数据的显示、插入和删除等操作。右侧的数据描述表窗口供用户浏览、维护及修改ICD 数据。
图5 软件界面
通过讨论传统ICD 数据库管理软件的弊端,本文提出了ICD 数据库管理系统的设计思想,分析了ICD数据库管理系统的数据结构、管理方式以及工作流程,介绍了系统各功能模块的设计方法,得出了系统软件界面,设计的软件在实际运行中取得了良好的效果。