廣東工業(yè)大學(xué) 游健波 黃俊澄 許錦標(biāo)
以STM32F103單片機(jī)芯片為硬件平臺(tái),研發(fā)設(shè)計(jì)一種實(shí)現(xiàn)BACnet/IP的智能傳感器設(shè)備嵌入式模塊,該模塊能夠在BACnet協(xié)議基礎(chǔ)使得數(shù)字量和模擬量的智能傳感器封裝成BACnet標(biāo)準(zhǔn)設(shè)備,構(gòu)成一個(gè)片上系統(tǒng)(SOC)。為完成這個(gè)目標(biāo),首先要對(duì)BACnet協(xié)議標(biāo)準(zhǔn)的對(duì)象和屬性進(jìn)行深入的研究,然后根據(jù)著手研究BACnet在應(yīng)用層的數(shù)據(jù)信息及編碼形式,然后根據(jù)相應(yīng)的原理寫出編碼和解碼函數(shù),完成對(duì)BACnet報(bào)文解碼以及響應(yīng)。最后通過以太網(wǎng)在客戶端軟件與智能傳感器和智能執(zhí)行器設(shè)備實(shí)現(xiàn)BACnet通訊。
近年來,隨著我國(guó)樓宇智能以及工業(yè)自動(dòng)化的不斷發(fā)展,也不斷推進(jìn)了我國(guó)制造業(yè)向前的步伐。而隨著因特網(wǎng)的迅速發(fā)展,樓宇智能以及工業(yè)自動(dòng)化與因特網(wǎng)的結(jié)合已經(jīng)成為必然趨勢(shì),1999年1月,BACnet標(biāo)準(zhǔn)委員會(huì)制定了BACnet互聯(lián)協(xié)議,由于該協(xié)議是基于IPv4的,所以被稱為BACnet/IP協(xié)議。普通傳感器作為眾多工業(yè)場(chǎng)景的應(yīng)用基礎(chǔ),其作用不言而喻。而普通傳感器相對(duì)價(jià)格更高,功能單一,精度較低等特點(diǎn),使之很難廣泛應(yīng)用于眾多工業(yè)場(chǎng)合。同時(shí),智能傳感器以其成本低、易于維護(hù)、系統(tǒng)部署靈活等特點(diǎn),令其成為自動(dòng)控制領(lǐng)域的佼佼者,為此,智能傳感器應(yīng)運(yùn)而生。BACnet協(xié)議作為一個(gè)全球通用的標(biāo)準(zhǔn)協(xié)議,在當(dāng)今時(shí)代已經(jīng)得到了廣泛應(yīng)用,如美國(guó)舊金山的州政府大樓,西雅圖的美國(guó)英航大廈,都是BACnet技術(shù)帶來的杰作。因此,設(shè)計(jì)一種基于BACnet智能傳感器對(duì)于樓宇智能以及工業(yè)的發(fā)展是十分必要的。
根據(jù)BACnet智能傳感器的功能,設(shè)計(jì)了智能傳感器的標(biāo)準(zhǔn)模型,如圖1所示。

圖1 BACnet傳感器設(shè)計(jì)結(jié)構(gòu)框圖
通信進(jìn)程只接受讀屬性(ReadProperty)應(yīng)用層服務(wù),完成MS/TP通信協(xié)議的功能,然后發(fā)出相應(yīng)響應(yīng)報(bào)文,應(yīng)用進(jìn)程主要完成模擬量和數(shù)字量之間的轉(zhuǎn)換,然后更新模擬輸入(Analog Input)對(duì)象實(shí)例“Present_Value”的值;配置管理進(jìn)程則主要對(duì)一些有關(guān)的參數(shù)進(jìn)行設(shè)置,并在智能傳感器安裝時(shí)進(jìn)行調(diào)試。
本文選用STM32F103ZET6芯片作為主控芯片,下載電路部分是給STM32F103ZET6芯片下載其自身運(yùn)行的程序的接口,而協(xié)議棧則是通過串口下載到芯片中,芯片在通過運(yùn)行自身的程序去對(duì)輸入信號(hào)進(jìn)行解釋。以太網(wǎng)接口部分是通過以太網(wǎng)芯片和以太網(wǎng)RJ45接口共同組成的,W5500芯片通過這個(gè)接口實(shí)現(xiàn)對(duì)以太網(wǎng)輸入端的IP數(shù)據(jù)包拆封,同時(shí)又對(duì)STM32傳送來的BACnet報(bào)文進(jìn)行封裝,搭建的硬件電路圖如圖2所示。

圖2 硬件系統(tǒng)示意圖
要完成對(duì)BACnet設(shè)備的設(shè)計(jì),首先要理解并讀懂報(bào)文協(xié)議的內(nèi)容,然后解析報(bào)文,這時(shí)候我們可利用BACnet協(xié)議的可視化工具—VTS軟件。根據(jù)BACnet智能傳感器(B-SS)支持的BIBBs,向IP地址為192.168.113.255的BACnet設(shè)備發(fā)送一個(gè)ReadProperty請(qǐng)求,具體的報(bào)文如圖3所示。

圖3 BACnet報(bào)文分析
紅框中的一串?dāng)?shù)字就是向BACnet設(shè)備發(fā)送的一段報(bào)文,提取出來后得到:“C0A871FFBAC0 810A0011 01040003A10C 0C038000 001955”,接下來我們則對(duì)報(bào)文逐個(gè)解析。
(1)“C0 A8 71 FF BA C0”這是報(bào)文的頭部,轉(zhuǎn)化為十進(jìn)制則可得到Local Broadcast,即目的地址192.168.113.255,UDP端口號(hào)為47808;
(2)“81 0A 00 11”這是BACnet虛擬鏈路層信息,類型為BACnet/IP,其中把0A簡(jiǎn)單地轉(zhuǎn)換為十進(jìn)制后可知道,這是表示BVLL協(xié)議中的第十種功能Original-Unicast-To-Network,11轉(zhuǎn)化為十進(jìn)制的17,表示報(bào)文的長(zhǎng)度為17字節(jié),即“81 0A 00 11 01 04 00 03 A1 0C 0C 03 80 00 00 19 55”的長(zhǎng)度。
(3)“01 04”這是網(wǎng)絡(luò)層內(nèi)容,表示BACnet協(xié)議執(zhí)行的版本號(hào)為1,是一條BACnet協(xié)議的APDU;
(4)“00 03 A1 0C”,“00”表示這是一個(gè)沒有后續(xù)分段的報(bào)文,“03”轉(zhuǎn)化為二進(jìn)制則為“0011”,表示最大的報(bào)文長(zhǎng)度為480字節(jié);“A1”則表示Invoke ID為161,代表發(fā)過來的報(bào)文標(biāo)號(hào)為161,“0C”對(duì)應(yīng)的十進(jìn)制為12,查表可得這是一個(gè)ReadProperty請(qǐng)求,另外WriteProperty則是15;
(5)“0C 03 80 00 00 19 55”,這是一段請(qǐng)求數(shù)據(jù),“0C”BACnet標(biāo)準(zhǔn)對(duì)象標(biāo)識(shí)碼的格式,后面的編碼長(zhǎng)度為4個(gè)字節(jié),“03 80 00 00”轉(zhuǎn)化為二進(jìn)制為“00000011 10000000 00000000 00000000”根據(jù)BACnet協(xié)議標(biāo)準(zhǔn)規(guī)定,對(duì)象的“Object-Identifier”屬性由4個(gè)字節(jié)組成,總共32位,前22位(000000 00000000 00000000)為對(duì)象實(shí)例,后10位(00000011 10)為對(duì)象類型,即該報(bào)文表示實(shí)例號(hào)(Instance)為0,對(duì)象號(hào)為14,即多態(tài)輸出對(duì)象類型(Multistateoutput);“19”表示對(duì)象屬性標(biāo)識(shí)符的長(zhǎng)度為1字節(jié);“55”轉(zhuǎn)換為十進(jìn)制為85,表示Present屬性。
本文就BACnet智能傳感器的相關(guān)設(shè)計(jì)以及報(bào)文進(jìn)行了研究,并對(duì)該類型傳感器提出了一種設(shè)計(jì)方案。在基于STM32F103的基礎(chǔ)上在增加了W5500以太網(wǎng)芯片,為BACnet智能傳感器設(shè)備提供了了一種接入以太網(wǎng)的方法。另外,通過對(duì)復(fù)雜BACnet協(xié)議報(bào)文的具體分析,對(duì)以后BAcnet協(xié)議轉(zhuǎn)其他協(xié)議以及BACnet設(shè)備的開發(fā)研究具有重要的指導(dǎo)意義。