郝方舟 罗林欢 刘 晓 赵湘文 沈 超
(广州供电局有限公司 广州 510080)
在科学技术飞速发展的今天,网络通信和计算机技术在各个行业建设和发展中都得到了广泛应用。快速恢复供电系统在我国配网调度工作中的应用,不仅是我国电力系统建设发展的成果之一,而且是我国电力建设保证供电可靠性,提高客户满意度的有效探究。对于电力企业来说,同样要重视现代化科学技术的运用,采取科学化、现代化、信息化的管理手段。虽然供电企业的配网技术在不断发展,但仍没有完全达到自动化的水平,许多工作还需要人工操作,这不仅不能给故障查询工作带来便利,而且无形之中还增加了故障查询的时间[1~2]。现行的故障快速复电体系,存在如下的提高空间:1)快速复电涉及人员环节多,交流效率低下;客服、调度中心、抢修驻点、抢修人员之间往往需要反复通过电话进行信息确认和反馈,降低了快速复电业务效率。2)工单信息手工填写、录入系统,过程缓慢、工作效率低下,而且存在重复劳动。3)抢修流程繁琐,抢修人员需要不断通过电话确认抢修状态;管理规范流程与效率之间需要权衡解决方案。4)不熟悉业务流程的抢修工人,需要耗费更多时间去寻找故障地,查找相关电房,导致抢修耗时增加。因此,学者们研究是否能够利用信息化手段来支撑及实现快速的响应并快速的沟通、快速的诊断并修复。决策智能化的快速复电技术支持平台,为停电事件快速响应、复电抢修、故障辅助定位、抢修现场支持等提供有力的信息支持,覆盖停电及复电工作的全过程,把公司纸质存档转变成信息化,为公司快速复电机制的建立奠定了更加坚实的信息化基础。常见的配网故障处理流程如图1所示。
图1 配网故障处理流程
针对此问题,学者许建借鉴精益化管理思想,从时间维度出发,分析影响配网调度故障处理效率的主要因素,并得出不同接线模式的面向调度的故障处理时间模型[3]。结合该模型,介绍了具有配网接线图查找功能和智能开票功能的智能防误操作系统[4~5]。基于 GIS的可视化展现优势集成营销业务应用系统建设的营销GIS应用系统[6],利用计算机、互联网、无线网络等技术,通过智能移动终端(PDA)、单人视频等移动通讯终端,实时反馈现场抢修信息和现场抢修视频[7]。结合系统互动界面、服务在线监控等应用为远程工作站合理调度车辆、合理分工派单、缩短抢修时间提供技术支撑,实现95598客户服务中心快速响应客户,保障抢修信息准确,提升客户感知,提高客户服务效率[8]。但是,实际应用时效果并不好。为了进一步提高故障快速复电的业务效率,提升快速复电业务水平,减轻运维压力,快速复电及作业监控平台建设迫在眉睫。研究的建设目标是实现故障快速报告、快速诊断、快速定位、快速修复、快速沟通。围绕低压监控班、管理人员、抢修驻点、抢修人员的职责,遵循操作简便、可用易用的设计原则,在南方电网“6+1”体系和现行运行系统下扩展与延伸,以快速复电中的工单为业务流核心,通过应用实现任务统一指派、进度全面监控、用户满意度统计等故障复电全生命周期管理,保障快速复电过程信息流动与共享的效率。
通过移动无线可长连接的Android系统中的AlarmManager模块,配合C2000K服务器,设计了服务器端和Android移动客户端的系统,实现了移动无线网络的长连接。保证在复电过程中,能够通过提高用电可靠性实现故障早发现、早定位、早处理,有效减少了抢修复电的时间。
长连接通信是指Client端与Server端先建立通讯连接,连接建立后不会断开,然后再进行报文发送和接收,报文发送与接收完毕后,原来连接不会断开而继续存在,因此可以连续进行交易报文的发送与接收[9]。该方式下由于通讯连接一直存在,其TCP∕IP状态是Established,可以用操作系统的命令netstat查看连接是否建立。由于在长连接情况下,Client端和Server端同样可以固定使用一个端口,所以长连接下的Client也需要使用Bind()来绑定Client的端口。在长连接方式下,需要循环读写通信数据。为了区分每一次交易的通信数据,每一次交易数据常常需要在数据头部指定该次交易的长度,接收API需要首先读出该长度,然后再按该长度读出指定长度的字节。长连接方式常用于一个Client端对一个Server端的通讯,一般常用于机构与机构之间的商业应用通信,以处理机构之间连续的大量的信息数据交换[10]。或者说可用于两个系统之间持续的信息交流情况。通常为了加快两个系统之间的信息交流,通常还需要建立几条长连接的并行通信线路。设计的长连接通信模式的socket事件流,其最大特点是Client和Server都有循环体,而且循环体只包含读写APIs,如图2所示。
考虑到IPv4的IP量有限,运营商分配给手机终端的IP是运营商内网的IP,手机要连接Internet,就需要通过运营商的网关做一个网络地址转换(Network Address Translation,NAT)。简单的说运营商的网关需要维护一个外网IP、端口到内网IP、端口的对应关系,以确保内网的手机可以跟Inter-net的服务器通讯,如图3所示。
图2 长连接模式通信
图3 网关对各对应关系的维护
为了不让NAT表失效,需要定时的发心跳,以刷新NAT表项,避免被淘汰。Android上定时运行任务常用的方法有两种,一种用Timer,另一种是AlarmManager[11~12]。Timer类 需 要 用 WakeLock 让CPU保持唤醒状态,这样会大量消耗手机电量,大大缩短移动终端待机时间,不能满足应用需求。AlarmManager是Android系统封装的用于管理RTC(Real Time Clock)的模块,RTC是一个独立的硬件时钟,可以在CPU休眠时正常运行,在预设的时间到达时,通过中断唤醒CPU。这样当AlarmManager定时执行任务时,CPU可以正常休眠,可以大大节约电量消耗[13]。
AlarmManager提供对系统闹钟服务(或称为定时器服务)的访问接口,使用它既可以指定单次执行的定时任务,也可以指定重复运行的任务[14]。其调用方式如下:manager=(AlarmManager)context.getSystem-Service(Context.ALARM_SERVICE)。其中,getSystemService()返回的不再是IAlarm-Manager接口,而是AlarmManager对象。当闹钟指定触发时间到达时,实际上是系统发出为这个闹钟注册的广播,因此还需要实现一个针对特定闹钟事件的广播接口器(PendingIntent)。而所使用推送的Android SDK就是基于这种技术实现的。
当有大量的手机终端需要与服务器维持长连接时,对服务器的设计会是一个很大的挑战[15~16]。以C2000K服务器项目为例,不妨假设一台服务器与10万个客户端建立长连接,当有1000万个移动客户端时,则至少需要100台的服务器。在此基础上,还需要考虑备份的服务器,势必是巨大的经济花费。如何尽可能提高单台服务器可接入移动客户端的数目。针对该问题,形成专项研究组,不妨命名为C2000K项目组,即实现单台服务器支持200万个客户端的长连接。根据多次试验分析,将多消息循环和异步非阻塞模型应用其中,即保证在双核和内存24G服务器平台上,满足峰值超过300万个移动客户端的长连接。与此同时,服务器端重点还需要支持向移动客户端发送推送消息,为便于服务器平台中移动客户端的网络配置、管理和注册,需要开发者建立应用标识号(AppKey),具体实现步骤如下:
1)创建开发者帐号。根据界面提示完成用户注册,且为每位用户的注册号不同。
2)创建应用。登录平台后,在创建应用程序页面下创建具体应用,并在Android端口名称和应用程序名称的界面内分别输入南方电网和应用的名称。需要注意的是,开发者务必注意在输入包名时要确保与具体应用开发过程中的源程序完全一致。然后点击确认后,即可建立一个AppKey,在开发对应的具体应用时,需要保证AndroidManifest.xml配置文件中的包名和AppKey与上述要完全一致。
3)下载应用Example。在应用详情页面下,务必要确保应用创建成功,然后在该界面下载Android Example相关材料,并将该压缩文件解压后,将该Android Example项目导入Eclipse,并修改AndroidManifest.xml配置文件中的包名和AppKey。其余操作与传统的Android开发应用类似,在此不再赘述。
通过AlarmManager和C2000K的服务器设计,实现了移动无线网络长连接的目的,就可以保障抢修人员同时在线和长时间的连接状态;在此基础上进行抢修业务的快速复电移动应用的建设研究,开发出实际可用的移动应用。
为了实现客户端与服务器的链接,首先在客户端按如下步骤操作,创立链接。
1)导入SDK开发包到应用程序项目,下载Android SDK并解压,将jpush-sdk-release1.x.y.jar文件复制开发的应用程序项目libs目录下。
2)配置AndroidManifest.xml,根据 SDK压缩包里的AndroidManifest.xml样例文件配置应用程序项目的Android-Manifest.xml文件,即复制样例文件中备注为“Required”的部分到应用程序项目的配置文件中,将备注为替换包名的部分替换为应用程序的包名。
3)添加代码,SDK提供了cn.androi-d.api.JpushInterface类,在 MainActivity。-java类的 on-Create()方法中使用 JPushInter-face.init(Context)语句初始SDK,然后使用CustomPushNotification-Builder类定制通知栏样式。
4)使用Broadcast Receiver平台推送的消息,新建一个继承Broadcast Receiver的MyBroadCast Receiver.java文件,平台推送的消息Bundle由客户端的Broadcast Receiver监听接收后,再传递给显示界面NoticeActivity.java。
对应移动客户端的设计如下,当监控中心将报障工单派发给区局急修班,区局急修班将工单派发到驻点后,系统后台通过基于移动长连接技术的推送把信息推送到驻点人员终端,如图4所示。驻点人员就可在终端签收报障工单。签收后,可进行生成抢修工单、关联抢修工单、查看报障工单的关联关系、退回等操作。
图4 基于长连接技术推送信息
图5 查看连接状态
驻点人员通过终端可以查询与服务器连接是否正常,如图5所示。
通过移动长连接技术,基于服务器和多客户端设计框架,建立了抢修业务快速复电业务信息功能模块对应的快速复电APP,实现了按照客户服务需求快速复电应用、复电监控应用、故障现场抢修等,以及停电信息在各区局的快速传达、精准传达,减少了停电时间和范围,提高了对客户报修的响应速度和服务水平。