EtherCAT
(以太网控制自动化技术,Ethernet for Control Automation Technology)
本文用于记录学习,主要摘自此文,侵删
S1 概述
1.1 介绍
由德国倍福(Beckhoff)公司提出的一种实时以太网技术。EtherCAT是一种开放但不开源的技术,意味着您可以任意使用这项技术,但若要进行相关设备的开发,则需要向倍福公司获取相关授权。
1.1.1 主从架构
EtherCAT采用主从式通信结构(Master-Slave),主站是总线的“大脑”,负责通信的发起、处理和调度,从站主要负责接收主站的指令数据并返回结果。同时,EtherCAT具有较高的实时性,有利于高精度控制。
网络组态于PC主机上进行配置,需要使用到相应的EMI(EtherCAT Master Information Files)、ESI(EtherCAT Slave Information Files)文件,经专用配置软件(通常于主站配置软件中集成)进行配置后生成ENI(EtherCAT Network Information Files)文件下载至主站中,主站便依据该文件进行整个网络的识别。
图中关于EtherCAT从站设备的内部组成,即是一个实现EtherCAT协议OSI模型的过程:RJ45网口、PHY物理层芯片用于实现物理层协议;ESC用于实现链路层协议,通常使用倍福官方的ET1100芯片实现;MCU则用于实现应用层协议,需要厂商自行根据相应的协议编写程序代码,或是直接使用协议栈代码实现。
1.1.2 ISO/OSI参考模型
EtherCAT仅使用了物理层、链路层、应用层三层协议,与多数传统的现场总线相同,但相比于其它实时以太网协议,如PROFINET、EtherNet/IP等,其协议栈更加精简。这也是EtherCAT协议的实时性优越于其它实时以太网协议的重要原因之一。
1.2 物理层
采用通RJ45接口、物理层PHY芯片,通信介质可采用TX(双绞线,max:100m)或FX(光纤,max:20km)进行传输,另有LVDS形式可供进行电路板级的协议数据传输。
1.3 链路层
1.3.1 特点
- 采用IEEE 802.3标准以太网帧结构
- 支持UDP,不支持IP协议
- 报文帧的传输要通过专用硬件(如ET1100)
1.3.2 数据帧解析
- Cmd:8bit命令码。具体有RD(读)、WR(写)、RW(读写)等行为,结合下面提到的数种寻址方式(AP、FP、L、B)共同构成命令码部分;
- Idx:8bit索引值,供Master识别该帧;
- Address:32bit寻址方式;
- 广播寻址(B):每个从站都可识别该帧;
- 自增量寻址(AP):通常用于主站启动时进行整个网络组态的扫描。从0开始,负自增地识别每个从站(0x0000、0xFFFF、0xFFFE……),每次经过从站都会使帧的地址值-1;
- 定点寻址(FP):帧包括16bit节点地址与16bit偏移量,max带动65536台从站,每个从站max数据65536个。该帧可以识别
- 逻辑寻址(L):
- Len:11bit数据段长度,与后面Data段长度对应;
- R:3bit保留位;
- C:1bit帧循环标志;
- M:1bit后续报文标志,0表示当前报文为最后一个报文,1表示后续会提供更多报文;
- IRQ:16bit中断请求标志;
- Data:报文帧数据段,可为0-1486 Bytes;
- FMMU管理机制:用于每个Slave的每个数据进行自身物理地址与通信逻辑地址的映射。对于Master而言同一逻辑地址可以访问多个Slave的物理地址,实现报文1对N访问数据。
- WKC自增计数器:用于校检报文帧的命令是否正确的运行。报文帧的Cmd正确执行后,相应的WKC会自增相应的值。在报文返回Master时会和Master自己计算的MKC进行对比,检验报文帧是否正确执行。
1.4 应用层
EtherCAT应用层支持多种设备行规以实现邮箱通讯,包括CANopen、SERCOS、HTTP等,基于EtherCAT的应用层行规被称为xoE协议(xxx over EtherCAT)。
1.4.1 各种协议
1.4.2 站点状态机
- Init:初始化状态。检查数据链路是否正确,与应用层无数据交互。
- Pre-Op:预操作状态。仅进行邮箱通信,不进行过程数据交互。
- Safe-Op:安全运行状态。可进行邮箱通信,并允许过程数据输入,不可输出。
- OP:操作状态。可进行完全的数据通信,正常的工作状态。
- Bootstrap:引导状态。仅适用于FoE邮箱通信,用于固件更新。
S2 主站(Master)
2.1 SOEM(Simple Open EtherCAT Master)开源协议栈
github-SOEM
EtherCAT 主站协议栈是 EtherCAT 主站的主要功能模块,使用开源 SOEM 协议栈实现,主要功能包括:
- 对EtherCAT数据报文(应用层)封装成数据帧(数据链路层),并发送;
- 接收EtherCAT数据帧(数据链路层),并对数据报文(应用层)进行识别解析;
- 管理Slave状态机,负责其状态配置、切换、维护;
- 进行非周期性邮箱数据通信,完成Slave系统参数配置;
- 进行周期性过程数据通信,周期性与Slave交互PDO (Process Data Object) 数据,通过对 PDO 的操作完成对Slave的控制和监控等功能;
底层数据收发模块实现利用网卡传输数据的功能,主要包括:
(1)将 EtherCAT 主站协议栈封装好的数据通过网卡驱动处理然后从网卡发送给从站;
(2)从网卡接收 EtherCAT 返回数据帧并将其传送给 EtherCAT 主站协议栈。