梁 捷
(廣西電網有限責任公司電力科學研究院,廣西 南寧 530023)
傳統的人工抄表方式自動化程度低,漏抄、錯抄等情況時有發生。隨著智能電網的建設,以遠程電能數據自動靈活采集技術為特征之一的高級計量架構(advanced metrology institution,AMI)出現,并得到發展。AMI通信支撐平臺建設時,需解決實際應用中常見的通信網存在多種通信方式并存[1],電力用戶基數龐大,采集的數據項多,工作網絡的低速和不穩定性[2]等問題。
消息隊列遙測傳輸協議(Message Queue Telemetry Transport,MQTT)協議族是針對低速、低質量的網絡開發的一種輕量級基于代理的發布/訂閱消息傳輸協議族。它包含多種支持不同通信信道的子協議,可通過鏈路層子域劃分滿足混合通信網的需求,報文格式簡單,有利于提高AMI信息平臺的網絡通訊速度,改善不同通信協議的兼容環境[3]。
本文介紹了MQTT協議族在電能數據采集系統中的應用,給出了該系統的物理和邏輯框架,說明了關鍵的組網技術,并對不同通信質量服務等級下的CPU資源使用狀況和消息吞吐能力進行測試和分析。
MQTT協議族包括MQ、MQTT、MQTT-P等協議[3]。MQTT(Message Queue Telemetry Transport,MQTT),即消息序列傳送規約,是一種規則簡約的支持觀察者模式的傳送規約,旨在改善使用TCP/IP建立的不可靠并且低帶寬的小型設備之間的連接質量。
MQTT的報文起始部分由兩個字節的固定起始符和多達12個字節的附加可變起始符組成。該協議使用可變起始符來進行預訂和連接,對于大多數發布則使用只有兩個字節的固定起始符。由于規約起始符和消息字節數組的有效內容長度均較短,故使得消息整體較小,有利于降低網絡流量。

表1 不同消息傳輸協議的特點比較
由表1可見,在兼容性方面,由于MQTT支持C、Java、Python、JS等多種開發語言,且支持同步、異步多種傳輸模式,故在程序設計上更為靈活。在功能方面,提供三種服務質量級別,具備雙向連接通訊的實時推送;在開銷方面,為了降低網絡流量,客戶端協議棧盡量最小化,其中基于C語言的MQTT的Class庫只有30Kb,不僅可以有效節省設備空間,而且能在最低為8 bit的CPU上運行[6]。
MQTT-P是在MQTT協議基礎上研究設計出的適用于RS232/485以及載波通信情況下的通信傳輸協議,設計實現上考慮了AMI抄表的業務特點和通信環境,可與MQTT協議搭配使用,可嵌入智能電表和集中器中。MQTT-P協議是一個高效的非IP網絡下的通信協議,區別于電網中的傳統通信協議,引入了訂閱與發布機制,使得后臺應用服務器與前端設備解耦,保持各自的獨立性,便于局部更新和分區管理。

圖1 MQTT及MQTT-P協議棧的結構
如圖1,MQTT/MQTT-P屬于應用層規約,對上層業務應用層提供底層數據通訊功能支撐。其中,MQTT-P在下行網絡,如PLC窄帶載波上,由于沒有網絡層和傳輸層的控制,所以在設計規約的過程中復用了鏈路層HDLC很多設計,對上層提供類似于MQTT的應用層接口。MQTT在網絡層上和HTTP的規約類似,它構建在TCP/IP網絡應用層規約基礎上,只需對上層提供簡單的通道連接、數據發送和接收接口。
如圖2,電能遠程數據采集系統通常采用主站-集中器-電表三層結構,用戶電量數據由電表采集后通過集中器傳輸到主站[7]。

圖2 系統通用部署架構
由于用戶基數龐大(千萬級),新一代智能電表需要采集的數據項越來越多,數據采集的時間間隔越來越小,導致單位時間內需上傳的數據量越來越龐大。傳統的電力信息采集和通信網絡一般包括GPRS、以太網、RS232/485、無線Zigbee、PLC等,屬于復雜的混合通信網,存在信道頻段復用度高、信息傳送速率低、信道易受干擾等問題,且缺乏統一的服務保障機制。
對此,在選擇圖2系統的通訊協議時,應考慮通信終端數據分析和處理能力、協議棧支持的平臺、開發語言、協議棧的大小以及它對設備空間和資源的占用等問題。
基于MQTT協議族的AMI通信支撐系統邏輯框架如圖3所示,下行鏈路,管理人員利用后臺主站服務器通過MQ通信協議發布話題到前置機上,再通過MQTT協議由前置機路由命令到集中器上,集中器收到命令并解析,再視情況對接收MQTT-P協議命令分發的所轄表計數量進行調整。對于上行鏈路,依次走相反的協議處理過程,表計收到命令后,采集數據,組合成相應的報文返回到集中器,集中器再將組合的信息發布到相應的話題上,最終在主站服務器上顯示結果。

圖3 本文AMI系統邏輯框架
為滿足現場對通信準確性的不同需要,MQTT-P協議支持QOS0,QOS1,QOS2三種消息發布服務質量等級(Quality of Service,簡稱QOS)[8]:
QOS0:接收單元“最多一次”接收發送單元發來的通信幀,會發生消息丟失或重復。從服務等級上看,服務質量是不太可靠,但其傳輸效率較高。
QOS1:接收單元“至少一次”接收發送單元發來的通信幀。從服務質量上來講,基本能保證消息到達,其通信質量可靠,但是其傳輸效率居中。但是接收單元有可能會多次收到發送單元發來的報文,從而帶來應用層處理的混亂。
QOS2:接收單元“有且僅有一次”接收發送單元發來的通信幀,要求設備上具有持久存儲器,用來保持協議狀態和臨時存儲通信幀,直至確定接收單元接收到此消息才清除相關緩存。從服務質量上來講,通信質量是可靠,接收方不會收到多次發送方發來的報文,應用層處理起來也比較方便,缺點是傳輸效率不高。
可見,MQTT-P協議為應用層提供了完備的服務質量等級,應用層程序可以綜合考慮通信等待時間與可靠性,視應用的需要進行靈活選擇。例如:對于關鍵業務數據,電能指標等,可以采用QOS2的服務等級,以保證傳輸可靠性。而對一些不太關鍵的數據應用可使用QOS0的服務等級,以降低整個PLC系統的通信消耗。
在MQTT-P協議的設計和實現中,引入組播機制以解決拆鏈失誤帶來的問題。圖2所示集中器和所屬表計的所在低壓電力通信網區在物理介質上可視作一個廣播系統。有一對一和一對多兩種廣播模式。一對一模式中,由于集中器是逐個依次與表計建鏈,采集數據完成后再拆除鏈路,此時,有可能存在操作失誤,沒有完全拆除鏈路就轉去采集下一個表計,造成有些鏈路仍連通的問題。這種現象在一臺集中器控制幾百個電表的情況下尤其突出。
一對多的廣播模式即組播,應用層程序可以利用組播來進行同步拆鏈或校時等操作。若存在上次拆鏈失誤的表計,它仍處在傳輸狀態中,此時若發起通信,通信兩端的狀態不同步,通信的一方為了確認對方的狀態會陷入超時等待過程。此時若引入組播拆鏈的過程,定時用組播方式進行全體表計拆鏈,可為網絡終端多提供一次拆鏈機會,可減少該問題的發生。
測試平臺邏輯架構參考圖2,包括10只智能電表和1個集中器,通信方式:表計到集中器為電力線載波,集中器到前置機為GPRS,前置機到主站服務器為TCP/IP。
本測試通過多路服務器和soapUI模擬軟件模擬1~10萬個集中器客戶端接入主站服務器,測試結果見圖4,可見,并發連接數由1萬放大10倍后,各QOS下CPU資源消耗增加不超過30%,從曲線變化趨勢看,CPU資源隨連接數的放大幾乎成線性的增長,并沒有對服務器造成大的性能壓力,這是由于基于C的MQTT的Class庫占用空間小,只有30Kb,對服務器處理資源需求較低。

圖4 不同QOS下的CPU資源使用狀況
QOS級別的由高到低的順序為QOS2>QOS1>QOS0,由圖4可見,CPU資源占用率是QOS0>QOS2>QOS1,此處不能認為服務質量級別越高可靠性越高,從而CPU資源使用率越高。這是由于在測試環境下CPU的使用率不是孤立的,需要和消息處理能力結合來分析。當QOS0時,雖然在消息流交互上比QOS1,QOS2簡單,但消息的處理能力最強,處理的消息數最多,所以在三種質量服務下,QOS0的CPU消耗最高;雖然QOS1下的消息處理能力比QOS2強,但差距不大。而且由2.3節,QOS1下接收單元有可能會多次收到發送單元發來的報文,QOS1對這些重復數據不做進一步處理而直接傳給上層應用,QOS2則需要處理這些重復的消息,因此交互流程比QOS1復雜,所以會出現QOS2下的CPU使用率比QOS1高。
本測試模擬了一臺集中器控制104~105只電表。模擬方法是在一個采集周期(Tc=5min)內,集中器對每只電表各進行1000次正向有功總電量數據采集,則相當于多個電表往前置機發布數據包,每個數據包大小為21個字節。

圖5 不同QOS下系統的消息吞吐能力
由圖5可見,隨著電表數的增加,服務器每個Tc發布的消息數減少,對消息的處理能力下降,但在105并發連接且在最嚴苛的質量服務QOS2下仍能達到將近每秒1000條消息的處理能力,證明了該通信系統在大規模客戶端并發接入的情況下,仍能保持較好的消息處理能力。
MQTT協議族是為低速、低質量通信網絡和處理能力及內存資源有限的服務器設計的標準輕量級消息傳輸協議。它的比特級消息頭和可變長度域設計能有效降低網絡流量。它還并提供豐富的消息發布服務質量等級和高效率的組播機制,適用于自動電能數據采集系統的需要。
本文提出一種基于MQTT協議族的電能數據采集通信支撐平臺設計,通過MQTT實現計量自動化終端與后臺主站的通信和數據采集,通過MQTT-P實現不同服務質量下數據采集終端與集中器的通信。測試結果表明,本系統在含多種通信信道的復合網絡中運行穩定,信息處理能力強,服務器資源占用較少,展示出良好的應用前景。
參考文獻(References):
[1]王立城.基于AMI測量參數的電力線通信組網技術[J].電測與儀表,2017.54(21):42-48
[2]紀杉.提高用電信息采集成功率的研究[D].沈陽農業大學碩士學位論文,2016.
[3]林滸,張家銘,楊海波.基于MQTT協議的即時消息業務設計與實現[J].計算機系統應用,2017.26(3):219-224
[4]滕陽陽,胡棟.基于Netty的HTTP協議棧的擴展設計與實現[J].無線通信技術,2017.26(3):38-42
[5]張令芬.一種基于JMS的實時推送技術[J].電子設計工程,2015.23(23):60-62
[6]任亨,馬躍,楊海波等.基于MQTT協議的消息推送服務器[J].計算機系統應用,2014.23(3):77-82
[7]岳帥.用電信息采集系統的工作原理及應用[J].科技創新與應用,2016.46(17):182-182
[8]何干志,劉茜萍.基于QoS綜合評價的服務選擇方法[J].計算機技術與發展,2017.27(8):164-170