搞工业电控绕不开的CAN总线,我踩过的坑都在这了

干工业电控快十五年了,见过的现场总线没有一百也有八十,真正能做到低成本、高可靠、全行业通吃的,绕不开CAN总线。我刚入行那会,为了搞通它的通讯故障,蹲在水泥厂控制柜边啃了三天冷风,没少踩坑。今天就把这些实打实的经验掏出来。

为什么工业圈这么爱用CAN总线?

最早CAN是博世给汽车电子开发的,上个世纪八十年代的东西了,放到现在依然能打,靠的不是情怀,是真的适配工业现场的复杂环境。

很多刚入行的朋友觉得,这不就是个带了协议的串口?跟485没差多少。大错特错。

它天生就是为多节点组网设计的,不用主控制器轮询,所有节点都能主动发数据,优先级高的帧自动抢占总线,根本不会乱。自带硬件CRC校验,错帧直接丢弃,不会把错误数据传给上层,抗干扰能力甩普通串口十条街。

工业控制柜内CAN总线接线实物图
工业控制柜内CAN总线接线实物图

开发门槛还低,不需要复杂的协议栈授权,几块钱的单片机就能外挂CAN控制器,小厂家做非标设备也用得起。

问:CAN和常用的RS485比,核心优势到底在哪? 答:最核心的两点,一个是多主架构,一个是错误处理机制。RS485只能一主多从轮询,主控制器炸了整个网络就瘫了,CAN随便哪个节点崩了,只要不短路,其他节点该怎么跑怎么跑。抗干扰上,RS485只有电气层的差分,没有硬件层面的错帧过滤,现场有电机干扰的时候,错码满天飞,上位机经常收到乱七八糟的数据,CAN遇到错帧直接自动重发,稳定太多。通常一条标准CAN总线能挂大约100个节点,RS485撑死三十个就要加中继,高下立判。

现场接线最容易踩的几个隐形坑

我见过百分之八十的CAN总线故障,不是程序的问题,是接线和端子处理错了。说几个我踩过的大坑。

  • 第一个就是终端电阻接错。很多新手以为每个节点都要接终端电阻,接上之后通讯断断续续,查半天查不出问题。正确接法只有一个:整个CAN总线的最两端两个节点,各接一个120Ω的终端电阻,中间所有节点都不要接。接多了信号衰减,距离超过几十米就歇菜。我当年第一个项目就是犯了这个错,熬了两个通宵才找到问题,说起来都是泪。
  • 第二个是线用错。图便宜用普通平行线甚至网线,干扰稍微大一点就丢包。工业现场必须用带屏蔽的双绞CAN总线,线径不要太细,屏蔽层一定要单端接地❗,双端接地会引入接地环流,反而会加重干扰,这个点真的很多老工程师都搞错。
  • 第三个是布线上跟动力线走一起。CAN虽然抗干扰,但也架不住跟几百安的动力电缆捆在一起走,变频器启动的干扰直接就能把信号盖了,布线的时候至少隔个二三十公分,交叉的时候也要直角过,别平行走。
CAN总线终端电阻正确接法示意图
CAN总线终端电阻正确接法示意图
问:CAN总线通讯距离不够,加了中继为啥还是频繁丢包? 答:大部分情况是中继选的不对。很多人图便宜买那种透明转发的无隔离中继,只放大信号不处理优先级,多节点并发的时候,本来该先走的高优先级帧被卡住,自然就丢了。而且没有隔离的中继,一个节点短路会把整段总线都带垮,一旦出问题就是全线停机,损失大了去了。如果距离超过一公里,我劝你别一层一层堆中继,直接用CAN转光纤模块,抗干扰还能拉很远,比堆中继稳定太多。

CAN FD到底要不要换,什么时候换?

CAN FD到底要不要换,什么时候换?
CAN FD到底要不要换,什么时候换?

最近几年CAN FD火起来了,很多人来找我,问老项目要不要升级,新项目要不要直接上CAN FD。

说实话,标准CAN跑了几十年,最大的问题就是带宽低,单帧最多只能传8字节数据,现在很多设备要传实时的运行参数、多通道传感器数据,8字节确实不够用。CAN FD把单帧数据扩大到了64字节,带宽最高能到8Mbps,应付现在的需求绰绰有余。

不过话说回来,不是所有项目都得追新。如果你的项目就是传点开关量、温度压力这些小数据,节点也就二三十个,原来的标准CAN完全够用,没必要折腾换硬件改程序,平白增加成本。

要是新项目,需要传大量实时数据,比如新能源设备的电池数据、工业机器人的关节反馈,直接上CAN FD就对了,现在绝大多数控制器都已经支持CAN FD,成本差不了几块钱,还能留够余量,以后升级也方便。

很多人说CAN总线快要被工业以太网取代了,我不这么看。工业现场很多低成本的小设备,不需要那么高的带宽,要的就是稳定便宜坏了好修,CAN总线还能打十几年,这点不会变。

搞工业这行,越干越觉得,合适的才是最好的,不是越新越先进就越好。CAN能火这么多年,就是这个道理。

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:搞工业电控绕不开的CAN总线,我踩过的坑都在这了
文章链接:https://www.zystgy.cn/a/60270