Bacnet MSTP帧头CRC校验失败

使用BacnetStack 1.0.0源码生成Bacnet客户端用于对Bacnet设备进行数据采集
发现客户端长时间运行后,会出现采集超时的情况,通过日志发现报错大量的HeaderCRC字段校验失败?

MSTP: Rx Header: BadCRC [00]
MSTP: Rx Header: BadCRC [FF]
MSTP: Rx Header: BadCRC [FF]
MSTP: Rx Header: BadCRC [FF]

参考GPT和自己的思路:您的问题涉及到Bacnet MSTP帧头CRC校验失败,这是因为在Bacnet数据采集过程中,客户端发现了许多帧头CRC校验错误的信息。MSTP协议中,帧头CRC是对于整个Bacnet帧的一种校验方式,它的作用是检查信息发送端和接收端之间传输过程中是否发生了数据错误,以此保证数据的可靠性。如果帧头CRC校验失败,说明数据在传输过程中出现了错误,导致接收端无法正常解析Bacnet帧数据。

对于您的问题,可能原因如下:

  1. 校验算法:在MSTP协议中,帧头CRC校验算法是非常重要的,如果算法有错误或者缺陷,就会导致校验失败的情况。针对这一问题,您需要重新检查BacnetStack 1.0.0源码中的帧头CRC校验算法,确保其正确性。

  2. 软件问题:如果客户端长时间运行后,出现了采集超时的情况,那么可能是由软件问题引起的。您需要对BacnetStack 1.0.0源码进行审查,查找可能存在的软件bug,并进行修复。

  3. 硬件问题:除了软件问题,您还需要检查硬件设备,例如串口通讯接口是否正常工作,是否存在通讯干扰等。

针对以上问题,建议您更换一个稳定的BacnetStack版本,或者检查BacnetStack 1.0.0源码中的帧头CRC校验算法,并进行修改。同时,您还需要检查硬件设备,加强通讯电磁干扰的防护。希望我的回答能够帮助到您。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:通过BACnet物联网关实现楼宇自动化的物联网解决方案
  • 除此之外, 这篇博客: 通过BACnet物联网关实现楼宇自动化的物联网解决方案中的 三、内置云驱动功能 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    BACnet网关需要具有强大的协议转换功能,BL103可以实现同时采集多种协议,包括:BACnet MS/TP, BACnet/IP, Modbus RTU, Modbus TCP, DLT645.上行支持BACnet/IP,Modbus TCP,MQTT, OPC UA等协议,内置了华为云、阿里云、金鸽云、亚马逊云、Thingsboard云、Sparkplug B等云驱动,可以直接接入到各种主流云平台。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^