鄭翔,張珣
(杭州電子科技大學 電子信息學院,杭州 310018)
?
BACnet/IP智能終端的模型研究與設計
鄭翔,張珣
(杭州電子科技大學 電子信息學院,杭州 310018)
BACnet/IP是BACnet協(xié)議與IPV4互聯(lián)網(wǎng)互連的協(xié)議。本文提出了一種將BACnet/IP與無線通信相結(jié)合的終端模型,同時將BACnet Protocol Stack開源工程移植應用于此種模型之上。硬件平臺是ARM9處理器和CC1101無線通信模塊,經(jīng)測試此控制器符合BACnet/IP的通信協(xié)議規(guī)程。重點完成了ARM9嵌入式平臺的軟硬件搭建、BACnet Protocol Stack在此平臺的移植與改進,以及無線模塊與BACnet協(xié)議棧的互操作和終端提供的web服務。
BACnet/IP;ARM9;CC1101; BACnet Protocol Stack;樓宇控制器
BACnet(Building Automation and Control network)是一種為樓宇自動控制網(wǎng)絡所制定的數(shù)據(jù)通信協(xié)議,其產(chǎn)生的背景是用戶對樓宇自動控制設備互操作性的廣泛要求,即將不同廠家的設備組成一個一致的自控系統(tǒng),它是智能建筑樓宇自控領域中唯一的國際標準。目前全球跨國樓宇自控廠商均支持和生產(chǎn)BACnet自控設備和產(chǎn)品,而國內(nèi)對于BACnet方面的研究與應用僅限于少量的論文及會議,這對于我國智能建筑自控領域的發(fā)展顯然是十分不利的。本文在研究國外BACnet發(fā)展的基礎上提出了一種BACnet/IP樓宇控制器的模型,并在實驗室環(huán)境中實現(xiàn)和測試。
BACnet最成功之處就在于采用了面向?qū)ο蟮募夹g,定義了一組具有屬性的對象(Object)來表示任意的樓宇自控設備的功能,從而提供了一種標準的表示樓宇自控設備的方式。BACnet標準中定義的標準對象有模擬輸入(Analog Input)、模擬輸出(Analog Output)、設備(Device)等,其中“設備對象”是每個BACnet必須擁有的對象,這是一個具有網(wǎng)絡訪問特征的集合模型。 舉例來說,一個標準的BACnet測溫設備就可以用設備對象(Device)加一個模擬輸入對象(Analog Input)來表示。
當一個BACnet設備要與另一個BACnet設備進行通信時,它必須要獲得該設備的設備對象中所包含的某些信息,這些信息在BACnet中就稱為BACnet設備對象的屬性,“對象標識符”是BACnet設備中的每個對象必須具有的屬性,它是一個32位的編碼,可以唯一地標識一個BACnet設備。對象標識符由對象的類型和其實例標號組成,第一部分為對象類型標識域,占10位,可以表示1024個對象類型。協(xié)議規(guī)定0~127為BACnet保留類型,例如Analog Input對象類型為0,Analog Output對象類型為1,Device對象類型為8等;第二部分為對象實例編碼域,共22位,可以表示4T個對象實例,也就是說Device對象在整個BACnet網(wǎng)絡中只能有4T個實例,而其他對象在一個BACnet設備中就可以有4T個實例。類比于IPV4協(xié)議來說,Device對象所對應的實例號就相當于IP地址,除Device對象外的其他對象在每個BACnet設備中可以多達4T個,每個對象都可以提供不同的服務,如BACnet測溫設備中的Analog Input對象可以提供讀取溫度服務,這就相當于IP通信進程中的“PORT”,每個PORT可以提供不同的服務,BACnet設備的通信過程與IPV4協(xié)議中通過IP + PORT在IP網(wǎng)絡中確立一個服務進程的思想是一致的。
BACnet/IP作為BACnet協(xié)議的擴展于1999年加入至BACnet標準中,BACnet/IP 提出了使用IPV4網(wǎng)絡作為BACnet的底層網(wǎng)絡,從而可以極其方便地利用IP網(wǎng)絡組建大型的BACnet網(wǎng)絡。
2.1 傳統(tǒng)BACnet/IP終端模型
傳統(tǒng)的BACnet/IP終端在實現(xiàn)上基本上遵循這樣的模型:終端控制器一方面實現(xiàn)BACnet/IP協(xié)議棧的功能,另一方面還要和底層控制器,如空調(diào)控制、照明控制器等各種DDC(直接數(shù)字控制系統(tǒng)),進行通信。每個BACnet設備由一個Device對象和一個其他的服務對象組成,這個服務對象就和特定的DDC進行通信,從而完成特定的工作。
傳統(tǒng)的BACnet/IP終端設備模型如圖1所示,往往是每個控制器負責一樣具體的工作,如每個控制器只能單一的控制空調(diào)設備,暖通設備或者照明設備等,這種做法可以降低BACnet/IP控制器的工作負荷,每個控制器只用維護很少量的資源,節(jié)約控制器的制造成本,甚至可以用單片機實現(xiàn)。但是,缺點是顯而易見的:這種做法必將占用大量的Device實例號,不易于BACnet的大規(guī)模組網(wǎng)與實現(xiàn)。
圖1 傳統(tǒng)BACnet/IP終端設備模型
2.2 改進的BACnet/IP終端模型
鑒于前述的傳統(tǒng)BACnet/IP終端模型的缺點,提出了一種改進的終端模型:一個BACnet設備由一個Device對象和多個其他對象組成,相同的對象類型則由對象實例域進行區(qū)分,比如溫度對象和濕度對象在BACnet標準中都是用Analog Input對象來表示,但是相同對象可進一步用不同的對象實例號來區(qū)分。若遠端試圖訪問本BACnet終端的濕度對象,則需要在BACnet/IP網(wǎng)絡上通過Device對象實例號與濕度對象對應的Analog Input對象實例號來訪問。
相比與傳統(tǒng)的BACnet/IP終端模型,改進后的終端中每個BACnet/IP控制器可以負責不同的工作,擁有多種不同的對象及屬性,可以提供更多的服務,同時大大減少Device對象的使用量,適合BACnet網(wǎng)絡的大規(guī)模實現(xiàn)。
傳統(tǒng)與改進后的BACnet/IP終端模型如圖2所示。
圖2 傳統(tǒng)與改進后的BACnet/IP終端模型
2.3 基于無線的BACnet/IP終端
在改進的BACnet/IP終端模型中,BACnet控制器與底層控制器間仍然是以有線的方式進行通信,有線通信對于BACnet/IP通信環(huán)境的搭建以及以后的擴展維護都是一個極大的阻礙。所以本文采用無線通信的方案進行BACnet/IP終端的實現(xiàn),其模型如圖3所示。當BACnet/IP終端收到經(jīng)由IPv4網(wǎng)絡發(fā)送而來的BACnet服務原語,會經(jīng)過其內(nèi)部的BACnet協(xié)議棧確認為對象訪問類服務,控制器需要操作無線模塊對特定的無線采集DDC節(jié)點進行訪問,如讀取當前溫度值、調(diào)節(jié)照明亮度等。
圖3 基于無線的BACnet/IP終端
將無線通信的方法應用于BACnet,可以使得BACnet組織更加靈活,更加方便地增加和移除設備。
基于上述模型,終端需要同時提供多個對象的服務、IP網(wǎng)絡服務,以及和無線模塊之間通信,這對于硬件資源的要求較高,所以終端在硬件微處理器的選擇芯片為三星公司的S3C2440A處理器,而在無線模塊上選擇是CC1101無線芯片。圖4是終端控制器的硬件結(jié)構圖,各部分的功能如下:
① S3C2440A控制核心板,負責嵌入式Linux操作系統(tǒng)及BACnet協(xié)議棧的運行。
② USB模塊,主要是外接無線網(wǎng)卡,可以通過WLAN將終端接入IP互聯(lián)網(wǎng)中,接無線網(wǎng)卡的好處是進一步省去了IP網(wǎng)絡布線的麻煩。
③ UART模塊,使終端可以通過RS232接口和PC機進行通信,主要是為了調(diào)試。
④ 無線模塊,終端側(cè)的無線節(jié)點,和底層無線采集節(jié)點進行通信。
⑤ LCD觸摸屏,用于和用戶交互,平時工作時可以將背光關掉以節(jié)能。
圖4 BACnet/IP終端硬件設計
基于前面的BACnet/IP終端模型與硬件平臺,軟件平臺上選擇嵌入式Linux作為平臺,ARM9和Linux的配置也是當前較為先進和流行的嵌入式平臺。軟件設計部分主要涉及嵌入式Linux系統(tǒng)的搭建與裁剪、BACnet/IP協(xié)議棧的移植,以及BACnet/IP協(xié)議棧和無線模塊之間的交互。
4.1 嵌入式Linux系統(tǒng)構建
在ARM9處理器上移植與構建嵌入式Linux系統(tǒng)目前已經(jīng)有比較成熟的方案,在移植Linux系統(tǒng)時不要裁剪網(wǎng)絡功能,需要將IPV4與IPV6網(wǎng)絡功能保證完全,因為BACnet/IP協(xié)議正是基于TCP/IP協(xié)議棧的UDP層,而保留IPV6協(xié)議棧是考慮到BACnet也可以架構與IPV6網(wǎng)絡之上,這是需要注意的。
4.2 BACnet/IP協(xié)議棧的移植
BACnet/IP協(xié)議棧的實現(xiàn)上,本文采用移植BACnet Stack Protocol工程。BACnet Stack Protocol是Steve Karg在2005年于著名的開源網(wǎng)站sourceforge上維護的一個BACnet協(xié)議棧開源工程,它完整地實現(xiàn)了BACnet協(xié)議標準,并且可以方便地移植應用于多種平臺上,如WIN32、Linux、PIC單片機、ARM7處理器等,目前最新的版本是bacnet-stack-0.8.0。
由于BACnet Stack Protocol工程采用C語言開發(fā),所以可以很方便地移植于嵌入式Linux系統(tǒng)中,具體來說只要在編譯的時候選擇相應處理器對應的編譯器即可。BACnet Stack Protocol之所以具有高度的可移植性,歸功于其模塊化的編程方法和BACnet協(xié)議棧的分層設計。在將BACnet Stack Protocol移植于不同硬件平臺時,只需要修改對應數(shù)據(jù)鏈路層部分,而網(wǎng)絡層和應用層代碼無需修改,這和IP協(xié)議棧能應用于不同硬件場合的思想也是一致的。
4.3 無線模塊與BACnet/IP通信
由于無線模塊只負責控制著底層的DDC,相應于BACnet協(xié)議中的應用服務,也就是說無線模塊只需要負責和BACnet協(xié)議棧中的應用層進行通信,當應用層協(xié)議數(shù)據(jù)單元(APDU)需要獲取DDC的數(shù)據(jù)時,即調(diào)用無線模塊進程與之進行通信。整個系統(tǒng)的軟件設計如圖5所示。
圖5 BACnet/IP終端軟件設計
系統(tǒng)的軟件由以下幾部分模塊組成:
① Linux內(nèi)核模塊,主要用于IP網(wǎng)絡協(xié)議棧以及各種底層驅(qū)動(如LCD屏幕,無線模塊驅(qū)動)的實現(xiàn)。
② BACnet協(xié)議棧模塊,主要用于移植BACnet Protocol Stack開源工程。
③ 無線模塊,用戶態(tài)的無線模塊進程用于和底層的各個無線采集節(jié)點進行通信,而通信的上層進程為BACnet協(xié)議棧。
④ Web模塊,提供Web服務,使得用戶可以通過IP網(wǎng)絡的http服務遠程訪問和控制終端。
Research and Design of Intelligent Terminal Model of BACnet/IP
Zheng Xiang,Zhang Xun
(Electronic Information Institute,Hangzhou Dianzi University,Hangzhou 310018,China)
BACnet/IP is the protocol linking BACnet and IPV4 Internet. The paper puts forward a terminal model that combined BACnet/IP and wireless communication, and applys the open source projects “BACnet Protocol Stack" on this model. With the ARM9 processor and CC1101 wireless communication module hardware platform, this terminal controller complies with BACnet/IP communication protocol well. The paper focuses on building the ARM9 embedded hardware and software platform, BACnet Protocol Stack migration and improvement, as well as wireless module with BACnet protocol stack, to provide interoperable Web services and terminals.
BACnet/IP;ARM9;CC1101; BACnet Protocol Stack;building controller
TP368.1
A