工业以太网现场总线
1.EtherCAT协议
1.1 EtherCAT系统组成
EtherCAT主站组成
EtherCAT主站使用标准以太网控制器,通信控制器完成以太网数据链路的介质访问控制功能,物理层芯片PHY实现数据编码、译码和收发,它们之间通过一个MII(Media Independent Interface)接口交互数据。
EtherCAT从站组成
EtherCAT从站设备同时实现通信和控制应用两部分功能,结构由以下四部分组成;
EtherCAT从站控制器ESC
EtherCAT从站通信控制器芯片ESC(ESC,EtherCAT Slave Controller)负责处理EtherCAT数据帧,并使用双端口存储区实现EtherCAT主站与从站本地应用的数据交换。各个从站ESC按照各自在环路上的物理位置顺序移位读写数据帧。在报文经过从站时,ESC从报文中提取发送给自己的输出命令数据并将其存储到内部存储区,该输入数据从内部存储区又被写到相应的子报文中,数据的提取和插入都是由数据链路层硬件完成的。
ESC使用两种物理层接口模式:MII和EBUS。MII是标准的以太网物理层接口,使用外部物理层芯片,一个端口的传输延时约500ns;EBUS是德国BECKHOFF公司使用LVDS(LowVoltage Differential Signaling)标准定义的数据传输标准,可直接连接ESC芯片,避免了物理层的附加传输延时,一个端口的传输延时为100ns,EBUS最大传输距离为10m。
- 从站控制微处理器
微处理器负责处理EtherCAT通信和完成控制任务,微处理器从ESC读取控制数据,实现设备控制功能,并采样设备的反馈数据,写入ESC,由主站读取。
1.2 EtherCAT数据帧结构
以太网帧
字节 6字节 6字节 2字节 2字节 4-1498字节 4字节 内容说明 目的地址 源地址 帧类型(0X88A4) EtherCAT头 EtherCAT数据 FCS EtherCAT头
位 11位 1位 4位 n位 内容说明 EtherCAT数据长度 保留位 类型 子报文 子报文头
位 8位 8位 32位 11位 4位 1位 16位 内容说明 命令 索引 地址区 长度 R M 状态位 帧结构定义
名称 含义 目的地址 接收方MAC地址 源地址 发送方MAC地址 帧类型 0X88A4 EtherCAT头:长度 EtherCAT数据区长度,即所有子报文长度总和 EtherCAT头:类型 1:表示与从站通信;其余保留 FCS(Frame Check Sequence) 帧校验序列 子报文结构定义
名称 含义 命令 寻址方式及读写方式 索引 帧编码 地址区 从站地址 长度 报文数据区长度 R 保留位 M 后续报文标志 状态位 中断到来标志 数据区 子报文数据结构,用户定义 WKC 工作计数器
每个EtherCAT子报文包括子报文头、数据域和相应的工作计数器(WKC,Working Counter)。WKC记录了子报文被从站操作的次数,主站为每个通信服务子报文设置预期的WKC。发送子报文中的工作计数器初值为0,子报文被从站正确处理后,工作计数器值将增加,主站比较返回子报文中的WKC和预期WKC来判断子报文是否被正确处理。WKC由ESC在处理数据帧的同时进行处理,不同的通信服务对WKC的增加方式不同。
EtherCAT数据帧嵌入UDP数据帧
字节 14字节 20字节 8字节 EtherCAT数据 EtherCAT数据 EtherCAT数据 EtherCAT数据 帧校验序列 内容说明 以太网帧头 IP协议头 UDP协议头 EtherCAT头 子报文 子报文 …… FCS
1.3 EtherCAT报文寻址和通信服务
EtherCAT通信由主站发送EtherCAT数据帧读写从站设备的内部存储区来实现,EtherCAT报文使用多种寻址方式操作ESC内部存储区,实现多种通信服务。
一个EtherCAT网段相当于一个以太网设备,主站首先使用以太网数据帧头的MAC地址寻址到网段,然后使用EtherCAT子报文头中的32位地址寻址到段内设备。段内寻址分为设备寻址和逻辑寻址。支持所有寻址模式的从站称为完整型从站,而只支持部分寻址模式的从站称为基本从站。
- 设备寻址针对某一个从站进行读写操作
- 逻辑寻址面向过程数据,可以实现多播,同一个子报文可以读写多个从站设备
逻辑寻址和FMMU
逻辑寻址使用寻址段内4GB逻辑地址空间中的一段区域,报文内的32位地址区作为整体的数据逻辑地址完成设备的逻辑寻址。逻辑寻址由现场总线内存管理单元(FMMU,Fieldbus Memory Management Unit)实现,FMMU功能位于每个ESC内部,将从站本地物理存储地址映射到网段内逻辑地址。
FMMU配置示例
FMMU配置寄存器 | 数值 |
---|---|
数据逻辑起始地址 | 0X00014711 |
数据长度(字节数,按跨字节计算) | 2 |
数据逻辑起始位 | 3 |
数据逻辑终止位 | 0 |
从站物理内存起始地址 | 0X0F01 |
物理内存起始位 | 1 |
操作类型(1:只读,2:只写,3:读写) | 2 |
激活(使能) | 1 |
从站设备收到一个数据逻辑寻址的EtherCAT子报文时,检查是否有FMMU单元地址匹配,有则将输入类型数据插入到EtherCAT子报文数据区的对应位置,以及从EtherCAT子报文数据区的对应位置抽取输出类型数据。逻辑寻址特别适用于传输或交换周期性过程数据,FMMU操作具有以下功能特点:
- 每个数据逻辑地址字节只允许被一个FMMU读和另一个FMMU写操作,或被同一个FMMU进行读写交换操作
- 对一个逻辑地址的读写操作与使用一个FMMU读和另一个FMMU写操作具有相同结果
- 按位读写操作不影响报文中没有被映射到的其他位,因此允许将几个从站ESC中的位数据映射到主站的同一个逻辑字节
- 读写一个未配置的逻辑地址空间不会改变其内容
通信服务和WKC
EtherCAT子报文所有的服务都是以主站操作描述的,数据链路层规定了从站内部物理存储、读写和交换(读取并马上写入)数据的服务,读写操作和寻址方式共同决定了子报文的通信服务类型,由子报文中的命令字节表示。
EtherCAT支持的所有命令如下所示:
主站接收到返回数据帧后,检查子报文中的WKC,如果不等于预期值,则表示此子报文没有被正确处理,子报文的WKC预期值与通信服务类型和寻址地址相关。子报文经过某一个从站时,如果是单独的读或写操作,WKC+1,。如果是读写操作,读成功时WKC+1,写成功时WKC+2,读写全部完成时WKC+3。子报文由多个从站处理时,WKC是各个从站处理结果的累加。
1.4 分布时钟
分布时钟(DC,Distributed Clock)可以使所有EtherCAT设备使用相同的系统时间,从而控制各设备任务的同步执行,从站设备可以根据同步的系统时间产生同步信号,用于中断控制或触发数字量输入输出,支持分布式时钟的从站称为DC从站,分布时钟具有以下主要功能:
实现从站之间时钟同步
为主站提供同步时钟
产生同步的输出信号
为输入事件产生精确的时间标记
产生同步的中断
同步更新数字量输出
同步采样数字量输入
同步时钟
(1) 每个EtherCAT从站在从站控制器ESC内部有时钟机制,叫做从时钟
(2) 每个EtherCAT主站内部也有时钟机制,叫做主站时钟
(3) EtherCAT总线网络把第一个从站时钟当做参考时钟,将参考时钟作为整个系统的系统时钟,所有时钟包括主站时钟都向参考时钟同步
(4) 在EtherCAT总线网络中,分布时钟可以通过同步信号(SYNC信号)使所有EtherCAT总线设备使用相同的系统时间,从而控制各设备任务的同步执行
(5) SYNC信号发送周期即为同步周期
1.5 通信模式
在实际自动化控制系统中,应用程序通常有两种数据交换形式:时间关键和非时间关键。时间关键通常周期性发送,称为周期性过程数据通信,它表示特定的动作必须在确定的时间窗口内完成,若不能完成则可能引起控制失效。非时间关键数据可以非周期性发送,在EtherCAT中采用非周期性邮箱数据通信。
周期性过程数据通信
周期性过程数据通常使用FMMU进行逻辑寻址,主站可以使用逻辑读、写或读写命令同时操作多个从站,在周期性数据通信模式下,主站和从站有多种同步运行模式。
- 从站设备同步运行模式
(1) 自由运行
自由运行模式下,本地控制周期由一个本地定时器中断产生。周期事件可以由主站设定,自由运行模式的本地周期如下所示,其中T1为本地微处理器从ESC复制数据并计算输出数据的时间,T2位输出硬件延时,T3为输入锁存偏移时间。
(2) 同步于数据输入或输出事件
本地周期在发生数据输入或输出事件的时候触发,主站可以将过程数据帧的发送周期写给从站,从站可以检查是否支持这个周期时间或周期时间进行本地优化。通常同步于数据输出事件,如果从站只有输入数据,则同步于数据输入事件。
(3) 同步于分布式时钟同步事件
本地周期由SYNC事件触发,主站必须在SYNC事件之前完成数据帧的发送,此时要求主站时钟也要同步于参考时钟
为了进一步优化从站同步性能,从站应该在数据收发事件发生时从接收到的过程数据帧复制输出数据,然后等待SYNC信号到底后继续本地操作,数据帧必须比SYNC信号提前T1时间到达,从站在SYNC事件之前已经完成数据交换和控制计算,接收SYNC信号后可以马上执行输出操作,从而进一步提高同步性能。
- 主站设备同步运行模式
(1) 周期性模式
主站周期性地发送过程数据帧,主站周期通常由一个本地定时器控制,从站可以运行在自由运行模式或同步于接收数据事件模式,对于运行在同步模式的从站,主站应该检查相应的过程数据帧的周期时间,保证大于从站支持的最小周期时间。主站可以以不同的周期时间发送多种周期性的过程数据帧,以便获得最优化的带宽,如,以较小的周期发送运动控制数据,以较大的周期发送I/O数据。
(2) DC模式
主站运行与周期性模式类似,只是主站本地周期应该和参考时钟同步,主站本地定时器应该根据发布参考时钟的ARMW报文进行调整。在运行过程中,用于动态补偿时钟漂移的ARMW报文返回主站后,主站时钟可以根据返回的参考时钟时间进行调整,使之大致同步于参考时钟时间。DC模式下,所有支持DC的从站都应该同步于DC系统时间,主站也应该使其通信周期同步于DC参考时钟时间。
主站本地运行由一个本地定时器启动,本地定时器应该比DC参考时钟定时存在一个提前量,提前量为以下时间之和:
- 控制程序执行时间
- 数据帧传输时间
- 数据帧传输延时D
- 附加偏移(与各从站延迟时间的抖动和控制程序执行时间的抖动值有关,用于主站周期时间的调整)
非周期性邮箱数据通信
邮箱数据通信可以双向进行,支持全双工、两个方向独立通信和多用户协议,从站到从站的通信由主站作为路由器来管理。邮箱数据头中包括一个地址域,使主站可以重寄邮箱数据。邮箱数据通信是实现参数交换的标准方式,如果需要配置周期性过程数据通信或需其他非周期性服务时需要使用邮箱数据通信。通常邮箱通信只对应一个从站,所以报文中使用设备寻址模式。
邮箱数据单元结构
邮箱数据头
数据元素 | 位数 | 描述 |
---|---|---|
长度 | 16位 | 跟随的邮箱服务数据长度 |
地址 | 16位 | 主站到从站通信时,为数据源从站地址 从站到从站通信时,为数据目的从站地址 |
通道 | 6位 | 保留 |
优先级 | 2位 | 保留 |
类型 | 4位 | 邮箱类型,后续数据的协议类型, 0:邮箱通信出错 2:EoE(Ethernet over EtherCAT) 3:CoE(CANopen over EtherCAT) 4:FoE(File Access over EtherCAT) 5:SoE(Servo Drive over EtherCAT) 15:VoE(Vendor specific profile over EtherCAT) |
计数器Ctr | 4位 | 用于重复检测的顺序编号,每个新的邮箱服务将增加1(为了兼容老版本只能使用1-7) |
(1) 主站到从站通信——写邮箱命令
主站发送写数据区命令将发送邮箱数据给从站,主站需要检查从站邮箱命令应答报文中工作计数器WKC,如果为1表示写命令成功,如果WKC没有增加,通常是因为从站没有读完上一个命令或在限定的时间内没有响应,主站必须重发写邮箱数据命令。
(2) 从站到主站通信——读邮箱命令
从站有数据要发送给主站,必须先将数据写入输入邮箱缓存区,然后由主站来读取。主站发现从站ESC输入邮箱数据区由数据等待发送时,会尽快发送适当的读命令来读取从站数据。主站有两种方法来测定从站是否将邮箱数据填入缓存区,一是使用FMMU周期性地读某一个标志位,使用逻辑寻址可以同时读取多个从站的标志位,缺点是每个从站都需要一个FMMU单元;二是简单地轮询ESC输入邮箱的数据区,读命令的WKC增加1表示从站已经将新数据填入了输入数据区。
邮箱通信错误时应答数据定义列表
数据元素 | 长度 | 描述 |
---|---|---|
命令 | 16位 | 0X01:邮箱命令 |
命令相关数据 | 16位 | 0X01:邮箱语法错误 0X02:不支持邮箱协议 0X03:邮箱通道无效 0X04:不支持邮箱服务 0X05:邮箱头无效 0X06:邮箱数据太短 0X07:邮箱服务内存不足 0X08:邮箱数据数目错误 |
1.6 状态机和通信初始化
EtherCAT状态机(ESM,EtherCAT State Machine)负责协调主站和从站应用程序在初始化和运行时的状态关系。
EtherCAT设备必须支持四种状态,另外还有一个可选的状态。
- Init:初始化,简写为I
- Pre-Operational:预运行,简写为P
- Safe-Operational:安全运行,简写为S
- Operational:运行,简写为O
- Boot-Strap:引导状态(可选),简写为B
从初始化状态向运行状态转化时必须按照“初始化->预运行->安全运行->运行”的顺序转化,不可越级转化。从运行状态返回时可越级转化,引导状态只允许与初始化状态之间互相转化。所有的状态改变都由主站发起,主站向从站发送状态控制命令请求新的状态,从站响应此命令,执行所请求的状态转换,并将结果写入从站状态指示变量,如果请求的状态转换失败,从站将给出错误标志。
EtherCAT状态转化关系
(1) Init:初始化
初始化状态定义了主站与从站在应用层的初始通信关系,此时主站与从站应用层不可直接通信,主站使用初始化状态来初始化ESC的一些配置寄存器,如果从站支持邮箱通信,则配置邮箱通道参数。
(2) Pre-Operational:预运行
在预运行状态下,邮箱通信被激活,主站与从站可以使用邮箱通信来交换与应用程序相关的初始化操作和参数,该状态下不允许过程数据通信。
(3) Safe-Operational:安全运行
在安全运行状态下,从站应用程序读入输入数据,但是不产生输出信号,设备无输出,此时仍可以使用邮箱通信。
(4) Operational:运行
在运行状态下,从站应用程序读入输入数据,主站应用程序发出输出数据,从站设备产生输出信号,此时仍可以使用邮箱通信。
(5) Boot-Strap:引导状态(可选)
引导状态的功能是下载设备固件程序,主站可以使用FoE协议的邮箱通信下载一个新的固件程序给从站。
EtherCAT状态及其转化过程总结
状态和状态转化 | 操作 |
---|---|
初始化 | 应用层没有通信,主站只能读写ESC寄存器 |
初始化向预运行转化 Init to Pre-Op(IP) |
主站配置从站站点地址寄存器 如果支持邮箱通信,则配置邮箱通道参数 如果支持分布式时钟,则配置DC相关寄存器 主站写状态控制寄存器,以请求“Pre-Op”状态 |
预运行 | 应用层邮箱数据通信 |
预运行向安全运行转化 Pre-Op to Safe-Op(PS) |
主站使用邮箱初始化过程数据映射 主站配置过程数据通信使用的SM通道 主站配置FMMU 主站写状态控制寄存器,以请求”Safe-Op”状态 |
安全运行 | 应用层支持邮箱数据通信 有过程数据通信,但只允许读输入数据,不产生输出信号 |
安全运行向运行转化 Safe-Op to Op(SO) |
主站发送有效的输出数据 主站写状态控制寄存器,以请求“Op”状态 |
运行状态 | 输入和输出全部有效 仍然可以使用邮箱数据通信 |
1.7 应用层协议
(1)CANopen over EtherCAT(CoE)
CANopen最初是为CAN(Control Aera Network)总线控制系统所开发的应用层协议,EtherCAT协议在应用层支持CANopen协议并做了相应扩充,主要功能有:
使用邮箱通信访问CANopen对象字典及其对象,实现网络初始化
使用CANopen应急对象和可选的事件驱动PDO消息,实现网络管理
使用对象字典映射过程数据,周期性传输指令数据和状态数据
(2)Servo Drive over EtherCAT(SoE)
IEC61491是国际上第一个专门用于伺服驱动器控制的实时数据通信协议标准,商业名称为SERCOS(Serial Real-time Communication Specification)。应用层使用SERCOS实现数据接口,可以实现以下功能:
使用邮箱通信访问伺服控制规范参数(IDN),配置伺服系统参数
使用SERCOS数据电报格式配置EtherCAT过程数据报文,周期性传输伺服指令数据和伺服状态数据
(3)Ethernet over EtherCAT(EoE)
除了前面描述的主从站设备之间的通信寻址模式外,EtherCAT也支持IP标准的协议,比如TCP/IP、UDP/IP和所有其他高层协议(HTTP和FTP等)。EtherCAT能分段传输标准以太网协议数据帧,并在相关的设备完成组装。这种办法可以避免为长数据帧预留时间片,大大缩短周期性数据的通信周期,此时主站和从站需要相应的EoE驱动程序支持。
(4)File Access over EtherCAT(FoE)
该协议通过EtherCAT下载和上传固件程序和其他文件,其使用类似TFTP(Trivial File Transfer Protocaol,简单文件传输协议),不需要TCP/IP的支持,实现简单。