文章目录
写在前面
又拖更了,对不起各位看官老爷了。实在是年后事情多,加上家属出差,只能先忙一忙其它的事情了。
3 BACnet APDU的传输
3.1 需确认的请求报文传输
客户端在发送需确认的请求报文之后,客户端将启动计时器。在收到关于需确认的请求报文的差错APDU、拒绝APDU、中止APDU、简单确认APDU或复杂确认APDU,则停止计时,并通知客户应用程序。如果计时器的时间超过了客户设备对象中的APDU超时(也就是device object里面的APDU_TimeOut属性,在客户端启动BACnet之前,该值必须被初始化进行设置),则重新发送该报文,同时计时器重新计时。所有需确认的请求报文的超时发送次数达到客户端设备对象的APDU重发次数(也就是客户端的device object里面的Number_Of_APDU_Retries属性,此属性也需要在启动BACnet之前进行设置),此时该报文将被丢弃,并通知客户端的应用程序。红字里面的两个属性值也需要在一些调试工具中需要进行设置,比如yabe,读到这里,就知道为什么要设置这些值以及这些值代表的是什么意思了。
数据的传输流程如下所示
3.2 分段的需确认请求报文的传输
分段的请求报文与没有分段请求报文的区别在于:
-
最大的区别不用说,就是分段,分段请求报文需要发多次才能完成一个请求报文的传输
-
分段的请求报文会用第一包数据中在客户端(也就是发送请求的设备)和服务端(也就是回复请求的设备)之间对每包数据传输大小(1~127)进行一个协商,也就是会存在这样一次对话:
- 客户端在第一包数据中会说:我一包能传这么多数据,你能行不?
- 服务端会在第一包数据的回复中说:
- (一种回复)我是男人,当然行,我能收的比你多,但你就能传那么多数据,就按你能传的最多的来吧!(也就是服务端你在man,在能收,也不能告诉客户端发送超过它最大发送值的值)
- (另一种回