李曉琴,賈燕南,李 珊,楊彭衛,李江華
(1.中國水利水電科學研究院,北京 100048;2.國家節水灌溉北京工程技術研究中心,北京 100048)
供水管網數據組網設備相對于水廠其他自動監控部分來說,有著很大的差異和特殊性,通常管網監測點距離水廠較遠、在室外安裝、運行環境惡劣,組網通常采用無線通信方式。組網通信是管網監控系統運行的關鍵,決定了底層的壓力、流量等感知數據是否能實時上傳,常用的通信方式包括使用GPRS或4G通信模塊、NB-IOT、無線傳感器網絡等。
(1)使用GPRS 或4G 通信模塊。當前已經有很多管網監控系統使用GPRS(General Packet Radio Service,通用分組無線業務)模塊或4G 模塊進行組網通信,每個監測節點都需要配置一個流量卡,并且每個月產生固定的通信費用。這種通信方式往往比較方便獲得、信號穩定、傳輸速率高可達到115 kb/s,但需要定期繳納一定的通信費用[1]。
在一些靠近末梢用戶的管線監測點,可以利用周邊的供電條件和設備房屋條件(事實上協調安裝的實施難度大)進行安裝。而在主干管網分叉點附近,反而由于住戶少,供電和設備安裝難度極大。通常需要在監測點附近建立一個防護設施,并且要從電網中專門拉線供電,或者使用大面積的太陽能板配合大容量電池進行供電支持。單個監測點的設備及實施成本非常高。
(2)使用NB-IOT 組網通信。近些年,由于NB-IOT 通信技術的興起到流行,一些儀器儀表都可以支持NB-IOT。而這個通信解決方案也是管網監控系統可以利用的技術。
相對于GPRS 等可以支持監測點長鏈接發送數據,NB-IOT則是基于短鏈接方式提交數據。并且在功耗上也比GPRS 低。在極低的數據發送頻度上(如一天發送一次數據),NB-IOT 可以配合電池實現多年持續運行。這個機制非常適用用水戶水表數據上傳。
而供水管網監控往往要求實時上傳數據(比如每分鐘采集一次數據),才能更好地分析管網監控點瞬時變化情況和掌握運行狀況,這種情況NB-IOT 的優勢就不存在,雖然NB-IOT 比GPRS 聯網峰值功率低,對比分析如圖1[2],但也達到200 mA 這個電流級別,從供電角度還是需要和GPRS 同樣的機制才能有效運行。

圖1 NB-IOT和GPRS功耗比對圖
(3)無線傳感器網絡。無線傳感器網絡(Wireless Sensor Network,WSN),是一種廉價、具有通信、計算能力的微小傳感器節點,通過無線方式連接形成一個多跳自組織網絡[3-5]。
無線傳感器網絡的研究起步于20世紀年代末期,引起了世界范圍內廣泛的關注,歐美等發達國家相繼啟動了多個無線傳感器網絡研究計劃。美國自然科學基金委員會、國防部、國家實驗室、能源部和各大高校等多渠道投入資金開展項目研究[6-11]。同時,各大IT 公司包括IBM、Intel|、Honeywell、Nokia 等也致力于醫學、環境監測、森林滅火乃至海底板塊調查、行星探查等領域應用的研究。其他很多國家的研究機構也加入了無線傳感器網絡的研究。迄今為止,己經開發出了一些實際可用的傳感器節點,Mica 系列節點、Intel mote 以及傳感器操作系統MANTIS、Tinyos等[12,13]。
在國內,中國科學院微系統所、電子所、計算所、自動化所等研究機構較早開展了無線傳感器網絡的相關研究,中科院北京計算所開發了GAINS[14]系列傳感器節點。國內許多重點大學如清華大學、哈爾濱工程大學、北京郵電大學、國防科技大學、西北工業大學等院校也都積極地開展了無線傳感器網絡的相關研究[15]。
最早的無線傳感器網絡采用230 MHz 頻段(超短波)無線電臺進行通信,但是這種方式的系統容易受外界信號干擾,而且存在通信速率低、誤碼率較高、信號覆蓋范圍有限的問題。電臺有效通信距離短,一般20 W 的電臺有效通訊距離只有20 km,遇到較高的障礙物,通訊距離還會縮短,數據傳送速率也較小[16]。超長距離的發送需要大功率發射,因此需要提供大功率電源,這一特性決定了數傳電臺的應用只能限定在一定的區域范圍內。
(4)無線RF433/315 傳輸。是管網數據組網一種比較好的方式,一類是采用中間基站方式將多個點連接起來通信,比無線電臺通信穩定、覆蓋范圍廣,而且低功耗、低成本,通過基站接力方式可以實現一定范圍的數據組網。另一類是多跳無線Ad Hoc 網絡,也稱移動自組網(Mobile Ad Hoc Network,MANET)[17]。自組織無線網是一種沒有固定基礎設施(沒有固定路由和固定基站)網絡,無基礎設施的移動網絡[18,19],終端節點帶有無線通信收發裝置,形成多跳、臨時性無中心的網絡,各網絡節點地位相等。
一般供水工程從水廠到用水戶距離最遠可以達到幾十公里。這么遠的距離,能夠使用的通信手段很有限。對于農村地區尤其是山區、高寒區、牧區等地方,GPRS、4G、NB-IOT 網絡受限,經常發生信號中斷的情況,數據時有時無,無法保證正常的數據組網,而且后期都會有相關的運行成本,同時存在設備采集發送頻度高和低功耗要求的矛盾。如果模型要對管網運行的壓力進行實時的漏損分析,則需要每個監測點相關指標采集和數據傳輸頻度也很高,這要求設備能夠盡可能地不間斷運行,這也使得監測節點不可能低功耗運行。相比較而言,采用自組織無線網絡是一種經濟、高效的選擇。
現有的無線組協議為了能夠適應大多數情景實現復雜,針對農村供水管網監控距離遠、監測點數量多等特點,難以支持太陽能和電池組合供電,依托周邊電源導致現場安裝實施困難,對設備要求較高難以支持低端芯片從而導致成本較高,傳統的無線傳感器網絡還需要購買基站接力設備。因而傳統的路由協議不能直接應用于無線傳感器網絡,需要設計專門適用于自組網的協議,Mac 協議和路由協議都是自組織無線網絡研究的重點和主要技術難點[20,21],網絡的穩定性、功耗等性能都依賴所采用的協議。
結合農村管網數據組網協議監測實際情況,對協議能夠支持的最基本要求進行分析。
(1)監測節點數分析。根據調研分析,大部分農村供水工程管網末梢(入村)監測點不超過30個,水廠到用水戶最遠端大多不超過30 km。按照末梢-中間枝干管-主干管-水廠中心,分4 級配置監測節點。每一級對上一級監測點數量折半(實際大部分達不到這種高密度),由此節點數為30-15-7-3-1,總共56個。
(2)節點監測數據量分析。單個管網監測點一般有壓力、流量2 個指標,大多僅壓力1 個指標,加上設備自身的一些參數,如電池電壓(1~2個值)、溫度等。總監測指標設計不超過10個,每個指標2 個字節(2 bytes),每次采集產生的數據包負載不超過20個字節。
(3)監測數據采集發送頻度分析。傳統管網只需要監測累計流量,一段時間內采集2 個數據就可以獲取這個時間段內的累計差值。所以,基本上每天采集一次即可。
而基于管網模型分析的監測要求就比較高,比如,壓力,在用水高峰根據用水人數的變化,不同管網節點壓力波動就比較大。此時需要分鐘級甚至秒級的壓力變化數據。
(4)國內對無線通信管理要求。單信道使用。國家要求中心專用的網關設備只能使用單信道,多信道不被允許。而本協議實現時不需要專門的中心網關設備。
單次發射不超過1 s。本協議負載數據包不超過20 個字節,同時也不使用專門的組網網關(減少了必要的組網數據包協議內容),配合使用合適的擴頻因子(比如6),就算使用比較低的空中波特率2 400,單次發射不會超過1 s。
(5)靈活組網。在一些特殊場合,中心水廠的地理位置不適合做中心節點。此時,要求在其他位置設置中心節點,并且中心節點可能并不能限定一個。
因此,協議中任何節點都可以作為中心節點,并且通過合適的外圍供電和通信轉換配置,使得一個水廠管網數據組網,可以根據需要設定多個中心節點。每個中心節點可以利用本地的網絡,進行周邊節點的數據匯總,并上傳到上位(云端)的農村供水管網監控系統。
專有自組網無線通信協議由三層組成,自下而上分別為Mac 層、鏈路(Link)層和應用(App 或者上位機管理軟件)層,最下面是基于通用異步收發器(Universal Asynchronous Receiver/Transmitter,UART)、串行外設接口(Serial Peripheral Interface,SPI)和無線模塊的物理層支持。
Mac層主要定義了數據包在兩個相鄰設備一次發送或接收的具體格式和要求。
Link 鏈路層以Mac 層為基礎,提供了數據包在節點路由條件下的數據轉發相關要求。鏈路層提供了基于節點地址的鏈路路徑信息,并且每個節點在這個層級基于這些鏈路信息,形成數據包的鏈路轉發功能。這樣節點間能夠通過互相接力方式,達到更遠距離的數據傳輸。中心節點路由策略位置在Link層之上,路由計算和規劃都在此支持。
應用層,則基于Link層實現相關應用指令和數據定義。
本協議也可以在其他有著和管網監測類似運行要求和條件的領域應用,在Mac 層和Link 之上根據業務需求定義自己的應用層。協議層次如圖2所示。

圖2 專有自組網無線通信協議層次圖
本文研究提出了中心鏈路規劃法,所有的采集節點數據都向中心節點匯總。每個節點都不需要考慮網絡路由策略,所有的數據包路由都由中心節點決定。即所有的路由策略都由中心節點來完成,并且這個路由策略不僅可以在設備芯片中完成,還可以使用上位強計算能力的嵌入設備或計算機(Personal computer)來完成。采集網絡拓撲結構如圖3。

圖3 中心鏈路規劃法
本節基于中心鏈路規劃法,在不同層級定義數據包格式。
所有節點地址使用1 字節無符號整數,有效范圍0~255,其中0,協議上設定為啞(dummy)節點,此節點可以監聽周邊的無線信號,但不會做出任何應答,255為廣播地址。那么一個同頻網絡,節點數最大值是254,滿足目前國內農村供水工程管網監測的需要。
Mac 數據包只考慮相鄰的兩個節點(各自都有自身的1 字節地址)直接通信的數據包格式(見表1)。由于通信模塊使用透明傳輸方式,底層的無線頻點、空中波特率、擴頻容錯機制、數據校驗(如CRC)和安全性都直接由無線模塊支持,所以,本協議的Mac 層只需要使用5 個字節的包頭信息,就可以滿足兩個節點之間的基礎通信。

表1 Mac數據包格式表
鏈路層數據包基于Mac 層的Data(后續)數據內容建立,以Data第0位為起始(Mac包的第5字節位)(見表2)。

表2 節點消息包格式表
當Mac 層的數據包類型為3-link 時,低4bit 對應的鏈路消息包類型如表3。

表3 低4bit對應的鏈路消息包類型表
對于Pk Count 計數,協議上一層每發送一個新數據包,則做一次累加,當計數達到255時,下一次計數變成0。
Mac層支持可靠發送和非可靠發送兩種機制。發送數據包時,可以設定發送嘗試次數,在超過發送次數之后,沒有收到應答,可以認為發送失敗。接收端接收到數據包后,根據Target address 判斷是否需要處理,如果發現Target address 是自身地址或者是廣播地址,進行處理。
(1)根據包類型Mac pack type,判斷是否需要應答,如果需要則生成一個應答類型的包,Data_len=0,并進行應答發送。
(2)提交給上一層協議進行處理。
(3)對于包類型=1 查找周邊類型的情況,則Mac 層需要根據自身的地址,計算應答延遲時間,以避免發送者周邊多個節點同時應答嘗試沖突。并且每個節點Mac 層需要建立一個周邊節點地址表,定時發送查找周邊指令進行更新。
Mac 層具體實現流程包括發送數據包(如圖4)、接收數據包(如圖5)。

圖4 發送數據包流程圖

圖5 接收數據包流程圖
Mac層還需要實現周邊節點發現更新。①更新周期。每個節點Mac 層需要定時發出查找周邊數據包。更新周期可以由協議參數來設定。對于管網監測系統來說,更新周期可以設定為一天一次甚至更長時間。②新加入節點或剛啟動節點。對于新加入或剛通電啟動的節點,則可以立即發送查找周邊數據包,這樣可以盡快使自己獲取周邊的節點情況。③節點響應查找周邊節點,流程如圖6。

圖6 節點響應查找周邊節點流程
鏈路層消息轉發策略是本協議的核心,節點發送一個數據包到另一個節點時,鏈路層在數據包前加入起始節點地址-中間轉發節點的地址-目標節點地址列表。
當中間節點收到數據包時,查看自己在數據包鏈路中的位置,定位下一個節點地址(或者最終接收者地址)。如果節點發現此數據包需要轉發到下一個地址,則生成Mac 層需要的數據并推給Mac 進行發送處理。鏈路層轉發包括起始節點發送消息和中間節點轉發/接收過程,見圖7。

圖7 中間節點轉發/接收流程圖
(1)起始節點發送消息。起始節點發送消息時,需要提供自身起始節點地址、目標地址、中間經過的轉發地址和需要發送的數據包(有長度限制)。調用Mac 層發送接口,Mac 層的目標地址是鏈路的下一個節點地址。
(2)中間節點轉發/接收過程。中間轉發節點Mac層收到并解析消息包之后,采用協議棧反向調用鏈路層的接收處理,判斷自身在鏈路中的位置,如果自身是轉發節點,則查找下一個節點地址,如果自身是目標節點,則返回Mac 層處理給予應答。
基于鏈路消息轉發,鏈路層有專門獲取其他節點的周邊節點地址的信息包。中心節點可以定時發起節點關系獲取和更新,并在自身建立所有節點之間周邊節點關系表(見表4)。中心節點可以從中心開始,通過鏈路層的轉發機制,逐層向外獲取周邊節點地址,以此為基礎獲取所有節點的關系表。中心節點可以以最短路徑訪問任意一個節點。
在鏈路層,雖然能夠支持通過鏈路消息指令,獲取網絡中另一個節點的周邊節點列表,但鏈路層并不對其他節點的周邊節點信息做任何存儲和后續處理。相關API預留給應用層或上位機管理軟件使用。
節點關系獲取/更新過程,以表4節點關系表為例,進行說明。

表4 節點關系表
(1)節點關系獲取由中心節點開始,中心節點1查找自身節點Mac 層定時更新的周邊節點列表2、3,并返回給上位機管理軟件。
(2)上位機管理軟件根據中心節點的周邊節點地址2、3,按順序發送對應節點的周邊節點查詢數據包(link_tp=2 和link_tp=3)。由于2,3 為直接的周邊節點,不需要通過中間轉發即可實現。
(3)中心節點繼續查找節點4的周邊節點,此時需要上位機管理軟件根據已有的節點關系表,選擇鏈路。很明顯,節點4的鏈路可以有1-2-4、1-3-4 兩種選擇。上位機管理軟件只需要選擇其中一個即可。此時,鏈路層自動生成帶鏈路信息的周邊節點獲取數據包,數據包通過鏈路轉發到達節點4,節點4 的鏈路層收到數據包之后,獲取本地的周邊節點數據,形成應答數據包,并且使用相同的鏈路返回。
(4)繼續上面(2)、(3)過程,經過一定的時間,就可以完整建立或更新節點關系表。
一般來說,一個供水工程所有監測節點安裝完備之后,所有的節點地址都已經確定。中心節點可以預先設定組網內部的全部地址信息。如果節點關系表建立完成,則可以和全部的節點信息進行比較。如果發現有一些節點沒有在關系表中,則說明這些節點由于一些故障原因而無法到達,由此,中心節點應該產生故障報警。
中心發起的數據包自帶鏈路信息,目標節點或鏈路中的中間節點可以根據數據包的鏈路信息做轉發或應答,中心節點通過節點關系表,實現統一路由管理。
中心路由可以選擇每個節點到達的鏈路,并且在運行過程中,根據實際的丟包情況,進行鏈路切換、重新嘗試等復雜的路由策略。由于無線信號受地形等因素影響,節點間的周邊節點關系并不一定符合地理位置的遠近。
(1)單字節地址和小數據包。單個字節(byte)扣除0 和255兩個特殊值,可以為一個網絡提供254個設備地址,遠遠滿足以上分析的單個管網監測節點需要。同時,每次監測節點發送的數據負載不超過20 字節,配合協議要求的數據,單個數據包可以不超過50 字節。協議可以輕松運行在低端8 位單片機上,16位或32位中高端單片機實現就更沒有壓力,可以降低設備研發成本,同時運行更加可靠。
(2)滿足國內無線通信管理要求。中心路由可以選擇每個節點到達的鏈路,并且在運行過程中,根據實際的丟包情況,進行鏈路切換、重新嘗試等復雜的路由策略,從而實現自組網無線通信。國家要求中心節點專用的網關設備只能使用單信道,本協議實現時不需要專門的中心網關設備。單次發射不超過1 s。本協議負載數據包不超過50 個字節,同時也不使用專門的組網網關(減少了必要的組網數據包協議內容),配合使用合適的擴頻因子(比如6),就算使用比較低的空中波特率2 400 B/s,單次發射不會超過1 s。
(3)應用范圍廣,能夠支持當前已有點對點無線技術和模塊。通過利用現有的點對點無線技術和模塊,可以使得監測節點的實現更加靈活,同時降低研發和材料成本。此外,利用先進的無線技術和對應的模塊可以減少底層協議實現的復雜度,在容錯能力、安全性等方面快速獲得基礎支持。
針對農村供水管網數據組網的特點和需求,基于中心鏈路規劃法,提出了一種專有自組網無線通信協議,基于此協議的硬件設備能夠低功耗運行,只需要小體積電池和小型太陽能板就可以有效運行,現場安裝不需要依賴周邊電源。節點關系表和中心路由統一管理策略實現了中心節點可以以最短路徑訪問任意一個節點,最終達到組網不需要中間基站,在合法合規前提下實現穩定、高效、經濟的管網數據組網和傳輸。