APP下载

基于组件化思想的测控软件开发平台设计与实现

2013-09-25赵海源王丽芳蒋泽军

电子设计工程 2013年8期
关键词:开发人员测控视图

赵海源,王丽芳,蒋泽军

(西北工业大学 计算机学院,陕西 西安 710129)

随着计算机在各个领域的广泛应用,种类繁多的控制设备和过程监控装置使得传统的测控软件已无法满足用户的各种需求。开发传统的测控软件时,当被控对象一旦有变动,就必须修改其控制系统的源程序,导致其开发周期长;已开发成功的测控软件又由于每个控制项目的不同而使其重复使用率很低,导致它的价格非常昂贵;在修改测控软件的源程序时,倘若原来的编程人员因工作变动而离去时,则必须同其他人员或新手进行源程序的修改,因而更是相当困难。基于构件[1]技术的测控软件开发平台的出现为解决上述实际工程问题提供了一种崭新的方法,因为它能够很好地解决传统测控软件存在的种种问题,使用户能根据自己的控制对象和控制目的的任意组态[2](Configuration),完成最终的自动化控制工程。具体地说,测控软件开发平台是为测控软件开发、调试和运行提供的集成环境;利用该平台可灵活配置硬件测试资源,以可视化的方式配置测试流程,并加载硬件接口的驱动程序从而自动生成测控软件。

1 基于组件化思想的测控软件开发平台概述

随着近几年Internet的飞速发展,使软件应用置身于更加广阔的环境中,从而对应用软件的跨语言、跨平台和互操作性提出了更高的要求。在这种情况下,传统的面向对象[3]思想难以适应现代的分布式软件应用[4],组件化思想应运而生。组件化思想使得设计人员在软件设计过程中更倾向于将功能从主程序中剥离出来,封装在独立的模块中。

组件化设计的基本思想是将单独的、庞大而复杂的应用程序划分成多个模块,但这里每一个模块不再是一个简单的代码集,而是一个自给自足的组件,每个组件保持一定的功能独立性,在协同工作时,通过相互之间的接口完成实际的任务;这些组件可以单独开发,单独编译,甚至单独调试和测试,当所有的组件开发完成后,把它们组合在一起就得到了完整的应用系统。当系统的软硬件环境发生变化或者用户的需求有所更改时,并不需要对所有的组件进行修改,而只需对受影响的组件进行修改,然后重新组合得到新的升级软件测控软件开发平台基于组件化思想,发布订阅机制、虚拟共享内存等技术,开发人员只需要关注测控逻辑的开发,而不用过多地关注程序语言本身相关的知识和技术,即使是对程序设计了解较少的工程人员,也可以快速地将测控领域的知识和技术应用在测控软件的开发中,并在短时间内形成软件产品。测控软件通用开发平台能通过可视化的流程设计,构建出与之相适应的测控软件源码、工程文件和安装文件。基于组件化思想的“测控软件通用开发平台”是标准化和规模化的通用测控开发软件,利用该平台中的标准功能组件可以实现组件管理、测控软件的组装、双视图界面的效果模拟、硬件资源管理、二次开发(平台的扩展、测控软件的升级)、ActiveX和COM封装与集成等功能。

2 基于组件化思想的测控软件开发平台设计

测控软件通用开发平台基于组件化设计思想,平台具有通用性和扩展性。测控软件通用开发平台的框架主要实现测控软件的开发,以及平台的管理功能。为了支持平台的扩展性,实现了平台的扩展机制,包括组件的扩展和组件的调试。测控软件通用开发平台的框架与扩展图如图1所示。

图1 开发平台的框架与扩展Fig.1 Framework of the development platform and extend

测控软件通用开发平台的任务是实现测控软件的开发,主要通过组态设计和系统发布功能完成。组态设计包含使用平台拖放式组件在双视图界面中对测控软件流程进行设计。系统发布通过所完成的组态设计,实现组件的顺序组装,生成VC工程并进行打包,系统发布预留了编辑脚本的接口,提供开发人员编辑脚本控制测控软件的功能。

测控软件通用开发平台的管理功能包含安全管理、日志管理、组件管理及资源管理。通过对平台的管理为平台对测控软件开发提供支持。测控软件通用开发平台具有可扩展性,通过提供组件开发向导的功能,为平台提供ActiveX组件和COM组件的扩展,将非平台原有组件封装成平台自身的组件,并且扩展组件时,通过组件调试保证组件扩展的可用性。测控软件通用开发平台启动平台框架,动态加载软件平台下的所有组件。当测控软件开发人员对平台进行操作时,软件平台框架根据操作的信息实例化不同的组件对操作进行相应,其时序图如图2所示。

图2 时序图Fig.2 Timing diagram

3 主体框架的设计实现

软件平台的框架是一个通用的可独立运行的程序,定义了软件平台的接口规范,可自动加载符合软件平台接口规范的组件,是整个软件平台的基础和主干,其主要作用有:

1)负责启动整个软件平台和注册组件:软件平台启动后初始化窗体界面和组件管理器(ComponenetManager),扫描组件目录,完成组件的注册,并保存组件信息;

2)负责管理组件:完成组件接口的初始化,加载和卸载组件,并处理软件平台异常;

3)负责向外界提供使用组件功能的界面(如菜单、工具栏等),通过规范接口调用工厂类组件实例化功能组件。工厂类组件是框架实例化功能组件的入口,为框架提供功能组件的相关信息,并根据需要实例化相应的功能组件。

软件平台框架为组件的实现和扩展提供了一系列基础接口,并制定组件的开发规范,简化了后期组件的开发和扩展。软件平台框架和组件接口间的类关系如图3所示。组件可分为显示类组件和不可显示类组件:不可显示类组件主要包括管理和控制软件平台的组件;显示类组件具有界面视图,主要包括窗口管理类组件、双视图类组件、界面视图类组件、组态视图类组件。开发组件时,开发人员根据组件的特性,继承相应的基础接口。例如具有双视图的组件继承Doubleview Component接口,具有界面视图的组件继承Face Plate Component接口,具有组态视图的组件继承Link View Component接口。开发人员无需关心平台底层的特性,只需继承相应接口类,结合组件的特定需求即可开发符合软件平台接口规范的组件。按照软件平台框架所定义的接口规范进行组件的开发,封装组件的功能,提高组件的开发效率。

图3 静态类图Fig.3 Static class diagram

4 组件设计

4.1 组件模型

软件平台中的组件是针对测控领域开发的一系列相关功能的集合体,组件本身具有良好的扩展性和复用性。组件包含一个工厂[5]类组件以及一个或多个功能组件,通常被封装在同一个动态链接库中。软件平台启动时自动扫描组件目录,并将可用组件注册到框架中。组件的工厂类组件为组件提供与框架交互的接口,是组件实例化的入口。组件的结构图如4所示。

图4 组件结构图Fig.4 Diagram of component structure

基础组件与功能组件的划分:

软件平台中的组件包括基础组件和功能组件。基础组件在软件平台启动时由框架自动加载,仅实例化一次,初始化软件的界面和基本功能;基础组件包括Editpanel组件、生成/打包组件、硬件管理组件、日志记录组件。功能组件辅助软件平台实现开发测控软件流程中所需的具体功能,软件平台不会自动加载功能组件,需开发人员在使用组件时可将其实例化,并可实例化多次;功能组件包括分

级组件、调试组件、流程控制组件、分布式通信组件、算法组件、脚本组件、数据存储组件、显示组件、加密解密组件。

功能组件是组件内部实现的具有单一功能的程序,由工厂类组件接口实例化,并由软件平台框架调用。启动软件平台后,自动扫描组件目录,调用LoadPlugIn接口加载组件。组件中的工厂类组件实例化后,调用Register接口将功能组件注册在组件注册表中。

4.2 组件通信机制

软件平台中的组件间通信包括数据交换和消息[6]传递两部分。

1)数据交换

组件间的数据交换采用端口机制实现。端口定义了数据流的信息,包括端口号、端口在组件图示内的位置、端口传输数据类型、端口输入输出类型、端口接收或发送的数据值。开发人员可通过扩展和自定义端口的数据类型完成批量数据的传输。软件平台使用强类型转换机制,开发人员进行组态时,需保证接收端口的输入数据类型与发送端口的输出数据类型匹配,否则无法在端口间连线完成组件间通信。软件平台在组态设计阶段完成端口匹配的工作,避免了开发人员因疏忽出现的错误,简化了组态的设计和调试,提高了组态运行时的稳定性。

2)消息传递

软件平台采用消息捕获机制和发布-订阅机制[7]共同完成组件间消息的传递。组件捕获软件平台发布的所有消息,并对订阅的消息做出相应处理,同时继续向下分发其它消息。组件间采用notify接口与report接口共同实现消息的发布-订阅机制,对发布订阅机制的描述如图5所示。软件平台根据对消息的解析结果,将组件B和组件C注册到组件A上,一个组件可注册到多个组件上,实现消息的传递与控制。

软件平台根据对消息的解析,调用attach函数将组件B和组件C加入到组件A的notify链表中,并将组件A加入到组件B及组件C的report链表中。软件平台采用双向记录方式,使用report链表记录组件注册的对象,使用notify链表记录注册到该组件之上的其它组件,共同实现组件的注册过程。

图5 平台通信机制Fig.5 Platform communication mechanism

组件触发事件时,将事件封装为XML格式的消息,查询report和notify链表,将变化的事件发布到链表上的所有组件,软件平台默认组件接受所有类型的事件。

5 结 论

测控软件开发平台采用组件化的设计思想。使用组件化编程思想提高了组件的复用率,缩短了开发周期,降低了开发成本,提高了开发效率。组件化的设计思想使得测控软件开发平台的通用性、可移植性、可扩展性和开发效率均得到有效提高,使得测控软件通用开发平台具有可靠性和易用性,并具有二次开发功能。

[1]张强,周荣辉.com和.net构件模型[J].教育信息化,2006(3):36-38.

ZHANG Qiang,ZHOU Rong-Hui.com and.net component model[J].Education information,2006(3):36-38.

[2]YIN Fei,DING Wei-ming.Patterns research in the design of configuration software[J].Computer Measurement and Control,2005,13(3):298-300.

[3]Piccioni M,Oriol M,Meyer B,et al.An idebased, integrated solution to schema evolution of objected software[J].ASE,2009(5):650-654.

[4]金敏,周翔.高级软件开发过程[M].北京:清华大学出版社,2005.

[5]Erich Gama,Richard Helm,Ralph Johnson,等.设计模式:可复用面向对象软件的基础[M].李英军,马晓星,蔡敏,等译.机械工业出版社,2007.

[6]姚启鹏.基于消息中间件应用框架的研究[J].计算机与现代化,2006(135):84-87.

YAO Qi-Peng.Research on MOM’s application framwork[J].Jisuanji yu Xiandaihua,2006(135):84-87.

[7]Behnel S,Fiege L,Muhl G.On quality of service and publish-subscribe.In:Proe.of the 26th IEEE Int’t Conf.on distributed computing systems workshops[J].Lisboa:IEEE,2006(137):20-25.

猜你喜欢

开发人员测控视图
Semtech发布LoRa Basics 以加速物联网应用
基于LabWindows/CVI与TekVISA的Tek示波器远程测控软件设计
5.3 视图与投影
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
基于现代测控技术及其应用分析
虚拟仪器技术在农业装备测控中的应用
向着新航程进发——远望7号测控船首航记录
后悔了?教你隐藏开发人员选项