文獻標識碼: A
基于電力線通信(PLC)的自動抄表(AMR)應(yīng)用在我國已有十多年歷史。近幾年來,技術(shù)的發(fā)展重點從點對點通信能力轉(zhuǎn)向了網(wǎng)絡(luò)系統(tǒng)能力,從而使自動抄表產(chǎn)品達到了實用的程度。目前,自動抄表技術(shù)正處于從小批量應(yīng)用轉(zhuǎn)向大面積推廣的階段。在這一階段遇到了一些阻力。例如互聯(lián)互通、模塊互換等問題已經(jīng)引起了業(yè)界的充分注意,并在國網(wǎng)公司的協(xié)調(diào)下制定了初步的可行解決方案和計劃。但是,還有一些現(xiàn)實的問題未被充分注意和討論,而這些問題有可能成為抄表系統(tǒng)大批量應(yīng)用的瓶頸。本文著重討論配電臺區(qū)與電能表的管轄關(guān)系問題,它涉及到系統(tǒng)初始的施工量和日常的維護量。
1 典型的PLCAMR體系
典型的PLCAMR體系由三級系統(tǒng)構(gòu)成:主站、集中器和電能表終端。主站負責管理全局的集中器與電能表信息,可通過光纖、GPRS、公話網(wǎng)或其他方式與集中器通信;集中器一般每個配電臺區(qū)安裝一個,管理所在臺區(qū)的全部電能表,其日常工作是通過電力線通信采集各電能表數(shù)據(jù);電能表負責計量用電戶的各類用電量。
當前的集中器雖然不同程度地具備了自學習路由知識和自組網(wǎng)絡(luò)的能力,但還不能基于純零知識開始工作。只有在了解了要管轄的電能表編號及其計量項目后才能工作,這就要求電力營銷部門理清配電臺區(qū)的用電戶檔案,尤其是電能表編號,通過主站將這些資料下發(fā)到臺區(qū)集中器,才能啟動自動抄表。同樣,在抄表系統(tǒng)運行過程中,當臺區(qū)內(nèi)發(fā)生更換電能表、新增用電戶或者臺區(qū)之間發(fā)生線路切換等業(yè)務(wù)時,必須及時正確地維護集中器中的用戶資料。由于電力公司通常是按照面向人工抄表的習慣劃分組織用戶資料(例如按街道順序組織),理清配電臺區(qū)與用電戶的關(guān)系往往需要耗費很大的人力。所以經(jīng)常因為臺區(qū)集中器裝入了錯誤的表號而導(dǎo)致費時費力的現(xiàn)場排查工作,尤其對于用電歷史長的老城區(qū),理清電能表與臺區(qū)的關(guān)系極其困難,成為普及自動抄表技術(shù)的關(guān)鍵瓶頸。
解決上述問題的本質(zhì)在于系統(tǒng)能夠從零知識開始工作。所謂零知識是指初始時主站只知道有哪些配電臺區(qū)和集中器,但是并不清楚哪些電能表屬于哪個臺區(qū)的集中器;集中器僅知道自己的編號(ID),但不知道有哪些,有多少電能表隸屬自己;電能表僅知道自己的編號(還有自己的計量項目),但不知管轄自己的集中器是誰。
在上述條件下,要求集中器能夠自動獲取所在臺區(qū)已經(jīng)安裝的全部電能表表號(及其可抄讀數(shù)據(jù)項)。在對等網(wǎng)絡(luò)中這一要求較容易滿足,因為對等網(wǎng)絡(luò)的任意節(jié)點都可以主動地啟動通信業(yè)務(wù),只要配以載波沖突檢測和隨機回避等待機制即可完成主動注冊任務(wù)。但目前國家電網(wǎng)關(guān)于自動抄表的通信協(xié)議都是主從結(jié)構(gòu)的,電能表作為通信節(jié)點只有被動應(yīng)答的能力,不能主動發(fā)起通信任務(wù)[1-4]。為了適應(yīng)主從體系結(jié)構(gòu),本文設(shè)計了專門的電能表捕獲算法。該算法的優(yōu)點在于不需要額外的空間資源,線性時間,倘若臺區(qū)內(nèi)有n個電能表,算法可在O(n)次報文跳轉(zhuǎn)時間內(nèi)完成搜索任務(wù)。
2 表號捕獲算法
假設(shè)電能表編號的區(qū)間為[a,b](實際應(yīng)用中a=0,b=1012,或者說是6 B的BCD碼)。表號捕獲算法的核心思想比較簡單,有2點:
(1)對于給定的表號區(qū)間I=[a,b],利用報文沖突判斷出3種情況:在區(qū)間I中恰有1只電能表;在區(qū)間I中無電能表;在區(qū)間I中存在多只電能表。
(2)利用二分搜索技術(shù)快速縮減查找空間。
以下分4個子節(jié)描述基于上述思想的表號捕獲算法。為了簡明本文略去實現(xiàn)細節(jié)。在以后的敘述中,集中器和電能表統(tǒng)稱為節(jié)點。
2.1 判定給定區(qū)間的鄰居分布情況
首先定義一種查詢報文Q={IDsource,a,b}。其中IDsource為報文源節(jié)點(發(fā)出者)的編號,IDmin≤a≤b≤IDmax。報文Q向編號在區(qū)間[a,b]內(nèi)的節(jié)點發(fā)出查詢請求,凡是編號在此區(qū)間的節(jié)點(即編號IDme滿足a≤IDme≤b的節(jié)點)收到該報文后立即回應(yīng)一個報文R={IDme,r},報出自己的編號IDme和自己的屬性r。
定義了以上2種報文,節(jié)點IDsource判定給定區(qū)間[a,b]的鄰居情況的方法是依靠區(qū)別沖突信號與背景噪音的能力。這種能力是指當有多個節(jié)點同時發(fā)送報文時,接收節(jié)點雖然由于報文沖突不能正確地收到任何一個報文,但不會和無報文(線路上只有背景噪音)混為一談,接收者能夠根據(jù)沖突信號與背景噪音的特征差異判斷出有多個報文同時到達并造成了沖突。正如當多人同時講話時,可能聽不清楚任何一個人說的內(nèi)容,但能夠斷定有多人在講話。如果PLC的物理層能夠?qū)_突信號與背景噪音區(qū)分出來,則一個節(jié)點IDsource就可以發(fā)送報文Q={IDsource,a,b},然后利用載波偵聽判定其周圍節(jié)點的編號。在給定編號區(qū)間[a,b]內(nèi)的3種分布情況為:
(1)正確完整地偵聽到一個報文R={IDme,r}:說明存在編號為IDme的節(jié)點,且是唯一的一個編號在a和b之間的節(jié)點。
(2)未能正確地偵聽到任何一個報文,并且線路只有背景噪音:說明沒有節(jié)點其編號在a和b之間;
(3)未能正確地偵聽到任何一個報文,但是存在沖突信號:說明存在多個節(jié)點,其編號在a和b之間。
然而,目前的PLC技術(shù)還不能提供區(qū)分沖突信號與背景噪音的能力,從而分辨不清情況(2)、(3)。目前的低成本技術(shù)僅能做到接收到報文或者接收不到報文。在未收到報文時,區(qū)分不出是情況(2)還是情況(3)。對于低成本的載波芯片,實現(xiàn)這一功能目前還是一項極具挑戰(zhàn)性的任務(wù)。在此,本文給出一個方法可繞過這一難題。該方法利用報文沖突實現(xiàn)這一功能,在收不到報文時,利用報文沖突進一步區(qū)分出是的確沒有報文,還是由于多個節(jié)點同時發(fā)送報文造成了沖突。采用該方法需要付出額外的代價是:多一次報文應(yīng)答過程;源節(jié)點需要事先知道一個確實存在的節(jié)點IDknown;需要定義一種新型的報文S={IDsource,IDknown,a,b}。
S型報文比Q型報文多了一個已知節(jié)點的編號IDknown,該報文的功能是令編號為IDknown的節(jié)點或編號處于a、b之間的節(jié)點收到該S報文后立即回應(yīng)R型報文,報出自己的編號和屬性。區(qū)分上述3種情況的算法如下:
算法1 WhoIn(a,b):
算法說明:該算法的輸入是兩個非負整數(shù) a、b,使得[a,b]形成節(jié)點ID區(qū)間; 設(shè)運行該算法的節(jié)點的ID為IDsource,節(jié)點IDsource已知其一個鄰居節(jié)點IDknown,算法要求IDknown不屬于區(qū)間[a,b];該算法判定節(jié)點IDsource有一個、還是沒有、還是有多個鄰居其ID屬于區(qū)間[a,b];對應(yīng)這三種情況,算法分別報告唯一鄰居的ID、或者ZERO、或者MANY。
send out a packet Q={IDsource,a,b}
wait for a packet R
if a packet R={IDme,r} arrived
then return IDme //*IDme is the unique neighbor
in[a,b]*/
else if a=b
then return ZERO
else send out a packet S={IDsource,IDknown,a,b}
wait for a packet R
if a packet R={IDme,r} arrived
then return ZERO //*Dme must be IDknown
and whose packet has not been
collided*//
else if no packet received
then return MANY //*IDme must have been interfered with some neighbors
in[a,b]*//
end if
end if
顯然,該算法最壞情況下也能在4次報文跳轉(zhuǎn)的時間內(nèi)作出正確判斷。
2.2 搜索編號最小的鄰居節(jié)點
使用普通的二分搜索技術(shù),節(jié)點IDsource在表號區(qū)間[a,b]上重復(fù)地調(diào)用算法WhoIn,可以快速地搜索出編號最小的鄰居節(jié)點(若存在)。算法可遞歸描述如下:
算法2 MinID(a,b):
算法說明:該算法的輸入及要求同算法WhoIn(a,b);如果區(qū)間[a,b]有鄰居節(jié)點,算法返回其中最小的ID,否則返回ZERO。
let result=WhoIn(a,b)
if result is a valid ID or result=ZERO
then return result
let result=MinID(a,[(a+b)/2])
if result is a valid ID
then return result
else return MinID([(a+b)/2],b)
該算法log(b-a)次調(diào)用算法WhoIn,其總的時間復(fù)雜度不大于4log(b-a)次報文跳。
2.3 搜索全部鄰居節(jié)點編號
有了MinID算法,節(jié)點IDsource通過在表號區(qū)間[a,b]重復(fù)地搜索最小的未知表號,直至獲得ZERO值。算法如下:
算法3 IDsIn(a,b):
result=MinID(a,b)
while result≠ZERO do
report result
result=MinID(result+1,b)
end while
該算法最多每4log(b-a)跳時間搜索到一個節(jié)點。若節(jié)點IDsource在區(qū)間[a,b]上有n個鄰居節(jié)點,節(jié)點IDsource在4nlog(b-a)跳時間內(nèi)可完成捕獲這n只電能表的任務(wù)。
2.4 集中器捕獲全部電能表節(jié)點
假設(shè)一個臺區(qū)內(nèi)存在n個電能表節(jié)點,由集中器節(jié)點直接運行算法IDsIn(0,248),可在 4nlog(248-0)≤192n跳時間內(nèi)搜索到全部一跳(直抄)電能表節(jié)點。然后由集中器通知一跳表,二跳表,……。運行同一算法,并將發(fā)現(xiàn)的節(jié)點編號上報集中器,于是集中器可以繼續(xù)搜索到二跳表,三跳表,……。全部過程進行完最多用192n2跳時間。
為了簡單易讀,上述的2.1~2.4節(jié)中只是在思路層敘述算法設(shè)計,忽略了很多重要的實現(xiàn)細節(jié)。
時間界192n2在2.4節(jié)中估計得很粗略。將一些精細的實現(xiàn)細節(jié)納入考慮后,該時間界可下降。例如在任何節(jié)點執(zhí)行該算法時,如果其他節(jié)點記錄偵聽到的節(jié)點,則時間可降至192n跳。
在青島東軟公司的一個實驗臺區(qū)運行本文所述算法,捕獲全部的620只電能表需要1.5 h。算法實現(xiàn)細節(jié)上可以進一步優(yōu)化,使捕獲效率更高。
參考文獻
[1] Q/GDW 376.1-2009電力用戶用電信息采集系統(tǒng)通信協(xié)議,第一部分:主站與采集終端通信協(xié)議.
[2] Q/GDW 376.2-2009電力用戶用電信息采集系統(tǒng)通信協(xié)議,第二部分:集中器本地通信模塊接口協(xié)議.
[3] DL/T645-2007,多功能電能表通信協(xié)議.
[4] DL/T645-1997,多功能電能表通信規(guī)約.