王蓉 邵鏡昇 張健宏
(杭州萬(wàn)高科技股份有限公司 浙江杭州 310000)
電力系統(tǒng)本身所支持的通信方式多種多樣,電力線載波通信技術(shù)利用電力線纜作為信號(hào)傳輸媒介,在不同網(wǎng)絡(luò)節(jié)點(diǎn)間交換信息與數(shù)據(jù)[1-2],是一種無(wú)需額外物理媒介的有線通信方式,也是構(gòu)建智能電網(wǎng)的重要手段。G3-PLC 路由機(jī)制是一種國(guó)際通用的電力線載波通信技術(shù)體系,具有自愈、自組織、多跳式等特性的mesh網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)[3],近年來(lái)逐漸受到廣泛關(guān)注[4]。高速電力線載波抄表方案的網(wǎng)絡(luò)架構(gòu)由物理層、數(shù)據(jù)鏈路層和應(yīng)用程序?qū)咏M成[5],但現(xiàn)有的G3-PLC 標(biāo)準(zhǔn)僅定義了物理層和數(shù)據(jù)鏈路層,并未規(guī)定具體的網(wǎng)絡(luò)維護(hù)方法。在沒(méi)有合適的網(wǎng)絡(luò)維護(hù)機(jī)制設(shè)計(jì)時(shí),路由端因意外導(dǎo)致原網(wǎng)絡(luò)失效(復(fù)位、頻段更換等)后,表端并不知情,會(huì)保持當(dāng)下已組網(wǎng)狀態(tài),不進(jìn)行重新入網(wǎng)的動(dòng)作,但實(shí)際上這種狀態(tài)下該載波網(wǎng)絡(luò)并不能再進(jìn)行抄表、上報(bào)等動(dòng)作,影響正常使用。
為繼續(xù)抄表作業(yè),可以手動(dòng)對(duì)表端進(jìn)行復(fù)位,但多數(shù)情況下表端數(shù)量遠(yuǎn)超路由端,且分布較廣,逐一手動(dòng)復(fù)位工程量大;也可以設(shè)定一個(gè)長(zhǎng)時(shí)間不通信后自動(dòng)復(fù)位時(shí)間,但該時(shí)間一般設(shè)置的較長(zhǎng),將導(dǎo)致抄表等作業(yè)長(zhǎng)時(shí)間卡頓。為解決上述問(wèn)題,各應(yīng)用平臺(tái)擬定了不同的網(wǎng)絡(luò)維護(hù)方案。以下是兩種較為常用或得到過(guò)批量運(yùn)用的方案。
方案一:定時(shí)發(fā)送數(shù)據(jù)幀確認(rèn)狀態(tài)。建立連接時(shí),關(guān)聯(lián)一組定時(shí)器,當(dāng)定時(shí)器倒計(jì)時(shí)結(jié)束時(shí),向?qū)Ψ桨l(fā)送探測(cè)數(shù)據(jù)包。如果能收到回復(fù)幀,說(shuō)明連接仍在繼續(xù);如果對(duì)方因重新啟動(dòng)等原因已失去連接,則無(wú)法收到回復(fù)幀,可以認(rèn)為連接已失效[6],需要重新建立連接。這種方法協(xié)議簡(jiǎn)單,實(shí)現(xiàn)方便,但不能保證及時(shí)發(fā)現(xiàn)連接失效狀況,響應(yīng)存在遲滯。
方案二:路由端在重啟后發(fā)送私有“廣播召喚”數(shù)據(jù)包讓表端重新入網(wǎng)。當(dāng)路由端因意外使原網(wǎng)絡(luò)失效后,為更快通知所屬網(wǎng)絡(luò)中的表計(jì)重新關(guān)聯(lián)到本集中器,集中器在組建新網(wǎng)絡(luò)成功后,將下發(fā)私有“廣播召喚”數(shù)據(jù)包,當(dāng)從模塊收到時(shí),延時(shí)原報(bào)文中定義的時(shí)間后復(fù)位并重新入網(wǎng),并且優(yōu)先以收到報(bào)文中定義的頻段內(nèi)嘗試。該方法能及時(shí)恢復(fù)正常組網(wǎng)狀態(tài),但因廣播召喚僅在重啟后發(fā)送,若有從節(jié)點(diǎn)因干擾或其他原因,未能及時(shí)收到廣播召喚,則無(wú)法重新入網(wǎng),這些節(jié)點(diǎn)無(wú)法再進(jìn)行正常的抄讀、上報(bào)等任務(wù),直至長(zhǎng)時(shí)間不通信后自動(dòng)復(fù)位。這種方法雖然保證了時(shí)效性,但抗干擾效果不佳,存在個(gè)別節(jié)點(diǎn)長(zhǎng)時(shí)間無(wú)法通信的隱患。
本文根據(jù)大量現(xiàn)場(chǎng)使用經(jīng)驗(yàn),提出了一種更為靈活高效的網(wǎng)絡(luò)維護(hù)方案,該方案不僅可以在路由重啟時(shí)保障表端迅速響應(yīng),也能在日常運(yùn)作時(shí)維護(hù)網(wǎng)絡(luò),并已在Vango V63xx+V600x 平臺(tái)上運(yùn)用Vango Keepalive私有機(jī)制得以實(shí)現(xiàn)。
在典型的電網(wǎng)環(huán)境中,電表及搭載于上的表端通信模塊分布于各個(gè)區(qū)域內(nèi),因與集中器間的物理距離、線路干擾等原因,產(chǎn)生自然分級(jí),可與搭載于集中器上的路由模塊直接通信的稱之為一跳節(jié)點(diǎn),一跳節(jié)點(diǎn)可收到一跳廣播信號(hào),需要一跳節(jié)點(diǎn)進(jìn)行中繼的稱為二跳節(jié)點(diǎn),可收到二跳廣播信號(hào),以此類推。基本環(huán)境如圖1所示。
圖1 基本環(huán)境架構(gòu)示意圖
當(dāng)電網(wǎng)環(huán)境上電后,萬(wàn)高模塊Keepalive 機(jī)制即開始啟動(dòng)。集中器將提供主節(jié)點(diǎn)地址給路由模塊(CCO),路由模塊根據(jù)主節(jié)點(diǎn)地址換算成臺(tái)區(qū)編號(hào)(PAN ID),Keepalive機(jī)制則用臺(tái)區(qū)標(biāo)編號(hào)作為發(fā)送Keepalive幀參數(shù)之一,用以區(qū)分確認(rèn)對(duì)應(yīng)的集中器。路由模塊借由電力線載波通道發(fā)出keepalive幀,表模塊(STA)接收到上一跳的Keepalive幀后,等待一段時(shí)間后,再轉(zhuǎn)送Keepalive幀給下一跳模塊。后續(xù)以此類推。
將環(huán)境架構(gòu)圖1切換為實(shí)際拓?fù)鋱D后即為圖2。
圖2 實(shí)際拓?fù)浣Y(jié)構(gòu)示意圖
Keepalive機(jī)制是以廣播的方式借助中繼節(jié)點(diǎn)一跳一跳地?cái)U(kuò)散出去,確保每個(gè)能組上網(wǎng)的表模塊都可以接收到維護(hù)信號(hào)并響應(yīng)這些信息。
路由模塊透過(guò)Keepalive 幀廣播通知全部組網(wǎng)上的表模塊關(guān)于該臺(tái)區(qū)的狀態(tài)信息,其中包含了Keepalive 序號(hào)(SEQ)。路由模塊重啟時(shí),SEQ 會(huì)被更新,數(shù)值將增加1,以此示意該臺(tái)區(qū)申請(qǐng)重新入網(wǎng)動(dòng)作。
表模塊收到Keepalive 幀后,會(huì)與自身記錄的SEQ進(jìn)行對(duì)比,如果收到的SEQ 與模塊本身紀(jì)錄的SEQ 相同,則認(rèn)為當(dāng)前網(wǎng)絡(luò)狀態(tài)正常,保持狀態(tài)不變;若收到的SEQ 與模塊本身紀(jì)錄的SEQ 不同,則認(rèn)為當(dāng)前網(wǎng)絡(luò)已失效,需執(zhí)行重新入網(wǎng)流程,故表模塊從已入網(wǎng)狀態(tài)轉(zhuǎn)換為未入網(wǎng)狀態(tài),再次執(zhí)行入網(wǎng)流程,同時(shí)更新表模塊Idle Time,重新計(jì)數(shù)8 h 復(fù)位定時(shí)器,并轉(zhuǎn)送Keepalive幀信息。即當(dāng)路由模塊重啟時(shí),會(huì)更新Keepalive序號(hào),表模塊會(huì)收到與本身記錄不同的Keepalive 序號(hào),因此轉(zhuǎn)換為重新入網(wǎng)狀態(tài)。該方法保障了網(wǎng)絡(luò)失效后能夠及時(shí)恢復(fù)[7]。
機(jī)制發(fā)送方式源碼如下:
因線路干擾等原因,表端可能未能及時(shí)收到路由模塊發(fā)出的Keepalive 幀,因此路由端設(shè)計(jì)為重復(fù)定時(shí)發(fā)送維護(hù)封包,通過(guò)多次嘗試提升成功率。為規(guī)避多次發(fā)送造成的重復(fù)復(fù)位問(wèn)題,故廣播幀中夾帶的SEQ等信息,還能使表端對(duì)該類型幀能進(jìn)行有效分析,當(dāng)SEQ 與集中器一致則無(wú)需復(fù)位,從而支持路由模塊定時(shí)對(duì)表模塊進(jìn)行網(wǎng)絡(luò)維護(hù),而不是如廣播召喚數(shù)據(jù)包一樣僅在重啟階段發(fā)送,有效避免了部分從節(jié)點(diǎn)未及時(shí)收到錯(cuò)過(guò)復(fù)位消息的隱患。根據(jù)實(shí)際使用經(jīng)驗(yàn)設(shè)置發(fā)送間隔周期為30 min,若有從節(jié)點(diǎn)未及時(shí)收到重啟后的Keepalive封包,也有機(jī)會(huì)在下一次Keepalive封包轉(zhuǎn)發(fā)時(shí)完成重新入網(wǎng),無(wú)需等待較長(zhǎng)的“無(wú)通信自主復(fù)位時(shí)間”,優(yōu)化了系統(tǒng)運(yùn)轉(zhuǎn)效率,提升了系統(tǒng)穩(wěn)定性。
區(qū)別于定時(shí)發(fā)送數(shù)據(jù)幀和廣播召喚這兩種方案,Keepalive機(jī)制用途更加廣泛。不僅可用于實(shí)現(xiàn)重啟復(fù)位,也可用于設(shè)備正常運(yùn)作階段定時(shí)的網(wǎng)絡(luò)維護(hù)。能夠讓路由端更清晰地掌握拓?fù)湫畔?,傳遞相位信息,讓表端確認(rèn)自身是否離網(wǎng)等,相關(guān)運(yùn)作流程見圖3。
圖3 Keepalive機(jī)制運(yùn)作流程圖
表模塊收到上一跳Keepalive 幀后,將進(jìn)行轉(zhuǎn)發(fā)等待,之后將收到的Keepalive 幀封包內(nèi)的跳數(shù)加一后再進(jìn)行轉(zhuǎn)發(fā)。后續(xù)以此類推。表模塊有兩組周期定時(shí)器,其一為轉(zhuǎn)發(fā)等待時(shí)間(Forwarding Wait Time, FTW),將使用20 s內(nèi)的隨機(jī)數(shù)再加上10 s的跳數(shù)階級(jí)倍數(shù)。
當(dāng)定時(shí)器時(shí)間到后轉(zhuǎn)發(fā)Keepalive 幀。另一定時(shí)器是重置轉(zhuǎn)發(fā)時(shí)間(Reset Forwarding Time, RFT),將根據(jù)實(shí)際需求設(shè)置重置轉(zhuǎn)發(fā)時(shí)間,在這期間內(nèi)收到任何Keepalive幀,皆視為無(wú)效封包,合理減輕網(wǎng)絡(luò)負(fù)擔(dān)。等待機(jī)制方法源碼如下:
該運(yùn)作流程有效保障Keepalive 機(jī)制運(yùn)行穩(wěn)定,集中器執(zhí)行抄表業(yè)務(wù)或線路上有表模塊正在入網(wǎng)等,也基本不會(huì)對(duì)Keepalive機(jī)制的執(zhí)行造成影響。
Keepalive 幀中包含Keepalive 序號(hào)(SEQ)、臺(tái)區(qū)編號(hào)(Pan ID)、跳數(shù)(Hop-Count)、相位(phase)等信息,網(wǎng)絡(luò)維護(hù)機(jī)制信息說(shuō)明表見表1。
表1 網(wǎng)絡(luò)維護(hù)機(jī)制信息說(shuō)明表
這些信息的傳遞能有效進(jìn)行網(wǎng)絡(luò)維護(hù),并輔助完成以下擴(kuò)展功能。
(1)網(wǎng)絡(luò)拓?fù)洳杉篏3-PLC 標(biāo)準(zhǔn)并未對(duì)網(wǎng)絡(luò)拓?fù)浍@取進(jìn)行具體規(guī)定,使用Keepalive 機(jī)制,路由端可以獲取表端跳數(shù)信息,從而掌握當(dāng)前拓?fù)洹?/p>
(2)相位信息傳遞:搭配過(guò)零檢測(cè)電路,Keepalive機(jī)制可以傳遞相位信息,完善載波網(wǎng)絡(luò)維護(hù)必備信息。
(3)加速異常狀態(tài)偵測(cè):電力線載波通信網(wǎng)絡(luò)在運(yùn)行過(guò)程中,鏈路質(zhì)量容易受到信道時(shí)變?cè)斐傻挠绊?,可能?huì)出現(xiàn)通信鏈路失效的問(wèn)題[8],Keepalive 機(jī)制能有效提升表端發(fā)現(xiàn)該問(wèn)題的效率。基于路由端定時(shí)發(fā)送與表端相應(yīng)轉(zhuǎn)發(fā)規(guī)則,從節(jié)點(diǎn)若在4 個(gè)Keepalive 周期(2 h),均未收到Keepalive幀,可以判定自己已離線,并進(jìn)行自行復(fù)位再次尋找可靠路由。
為充分證明所提網(wǎng)絡(luò)維護(hù)機(jī)制的有效性,本文在Vango V63xx+V6000平臺(tái)上進(jìn)行了實(shí)驗(yàn)驗(yàn)證。
V6306 是一個(gè)窄帶電力線通信處理器芯片,集成了一個(gè)32位MCU,一個(gè)32位DSP,兩個(gè)UART接口,一個(gè)SPI Master 控制器,一個(gè)SPI Slave 接口,1 個(gè)I2C 主Master 接口,PLC MAC/PHY 層功能和仿真前端。加上Vango的大電流驅(qū)動(dòng)的線路驅(qū)動(dòng)器芯片(V6000),它形成了一個(gè)完整的調(diào)制解調(diào)器解決方案平臺(tái),支持窄帶PLC標(biāo)準(zhǔn)。
該平臺(tái)已通過(guò)由日本TüV Rheinland 實(shí)驗(yàn)室進(jìn)行的G3-PLC協(xié)議相關(guān)認(rèn)證,包括FCC頻段和CENELEC_A頻段。
此次驗(yàn)證中,應(yīng)用端使用通用協(xié)議,路由端通信協(xié)議采用GDW 1376.2,表端通信協(xié)議采用DL/T645[9]。
首先搭建載波通信環(huán)境,使表端和集中器端至于同一通信網(wǎng)絡(luò)中,并對(duì)表模塊和路由模塊進(jìn)行監(jiān)控。讓表端和集中器端正常組網(wǎng),并通過(guò)1376.2 協(xié)議查詢?nèi)刖W(wǎng)情況,如表2所示。
使用串口工具模擬集中器[10],對(duì)路由模塊應(yīng)用串口發(fā)送AFN=10H-F2(查詢從節(jié)點(diǎn)信息),得到當(dāng)前有1個(gè)從節(jié)點(diǎn)應(yīng)答,從節(jié)點(diǎn)地址為:000300019805,該地址與實(shí)際表號(hào)相符合。串口發(fā)送AFN=10H-F21(查詢網(wǎng)絡(luò)拓?fù)湫畔ⅲ┐_認(rèn),結(jié)果與10H-F2一致,可以確認(rèn)該從節(jié)點(diǎn)已入網(wǎng)。之后手動(dòng)復(fù)位路由端,通過(guò)AFN=03HF10(本地通信模塊運(yùn)行模式信息,重啟時(shí)會(huì)推上行報(bào)文,可見表3)確認(rèn)路由模塊已重啟。
表3 重啟復(fù)位AFN
監(jiān)控表端接收?qǐng)?bào)文,觀測(cè)到在3 s 后,表端收到Keepalive 幀,并能解析出SEQ、PAN_ID、Phase 等訊息。之后進(jìn)入重新入網(wǎng)流程,并轉(zhuǎn)發(fā)keepalive幀,詳見圖4。證明Keepalive 機(jī)制在路由模塊重啟后,可使表模塊進(jìn)行重新入網(wǎng),有效避免手動(dòng)操作,且響應(yīng)時(shí)間較短,運(yùn)作高效。
監(jiān)聽表端接收?qǐng)?bào)文,觀測(cè)到在30 min后,表端收到Keepalive 幀,證明路由端進(jìn)行了定時(shí)發(fā)送,如圖5 所示。重復(fù)多次發(fā)送能有效避免第一批未收到Keepalive幀的模塊一直處于通信異常狀態(tài),且不會(huì)影響已正常入網(wǎng)模塊狀態(tài)。
圖5 30 min后表端監(jiān)聽報(bào)文
以上測(cè)試證實(shí)Keepalive 機(jī)制符合理論預(yù)期,能有效進(jìn)行網(wǎng)絡(luò)維護(hù)。
本文首先介紹了兩種較為常見的網(wǎng)絡(luò)維護(hù)機(jī)制設(shè)計(jì)方案,針對(duì)目前方案的問(wèn)題,提出了Vango設(shè)計(jì)并在自研平臺(tái)已實(shí)現(xiàn)的一種Keepalive 網(wǎng)絡(luò)維護(hù)機(jī)制。不同于以往方案只考慮單一因素,改進(jìn)方案要同時(shí)考慮時(shí)效性和可靠性,在保證路由重啟后表端能及時(shí)入網(wǎng)的基礎(chǔ)上,確保了單次未能重入網(wǎng)模塊能在較短時(shí)間內(nèi)恢復(fù)正常工作狀態(tài)。另一方面,該機(jī)制更加靈活易擴(kuò)展,在正常工作狀態(tài)亦可進(jìn)行網(wǎng)絡(luò)維護(hù),可協(xié)助路由端確認(rèn)拓?fù)錉顟B(tài)、掌握相位訊息,在鏈路失效時(shí),加速表端確認(rèn)速度。最后通過(guò)實(shí)驗(yàn)驗(yàn)證該機(jī)制的可行性。未來(lái)研究方向?qū)⒖紤]在已有機(jī)制下,根據(jù)實(shí)際需求擴(kuò)展相應(yīng)內(nèi)容,使機(jī)制更具有實(shí)際工程使用價(jià)值,適用于不同的應(yīng)用環(huán)境和市場(chǎng)。