摘 要: 為了防止IEC60870-5-104協(xié)議通信中出現(xiàn)的主站抖動(dòng)現(xiàn)象,,開發(fā)了一個(gè)基于IEC104協(xié)議的監(jiān)聽與測(cè)試系統(tǒng),。根據(jù)云南電網(wǎng)調(diào)度自動(dòng)化系統(tǒng)生產(chǎn)運(yùn)行的實(shí)際情況,對(duì)IEC104協(xié)議模型進(jìn)行分析,,使用SOCKET編程對(duì)通信報(bào)文進(jìn)行抓包,,并通過對(duì)測(cè)試數(shù)據(jù)的分析,成功地對(duì)IEC104規(guī)約運(yùn)行狀況進(jìn)行實(shí)時(shí),、可靠,、準(zhǔn)確的監(jiān)聽、分析與統(tǒng)計(jì),。測(cè)試結(jié)果驗(yàn)證了監(jiān)聽與測(cè)試系統(tǒng)符合標(biāo)準(zhǔn)化的協(xié)議規(guī)范,,而且能夠在主子站通信發(fā)生故障時(shí)第一時(shí)間報(bào)警,減少了網(wǎng)絡(luò)阻塞,提高了網(wǎng)絡(luò)通信的效率,。
關(guān)鍵詞: IEC104規(guī)約,;測(cè)試與監(jiān)聽系統(tǒng);UML,;遠(yuǎn)動(dòng)設(shè)備,;報(bào)文分析
0 引言
IEC60870-5-104協(xié)議具有可靠性高、實(shí)時(shí)性好,、數(shù)據(jù)流量充足,、支持網(wǎng)絡(luò)傳輸?shù)葍?yōu)點(diǎn),因此IEC104協(xié)議在電力系統(tǒng)中得到廣泛的應(yīng)用,。RTU設(shè)備的使用使得數(shù)據(jù)采集更為方便,,但是在不同RTU設(shè)備的通信過程中會(huì)出現(xiàn)通信故障[1-6]。2011年上海申瑞電力科技股份有限公司梁竹靚等人提出分布式電力監(jiān)控系統(tǒng)IEC104規(guī)約通信單元的設(shè)計(jì)方法[7-9],。2012年華北電力大學(xué)薛飛總結(jié)并提出了一套針對(duì)IEC104規(guī)約的以面向?qū)ο鬄槔碚摶A(chǔ),,統(tǒng)一建模語言為工具的高度結(jié)構(gòu)化的編程實(shí)現(xiàn)框架,該實(shí)現(xiàn)框架具有更好的可維護(hù)性,、可復(fù)用性[10-13],。IEC104協(xié)議僅規(guī)定了重傳多次后還未收到確認(rèn)報(bào)文自動(dòng)斷開連接,并沒有對(duì)這種故障發(fā)出任何警告,,如果出現(xiàn)了網(wǎng)絡(luò)故障,,主控站人員要經(jīng)歷很長時(shí)間才能發(fā)現(xiàn),會(huì)導(dǎo)致主站抖動(dòng),,使得數(shù)據(jù)無法上送和連接,,造成網(wǎng)絡(luò)堵塞。
本文結(jié)合市場(chǎng)需求,,研究一種基于IEC104遠(yuǎn)動(dòng)規(guī)約的監(jiān)聽與測(cè)試系統(tǒng),,利用SOCKET編程實(shí)現(xiàn)對(duì)Client和Server端通信協(xié)議的抓包和數(shù)據(jù)檢測(cè)分析,當(dāng)出現(xiàn)通信故障時(shí)會(huì)發(fā)送報(bào)警信息,,使控制人員第一時(shí)間發(fā)現(xiàn)故障并解決問題,,從而大大提高了IEC104的可靠性。
1 IEC104協(xié)議模型分析
本文采用網(wǎng)絡(luò)監(jiān)聽的方式針對(duì)基于TCP/IP協(xié)議族和電力通信領(lǐng)域的遠(yuǎn)動(dòng)傳輸協(xié)議IEC60870-5-104通信規(guī)約的測(cè)試分析方法進(jìn)行研究,。系統(tǒng)支持在線測(cè)試,,并且可以長時(shí)間進(jìn)行測(cè)試而無需人工干預(yù);同時(shí)也支持離線分析,,在線監(jiān)聽獲取通信過程中傳輸?shù)乃袛?shù)據(jù),并保存到數(shù)據(jù)庫或者文件中,,可供線下分析,。監(jiān)聽與測(cè)試系統(tǒng)的用例圖如圖1所示。
測(cè)試系統(tǒng)主控站和從站的主線程流程圖如圖2、圖3所示,。
監(jiān)聽系統(tǒng)作為第三方參與,,不干涉通信雙方的具體通信僅當(dāng)監(jiān)聽到有某條報(bào)文重復(fù)發(fā)送時(shí),則向服務(wù)器端報(bào)警,。監(jiān)聽系統(tǒng)的流程圖如圖4所示,。
IEC104協(xié)議采用應(yīng)答模式的通信方式,即發(fā)送一條報(bào)文后收到此條報(bào)文的確認(rèn)報(bào)文才認(rèn)為此次通信成功,,否則將會(huì)重傳這條報(bào)文,。例如未出現(xiàn)故障的遙控操作的泳道圖如圖5所示。
在測(cè)試系統(tǒng)中當(dāng)通信一方發(fā)送一條報(bào)文后在一定的時(shí)間內(nèi)未收到確認(rèn)報(bào)文,,就會(huì)啟動(dòng)重傳機(jī)制重傳此條報(bào)文,。若還是未收到確認(rèn)報(bào)文當(dāng)未超過最大重傳次數(shù)時(shí)就繼續(xù)重傳,否則就自動(dòng)斷開連接,。圖6是出現(xiàn)通信故障時(shí)的遙控操作的泳道圖,。
測(cè)試系統(tǒng)中采用的超時(shí)處理方案如下:
(1)當(dāng)TCP連接的時(shí)間超過30 s還未收到目的子站的確認(rèn)報(bào)文,,則認(rèn)為連接網(wǎng)絡(luò)出現(xiàn)了嚴(yán)重的情況,,TCP連接失敗,重新發(fā)送測(cè)試報(bào)文,。
?。?)當(dāng)鏈路空閑時(shí)為了確保鏈路處于聯(lián)通狀態(tài),會(huì)發(fā)送U格式的測(cè)試報(bào)文,,若在15 s內(nèi)未收到確認(rèn)報(bào)文則T1此時(shí)自動(dòng)斷開TCP連接,,隨后重新開始TCP連接。
?。?)子站向主站發(fā)送執(zhí)行完畢報(bào)文或突發(fā)請(qǐng)求報(bào)文,,希望獲得主站的S格式的報(bào)文確認(rèn)回復(fù),若10 s內(nèi)未收到主站的回復(fù)報(bào)文,,則子站自動(dòng)斷開TCP連接,。
(4)當(dāng)鏈路處于空閑狀態(tài)超過30 s,,會(huì)啟動(dòng)鏈路測(cè)試功能,,向?qū)Ψ桨l(fā)送U格式的鏈路測(cè)試報(bào)文。
2 監(jiān)聽系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
本文采用端口匯聚技術(shù)將物理上的兩個(gè)端口連接起來形成一條邏輯鏈路,,并使用端口鏡像技術(shù)將通信報(bào)文復(fù)制到鏡像端口,,通過對(duì)鏡像端口通信報(bào)文的監(jiān)聽實(shí)現(xiàn)監(jiān)聽測(cè)試系統(tǒng)的服務(wù)器端和客戶端之間的通信。使用這種監(jiān)聽方法的優(yōu)點(diǎn)是不會(huì)影響測(cè)試系統(tǒng)的正常通信,,監(jiān)聽站作為第三方僅監(jiān)聽兩站的通信報(bào)文,。圖7是測(cè)試系統(tǒng)配置圖,。
測(cè)試系統(tǒng)采用C++語言和codeblocks-10.05為開發(fā)平臺(tái),使用wxWidgets開源軟件庫實(shí)現(xiàn),。根據(jù)IEC104規(guī)約結(jié)構(gòu)要求,,本文采用的測(cè)試系統(tǒng)類繼承關(guān)系如圖8所示。
監(jiān)聽系統(tǒng)采用網(wǎng)絡(luò)監(jiān)聽工具Winpcap的庫函數(shù)API來實(shí)現(xiàn)捕獲數(shù)據(jù)包的功能,。通過IP地址來區(qū)別主控站和從站,。監(jiān)聽系統(tǒng)作為第三方僅監(jiān)聽鏡像端口的報(bào)文數(shù)據(jù),通過對(duì)報(bào)文的抓包分析,,判斷遠(yuǎn)動(dòng)主站和子站的通信是否出現(xiàn)故障,。監(jiān)聽系統(tǒng)要完成的最主要的功能是從TCP報(bào)文中準(zhǔn)確地提取IEC104報(bào)文和數(shù)據(jù)部分的重組,即流程圖中的解包和重組部分,。解包和重組過程的流程圖如9所示,。
3 測(cè)試結(jié)果
經(jīng)過解包和重組后獲得了IEC104數(shù)據(jù)幀,對(duì)IEC104幀的解析主要是判斷是否是重復(fù)報(bào)文,。如果是重復(fù)報(bào)文則向主控站報(bào)警并提供錯(cuò)誤報(bào)文的基本信息,。測(cè)試數(shù)據(jù)如圖10、圖11所示,。
IEC104規(guī)約應(yīng)用報(bào)文APDU包括APCI和ASDU,,由圖10可以看出監(jiān)聽正常進(jìn)行,TCP重組正確,,報(bào)文格式和內(nèi)容完全正確,,且測(cè)試程序全部都能正確解析出來。
由圖11可以看出,,在14:27:06時(shí)主從站應(yīng)答正常,;在14:27:16時(shí)主站連續(xù)發(fā)生同一段幀,此時(shí)主從站通信出現(xiàn)異常,,系統(tǒng)應(yīng)向主控站報(bào)警并提供錯(cuò)誤報(bào)文的基本信息,。
4 結(jié)論
本文主要針對(duì)遠(yuǎn)動(dòng)主站和子站之間能否及時(shí)并正確的通信以及出現(xiàn)網(wǎng)絡(luò)故障不能及時(shí)發(fā)現(xiàn)的問題,設(shè)計(jì)開發(fā)了一種電力遠(yuǎn)動(dòng)設(shè)備的IEC60870-5-104通信協(xié)議監(jiān)聽與測(cè)試系統(tǒng),。通過建模,、軟件設(shè)計(jì)和測(cè)試數(shù)據(jù)分析不僅能夠?qū)?bào)文分析以報(bào)表的形式輸出,大大降低工作人員調(diào)試的工作量,,提高分析和判斷能力,,同時(shí)也保證了電網(wǎng)的高效運(yùn)行,還能在發(fā)生通信故障時(shí)第一時(shí)間報(bào)警,,為電力遠(yuǎn)動(dòng)系統(tǒng)的正常運(yùn)行提供了保障,。
參考文獻(xiàn)
[1] 張建設(shè),馬維青,,郭晉洋.IE60870-5-104協(xié)議在遠(yuǎn)動(dòng)通信中的應(yīng)用[J].電力系統(tǒng)自動(dòng)化,,2003,,27(11):91-93.
[2] 陳建榮,王樂春,,龔正虎,等.協(xié)議一致性測(cè)試執(zhí)行系統(tǒng)的體系結(jié)構(gòu)研究[J].計(jì)算機(jī)工程,,2003,,29(8):78-80.
[3] 譚文恕.遠(yuǎn)動(dòng)信息的網(wǎng)絡(luò)訪問[J].電力系統(tǒng)自動(dòng)化,2001,,25(12):51-55.
[4] 趙淵,,沈智健.基于TCP/IP的IEC60870-5-104遠(yuǎn)動(dòng)規(guī)約在電力系統(tǒng)中的應(yīng)用[J].電網(wǎng)技術(shù),2003,,27(10):56-60.
[5] 杜龍,,施魯寧,楊晉柏.基于TCP/IP的IEC60870-5-104遠(yuǎn)動(dòng)通信協(xié)議在直調(diào)廠站中的應(yīng)用[J].電力系統(tǒng)保護(hù)與控制,,2008,,36(17):51-55.
[6] 吳衛(wèi)華,唐健,,楊瑞景,,等.基于無線傳感網(wǎng)的智能電網(wǎng)線路傳感器系統(tǒng)的研制[J].微型機(jī)與應(yīng)用,2013,,32(5):54-56,,59.
[7] 梁竹靚,韓兵,,彭永,,等.IEC60870-5-104規(guī)約在分布式電力監(jiān)控系統(tǒng)中的應(yīng)用[J].電力系統(tǒng)保護(hù)與控制,2011,,39(4):124-127.
[8] 李建軍,,邵培南,段曉峰,,等.軟件可靠性測(cè)試及評(píng)估平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,,2014,33(15):10-12,,22.
[9] 牛春霞,,宋瑋.IEC60870-5-104遠(yuǎn)動(dòng)網(wǎng)絡(luò)通信協(xié)議的應(yīng)用與實(shí)施[J].河北電力技術(shù),2006,,25(1):30-32.
[10] 朱彥杰,,鄧昌延,李國杰,,等.IEC104協(xié)議在變電站系統(tǒng)的應(yīng)用與測(cè)試[J].繼電器,,2004,,32(1):43-45.
[11] 李國棟,冶莉娟,,李暉,,等.104規(guī)約在青海電網(wǎng)調(diào)度自動(dòng)化系統(tǒng)應(yīng)用中的問題診斷及處理[J].青海電力,2011,,30(1):56-59.
[12] 王成山,,王守相,郭力,,等.我國智能配電技術(shù)展望[J].南方電網(wǎng)技術(shù),,2010,4(1):18-22.
[13] 馮煥霞,,楊俊華,,鄭儉華,等.IEC60870-5-104協(xié)議的實(shí)時(shí)性能分析[J].華東電力,,2009,,37(4):0577-0581.