前言
RS-485和CAN都是串行
通信协议。它们允许在单个系统中布置多点设备,大大缩短了电缆长度,差分设计适用于强干扰的环境,两者都使用120 Ω电阻端接,并配有内部过压
电路以进行故障保护。RS-485和CAN有太多的共同点,但无疑是不一样的。
RS-485更多的是应用在工业领域,CAN被广泛设计用于汽车行业。但现在,不仅汽车行业广泛使用CAN,而且航空航天等其他行业也开始转向CAN。
但是要了解使这些协议与众不同的差异,我们必须知道它们到底是什么。
先简要介绍一下RS-485。
RS-485:自20世纪80年代中期以来一直存在的串行通信协议。最初是为工业市场的应用而定义的,或者更好的说,它是为工业应用而开发的。
RS-485由电信行业协会和
电子工业联盟联合发布,因此它也被称为
tiA / EIA-485。但更能被业界接受的名字是RS-485,它的应用在:
运动控制设备
旋转编码器接口
计算机自动化系统(键盘、鼠标、打印机等)
工业控制系统
剧院应用
PLC
虽然RS-485被应用到多种场合,但越来越多的行业似乎转向CAN用于其工业机械。
为什么要“切换”到CAN总线?
RS-485未能成为通信协议。它只是被证明是一个电气接口。它确实提供了多点通信功能,但仅适用于至少具有UART的设备。
01
一主多从系统
从技术上讲,它是一个半双工系统,一次只能有一个设备可以传输,其他设备必须监听。因此,它只能为多个节点串行地进行数据交换提供基本的物理链路。即:一主多从。
与CAN不同,CAN总线的设备,每个节点都可以充当主节点,并确切地知道如何以及何时发送信号。RS-485遵循典型的主从拓扑结构。当通信处于活动状态时,所有从站/节点都接收主站单元发送的数据。如果一个“从机”必须回答“主机”的信息,它就必须切换为“主机”,这样才能发送它的信息。
这种连接的一个特殊功能是,连接到线路的所有设备都会接收传递的所有内容。当设备必须发送时,它通过RTS信号(传输请求)激活其传输线。传输数据的元素也接收传输的数据。当RS-485总线出现多个设备同时发送消息时,会导致过载或可能信号碰撞,进而使整个消息无效或导致数据错误。
02
容错机制
对于RS-485,这还不是它唯一的缺点。在定义方面,没有明确规定以下的内容:
寻址节点的过程
避免数据冲突的方法
框架结构
沟通程序
错误检测等,
3个理由了解为什么CAN总线更好
CAN总线的显著优势在于它高度灵活并提供许多独特的功能,从而导致其他行业的采用率大幅增加。
CAN总线是一种双线、多点的串行通信标准协议。就像RS-485一样,通过CAN的信号以CAN-H和CAN-L作为差分电压流动。差分信号的传输类似于RS-485,但事实差异很大。CAN总线的优势主要体现在以下三个方面:
01
消息传输
CAN指定了总线上的完整数据包,而不仅仅是物理层。CAN硬件自动处理数据包的开始/结束检测、冲突检测、回退、重试、校验和生成、验证,以及与处理硬件故障相关的更多功能。用户只需要传输消息标识符和有效负载,CAN硬件负责添加数据包的其他部分。使用RS-485时,其实RS-485底层未进行任何定义:如数据来自何处、谁可以发送它、正在发送哪些数据、接收的数据是否损坏等。(除非在软件中指定,否则什么都不知道)。
02
仲裁
RS-485的主要问题是信号拥塞。这通常是由于多个节点试图在总线上同时发送数据,从而导致过载。CAN遵循仲裁,其中消息按状态顺序排列和接收。失去仲裁的节点将重新发送其消息。对于所有节点,这种情况将继续进行,直到只剩下一个节点正在传输。由于消息式仲裁,CAN无需采取额外的预防措施即可实现多主机操作。对于RS-485,这只能通过特定协议来实现。
03
协同和错误检测及纠正
当CAN总线的一个节点将隐性状态“写入”总线并看到它实际上处于主导状态时,它知道另一个节点正在驱动它。尝试写入隐性状态的节点将后退并等待消息的结束。
写入主导状态的节点永远不会知道发生了这种情况。它的消息通常由所有其他节点发送和接收。这种冲突检测功能允许在没有任何中央仲裁的情况下实现对等网络架构。节点发送消息,但在检测到冲突时后退,然后在当前数据包完成后重试。最终,总线可用时发送这些其他消息,并且发送先前碰撞的消息时不会发生冲突,包括 16 位 CRC 校验和。RS-485不能触发任何消息冲突,系统的应用软件必须保证避免碰撞。
综述
虽然RS-485端口仍然被应用到到许多新开发的设备中中,但CAN功能的如仲裁、错误消息检查、改进的带宽和更大的数据场,加速了对CAN总线的需求。
原作者:玩转
单片机与嵌入式 济南行远智能科技有限公司