0 引言
近年来,智能电网这一新概念逐渐受到国内外电力专家的青昧。智能电网主要是运用先进的网络分析技术以及新的智能化技术手段,将电力企业的各种设备、控制系统、生产任务及工作人员有机地联系在一起,在一种“公共信息模型”的基础上自动收集和存储数据,对供电系统的运行及电力企业的经营管理进行全面、深入的分析,客观正确地优化其资产管理和供电服务。智能电网包括智能发电、智能输电、智能配电和智能变电4个部分。
智能配电网是智能电网的重要组成部分,可实现对微网的灵活控制,从而提高需求侧的供电可靠性和管理水平。智能配电数字终端与系统主站的通信支持《Q/GDW 376.1—2009电力用户用电信息采集系统通信协议》,在与计量设备通讯时支持《DL/T 645—2007多功能电能表通信规约》。智能配电数字终端实现了实时数据采集、定时自动采集、终端主动上报等多种数据采集方式,同时也支持电能数据、交流直流模拟量、电能曲线、电能质量越限统计数据、事件记录等各种电力数据类型,提供友好的人机界面,能够与主控模块进行显示、键盘、本地维护口等信息的交互,在通信端采用了红外、串口、以太网、USB等多种通信方式,实现了配电自动化、事件记录、远程控制一体化。
在智能配电网中,需要采集的电力数据以及数据的来源较多,本文提出的消息设计方案能够很好地解决大量数据源的管理,保证系统的实时响应,提高系统的工作效率。
1 终端软件系统
1.1 终端软件模块
智能配电数字终端软件系统根据各模块职责内聚性、通用性、领域相关性等划分为基础构建模块、设备管理模层、消息控制层、业务逻辑模层、应用逻辑层等5个部分。软件系统逻辑划分如图1所示。
系统中基础构建模块负责向系统提供所有运行所需的基础构建,如引用计数、SQLite数据库、Log运行记、XML解析、消息管理器等;设备管理模块提供对LCD显示模块、ADC设备、电源等硬件设备的基础管理和高层抽象;消息控制模块将设备的输入用消息的形式引入系统;业务逻辑模块主要负责协议解析、数据计算分析、对数据库的存储及操作等;应用逻辑模块处理本地用户输入、界面显示控制,以及用消息注册的方式接收消息,并进行消息处理等相关操作。
1.2 消息控制模块
消息管理为系统运行架构的运行机制,负责控制各个设备产生消息,供其他消息控制模块调用。消息控制模块基于消息管理器,屏蔽各设备实现的差异,以增强系统的扩展性以及降低子系统之间的耦合性,统一各种输入输出设备在系统中的实现,使所有设备的输入均以消息的形式引入系统。系统运行流程如图2所示。从图2中看到,在消息管理循环中,消息管理器将对主站通信设备、用户输入、电能表通信设备、开关量通信设备、直流信号采集设备和定时器等抽象设备的输入以消息的形式引入系统,并通告应用逻辑模块对消息进行处理。
2 系统运行机制
本系统的运行基于反应器(Reactor)模式的事件驱动机制。Reactor释义“反应器”,是一种事件驱动机制,与普通函数调用的不同之处在于:应用程序不是主动地调用某个API完成处理,而是根据Reactor提供的回调机制统一将接口注册到Reactor上。当这些事件发生时,消息管理中心会调用这些已经注册的函数处理相应的事件(I/O读写、定时和用户输入等)。这样系统能够将处理函数的调用者与被调用者分离,使本系统更加灵活。
2.1 系统运行结构设计
本系统采用的事件驱动模式与消息服务系统类似,同时又存在区别。在消息系统中,消息客户端和消息服务器端只需建立一个连接,就可以随时发布消息。事件驱动的本系统预先定义事件的触发条件和事件的执行过程并在客户端和服务端建立连接,当3系统在工作过程中发现事件满足触发条件,事件就被激活并开始执行。系统中的事件驱动流程示意图如图3所示。
图3中,事件消费者向事件管理器订阅事件,事件生产者向事件管理器发布事件,当事件管理器从事件生产者那接收到一个事件时,事件管理器把这个事件转送给相应的事件消费者。
2.2 事件管理器循环设计
本系统中的事件管理器负责设备或定时事件的准备(Prepare)、选择(Select)、检查(Check)、处理(Dispatch)、清楚(Cleanup)5个步骤,事件管理器的分发循环如图4所示。
根据系统的实际需要,模型中定义事件源的基类Source。主站通信、定时采集、用户输入等多种具体的事件源可以继承自该基类。同时全局事件管理器SourceDispathcer提供3个操作来管理事件。待处理事件管理器类SourceDispatchContext则负责管理符合触发条件的事件。3个类之间的关系如图5所示。
从图5可看到,全局事件管理器提供接口ToRegisterSouree注册系统关心的事件,同时使用接口UnRegisterSource注销事件,iteration OfDispatch则负责事件分发循环的5个步骤。首先将所关心的I/O设备中文件描述符放入待检队列或者设定定时周期等参数;然后检查相关设备是否可读写或定时周期到达,将满足触发条件的事件放入待处理事件队列中;最后分别调用相关的事件处理函数处理事件,并清理待处理事件队列。
3 Reactor事件处理机制
3.1 事件源
在智能配电数字终端系统中,事件源主要由采集模块、主站通信、用户输入和定时器等抽象设备4大部分组成,关系如图6所示。
事件源在本系统中被封装成文件描述符,程序在指定的文件描述符上关注关心的事件。
3.2 I/O多路复用
通常对一个文件描述符指定的文件或设备进行I/O操作,系统有3种I/O方式:阻塞和非阻塞同步,以及复用型I/O。复用型I/O,指当满足一个或多个I/O条件(可读、可写或异常)时,进程能够立即知道,从而可以正确并高效的处理。
本系统的I/O多路复用使用一个事件多路分离器,分离器将来自事件源的I/O事件分离出来,并分发到对应的事件处理器。通常预先注册需要处理的事件及事件处理器(或回调函数);事件分离器负责将请求的事件传送给事件处理器。
3.3 定时器等抽象设备
在本系统中消息源主要都是I/O设备,可以用系统函数Select和poll来实现I/O多路复用机制。定时器作为一种特殊事件,虽然不能用Select函数将其放入待检查队列,但同样可以在事件分发循环的准备(Prepare)阶段设置定时周期等参数,检查(Check)定时周期是否到达,当定时周期到了,将定时处理事件放入待处理消息队列。
3.4 事件处理
对应每一个事件源,在初始阶段将动态库函数引入系统,建立事件到相应处理函数的映射,Message Center是事件处理的接口,侠处理函数的注册、注销,当有事件进入“就绪’状态时,调用注册事件的回调函数处理事件。事件处理中心类如图7所示。
各种具体事件的处理涵数在MessageCenter中进行注册,MessageCenter采用map容器对注册的各种事件处理函数进行管理,能够高效率地查找各相关处理函数,提高了系统的实时响应能力。事件处理的时序如图8所示。
4 结语
本文从智能配电数字终端系统实现的角度提出了一种基于Reactor的事件驱动模式消息管理方案,结合面向对象的思想,统一接口,对事件源和事件处理进行了封装。提高了事件的处理效率,保证了系统的实时性。根据实际需要可以在不同的系统中对于待消息队列中的事件用优先级加以区分。