一、情况分析
目前我司集中器下行模块支持的现场总线有晓程、东软、友讯达、锐拔、鼎信共五种。根据集抄产品计划还有瑞斯康载波、桑锐无线等等需要支持,呈扩大的趋势。目前各种现场总线都各有各的特点,如鼎信没有明显的组网概念,它初始是通过与集中器进行抄表的交互中完成组网,这是它相比晓程的一个优点。
目前集中器程序和现场总线程序还是合在一起开发,即捆绑在一起。每次增加一种现场总线都需要修改集中器程序,为它编译一个版本。在测试时主程序也需要做回归测试,增加了测试的工作量。同时也为版本管理带来了麻烦,即需要区分版本支持现场总线的情况。
基于以上理由,本人提出采用插件技术来解决现场总线的支持问题。
二、插件技术简介
插件是一种遵循统一的预定义接口规范编写出来的程序,应用程序在运行时通过接口规范对插件进行调用,以扩展应用程序的功能。插件最吸引人的地方就是其所实现“运行时(run-time)”功能扩展,即插件支持程序在运行时增加功能,而不需要对整个程序进行重新编译,发布应用程序的新版本。
插件的本质在于不修改程序主体(平台)的情况下对软件功能进行扩展与加强。这就需要定义“平台+插件”的软件开发结构,即将一个待开发的目标软件分为两部分,一部分为程序的主体或主框架,可定义为平台,另一部分为功能扩展或补充模块,可定义为插件。平台所完成的功能应为一个软件系统的核心和基础,这些基本功能即可为用户使用,也可为插件使用。平台的内核功能是整个软件的重要功能,一个软件的大部分功能因由内核功能完成。平台的插件处理功能用于扩展平台和管理插件,为插件操纵平台和与插件通信提供标准平台扩展接口。插件所完成的功能是对平台功能的扩展与补充,一般插件完成系列化功能。
为了实现平台+插件结构的软件设计需要定义两个标准接口,一个为由平台所实现的平台扩展接口,一个为插件所实现的插件接口。这里需要说明的是:平台扩展接口完全由平台实现,插件只是调用和使用,插件接口完全由插件实现,平台也只是调用和使用。平台扩展接口实现插件向平台方向的单向通信,插件通过平台扩展接口可获取主框架的各种资源和数据,可包括各种系统句柄,程序内部数据以及内存分配等。插件接口为平台向插件方向的单向通信,平台通过插件接口调用插件所实现的功能,读取插件处理数据等。
平台插件处理功能包括插件安装、注册、管理和调用,以及平台扩展接口的功能实现。插件注册为按照某种机制首先在系统中搜索已安装插件,之后将搜索到的插件注册到平台上,并在平台上生成相应的调用机制,这包括菜单选项、工具栏、内部调用等。插件管理完成插件与平台的协调,为各插件在平台上生成管理信息以及进行插件的状态跟踪。插件调用为调用各插件所实现的功能。平台插件处理功能实现的另一部分功能为平台扩展接口的具体实现。
更详细的请参见插件技术介绍。
三、插件技术应用的难点、重点
采用“平台+插件”技术实现的软件结构,功能实现的重点是平台和插件进行有效的通信。
在集中器程序中现场总线应用插件技术的难点是现场总线功能的高度抽象,需要完成现场总线插件接口的定义。一般来说插件接口不能太多,最好不要超过十个,每个接口的参数最好不要超过五个,否则后续开发和维护都会很困难。完成现场总线插件接口定义后,每个具体的现场总线只需要实现相应的接口定义的功能即可。
现场总线插件的安装和卸载可以采用类似于升级和方式实现,注册由集中器主程序对已安装的现场总线进行加载,之后集中器主程序就可以对现场总线插件进行管理,实现功能调用。
四、实现插件技术的优点
1、采用插件技术后,增加现场总线不需要对集中器主程序进行修改。现场总线的开发按插件技术进行开发,降低研发的工作量和研发的难度。
2、由于没有更改集中器主程序,测试工作量也可以降低,即版本发布后不需要对主程序进行测试,仅仅需要对现场总线进行测试。
3、版本管理工作增加现场总线不需要对主程序进行版本发布,仅仅发布现场总线版本即可,版本管理简单。
4、现场运行增加或更改现场总线支持,仅需要安装相应的现场总线插件即可。
五、关于表计规约
集中器程序中的表计规约如果比较多的话也可以采用插件技术实现,表计规约采用插件技术比现场总线要容易实现,因为表计规约的接口容易定义。