EtherCAT协议概述
一 EtherCAT简介
EtherCAT(EtherNet Control Automation Technology)是由德国公司BECKHOFF公司于2003年提出的实时工业以太网技术。其具有高速、高数据有效率的特点,支持多种设备的连接拓扑结构。从站节点使用专用的控制芯片,例如:microchip公司的Lan9252、BECKHOFF公司的ET1100等ESC(EtherCAT slave controller)芯片。主站的搭建方式有很多,例如:开源主站IGH、SOEM、商业化主站TwinCAT等。
传统的以太网在通信的过程当中每个节点是以接受、处理、转发依次进行,而EtherCAT则是同时传输和处理EtherCAT数据。每个从站的节点都有FMMU(现场总线内存管理单元),FMMU的功能是对经过从站节点的数据包进行地址分析,将逻辑地址转化为物理地址,如果数据包中有当前从站所用的数据则读出,并同时转发报文至下一个从站节点,同样的,在报文经过时也可以插入数据。
每个EtherCAT从站在接收到的报文中提取或者插入用户数据,然后将处理好的报文发送到下一个EtherCAT从站,报文在依次被所有从站处理之后由最后一个EtherCAT从站回传,并由第一个从站作为响应报文返回给EtherCAT主站控制单元。整个过程基于以太网的全双工模式,通过TX线发送出去的报文会从RX线返回,因此在EtherCAT通信系统中,任何物理拓扑结构在逻辑上永远是环形。
二 EtherCAT的数据帧格式
EtherCAT在基于传统以太网数据帧格式做出了修改,将其中的EtherType(帧类型)修改为了0X88A4,EtherType是以太帧中的一个字段,用来指明应用于帧数据字段的协议。例如:0X0806 地址解析协议ARP、0X08DD IPV6等。
传统的以太网帧结构由以太网帧头、以太网数据、FCS帧校验组成,最大1514字节。在这里EtherCAT并未修改数据帧结构,而是对数据区域做了细分,将EtherNet data分为了EtherCAT头和EtherCAT数据。其中EtherCAT头包括了EtherCAT数据长度、保留位、类型,将EtherCAT数据区分为了多个子报文,每个报文含有子报文头、数据、WKC(工作计数器)。具体细分如下图。
目的地址:接收方的MAC地址 源地址:发送方的MAC地址 帧类型:0X88A4 EtherCAT帧 FCS(Frame check sequence):帧校验序列
EtherCAT头(数据长度):EtherCAT数据区的长度 EtherCAT头(类型):1表示与从站通信,其余保留
EtherCAT子报文结构定义:
其中子报文头的作用是确定此子报文由哪一个从站使用、什么操作命令、处理多长的数据等。WKC主要是记录报文被对应从站操作的类型和次数,主站在发送EtherCAT报文前会根据要进行的操作预设一个WKC值,将数据帧发给从站,如果从站操作成功(RD+1、WR+2、RD/WR+3),从站以硬件方式使WKC增加,最终返回报文携带该数值与主站预设值进行对比,来检查EtherCAT数据报是否有效的处理。
三 EtherCAT的寻址方式
(1)网段寻址
- 直连模式:主站设备通过与EtherCAT网段的直接端口连接来对MAC地址进行广播。
- 开放模式:主站设备通过以太网交换机与EtherCAT网段进行连接,网段可以使用EtherCAT数据帧当中的目的地址来做MAC地址。
(2)设备寻址
EtherCAT数据帧中的子报文头有32位地址区,其中前16位是从站设备的设备地址,后16位是设备内部物理存储空间地址。16位从站设备地址可以寻址65535个从站设备,每个设备最多可以有64K字节的本地地址空间。
- 顺序寻址(自动增量寻址):从站的地址由物理连接顺序决定,从站地址自动加一,一般用于主站启动阶段,主站为从站分配地址,无需从站设置。
- 设置寻址:该地址与从站物理连接顺序无关,通常有两种配置方式:1 >数据链路层启动阶段由主站配置给从站 2>在上电初始化的时,从站从自身的EEPROM的配置文件中读取出来。主站利用顺序寻址的方式来读取从站设置的地址,掉电后固定地址会丢失。
(3)逻辑寻址
在逻辑寻址模式下,报文内的32位地址空间用来寻址,整个网段有4GB地址空间可以被寻址。逻辑寻址方式由FMMU(现场总线内存管理单元)来实现,ESC芯片中的FMMU单元将从站本地的物理地址映射到网段内的逻辑地址。当从站收到来自主站的报文时,会检查报文中的地址是否与FMMU中的地址相符,如果有,将根据操作类型进行读写操作。
参考:
https://www.youtube.com/watch?v=-crTapwT_HI
https://www.bilibili.com/video/BV1Fb4y1x71w/?spm_id_from=333.337.search-card.all.click&vd_source=835c74286eb721ae3d8723f55c9feec8