为什么我的CAN处于Bus Off State?

更新 Oct 22, 2021

适用于

驱动

  • NI-XNET

问题详述

为什么我的CAN应用程序经常进入Bus Off State (总线关闭状态)?

解决方案

由于看到的错误数量过多,您的CAN可能处于"Bus Off State"。如果“Transmit Error Counter”大于255,则CAN接口将转换为该状态。在必须将CAN接口与其他设备隔离的前提下,通信立即停止。当CAN接口转换为总线关闭状态时,该接口的通信将停止。接口的所有NI-XNET会话均不再接收或发送帧值。要重新启动CAN接口及其所有会话,请在LabVIEW调用中XNET Start.vi,或在C语言中调用nxStart

在 VeriStand 中,您可以启用Interface选项卡下的Check for communication state and restart automatically选项,从而无需重新部署项目的情况下从Bus Off State恢复。
VeriStandXNET.png

相关信息

在CAN接口上开始通信时,传输错误计数器从0开始。当检测到传输帧的错误时,计数器递增;当帧传输成功时,计数器递减。对于错误,计数器增加的次数大于为成功而减少的次数。这样可以确定当一定比例的帧(大约1/8)遇到错误时,计数器通常会增加。

当通信状态转换为总线关闭时,发送错误计数器不再有效。