CAN总线诊断
硬件故障诊断
大多数CAN总线问题都可以追溯到错误的接线或故障的CAN设备。潜在的错误包括以下几种:
缺少或尺寸错误的端子电阻
总线必须在起始端和终止端分别接上 120 Ω 的终端电阻。
不同的波特率
所有用户必须使用相同的波特率。
CANLow、CANHigh、CANGround 和 V+ 之间短路
CANLow 和 CANHigh 互换
不同长度的 CANHigh 和 CANLow
CANHigh 和 CANLow 不是双绞线。因此,信号更容易被中断。
CANground 的不同接地源
CAN总线电缆的双侧接地
当 CAN 总线电缆屏蔽层的两端接地时,会形成接地回路,从而导致中断。
总线电缆过长
最大总线长度取决于设定的波特率(见表)。
比特率 | 电缆长度 |
|---|---|
10 kbps | 6.7公里 |
20 kbps | 3.3公里 |
50 kbps | 1.0公里 |
125 kbps | 500米 |
250 kbps | 250米 |
500 kbps | 125米 |
1 Mbps | 25米 |
检测硬件故障

终端电阻用于使节点的阻抗与所用传输电缆的阻抗相匹配。当阻抗不匹配时,传输的信号无法被负载完全吸收,部分信号会反射回传输电缆。如果信号源、传输电缆和负载的阻抗相同,则可以消除这些反射。本测试测量的是CAN数据线对的串联电阻以及连接的终端电阻。
关闭所有CAN节点的电源。
测量网络中间和末端 CAN_H 和 CAN_L 之间的电阻。
测量值应介于 50 Ω 和 70 Ω 之间。网络中所有位置的测量值应相同。
如果阻值小于 50 Ω,则请确保以下各项:
CAN_H 和 CAN_L 电缆之间没有短路。
最多只有两个终端电阻。
这些节点没有收发器故障。
如果该值大于 70 Ω,则请确保以下事项:
CAN_H 和 CAN_L 电缆的线路中不存在开路。
该总线系统有两个终端电阻,每个电阻为 120 Ω – 两端各一个。

每个节点都包含一个 CAN 收发器,用于发送差分信号。当网络通信空闲时,CAN_H 和 CAN_L 的电压约为 2.5V。收发器故障会导致开路电压波动,从而中断网络通信。
关闭所有CAN节点的电源。
停止所有网络通信。
测量 CAN_H 和 GND 之间的直流电流。
测量值应介于 2.0 V 和 4.0 V 之间。如果小于 2.0 V 或大于 4.0 V,则可能有一个或多个节点的收发器出现故障。
当电压低于 2.0 V 时,您需要检查 CAN_H 和 CAN_L 电缆是否连通。
当电压大于 4.0 V 时,需要检查是否存在过电压。

CAN网络的屏蔽层可能仅在一个位置接地。此测试用于检测屏蔽层是否在多个位置接地。
将盾牌与地面分离。
测量屏蔽层与地之间的直流电阻。
将屏蔽层接地。
电阻值应大于 1 MΩ。如果低于 1 MΩ,则需要寻找屏蔽层的额外接地方式。

CAN收发器包含一个控制CAN_H的电路和一个控制CAN_L的电路。经验表明,其中一个或两个电路的电气损坏都会导致这些电路中的漏电流增加。
使用电阻测量仪器测量泄漏电流。
将节点从网络中分离。断开节点上的所有电流。
测量 CAN_H 和 CAN_GND 之间的直流电阻。
测量 CAN_L 和 CAN_GND 之间的直流电阻。
正常情况下,电阻值应在 1 MΩ 到 4 MΩ 或更高。如果低于此范围,则 CAN 收发器可能存在故障。

CAN控制器错误处理
错误处理机制已集成到 CAN 协议中,对 CAN 系统的性能至关重要。错误处理旨在检测 CAN 消息中的错误,以便发送方能够重发失败的消息。每个 CAN 控制器都会尝试检测消息中的错误。当检测到错误时,检测节点会发送一个错误标志,从而中断总线通信。其他节点会检测由该错误标志引起的错误(如果它们尚未检测到原始错误)。它们将采取相应的措施并拒绝当前消息。
在诊断 CAN 总线错误时,这些计数器以及总线状态通常可以提供关于错误原因的初步信息。这些信息可以从以下位置读取:CODESYS通过用户界面以及应用程序。