为什么CAN比RS-485更好?

CAN总线的显著优势在于它高度灵活并提供许多独特的功能,从而导致其他行业的采用率大幅增加。

CAN总线是一种双线、多点的串行通信标准协议。就像RS-485一样,通过CAN的信号以CAN-H和CAN-L作为差分电压流动。差分信号的传输类似于RS-485,但事实差异很大。CAN总线的优势主要体现在以下三个方面:

1、消息传输

CAN指定了总线上的完整数据包,而不仅仅是物理层。

CAN硬件自动处理数据包的开始/结束检测、冲突检测、回退、重试、校验和生成、验证,以及与处理硬件故障相关的更多功能。用户只需要传输消息标识符和有效负载,CAN硬件负责添加数据包的其他部分。

使用RS-485时,其实RS-485底层未进行任何定义:如数据来自何处、谁可以发送它、正在发送哪些数据、接收的数据是否损坏等。(除非在软件中指定,否则什么都不知道)。

2、仲裁

RS-485的主要问题是信号拥塞。这通常是由于多个节点试图在总线上同时发送数据,从而导致过载。

CAN遵循仲裁,其中消息按状态顺序排列和接收。失去仲裁的节点将重新发送其消息。

对于所有节点,这种情况将继续进行,直到只剩下一个节点正在传输。

由于消息式仲裁,CAN无需采取额外的预防措施即可实现多主机操作。对于RS-485,这只能通过特定协议来实现。

3、协同和错误检测及纠正

当CAN总线的一个节点将隐性状态“写入”总线并看到它实际上处于主导状态时,它知道另一个节点正在驱动它。尝试写入隐性状态的节点将后退并等待消息的结束。

写入主导状态的节点永远不会知道发生了这种情况。它的消息通常由所有其他节点发送和接收。这种冲突检测功能允许在没有任何中央仲裁的情况下实现对等网络架构。节点发送消息,但在检测到冲突时后退,然后在当前数据包完成后重试。

最终,总线可用时发送这些其他消息,并且发送先前碰撞的消息时不会发生冲突,包括 16 位 CRC 校验和。

RS-485不能触发任何消息冲突,系统的应用软件必须保证避免碰撞。