正文:
BACnet為BuildingAutomation andControlnetworks的簡稱,臺灣通常翻譯為“建筑自動化控制網路通訊協(xié)定”,而中國大陸則譯為“樓宇自動化與控制網絡”。
1
前言
BACnet是用于智能建筑的通信協(xié)議,是國際標準化組織(ISO)、美國國家標準協(xié)會(ANSI)及美國采暖、制冷與空調工程師學會(ASHRAE)定義的通信協(xié)議。BACnet針對智能建筑及控制系統(tǒng)的應用所設計的通信,可用在暖通空調系統(tǒng)(HVAC,包括暖氣、通風、空氣調節(jié)),也可以用在照明控制、門禁系統(tǒng)、火警偵測系統(tǒng)及其相關的設備。優(yōu)點在于能降低維護系統(tǒng)所需成本并且安裝比一般工業(yè)通信協(xié)議更為簡易,而且提供有五種業(yè)界常用的標準協(xié)議,此可防止設備供應商及系統(tǒng)業(yè)者的壟斷,也因此未來系統(tǒng)擴展性與兼容性大為增加。
2
協(xié)議簡介
BACnet通信協(xié)議中定義了幾種不同的數(shù)據(jù)鏈接層/物理層,包括:
·
ARCNET。
·
以太網。
·
BACnet/IP。
·
RS-232上的點對點通信。
·
RS-485上的主站-從站/令牌傳遞(Master-Slave/Token-Passing,簡稱MS/TP)通信。
·
LonTalk。
BACnet通信協(xié)議中定義了許多服務(service),可供各設備之間的通信,服務可以分為五類:有關設備對象管理的服務包括Who-Is、I-Am、Who-Has及I-Have等服務,有關對象訪問的服務包括讀取屬性、寫入屬性等服務,有關報警與事件的服務包括確認報警、屬性改變(change of state)報告等,此外也有有關文件讀寫及虛擬終端的服務。
BACnet通信協(xié)議也定義了許多種類的對象。在每個對象中都有許多屬性,可以透過服務來訪問對象中的屬性。BACnet通信中的設備就是由許多對象組成,其中包括一個設備對象,是每個設備都必需的,其中記錄設備相關的數(shù)據(jù),其他對象包括模擬輸入、模擬輸出、模擬值、數(shù)字輸入、數(shù)字輸出及數(shù)字值等有關數(shù)據(jù)的對象。
為了提供不同廠商BACnet設備之間的互操作性,BACnet協(xié)議也定義了BACnet互操作基本塊(BACnet Interoperability Building Block,簡稱BIBB),BACnet互操作基本塊是由一個或多個服務所組成,說明在特定需求下,服務器(server)端及客戶(client)端需要支持的服務及程序。BACnet互操作基本塊可分為以下的五種:
·
數(shù)據(jù)分享
·
警告及事件管理
·
調度
·
趨勢
·
設備及網上管理
每個BACnet設備都會有一份名為“協(xié)議實現(xiàn)一致性聲明”(Protocol
Implementation Conformance Statement,PICS)的文件,其中需說明設備所支持的BACnet互操作基本塊、對象種類及定義、使用文字集及通信時需要的數(shù)據(jù)。
2.1
服務原語
與ISO服務中的約定用法一致,BACnet中兩個對等應用進程間的信息交換,被表示成抽象服務原語的交換。這些服務原語用來傳遞一些特定的服務參數(shù),本協(xié)議定義了四種服務原語:請求(request)、指示(indication)、響應(response)和證實(confirm)。
同樣,本協(xié)議定義了下列幾種服務:
有證實(confirmed)服務:用CONF_SERV標記,表示客戶方通過具體的服務請求實例向服務器方請求服務,服務器方通過響應請求來為客戶方提供服務。存在客戶/服務器模型、區(qū)分“請求方BACnet用戶”和“響應方BACnet用戶”等。
無證實(unconfirmed)服務:用UNCONF_SERV標記,只有“發(fā)送方BACnet用戶”和“接收方BACnet用戶”的概念,不存在客戶/服務器模型,只有發(fā)送方和接收方,而不是請求-響應對。
分段確認(segment
acknowledge)服務:用SEGMENT_ACK標記,為了實現(xiàn)長報文(長度大于通信網絡、收/發(fā)設備所支持的長度)的傳輸,BACnet采取了應用層報文分段的機制來對報文進行分段。在BACnet中只有有證實請求(Confirmed-Request)和復雜確認(Complex-ACK)報文可能需要分段,因此分段還是BACnet的一個可選特性。
另外,還有差錯(ERROR)服務,拒絕(REJECT)服務,中止(ABORT)服務。
因此,根據(jù)不同的服務類型和原語類型,據(jù)有下表所示的服務原語。這些原語中的信息,由各種協(xié)議數(shù)據(jù)單元(PDU:Protocol Data Unit)傳遞。
2.2
PDU類型
BACnet協(xié)議定義了七種不同的PDU,用以傳遞原語信息。
2.2.1 BACnet有證實請求PDU
用于傳送包含在有證實服務請求原語中的信息。
2.2.2 BACnet無證實請求PDU
用于傳送包含在無證實服務請求原語中的信息。
2.2.3 BACnet 簡單確認PDU
用于傳送包含在一個服務響應原語中的信息,這個信息是服務請求已經成功執(zhí)行。
2.2.4 BACnet復雜確認PDU
用于傳送包含在一個服務響應原語中的信息,這個信息除了包含服務請求已經成功執(zhí)行之外,還有其它一些信息。
2.2.5 BACnet 分段確認PDU
用于對收到一個或者多個PDU進行確認,這些PDU包含一個分段報文的分段。BACnet 分段確認PDU也用于對分段報文的下一個或者幾個分段的請求。
2.2.6 BACnet差錯PDU
用于傳送包含在一個服務響應原語中的信息,這個信息指出前一個服務請求完全失敗的原因。
2.2.7 BACnet拒絕PDU
用于對一個有證實請求PDU的拒絕接收,其原因是這個被拒絕的PDU具有句法結構錯誤或者其它的協(xié)議錯誤,使得不能對這個PDU進行解讀,或者不能夠提供請求的服務。只能對有證實請求PDU進行拒絕。
2.2.8 BACnet 中止PDU
用于結束兩個對等實體之間的事務處理。
2.3
服務選擇
BACnet定義了以下幾類可選擇的服務,用于兩個對等實體之間的交互。
2.3.1 文件訪問服務
定義一組訪問和操作在BACnet設備中的文件的服務。文件只是一個抽象的概念,表示一個任意長度和意義的字節(jié)集合的網絡可見形式。
基本讀文件(AtomicReadFile)服務:一個客戶端的BACnet用戶使用基本讀文件服務對某個文件進行一個“打開-讀出-關閉”的操作。
基本寫文件(AtomicWriteFile)服務:一個客戶端的BACnet用戶使用基本寫文件服務對某個字節(jié)流進行一個“打開-寫入-關閉”的操作,將它寫入到文件的某個位置。
2.3.2 對象訪問服務
定義九個應用服務,這些服務共同提供一組訪問和操作BACnet對象的方法。
添加列表元素(AddListElement)服務:一個客戶端的BACnet用戶使用添加列表元素服務向一個具有列表的對象的屬性添加一個或者多個列表元素。
刪除列表元素(RemoveListElement)服務:一個客戶端的BACnet用戶使用刪除列表元素服務從一個具有列表的對象的屬性中刪除一個或者多個列表元素。
創(chuàng)建對象(CreateObject)服務:一個客戶端的BACnet用戶使用創(chuàng)建對象服務創(chuàng)建一個對象的新實例。
刪除對象(DeleteObject)服務:一個客戶端的BACnet用戶使用刪除對象服務刪除一個已有的對象。
讀屬性(ReadProperty)服務:一個客戶端的BACnet用戶使用讀屬性服務請求一個BACnet對象的一個屬性值。
條件讀屬性(ReadPropertyConditional)服務:一個客戶端的BACnet用戶使用條件讀屬性服務請求那些滿足一個選擇準則列表的所有BACnet對象的對象標識符和0個或者多個特定屬性的值。
讀多個屬性(ReadPropertyMultiple)服務:一個客戶端的BACnet用戶使用讀多個屬性服務請求一個或者多個BACnet對象的一個或者多個特定屬性的值。
寫屬性(WriteProperty)服務:一個客戶端的BACnet用戶使用寫屬性服務修改一個BACnet對象的一個屬性值。
寫多個屬性(WritePropertyMultiple)服務:一個客戶端的BACnet用戶使用寫多個屬性服務修改一個或者多個BACnet對象的一個或者多個特定屬性的值。
2.3.3 遠程設備管理服務
定義一組遠程設備管理服務。
設備通信控制(DeviceCommunicationControl)服務。
有證實專有傳輸(ConfirmedPrivateTransfer)服務。
無證實專有傳輸(UnconfirmedPrivateTransfer)服務。
重新初始化設備(ReinitializeDevice)服務。
有證實文本報文(ConfirmedTextMessage)服務。
無證實文本報文(UnconfirmedTextMessage)服務。
時間同步(TimeSynchronization)服務。
2.3.4 Who-Has和I-Have服務
一個發(fā)送的BACnet用戶使用Who-Has服務確定一些其它BACnet設備的設備對象標識符和網絡地址,設備使用I-Hava服務響應Who-Has服務請求,或者通告自己有一個具有給定的對象名稱屬性或者對象標識符屬性的對象。
2.3.5 Who-Is和I-Am服務
一個發(fā)送方BACnet用戶使用Who-Is服務確定在同一個互聯(lián)網上的其它BACnet設備的設備對象標識符和網絡地址,Who-Is服務是一個無證實服務。I-Am服務也是一個無證實的服務,這個服務用于響應Who-Is服務請求。
2.3.6 虛擬終端服務
略。
2.4
對象
對象是對現(xiàn)實設備中某一特征的抽象。
2.4.1 模擬輸入對象類型(Analog Input Object Type)
模擬輸入對象類型定義為一個標準對象,其屬性表示一個模擬輸入的外部可見一致性代碼。
2.4.2 模擬輸出對象類型(Analog Output Object Type)
模擬輸出對象類型定義為一個標準對象,其屬性表示一個模擬輸出的外部可見一致性代碼。
2.4.3 模擬值對象類型(Analog Value Object Type)
模擬值對象類型定義為一個標準對象,其屬性表示一個模擬值的外部可見一致性代碼。BACnet設備的一個“模擬值”是駐留在這個設備的內存中的一個控制系統(tǒng)參數(shù)。
2.4.4 二進制輸入對象類型(Binary Input Object Type)
二進制輸入對象類型定義為一個標準對象,它的屬性表示二進制輸入的外部可見一致性代碼。“二進制輸入”是物理設備或硬件的輸入,該輸入只存在兩種狀態(tài),即“活動(ACTIVE)”狀態(tài)和“非活動(INACTIVE)”狀態(tài)。二進制輸入的主要用途是指明機械設備狀態(tài),如:風機或水泵是否運行。活動表示設備開或運轉,非活動表示設備關或未運行。
2.4.5 二進制輸出對象類型(Binary Output Object Type)
二進制輸出對象類型定義為一個標準對象,它的屬性表示二進制輸出的外部可見一致性代碼。“二進制輸出”是物理設備或硬件的輸出,該輸出只存在兩種狀態(tài),即“活動”狀態(tài)和“非活動”狀態(tài)。二進制輸出的主要用途是切換機械設備狀態(tài),如:風機或水泵的開和關。活動表示設備開或運轉,非活動表示設備關或未運行。
2.4.6 二進制值對象類型(Binary Value Object Type)
二進制值對象類型定義為一個標準對象,它的屬性表示二進制值的外部可見一致性代碼。“二進制值”是駐留在BACnet設備內存中的控制系統(tǒng)參數(shù)。這個參數(shù)只存在兩種狀態(tài)即:“活動”狀態(tài)和“非活動”狀態(tài)。
2.4.7 日期表對象類型(Calendar Object Type)
日期表對象類型定義為一個標準對象,用于描述日期列表,例如,“節(jié)假日”、“特別日”或簡單的日期列表。
2.4.8 命令對象類型(Command Object Type)
命令對象類型定義為一個標準對象,其屬性反映了多操作命令過程的外部可見一致性代碼。命令對象的作用是,根據(jù)寫入到命令對象自己的當前值屬性中的“操作代碼(action code)”,向一組對象屬性寫入一組值。無論何時,只要命令對象的當前值屬性被寫入,就會觸發(fā)命令對象采取一組改變其它對象的屬性值的操作。
2.4.9 設備對象類型(Device Object Type)
設備對象類型定義為一個標準對象,其屬性表示BACnet設備的外部可見一致性代碼。每個BACnet設備有且只有一個設備對象。每個設備對象由它的對象標識符屬性確定,該屬性在BACnet設備中乃至整個BACnet互聯(lián)網中都是唯一的。
2.4.10事件登記對象類型(Event Enrollment Object
Type)
事件登記對象類型定義為一個標準對象,表示BACnet系統(tǒng)內管理事件的信息。“事件”是指滿足預先規(guī)定條件的所有對象的任何屬性值的變化。事件登記對象主要用于定義一個事件和提供在事件發(fā)生與通告消息向一個或多個接收者進行傳輸這兩者之間的聯(lián)系。
2.4.11文件對象類型(File Object Type)
文件對象類型定義為一個標準對象,用于定義可以通過文件服務(見第14節(jié))訪問的數(shù)據(jù)文件的屬性。
2.4.12組對象類型(Group Object Type)
組對象類型定義為一個標準對象,其屬性表示一個其它對象的集合以及這些對象的一個或多個屬性。組對象提供一種快速的方式,可以一次確定組的成員,從而簡化BACnet設備間的信息交換。一個組對象可以是任何對象類型的組合。
1.4.13 環(huán)對象類型(Loop Object
Type)
環(huán)對象類型定義為一個標準對象,其屬性表示任何形式的反饋控制環(huán)路的外部可見一致性代碼。環(huán)對象通過提供三個獨立的無單位增益常數(shù),可以具有廣泛的適用性。每個增益常數(shù)由控制算法具休確定,如何使用不同的算法確定增益常數(shù)的方法,由生產商自行確定。
2.4.13多態(tài)輸入對象類型(Multi-state Input Object
Type)
多態(tài)輸入對象類型定義了一個標準對象,它的當前值屬性表示對象駐留的BACnet設備內算法處理的結果。
2.4.14多態(tài)輸出對象類型(Multi-state Output Object
Type)
多態(tài)輸出對象類型定義了一個標準對象,它的屬性表示這個對象駐留的BACnet設備內的處理程序或一個或多個物理輸出的期望狀態(tài)。
2.4.15通告類對象類型(Notification Class Object
Type)
通告類對象類型定義了一個標準對象,表示在BACnet系統(tǒng)內事件通告發(fā)布所需的信息。
2.4.16程序對象類型(Program Object Type)
程序對象類型定義了一個標準對象,它的屬性表示應用程序的外部可視一致性代碼。在本協(xié)議中,應用程序是指對一個在BACnet設備中的處理過程的抽象表示,這個處理過程執(zhí)行一個指令集,對某個數(shù)據(jù)結構集合進行操作。
2.4.17時間表對象類型(Schedule Object Type)
時間表對象類型定義了一個標準對象,用于描述一個周期性的時間表。這個時間表中確定了某事件在一個日期范圍內可能重復發(fā)生,同時表示有些日期是事件不發(fā)生的日期。
2.5
屬性
上述各對象除了有公有的屬性外,還有自己私有的屬性。
常用的公有屬性有:
對象名稱(Object_Name)
對象類型 (Object_Type)
當前值 (Present_Value)
描述(Description)
通常對象名稱由對象類型和對象實例一起標識。需注意,當前值屬性并不一定為實數(shù),可以為BOOL型、INT型等。
3
TCP/IP組網布署
每個設備有一個唯一的設備地址,在TCP/IP網絡中,就是IP地址。在設備不是一個BACnet路由器的情況下,設備不知道或不需要知道他們BACnet網絡的網絡號。一個或多個子網可以有相同的網絡號。
3.1
BBMD結構
為了確保廣播消息不會在所有子網中路由,引入了BACnet廣播管理設備(BACnet Broadcast Management Device,BBMD)。很多功能,比如動態(tài)name綁定、值改變通知都會廣播,通過BBMD把這些消息限制在各自的網絡中。
3.1.1 樹形結構
優(yōu)點:
結構簡單,只有一個parent和幾個child
易增加新設備
消息不會被復制成幾份
缺點:
一條鏈路失敗,整個支路不通
動態(tài)TOPO復雜
3.1.2 環(huán)形結構
缺點:一條鏈路壞了,整個環(huán)就癱瘓
3.1.3 B/IP網絡結構
完全連接的星形結構,注意只是邏輯結構而不是物理結構。
3.2
跨網段之間的定點通信或廣播
如果知道各自的IP和端口,并且具有BBMD設備,則相互之間就能正常通信。注意BBMD和相關的BVLL協(xié)議只是用來廣播消息。
3.3
BBMD本地廣播的接收
BBMD是一個被動設備,幾乎沒有消息主動傳遞給它,通常它僅僅用來監(jiān)聽本地局域網的廣播消息。
3.4
廣播消息的轉發(fā)
BBMD會根據(jù)自身的BBMD表和掩碼,對接收到的消息進行轉發(fā)。通過創(chuàng)建Forwarded-NPDU消息,發(fā)送到目的地址。
4
使用Yabe軟件讀取bacnet設備信息
BACnet設備通過網線連接到電腦。在電腦上打開yabe軟件。關閉電腦上的防火墻和退出殺毒軟件。
選擇菜單“Functions”下的“添加設備”。
BACnet設備通過網線連接電腦,在“BACnet/IP over Udp”字段中進行相應的設置,輸入電腦的網卡IP地址(bacent連接的網卡)后點擊“Add”按鈕。該程序將添加一個Udp連接到“Devices”目錄,如果網絡中有任何BACnet/IP設備,它們將顯示在目錄中。
點擊“Devices”目錄中的設備。程序將從設備中獲取所有“寄存器”或“節(jié)點”,并將它們顯示在“地址空間”樹中。用鼠標按住某個地址,可以拖到右面的窗口中顯示。47808是端口。1712到1716是Bacnet設備ID。Analog_Input是簡寫AI,地址是5。這些參數(shù)需要設置到網關中。
5
Vfbox網關配置bacnet的流程
網關上電,通過網線連接到電腦。打開VS軟件,新建工程,然后新建設備,設備的屬性如下。網關要采集節(jié)點是“1714”的設備數(shù)據(jù),則配置如下:
添加一個采集的標簽。“5”是寄存器的地址。主要修改“5”位置的地址就可以,其他不用修改。
地址說明:
Analog Input---模擬輸入對象,AnalogOutput--模擬輸出對象, AnalogValue--模擬值對象
Binary Input--二進制輸入對象,Binary Output 二進制輸出對象,Binary Value--二進制值對象
Multi state 是多態(tài)對象。
input是只讀,outpu讀寫,value讀寫
完成配置后,點擊“下載”,點擊“查看數(shù)據(jù)”可以看到采集到的數(shù)據(jù)
啟動modbus slave功能
添加要轉發(fā)的數(shù)據(jù)
下載到網關中,就可以通過modbus poll軟件讀取了網關中的數(shù)據(jù)了。
審核編輯 黃宇
-
通信協(xié)議
+關注
關注
28文章
885瀏覽量
40314 -
MODBUS
+關注
關注
28文章
1808瀏覽量
77028 -
網關
+關注
關注
9文章
4479瀏覽量
51130 -
BACnet
+關注
關注
0文章
92瀏覽量
15017
發(fā)布評論請先 登錄
相關推薦
評論