APP下载

基于shell脚本配网自动化终端在线率异常自动检测方法

2019-04-24杨仁利吴淑思

中国科技纵横 2019年5期

杨仁利 吴淑思

摘 要:目前配网自动化系统大量接入配网自动化终端,由于终端与主站是以无线公网方式连接,存在一定的掉线可能,掉线后需要人工去确认排查。随着终端大量的接入,需要排查的工作量也将不断增大,在排查的过程中还需考虑系统进程异常影响终端掉线等情况。本文通过获取运行库终端信息、利用shell脚本进行数据整合分析,生成详细终端掉线原因的分析报告,并可得到目前终端在线率情况。

关键词:配网自动化终端;在线率;shell脚本;运行库

中图分类号:TP277 文献标识码:A 文章编号:1671-2064(2019)05-0022-02

0 引言

随着配網自动化终端数量成规模快速增多,自动化终端在线率面临严峻偏低问题。配网自动化终端作为配网系统重要组成部分,在故障处理和电网监控中有着至关重要作用,提高其在线率有利于故障隔离和快速复电,对电网安全稳定运行有着十分重要意义。

随着计算机技术快速发展,配网自动化终端在线率统计监视功能日益强大,实现终端在线率自动统计,并能分地区分类型展示,可按不同时间查询等。如文献[1]提到了在配网自动化系统(DMS)中的在线率自动化统计方法,可以获取到相关终端信息并能根据挂牌情况进行区分统计;文献[2-3]主要提供了终端在线监控及出现异常时处理方法;文献[4]给出了提高配网自动化终端在线率的方法。以上文献均未能结合终端运行情况,系统进程情况进行分析统计,给出终端不在线具体原因,运行人员在分析处理终端不在线时存在一定困难。

目前大多数终端在线率监视,只是单纯的在线率统计功能,并不能对出现掉线的终端进行进一步分析,运行人员无法判断是DMS系统原因或是终端本身原因造成不在线。本文从实际出发,提出一种监视系统中的总在线率及端口在线率,通过统计数据,使用关联性分析,分析出系统可以出问题的进程,进行短信通知,对不在线终端进行网络分析,并生成统一的分析报告方法。

1 linux系统中shell脚本

目前DMS系统所有服务器或是工作站操作系统都是基于linux,shell脚本(shell script)具有批处理功能,整合了许多指令,提供了数组,循环,条件以及逻辑判断等重要功能[5]。

2 实现技术原理

2.1 实施步骤

通过kcda接口调用配网自动化系统内存库配网自动化终端数据及运行状态,包括终端通信、RTU、串行路径和运行状态信息,对找到的不在线终端个数进行端口归类统计,可以得到每个端口下掉线终端个数和在线率。主要实现流程如下:

(1)通过kcad调用内存库统计所有已投运终端总在线率,并判断终端当前运行状态,如果终端属于掉线状态,则获取不在线终端列表,对不在线终端进行RTU号罗列。终端运行状态由RTU判断;(2)通过kcda内存库找到串行路径、RTU和通道关系表,内存库通过串行路径对RTU和通道进行关联;(3)通过kcda在通道列表找到所有终端信息,包括终端描述、端口号、进程和IP等字段;(4)对RTU和通道信息表进行整合,给RTU号赋予相关描述等字段;(5)由步骤获取的不在线终端列表,遍历RTU不在线列表,在步骤4找到RTU号相应终端信息;(6)通过包涵形式遍历统计同一端口下终端不在线个数,归类到同一端口和同一进程;(7)对找到的数据进行展示输出结果;(8)对不在线的终端进行在线分析,对找不到通道或是RTU的终端进行输出,方便运维人员判断该终端在数据库情况;(9)如果某一端口或是总在线率低于某个限值则发短信通知相关人员。

2.2 主要shell脚本程序

(1)调用接口,查询RTU和通道的关联

getroutelen()

{kcda << EOF //select Rt_RtuNo Rt_ChanNo from Route //select Rt_RtuNo Rt_ChanNo from Route //q //EOF}

(2)查询某个端口的通道参数

music()

{icda << EOF // select Chn_Name Chn_ComSrvName Chn_Desc Chn_PortName Chn_PortNo where Chn_PortName = $1 //quit //EOF}

(3)通过RTU号查询RTU描述

get_rtu()

{if [ $1 ];then//icda << EOF //select Rtu_Desc where Rtu_No = $1 //quit //EOF //fi}

(4)查询运行RTU中,指定状态的RTU个数

kcdagetall()

{kcda < 9; select Rtu_No from Rtu where Rtu_RunState = $2 and Rtu_RtuType > 9; //q //EOF}

(5)统计各端口掉线个数

analyze()

{echo -e "\nin analyze" //date //for key in $(echo ${!RtuErrorList[*]})

do

ComSrv_port=`echo ${RtuErrorList[$key]}|awk -F ':' '{print $2":"$5}'`

flage=`echo $ComSrv_port ${!templist[*]}|tr ' ' '\n'|sort |uniq -d`

if [ -z $flage ];then

templist+=([$ComSrv_port]=1)

continue

fi

templist[$ComSrv_port]=$[ ${templist[$ComSrv_port]} + 1 ]

done

z=0

for key in $(echo ${!templist[*]})

do

errorlist+=([$z]="$key:${templist[$key]}")

z=$[ $z + 1 ]

done

echo "结束list: ${errorlist[@]}"

echo ""

date

}

(6)统计总在线率

all()

{

AllErrorRtu=`kcdagetall 1 2|awk -F ' ' '{print $1}'|sort |uniq -d|sed '/rows/d'|sed '/>>>/d'`

ErrorLen=`Len $AllErrorRtu`

AllNormalRtu=`kcdagetall 4 2|awk -F ' ' '{print $1}'|sort |uniq -d|sed '/rows/d'|sed '/>>>/d'`

NormalLen=`Len $AllNormalRtu`

AllLen=$[ $NormalLen + $ErrorLen ]

ANormalLen=$[ $NormalLen ]

consult=`awk 'BEGIN{printf "%.2f%\n",('$ANormalLen'/'$AllLen')*100}'`

sult=`awk 'BEGIN{printf "%.2f\n",('$ANormalLen'/'$AllLen')*100}'`

echo -e "\n\033[31m終端在线率为: $consult\033[0m\n"

2.3 运行结果分析

在相应目录下输入命令,可输出结果,如表1所示,通过分析可看到dcs1\2两台前置服务器上scanner进程和相应的端口号,端口上终端挂载的个数,当前掉线终端个数、总个数和在线率情况。如果某一端口掉线个数特别多,或是端口在线率低于某一个数值,可以假设该端口对应scanner进程存在问题。假如总在线值低于95%,或是某一端口(进程)中终端在线率低于95%则发送短信通道运维人员。

在不在线终端进行分析输出结果,如表2所示。通道RTU号找不到通道或串行路径参数列表,这个种因参数错误导致终端不在线情况以前都通过手工对每个终端进行排查,效率低且无法遍历所有参数。对每个端口下掉线终端进行分析,可以看到每台终端是否可正常ping或是链路建立情况,分析结果一目了然。

3 结语

本文通过DMS系统提供kcda、icda接口获取内存库终端数据,自动判断配网自动化终端在线率异常方法可有效减轻运维人员工作时间,提高工作效率,并能针对每一台不在线终端进行详细分析,对现场运维人员。针对某一进程存在问题导致终端掉线无法判别情况,本文分析结果可有效解决该问题,假如某端口终端掉线个数偏多,则该端口对应进程可能存在问题。本文通过对不在线终端进行遍历,对掉线终端进行批量分析并得出结果,提高了运维效率,把人从繁重重复的工作中解放出来。

参考文献

[1] 广东电网有限责任公司佛山供电局.基于DMS系统的配网终端在线率自动统计方法:中国,CN20151008 3349.0[P].2015-06-24.

[2] 国网技术学院,国家电网公司,珠海许继芝电网自动化有限公司,等.一种配网一体化配电自动化终端在线监控系统及方法:中国,CN201510738277.9[P].2016-03-02.

[3] 国家电网公司,国网天津市电力公司,天津市三源电力设备制造有限公司.一种配电自动化终端单元离线故障快速自愈控制方法:中国,CN201410106551.6[P].2014-06-18.

[4] 李逢帅,黄山蓬.提高配电自动化终端在线率的几种方法[J].广西电业,2017(6):68-71.

[5] 罗书田. SHELL脚本编程在监控系统故障分析中的应用[A].江西省电机工程学会.2012年江西省电机工程学会年会论文集[C].江西省电机工程学会:江西省电机工程学会,2012:234-237.