上期有朋友留言说:CAN总线和其他网络对比的文章。
好吧!那就开始搜集资料进行整理分享。当然,关于CAN总线相关也会同我们之前介绍的EtherCAT、Modbus、Profinet总线等类似的出一个专题的。敬请期待!
CAN和Ethernet
谈到CAN总线,我想大部分可能从事与汽车相关的工业,因为对于一些通用自动化领域,如果不是客户要求,可能涉及到的比较少。
CAN和以太网都出现在汽车、医疗系统和工业自动化等环境中。它们都实现了基本相同的目标:互联不同的设备并使这些设备能够通信,并且都是负责节点到节点数据传输和错误检查的第1层和第2层网络协议。
Bosch在1980年代开发了CAN,特别是为了支持汽车中日益增长的计算机数量。当时,以太网主要适用于办公和计算环境,尚未适应汽车系统的特殊需求。然而,随着时间的推移,以太网技术发展,并在现代汽车中变得越来越突出,特别是对于需要更高带宽的系统,如信息娱乐系统和高级驾驶辅助系统(ADAS)。
尽管两者都服务于车辆内设备之间通信的目的,但有几个关键区别将CAN和以太网区分开来。
需要说明的是,当CAN被创建时,以太网在汽车领域并不是一个有竞争力的解决方案,这就是为什么需要一个新的协议。随着我们下面讨论的变化,推动了以太网在汽车中使用的增加。
具体比较
1、物理线和数据速率
- CAN:CAN使用一对双绞线,并且可以以高达1兆比特每秒的速度运行。一个较新的扩展叫做CAN-FD,将其扩展到15兆比特每秒。
- 以太网:以太网也可以使用一对线,但通常使用四对或八对线。四对线支持高达100兆比特每秒,八对线支持高达10千兆比特每秒。
对比:线的数量对于降低重量和成本很重要,但今天不像CAN刚创建时那么重要。以太网提供更高的速度,但需要更多的线。
2、网络流和拥塞控制
- CAN:CAN采用半双工通信,没有真正的拥塞控制。半双工意味着设备可以发送或接收,但不能同时进行。没有拥塞控制意味着一旦网络容量超过,就没有办法管理或减轻网络流量拥塞的影响。
- 以太网:以太网支持全双工控制,因此设备可以同时发送和接收。以太网包括更优越的拥塞控制,包括碰撞检测和载波侦听多路访问,以便设备知道线路何时空闲,甚至可以要求邻近设备暂停传输。
对比:CAN的设计是基于设备在尝试通信时会很好地合作,与以太网相比。
3、网络寻址
- CAN:CAN使用描述消息优先级和目的的标识符,但没有特定设备的标识符。发送者基本上添加一个消息ID,并将消息广播到总线上,而接收者过滤所有总线消息,只关注他们关心的ID。
- 以太网:与CAN不同,以太网使用MAC地址唯一标识网络上的每个设备,使得既可以广播也可以直接发送数据给特定的接收者。
对比:以太网设计是为了设备之间直接对话,而CAN更像是一个发布给任何关心的人的通信模型。
4、优先级和服务质量
- CAN:当你有短消息并且需要实时性能时,CAN表现出色。在CAN中,数据帧最多可以是8字节,新的CAN-FD扩展允许最多64字节。消息优先级直接编码在消息ID字段中,数值越低表示优先级越高。这意味着如果两个节点同时开始通信,具有最低标识符的节点具有最高优先级,将继续发送,而另一个则退避。
- 以太网:然而,以太网帧默认可以携带高达1500字节,如果启用了jumbo帧,甚至可以更多。通过引入VLAN标记和消息中的优先级字段,IEEE 802.1Q扩展处理优先级和服务质量。以太网也可以通过时间敏感网络标准满足实时保证。
对比:总的来说,CAN消息相对较短,这种短大小最小化了每个消息占用总线的时间,并减少了其他消息可以发送之前的总体延迟。以太网的较大帧允许每个数据包携带更多信息,这对于信息密集型服务更好
5、安全和应用开发
- CAN:CAN需要在大多数操作系统上特殊的网络支持驱动程序和库。在Linux上,一个流行的库选择是
vcan
内核模块和SocketCAN库。SocketCAN允许应用程序通过普通的UNIX原始套接字发送和接收数据。值得注意的是,面向CAN的开发并不假设或通常包括像TCP/IP这样的更高层次协议的存在,并且没有内置的安全功能,所以如果你需要可靠的通信或内置的安全特性,CAN并不是最好的选择。 - 以太网:以太网在广泛的操作系统和网络环境中具有高互操作性和兼容性。此外,以太网假设并整合了像TCP/IP这样的更高层次协议的实用性,开发者通常使用这些更高层次的协议来读取和写入数据,而不是直接处理原始以太网帧。
对比:与CAN不同,以太网在各个层面上支持广泛的安全协议,包括加密、认证和网络访问控制,并更好地支持应用层的安全。
6、CAN与以太网:TLDR
- CAN:CAN提供了固有的实时能力,具有其仲裁和错误处理功能,使其非常适合低数据速率、高可靠性的环境,其中立即响应至关重要。这些环境通常也使用较弱的嵌入式设备和单一目的构建的软件,如部署气囊。
- 以太网:以太网具有更高的数据速率和合理的实时性能,使其特别吸引现代、高带宽服务,如自动驾驶和信息娱乐。这些环境通常也需要更快的现代计算机运行完整的操作系统和软件堆栈。
结论
我们把两者进行详细对比,通过列表进行表示:
如上所述,CAN和以太网各有优势。它们适用于汽车领域的不同应用。CAN因其可靠性、确定性和适用于实时和安全关键系统而受到青睐。以太网提供更高的数据速率和更广泛的带宽,并与其他网络协议兼容。因此,以太网适用于非实时应用、车辆内的信息娱乐和诊断。CAN与以太网之间的选择取决于这些特定要求以及其他现有网络基础设施的存在。
参考链接:
- https://www.mayhem.security/blog/can-bus-vs-ethernet
- https://www.rfwireless-world.com/Terminology/Difference-between-CAN-and-Ethernet.html