一、EtherCat背景介绍
EtherCAT
是一种用于实时以太网通信的现场总线协议。它由德国Beckhoff
公司于2003年开发,并在2014年成为国际电机工程师协会(IEC)的国际标准(IEC61158-12)。
EtherCAT
的设计目标是实现高性能的实时通信,同时保持低成本和简单的网络结构。它通过在数据帧中实时传输和处理数据,从而实现低延迟和高带宽。这使得EtherCAT适用于需要快速响应和高精度控制的应用,如工业自动化、机器人控制和测试测量。
EtherCAT
采用主从式结构,其中一个主站(Master
)负责控制和同步网络中的从站(Slave
)。主站发送控制命令和数据,从站接收并执行这些命令。EtherCAT网络可以支持多达1000个从站,每个从站都有自己的网络地址和唯一的标识符。
通过EtherCAT,从站可以实时传输输入和输出信号,如传感器数据、执行器状态和控制命令。这使得系统能够实现高度的分布和灵活性,从而适应各种应用需求。
EtherCAT还支持多种拓扑结构,包括线性、树形和环形结构。这使得网络的构建更加灵活,并且可以根据应用的要求进行优化。
总的来说,EtherCAT
是一种高性能实时以太网通信协议,具有低成本、简单的网络结构和灵活性的特点。它在工业自动化和控制领域得到广泛应用,并且在多个国际标准中被采用。
二、EtherCat协议介绍
2.1 EtherCAT
链路层
EtherCAT
从站设备在报文经过其节点时读取相应的数据报文,同样输入数据也是在报文经过时插入到报文中。整个过程报文只有几纳秒的时间延迟,实时性获得极大提高。
EtherCAT
作为一种工业以太网总线,充分利用了以太网的全双工特性。使用主从通信模式,主站发送报文给从站,从站从中读取数据或将数据插入至从站。
- 主站可使用标准网卡实现
- 从站选用特定的·
EtherCAT
从站控制器ESC
(EtherCAT Slave Controller)或者FPGA
实现,
主要完成通信和控制应用两部分功能,EtherCAT物理层选用标准以太网物理层器件。
从站能将收到的报文直接处理,并读取或插入有关的数据,再将报文发送给下一个EtherCAT
从站。最末尾的EtherCAT
从站返回处理完全的报文,然后由第一个从站发送给主站。整个通信过程充运行于全双工模式下,TX
线发出的报文又通过RX
线返回给主站:
对于开发者而言,链路层的原理只需要知道EtherCAT
的模型概念:报文是由主站发出,然后像一条列车一样发往各个从站,每个从站认为是串联起来的,会按照目前串联的位置顺序对数据进行发送,就像是列车的轨道一样;每到一站,数据就像货物一样可以以极快的速度进行上下车,到达最后一站就开始原路返回(在网线上看就是在同一根网线里的TX
和RX
,其中TX
就是列车出发的方向,RX
就是返程的方向。每个从设备一般有两个以太网口,一个口对接上一个从设备,另一个对接下一个从设备,而对应连接的两条网线在本地被“连接”成了一条网线,所以整个网络的所有网线可以认为是同一根网线。),数据每经过一个往返就完成了一次通信,主站就是列车的起始站,所有通信都是由主站发起并把控的。
2.2 实时性
- 数据包刷新时间的计算
数据包中所有从站的 Process Data数据 决定了数据包的长度。
一个Ethernet thernet
数据包最小84 字节,不足 84 字节会补齐84 字节。由于EtherCAT Frame
中有一些公共开销, 84 字节的数据包最多含18字节的过程数据。考虑到数据包必须经过每个从站两次才能回到主站,所数据包以固定的波特率100 Mbps在网络上传输两次的时间 这就是它的总线刷新时间 。
1.基于这个原则,以包含 1000路开关量信号的数据包为例,计算过程如下:
过程数据长度:1000/8=125Bytes
数据包长度:84-18+125=191Bytes=191*8 Bit= 1528 Bit
总线刷新时间:(1528Bit/100,000,000 Bps)*2=15.28us * 2 = 30.56us
注意,通常的数字量模块, 都是单纯的输出或者输入模块,而不是混合模块。所以 1000 个数字量信号, Frame 中就会分配 125 字节。
2.再以包含100个EtherCAT伺服驱动器 过程数据的EtherCAT数据包为例,假如每个伺服的过程数据只包括控制字(2字节)、状态字(2字节)、目标位置(4字节)、实际位置(4字节),其总线刷新时间的计算过程如下:
过程数据长度:100*(2+4)=600 Bytes。
数据包长度:84-18+600=671 Bytes =671*8 Bit =5328 Bit
总线刷新时间:(5328 Bit/100,000,000 Bps) *2=100.656µs
注意,Frame中只为一个伺服分配了6个字节,这是因为根据Beckhoff公司的控制软件TwinCAT中关于EtherCAT的默认设置是从站的Input和Output使用同一数据段,所以数据包进入伺服驱动器时该数据段存放的是控制字和目标位置,而出来时则存放伺服的状态字和实际位置。
以上两个数据30.56µs和101.28 µs就是EtherCAT官方宣传资料中,刷新1000个数字量需要30µs,刷新100个伺服轴只需要100µs的数据由来。实际上,根据从站的类型、是否包含分布时钟、是否启用时钟同步、时钟同步的参数设置不同,在数据包中有可能还会增加8-12字节用于传输同步时钟值,以及相应的为每个从站增加一个Bit的标记等等,会增加几个微秒的刷新时间,暂且忽略不计。
以上计算只是数据包传输需要的理论时间,实际上,数据包经过每个从站会产生短暂的硬件延时。100M超五类网线接口的从站延时约1µs,而EBus的IO模块类从站延时约0.3µs,在毫秒级以下的控制任务中如果从站数量较多,这个时间也相当可观,计算刷新周期时应该考虑进去。
2.3 EtherCAT网络拓扑
所有数据帧在网络中以一种“逻辑闭环”的方式传播,与网络的硬件拓朴无关,无论它是链式、菊花链、星形还是树形拓朴。
2.3.1 线型拓扑
任意数目的设备成线型连接