为什么工业圈这么爱用CAN总线?
最早CAN是博世给汽车电子开发的,上个世纪八十年代的东西了,放到现在依然能打,靠的不是情怀,是真的适配工业现场的复杂环境。
很多刚入行的朋友觉得,这不就是个带了协议的串口?跟485没差多少。大错特错。
它天生就是为多节点组网设计的,不用主控制器轮询,所有节点都能主动发数据,优先级高的帧自动抢占总线,根本不会乱。自带硬件CRC校验,错帧直接丢弃,不会把错误数据传给上层,抗干扰能力甩普通串口十条街。

开发门槛还低,不需要复杂的协议栈授权,几块钱的单片机就能外挂CAN控制器,小厂家做非标设备也用得起。
问:CAN和常用的RS485比,核心优势到底在哪? 答:最核心的两点,一个是多主架构,一个是错误处理机制。RS485只能一主多从轮询,主控制器炸了整个网络就瘫了,CAN随便哪个节点崩了,只要不短路,其他节点该怎么跑怎么跑。抗干扰上,RS485只有电气层的差分,没有硬件层面的错帧过滤,现场有电机干扰的时候,错码满天飞,上位机经常收到乱七八糟的数据,CAN遇到错帧直接自动重发,稳定太多。通常一条标准CAN总线能挂大约100个节点,RS485撑死三十个就要加中继,高下立判。现场接线最容易踩的几个隐形坑
我见过百分之八十的CAN总线故障,不是程序的问题,是接线和端子处理错了。说几个我踩过的大坑。
- 第一个就是终端电阻接错。很多新手以为每个节点都要接终端电阻,接上之后通讯断断续续,查半天查不出问题。正确接法只有一个:整个CAN总线的最两端两个节点,各接一个120Ω的终端电阻,中间所有节点都不要接。接多了信号衰减,距离超过几十米就歇菜。我当年第一个项目就是犯了这个错,熬了两个通宵才找到问题,说起来都是泪。
- 第二个是线用错。图便宜用普通平行线甚至网线,干扰稍微大一点就丢包。工业现场必须用带屏蔽的双绞CAN总线,线径不要太细,屏蔽层一定要单端接地❗,双端接地会引入接地环流,反而会加重干扰,这个点真的很多老工程师都搞错。
- 第三个是布线上跟动力线走一起。CAN虽然抗干扰,但也架不住跟几百安的动力电缆捆在一起走,变频器启动的干扰直接就能把信号盖了,布线的时候至少隔个二三十公分,交叉的时候也要直角过,别平行走。

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

最近几年CAN FD火起来了,很多人来找我,问老项目要不要升级,新项目要不要直接上CAN FD。
说实话,标准CAN跑了几十年,最大的问题就是带宽低,单帧最多只能传8字节数据,现在很多设备要传实时的运行参数、多通道传感器数据,8字节确实不够用。CAN FD把单帧数据扩大到了64字节,带宽最高能到8Mbps,应付现在的需求绰绰有余。
不过话说回来,不是所有项目都得追新。如果你的项目就是传点开关量、温度压力这些小数据,节点也就二三十个,原来的标准CAN完全够用,没必要折腾换硬件改程序,平白增加成本。
要是新项目,需要传大量实时数据,比如新能源设备的电池数据、工业机器人的关节反馈,直接上CAN FD就对了,现在绝大多数控制器都已经支持CAN FD,成本差不了几块钱,还能留够余量,以后升级也方便。
很多人说CAN总线快要被工业以太网取代了,我不这么看。工业现场很多低成本的小设备,不需要那么高的带宽,要的就是稳定便宜坏了好修,CAN总线还能打十几年,这点不会变。
搞工业这行,越干越觉得,合适的才是最好的,不是越新越先进就越好。CAN能火这么多年,就是这个道理。