最權(quán)威的BACnetIP開發(fā)經(jīng)驗分享_第1頁
最權(quán)威的BACnetIP開發(fā)經(jīng)驗分享_第2頁
最權(quán)威的BACnetIP開發(fā)經(jīng)驗分享_第3頁
最權(quán)威的BACnetIP開發(fā)經(jīng)驗分享_第4頁
最權(quán)威的BACnetIP開發(fā)經(jīng)驗分享_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

最權(quán)威的BACnetIP開發(fā)經(jīng)驗分享介紹BACnetIP開發(fā)經(jīng)驗分享 --什么是 BACnet/IP介紹BACnet是ADataCommunicationProtocolforBuildingAutomationandControlNetwork的簡稱,是一種為樓宇自控網(wǎng)絡(luò)制定的數(shù)據(jù)通訊協(xié)議。隨著因特網(wǎng)的迅猛發(fā)展,智能建筑與因特網(wǎng)之間產(chǎn)生了越來越多的結(jié)合點,可以看到目前基于因特網(wǎng)的智能建筑應(yīng)用技術(shù)和產(chǎn)品大批涌現(xiàn)出來。而把UDP/IP協(xié)議與BACnet標(biāo)準(zhǔn)相結(jié)合,使用UDP/IP協(xié)議來實現(xiàn)BACnet網(wǎng)絡(luò)的互聯(lián)與報文傳輸,必將為智能建筑向開放性和靈活性的發(fā)展提供更廣闊的空間。實現(xiàn)IP互聯(lián)BACnet網(wǎng)絡(luò)技術(shù),一種技術(shù)在BACnet標(biāo)準(zhǔn)附件H中進(jìn)行了描述,稱之為“隧道”技術(shù),其設(shè)備稱之為BACnet/IP分組封裝拆裝設(shè)備,簡稱PAD,其作用像一個路由器,將BACnet報文通過IP互聯(lián)網(wǎng)傳送。另一種技術(shù)在附件 J中進(jìn)行了描述,稱之為BACnet/IP網(wǎng)絡(luò)技術(shù),設(shè)備稱之為BACnet/IP設(shè)備,其作用就是直接將BACnet報文封裝進(jìn)IP幀中進(jìn)行傳輸。用PADffl建BACnet互聯(lián)網(wǎng)隧道技術(shù)是指要實現(xiàn)這樣一個過程,首先將數(shù)據(jù)封裝在一個網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)包內(nèi),然后使用該協(xié)議進(jìn)行數(shù)據(jù)傳輸,最后在它們到達(dá)其目的地時解開封裝。為了通過 IP網(wǎng)絡(luò)連接 BACnet網(wǎng)絡(luò),在每一個BACnet網(wǎng)絡(luò)中要配置一個稱為PAD勺特殊類型的路由器,其作用是通過IP網(wǎng)絡(luò)將兩個 BACnet網(wǎng)絡(luò)互連。PADM以是一個單獨的設(shè)備,也可以是樓宇控制設(shè)備的一部分功能。PAD的功能像一個BACnet路由器,當(dāng)它接收到一個BACnet報文時,將該報文封裝進(jìn)一個IP幀中,給出位于目標(biāo)BACnet網(wǎng)絡(luò)中對應(yīng)的PAD的IP地址,作為封裝幀的目標(biāo) IP地址,將此幀發(fā)送到IP互聯(lián)網(wǎng)中。接收方的PAD從IP幀中取出BACnet報文,并將其傳送給本地局域網(wǎng)內(nèi)的目標(biāo)設(shè)備。使用隧道傳輸技術(shù)的好處是,在將數(shù)據(jù)包發(fā)往遠(yuǎn)程目的地之前,PAD設(shè)備可以修改數(shù)據(jù)包。為此,最常見的用法就是對數(shù)據(jù)包進(jìn)行加密,從而形成一個安全的網(wǎng)絡(luò)。用BACnet/IP組建BACnet互聯(lián)網(wǎng)。1999年1月,常設(shè)標(biāo)準(zhǔn)方案135委員會(SSPC135而PAD基礎(chǔ)上改進(jìn)、開發(fā)了新的互聯(lián)協(xié)議,稱為BACnet/IP,簡稱B/IP,作為BACnet標(biāo)準(zhǔn)附件J。B/IP路由器的主要作用就是直接將BACnet報文封裝進(jìn)IP幀中進(jìn)行傳輸。IP只取代BACnet標(biāo)準(zhǔn)體系結(jié)構(gòu)中的鏈路層和物理層,并重新定義了一個微協(xié)議層 (MicoProtocolLayer)。該微協(xié)議層稱為BACnet虛擬鏈路層,簡稱為BVLL位于BACnet網(wǎng)絡(luò)層與IP協(xié)議之間,其作用是進(jìn)行BACnet廣播管理,并提供向其他通信協(xié)議擴(kuò)展的擴(kuò)展機(jī)制。同時,為了充分利用IP協(xié)議棧,減少對 IP協(xié)議的影響,這種擴(kuò)展方式利用IP用戶數(shù)據(jù)報

(UDP)進(jìn)行BACnet信息傳輸。圖1為這種擴(kuò)展方式的體系結(jié)構(gòu)圖,該體系結(jié)構(gòu)圖即為BACnet/IP體系結(jié)構(gòu)。BACnet的層次OSI

BACnet的層次應(yīng)用層BACcet應(yīng)用層應(yīng)用層網(wǎng)絡(luò)層BACn巳t網(wǎng)絡(luò)層網(wǎng)絡(luò)層圖-1BACnet/IP體系結(jié)構(gòu)二、介紹BACnetIP開發(fā)經(jīng)驗分享----工具準(zhǔn)備篇。1網(wǎng)絡(luò)調(diào)試程序因為在BACnetIP開發(fā)中,開發(fā)者要時刻關(guān)心 BACnet數(shù)據(jù)包的狀態(tài),在這里僅給大家推薦2款串口監(jiān)視調(diào)試軟件。Ethereal這個工具很常見,在網(wǎng)絡(luò)上可以搜索到很多,筆者用的是比較舊的版本,剛剛開始 TCP/IP或者UDP/IP廣播網(wǎng)絡(luò)探索階段,基本上都是依靠該軟件,信息 分析結(jié)果比較可靠也比較權(quán)威,但是在特定環(huán)境下也是存在著分析結(jié)果不太準(zhǔn)確的狀況, 這就需要配合其他軟件一起使用,來分析誰對誰錯??赡苁枪P者使用的版本 太老的緣故,該工具無法解析 BACnet數(shù)據(jù)包。Wireshark筆者感覺在分析BACnetIP數(shù)據(jù)包方面,Wireshark還是比較簡單易用,它能夠解析絕大多數(shù)BACnet數(shù)據(jù)包格式,而且一個便利之處就在于您可以下載 BACnet開發(fā)前輩Save的BACnet開發(fā)中的數(shù)據(jù)結(jié)構(gòu)結(jié)果, 從中來分析BACnetIP數(shù)據(jù)的組成狀況,在初級開發(fā)階段,該工具相當(dāng)值得推薦,而且它會把 Ethernet數(shù)據(jù)包、BVLL層數(shù)據(jù)包、UDP數(shù)據(jù)包、IP數(shù)據(jù)包、BACnetNPDU、BACnetAPDU等所有層次的數(shù)據(jù)包都一層一層的分撥開來,分析起來層次關(guān)系相當(dāng)明晰。該工具在BACnet下載頁面中也有提供。Sniffer在談到網(wǎng)絡(luò)通訊數(shù)據(jù)包的捕捉方面, 好些年長的技術(shù)大佬都推薦 Sniffer,筆者沒有使用過該工具,如果您的開發(fā)環(huán)境發(fā)現(xiàn)其他的網(wǎng)絡(luò)監(jiān)視工具都不太理想的話,可以嘗試該工具。2數(shù)據(jù)包仿真軟件什么樣的BACnetIP數(shù)據(jù)包是準(zhǔn)確的符合BACnetIP協(xié)議標(biāo)準(zhǔn)的數(shù)據(jù)包,這個是初級開發(fā)人員時常困惑的問題,筆者在初步接觸BACnet的時候,也是無從下手,好在筆者開發(fā)的條件比較充足,手上不僅有一個標(biāo)準(zhǔn)的BACnetIPDDC,還有一些前輩已經(jīng)摸著石頭趟了一番BACnetIP開發(fā)的渾水,并且留下了一批槍支彈藥。2.1VTSVTS是BACnet開發(fā)認(rèn)證的官方測試工具, 功能很好很強(qiáng)大,但是由于文檔有限,很多功能都需要慢慢挖掘,不過在后續(xù)章節(jié)中,筆者會給大家詳細(xì)介紹 VTS,并以圖式的方式給大家一個VTS使用的快速入門。注:在BACnet官方認(rèn)證階段,BACnet是否符合BACnetBTL認(rèn)證標(biāo)準(zhǔn),也需要提供一個預(yù)先在 VTS中Pre-Scan的PICS腳本文檔,該文檔是BTL認(rèn)證的重要組成部分。2.2BACbeatBACbeat也是筆者開發(fā)中經(jīng)常用到的一款很不錯的 BACnet開發(fā)工具,他的數(shù)據(jù)包和數(shù)據(jù)分發(fā)方式,筆者認(rèn)為借鑒作用很大,不過也有一些弊端,后續(xù)會和大家分享。三、介紹BACnetIP開發(fā)經(jīng)驗分享--BACnetIP數(shù)據(jù)包篇。在BACnet中國技術(shù)聯(lián)盟的BACnet開發(fā)討論欄目中,已經(jīng)介紹了相關(guān)的數(shù)據(jù)包格式,這里主要是分享一下, BACnetIP數(shù)據(jù)包EncodingDecoding中的注意事項。其網(wǎng)站鏈接如下: 什么是BACnet/IP介紹,最權(quán)威的BACnet/IP中文版介紹(組圖)BACnetIP的實現(xiàn),按照實現(xiàn)的硬件平臺,可以分為設(shè)備級(在樓宇自動化行業(yè)中主要是在DDC上以Firmware的方式實現(xiàn))和PC級實現(xiàn)(主要是作為BACnetIP的配置工具或仿真、調(diào)試工具在個人電腦上以執(zhí)行文件 EXE的方式實現(xiàn)),在后續(xù)的章節(jié)中,我們都假設(shè)為后面的這種實現(xiàn)方式,即在PC上以配置、調(diào)試工具的方式在Windows上的實現(xiàn)。BACnetIP數(shù)據(jù)包的接收BACnetIP是建構(gòu)在UDP/IP協(xié)議棧之上的,BACnet協(xié)議在網(wǎng)絡(luò)通信上的實現(xiàn)。 為了進(jìn)行設(shè)備的路由和擴(kuò)展多網(wǎng)絡(luò)設(shè)備,引入了BVLL的概念,也就是BACnet虛擬邏輯鏈路層。引入該微型協(xié)議的目的就是實現(xiàn)跨不同網(wǎng)絡(luò)的設(shè)備管理,包括廣播消息、以及注冊外網(wǎng)設(shè)備(ForeignDevice),并且引入了BACnet廣播管理設(shè)備BBMD、和廣播分發(fā)表Broadcast-Distribution-Table的概念,就是為了 兼容不同網(wǎng)絡(luò)設(shè)備之間的通訊。涉及到BACnetIP數(shù)據(jù)包的接收,則要求BACnetIP開發(fā)技術(shù)人員具有一定的網(wǎng)絡(luò)開發(fā)經(jīng)驗,為了接收BACnet數(shù)據(jù)包,首先要建立一個在 0xBAC0端口下的UDP/IP的Socket綁定,此處提醒開發(fā)人員就是為了能夠復(fù)用該 BACnet規(guī)定必須支持通訊端口 0xBAC0,開發(fā)人員應(yīng)該建立一個包括選項為 SO_REUSEADDR的Socket,并且為了能夠進(jìn)行廣播消息傳輸要添加上SO_BROADCAST的Socket選項。完成了建立Socket,設(shè)定了Socket選項,并且bind到一個端口,則進(jìn)入recvfrom的阻塞式監(jiān)聽狀態(tài)就可以了,然后根據(jù)進(jìn)來的數(shù)據(jù)包包頭來篩選出BACnet數(shù)據(jù)包,后續(xù)進(jìn)行廣播數(shù)據(jù)、本地數(shù)據(jù)的分類解碼, 根據(jù)不同的BVLL->NPDU->APDU 的層層處理,如果有應(yīng)答需求,把組好的 BACnet數(shù)據(jù)包再放到發(fā)送線程處理。那數(shù)據(jù)包如何接收合適呢,最簡單的解釋就是只要不影響您的 OS系統(tǒng)的其他任務(wù)的運行,采樣越快越好,這樣才不會造成通訊過程中數(shù)據(jù)包的丟失。BACnetIP數(shù)據(jù)包的發(fā)送數(shù)據(jù)包的發(fā)送小節(jié),主要是介紹 BACnetIP的非分段數(shù)據(jù)包發(fā)送過程。做為一個BACnetIPServer,有兩種數(shù)據(jù)包的發(fā)送方式,一種是對于每一個接收到的 Socket數(shù)據(jù)建立一個,接收->解析->發(fā)送的線程,處理整個Socket的生命周期內(nèi)的事務(wù);另一種方式是建立幾個獨立的循環(huán)狀態(tài)機(jī),分別去處理接收 ->解析->發(fā)送的各個事務(wù),把Socket的連接作為這些狀態(tài)機(jī)的一個參數(shù)傳入各個 BACnetIP狀態(tài)機(jī)進(jìn)行循環(huán)處理,直到發(fā)送完數(shù)據(jù)結(jié)束該UDP/IP連接的生命周期。兩種方式只要處理得當(dāng),都是BACnetIPServer狀態(tài)機(jī)的不錯選擇。BACnetIP數(shù)據(jù)包的發(fā)送,其BVLL數(shù)據(jù)包頭部分,如果在消息優(yōu)先級上沒有特殊處理,可以直接反過程接收的BVLL數(shù)據(jù)包頭數(shù)據(jù)即可四、介紹BACnetIP開發(fā)經(jīng)驗分享----狀態(tài)機(jī)篇。在BACnetMS/TP協(xié)議定義了3個有限狀態(tài)機(jī)。一個是接收數(shù)據(jù)幀狀態(tài)機(jī)(BACnetReceiveFrameFiniteStateMachine),2一個是Master節(jié)點狀態(tài)機(jī)(BACnetMasterNodeFiniteStateMachine),3一個是Slave節(jié)點狀態(tài)機(jī)(BACnetSlaveNodeStateMachine)。詳情參見相關(guān)的鏈接: 【百度谷歌原創(chuàng)排行榜-原創(chuàng)系列-置頂推薦】【絕對原創(chuàng)】BACnetMS/TPFF發(fā)經(jīng)驗分享系列-003狀態(tài)機(jī)篇(組圖)而在BACnetIP部分,BACnet技術(shù)協(xié)會并沒有給出一個嚴(yán)格的BACnetIP的官方狀態(tài)機(jī)的開發(fā)指導(dǎo),簡單分析原因在于BACnetIP的主要OSI映射部分,數(shù)據(jù)鏈路層和物理層是建構(gòu)在成熟的UDP/IP基礎(chǔ)上的,而BVLL只是一個簡單的微協(xié)議,主要目的是實現(xiàn)BACnet協(xié)議開發(fā)互聯(lián)的要求,能夠?qū)⑵渌煌W(wǎng)絡(luò)的設(shè)備掛接至ijBACnetIPServer上,在這里只簡單介紹BACnetIPBVLL的Original-Unicast-NPDU,也就是在相同子網(wǎng)絡(luò)內(nèi)部的設(shè)備直接的互聯(lián)。BVLL很大程度上Follow的是以太網(wǎng)Ethernet的封裝方式,只是一個增強(qiáng)版的Ethernent的邏輯鏈路層部分。下面就簡單介紹一下BVLL的組成。圖形化表示如下所示,BVLL長度描述1字節(jié)0x81代表BACnet/IP的BVLL功能碼1字節(jié)0x0a代表Original-Unicast-NPDU,非廣播的本地網(wǎng)絡(luò)數(shù)據(jù)長度2字節(jié)該長度為整個BACnet/IP數(shù)據(jù)包的長度,包括BVLL的類型、功能碼、長度和NPDU勺長度數(shù)據(jù)區(qū)N字節(jié)后面NPDU勺數(shù)據(jù)包或網(wǎng)絡(luò)分發(fā)表數(shù)據(jù)或Foreign設(shè)備注冊信息為了BACnet開發(fā)的統(tǒng)一性,在BACnetIP中同樣可以模仿BACnetMS/TP的結(jié)構(gòu),定義出接收狀態(tài)機(jī)和主節(jié)點處理狀態(tài)機(jī),來完成 BACnetIPServer和Client之間的交互。只是接收狀態(tài)機(jī)中的串口接收部分要轉(zhuǎn)換成以 Socket為主的UDP/IP接收部分,主狀態(tài)機(jī)部分的時序控制主要根據(jù)Client的接入順序和NPDU中的消息優(yōu)先級部分進(jìn)行排序處理,并在發(fā)送數(shù)據(jù)封包處理程序中進(jìn)行 Socket的分發(fā)處理,完成一個服務(wù)器和客戶端 的數(shù)據(jù)交換過程。在BACnetIP開發(fā)經(jīng)驗分享的本章節(jié)中,給大家介紹 BACnet開發(fā)--UDP/IP傳輸篇。在BACnet串口傳輸這個章節(jié)中,重點給大家介紹兩部分內(nèi)容。1BACnet數(shù)據(jù)包的接收部分BACnet/IP的數(shù)據(jù)通訊架構(gòu)在UDP/IP通訊協(xié)議之上,它的優(yōu)點是數(shù)據(jù)包的傳輸效率高,沒有太多的多余數(shù)據(jù)包信息,缺點是 UDP/IP屬于無連接的、非安全性的數(shù)據(jù)傳輸協(xié)議,不排除有丟包、錯誤數(shù)據(jù)包的情況發(fā)生,這就要求 BACnet協(xié)議的應(yīng)用層去進(jìn)行相關(guān)的處理,添加Retry機(jī)制,保障數(shù)據(jù)通 訊的穩(wěn)定和安全性。當(dāng)BACnet/IP作為服務(wù)器端運行時,要保障有一個的比較大的網(wǎng)絡(luò)吞吐量,則一方面要有一個運行速度足夠強(qiáng)大的BACnet運行的硬件系統(tǒng),另一方面要對每一個呼入的BACnet客戶端進(jìn)行多線程的處理,保障每一個BACnetClient的請求都能夠在BACnetClient的允許時間內(nèi)給出解析和應(yīng)答。BACnet數(shù)據(jù)包的發(fā)送部分在BACnet數(shù)據(jù)包的發(fā)送部分,如果 BACnet數(shù)據(jù)包字節(jié)個數(shù)不是很多的話,最好一次性的輸出。防止UDP/IP數(shù)據(jù)包在下層傳輸時,如果跨越 BACnet或標(biāo)準(zhǔn)Ethernet路由器,而造成應(yīng)答的分段數(shù)據(jù)包不能按照順序到達(dá),還需要在接受端進(jìn)行數(shù)據(jù)包的分組和排序加重BACnet設(shè)備的通訊 處理時間和負(fù)載。BACnet開發(fā)注意事項:在 BACnet/IP數(shù)據(jù)包傳輸過程中,數(shù)據(jù)的處理要進(jìn)行預(yù)期的篩選和判斷,防止無效的數(shù)據(jù)過多的影響后面的BACnet狀態(tài)機(jī)狀態(tài),造成 BACnet設(shè)備CPU的Loading過高,影響其他事務(wù)的處理過程。五、介紹BACnetIP開發(fā)經(jīng)驗分享 優(yōu)化篇。在Windows操作系統(tǒng)中,如何實現(xiàn) BACnet/IP狀態(tài)機(jī)BACnet/IP協(xié)議屬于BACnet協(xié)議的AnnexJ的附錄部分程序,在最新版本的BACnet協(xié)議2008版本中,還沒有一個規(guī)范化的BACnetIP的狀態(tài)機(jī)。而市場上主流的BACnet廠商都已經(jīng)提供了BACnet/IP的設(shè)備,所以如何實現(xiàn)一個 BACnet/IP的狀態(tài)機(jī)才能和眾多的樓宇自動化廠商的BACnet設(shè)備正常通訊。這就需要相關(guān)的樓宇自動化行業(yè)經(jīng)驗和依靠BACnet咨詢培訓(xùn)機(jī)構(gòu)的指導(dǎo)。筆者多年的BACnet開發(fā)經(jīng)驗告訴大家,工欲善其事,必先利其器,擁有一個經(jīng)驗豐富的BACnet研發(fā)團(tuán)隊,更需要一個高瞻遠(yuǎn)矚的BACnet開發(fā)架構(gòu)師。如果想得到更好的BACnet設(shè)備兼容性,一方面要保證狀態(tài)機(jī)設(shè)計規(guī)范,嚴(yán)格遵守 BACnet協(xié)議規(guī)定,另一方面要有豐富的BACnet設(shè)備、網(wǎng)絡(luò)設(shè)備的TCP/IP,UDP/IP的調(diào)試經(jīng)驗,具體問題具體分析,針對特定的應(yīng)用環(huán)境設(shè)計不同的BACnet/IP狀態(tài)機(jī)。如何提高BACnet設(shè)備的數(shù)據(jù)訪問速度由于BACnet/IP的特性是架構(gòu)在Ethernet網(wǎng)絡(luò)環(huán)境中,這一特性和 BACnetMS/TP比起來就有很大的優(yōu)勢,不像 RS-485串行接口那樣,只能通過令牌環(huán) Token的模式,保障 BACnet設(shè)備通訊的正常進(jìn)行。BACnet/IP可以充分利用當(dāng)前的不斷升級的網(wǎng)絡(luò)運行環(huán)境,從100base的以太網(wǎng)到1000base的以太網(wǎng),以及目前正在普及的光纖網(wǎng)絡(luò),這些都保障了BACnet/IP可以達(dá)到幾倍于、幾十倍于 BACnetMS/TP網(wǎng)絡(luò)模式的數(shù)據(jù)訪問吞吐量。如何提高 BACnet設(shè)備的數(shù)據(jù)訪問速度的問題就只是在 BACnet軟件

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論