MSTP支持扩展帧设备与旧设备的互操作问题

最早的BACnet MS/TP设计只支持NPDU长度到501字节,大幅地小于IP与Ethernet链路层的1497字节长度。这限制了MS/TP的传输效率,增加了应用层的复杂度,特别当两个IP或Ethernet子网通过MS/TP子网连接在一起的时候。

扩展帧设计用于解决这个问题。标准附录此处可见. 简要地说, 此附录增加了两种帧类型:

  • 32: BACnet扩展帧须应答
  • 33: BACnet扩展帧无须应答

帧类型32由帧类型5(BACnet帧须应答)扩展而来,特殊之处在于它以COBS规则编码及NPDU长度为502到1497字节。

同样地,帧类型33由帧类型6 (BACnet帧无须应答)扩展而来。

扩展帧支持从修订版16开始正式引入标准。但是现场及市场上仍然有大量的旧设备不支持。支持扩展帧设备与旧设备之间的互操作性值得探讨。

  • 非路由旧设备与支持扩展帧设备:因为所有发往旧设备的NPDU都是应用层包,在旧设备的Device对象或发出的确认服务请求中的”最大可接受APDU长度”参数限制了NPDU包的大小,所以这种配置没有问题。
  • 旧路由与支持扩展帧设备: 须经由旧路由转发到其它子网的NPDU,如果其长度超过501字节将无法被旧路由识别而丢弃,发送方也收不到”包长超出”的网络层拒绝包。甚而,旧路由的”最大可接受APDU长度” 参数有可能是由其它路由口的参数决定的 (BACnet标准允许这种做法),因而其封包长度可能超出501字节,此时发往旧路由的应用层包也可能被丢弃。因此这种配置可能造成互操作问题。

BACRouter在非常早的版本就支持了扩展帧。从固件版本3.18开始,我们在BACRouter的MS/TP配置中引入了”扩展帧支持“选项,如果在总线上有不支持扩展帧的旧路由,此选项必须关闭以避免互操作性问题。

值得注意的是,即使”扩展帧支持“选项被关闭,不象旧路由,BACRouter仍然与支持扩展帧的设备有良好的互操作性。