周西峰,徐松松,郭前崗
(南京郵電大學(xué)自動化學(xué)院,江蘇南京210046)
基于STM32的BACnet/ZigBee互聯(lián)網(wǎng)絡(luò)的設(shè)計與實現(xiàn)
周西峰,徐松松,郭前崗
(南京郵電大學(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ù)進(jìn)行采集與傳輸。
BACnet;ZigBee;MS/TP;互聯(lián)網(wǎng)絡(luò)
BACnet是一個關(guān)于樓宇自控設(shè)備數(shù)據(jù)通信的唯一統(tǒng)一標(biāo)準(zhǔn),可以實現(xiàn)不同廠家設(shè)備的互操作。ZigBee技術(shù)標(biāo)準(zhǔn)的發(fā)布,極大地推動了無線傳感器網(wǎng)絡(luò)的發(fā)展,其低功耗、低時延、低數(shù)據(jù)速率和低成本等特點,可以很好地應(yīng)用于無線傳感網(wǎng)絡(luò)中。在樓宇控制中存在系統(tǒng)擴展的情況,如果采用傳統(tǒng)的有線通信,由于受環(huán)境的影響,往往很難甚至無法進(jì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ò)的延伸和擴展是值得進(jìn)一步研究的問題。
本文給出了BACnet/ZigBee互聯(lián)網(wǎng)絡(luò)的硬件和軟件設(shè)計,并對現(xiàn)場溫度進(jìn)行數(shù)據(jù)采集和傳輸,達(dá)到了預(yù)期結(jié)果,驗證了該方案的可行性。
BACnet標(biāo)準(zhǔn)是用于樓宇控制網(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ù)備標(biāo)準(zhǔn),也是國際標(biāo)準(zhǔn)組織(ISO)的證實標(biāo)準(zhǔn),并在我國得到了大量的工程應(yīng)用和認(rèn)可。
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)用前景。
MS/TP協(xié)議作為BACnet標(biāo)準(zhǔn)的數(shù)據(jù)鏈路層,解決了EIA-485作為BACnet標(biāo)準(zhǔn)物理層傳輸介質(zhì)的訪問控制MAC問題。MS/TP[2]網(wǎng)絡(luò)是一個混合網(wǎng)絡(luò),在這種網(wǎng)絡(luò)中,存在主站點和從站點兩種非對等的站點,并利用“令牌(Token)”機制進(jìn)行傳輸介質(zhì)的訪問控制。令牌只在主站點間傳遞,但主站點只有在得到令牌時才能發(fā)送幀,否則只能處于接收和監(jiān)聽狀態(tài)。從站點永遠(yuǎn)不會得到令牌,只有接收和監(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ù)幀,進(jìn)行幀和數(shù)據(jù)CRC校驗;發(fā)送狀態(tài)機根據(jù)MS/TP協(xié)議把數(shù)據(jù)幀發(fā)送給物理層。主站點狀態(tài)機除了提供網(wǎng)絡(luò)級連接外,主要負(fù)責(zé)令牌維護(hù)和管理。
將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標(biāo)準(zhǔn)的集成實現(xiàn)方案等同于在BACnet協(xié)議棧的數(shù)據(jù)鏈路層和物理層又加載了一個ZigBee網(wǎng)絡(luò),形成一個擴展的BACnet協(xié)議體系結(jié)構(gòu),如圖1所示。
圖1BACnet/ZigBee體系結(jié)構(gòu)圖
對BACnet網(wǎng)絡(luò)通信系統(tǒng)的底層通信系統(tǒng)進(jìn)行擴展,必須考慮與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將報文通過BAC-net協(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模塊采用WeBeeZigBee模塊,實現(xiàn)數(shù)據(jù)的無線通信。
圖2 系統(tǒng)結(jié)構(gòu)圖
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ā)生時,進(jìn)行相應(yīng)的數(shù)據(jù)發(fā)送和接收動作。系統(tǒng)軟件流程圖如圖3所示。
圖3BACnet/ZigBee工作流程圖
(1)發(fā)送數(shù)據(jù):負(fù)責(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ā)送并校驗成功時,進(jìn)入幀發(fā)送過程,一次發(fā)送的數(shù)據(jù)幀不能超過Nmax_info_frame,剩余的數(shù)據(jù)幀在下一次持有令牌時再發(fā)送;ZigBee發(fā)送中斷,在中斷函數(shù)實現(xiàn)數(shù)據(jù)的無線發(fā)送。
(2)接收數(shù)據(jù):負(fù)責(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ù)接收,進(jìn)行CRC校驗,當(dāng)數(shù)據(jù)正確無誤時將數(shù)據(jù)存入接收隊列。
(3)網(wǎng)絡(luò)管理:負(fù)責(zé)整個網(wǎng)絡(luò)的運行,主要由主站點狀態(tài)機和ZigBee協(xié)調(diào)器完成。初始化過程中實現(xiàn)BAC-net協(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ī)范進(jìn)行相應(yīng)的狀態(tài)轉(zhuǎn)換,并負(fù)責(zé)令牌的維護(hù)和管理。
3.2.2 MS/TP軟件設(shè)計
MS/TP軟件包括三個模塊:接收幀狀態(tài)機、發(fā)送幀過程和主節(jié)點狀態(tài)機。程序流程圖如圖4所示。
圖4MS/TP協(xié)議流程圖
接收幀狀態(tài)機接收物理層的數(shù)據(jù)幀,并進(jìn)行CRC校驗,將成功接收的數(shù)據(jù)幀存儲在接收器隊列中;主站點狀態(tài)機不僅提供網(wǎng)絡(luò)級的連接,還負(fù)責(zé)網(wǎng)絡(luò)中令牌的維護(hù)和管理;發(fā)送幀過程主要負(fù)責(zé)數(shù)據(jù)的轉(zhuǎn)換及發(fā)送至物理層。由于MS/TP協(xié)議要求很高的實時性,因此需要一個精確的時鐘,本文中選擇5 ms精度的計數(shù)器滿足其對時鐘的要求。協(xié)議中的時間參數(shù)均是5 ms的整數(shù)倍。
接收幀狀態(tài)機的運行獨立于主節(jié)點狀態(tài)機,通過標(biāo)志位來進(jìn)行通信,從物理層正確接收數(shù)據(jù)幀。當(dāng)串口有數(shù)據(jù)時,發(fā)送串口中斷,在中斷處理函數(shù)中使能接收幀狀態(tài)機。接收并進(jìn)行CRC校驗,如果接收正確,則設(shè)置收到正確幀為TRUE,否則,設(shè)置收到正確幀為FALSE,然后進(jìn)行相應(yīng)的錯誤處理過程。
接收幀狀態(tài)機將網(wǎng)絡(luò)層傳下來的數(shù)據(jù)變成幀結(jié)構(gòu)數(shù)據(jù),并以字節(jié)為單位填充串口寄存器,直到完成整個發(fā)送過程。
主站點狀態(tài)機不僅提供網(wǎng)絡(luò)級的連接,還負(fù)責(zé)網(wǎng)絡(luò)中令牌的維護(hù)和管理,故其運行與令牌有關(guān),根據(jù)令牌的持有情況以及接收幀狀態(tài)機的數(shù)據(jù)參數(shù)進(jìn)行相應(yīng)的狀態(tài)的轉(zhuǎn)換。
本文通過對現(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ù)據(jù)顯示
由圖5中的串口信息可知,本文所設(shè)計的系統(tǒng)能夠準(zhǔn)確接收無線數(shù)據(jù)。
BACnet是樓宇自控領(lǐng)域的國際標(biāo)準(zhǔn),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.
Design and implementation of BACnet/ZigBee internetwork based on STM32
Zhou Xifeng,Xu Songsong,Guo Qian′gang
(College of Automation,Nanjing University of Posts and Telecommunications,Nanjing 210046,China)
In this paper,the basic principle of ZigBee technology in the entended application of BACnet system is analysed. And the interconnection between BACnet and ZigBee,the working mechanism of MS/TP protocol are studied deeply.In finally,the interconnnecton between BACnet and ZigBee based on embedded STM32 is realized.Experiments show that this scheme can collect and transmit the field data of temperature.
BACnet;ZigBee;MS/TP;internetwork
TP393
A
1674-7720(2015)11-0054-03
2015-01-13)
周西峰(1960-),男,學(xué)士,教授,主要研究方向:計算機智能監(jiān)控控制技術(shù),計算機控制與系統(tǒng)集成。
徐松松(1989-),通信作者,男,碩士研究生,主要研究方向:無線通信網(wǎng)絡(luò)的遠(yuǎn)程監(jiān)控。E-mail:xinyuan510214@163. com。
郭前崗(1960-),男,碩士,教授,主要研究方向:新能源發(fā)電,電力電子與電力傳動。