教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 综合文档 >

BACnet网络讲义(DOC)(4)

来源:网络收集 时间:2026-08-08
导读: 传输层实现,而是由应用层来完成。并且,在BACnet中只有Confirmed-Request和Complex-ACK报文可能需要分段,因此分段还是BACnet的一个可选特性。 1.报文分段的原则 每个由BACnet报文编码而成的数据流序列,按下面规

传输层实现,而是由应用层来完成。并且,在BACnet中只有Confirmed-Request和Complex-ACK报文可能需要分段,因此分段还是BACnet的一个可选特性。

1.报文分段的原则

每个由BACnet报文编码而成的数据流序列,按下面规则进行分段,然后再在网上传输。

① 一个完整的报文尽可能作为一个APDU发送。

② 当一个完整的报文不可能作为一个APDU发送时,则应分段成最少个数的多个APDU发送。

③ 一个报文分段的长度(以bit为单位)应是8的整数倍,即对报文进行分段时,字节是最小的分割单位。

2.BACnet APDU最大长度的确定

在BACnet中,APDU的长度也是没有固定的,而是定义了一个确定APDU最大长度的原则,即APDU最大长度应是以下长度值中的最小值:

① 设备所能发送的APDU的最大长度。一般与本地设备的缓冲区大小等本地因素有关。

② BACnet网际网所能传输到远地设备的APDU的最大长度。一般由本地、远地,以及中间传输网络的数据链路所决定。

③ 远地设备所能接收的APDU的最大长度,其值不能小于50个字节。 3.与分段有关的协议控制信息(PCI)

为了支持报文分段,BACnet 协议在BACnet-Confirmed-Request-PDU和BACnet-ComplexACK-PDU的头部,定义了四个与分段有关的协议控制信息参数。其中两个是布尔型参数,另两个是八位二进制无符号整数。这些参数可以使接收方对到达的分段进行正确的重组,从而保证端到端的可靠传输。

§2.4 BACnet APDU的传输

BACnet的APDU收发协议的详细细节,包含在BACnet复杂的事务状态机制(TSM:Transaction State Machine)中,以下的讨论旨在对几种主要APDU的传输过程有整体的认识。

2.4.1证实请求报文的传输

客户端设备在传输了一个完整未分段的证实请求报文(Confirmed-Request Message)后,或在等待接收分段证实请求报文最后一个分段所对应的确认信息时,将启动一个计时器。该计时器用来计量对请求报文回应的时间。一旦收到了针对该请求报文所发的出错APDU、拒绝APDU、放弃APDU、简单回应APDU或复杂回应APDU,则停止计时,同时通知客户应用程序。如果计时器的时间值超出了客户设备对象的APDU_TimeOut属性值,则整个报文重新发送,计时器重新计时。所有报文的超时重传均按此过程进行,直至重传次数超出了客户端设备对象?APDU重传次数?属性所规定的次数。若超出规定值仍未收到响应,该报文将被丢弃,同时通知客户应用程序。

2.4.2分段证实请求报文的传输

客户端设备在发送分段证实请求(Segmented Confirmed-Request Message)PDU的第一个分段之前,首先选择一个预设窗口值,以表示它在收到一个分段回应之前,一次准备发送的报文分段最大个数。它通常由报文分段的?建议窗口尺寸?参数表示,取值范围为1至127,在该处其具体取值只与客户端有关。在传输完第一个分段后,客户端设备将启动一个计时器,用来计量对报文分段回应的时间。一旦收到了针对该报文分段所发的拒绝APDU、放弃APDU或分组回应APDU,则停止计时,同时通知客户应用程序。如果计时器的时间值超出了客户设备对象的APDU_Segment_TimeOut属性值,则这个分段将重新发送,计时器重新计时。所有报文分段的超时重传均按此过程进行,直至重传次数超出了客户端设备对象中?APDU重传次数?属性所规定的次数。若超出规定值仍未收到响应,该报文将被丢弃,同时通知客户应用程序。

当服务端设备收到分段证实请求PDU的第一个分段后,将会选择一个实际窗口值,以表示它在发送一个分段回应前,一次准备接收的报文分段最大个数。同样,该值的取值范围也规定在1至127之间,同时它还不能大于证实请求PDU中的预设窗口值,在该处其具体取值只与服务器端有关。

在收到第一个分组回应APDU后,客户端设备从中得到服务器端设备的实际窗口值,并将该值设置成它的实际窗口值。这样,客户端设备和服务器端设备的实际窗口值大小一致。客户端便可以在收到一个分段回应APDU之前,一次发送多个分段;服务器端也可以在发送一个分段回应APDU之前,一次接收多个分段。客户端发送完整个报文或发送了窗口值个数的多个分段后,将启动一个计时器,用来计量对这些报文分段回应的时间。一旦收到了针对这些报文分段所发的拒绝APDU、放弃APDU或分组回应APDU,则停止计时。如果计时器的时间值超出了客户设备对象的APDU_Segment_TimeOut属性值,则这些分段将重新发送,计时器重新计时。所有报文分段的超时重传均按此过程进行,直至重传次数超出了客户端设备对象中?APDU重传次数?属性所规定的次数。若超出规定值仍未收到响应,该报文将被丢弃,同时通知客户应用程序。

客户端在发送分段的过程中,可能会收到拒绝APDU、放弃APDU或分段回应APDU。在这种情况下,收到拒绝APDU或放弃APDU将会中止请求的传输;收到分段回应APDU,将会作为序号等于或小于该APDU中分段数参数值的所有分段的确认,而那些没有被确认的分段将按上述过程重传。

2.4.3分段复杂回应报文的传输

分段复杂回应报文(Segmented ComplexACK Message)的传输过程与分段证实请求报文的传输过程相类似,主要不同之处在于:

① 在分段复杂回应报文的传输过程中,由服务器端设备发送复杂回应报文的分段,由客户端设备接收并发分段回应APDU

② 在分段复杂回应报文的传输过程中,客户端设备只能回应放弃APDU或分段回

APDU,而不能回应拒绝APDU。 2.4.4分段回应APDU的传输

分段回应APDU是分段接收方设备用来回应发送方的信息。在以下四种情况下,设备需传输一个SegmentACK。

① 设备收到报文的第一个分段。

② 设备收到未确认的、有序的、数量为实际窗口值的多个报文分段构成的序列。 ③ 设备收到一个乱序分段报文(可能表明丢失了某个分段)。 ④ 设备收到报文的最后一个分段。

§2.5 与传输有关的其它问题 2.5.1事务状态机制的中止

在一个证实请求的服务过程中,客户端与服务器端都将创立各自的事务状态机制,以便针对各种情况分别进行处理。该事务状态机制的终止由一些条件所决定。

对于客户端,当出现以下几种情况时,事务处理终止,同时结束该事务状态机制。 ① 当收到服务器端设备发来的简单回应、不分段复杂回应、出错、拒绝或放弃APDU时。

② 收到服务器发来的分段复杂回应APDU的最后一个分段,并发送了相应的分段回应APDU后。

③ 当超时重传次数用尽后。

④ 在向服务器发送了包含该事务处理过程标志符的放弃APDU后。 对于服务器端当出现以下几种情况时,将终止事务处理,同时结束该事务状态机制。 ① 当向客户端设备发送完简单回应、不分段复杂回应、出错、拒绝或放弃APDU后。 ② 当收到客户端设备发来的针对分段复杂回应APDU的最后一个分段的回应APDU后。

③ 当接收到客户端发来的包含该事务处理过程标志符的放弃APDU后。 ④ 在传输一个分段复杂回应APDU的过程中,超时重传次数达到规定值仍未成功时。

2.5.2重复报文的处理

在一个事务处理过程中,由于使用了BACnet的出错重传机制,设备不可避免的会接收到重复的报文或报文分段。对此,BACnet协议中是按以下各种可能出现的情况分别处理的。

① 服务器接收到一个重复的证实请求报文。这时,如果服务器具 …… 此处隐藏:1996字,全部文档内容请下载后查看。喜欢就下载吧 ……

BACnet网络讲义(DOC)(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/403808.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)