梁 捷
(廣西電網(wǎng)有限責(zé)任公司電力科學(xué)研究院,廣西 南寧 530023)
傳統(tǒng)的人工抄表方式自動化程度低,漏抄、錯抄等情況時有發(fā)生。隨著智能電網(wǎng)的建設(shè),以遠(yuǎn)程電能數(shù)據(jù)自動靈活采集技術(shù)為特征之一的高級計量架構(gòu)(advanced metrology institution,AMI)出現(xiàn),并得到發(fā)展。AMI通信支撐平臺建設(shè)時,需解決實(shí)際應(yīng)用中常見的通信網(wǎng)存在多種通信方式并存[1],電力用戶基數(shù)龐大,采集的數(shù)據(jù)項多,工作網(wǎng)絡(luò)的低速和不穩(wěn)定性[2]等問題。
消息隊列遙測傳輸協(xié)議(Message Queue Telemetry Transport,MQTT)協(xié)議族是針對低速、低質(zhì)量的網(wǎng)絡(luò)開發(fā)的一種輕量級基于代理的發(fā)布/訂閱消息傳輸協(xié)議族。它包含多種支持不同通信信道的子協(xié)議,可通過鏈路層子域劃分滿足混合通信網(wǎng)的需求,報文格式簡單,有利于提高AMI信息平臺的網(wǎng)絡(luò)通訊速度,改善不同通信協(xié)議的兼容環(huán)境[3]。
本文介紹了MQTT協(xié)議族在電能數(shù)據(jù)采集系統(tǒng)中的應(yīng)用,給出了該系統(tǒng)的物理和邏輯框架,說明了關(guān)鍵的組網(wǎng)技術(shù),并對不同通信質(zhì)量服務(wù)等級下的CPU資源使用狀況和消息吞吐能力進(jìn)行測試和分析。
MQTT協(xié)議族包括MQ、MQTT、MQTT-P等協(xié)議[3]。MQTT(Message Queue Telemetry Transport,MQTT),即消息序列傳送規(guī)約,是一種規(guī)則簡約的支持觀察者模式的傳送規(guī)約,旨在改善使用TCP/IP建立的不可靠并且低帶寬的小型設(shè)備之間的連接質(zhì)量。
MQTT的報文起始部分由兩個字節(jié)的固定起始符和多達(dá)12個字節(jié)的附加可變起始符組成。該協(xié)議使用可變起始符來進(jìn)行預(yù)訂和連接,對于大多數(shù)發(fā)布則使用只有兩個字節(jié)的固定起始符。由于規(guī)約起始符和消息字節(jié)數(shù)組的有效內(nèi)容長度均較短,故使得消息整體較小,有利于降低網(wǎng)絡(luò)流量。
表1 不同消息傳輸協(xié)議的特點(diǎn)比較
由表1可見,在兼容性方面,由于MQTT支持C、Java、Python、JS等多種開發(fā)語言,且支持同步、異步多種傳輸模式,故在程序設(shè)計上更為靈活。在功能方面,提供三種服務(wù)質(zhì)量級別,具備雙向連接通訊的實(shí)時推送;在開銷方面,為了降低網(wǎng)絡(luò)流量,客戶端協(xié)議棧盡量最小化,其中基于C語言的MQTT的Class庫只有30Kb,不僅可以有效節(jié)省設(shè)備空間,而且能在最低為8 bit的CPU上運(yùn)行[6]。
MQTT-P是在MQTT協(xié)議基礎(chǔ)上研究設(shè)計出的適用于RS232/485以及載波通信情況下的通信傳輸協(xié)議,設(shè)計實(shí)現(xiàn)上考慮了AMI抄表的業(yè)務(wù)特點(diǎn)和通信環(huán)境,可與MQTT協(xié)議搭配使用,可嵌入智能電表和集中器中。MQTT-P協(xié)議是一個高效的非IP網(wǎng)絡(luò)下的通信協(xié)議,區(qū)別于電網(wǎng)中的傳統(tǒng)通信協(xié)議,引入了訂閱與發(fā)布機(jī)制,使得后臺應(yīng)用服務(wù)器與前端設(shè)備解耦,保持各自的獨(dú)立性,便于局部更新和分區(qū)管理。
圖1 MQTT及MQTT-P協(xié)議棧的結(jié)構(gòu)
如圖1,MQTT/MQTT-P屬于應(yīng)用層規(guī)約,對上層業(yè)務(wù)應(yīng)用層提供底層數(shù)據(jù)通訊功能支撐。其中,MQTT-P在下行網(wǎng)絡(luò),如PLC窄帶載波上,由于沒有網(wǎng)絡(luò)層和傳輸層的控制,所以在設(shè)計規(guī)約的過程中復(fù)用了鏈路層HDLC很多設(shè)計,對上層提供類似于MQTT的應(yīng)用層接口。MQTT在網(wǎng)絡(luò)層上和HTTP的規(guī)約類似,它構(gòu)建在TCP/IP網(wǎng)絡(luò)應(yīng)用層規(guī)約基礎(chǔ)上,只需對上層提供簡單的通道連接、數(shù)據(jù)發(fā)送和接收接口。
如圖2,電能遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)通常采用主站-集中器-電表三層結(jié)構(gòu),用戶電量數(shù)據(jù)由電表采集后通過集中器傳輸?shù)街髡綶7]。
圖2 系統(tǒng)通用部署架構(gòu)
由于用戶基數(shù)龐大(千萬級),新一代智能電表需要采集的數(shù)據(jù)項越來越多,數(shù)據(jù)采集的時間間隔越來越小,導(dǎo)致單位時間內(nèi)需上傳的數(shù)據(jù)量越來越龐大。傳統(tǒng)的電力信息采集和通信網(wǎng)絡(luò)一般包括GPRS、以太網(wǎng)、RS232/485、無線Zigbee、PLC等,屬于復(fù)雜的混合通信網(wǎng),存在信道頻段復(fù)用度高、信息傳送速率低、信道易受干擾等問題,且缺乏統(tǒng)一的服務(wù)保障機(jī)制。
對此,在選擇圖2系統(tǒng)的通訊協(xié)議時,應(yīng)考慮通信終端數(shù)據(jù)分析和處理能力、協(xié)議棧支持的平臺、開發(fā)語言、協(xié)議棧的大小以及它對設(shè)備空間和資源的占用等問題。
基于MQTT協(xié)議族的AMI通信支撐系統(tǒng)邏輯框架如圖3所示,下行鏈路,管理人員利用后臺主站服務(wù)器通過MQ通信協(xié)議發(fā)布話題到前置機(jī)上,再通過MQTT協(xié)議由前置機(jī)路由命令到集中器上,集中器收到命令并解析,再視情況對接收MQTT-P協(xié)議命令分發(fā)的所轄表計數(shù)量進(jìn)行調(diào)整。對于上行鏈路,依次走相反的協(xié)議處理過程,表計收到命令后,采集數(shù)據(jù),組合成相應(yīng)的報文返回到集中器,集中器再將組合的信息發(fā)布到相應(yīng)的話題上,最終在主站服務(wù)器上顯示結(jié)果。
圖3 本文AMI系統(tǒng)邏輯框架
為滿足現(xiàn)場對通信準(zhǔn)確性的不同需要,MQTT-P協(xié)議支持QOS0,QOS1,QOS2三種消息發(fā)布服務(wù)質(zhì)量等級(Quality of Service,簡稱QOS)[8]:
QOS0:接收單元“最多一次”接收發(fā)送單元發(fā)來的通信幀,會發(fā)生消息丟失或重復(fù)。從服務(wù)等級上看,服務(wù)質(zhì)量是不太可靠,但其傳輸效率較高。
QOS1:接收單元“至少一次”接收發(fā)送單元發(fā)來的通信幀。從服務(wù)質(zhì)量上來講,基本能保證消息到達(dá),其通信質(zhì)量可靠,但是其傳輸效率居中。但是接收單元有可能會多次收到發(fā)送單元發(fā)來的報文,從而帶來應(yīng)用層處理的混亂。
QOS2:接收單元“有且僅有一次”接收發(fā)送單元發(fā)來的通信幀,要求設(shè)備上具有持久存儲器,用來保持協(xié)議狀態(tài)和臨時存儲通信幀,直至確定接收單元接收到此消息才清除相關(guān)緩存。從服務(wù)質(zhì)量上來講,通信質(zhì)量是可靠,接收方不會收到多次發(fā)送方發(fā)來的報文,應(yīng)用層處理起來也比較方便,缺點(diǎn)是傳輸效率不高。
可見,MQTT-P協(xié)議為應(yīng)用層提供了完備的服務(wù)質(zhì)量等級,應(yīng)用層程序可以綜合考慮通信等待時間與可靠性,視應(yīng)用的需要進(jìn)行靈活選擇。例如:對于關(guān)鍵業(yè)務(wù)數(shù)據(jù),電能指標(biāo)等,可以采用QOS2的服務(wù)等級,以保證傳輸可靠性。而對一些不太關(guān)鍵的數(shù)據(jù)應(yīng)用可使用QOS0的服務(wù)等級,以降低整個PLC系統(tǒng)的通信消耗。
在MQTT-P協(xié)議的設(shè)計和實(shí)現(xiàn)中,引入組播機(jī)制以解決拆鏈?zhǔn)д`帶來的問題。圖2所示集中器和所屬表計的所在低壓電力通信網(wǎng)區(qū)在物理介質(zhì)上可視作一個廣播系統(tǒng)。有一對一和一對多兩種廣播模式。一對一模式中,由于集中器是逐個依次與表計建鏈,采集數(shù)據(jù)完成后再拆除鏈路,此時,有可能存在操作失誤,沒有完全拆除鏈路就轉(zhuǎn)去采集下一個表計,造成有些鏈路仍連通的問題。這種現(xiàn)象在一臺集中器控制幾百個電表的情況下尤其突出。
一對多的廣播模式即組播,應(yīng)用層程序可以利用組播來進(jìn)行同步拆鏈或校時等操作。若存在上次拆鏈?zhǔn)д`的表計,它仍處在傳輸狀態(tài)中,此時若發(fā)起通信,通信兩端的狀態(tài)不同步,通信的一方為了確認(rèn)對方的狀態(tài)會陷入超時等待過程。此時若引入組播拆鏈的過程,定時用組播方式進(jìn)行全體表計拆鏈,可為網(wǎng)絡(luò)終端多提供一次拆鏈機(jī)會,可減少該問題的發(fā)生。
測試平臺邏輯架構(gòu)參考圖2,包括10只智能電表和1個集中器,通信方式:表計到集中器為電力線載波,集中器到前置機(jī)為GPRS,前置機(jī)到主站服務(wù)器為TCP/IP。
本測試通過多路服務(wù)器和soapUI模擬軟件模擬1~10萬個集中器客戶端接入主站服務(wù)器,測試結(jié)果見圖4,可見,并發(fā)連接數(shù)由1萬放大10倍后,各QOS下CPU資源消耗增加不超過30%,從曲線變化趨勢看,CPU資源隨連接數(shù)的放大幾乎成線性的增長,并沒有對服務(wù)器造成大的性能壓力,這是由于基于C的MQTT的Class庫占用空間小,只有30Kb,對服務(wù)器處理資源需求較低。
圖4 不同QOS下的CPU資源使用狀況
QOS級別的由高到低的順序為QOS2>QOS1>QOS0,由圖4可見,CPU資源占用率是QOS0>QOS2>QOS1,此處不能認(rèn)為服務(wù)質(zhì)量級別越高可靠性越高,從而CPU資源使用率越高。這是由于在測試環(huán)境下CPU的使用率不是孤立的,需要和消息處理能力結(jié)合來分析。當(dāng)QOS0時,雖然在消息流交互上比QOS1,QOS2簡單,但消息的處理能力最強(qiáng),處理的消息數(shù)最多,所以在三種質(zhì)量服務(wù)下,QOS0的CPU消耗最高;雖然QOS1下的消息處理能力比QOS2強(qiáng),但差距不大。而且由2.3節(jié),QOS1下接收單元有可能會多次收到發(fā)送單元發(fā)來的報文,QOS1對這些重復(fù)數(shù)據(jù)不做進(jìn)一步處理而直接傳給上層應(yīng)用,QOS2則需要處理這些重復(fù)的消息,因此交互流程比QOS1復(fù)雜,所以會出現(xiàn)QOS2下的CPU使用率比QOS1高。
本測試模擬了一臺集中器控制104~105只電表。模擬方法是在一個采集周期(Tc=5min)內(nèi),集中器對每只電表各進(jìn)行1000次正向有功總電量數(shù)據(jù)采集,則相當(dāng)于多個電表往前置機(jī)發(fā)布數(shù)據(jù)包,每個數(shù)據(jù)包大小為21個字節(jié)。
圖5 不同QOS下系統(tǒng)的消息吞吐能力
由圖5可見,隨著電表數(shù)的增加,服務(wù)器每個Tc發(fā)布的消息數(shù)減少,對消息的處理能力下降,但在105并發(fā)連接且在最嚴(yán)苛的質(zhì)量服務(wù)QOS2下仍能達(dá)到將近每秒1000條消息的處理能力,證明了該通信系統(tǒng)在大規(guī)模客戶端并發(fā)接入的情況下,仍能保持較好的消息處理能力。
MQTT協(xié)議族是為低速、低質(zhì)量通信網(wǎng)絡(luò)和處理能力及內(nèi)存資源有限的服務(wù)器設(shè)計的標(biāo)準(zhǔn)輕量級消息傳輸協(xié)議。它的比特級消息頭和可變長度域設(shè)計能有效降低網(wǎng)絡(luò)流量。它還并提供豐富的消息發(fā)布服務(wù)質(zhì)量等級和高效率的組播機(jī)制,適用于自動電能數(shù)據(jù)采集系統(tǒng)的需要。
本文提出一種基于MQTT協(xié)議族的電能數(shù)據(jù)采集通信支撐平臺設(shè)計,通過MQTT實(shí)現(xiàn)計量自動化終端與后臺主站的通信和數(shù)據(jù)采集,通過MQTT-P實(shí)現(xiàn)不同服務(wù)質(zhì)量下數(shù)據(jù)采集終端與集中器的通信。測試結(jié)果表明,本系統(tǒng)在含多種通信信道的復(fù)合網(wǎng)絡(luò)中運(yùn)行穩(wěn)定,信息處理能力強(qiáng),服務(wù)器資源占用較少,展示出良好的應(yīng)用前景。
參考文獻(xiàn)(References):
[1]王立城.基于AMI測量參數(shù)的電力線通信組網(wǎng)技術(shù)[J].電測與儀表,2017.54(21):42-48
[2]紀(jì)杉.提高用電信息采集成功率的研究[D].沈陽農(nóng)業(yè)大學(xué)碩士學(xué)位論文,2016.
[3]林滸,張家銘,楊海波.基于MQTT協(xié)議的即時消息業(yè)務(wù)設(shè)計與實(shí)現(xiàn)[J].計算機(jī)系統(tǒng)應(yīng)用,2017.26(3):219-224
[4]滕陽陽,胡棟.基于Netty的HTTP協(xié)議棧的擴(kuò)展設(shè)計與實(shí)現(xiàn)[J].無線通信技術(shù),2017.26(3):38-42
[5]張令芬.一種基于JMS的實(shí)時推送技術(shù)[J].電子設(shè)計工程,2015.23(23):60-62
[6]任亨,馬躍,楊海波等.基于MQTT協(xié)議的消息推送服務(wù)器[J].計算機(jī)系統(tǒng)應(yīng)用,2014.23(3):77-82
[7]岳帥.用電信息采集系統(tǒng)的工作原理及應(yīng)用[J].科技創(chuàng)新與應(yīng)用,2016.46(17):182-182
[8]何干志,劉茜萍.基于QoS綜合評價的服務(wù)選擇方法[J].計算機(jī)技術(shù)與發(fā)展,2017.27(8):164-170