(海思市場部提供推薦)
BACnet(A Data Communication Protocol for Building Automation and Control Network)是一種為樓宇自動控制網絡所制定的數據通信協議,它由美國冷暖空調工程師協會組織的標準項目委員會135P(Standard Project Committee: SPC 135P)于1995年6月制定。BACnet標準產生的背景是用戶對樓宇自動控制設備互操作性(Interoperability)的廣泛要求,即將不同廠家的設備組成一個一致的自控系統。BACnet實現樓宇自控設備的互操作性的思想是這樣的,一般樓宇自控設備從功能上講分為兩部分,一部分專門處理設備的控制功能,另一部分專門處理設備的數據通信功能,不同廠商生產的設備使用各自專門的數據通信的方式,所以不同廠商的設備之間沒有很好的互操作性。BACnet就是要建立一種統一的數據通信的標準,用于設備的通信部分,從而使得按這種標準生產的設備,都可以進行通信,實現互操作性。BACnet標準只是規定了樓宇自控設備之間要進行“對話”所必須遵守的規則,并不涉及如何實現這些規則,各廠商可以用不斷進步的技術來開發,從而使得整個領域的技術不斷進步。
SPC征集了各方面的意見,同時參考了國際上各種現已成文的或是事實上的數據通信標準,討論得出了一個具有以下特性的網絡協議模型:
(1)所有的網絡設備,除了主從/令牌傳遞式從屬機(MS/TP slaves: master-slave/token-passing slaves)以外,都是對等的(Peer)。當然某些同等設備可能比其他具有更多的特權(Privilege)和職責(Responsibility)。
(2)每一個網絡設備都稱之為是一個“對象”(Object)的實體(entity),這是一個具有網絡訪問特征的集合模型。每個對象又用一些“屬性”(Property)來描述,這些屬性表示了設備的硬件、軟件以及操作的各個方面。在不需要了解設備內部設計或配置細節的情況下,對象提供了識別和訪問設備信息的方法。盡管該標準規定了廣泛的應用對象的類型以及它們的屬性,但是一旦需要,利用開發工具仍可以自由地增加新的對象類型。
(3)通信功能是通過讀寫某些對象的屬性,以及利用其他協議提供的“服務”(Service)來完成的。盡管該標準規定了一套詳盡的服務,但是一旦需要,該標準的機制也同樣允許利用開發工具增加新的服務。
(4)設備的完善性(Sophistication),即實現特定服務請求或理解特定對象類型種類的能力,是由設備的“一致性類別”(Conformance Class)所反映的。每一種類別定義了一個包括服務、對象、屬性的最小集合,聲明為某一類別的設備必須支持其相應的集合。
(5)由于該標準遵循了ISO的“分層”通信體系結構的概念,因此使用不同的網絡訪問方法和物理介質可以交換相同的報文。這樣可以根據傳輸速度和吞吐量的要求,采用相宜的開銷來配置BACnet網絡。
(6)該標準是為暖氣、通風、 空調、制冷控制設備所設計的,同時它也為其他樓宇控制系統的集成提供了基本原則,例如照明、保安、消防系統等。雖然這些擴展超出了該標準的范圍,但實現起來卻簡單明了。并且,標準中定義的許多對象和服務也可以不加修改地被應用。當然,一旦這些其他類型的樓宇控制功能需要,也可以簡單方便地定義新的對象和服務。
(7)該標準的目的是為暖氣、通風、 空調、制冷控制設備和其它樓宇自控設備的監控定義數據通信的服務和協議。除此之外,標準還定義了抽象的、面向對象的表示法,用來描述這些設備間的信息通信,以便于在樓宇中使用數字控制技術。
所有的通信協議都是一個解決各種信息交換問題的方案的集合,并且隨著時間的推移和技術的進步而不斷改變,BACnet網絡同樣也不例外。
國際標準化組織在制定計算機網絡通訊協議標準時定義了一個模型,稱為開放式系統互聯參考模型(OSI模型),模型的目的是解決計算機與計算機之間普遍的通信問題,并將這個復雜的問題分解成7個小的、易解決的子問題,每個子問題只與某些通信功能相關聯,如圖1-1所示。這樣每個子問題便形成了協議體系結構中的一“層”。任何兩個遵循該模型及有關標準的設備或系統,都可以實現互連和互操作。
SPC制定BACnet標準時,確定BACnet作為一種開放性計算機局域網協議,它仍然采用OSI模型的“分層”通信體系結構的概念。在確定分層的層數時,考慮了下列兩個因素:第一,OSI模型的實現需要很高的費用,實際上在絕大部分樓宇自控系統應用中也并不需要這么多的層次。但是從OSI的功能性方面考慮,經過簡化后,OSI模型仍然是設計樓宇自控協議的一個很好參考,如果只包含OSI模型中被選擇的層次,其它各層則去掉,這樣減少了報文長度,降低了通信處理開銷,同時也會節約樓宇自控工業的生產成本。第二,如果能夠充分利用現有的、易用的、廣泛使用的局域網技術,如Ethernet、ARCNET和LonTalk,不但可以降低成本,同時也有利于性能的提高。由此,SPC確定BACnet標準協議體系結構為一個包含四個層次的分層體系結構,這四個層次相對于OSI模型中的物理層、數據鏈路層、網絡層和應用層,如圖1-2所示。BACnet標準定義了自己的應用層和網絡層,對于其數據鏈路層和物理層,提供了以下五種選擇方案:
第一種選擇是ISO 8802-2類型1定義的邏輯鏈路控制(LLC)協議,加上ISO 8802-3介質訪問控制(MAC)協議和物理層協議。ISO 8802-2類型1提供了無連接不確認的服務,ISO 8802-3則是著名的以太網協議的國際標準。
第二種選擇是ISO 8802-2類型1定義的邏輯鏈路控制(LLC)協議,加上ARCNET(ATA/ANSI 878.1)。
第三種選擇是主從/令牌傳遞(MS/TP)協議加上EIA-485協議。MS/TP協議是專門針對樓宇自控設備設計的,它通過控制EIA-485的物理層,向網絡層提供接口。
第四種選擇是點對點(PTP)協議加上EIA-232協議,為撥號串行異步通信提供了通信機制。
第五種選擇是LonTalk協議。
這些選擇都支持主/從MAC、確定性令牌傳遞MAC、高速爭用MAC以及撥號訪問。拓撲結構上,支持星型和總線型拓撲;物理介質上,支持雙絞線、同軸電纜、光纜。
以下詳細討論BACnet選擇一個四層體系結構的原因。首先仔細考慮BACnet網絡的獨特特征。BACnet的特征主要有以下兩點:
(1) BACnet網絡是一種局域網。即使在某些應用中,樓宇中設備間遠距離的通信必不可少時,這一點仍然是不變的。這種遠距離的通信功能,是由電信網來實現。通信過程中要解決的路由、中繼、可靠傳輸等問題,都由電信網來處理。在此電信網可看成是BACnet網絡外部的部分。
(2) BACnet設備是靜態的,即在空間上,它們不會經常被移來移去。在要完成的功能上,從某種意義上說也是不變的,即不會今天生產的設備的功能是這樣,明天就完全不同了。
在充分了解BACnet網絡的特征后,就可討論OSI模型的各層在BACnet網絡中的適用性了。
OSI模型的物理層提供了設備間的物理連接,以及傳輸載波信號的方式。顯然在BACnet協議中,物理層是必不可少的。
OSI模型的數據鏈路層,負責將數據組織成幀(Frame)或分組(Packet)、管理通訊介質的訪問、尋址(Address),以及完成一些錯誤校正(Error Recovery)和流量控制。這些都是BACnet協議所需要的,因此數據鏈路層也是必不可少的。
OSI網絡層的功能,包括將全局地址解析為局部地址,在一個或多個網絡中進行報文的路由,協調不同類型網絡的差異(如不同網絡所允許的最大報文長度),序列控制,流量控制,差錯控制,以及多路復用。由于BACnet網絡的拓撲特點,在各個設備之間只存在一條邏輯通路(參見圖3),這樣便不需要最優路由的算法。其次,BACnet網絡是由中繼器或網橋互聯起來的一個或多個網段所組成的網絡,它具有單一的局部地址空間。在這樣一種單一網絡中,許多OSI網絡層的功能也變得多余,或者與數據鏈路層相重復。當然在某些BACnet網絡系統中,網絡層也可能是必不可少的。例如,在一個BACnet的網際網(internet)中,當兩個或多個網絡使用了不同的MAC層時,便需要區別局部地址和全局地址,這樣才能將報文路由到正確的網絡上去。在BACnet協議中,通過定義了一個包含必要的尋徑和控制信息的網絡層頭部,來完成這種簡化了的網絡層功能。
傳輸層主要是負責提供可靠的端到端的報文傳輸、報文分段、序列控制、流量控制,以及差錯校正。傳輸層的許多功能與數據鏈路層相似,只是在作用范圍上有所不同。傳輸層提供的是端到端的服務,而數據鏈路層則提供的是單一網絡上點到點的服務。由于BACnet支持多種網絡的配置,因此協議必須提供傳輸層端到端的服務。在BACnet網絡中要提供三個方面的傳輸層的功能,第一是可靠的端到端傳輸和差錯校正功能,第二是報文分段和端到端的流量控制,第三是實現報文的正確重組,序列控制。由于BACnet是建立在無連接的通信模型基礎上的,因此所需的服務大大減少,并且可以被高層來實現,所以,傳輸層的這些功能可以通過BACnet應用層來實現,這樣,在BACnet協議體系中不單獨設置傳輸層,相應的功能放在應用層中完成,從而節省了通信開銷。
會話層的功能是在通信雙方之間建立和管理長時間對話。包括建立同步標志點,用來在出錯時回復到前一個標志點,以避免對話重新開始。但在一個BACnet網絡中,絕大部分的通信都是很簡短的,比如讀寫一個或一些值,通知某個設備某個警報或事件,或者更改某個設定值。當然長時間的信息交換偶然也會發生的,比如上載或下載某個設備。由于絕大部分事務處理都是簡短的,會話層的服務極少用到,再考慮到帶來的開銷,因此BACnet標準中不包括這層。
表示層為通信雙方提供了屏蔽下層傳送語法的服務。這種傳送語法是用來將應用層中抽象的用戶數據表示,變成適合下層傳輸的字節序列。但當只存在一種傳送語法時,表示層的功能便減少到對應用程序的數據進行編碼。由于在BACnet在應用層中定義了一個固定的編碼方案,因此一個獨立的表示層也變得不再需要。
協議的應用層為應用程序提供了完成各自功能所需的通信服務。在此基礎上,應用程序可以監控HVAC&R和其它樓宇自控系統。顯然應用層是本協議所必需的。
從以上討論中,可以得到以下幾點:
1. 實現一個完全的OSI七層體系結構需要大量的資源和開銷,因此它對于目前的樓宇自控系統是不適用的。
2. 根據OSI模型,采用現有的計算機網絡技術將會帶來以下好處:節約成本,便于與其它計算機網絡系統集成。
3. 根據樓宇自控系統的環境及要求,可以通過去除OSI某些層的功能來簡化OSI模型。
4. 由物理層、數據鏈路層、網絡層和應用層組成的一個簡化體系結構,是當今樓宇自控系統的最佳解決方案。
為了應用的靈活性,BACnet并沒有嚴格規定網絡的拓撲結構。BACnet設備可以通過專線或撥號異步串行線,與四種局域網之一進行物理相連。而這些網絡可以通過BACnet路由器或一對半路由器進一步互聯。
在BACnet網絡中,定義了如下這樣一些拓撲結構:
1. 物理網段(Physical Segment):直接連接一些BACnet設備的一段物理介質。
2. 網段(Segment):多個物理網段通過“中繼器”在物理層連接,所形成的網絡段。
3. 網絡(Network):多個BACnet網段通過“網橋”互連而成,每個BACnet網絡都形成一個單一的MAC地址域。這些在物理層和數據鏈路層上連接各個網段的設備,可以利用MAC地址實現報文的過濾。
4. 網際網(Internetwork):將使用不同LAN技術的多個網絡,用BACnet“路由器”互聯起來,便形成了一個BACnet“網際網”。在一個BACnet網際網中,任意兩個節點之間恰好存在著一條報文通路。