周西峰,徐松松,郭前崗
?。暇┼]電大學(xué) 自動化學(xué)院,江蘇 南京 210046)
摘 要: 分析了ZigBee技術(shù)在BACnet系統(tǒng)擴展應(yīng)用中的基本原理,深入研究了BACnet網(wǎng)絡(luò)與ZigBee網(wǎng)絡(luò)互聯(lián)的具體實現(xiàn)方式以及BACnet的數(shù)據(jù)鏈路層MS/TP協(xié)議的工作機制,最終實現(xiàn)了基于嵌入式STM32的BACnet/ZigBee互聯(lián)網(wǎng)絡(luò)。實驗表明,該方案能夠?qū)ΜF(xiàn)場溫度數(shù)據(jù)進行采集與傳輸。
關(guān)鍵詞: BACnet;ZigBee;MS/TP;互聯(lián)網(wǎng)絡(luò)
0 引言
BACnet是一個關(guān)于樓宇自控設(shè)備數(shù)據(jù)通信的唯一統(tǒng)一標準,可以實現(xiàn)不同廠家設(shè)備的互操作。ZigBee技術(shù)標準的發(fā)布,極大地推動了無線傳感器網(wǎng)絡(luò)的發(fā)展,其低功耗、低時延、低數(shù)據(jù)速率和低成本等特點,可以很好地應(yīng)用于無線傳感網(wǎng)絡(luò)中。在樓宇控制中存在系統(tǒng)擴展的情況,如果采用傳統(tǒng)的有線通信,由于受環(huán)境的影響,往往很難甚至無法進行。針對BACnet無線通信方面的不足以及ZigBee無線通信的優(yōu)勢,將BACnet網(wǎng)絡(luò)和ZigBee網(wǎng)絡(luò)互聯(lián),在現(xiàn)有BACnet網(wǎng)絡(luò)的基礎(chǔ)上,通過ZigBee無線網(wǎng)絡(luò),實現(xiàn)BACnet網(wǎng)絡(luò)的延伸和擴展是值得進一步研究的問題。
本文給出了BACnet/ZigBee互聯(lián)網(wǎng)絡(luò)的硬件和軟件設(shè)計,并對現(xiàn)場溫度進行數(shù)據(jù)采集和傳輸,達到了預(yù)期結(jié)果,驗證了該方案的可行性。
1 BACnet和ZigBee簡介
BACnet標準是用于樓宇控制網(wǎng)絡(luò)的數(shù)據(jù)通信協(xié)議[1],其作用是將各廠商的樓宇自控設(shè)備集成為一個高效、統(tǒng)一和具有競爭力的自控網(wǎng)絡(luò)系統(tǒng)。作為一種開放性計算機局域網(wǎng)絡(luò)協(xié)議,它采用的仍然是OSI模型的“分層”通信體系結(jié)構(gòu)的概念,是簡化后的一個包含四個層次的分層體系結(jié)構(gòu),這四個層次相對于OSI模型中的物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層和應(yīng)用層。目前,BACnet是歐盟組織(CEM)的預(yù)備標準,也是國際標準組織(ISO)的證實標準,并在我國得到了大量的工程應(yīng)用和認可。
ZigBee是由ZigBee聯(lián)盟基于802.15.4開發(fā)的一種低成本、低功耗、雙向近距離無線數(shù)據(jù)通信網(wǎng)絡(luò)協(xié)議。ZigBee具有以下特點:自組網(wǎng),網(wǎng)絡(luò)容量大;網(wǎng)絡(luò)時延短;低功耗,通信速率低;傳輸距離可擴展;成本低;可靠性好,安全性高。ZigBee的出現(xiàn)填補了近距離無線數(shù)據(jù)通信的低成本解決方案空白,將具有廣闊的應(yīng)用前景。
2 MS/TP協(xié)議
MS/TP協(xié)議作為BACnet標準的數(shù)據(jù)鏈路層,解決了EIA-485作為BACnet標準物理層傳輸介質(zhì)的訪問控制MAC問題。MS/TP[2]網(wǎng)絡(luò)是一個混合網(wǎng)絡(luò),在這種網(wǎng)絡(luò)中,存在主站點和從站點兩種非對等的站點,并利用“令牌(Token)”機制進行傳輸介質(zhì)的訪問控制。令牌只在主站點間傳遞,但主站點只有在得到令牌時才能發(fā)送幀,否則只能處于接收和監(jiān)聽狀態(tài)。從站點永遠不會得到令牌,只有接收和監(jiān)聽的功能,只有在響應(yīng)主站點時才具有發(fā)送響應(yīng)幀的能力。
MS/TP協(xié)議規(guī)程可以用三個狀態(tài)機來描述:接收狀態(tài)機、主站點發(fā)送狀態(tài)機和從站點發(fā)送狀態(tài)機。接收狀態(tài)機接收物理層的完整數(shù)據(jù)幀,進行幀和數(shù)據(jù)CRC校驗;發(fā)送狀態(tài)機根據(jù)MS/TP協(xié)議把數(shù)據(jù)幀發(fā)送給物理層。主站點狀態(tài)機除了提供網(wǎng)絡(luò)級連接外,主要負責(zé)令牌維護和管理。
3 BACnet與ZigBee網(wǎng)絡(luò)互聯(lián)
將ZigBee無線網(wǎng)絡(luò)技術(shù)用于BACnet集成系統(tǒng)中,可以基于OSI應(yīng)用層協(xié)議棧,將現(xiàn)有的BACnet設(shè)備集成到ZigBee系統(tǒng)結(jié)構(gòu)中,也可以在現(xiàn)有的BACnet系統(tǒng)架構(gòu)中加入ZigBee應(yīng)用系統(tǒng)集成體系[3-4]。本文采用后者,即在現(xiàn)有BACnet系統(tǒng)架構(gòu)中加入ZigBee應(yīng)用系統(tǒng)集成體系。
在BACnet系統(tǒng)架構(gòu)中擴展ZigBee 802.15.4標準的集成實現(xiàn)方案等同于在BACnet協(xié)議棧的數(shù)據(jù)鏈路層和物理層又加載了一個ZigBee網(wǎng)絡(luò),形成一個擴展的BACnet協(xié)議體系結(jié)構(gòu),如圖1所示。
對BACnet網(wǎng)絡(luò)通信系統(tǒng)的底層通信系統(tǒng)進行擴展,必須考慮與BACnet網(wǎng)絡(luò)層接口的兼容,即在BACnet網(wǎng)絡(luò)層和ZigBee協(xié)議之間定義一個BZLL[5](微協(xié)議層)。該協(xié)議層相當(dāng)于Windows網(wǎng)絡(luò)編程中的API,在此也相當(dāng)于BACnet的鏈路層。當(dāng)BACnet/ZigBee節(jié)點收到一個組播報文時,該節(jié)點通過查找組表得到對應(yīng)的BACnet端口,再將報文通過該端口傳輸?shù)紹ZLL處理。當(dāng)該節(jié)點發(fā)送一個廣播報文時,BZLL將報文通過BACnet協(xié)議隧道簇傳輸?shù)絑igBee協(xié)議棧,然后綁定表中查找到對應(yīng)的組ID,通過無線信道發(fā)送到該ZigBee組上。
本文研究中,MS/TP作為BACnet數(shù)據(jù)鏈路層,物理層采用EIA-485。
3.1 硬件設(shè)計
系統(tǒng)整體結(jié)構(gòu)由四部分組成:微控制器、電源、EIA-485和ZigBee模塊。硬件框圖如圖2所示。
其中,微控制器采用STM32F107實現(xiàn)系統(tǒng)控制和數(shù)據(jù)處理;EIA-485驅(qū)動采用MAX485芯片完成現(xiàn)場總線上數(shù)據(jù)收發(fā)的任務(wù);RS232驅(qū)動采用MAX232芯片,方便與PC機交換數(shù)據(jù);ZigBee模塊采用WeBee ZigBee模塊,實現(xiàn)數(shù)據(jù)的無線通信。
3.2 軟件設(shè)計
3.2.1 系統(tǒng)軟件設(shè)計
本文設(shè)計的BACnet/ZigBee互聯(lián)網(wǎng)絡(luò)中,BACnet采用MS/TP作為其數(shù)據(jù)鏈路層,采用EIA-485作為其物理層。故在整體系統(tǒng)的設(shè)計中,ZigBee充當(dāng)BACnet協(xié)議的數(shù)據(jù)鏈路層和物理層,系統(tǒng)時刻監(jiān)測是否有數(shù)據(jù)中斷的發(fā)生,當(dāng)有中斷發(fā)生時,進行相應(yīng)的數(shù)據(jù)發(fā)送和接收動作。系統(tǒng)軟件流程圖如圖3所示。
?。?)發(fā)送數(shù)據(jù):負責(zé)數(shù)據(jù)的無線發(fā)送,主要由MS/TP協(xié)議的幀發(fā)送狀態(tài)機和ZigBee協(xié)調(diào)器的數(shù)據(jù)發(fā)送完成。幀發(fā)送狀態(tài)機檢測發(fā)送器隊列中是否有待發(fā)送的數(shù)據(jù),當(dāng)確定有數(shù)據(jù)發(fā)送并校驗成功時,進入幀發(fā)送過程,一次發(fā)送的數(shù)據(jù)幀不能超過Nmax_info_frame,剩余的數(shù)據(jù)幀在下一次持有令牌時再發(fā)送;ZigBee發(fā)送中斷,在中斷函數(shù)實現(xiàn)數(shù)據(jù)的無線發(fā)送。
?。?)接收數(shù)據(jù):負責(zé)無線數(shù)據(jù)的接收,主要由MS/TP協(xié)議的幀接收狀態(tài)機和ZigBee協(xié)調(diào)器的數(shù)據(jù)接收完成。當(dāng)有數(shù)據(jù)發(fā)送到協(xié)調(diào)器時,觸發(fā)UART中斷存儲數(shù)據(jù),接收幀狀態(tài)機檢測到有數(shù)據(jù)接收,進行CRC校驗,當(dāng)數(shù)據(jù)正確無誤時將數(shù)據(jù)存入接收隊列。
?。?)網(wǎng)絡(luò)管理:負責(zé)整個網(wǎng)絡(luò)的運行,主要由主站點狀態(tài)機和ZigBee協(xié)調(diào)器完成。初始化過程中實現(xiàn)BACnet協(xié)議的初始化和ZigBee協(xié)調(diào)器的初始化,BACnet協(xié)議的初始化完成時鐘、串口等初始化,保證BACnet協(xié)議的正常運行,ZigBee初始化完成ZigBee無線網(wǎng)絡(luò)的組建,保證無線網(wǎng)絡(luò)的正常運行。主站點狀態(tài)機根據(jù)接收到的數(shù)據(jù)幀和MS/TP協(xié)議規(guī)范進行相應(yīng)的狀態(tài)轉(zhuǎn)換,并負責(zé)令牌的維護和管理。
3.2.2 MS/TP軟件設(shè)計
MS/TP軟件包括三個模塊:接收幀狀態(tài)機、發(fā)送幀過程和主節(jié)點狀態(tài)機。程序流程圖如圖4所示。
接收幀狀態(tài)機接收物理層的數(shù)據(jù)幀,并進行CRC校驗,將成功接收的數(shù)據(jù)幀存儲在接收器隊列中;主站點狀態(tài)機不僅提供網(wǎng)絡(luò)級的連接,還負責(zé)網(wǎng)絡(luò)中令牌的維護和管理;發(fā)送幀過程主要負責(zé)數(shù)據(jù)的轉(zhuǎn)換及發(fā)送至物理層。由于MS/TP協(xié)議要求很高的實時性,因此需要一個精確的時鐘,本文中選擇5 ms精度的計數(shù)器滿足其對時鐘的要求。協(xié)議中的時間參數(shù)均是5 ms的整數(shù)倍。
接收幀狀態(tài)機的運行獨立于主節(jié)點狀態(tài)機,通過標志位來進行通信,從物理層正確接收數(shù)據(jù)幀。當(dāng)串口有數(shù)據(jù)時,發(fā)送串口中斷,在中斷處理函數(shù)中使能接收幀狀態(tài)機。接收并進行CRC校驗,如果接收正確,則設(shè)置收到正確幀為TRUE,否則,設(shè)置收到正確幀為FALSE,然后進行相應(yīng)的錯誤處理過程。
接收幀狀態(tài)機將網(wǎng)絡(luò)層傳下來的數(shù)據(jù)變成幀結(jié)構(gòu)數(shù)據(jù),并以字節(jié)為單位填充串口寄存器,直到完成整個發(fā)送過程。
主站點狀態(tài)機不僅提供網(wǎng)絡(luò)級的連接,還負責(zé)網(wǎng)絡(luò)中令牌的維護和管理,故其運行與令牌有關(guān),根據(jù)令牌的持有情況以及接收幀狀態(tài)機的數(shù)據(jù)參數(shù)進行相應(yīng)的狀態(tài)的轉(zhuǎn)換。
4 應(yīng)用實例
本文通過對現(xiàn)場溫度數(shù)據(jù)的采集和傳輸實驗驗證基于嵌入式STM32的BACnet/ZigBee的可行性。實驗硬件設(shè)計如上圖2所示,協(xié)調(diào)器通過USART1與微控制器STM32F107連接,微控制器STM32F107通過串口與PC連接。當(dāng)ZigBee節(jié)點采集溫度數(shù)據(jù)發(fā)送給協(xié)調(diào)器時,協(xié)調(diào)器接收數(shù)據(jù)并觸發(fā)USART1中斷,中斷函數(shù)將接收到的數(shù)據(jù)緩存到接收緩沖區(qū)。主函數(shù)無限循環(huán)執(zhí)行函數(shù)bacnet_task(),當(dāng)接收緩沖區(qū)有數(shù)據(jù)時,通過圖3、圖4的流程,將數(shù)據(jù)發(fā)送到PC。實驗中采用兩個ZigBee節(jié)點采集溫度數(shù)據(jù),系統(tǒng)采集的數(shù)據(jù)結(jié)果如下圖5所示。
由圖5中的串口信息可知,本文所設(shè)計的系統(tǒng)能夠準確接收無線數(shù)據(jù)。
5 總結(jié)
BACnet是樓宇自控領(lǐng)域的國際標準,ZigBee是短距離無線通信的首選,將ZigBee無線技術(shù)應(yīng)用于BACnet網(wǎng)絡(luò)中,實現(xiàn)了BACnet網(wǎng)絡(luò)的無線通信,具有重大意義。
參考文獻
[1] 魏峰,付東翔,王亞剛.BACnet/ZigBee協(xié)議轉(zhuǎn)換器的研究與實現(xiàn)[J].自動化儀表,2012,33(9):35-38.
[2] 劉泉,任平.基于MS/TP協(xié)議的無線Ad Hoc網(wǎng)絡(luò)[J].計算機工程,2009,35(10):89-91.
[3] PARK T J, CHON Y J, PARK D K, et al. BACnet over ZigBee, a new approach to wireless datalink channel for BACnet[C]. Institute of Electrical and Electronics Engineers Conference on Industrial Informatics, 2007:23-27.
[4] PARK S C, LEE W S, KIM S H, et al. Implementation of a BACnet-ZigBee gateway[C]. Institute of Electrical and Electronics Engineers Conference on Industrial Informatics,2010:40-45.
[5] 李春旺,吳義民,田沛哲.基于BACnet/ZigBee的無線智能溫度傳感器[J].河南師范大學(xué)學(xué)報(自然科學(xué)版),2012,40(2):104-107.