如何检测我的CAN设备何时断开连接?

更新 May 6, 2023

适用于

软件

  • LabVIEW

驱动

  • NI-XNET

问题详述

我有一个待测单元,并且希望在意外断开连接时能够停止发送信号。我尝试使用X-NET Read.vi(CAN通讯状态)并读取 CAN Comm>>communication state(CAN通信>>通信状态)当我断开设备连接时,communication state(通信状态)将变为Error Passive 。但是,当我重新连接时,有时它会停留在Error Passive状态,而不是像我期望的那样处于Error Active

如何监视或检测CAN设备的意外断开?

解决方案

CAN Comm 簇具有一个传输错误计数器和一个接收错误计数器,该计数器将在通信中断时开始计数。当任一计数器的计数高于127时,通信状态将转换为Error Passive 当计数高于255时,通信状态将转换为Bus Off(总线关闭)。重新连接CAN信号时,两个计数器都开始递减计数。一旦两个计数器都再次低于127,设备将再次返回到Error Active状态。

例如,要查看设备是否重新连接,可以监视传输错误计数器。如果计数器开始递减计数,则可以认为您的设备已重新连接并开始与之通信。对于某些应用程序,这可能比监视通信状态更为有用。

相关信息

断开连接的检测取决于数据进入,接收或传输的方向。这是CAN物理层本身的限制。当它正在接收或监听数据时,它不知道信号丢失(断开某些连接)或只是等待信号之间的区别。为了真正进行知晓是否已断开的过程,它需要进行传输,并且所传输字节的有效载荷包含有关是否断开连接的数据。