1. 引言
随着现场总线技术的发展及大量应用,为工业自动化生产带来了巨大改变,在石油化工、电力等行业的控制系统中,往往存在着来自不同厂商、支持不同现场总线协议的智能仪表设备 [1] [2] 。这些现场总线设备和智能仪表在运行过程中会产生大量数据,根据访问属性可以分为配置类数据和状态类数据,配置类数据是可读可写的,设备维护人员可以根据设备的使用工况进行远程设置和动态调节;状态类数据是只读的,由设备自身生成和管理,反应设备的运行状态,能够为设备维护人员实时提供设备的各种诊断和报警信息。根据轮询方式可以分为周期数据和非周期数据,周期数据实时反馈仪表测量值,非周期数据反馈设备的状态信息,包括远程和就地故障、报警信息、电源状态、通道状态、维护信息、测量值单位、质量、量程等,这些数据可以帮助用户及时诊断现场设备的实时状态,对设备的管理、预测性维护提供了有效的数据支撑 [3] [4] [5] 。
但是现场智能仪表提高劳动生产力的同时也给用户造成了管理上的难度,仪表种类和数量越多,需要的维护人员和各种类型的维护管理设备越多,因此用户希望能够通过一种统一的操作平台来获取现场智能仪表设备的监测信息及设备自身的运行状态信息,并对设备进行配置、监视、操作、诊断等管理,这便是智能仪表管理系统出现的根本原因 [6] [7] 。
目前国外许多不同的供应商均提供智能仪表管理系统和相关产品,而EDDL技术和FDT/DTM技术是智能仪表管理系统常用的设备集成技术。由于两种技术的发布时间、发展方向和技术路线的不同,各系统对两种技术的支持程度也有所不同,通常情况下,各系统最终实现方式为同一系统两种技术的功能相互独立,对于FDT/DTM的支持提供独立的FDT框架程序或接口;而以EDDL为基础的系统框架下也不能添加相应的DTM设备。本文研究的调度与控制模块正是能够解决这两种技术在一个设备管理系统平台相互融合的问题,从而实现在一个设备集成平台上对不同厂商设备进行配置和管理,使智能设备发挥最大效益,实现对设备调试、组态、标定和预测性维护等管理功能。
2. 设备集成技术
为了解决不同厂家采用不同协议的设备之间进行互操作的问题,智能仪表管理系统通常支持EDDL或FDT/DTM两种设备集成技术。其中,EDDL技术能够采用统一规范的描述语言来表示不同厂商不同类别设备的属性,形成EDD文件,而EDD解析器通过读取EDD文件为用户产生统一的输入输出界面,该技术能够实现远程配置、调试、校准、诊断设备等功能,具有易于更新、易于存储、支持多语言等优点,但该技术对于复杂设备的描述、设备信息的可视化描述存在一定的局限性;而近几年流行的FDT/DTM技术正好能够弥补EDDL技术的不足,它是一种软件接口描述技术,不仅提供与主机系统的接口,还提供设备厂商开发设备描述DTM软件组件的接口,使得按FDT标准开发的软件工具能够集成到基于Windows的主机系统中,同时不同厂家按照标准接口开发的DTM能够集成到符合规范的FDT框架应用程序中,从而实现对现场不同厂家不同协议的设备进行统一的配置和管理,但这种技术需要增加设备开发的成本和集成的复杂性。
由于这两种设备集成技术各有优势和不足,作为设备集成统一操作平台,本文设计的智能仪表系统将支持EDDL和FDT/DTM两种设备集成技术,而调度与控制模块能够同时对EDD设备和DTM设备进行管理和维护,从而实现对同时支持这两种技术的设备进行相互切换,方便用户使用且能有效发挥两种技术各自优势,弥补各自的不足。
3. 功能结构设计
智能仪表管理系统是基于EDDL和FDT/DTM设备集成技术对各种现场智能仪表进行组态配置、故障诊断和维护分析决策的通用系统 [8] ,采用基于功能块组件的设计方法,通过各组件提供的接口进行数据的交互和共享,其功能结构见图1。
其中调度与控制模块是智能仪表管理系统设计中的重要组成部分,是各应用模块与主框架集成的关键接口组件,负责为各应用模块数据实体与主框架的交互提供统一的接口,各上层应用模块获取数据后由主框架集中显示和操作,这样能够降低主框架程序和各应用模块实现层的耦合程度,提高开发效率和系统可维护性。
Figure 1. Functional structure design of smart device management system
图1. 智能仪表管理系统功能结构设计图
智能仪表管理系统采用界面和逻辑分离的设计思路,调度与控制模块作为主程序的逻辑控制与组织部分,为上层的框架调用提供接口服务支持 [9] ,接收主框架传送的操作指令和消息,并负责处理和分发给各应用模块,从而降低主界面程序和各应用模块的耦合程度。
智能仪表管理系统由多个功能应用模块组成,各应用模块之间功能相对独立,由于调度与控制模块负责创建、销毁和管理各应用模块对象,能够为模块间的交互提供沟通桥梁,该模块提供对以下应用模块的管理和维护:主框架、EDDL管理模块、报警管理模块、数据与信息管理模块、标定管理模块、用户管理模块、接口管理模块、日志管理模块、预测性维护管理模块、台账管理模块、工作票管理模块、FDT管理模块等,该模块与其他各应用模块的关系见图2,其关系描述如下:
① 为主框架提供操作接口,负责传递和响应主框架发送的指令或消息,并且在自身有请求时通过与主框架的回调接口向上层发送请求。
② 创建EDDL管理组件对象,通过控制EDDL管理模块,实现对EDDL设备对象的所有操作,并传递主框架对EDDL模块信息的请求。
③ 创建报警管理组件对象,与报警模块交互,传递主框架对报警管理模块信息的请求,并实现报警管理模块与EDDL管理模块的交互任务。
④ 创建数据与信息管理组件对象,调用数据与信息管理模块接口,实现数据的读取和保存。
⑤ 创建标定管理组件对象,传递主框架对该模块信息的请求。
⑥ 创建用户管理组件对象,供其他模块调用。
⑦ 创建接口管理组件对象,管理数据的导出功能。
⑧ 创建日志管理组件对象,供其他模块调用。
⑨ 创建预测性维护管理组件对象,供其他模块调用。
⑩ 创建台账管理组件对象,传递主框架对该模块信息的请求,并且响应台账模块的信息请求。
⑪ 创建工作票管理组件对象,传递主框架对该模块信息的请求。
⑫ 创建FDT管理组件对象,通过控制FDT管理模块,实现对设备对象的所有操作,并传递主框架对FDT模块信息的请求。
由于调度与控制模块同时拥有EDDL管理组件对象和FDT管理组件对象,因此能够方便快捷地实现两种技术的相互融合和切换。
Figure 2. Relationship with other modules
图2. 与其他模块的关系
4. 调度与控制模块的设计
按照功能点、处理逻辑和流程设计上的需要,调度与控制模块可分为对象管理模块、数据管理模块、注册管理模块、回调管理模块四个子功能模块,见图3。
4.1. 对象管理模块
对象管理模块负责其他各模块的创建、初始化、销毁、释放资源的过程,并且在整个软件运行期间,对这些组件对象进行维护,传递主程序对这些模块的调用请求,对象管理模块与其他模块关系描述见表1。
主框架创建IUICtrlCallBack回调接口对象,并在系统初始化时传入,由对象管理模块保存,调度与控制模块通过该对象向主框架主动发送请求。对象管理模块保存了调度与控制内部所有被创建的对象的指针,并且提供了访问这些对象的接口函数,作为输出数据可以被其他模块访问。
对象管理模块中的CUICtrlManagerClass类型对象在调度与控制模块的生存周期内有效且唯一,负责创建外部组件对象以及模块内部的全生命周期对象。CTopologManager、CAlertMonitorCallBack、CAccountInfoManageCallBack、CAreaManager等类型的对象作为CUICtrlManagerClass类的成员数据存在,通过CUICtrlManagerClass类的InitUICtrlObject()函数,创建和初始化其他各外部模块,并且负责建立起模块间的回调关系,见图4。
Figure 3. Functional decomposition of the module
图3. 模块功能分解
Table 1. Object management module relationship description diagram
表1. 对象管理模块关系描述图
4.2. 数据管理模块
数据管理模块负责与数据库进行交互,管理并维护在软件运行周期内的框架程序产生的所有数据,包括区域信息、物理网络信息、设备对象、日志信息。数据管理模块对这些数据进行组织,并负责实现管理这些对象的处理流程。同时数据管理模块是调度与控制接口的操作实现体,框架通对组件的调用,通过该子模块实现。该模块的输入项包含从EDDL管理模块、报警管理模块、台账管理模块中获取的相关数据信息,输出项是经过处理供其他各模块使用的相关数据等,如区域信息、网络信息、设备对象信息等。数据管理模块关系描述见表2。
4.2.1. 区域信息的管理
区域信息指由框架程序进行区域组态时产生的数据,涉及的操作过程包括添加、删除、修改、保存和恢复等。为了实现界面和逻辑数据的分离,上层框架不负责维护任何区域信息对象的数据,只把相应的操作请求发送给调度与控制模块,然后由该模块负责对区域节点对象的添加、删除、重修改、保存、读取等操作,调度与控制模块会建立一个数据管理对象专门负责维护这些数据,在必要时,框架通过组件的接口函数获取这些数据的指针,将来这些资源的释放也由调度与控制组件实现,和上层无关。
Table 2. Data management module relationship description diagram
表2. 数据管理模块关系描述图
4.2.2. 网络信息的管理
网络信息指由框架程序进行物理网络组态时产生的数据,包括物理网络的拓扑结构信息、设备对象等。为了实现界面和逻辑数据的分离,与区域信息管理实现的思路相同,上层框架不负责维对网络信息的维护,也是通过一系列的组件接口,委托调度与控制组件执行相应的操作。组件内部建立了一个专门用来维护网络拓扑结构的类,它和上层框架显示的网络结构是一致的,在操作时二者保持一致,通过接口函数,上层框架可随时获取这些信息。将来这些资源的释放也由调度与控制组件实现,和上层无关。
4.2.3. 设备对象的控制流程
调度与控制组件拥有所有设备对象的指针,它通过调用EDDL管理对象提供的接口函数,能够控制设备对象的行为,如上线、上载参数、打开设备参数窗口等操作。调度控制对象在接收框架发送来的操作命令后,向EDDL管理组件传递这些请求,实现对设备操作的目的。
4.2.4. 数据存取的管理
软件运行过程中产生的数据要被保存到数据库中,包括区域组态信息、网络组态信息、日志信息等。其中区域组态信息可直接调用数据库提供的操作接口进行保存或读取。日志信息则直接调用数据库提供的保存日志的接口,写到数据库中。
4.3. 注册管理模块
注册管理模块用来控制和管理软件的注册授权,提供了授权限制、软件注册验证和管理等功能。注册管理模块关系描述见表3。
软件分为注册授权状态和非注册授权状态,如果是非注册授权状态在软件启动时开始计算演示运行时间,限制添加智能仪表数量。软件使用过程需要考虑智能仪表数量限制,加密算法需要把用户名、授权点数、当前机器的机器码实现加密。在注册过程中只要有一个环节信息不正确,生成的注册码是错误的,注册授权就会失败。
软件启动时,首先判断软件是否在本机上被授权使用,注册管理模块从本地注册表中寻找登记的注册信息,包括机器码、授权码、用户名、授权点数。然后在程序中经过一定的加密算法动态生成机器码,并与从数据表中获得的机器码比较是否相同,不同表示注册信息非法并返回未注册。如果机器码正确,则调用加密算法模块,把由用户名、授权点数、机器码、授权码组合成的信息段进行加密,动态生成正确的授权码,然后和从数据库读到的授权码进行比较,相同则返回已注册,否则返回软件未注册。软件注册管理流程见图5。
4.4. 回调管理模块
回调管理模块包含了调度与控制模块实现的所有回调接口类,回调接口是外部模块与本模块交互的渠道,通过回调接口,外部模块可以向本模块发送请求,涉及报警管理模块、台账管理模块。回调管理模块关系描述见表4。
Table 3. Registration management module relationship description
表3. 注册管理模块关系描述图
Table 4. Callback management module relationship description diagram
表4. 回调管理模块关系描述图
Figure 5. Registration module management process
图5. 注册模块管理流程
回调接口为台账管理模块和报警管理模块定义的接口,调度与控制模块通过引入继承并实现。在本组件初始化时,分别定义这些接口类的对象,并通过台账和报警模块的初始化函数将这些对象指针分别
传递给它们,供其在需要时调用,这样就建立起了关联关系,见图6。
5. 系统实现
采用该方案设计和实现的智能仪表管理系统的主界面见图7,对于与该系统平台连接的同一设备,
Figure 6. Callback establishment process
图6. 回调建立流程
Figure 7. Main interface of smart meter management system
图7. 智能仪表管理系统主界面
可以采用EDD方式和FDT/DTM方式打开配置界面,用户可以方便地进行EDD和DTM两种集成方式的切换,两种设备集成技术的支持能够为用户提供智能仪表管理与维护功能,使智能设备自身能够发挥最大的生产效益,减少智能仪表的损耗并降低维护成本,为用户提供一个快速、方便、统一的管理平台,可以大幅提高工厂使能设备的可用性、生产能力和产品质量,改变了传统的维护操作方式,有效的管理了工厂当前的资产,优化了生产控制过程,从而达到提升工厂整体维护管理水平、提高生产力、实现企业运行最优化的目标。
6. 结语
本文主要介绍了智能仪表管理系统中调度与控制模块的设计实现方法,调度与控制模块作为逻辑部分,在设计与实现过程中,为智能仪表管理系统主框架提供操作接口,为各模块间的交互实现了沟通的桥梁,提高开发效率,既方便了多个模块之间的交互,又降低了主界面程序与实际功能实现层的耦合程度;另外,该模块将EDDL和FDT/DTM两种设备集成技术进行相互融合和切换,能够有效地发挥两种技术各自的优势,弥补各自的不足,由于各自技术细节均在独立的模块中实现,如何将两种技术进行深入融合,尚待进一步研究。