(福州大学 物理与信息工程学院,福建 福州 350000)
国家电网公司要求电力巡检系统满足“全面性、准确性、及时性、可靠性”等需求。由于在我国偏远地区,仍存在大量的牧区和山区,这些地区通信手段匮乏。针对这类地区的电力系统及突发事故的巡检,目前还缺乏比较有力的手段。现阶段国内外使用的电力巡检方式有人工巡检、智能机器人巡检、无人机巡检和直升机巡检等,其中后三种巡检方式由于其成本较大,并且技术不够成熟,目前只适用于实验室研究以及小范围内使用,而人工巡检方式因其灵活度高、便利性强、成本低等特点,使得在巡检中得到广泛使用[1]。但这种方式存在工作量巨大,效率降低、故障报告不及时等严重问题。
近年来,随着我国北斗卫星导航系统(Compass Navigation Satellite System)系统的投入使用,利用北斗卫星作为通信媒介成为现实。北斗卫星通信系统具有覆盖范围大、没有通信盲区、安全、可靠等优点被广泛应用于海洋、气象、水利、农业、森林等偏远环境数据传输的通信[2]。此外,北斗卫星导航系统在电力系统中的应用也逐渐增加[2-4]。
本设计基于不改变已投运设备和系统的前提下,采用北斗手持机来实现无移动信号覆盖的偏远地区的位置获取及通信的方法。并且针对该手持机提出了其应用层软件的设计思路及实现方法,同时解决北斗卫星通信报文发送的容量问题。
本设计系统组成如图1所示,主要包括:电力主站、北斗主站前置器、安卓手机、北斗手持机等。
图1 北斗电力巡检设计
北斗手持机集北斗收发链路的硬件功能模块于一体,可以实现北斗卫星上行信号的调制功能和北斗卫星下行信号的解调功能;北斗手持机集成了电池及充放电管理模块,可实现户外独立工作,续航能力达15小时。北斗手持机还集成了蓝牙功能模块,一方面可以将从卫星中获取当前位置信息以及卫星信号强度等有用信息通过蓝牙发送到手机端,同时也能将手机端的指令和调度信息下发到北斗手持机,再通过北斗链路将信息传回主站端的北斗用户终端设备。
本文设计实现的主要功能有:
(1) 基本功能:离线地图、蓝牙连接、ic检测。
(2) 通信功能:长报文信息发送。
(3) 定位功能:北斗RNSS定位、电子围栏。
本设计的界面功能模块是基于模型-视图-控制器( Model-View-Controller,MVC) 的架构模式进行设计,如图2所示。
为了提高现场的指挥调度能力,可通过文字及时上传异常点信息,交予后台服务器分析处理、统筹规划,确保远端指挥人员实时了解现场状况及电网受灾情况。本设计调用了高德地图API,并建立在安卓平台的基础上设计了良好的UI地图界面,使巡检人员更加直观的了解自己所处的地理位置;同时也完善了电子围栏巡检提醒等功能,保障巡检人员到位情况及安全,提高巡检终端的智能化程度,实现整个巡检过程的无纸化操作。
图2 功能模块关系
蓝牙建立于连接的过程是北斗手持机(server端)设备一直处于等待状态,当接受到安卓手机(client端)的连接请求的时候进入连接状态。首先通过带Bluetooth API的Android 手机调用BluetoothAdapter.LeScanCallback接口搜索蓝牙设备,利用callback返回蓝搜索结果,然后通过调用BluetoothAdapter的startLeScan()扫描蓝牙设备,当搜索到手持机对应的蓝牙硬件物理地址后,APP端立即停止扫描;蓝牙连接流程图如图5所示。
蓝牙通信的应用需需要建立GATT连接。首先调用BluetoothDevice的connectGatt()函数。此函数带三个参数:Context、autoConnect(boolean)和BluetoothGattCallback。通信链路建立成功后,返回GATT profile的封装BluetoothGatt对象。通过这个对象,我们就能在Android设备上对蓝牙进行通信相关的操作。用BluetoothGattCallback传递一些连接状态及结果,当两个设备都在连接状态时可以正常通信。
固定的北斗信息封装有固定的报文头格式,如固定的ic检测S|icjc通过调用函数,定义操作类型。蓝牙传递数据后在判断数据是否接收完整。
由于手持机的蓝牙只透传北斗基带结算出来的数据,并没有把数据做进一步的解析,因此手机APP端需要完成北斗协议的编解码。
北斗协议的解码和完成北斗手持机通过蓝牙下发到手机APP端的数据。首先监控蓝牙收到的数据,对数据按照协议头进行分类,所有的北斗协议,均以‘S|’字符开头,以回车换行字符‘0x0D’、‘0x0A’结尾,因此,在软件开始时需先建立数组,每个数组中包该包头、包尾和数据,并定义两个数组,分别存储北斗RDSS和北斗RNSS的指令。
图3 蓝牙4.0的建立与连接流程图
如果是报文信息,则输根据协议头中的报文长度标识位判断该报文的长度,然后通过头协议和报文的第一个字节是否为‘0xA4’来判断报文发送类型是代码、汉字或者混发,最后利用相对应的码字组合方式将信息读取出来显示在手机短信中,并调用手机的震动提醒功能;如果是IC信息,则更新手机界面的IC信息号,并根据报文内容读取序列号、通播地址、服务等级、服务类型和服务频度5个信息显示在手机端APP的界面中,如果是功率信息则直接更新APP的信号强度的图标。由于北斗二代RNSS是单向传输的协议,除非更改波特率等配置信息外,无需额外进行操作,因此不需要对RNSS进行协议的编码。北斗RDSS需要根据《北斗RDSS用户机接口协议4.0版本》进行编码。编码内容包含IC检测、功率检测、时间输出、自检信息、通信申请、定位申请、第一类位置报告和第二类位置报告。APP端实时检测用户的操作,判断用户的指令需求,并根据北斗协议进行封装后,通过蓝牙发送给手持机。
由于北斗通信收到用户卡等级的限制和影响,3级用户卡一次只能发送78.5字节的报文,然后实际电力巡检应用过程中,往往需要发送更长的短信息,因此需要对短报文信息进行拆分包和组包处理。拆分包和组包处理,首先需要对北斗报文中的78.5字节数据字段进一步进行定义,并规范好相应的功能位,如表1所示。
表1
其中,拆分标志位用来表征本帧数据是否是拆分包数据,当该2字节内容为十六进制“AAFF”时,则判断为拆分包数据,若为其它数据,则判断为不是拆分包数据,将整个报文数据端作为短信内容输出;编码字节共占1.5字节,含12比特数据,其中的高比特用于指示该帧是否为最后一帧,第二比特数据用于表示是否要求应答为发送方定义,根据数据内容的重要性,判断该包数据的重要级别,当重要级别较高的数据传输时,则该位置为1,否则置0;低10比特用于指示该帧是一组数据中的第几包数据,取值范围0~1023,如表2所示。
表2
报文内容用于填充所要传输的报文信息;校验和为CRC校验,共2字节,其中第一字节用于对拆分标志位和编码字节进行纠错,第二字节用于对接收报文内容进行检错,当收到报文出现误码时,如果误码出现在包头中,则有可能会引起整个数据包的解析错误甚至引起系统故障,因此在协议中加入了一个字节的CRC检验和,用对包头的纠错。如果误码出现在报文内容中,则通过检验判断是否有误码,而不对具体的误码进行纠错处理。
其中,是否结束标志的优先级高于是否应答的优先级,当接收端手机APP收到最后一条报文包时,无论是否应答标志位是否置1,都需要给发送方发送应答信号。
当发送方收到所有需求接收方应答的应答标志后,需要给接收方发送结束通知包,该报数据的编码字节中,结束标志和应答标志均置1,包序号写1,报文内容为十六进制全1的1字节数。
当接收方接收到发送发送的具有应答需求标志的报文包时,需要给发送发做出应答反应,应答方式为回复报文,内容定义含5字节,如表3所示。
表3
图4 长报文发送流程图
手机接收到北斗RDSS的短报文信息时,首先需要通过协议头判断该报文是否为拆分包报文,如果不是,则直接输出到手机端显示;当收到拆分包报文时,APP软件根据是否应答的标志位判断是否给发送方进行应答处理,接着等待下一条报文的接收,并每收到一帧数据后都需要判断是否为结束帧,当收到结束帧时,则给发送方发送应答信号,然后将收到的所有该帧数据按照包数号的顺序进行组包,丢弃重复的报文包后发送到手机页面显示。
选择重传和时序冲突的解决方法:为了确保拆分包后,接收端不会因为偶然的系统丢包,造成对整条信息的误读或误解,需要建立选择重传机制。当发送端发送一条需求应答的报文包时,连续3分钟内未收到接收端发送的应答包,则需要将该报数据再次进行发送,直到所有带有应答需求的报文包都收到应答信息为止,则发送方向接收端设备发送结束通知包,并等待接收机对该包数据的应答。
因为报文协议中,只对序号进行编码,当有两组长报文同时需要发送时,需要第一组数据发送后,收到全部的回执并且收到尾包数据的应答后,才能就行下一包数据的拆包和发送。
接收的信息主要有主站发来的“通信信息”以及巡检人员自身的位置信息及ic卡的信息。最终得到以下界面图6所示:经过现场测试,电力巡检软件的蓝牙功能、长报文功能都符合设计预期目标。终端长报文通信界面截图如图6所示。
图5 长报文接收流程图
图6 长报文功能
本文提出了采用北斗卫星导航系统中的短报文服务作为定位和通信手段来解决无移动网络下电力巡检的方法,并且结合高德地图,实现位置信息在地图上的显示。本设计针对电力巡检人员的实际需求,融合了蓝牙通信、高德地图、北斗长报文等功能与一体,基于安卓系统的APP开发,并通过实际测试实现预期的功能,经检验符合电力巡检人员的功能需求,达到设计的预期结果。