网站地图
技术资讯

CAN总线入门科普:差分信号、终端电阻和ID仲裁一次讲透

发布时间:2026-09-18 点击次数:0

现场调试 PLC 通讯的朋友,十有八九跟 CAN 打过交道。这东西在汽车、工程机械、电池管理系统里几乎是标配,可真要问一句“它为什么稳、为什么两根线就够用”,能把原理讲明白的人不多。今天就用大白话,把 CAN 总线的几个核心门道一次讲透,最后再给一套现场 CAN 不通的排查顺序,都是能直接上手用的。

先搞清楚:CAN 是一条“广播式”的公共线

CAN 最大的特点是“多主”。挂在网上的每个节点都能主动发数据,不需要谁来点名授权。整条总线就像一间开着喇叭的会议室:谁发言,所有人都听得见。

发出来的每条报文都带一个 ID。注意,这个 ID 代表的是数据的含义,不是发送设备的门牌号。比如某个 ID 固定表示“电池状态”,谁发的无所谓——关心的节点就接收处理,不关心的直接忽略。所以同一条总线上,有的节点收了去做事,有的节点装没听见,各取所需,互不打扰。

CAN总线多主差分广播式通信示意图
图1:CAN 是多主、差分、广播式的总线,接收方按 ID 决定要不要处理

两根线凭什么抗干扰:CAN_H 和 CAN_L 的差分把戏

CAN 只用两根线:CAN_H 和 CAN_L。接收器不看单根线上的电压,只看两条线的差值

发显性电平(逻辑 0)时,一条线抬高、一条线压低,差值拉得很开;发隐性电平(逻辑 1)时,两条线贴在一起,差值几乎为零。抗干扰的窍门就在这里:车间里变频器、电机搞出来的干扰,往往同时落到两根线上,也就是常说的共模噪声——两根线一起抖,差值几乎不变,接收器根本“感觉”不到。

另外记住一条:显性比隐性“嗓门大”,显性会覆盖隐性。这一点不只是物理层特性,还是后面仲裁机制的地基。

CAN_H与CAN_L差分信号显性隐性电平示意图
图2:显性(逻辑 0)差值大,隐性(逻辑 1)两线贴近,共模噪声被抵消

终端电阻:最便宜、也最容易背锅的两个元件

终端电阻只放在总线的物理两端,一边一只,作用是阻抗匹配、减少信号反射。少了、多了、或者装错了位置,通信都会变得不稳定——那种时好时坏的毛病,十有八九跟它有关。

现场快速判断的办法很土但很好用:断电,拿万用表测 CAN_H 和 CAN_L 之间的电阻。两只终端电阻是并联关系,正常应该读到单只阻值的一半左右;读出无穷大,说明有一只没接上;读数正好等于单只阻值,多半是有人多并了电阻。

踩过的坑说一个:有台改造设备通信老断续,查了半天,发现是装配的师傅看别的节点上挂了个电阻,自己也照着加了一只,终端电阻从两只变四只,波形直接变形。记住,不是每个节点都要加终端电阻

CAN终端电阻两端各一只并联约60欧测量示意
图3:终端电阻只放总线两端,万用表测出的并联阻值是判断依据

ID 仲裁:不用裁判的“抢话筒”规则

多个节点同时想发数据怎么办?CAN 靠逐位仲裁解决,不用任何中央调度。

规则简单粗暴:每个节点一边发一边监听总线,如果自己发的是隐性(1)、却听到总线上是显性(0),就知道有 ID 更小的报文在场,主动退出,等下一轮再发。ID 数值越小,优先级越高。整个过程不会破坏任何报文——赢的节点把报文完整发完,输的节点自动重发,总线时间一点不浪费。

所以工程上有个惯例:关键的安全报文(比如故障信号)会把 ID 设得很小,保证它随时能“插上话”。

CAN ID逐位仲裁过程示意图,显性0覆盖隐性1
图4:逐位仲裁,显性 0 覆盖隐性 1,ID 越小优先级越高,败者无损退出

一帧数据怎么可靠送达:从帧头到 ACK

一帧标准数据帧,从头到尾大致是:帧起始、ID、控制位、数据区、CRC 校验、ACK 应答、帧结束。经典 CAN 的数据区一次最多装八个字节;新的 CAN FD 能装到六十四字节,但要求全网节点都支持才能开。

数据传没传对,靠 CRC 兜底;接收方收到正确的帧,会在 ACK 槽位把总线拉成显性,等于举牌喊了一声“我收到了”。注意,这个应答只代表帧收对了,不代表应用层已经把数据处理完——那是两层的事,别混。

要是总线上一个应答的节点都没有,发送端就会报 ACK 错误。这是现场最常见的报错之一,原因往往是:总线上只有发送节点在工作、对端没上电或处于静默模式、波特率对不上、线断了、终端电阻有问题。

CAN数据帧结构与ACK应答机制示意图
图5:CAN 数据帧结构与 ACK 应答——至少一个节点正确接收才会应答

CAN 不通怎么查:先硬件、再软件、最后波形

别一上来就翻程序,按下面的顺序来,效率高得多。

第一步查硬件。CAN_H、CAN_L 有没有断线、接反,节点之间有没有共地,收发器供电和使能脚是否正常,再用万用表按前面说的并联阻值法验一遍终端电阻。物理层不过关,后面全是白折腾。

第二步查软件配置。波特率和位时序是否一致、控制器初始化对不对、报文过滤器有没有配好、节点是不是卡在回环或静默模式、标准帧和扩展帧类型是否统一。现场吃过亏:两台设备波特率差着一档,程序怎么看都没毛病,总线永远只有错误帧。

第三步才上示波器。看差分波形幅值正不正常、ACK 槽位有没有被拉低、有没有错误帧和反射振铃。记住口诀:先确认物理连接,再查配置,最后看波形,顺序别倒。

CAN不通故障排查流程图:硬件软件波形三步法
图6:CAN 不通的三步排查法——硬件 → 软件 → 波形

这跟位移传感器有什么关系

位移测量这边,CAN 的存在感也在变强。移动机械、车辆、工程机械上的位置反馈,越来越多用带 CAN 输出的位移传感器——磁致伸缩位移传感器把位置测好,数据直接挂上整车或整机总线,省掉一路一路的模拟量拉线,抗干扰也上了一个台阶。

选型时先确认波特率、报文格式跟主站匹配;装好后,把本文前面说的物理层验一遍(接线、共地、终端电阻),调试基本一遍过。

终端电阻 终端电阻 CAN_H CAN_L 节点A 节点B 节点C 所有节点并联挂在两线之间,电阻只留在两端

调试现场常问的三个问题

问:万用表测 CAN_H 和 CAN_L 之间的电阻,读多少算正常?
答:两端各一只终端电阻,并联后大约是单只阻值的一半。测出开路说明有终端电阻缺失,读数等于单只阻值则可能有人多并了电阻,两种情况都要查。
问:CAN_H 和 CAN_L 接反了会怎样?
答:整条总线通信会乱,常见表现是所有节点刷错误帧。接线按引脚定义来,上电前先测电阻,能避开大部分低级故障。
问:位移传感器怎么接入 CAN 网络?
答:选带 CAN 输出的型号,确认波特率与主站一致、按报文 ID 配好过滤器,再把终端电阻验一遍即可。易测电气可以按现场控制器的情况给出选型建议。

想在站点里接着看

想了解具体产品参数和安装方式,可以到 易测电气产品中心 查看磁致伸缩位移传感器的几个系列。更多现场应用和通讯协议方面的写法,也欢迎翻看网站上的其他技术文章。

易测电气欢迎您的咨询。

版权所有:深圳市易测电气有限公司 备案号:粤ICP备19052563号 网安粤公网安备 44030602003587号 技术支持:星海互联