CAN总线:我不说它最强,但在工业现场它还真没输过阵

说实话,每次看到有人把CAN总线说成“过时技术”,我都有点想笑。搞工业的人都知道,现场环境多脏多乱多干扰,你拿个以太网去怼振动、怼电磁、怼线缆长度试试?分分钟让你怀疑人生。当然,我不是说以太网不行,只是场合不对。今天就想聊聊这个在汽车和工业里默默扛了几十年的老家伙。

先讲个事儿。上次去一家设备厂调试,客户死活说他们的CAN通讯不稳定,动不动掉线,换了好几个品牌的线缆都不行。我过去一看——终端电阻呢?两个120欧的电阻,一头一个,缺一个都不行。结果他们全厂80多米长的总线,只在控制器端接了一个电阻,另一端空的。这事儿不是个例,很多所谓“CAN通讯不稳定”的案子,最后查出来都是这种低级问题。

CAN总线到底凭什么能在工业里站住脚

很多刚入行的工程师会把CAN和RS485搞混,觉得都是差分信号、都是总线结构,差不多吧?差多了。CAN最核心的是它的仲裁机制。多个节点同时发数据,不会冲突,按优先级来,高优先级的帧先走,低优先级的自动退避。这种实时性是RS485完全做不到的。RS485那是主从轮询,主机点名,从机回答,效率低不说,主机挂了全完蛋。CAN没有主机,对,就是分布式,任何节点都可以主动发。

另一个关键是它的错误处理。CAN有5种错误检测机制,什么CRC、位填充、格式校验……说白了,就是它自己发现自己错了,会重发,而且能区分是暂时性错误还是永久性故障。有个叫“总线关闭”的状态,节点一进这个状态,自动脱离,不拖累其他人。这种容错能力在机械振动大、电磁干扰强的车间里就是救命稻草。

💡 这里得多说一嘴,很多人把CAN和CANopen搞混。CAN是物理层和数据链路层,CANopen是应用层协议。就像串口和Modbus的关系一样。实际工业里用CAN的话,几乎都是跑CANopen协议,否则光有底层你也玩不转。

CANopen工业现场节点组网示意图
CANopen工业现场节点组网示意图

组网和布线那些事儿

组网和布线那些事儿
组网和布线那些事儿

别被“总线”两个字骗了,它不是简单的线并线。CAN总线对拓扑结构是有要求的,最好是直线型,也就是菊花链。你要是图省事,做成星型或者树型,反射和驻波会让你哭。有些高端的CAN收发器号称支持星型,但那是有限制的,普通工况下还是老老实实按规范来。

线缆方面,普通双绞线能用,但推荐用屏蔽双绞线,而且要单点接地。屏蔽层别两头都接,不然接地环流反而引入干扰。这都快成老生常谈了,但每次出差都能遇到接错的。

再有一个就是波特率。CAN的波特率不是你想设多少就多少。距离越长,波特率就得越低。比如1Mbps的时候,总线长度限定在40米内;你要是想拉500米,那波特率得降到125kbps。这个换算关系在ISO11898里有,但很多人不看手册,凭感觉设,结果通讯时好时坏。我整理一下常见对应关系:

  • 1 Mbps → 最大 40 米
  • 500 kbps → 最大 100 米
  • 250 kbps → 最大 250 米
  • 125 kbps → 最大 500 米

注意,这是理论值,实际工程上都要留余量,比如按80%来。

问:那我想提高传输距离,又不想降波特率,有什么办法吗?
答:办法有,但都不是免费的。你可以用CAN中继器,每过一段距离就加一个,把信号重新整形。或者用光纤转换器,把CAN转成光信号,传输距离直接拉到公里级。但注意,加了中继器会引入延迟,而且整个网络的“心跳”要重新算。一般建议能用低速解决问题就别搞这么复杂,毕竟自动化设备不是实验室,越简单越可靠。

现场故障排查的真实经验

有一次半夜在现场,设备老是周期性丢包。我先查了终端电阻,没问题;屏蔽接地,也没问题。后来用示波器一看,波形的高电平明显畸变,毛刺很多。排查到最后,发现是有一段线缆跟动力电缆绑在一块儿,走了三米多长。电气柜里走线太乱,强电干扰直接耦合进了CAN总线。后来把那一段线分开,加了个磁环,波形立刻干净了。

所以啊,很多时候问题不在设备,而在安装工艺。CAN总线是差分传输,抗共模干扰能力强,但对差模干扰还是敏感的。什么意思?就是两根线绞合得好,干扰在两根线上产生同样的电压,相互抵消;但如果绞合不好,或者线缆破损,干扰就会变成差模,直接打在接收器上。这也是为什么要求用质量好的双绞线,绞距越密越好。

还有一点,节点数量也容易踩坑。一个CAN网络能挂多少节点?要看收发器的驱动能力。标准收发器一般支持32个节点,但有些“低功耗”收发器可能只有16个。你硬塞超过32个,信号电平就拉不动了。这个问题我在现场也遇到过,最后是加总线中继器,分成两段解决的。

问:有没有什么工具能快速定位CAN网络故障?
答:有。最基本的用万用表量终端电阻,确认两端都有120欧,并且总线上没有短路或断路。但想诊断通讯质量,最好用示波器看波形,或者用CAN总线分析仪,能抓包、看错误帧、统计错误计数。现在的低成本方案是用一个USB转CAN的适配器,配电脑软件就能看。但记住,分析仪只能帮你看到问题,解决问题的还是靠现场经验。

CAN总线示波器波形分析故障排查图
CAN总线示波器波形分析故障排查图

它不会消失,但也不会是万能

它不会消失,但也不会是万能
它不会消失,但也不会是万能

很多人问,为什么以太网速率那么高,成本也降下来了,CAN还没被淘汰?很简单,CAN的确定性是以太网给不了的。标准的以太网是CSMA/CD机制,有冲突就退避,延时不可控。工业以太网像PROFINET、EtherCAT那是用了特殊的时间切片和调度才做到的,但这些协议对硬件要求高,而且部署成本也不是一个量级。

CAN就便宜,简单,可靠。一个STM32单片机自带CAN控制器,加个收发器几毛钱,搞定。对大量低速的数据采集、传感器通讯、阀岛控制,CAN绰绰有余。你说用工业以太网杀鸡用牛刀也行,但成本、功耗、体积、学习曲线都是问题。

另外,汽车行业里CAN仍然是主角,虽然现在有CAN FD、车载以太网,但CAN的基础地位没动摇。你去看一辆车的维修手册,到处是CAN的名字。所以,说“CAN过时”的人,要么是没真正下过现场,要么是只盯着参数看,不懂工程经济性。

现在说说CAN FD。CAN FD就是CAN的升级版,数据段可以到64字节,速率能上8Mbps。它跟CAN能共存吗?有些节点是CAN,有些是CAN FD,需要支持CAN FD的控制器才能收发。但好消息是,CAN FD其实现很多新车里已经标配了。但工业现场,目前还是CANopen的天下,毕竟存量设备太多,没人愿意为提升那点速率去改整个产线。

总之吧,技术这东西,没有绝对的好,只有合适不合适。在粉尘、油污、高温、振动的地方,CAN总线依然是我最信任的伙伴之一。

现在我得收个尾,但不想用那种教科书式的结尾。就说一句:如果你在工业现场被通讯问题折磨得头大,先别急着换方案,回头检查一下你的CAN总线,也许问题就在那两根线的一抹一扭之间。

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:CAN总线:我不说它最强,但在工业现场它还真没输过阵
文章链接:https://www.zystgy.cn/a/56745