BACNET協議詳細分析(三)——WHO IS & I AM指令


下文開始具體分析BACNET協議中幾種基本的指令結構,本篇是分析最基本的WHO IS指令。WHO IS指令是BACNET主機向BACNET設備詢問基本信息的指令。

由於BACNET/IP協議是封裝在UDP協議當中,因此整個數據包的從低層到高層的結構如下圖所示:

在經過以太網幀、IP幀、UDP幀后,就是BACNET的數據幀。

BACNET數據幀又分為BACNET Virtual Link Control(BACNET虛擬鏈接控制層)、Network Protocol Data Unit ( 網絡協議數據單元 )、Application Protocol Data Unit(應用協議數據單元 )。

BVLC是說明BACNET協議的類型、指令、以及BVLC自身的長度,總長度為4字節。

NPDU是說明版本及一些相關的控制信息,如下圖示:

APDU是說明用戶的指令信息。

以下解析一下who is 指令的數據包結構,一些關於各個控制字節的詳細說明需要大家參考BACNET的官方說明書,因此一個控制字節往往是8個位都有意義,在博文中解析起來相當難,大家原諒哈。

who is數據包(只含BACNET協議,UDP協議已去除)

-----BVLC-------

81  代表BACNET/IP

0B  廣播

00  包長度

0C

----NPDU------

01  協議版本號

20  控制信息

FF  目的網絡地址

FF

00  目的MAC層地址長度

FF  包長度

-----APDU-----

10  APDU類型:不確認應答(unconfirmed REQ)

08  who is指令

 

 

與who is對應的i am指令數據包:

 

-----BVLC-------

81  代表BACNET/IP

0A  單播

00  包長度

0C

----NPDU------

01  協議版本號

00  控制信息

-----APDU-----

10  APDU類型:不確認應答(unconfirmed REQ)

00  i am指令

C4  APPLICATION TAG(這個標識會留在以后的章節講,連BACNET協議的起草人都在博客中說APPLICATION TAG和CONTEXT TAG是整個協議最難以明白的部分) 

02  以下4字節為對象類型以及其ID號,在這里的對象類型為“設備(DEVICE)",ID號(INSTANCE NUMBER)是各設備獨有的ID號

00

01

C8

22  APPLICATION TAG

04  最大可接收的數據長度

00

91  APPLICATION TAG

00  是否支持數據分段

21  APPLICATION TAG

7B  生產商ID

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM