CANbus 诊断
硬件故障诊断
大多数 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.5 V。有故障的收发器会导致开路电压变化并中断网络通信。
关闭所有 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Ω。如果它较低,那么您需要寻找额外的屏蔽接地。

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 通过用户界面和应用程序。