前言
EtherCAT(Ethernet for Control Automation Technology)是一种基于以太网的开发构架的实时工业现场总线通讯协议,它于2003年被引入市场,于2007年成为国际标准,并于2014年成为中国国家标准。EtherCAT的出现为系统的实时性能和拓扑的灵活性树立了新的标准。
1)EtherCAT是最快的工业以太网技术之一,同时它提供纳秒级精确同步。相对于设置了相同循环时间的其他总线系统,EtherCAT系统结构通常能减少25%-30%的CPU负载。
2)EtherCAT在网络拓扑结构方面没有任何限制,最多65535个节点可以组成线型、总线型、树型、星型或者任意组合的拓扑结构。
3)相对于传统的现场总线系统,EtherCAT节点地址可被自动设置,无需网络调试,集成的诊断信息可以精确定位到错误。同时无需配置交换机,无需处理复杂的MAC或者IP地址。
4)EtherCAT主站设备无需特殊插卡,从站设备使用可以由多个供应商提供的高集成度、低成本的芯片。
5)利用分布时钟的精确校准EtherCAT提供了有效的同步解决方案,在EtherCAT中,数据交换完全基于纯粹的硬件设备。由于通讯利用了逻辑环网结构和全双工快速以太网而又有实际环网结构,“主站时钟”可以简单而精确地确定对每个“从站时钟”的运行补偿,反之亦然。分布时钟基于该值进行调整,这意味着它可以在网络范围内提供信号抖动很小、非常精确的时钟。
总体来说EtherCAT具有高性能、拓扑结构灵活、应用容易、低成本、高精度设备同步、可选线缆冗余和功能性安全协议、热插拔等特点。
一、网络寻址原理
EtherCAT以以太网为基础,发送标准以太网数据帧。EtherCAT主站发送的每一个数据帧经过所有节点,在数据帧向下游传输的过程中,每个节点读取寻址到该节点的数据,并将它的反馈数据写入数据帧。这种传输方式改善了带宽的利用率,使得每个周期通常用一个数据帧就足以实现数据通信,同时网络不再需要使用交换机和集线器。数据帧的传输延时只取决于硬件传输延时,当某一个网段或者分支上的最后一个节点检测到开放端口(没有下一个从站)时,利用以太网技术的全双工特性将报文返回主站。
在数据传输的过程中EtherCAT根据不同的应用采用不同的寻址方式,三种不同的寻址方式被分别应用到Ethercat网路配置,邮箱通信和过程数据通信中。
(一)自增量寻址
1)每个从站根据其所处位置的先后分配一个十六位的负的自增量地址.
2)当数据帧经过时从站只处理自增量地址为零的子报文。
3)在经过每个从站时数据帧中所有自增量地址加一。
4)通常用于扫描硬件的配置信息。
说明:自增量寻址一般用在启动阶段,主站通过自增量寻址对从站做一些配置。如上图所示数据帧中的地址信息按从零开始以此递减使其与从站位置相对应。当数据帧经过从站时,从站只处理地址为零的子报文。例如当第一个从站处理其对应的报文之后,报文中所有自增量地址加一,此时自增量地址从新为零的数据帧为第二个从站需要处理的数据,以此类推主站将按照数据帧在整个网络中的移动顺序依次遍历整个网络。
(二)固定地址寻址
1)每个从站有一个固定的地址(16 bit)
2)通常在硬件配置扫描的过程中被分配。
3)与从站的位置无关
4)当断电后固定地址丢失
说明:在经过启动配置之后每个从站分配一个固定的地址,以便用于固定地址寻址。固定地址寻址一般用于主站与从站以邮箱方式的通信中(例如SDO),在邮箱方式通信时EtherCAT主站根据从站的固定地址寻址到所要交换数据的从站,数据只在两者之间进行交换,适用于主站与某一个从站交换相对较大的数据。
(三)逻辑寻址
1)从站在一个虚拟的4GByte 数据空间进行读写操作。
2)逻辑地址映射到从站中减轻了控制系统的负担。
3)数据根据应用程序所指定的逻辑地址被传输。
要求:快速,灵活并且高效的传输。
说明:逻辑寻址特别适用于在过程数据的通信过程中,每个从站的物理地址通过FMMU被映射到一个逻辑地址中。主站通过操作逻辑地址控制从站,使用逻辑寻址可以灵活地组织控制系统,优化系统结构。
二、EtherCAT主站协议栈介绍
北京盟通科技有限公司是德国acontis在中国大陆唯一授权的合作伙伴,德国acontis公司提供跨平台、跨操作系统的商用EtherCAT主站协议栈及主站解决方案,其产品的专业性和可靠性得到全球超过200家工业客户的信赖与认可,包括KUKA机器、伦茨、阿尔斯通、巴赫曼等众多国际知名企业。
(一)支持的操作系统
(二)支持的CPU架构
三、支持的网卡型号
Link Layer Name |
Controller / Device ID |
WinXP Win7 |
WinCE |
VxWorks |
On Time RTOS-32 |
QNX Linux T-Kernel |
RTX INtime |
DOS GO32 |
emllPcap |
OS driver |
x86 |
- |
- |
- |
- |
- |
|
emllSnarf |
OS driver |
- |
- |
x86, PPC |
- |
- |
- |
|
emllI8255x Intel Pro/100 |
82551QM / 0x1059 82555VE2 / 0x27DC 82557 / 0x1229 82557ER / 0x1209 82559ER / 0x2449 82562 / 0x1039 82801DB / 0x103A 82801EB / 0x1050 Pro/100/M / 0x1229 Pro/100/S / 0x1229 Pro/100/VE /0x1092 |
- |
x86 |
x86, PPC |
x86 |
x86 |
x86 |
- |
emllI8254x Intel Pro/1000 |
82540EM / 0x100E 82541EI / 0x1013 82541ER / 0x1078 82541GI / 0x1076 82541GI / 0x1077 82541PI / 0x107C 82545GM / 0x1026 82546EB / 0x1010 82546GB / 0x1079 82547EI / 0x1075 82547GI / 0x1019 82566DM / 0x104A 82566L / 0x10BD 82566MC / 0x104D 82567V / 0x10CE 82567V / 0x1501 82567LM / 0x10DE 82567LM / 0x10F5 82571GB / 0x10A4 82571GB / 0x10BC 82572GI / 0x10B9 82572PI / 0x107D 82573 / 0x108C 82573E / 0x108B 82573L / 0x109A 82574(L) / 0x10D3 82575 / 0x10A7 82577LM/0x10EA 82577LC / 0x10EB 82576 / 0x10C9 82576 ET2 / 0x1526 82578DM / 0x10EF 82578DC / 0x10F0 82579LM / 0x1502 82579V / 0x1503 82580 / 0x150E 82580 QF / 0x1527 82583V / 0x150C N1E5132 / 0x105E I350 / 0x1521 I210 / 0x1533 I210 CFL / 0x157B I211AT / 0x1539 I217LM / 0x153A I217V / 0x153B I218LM / 0x155A |
x86 |
x86 |
x86 |
x86 |
x86 |
x86 |
- |
I218V / 0x1559 |
||||||||
emllL9218i SMSC LAN9218i |
L9218i |
- |
ARM STR9 |
- |
- |
- |
- |
|
emllRTL8139 Realtek RTL8139 |
8139D / 0x8139 D-Link 8139D / 0x1300 |
- |
x86 |
x86 |
- |
x86 |
- |
|
emllRTL8169 Realtek Gigabit NIC (PCIe, PCI) |
RTL8110 / 0x8169 RTL8111 / 0x8168 RTL8168 / 0x8168 RTL8169 / 0x8169 D-Link RTL8169 / 0x4300 RTL8169SC/0x8167 RTL8103 / 0x8136 |
- |
x86 |
x86 |
x86 |
x86 |
x86 |
- |
emllCPSW |
Texas Instruments Sitara on board |
ARM |
ARM |
ARM |
- |
|||
emllETSEC |
Freescale PowerPC TSEC/eTSEC controller eTSEC v1 and v2 |
PPC |
PPC |
- |
||||
emllFslFec |
Freescale FEC and ENET controller |
ARM |
ARM |
ARM |
- |
|||
emllR6040 |
RDC R6040 |
- |
x86 |
- |
- |
- |
- |
x86 |
四、EtherCAT性能测试
1. EtherCAT总线时序图
在实际应用中,客户根据产品的性能要求确定总线循环周期Cycle Time的时间长短。在每个循环周期内,EtherCAT主站的CPU必须完成下列几项任务:已接收数据帧的处理、客户应用处理、发送数据和主站协议栈管理,非周期数据的处理在每个循环周期中可选,如下面总线时序示意图所示。
总线时序图说明:
EtherCAT主站接收周期和非周期输入数据,
函数使用参数:eUsrJob_ProcessAllRxFrames 功能:接收所有的输入数据帧。
EtherCAT主站发送周期数据输出
函数使用参数:eUsrJob_ProcessAllCvcFrames 功能:发送循环数据帧。
EtherCAT 主站管理,
函数使用参数:eUsrJob_MasterTimer 功能:触发主站和从站的状态机。
EtherCAT主站发送非周期性数据,如SDO,
函数使用参数:eUsrJob_SendAcvcFrames 功能:发送非周期数据帧。
客户应用:处理输入数据并生成输出数据,用户程序所要完成的操作在这里进行。
2. Acontis主站EC-Master性能测试环境设置
EC-Master性能测试环境包含了七个从站:EK1100、2xEL2004、2xEL1014、EL4132和EK1110。
传输的过程数据包含512个字节的数据(256个输入和256个输出),填充了一个大小为579字节的数据帧。此外主站与EL4132使用邮箱方式进行非周期数据交换。主站协议栈每个循环周期内占用的CPU时间请参考测试结果。
3. 测试结果(CPU平均负载)
平台 |
芯片 |
主频 |
网卡 |
协议栈占用CPU时间 |
主站版本 |
操作系统 |
Intel |
Atom D510 |
2 x 1600MHz |
Realtek8111 |
14µs |
2.3.1.99 |
VxWorks |
Intel |
Atom D510 |
2 x 1600MHz |
Realtek8111 |
16.5µs |
2.3.1.99 |
QNX |
Intel |
Atom D510 |
2 x 1600MHz |
Pro 1000 |
16µs |
2.3.1.99 |
VxWorks |
Intel |
Atom D510 |
2 x 1600MHz |
Pro 1000 |
16µs |
2.3.1.99 |
QNX |
Intel |
Atom Z510 |
1100MHz |
Realtek8169 |
19µs |
2.4.1.3 |
Window CE6.0 |
Intel |
Atom D510 |
2 x 1600MHz |
Realtek8111 |
14µs |
2.3.4.1 |
Window CE6.0 |
ARM |
XILINX ZYNQ XC7Z020 |
2 x 667MHz |
SockRaw Polling |
62µs |
2.5.3.4 |
Linux 3.0.0 SMP PREEMPT |
ARM |
Holster netX |
200MHz |
netX |
216µs |
2.2.1.3 |
rcX |
PPC |
P2020 e500V2 |
1200MHz |
eTSEC |
14µs |
2.4.1.3 |
VxWorke 6.8 |
ARM |
TI DM8168 |
1000MHz |
Internal |
79µs |
2.4.1 |
Linux |
ARM |
TI AM335x |
720MHz |
CPSW |
50µs |
2.6.2.15 |
Starterware |
ARM |
TI AM335x |
720MHz |
CPSW |
36µs |
2.6.0.99 |
QNX |
Intel |
Core2 Duo |
2190MHz |
Pro 1000 |
9µs |
- |
- |
Intel |
Core2 Duo |
2800MHz |
Realtek 8169 |
7µs |
2.5.0.0 |
Linux RT Preempt |
ARM |
- |
96MHz |
SMSC 9218i |
644µs |
- |
MQX |
ARM |
iMX25 |
400MHz |
FECFSL |
283µs |
2.4.1.3 |
- |
ARM |
Renesas R-IN32 |
100MHz |
internal |
125µs |
2.7.0.99 |
iTron (HWRTOS) |
注释:协议栈占用CPU时间是指在每个循环周期中I、O、A、M(数据接收,周期数据发送,主站管理,非周期数据发送)所用时间的总和。