姚诸香,房金彦,桂小强,汤文胜
(国网江西省电力公司,江西 南昌 330077)
为了对重要系统和设备进行实时在线监视,电力行业建设了能量管理系统(EMS)、机房环境监控系统、水调管理系统(WDS)、数据网网管系统、通信网网管系统等[1],轨道交通行业建设了电力监控与数据采集(PSCADA)、机电设备监控(EMCS)、火灾自动报警(FAS)、闭路电视(CCTV)等系统[1],其它行业也建设有许多类似的系统。这些系统大多为特定目的而设计、体量大、设备复用差、信息共享不便。为了解决运行值班人员和维护专责面临的系统多且相对独立、设备多且安装分散、专业多且跨度大等问题,作者在文献[2]中提出了“综合监控”的理念,将各个系统(含异构系统)的数据和信息经优选后采集过来,进行集中展示和监控,以便及时发现异常、准确定位故障。受限于当时的经验和技术条件,该系统的设计功能比较单一,经过多年的实践、研究,作者采用软件工程的方法,对该系统进行了重新设计,使其功能得到了扩展,性能得到了提升,下面将介绍该系统的设计原则、结构及功能组成,并展示部分应用示例。
一个综合监控系统除了运行稳定、安全可靠外,还要考虑以下因素:
1)实用性:功能必须实用,必须能解决实际问题;
2)轻便性:避免新建一套系统,添加一套设备的老路,主要从软件上着手,充分利用现有设备资源,免去硬件购置、安装的工作量;
3)松耦合:各功能模块既是综合监控系统的组成部分,又可分布式部署,客户端模块不依赖特定的环境(常规实时监控系统的数据采集需要实时库的支持);
4)扩展性:用户能够根据自身需要,灵活地扩展系统的功能,比如设定告警触发的规则。常规监控系统数据正常与否的规则有的固化在程序中,有的只能做简单的设置,用户无法对其扩展。
5)适应性:能适应异构的操作系统(unix、windows、linux)、不同的应用场景(有人值班、无人值守)、多样的采集和传输方式(网络端口、文件和串口)。
6)开放性:作为一个公共平台,能给第三方提供二次开发接口,也能给其它用户提供相应的服务(比如给下级机构提供查询的Web服务)。
7)易用性:充分发挥C/S和B/S设计模式的优点,使系统投运后绝大多数工作能在网页上完成,相关程序在后台以服务模式运行,基本做到免维护。
遵照上述设计原则,本系统构架如图1所示。
图1 系统功能结构
图1 中的主机是指各种计算机,如工作站、服务器、PC 机等;网络设备是指路由器、交换机及连接在网络上的智能设备;系统是指为完成某些任务的设备及软件集合,如EMS系统、通信网管系统等。系统服务器既指物理上的服务器(构成本系统的硬件),也指出服务端程序。数据采集、信息采集、数据接收、信息接收、事件触发、短信收发、事务处理、信息发布、网站及服务、文本转语音是本系统的主要功能模块。数据采集模块和信息采集模块作为客户端运行于相应的主机上,文本转语音模块作为服务端,运行于有人值班场所的主机上,提供语音服务,这几个模块未在图中示出。数据采集模块和信息采集模块采集完相关设备和系统的数据或告警信息后经隔离装置、MOXA(串口转网口设备)或串口传送到数据接收程序或信息接收程序。经隔离装置传输是适应电力二次系统安全防护的要求,采用串口传输是因为有的通信网管系统不允许连接到别的网络上。
数据(监视对象的值)是判断设备运行正常与否的基础。当有的设备未接入任何监控系统或虽接入了某个监控系统,但该监控系统提供的监控手段不完整(无短信告警,满足不了无人值守要求;语音告警功能不实用;设备运行工况在值班场所不可见;告警判据满足不了用户要求等)时,需要将用户关注的数据采集过来,施以用户设定的告警规则,实现对设备的实时监控。监视数据的来源可以是独立的设备(主机、网络设备、智能设备),也可以是监控系统的实时数据库或商用数据库。
数据采集模块采用轻便化设计,C/C++编程,跨操作系统,支持多实例运行,每个实例至少带两个必须的参数:一个是配置文件名,一个是资源文件名。配置文件用于指定被采数据源的名称、采集对象的名称(定位数据)、类型、频率;资源文件用于设置采集数据的采集方法、传送目的地(服务端地址及监听端口号或目录名)、以及传输方式(TCP 报文、文件、串口等)。
可采集的数据类型有:
计算机的CPU负载率、内存使用率、虚拟内存使用率、磁盘分区使用率或剩余容量、进程状态(是否在运行)、文件状态(是否存在)、文件大小(如oracle 的日志文件增长到一定程度时会影响性能)、文件数目(指定目录下的文件数目不能无限增大);监控系统实时数据库的遥测量、遥信量、脉冲量、站点通信工况、主备机状态等;链路状态(数据采集模块到网络设备的链路是否连通)、数据库连接(数据采集模块是否能打开到指定数据库的连接);通过存储过程采集的关系数据库中的数据(如调度技术支持系统安全III 区历史库中的准实时数据);通过snmp 协议获取的数据;同一数据报文(断面)的数据组合出来的新数据。
数据报文(文件格式)见文献[3]。
数据接收模块将数据采集模块发送过来的数据报文或文件进行解析,存储到数据库,另外,还要根据用户设定的规则,对各监视数据进行合理性检查,满足条件是按指定模板生成告警信息,保存到数据库或进行语音告警(文本转语音)。
信息采集的功能是采集和传输第三方设备和系统中的现成告警信息用以集中展示和处理。有的设备和系统安装在机房中,运行值班人员需通过“巡视”的方式来确认其运行状态;有的系统规模庞大,产生的告警信息太多,以致不能引起运行值班人员和维护专责的注意;有的系统因为管辖范围等原因,告警信息不能及时传送给需要的人员(比如通信专业的综合网管系统,虽然接入了省、地、县公司的网管信息,但下级机构无法知晓上级机构管辖的与本机机构关联的设备告警信息),因此,有必要将运行值班人员和维护专责关注的告警信息采集过来,集中展示,统一处理。
信息采集的内容一般是历史数据库(关系数据库)的准实时信息,为了便于功能扩展和增加适应性,采集程序采用轮询的方式实现-逐时段调用用户指定的存储过程以获取该时段满足条件的告警信息。存储过程的名字可由用户自行指定,输入参数有开始时间、结束时间、查询条件,输出参数为这段时间内满足条件的信息。由于查询条件作为参数输入,存储过程的实现就很灵活,有经验的用户可自己编写,亦可委托第三方厂商编写。
信息采集支持调用第三方提供的Web Service来采集告警信息,还支持网络设备通过SNMP Trap协议发送过来告警信息的采集。
采集信息的传输格式和传输方式同数据采集。
信息接收模块将信息采集模块发送过来的信息报文或文件进行解析,逐条存储到数据库,需要时也可进行文本转语音告警。对于过长的告警条文要按指定长度分段,一条分成多条写入数据库。对于相同的告警信息可按照上、下班时间设置一定的时间间隔,进行“防抖”处理,减少数据库的写入次数。
信息接收支持的接口方式与数据接收类似,有TCP端口、文件和串口等方式。
当设备和系统出现故障时,需要将故障信息、故障时间等信息在第一时间通知运行值班人员,甚至维护专责。传统的告警警示方式有推画面、语音、文字反相、脱机打印等,随着手机的普及,短信息也在监控系统中得到了广泛的应用[2]。短信告警虽然有其优势,一般的监控系统也只是把它作为一个附属功能,并没有作为一个系统来整体设计。
短信收发功能就是将数据库中的待发信息(下行)发给用户,将接收到的信息(上行)写入数据库(供其它模块处理)。
通过采用设备冗余、流量均衡、事件驱动、主备切换、失败重发、端口重启等技术提高了短信收发的可靠性和效率,有效解决了设备掉电、故障、死机、SIM卡欠费、SIM被运营商锁定等问题。
文本转语音(Text to Speech)功能适用于有人值班场所,通过将收到的告警信息由计算机“读出来”,达到警示运行值班人员的目的。本模块虽是服务端,但部署在需要的工作站上,以TCP 端口方式接收、解析、朗读信息采集模块发送的报文。
遵循数据访问层和业务层分离的原则,信息接收模块只是将收到的告警信息写入数据库,信息和用户关联的问题由事件触发模块来解决。告警信息按“系统.数据源.标识符”格式组织,这也是每条告警信息的定位路径。有别于一般监控系统的告警信息该给谁的思路,本系统采用了信息提供者(provider)和订阅者(subscriber)的机制(我要哪些)-通过将用户订阅字符串和告警信息的定位路径匹配,以确定该用户要收的信息。订阅字符串可以是告警信息定位路径的全部,也可以是其中的一部分(模糊匹配),例如某类告警信息的路径为“EMS.SCADA.*”,用户订阅字符串为“EMS.*”,则EMS系统的所有相关告警信息将发送给该用户;如果订阅字符串为“EMS.SCADA.*”,则EMS 系统中SCADA子系统相关的告警信息将发送给该用户。
信息发布模块的主要功能是在指定的时间、按指定的模板、以指定的频率生成、发送信息给指定的用户。信息模板可以是简单的文本(如通知专责人员巡视设备和系统的信息),也可以是静态文本和“宏”的组合(如电网运行情况汇报),宏数据来自用户指定的数据库,由SQL语句获取。
举个简单的例子,有一名为“当日信息”的模板:$RDATE$XX 电网最大负荷$MAX_LOAD$万千瓦($MAX_TIME$)。取最大负荷和出现时间的语句为:select round(cur_002/10,2)As MAX_LOAD,to_char(occur_time,'hh24:mi')as MAX_TIME from yc_hs_500001 Where to_char(occur_time,'yyyy-mm-dd')=to_char(sysdate,'yyyy-mm-dd')Order By cur_002 Desc。
通过“宏”替代,变化的数据自动地反映到待发布信息中,这样系统的灵活性和可扩展性就大大地提高了。
事务处理模块的主要功能处理用户发来的短信(上行信息),完成诸如用户信息查询、待发布信息查询、故障申告、日志归档、信息转发、数据接收,还可执行用户发过来的命令如软件许可设置、短信收发主备通道切换等。
网站及服务模块分两部分:网站是用户主要的操作界面,包括用户信息管理和权限设置、监视对象配置和数据采集参数文件生成、告警规则设置和告警信息订阅、信息发布配置和发布信息订阅、公告牌、短信发送、各种查询等功能;服务指的是以Web Service方式提供与第三方的接口,为第三方提供短信收发、告警信息查询和存储等服务,以便和其它系统集成,形成一体化的系统。
图2 是监视对象举例,系统根据监视对象定义,生成每个数据采集模块实例所需的配置文件。监视对象的名称被数据采集模块用来定位数据,刷新时间告诉数据采集模块以何种频率采集数据。
图2 监视对象示例
图3是告警规则定义举例,告警规则表达式中的$value$是指监视对象的值,采样周期、报警次数和短信模板用于判断数据是否异常、是否要产生告警、生成怎样的告警信息。由于采用了比较最近一个时间段的数据,可以达到类似五取三的效果,从而消除“抖动”。设备故障后往往不能立即恢复,为了避免频繁产生相同的告警信息,利用失效时间这个参数使规则在隔一段时间后再起作用。规则范围指定哪些监视对象要用本规则。
图3 告警规则定义示例
图4是告警信息订阅页面,图中的责任串用于和告警信息的定位路径匹配,从而确定用户希望接收的告警信息。
图4 告警信息订阅示例
图5是信息发布订阅页面,系统中有哪些发布信息,用户需要哪些信息,只需勾选就可以了。
图5 信息发布订阅页面
文章介绍了一个轻便型综合监控系统,给出了其设计目的、理念、系统结构及各功能模块的主要功能,展示了部分应用示例。系统具有实用性、易用性和轻便性、松耦合、扩展性、适应性、开放性等特点,较好地解决了运行值班人员和维护专责面临的系统多且相对独立、设备多且安装分散、专业多且跨度大的问题。
[1]罗利平.城市轨道交通综合监控系统集成方案[J].城市轨道交通研究.2008年11期
[2]姚诸香,何群,郭玉金.利用电信手机短信实现自动化系统综合监控[J].电网技术,2003,27(6):71-72.
[3]姚诸香,金学成,房金彦.一种变电站告警信息直传的实现方法.江西电力,2014,38(5):60-63.