首页 理论教育BACnet标准及楼宇自控系统技术的传输

BACnet标准及楼宇自控系统技术的传输

【摘要】:所有有证实请求报文的超时重发过程都按照上述过程进行,直至重发次数超出了客户端设备对象的APDU重发次数属性所规定的次数。一旦收到了一个关于这个还没有确认的有证实请求报文分段所发的差错APDU、拒绝APDU、中止APDU或分段确认APDU,则停止计时。分段确认APDU的传输分段确认APDU是分段接收方设备用来确认发送方的信息。

1.有证实请求报文的传输

客户端设备在下列两种情况下将启动一个计时器,用来计量对所关注的报文确认的时间。这两种情况是:①传输了一个完整未分段有证实请求报文后;②在等待接收分段有证实请求报文最后一个分段所对应的分段确认报文的确认信息时。一旦收到了一个关于那个还没有确认的有证实请求报文所发的差错APDU、拒绝APDU、中止APDU、简单确认(SimpleACK)APDU或复杂确认(ComplexACK)APDU,则停止计时,同时通知客户应用程序。如果计时器的时间值超出了客户设备对象的APDU超时(APDU_TimeOut)属性值,则整个有证实请求报文重新发送,计时器重新计时。所有有证实请求报文的超时重发过程都按照上述过程进行,直至重发次数超出了客户端设备对象的APDU重发次数(Number_Of_APDU_Retries)属性所规定的次数。若超出规定值仍未收到响应,该报文将被丢弃,同时通知客户应用程序。

2.分段的有证实请求报文的传输

客户端设备在发送分段的有证实请求PDU的第一个分段之前,首先选择一个预设窗口尺寸值,以表示它在收到一个分段确认报文之前,一次准备发送的报文分段最大个数。预设窗口尺寸值的选取由开发者自己决定,这只与客户端设备有关,但是其取值范围限制在1~127。这个值由有证实请求PDU分段的‘预设窗口尺寸’参数表示,并且同一报文的每个分段该参数值都应该相同。

在发送了有证实请求报文的第一个分段后,客户端设备将启动一个计时器,用来计量对该分段确认的时间。一旦收到了一个关于这个还没有确认的有证实请求报文分段所发的差错APDU、拒绝APDU、中止APDU或分段确认APDU,则停止计时。如果计时器的时间值超出了客户设备对象的APDU分段超时(APDU_Segment_Timeout)属性值,则重发这个分段,并将计时器置零,重新计时。所有分段的超时重发过程都按照上述过程进行,直至重发次数超出了客户端设备对象中APDU重发次数属性所规定的次数。若超出规定值仍未收到响应,整个报文将被丢弃,同时通知客户应用程序。

服务器端设备收到分段的有证实请求PDU报文的第一个分段后,将会选择一个实际窗口尺寸(Actual Window Size)值,以表示它在发送一个分段确认报文之前,一次准备接收的报文分段最大个数。实际窗口尺寸值的选取由开发者自己决定,这只与服务器设备有关,但是它还不能大于有证实请求PDU中的‘预设窗口尺寸’参数值,而且其取值范围限制在1~127。对同一有证实请求报文所回应的所有分段确认报文,其实际窗口尺寸值都应该相同。需要特别说明的是,不管实际窗口尺寸值是多少,服务器设备在收到有证实请求报文的第一个分段后,应立即响应一个分段确认报文。

在收到第一个分段确认APDU后,客户端设备得到该报文中携带的‘实际窗口尺寸(actual-window-size)’参数值,并将该值设置成客户设备自己的实际窗口尺寸。当客户端设备正在发送一个有证实请求报文分段序列的过程中,即使需要确认的分段数量小于实际窗口尺寸值,都可能会收到拒绝APDU、中止APDU或分段确认APDU。

3.分段的复杂确认报文的传输和分段确认APDU的传输

(1)分段的复杂确认报文的传输

服务器端设备在发送分段复杂确认PDU的第一个分段之前,首先选择一个预设窗口尺寸值,以表示它在收到一个分段确认报文之前,一次准备发送的报文分段最大个数。预设窗口尺寸值的选取由开发者自己决定,这只与服务器端设备有关,但是其取值范围限制在1~127。复杂确认PDU的每一个分段中都有一个‘预设窗口尺寸(proposed-window-size)’参数,携带服务器端设备的预设窗口尺寸值,并且同一报文的每个分段的这个参数值都应该相同。

在传输完第一个分段后,服务器端设备将启动一个计时器,用来计量对该报文分段确认的时间。一旦收到了一个关于这个还没有确认的复杂确认报文分段所发送的中止APDU或分段确认APDU,则停止计时。如果计时器的时间值超出了服务器设备对象的APDU分段超时属性值,则重发这个分段,并将计时器置零,重新计时。所有分段的超时重发过程都按照上述过程进行,直至重发次数超出了服务器端设备对象中APDU重发次数属性所规定的次数。若超出规定值仍未收到响应,整个报文将被丢弃。

当客户端设备收到分段的复杂确认APDU报文的第一个分段后,将会选择一个实际窗口尺寸值,以表示它在发送一个分段确认报文以前,一次准备接收的报文分段最大个数。实际窗口尺寸值的选取由开发者自己确定,这只与客户设备有关,但是它不能大于复杂确认PDU中的‘预设窗口尺寸’参数值,而且其取值范围限制在1~127。对同一复杂确认的所有分段确认,其实际窗口尺寸参数值都应该相同。需要特别说明的是,不管实际窗口尺寸是多少,客户端设备在收到复杂确认报文的第一个分段后,就应立即发送一个分段确认报文。

在收到一个分段确认APDU后,服务器端设备得到该报文中携带的‘实际窗口尺寸’参数值,并将该值设置成服务器设备自己的实际窗口尺寸。服务器端在发送复杂确认报文分段的过程中,即使需要确认的分段数量小于实际窗口尺寸值,都可能会收到中止APDU或分段确认AP-DU。

(2)分段确认APDU的传输

分段确认APDU是分段接收方设备用来确认发送方的信息。在以下4种情况下,设备应传送一个分段确认报文:

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

2)设备收到未确认的、有序的、数量为实际窗口尺寸的多个报文分段构成的序列。

3)设备收到一个乱序分段报文(可能表明丢失了某个分段)。

4)设备收到报文的最后一个分段。

4.重复的APDU和报文分段

(1)客户端事务处理状态机的中止

当使用BACnet标准定义的差错重传机制时,在报文传输的交互处理中,必然存在收到重复报文或分段的可能。在客户端,当发送了有证实请求APDU报文(或报文的第一个分段)之后,将创建事务处理状态机,进行事务处理。当出现以下4种情况之一时,客户端的事务处理中止,同时结束该事务处理状态机:

1)当收到服务器端设备发来的、包含有这个事务处理的调用标识符(invokeID)的5种报文时。这5种报文分别是:简单确认APDU、不分段的复杂确认APDU、差错APDU、拒绝APDU和中止APDU。

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

3)当超时重传次数用尽后。

4)在向服务器发送了包含有该事务处理的调用标识符的中止APDU后(例如,客户端中止这个事务处理)。

(2)服务器端事务处理状态机的中止

在服务器端,当收到了证实请求APDU报文(或报文的第一个分段)之后,将创建事务处理状态机,进行事务处理。当出现以下4种情况之一时,服务器端的事务处理中止,同时结束该事务处理状态机:

1)当向客户端设备发送完成包含有这个事务处理的调用标识符的5种报文时。这5种报文分别是:简单确认APDU、不分段的复杂确认APDU、差错APDU、拒绝APDU和中止APDU。

2)当收到客户端设备发来的关于分段的复杂确认APDU最后一个分段的分段确认APDU之后。

3)当接收到客户端发来的包含有该事务处理调用标识符的中止APDU后。

4)在传输一个分段的复杂确认APDU的过程中,超时重传次数达到规定值仍未成功时。

(3)重复报文的处理

重复报文或重复报文分段的处理过程如下:

1)当服务器接收到一个重复的有证实请求报文时,如果服务器具有识别重复的有证实请求报文的能力,则该重复的报文将被服务器丢弃。否则,服务器仍然响应这个重复的有证实请求报文,在这种情况下,客户将根据这个服务器响应报文中的调用标识符不与任何一个当前的事务处理状态机绑定这个情况,而丢弃这个响应报文。

2)当服务器接收到一个重复的有证实请求报文分段,即已经收到并针对该分段发送了分段确认报文时,服务器将丢弃这个重复的分段,并回传一个合适的分段确认APDU。

3)当客户接收到一个重复的复杂确认报文分段,即已经收到并针对该分段发送了分段确认报文时,客户将丢弃这个重复的分段,并回传一个合适的分段确认APDU。

4)当一个设备接收到一个重复的分段确认APDU时,该设备将丢弃这个重复的分段确认AP-DU。