BACnet通讯分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BACnet通讯

1、概述.

系统实现基于BACnet/IP(又称B/IP)网络进行通讯。BACnet虚拟链路层(BVLL)提供了BACnet网络层和某指定的通讯子系统的接口,本文指定了BACnet虚拟链路控制(BVLC)要求支持的定向和广播信息。本实现关于BACnet协议定义主要可分为三层:B/IP网络虚拟层,BACnet 网络层和BACnet应用层。B/IP提供了TCP/IP一样的通讯结构,采用UDP的通讯方式。本文接下

来将对此三层结构进行详细的讲解。

控制字:BIT7:1表示MessageType存在,为0时MessageType不存在

BIT6:保留,为0

BIT5:1表示DNET DLENHopCount存在,当DLEN为0时表明广播网络

DADR不存在;0表示DNET DLENDADRHopCount不存在

BIT4:保留,为0

BIT3:1表示SNET SLEN存在,当SLEN为0时表明无效SADR不存在;

0表示SNET SLENSADRHopCount不存在

BIT2:1表示为一个需确认的请求数据单元,一复杂ACK数据单元或一网络层

信息非reply的;0表示除去上述情形的数据单元

BIT1、0:网络优先级

11=LifeSafetymessage

10=CriticalEquipmentmessage

01=Urgentmessage

00=Normalmessage

目标网络号:FFFF的时候表示广播

目标长度:表示DADR的长度

目标地址:目标网络MAC地址

原网络号:同目标网络号

confirmed-request-PDU [0]BACnet-Confirmed-Request-PDU, unconfirmed-request-PDU [1]BACnet-Unconfirmed-Request-PDU, simpleACK-PDU [2]BACnet-SimpleACK-PDU,

complexACK-PDU [3]BACnet-ComplexACK-PDU,

segmentAck-PDU [4]BACnet-SegmentACK-PDU,

error-PDU [5]BACnet-Error-PDU,

reject-PDU [6]BACnet-Reject-PDU,

abort-PDU [7]BACnet-Abort-PDU

}

对于本次应用,主要用到了

BACnet-Confirmed-Request-PDU(需确认的请求协议数据单元)BACnet-Unconfirmed-Request-PDU(无需确认的请求协议数据单元)

BACnet-ComplexACK-PDU(复杂的ACK命令)

BACnet-Error-PDU(报错的协议数据单元)对于上述几种数据的分类主要根据pdutype(下文进行讲解)进行判定。

4.1. BACnet-Confirmed-Request-PDU的结构:

BACnet-Confirmed-Request-PDU::=SEQUENCE

{

pdu-type [0]Unsigned(0..15),--0forthisPDUtype

segmented-message [1]BOOLEAN,

more-follows [2]BOOLEAN,

segmented-response-accepted [3]BOOLEAN,

reserved [4]Unsigned(0..3),--mustbesettozero

MaxResp (0..15) (SizeofMaximumAPDUacceptedper20.1.2.5)

InvokeID (0..255)

SequenceNumber (0..255) OnlypresentifSEG=1

ProposedWindowSize (1..127) OnlypresentifSEG=1 ServiceChoice BACnetConfirmedServiceChoice

ServiceRequest VariableEncoding

SEG:指出当前的数据单元是否为完整的还是为一部分分段信息

MOR:指出是否还有更多的分段信息

SA:为1时指出将收到一个复杂的回应(complexack)

MaxSegs:指出设备将要接收到多少分段信息

B'000' Unspecifiednumberofsegmentsaccepted.

B'001' 2segmentsaccepted.

B'010' 4segmentsaccepted.

B'011' 8segmentsaccepted.

B'100' 16segmentsaccepted.

B'101' 32segmentsaccepted.

B'110' 64segmentsaccepted.

B'111' Greaterthan64segmentsaccepted.

MaxResp:指出将收到的(APDU)最大长度

B'0000' UptoMinimumMessageSize(50octets)

B'0001' Upto128octets

B'0010' Upto206octets(fitsinaLonTalkframe)

B'0011' Upto480octets(fitsinanARCNETframe)

createObject (10),

deleteObject (11),

readProperty (12),

readPropertyConditional (13),

readPropertyMultiple (14),

readRange (26),

writeProperty (15),

writePropertyMultiple (16),

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

}

上述标记为红色的表示本次应用中所用到的,所以只对这些进行讲解。

可以根据BACnetConfirmedServiceChoice找到相对应的Request或者Ack的数据的结构

相关文档
最新文档