1. 通信方式
RS485总线采用的是单主机通信架构,即在一个通信网络中,只有主机可以发送数据,其他设备节点只能接收数据。这种通信方式使得RS485总线适合于单节点控制多个从节点的场景。相比之下,CAN总线采用的是多主机通信方式,所有节点都可以同时发送和接收数据。多主机同时通讯时,有优先级仲裁。高优先级节点可保证优先通讯。这使得CAN总线在多节点同时通信的场景中具有优势。
在通信速度方面,CAN总线具有更高的传输速率。CAN 2.0 A/B总线支持高速数据传输通信速度可达到1 Mbps,在CAN FD总线下,通信速率更是可达5Mbps。而RS485总线的传输速率相对较低,一般在115200bps的情况下进行通信。因此,在需要高速传输的应用中,CAN总线更具优势。
CAN通讯的MAC有CAN ID Filter功能,可以将非本机关心的CAN ID直接过滤掉,即不需要MCU的参与即可排除总线上面无关的通讯帧数据,大大节省了MCU的算力,变向提升了MCU的性能。而RS485则是对总线的数据全部进行监听,全部交由MCU来进行筛选,直接会占用MCU的一部分处理时间。
4. 距离限制
在通信距离方面,RS485总线支持的通信距离相对较长,一般可达到1200米。而CAN总线的通信距离一般在40-500米之间,但通过使用中继器可以扩大范围。我个人对这个理论上面的数据一直持怀疑态度。最远距离其实条件还是挺苛刻的,所以,这里我也不展示来讲了。对于较远距离,还是安装中断器来实现吧!
5. 成本
从成本角度来看,RS485总线的硬件设备和布线材料成本相对较低,适合较为简单的通信应用。相比之下,CAN总线的设备和布线成本较高,适合对通信质量有较高要求的工业应用。
当然,两者也有同样优秀的特点:
1. 差分通讯线
CAN与RS485的Phy层的电气特性均为差分方式。两者在通讯过程中,如果遇难共模干扰,全部都可以轻松应对。
2. 2线制
CAN使用两根信号线,称为CAN H与CAN L。而RS485也使用两根信号线,称为A与B。因为差分传输的特点,两根线一根是正相,一根是负相,这个基本原理是不会变的,变的也就是叫法而已。
3. 菊花链
在连线拓扑结构中,两者均是菊花链的“手挽手”模式,非常方便现场施工。
说了这么多,两者的比较与共同点。我个人的选择标准还是价格,RS485便宜,所以,在项目中应用的比较多。不过,这几年CAN芯片的价格不断下降,支持CAN外设的MCU也越来越多,相信不久,我们工程师在做选择的时候,更选择技术更优的方案。