倍福EtherCAT通信协议详细解析

Posted 光怪陆离的节日

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了倍福EtherCAT通信协议详细解析相关的知识,希望对你有一定的参考价值。

  1. 简介
    1.1 运动控制
    1.2 实时以太网
    1.3 EtherCAT
  2. EtherCAT原理介绍
    2.1 实时性
    2.2 端口管理
    2.3 EtherCAT网络拓扑
    2.4 EtherCAT网络协议栈
    2.5 EtherCAT数据帧格式
    2.6 EtherCAT设备寻址方式
    2.7 分布式时钟(Distribute Clock)
    2.8 应用层(Application Layer)
    2.9 设备配置(Device Profile)
    2.10 主站设计
    2.11 从站设计
  3. 应用层(Application Layer)
    3.1
    3.2 EtherCAT Slave Implementation (从站实现)
  4. 应用实例
    4.1 主站操作系统(RTAI)
    4.2 主站EtherCAT程序(IGH)
    4.3 主站应用开发(LinuxCNC)
    4.4 ET1200
    4.5 从站程序设计
    4.6 实验测试
  5. 工具
    5.1 TwinCAT
    5.2 LinuxCNC
    5.3 开源的EtherCAT Master
  6. 简介
    1.1 运动控制
    运动控制系统处理机械系统中一个或多个坐标上的运动以及运动之间的协调,实现精确的位置控制、速度和加速度控制、转矩和力的控制等。

单轴的运动控制系统可分为开环、半闭环和闭环伺服系统。

多轴运动控制系统可以分成点位控制、连续轨迹控制和同步控制。

典型的运动控制系统,从结构上看,包括上位机控制窗口、运动控制器、驱动器、电机以及测量反馈系统等几个部分组成:

1.2 实时以太网
实时以太网(RTE, Real Time Ethernet)是常规以太网技术的延伸,以便满足工业控制领域的实时性数据通信要求。目前,国际上有多种实时工业以太网协议,根据不同的实时性和成本的要求使用不同的原理,大致可以分为以下三类:

(1)基于TCP/IP实现的工业以太网仍使用TCP/IP协议栈,通过上层合理的控制来解决通信过程中的不确定因素。这种方式具有较高的传输速率,适应于大量数据通信,更适合作为网关和交换设备的应用,不能实现很好的实时性。常用的通信控制方法有:合理调度,减少冲突的概率;定义帧数据的优先级,为实时数据分配最高优先级;使用交换式以太网等。使用这种方式的典型协议有Modbus/TCP和Ethernet/IP等。
(2)基于以太网实现的工业以太网仍然使用标准的、未修改的以太网通信硬件,但是不适用TCP/IP来传输数据。它使用特定的报文进行传输。TCP/IP协议栈能使用时间控制层分发一定的时间片来利用网络资源。该类协议主要有Ethernet Powerlink, EPA C Ethernet for Plant Automation ), PROFINET IRT等。通过这种方式可以实现较好的实时性。
(3)通过修改以太网协议实现的工业以太网,实现应答时间小于lms的硬实时,从站使用特定的硬件实现。由实时MAC控制实时通道内的通信,从根本上避免报文间的冲突。非实时数据依然能在通道中按原协议通信。典型协议有德国倍福的EtherCAT、西门子的PROFINET IRT等。
1.3 EtherCAT
德国BECKHOFF自动化公司于2003年开发出的EtherCAT实时以太网技术突破了其他以太网解决方案的系统限制:通过该项技术,无需接受以太网数据包,将之解码,然后再将过程数据复制到各个设备。

  1. EtherCAT原理介绍
    EtherCAT从站设备在报文经过其节点时读取相应的数据报文,同样输入数据也是在报文经过时插入到报文中。整个过程报文只有几纳秒的时间延迟,实时性获得极大提高

EtherCAT作为一种工业以太网总线,充分利用了以太网的全双工特性。使用主从通信模式,主站发送报文给从站,从站从中读取数据或将数据插入至从站。

主站可使用标准网卡实现,
从站选用特定的EtherCAT从站控制器ESC(EtherCAT Slave Controller)或者FPGA实现,
主要完成通信和控制应用两部分功能,EtherCAT物理层选用标准以太网物理层器件。

从站能将收到的报文直接处理,并读取或插入有关的数据,再将报文发送给下一个EtherCAT从站。最末尾的EtherCAT从站返回处理完全的报文,然后由第一个从站发送给主站。整个通信过程充运行于全双工模式下,TX线发出的报文又通过RX线返回给主站:

2.1 实时性
数据包刷新时间的计算
数据包中所有从站的 Process Datarocess Datarocess Data rocess Data rocess Data rocess Datarocess 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 Byte。
数据包长度:84-18+600=1266 Byte =671*8 Bit =5328 Bit
总线刷新时间:(5328 Bit/100,000,000 Bps) *2=100.656µs
1
2
3
注意,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.2 端口管理
一个从站控制器最多可以有4个端口,如果一个端口关闭了,控制器主动连接下一个端口。端口可以随着EtherCAT命令主动的打开或者关闭。逻辑端口设置决定了EtherCAT帧的处理和发送顺序。




2.3 EtherCAT网络拓扑
所有数据帧在网络中以一种“逻辑闭环”的方式传播,与网络的硬件拓朴无关,无论它是链式、菊花链、星形还是树形拓朴。

所有数据帧都由Master发出,以事前严格定义的顺序,依次经过网络上的所有从站,走过一个完整的闭环后回到Master 。
所有数据帧通过从站中的 EtherCAT Processing Unit (EtherCAT处理单元)只有 1 次。

线型拓扑:
任意数目的设备成线型连接
最多65535个设备

数据处理链型拓扑

带有分支线的数据处理链型拓扑

树型拓扑:

实时星型拓扑:

冗余线缆

选择冗余电缆可以满足快速增长的系统可靠性需求,以保证设备更换时不会导致网络瘫痪。您可以很经济地增加冗余特性,仅需在主站设备端增加使用一个标准的以太网端口(无需专用网卡或接口),并将单一的电缆从总线型拓扑结构转变为环型拓扑结构即可(见图7)。当设备或电缆发生故障时,也仅需一个周期即可完成切换。因此,即使是针对运动控制要求的应用,电缆出现故障时也不会有任何问题。

EtherCAT也支持热备份的主站冗余。由于在环路中断时EtherCAT从站控制器芯片将立刻自动返回数据帧,一个设备的失败不会导致整个网络的瘫痪。例如,拖链设备可以配置为分支拓扑以防线缆断开。
2.4 EtherCAT网络协议栈


CoE(Can over EtherCAT)
PDO(Process Data Object 过程数据对象)
SDO(Service Data Object 服务数据对象)
PDI(Process Data Interface 过程数据接口)(uC, SSI, I/O)
1
2
3
4
ESM(EtherCAT State Machine)
ESI(EtherCAT Slave Information) (XML device description)
ENI(EtherCAT Network Information)
CTT(Conformance Test Tool 一致性测试工具)
SM(SyncManagers 同步管理器)
MDP(modular device description 模块化设备描述 )
1
2
3
4
5
6
2.5 EtherCAT数据帧格式
EtherCAT数据直接嵌入在以太网数据帧中进行传输,只是采用了一种特殊的帧类型,该类型为Ox88A4, EtherCAT数据帧结构如图所示:

EtherCAT数据包由数据头和数据实体两部分组成,EtherCAT数据头包含2个字节,每个数据包里面可以只包含一个EtherCAT子报文,也可以包含多个子报文;一个EtherCAT子报文对应着一个从站,因此一个EtherCAT数据包可以操作
多个EtherCAT从站,相应的数据长度在44-1498字节之间,EtherCAT数据帧结构定义:

EtherCAT Slave 入门教程 - SDO服务

邮箱服务数据帧

帧结构

  • EtherCAT子报文:
子报文头 数据 WKC

数据:

邮箱协议数据

邮箱协议数据:

Mailbox Header Mailbox Data

Mailbox Data:

CoE Header SDO

SDO:

SDO Header SDO Data
  • 描述
  1. Mailbox Header: 6 octets
    1. Length:2 octets, 指定Mailbox Data的字节数
    2. Address: 2 octets, 主从通信时,为从站地址;从站间通信,为目的从站地址
    3. Flags: 2 octets

      field size detail
      channel 6 bits 0(reserved)
      priority 2 bits 0: lowest
      ...
      3: highest
      type 4 bits mailbox data type
      counter 3 bits counter of mailbox services
      1~7
      reserved 1 bits 0
  2. Mailbox Data: x~1480 octets
    1. CoE Header: 2 octets
    2. SDO: 8~1478 octets
      1. SDO Header: 4 octets
      2. SDO Data: 4~1474 octets

SDO服务

  1. Mailbox Data type:

    value type detail
    1 AoE ADS over EtherCAT
    2 EoE Ethernet over EtherCAT
    3 CoE CANopen over EtherCAT
    4 FoE File Access over EtherCAT
    5 SoE Servo Drive Profile over EtherCAT
    15 VoE Vendor specific protocol over EtherCAT
  2. CoE Header:

    field size detail
    number 9 bits 0
    reserved 3 bits 0
    service 4 bits 1: Emergency
    2: SDO请求
    3: SDO响应
    4: TxPDO
    5: RxPDO
    6: TxPDO远程请求
    7: RxPDO远程请求
    8: SDO信息

以上是关于倍福EtherCAT通信协议详细解析的主要内容,如果未能解决你的问题,请参考以下文章

HTTP解析

网络-----27 网络通信协议

思维导图:网络通信协议标准化

思维导图:网络通信协议标准化

网络必备——动态路由之OSPF协议(超详细理论)

TCP通信流程解析