楊仁利 吳淑思
摘 要:目前配網自動化系統大量接入配網自動化終端,由于終端與主站是以無線公網方式連接,存在一定的掉線可能,掉線后需要人工去確認排查。隨著終端大量的接入,需要排查的工作量也將不斷增大,在排查的過程中還需考慮系統進程異常影響終端掉線等情況。本文通過獲取運行庫終端信息、利用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 <
(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.