Ethernet vs. EtherCAT
1. Ethernet
Ethernet也就是以太网,算是一种链路层的协议(IEEE 802.3)。如下图所示,链路层data link layer位于网络层和物理层中间。因此链路层的基本服务是将数据报通过单一通信链路从一个节点移动到相邻节点,但所提供的服务细节取决于链路层协议。链路层协议能够提供的可能服务包括:
1.成帧framing,链路层协议把网络层传过来的数据报封装为帧。一个帧由一个数据字段和若干首部字段组成,网络层数据报插在数据字段中。帧的结构取决于所使用的链路层协议。
2.链路接入,媒体访问控制medium access control, MAC协议规定了帧在链路上的传输规则。主要针对的是多路访问问题。
3.可靠交付,与TCP协议提供的可靠交付服务类似,通常用于易于产生高差错率的链路。
4.差错检测和纠正,相比于网络层和传输层的差错检测方法,链路层的差错检测通常更复杂,并且用硬件实现。
以太网和无线局域网是广播链路层技术的例子。在多路访问问题方面,以太网协议是带碰撞检测的载波侦听多路访问协议CSMA/CD。但对于今天广为使用的以太网是基于交换机switch的星形拓扑,采用的是存储转发分组交换。并且现代交换机是全双工的,使得一台交换机和一个节点能够在同时向对方发送帧而没有干扰。In a nutshell,在基于交换机的以太网局域网中,不会有碰撞,因此也没有必要使用CSMA/CD了。
以太网的帧结构如下图所示。
- 数据字段 (46-1500bytes),网络层数据报,
- 目的地址(6bytes),包含目的MAC地址,
- 源地址(6bytes),包含源的MAC地址,
- 类型(2bytes), 允许以太网复用多种网络层协议,
- CRC(4bytes),循环冗余检测
- 前同步码(8bytes),前7个字节用于“唤醒”接收适配器,并且将它们的时钟和发送方的时钟同步。第8个字节的最后两个bits警告适配器B,“重要的内容”就要来了。
以太网技术向网络层提供不可靠服务,不管有没有通过CRC校验,接收方都不会向发送方发送确认帧。没有通过CRC校验的话,接收方只是丢弃该帧。缺乏可靠的传输使得以太网简单和便宜,同时也意味着传递到网络层的数据报流能够有间隙。但同时也意味着以太网不能直接应用于具有实时要求的工业场景中。
2. EtherCAT
EtherCAT是德国Beckhoff自动化公司2003年提出的实时工业以太网(IEC 61158)。网络层和传输层都删掉了,只保留了物理层、链路层和应用层。如下图所示。
在链路层上,EtherCAT采用的是主从模式,而非ethernet的对等模式。如下图所示。主站把封装好的帧发送出去,帧包含从站节点信息,包括寻址、EtherCAT命令类型以及实际过程数据。帧在网络中传输时,每个从站都会查找并提取属于它的数据,并在帧向下游传输时将新数据插入回帧中。当帧到达最后一个从站时,利用以太网的全双工功能将帧发送回主站。
EtherCAT数据帧整体上由以太网头、EtherCAT数据、Ethernet帧校验序列(frame check sequence, FCS)组成,如下图所示。Ethernet头中包含目的地址(6 bytes)、源地址(6 bytes)和类型(2 bytes),其中,EtherCAT的类型标识为0x88A4。
EtherCAT Data包含EtherCAT头、EtherCAT数据报以及用于补齐数据报的Padding,如下图所示。
其中,EtherCAT头标识数据报的长度和协议类型,共计2 bytes,如下图和下表所示。
字段 | 数据类型 | 值/说明 |
Length | 11 bits | EtherCAT数据报的长度(不包含FCS) |
Reserved | 1 bit | 保留位,0 |
Type | 4 bits | 协议类型。EtherCAT从站控制器仅支持EtherCAT命令(type=0x1) |
字段 | 数据类型 | 值/说明 |
Cmd | byte | EtherCAT命令类型,指定寻址方式及读写方式 |
Idx | byte | 索引是主站用于识别重复或丢失的数据报的数字标识符。EtherCAT从站不应该更改索引 |
Address | 4 bytes | 从站地址:自增、设备地址或逻辑地址 |
Len | 11 bits | 该报文的数据长度 |
R | 2+1=3 bits | 保留位,0 |
C | 1 bit | 循环帧标识,0标示帧没有循环,1表示帧已经循环一次 |
M | 1 bit | 标识是否有另一个EtherCAT数据报跟随的位,0表示最后的一个EtherCAT数据报,1表示后面还有数据报 |
IRQ | 2 bytes | 所有从站设备的EtherCAT事件请求寄存器通过逻辑与合并 |
Data | n bytes | 读或写的数据 |
WKC | 2 bytes | 工作计数器 |
综上,EtherCAT数据帧整体如下图所示。
EtherCAT最精确的同步机制基于分布式时钟DC,网络中各节点的时钟校准基于硬件。EtherCAT使用参考时钟,通常来自网络中的第一个DC从站。该参考时钟的时间分布在网络中的所有节点上,产生的抖动小于1μs。为了补偿由于网络中每个时钟的速度差异而导致的各种时钟飘逸,设备根据参考时钟定期进行自我调整。由于所有节点都在同一参考时钟上运行,因此可使用由精确的本地时钟管理的周期性触发器在网络上同时应用过程数据和输出信号。
此外,EtherCAT还支持非循环通信,包括各种邮箱协议,但这不能保证实时传输。
EtherCAT实现的系统架构主要包含三个组件:配置文件、主站和从站。配置文件包含有关从站配置和网络拓扑的详细信息。主站使用配置文件来配置和初始化EtherCAT网络,管理EtherCAT网络、与从站交换数据以及与外部应用程序连接。从站通常是传感器、驱动器、执行器和I/O模块,在自动化系统中执行特定任务。
从站信息ESI文件是用XML写的,由从站制造商提供,包含从站的详细信息,如设备类型、支持的邮箱协议、同步设备及其输入和输出过程数据的映射。
网络信息ENI用于定义网络拓扑、从站在网络中的定位以及所有从站的过程数据结构。ENI文件被主站用来配置和初始化网络。
主站通常用PC、PLC、运动控制器来实现,负责与从站通信从而控制从站所属的设备。主站还负责管理网络时钟和网络同步,以及看门狗定时器和自动重试等错误处理机制。从站需要从站控制器ESC,用专用芯片实现。从站也具有内置的错误处理机制,有助于确保可靠的通信并防止错误导致系统故障。
Refs:
1.计算机网络:自顶向下方法(原书第7版)
2.https://www.acontis.com/en/what-is-ethercat-communication-protocol.html
3.https://infosys.beckhoff.com/english.php?content=../content/1033/tc3_io_intro/1257993099.html&id=