
学习笔记-EtherCAT协议
EtherCAT 以太网数据帧的数据区由多个子报文组成,每个子报文都服务于一个特定的逻辑映像区。读取数据:每个设备中的 FMMU 在数据帧通过时读出该数据帧中映射到此设备的逻辑地址中的数据,如数字伺服控制指令数据。输入数据:如数字伺服状态数据,可以在数据帧通过时插入到相应的逻辑地址区中,数据帧在整个过程仅有几纳秒的延时,通常每个通信周期只需要传输一个以太网数据帧,这个数据帧沿着逻辑环传输一周,完成
EtherCAT
简介
EtherCAT 以太网数据帧的数据区由多个子报文组成,每个子报文都服务于一个特定的逻辑映像区。
-
读取数据:每个设备中的 FMMU 在数据帧通过时读出该数据帧中映射到此设备的逻辑地址中的数据,如数字伺服控制指令数据。
-
输入数据:如数字伺服状态数据,可以在数据帧通过时插入到相应的逻辑地址区中,数据帧在整个过程仅有几纳秒的延时,
通常每个通信周期只需要传输一个以太网数据帧,这个数据帧沿着逻辑环传输一周,完成所有的广播式、多播式以及从站间的通信。
EtherCAT 协议基于以太网接口,在 MAC 层上增加一个确定性调度的软件层,
- 该软件层实现了通信周期内的数据交换。
在高层协议中, EtherCAT 并没有定义任何设备规范,而是支持现有的各种设备规范和服务,以使用户和设备生产商可以方便地从现有的现场总线标准移植到 EtherCAT。
如图所示,常用的高层协议包括:
- FoE:File over EtherCAT;
- 可通过网络访问设备中的文件 以及将统一的固件跨网络上传到设备
- 无需 TCP/IP 协议堆栈
- EoE:Ethernet over EtherCAT;
- 可以在 EtherCAT 网段实现以太网数据的传输
- SoE:SERCOS over EtherCAT;
- CoE:CANopen voer EtherCAT
- AoE:ADS over EtherCAT
- 基于邮箱的客户端-服务器协议
其中对应的协议介绍:
- Ethernet
- SERCOS:是一种实时通信接口,尤其适用于运动控制
- CANopen
名称介绍
EtherCAT:工业以太网现场总线
- 将计算机网络中的以太网技术应用于工业 自动化领域构成的工业控制以太网
- 工业控制以太网 = 工业以太网 = 工业以太网现场总线
Ethernet:以太网
MAC:介质访问控制
CSMA\CD:带有冲突检测的载波侦听多路访问机制
实时以太网 ( RTE,Real Time Ethemet) :
- IEC61158: 工业通信网络一一现场总线规范:包括了 10 种工业以太网协议标准
- IEC61784: 工 业通信网络一行规规范:为 IEC61158 中的现场总线标准制定了应用行规标准
实时以太网
根据不同的实时性和成本要求,大致可以分为三种:
- 基于 TCP/IP 的实现 (ModbuslTCP 、Ethemet/IP )
- 使用 TCP/IP 协议栈
- 可以与商用网络自由地通信
- 基于以太网的实现 (Ethernet Powerlink)
- 使用标准的以太网通信硬件
- 专门的过程数据传输协议
- 修改以太网的实现 (EtherCAT )
- 获得响应时间小于 Ims 的硬实时
- 由专门的硬件实现
- 由实时 MAC 接管通信控制
EtherCAT从属控制功能模块
EBUS:EtherCAT接口
- 连接其他EtherCAT从机或主机
- EtherCAT从站支持24端口,编号为03
EPU:EtherCAT处理单元
- 接收、分析、处理数据流
- 主要功能是协调对ESC内存数据的访问,例如SM、FMMU对内存的访问
- 还有,负责实现自动转发、数据回环等功能。
自动转发:由EPU实现
- 自动转发接收到的以太网帧并执行帧检查
- 生成接收时间戳
数据回环:由EPU实现
- 当某个端口不可用、或没有连接链路、或环路已关闭时,数据到达此处后,会自动转发到下一个顿口。
FMMU:将逻辑地址,逐位映射到物理地址
SM:负责实现数据交换的一致性(同步)
- 可以分别配置为读或写的数据方向
- 一般使用两个SM通道分别处理读写请求。
监视单元:包含错误计数器和看门狗
- 看门狗用于在错误发生后返回安全状态
- 错误计数器用于错误检测和分析。
PHY管理单元:通过MII接口与以太网PHY通信
- 可以在接收到错误以太网帧时,自动协商启动重传。
分布时钟:实现整个EtherCAT网络的同步
存储空间:64K
- 前4K为寄存器和用户存储器空间
- 后60K为进程存储器
- ESC的内存可以由主站和连接的u控制器直接寻址
- ESC中的寄存器(0x0000-0x0f7f)有影子缓冲区。
- 在一个帧期间收到的数据首先存放在影子缓冲区,校验无误之后再写入寄存器
- 用户和进程存储空间没有影子缓冲区。
PDI:过程数据接口
- 由数字量IO、SPI从机、u控制器等多种连接模式
SII:即EEPROM
- 非易失性存储器,存放配置信息
EtherCAT从站控制芯片-ESC
EtherCAT 从站控制芯片 ESC :
- 实现 EtherCAT 数据链路层协议的专用集成电路芯片。
- 又称为EtherCAT耦合器
- 将以太网数据帧转换为 E-bus 信号表示。
DPRAM
共64K存储空间
- 0-4K:寄存器空间:
- ESC特征、数据链路层控制、数据链路层状态、应用层控制、应用层状态
- 0-0x0f7f的数据有缓存空间,
- 4K-64K:过程数据空间
- 过程数据输入、输出
- 邮箱数据输入、输出
通过PDI接口读写ESC实际上就是对DPRAM的操作
物理层接口
物理层接口模式:两种模式
- MII:标准的以太网物理层接口,传输延时约为 500 ns
- 需要外接以太网物理层 PHY 芯片
- EBUS:以直接连接 ESC芯片 ,传输延时约为 100ns
- 传输介质使用低压差分信号 LVDS,最远10米
- 可以满足快速以太网 100 Mb itsls 的数据波特率 ,
- 可以传输任意 以太网数据帧
EtherCAT协议
从站节点使用专用的控制芯片 , 主站使用标准的以太网控制器
持多种设备连接拓扑结构 : 线形、树形或星形结构,
充分利用了以太网的 " 全双工"特性。 使用主从模式MAC
- 主站发送以太网帧给各从站
- 从站从数据帧中 抽取数据或将数据插入数据帧。
- 电报从主站发出,经过一连串从站,然后返回。
EtherCAT从站
从站设备同时实现通信和控制应用
从站主要包括:
-
ESC:从站控制器:实现数据链路层的帧处理,即处理EtherCAT数据帧
- 从以太网数据帧中抽取出EtherCAT数据帧,
- 然后根据相应的协议,抽取出数据帧中的有用的数据,以及向数据帧中插入数据。
-
从站控制微处理器:实现应用层
- 包括链接其他器件
- 处理和生成输入输出的数据。
-
物理层器件
- 使用MII接口时,需要物理层芯片PHY、隔离变压器等器件。
- 使用EBUS时不需要任何其他芯片。
EtherCAT数据帧结构
EtherCAT 数据包括:
- 数据头:2字节
- 数据区:44~1498字节
- 子报文x:对应独立的设备或从站存储区域
- 子报文头:
- 数据域:
- 工作计数器(WKC):记录了子报文被从站操作的次数,初值为 0
- 子报文x:对应独立的设备或从站存储区域
EtherCAT 报文帧结构
名称 | 含义 |
---|---|
目的地址 | 接收方 MAC地址 |
源地址 | 发送方 MAC地址 |
帧类型 | 0x88A4 |
EtherCAT 头:长度 | EtherCAT 数据18: 氏度 , 即所有子拟文 氏度 总和 |
EtherCAT 头:类型 | 1:表示不与从站通信,0:保留 |
FCS (Frame Check Sequence) | 帧校验序列 |
EtherCAT 子报文结构
名 称 | 含 义 |
---|---|
命令 | 寻址方式及读写方式 |
索引 | 帧编码 |
地址区 | 从站地址 |
长度 | 报文数据区长度 |
R | 保留位 |
M | 后续报文标志 |
状态位 | 中断到来标志 |
数据区 | 子报文数据结构 |
WKC | 工作 |
寻址
EtherCAT 通信 由主站发送 EtherCAT 数据帧读写 从站设备的内部存储区来实现
EtherCAT 网络寻址方式 :
- 一个 EtherCAT 网段相当于一个以太网设备
- 主站首先使用以太网数据帧头的 MAC 地址寻址到网段 ,
- 然后使用 EtherCAT 子报文头中的32 位地址寻址到段内设备 。
段内寻址 :
- 设备寻址:针对某一个从站进行读写操作
- 逻辑寻址:面向过程数据 , 可以实现多播 ,一个子报文可以读写多个从站设备 。
网段寻址
直连模式:一个 EtherCAT 网段直接连到主站设备的标准以太网端口
- 不使用交换机,所有从站设备与主站设备直接通过网线相连。即只有一个网段
- 相当于舍弃了网段寻址,只依靠段内寻址,所以以太网帧的目的地址固定为广播地址。
开放模式 :EtherCAT 网段连接到一个标准以太网交换机上
- 使用交换机,需要制定目标网段。
- 一个EtherCAT 网段内的第一个从站设备拥有一个段地址,代表整个网段。
设备寻址
此时,EtherCAT 子报文头内的 32 位地址分为:
- 16 位从站设备地址:可以寻址65535个从站设备
- 16 位从站设备内部物理存储空间地址:每个设备可以有64K地址空间。
从站设备地址有两种决定方式
- 顺序寻址(自动增量寻址): 用一个负数来表示每个从站在网段内由接线顺序决定的位置。 子报文在经过每个从站设备时, 其位置地址加1; 从站在接收报文时 , 地划为 0 的报文就是自己的报文 。
- 设置寻址:提前配置从站地址
逻辑寻址-FMMU
将32位地址所代表的4GB逻辑地址空间映射到设备的内存地址。
- 由现场总线内存管理单元 FMMU(Fieldbus Memory Management Unit)实现。
- FMMU功能位于每一个 ESC 内部
从站设备收到子报文时 , 检查是否有 FMMU 单元地址匹配 。
- 如果有 , 它将输入类型数据插入到子报文,以及从子报文抽取输出类型数据 。
FMMU操作的特点:
- 按位读写操作不影响报文中没有被映射到的其他位, 因此允许将几个从站 ESC中的位数据映射到主站的同一个逻辑字节
- 读写一个未配置的逻辑地址空间不会改变其内容。
从站地址配置
一般,在EtherCAT网络初始化时,使用顺序寻址,依次获取每一个节点的信息
然后,在PDO通信时使用设置寻址
在SDO通信时使用逻辑寻址。
- 由主站在数据链路启动阶段配置给从站
- 主站向从站的站点地址寄存器中写入指定的地址
- 由从站在上电初始化的时候从自身的配置数据存储区装载
- 从站读取自身的配置数据,并向别名寄存器中写入。
- 主站启用站点别名作为寻址依据,
- 可以保证从站在即使网络结构等变化的情况下保持地址不变。
关于地址与别名:
- 地址是由主站指定的,通过初始化过程实现。
- 别名由从站自行设置。
- 当存在别名时,主站使用别名访问从站。
逻辑寻址配置
详见参考资料P63表
分布时钟
分布时钟机制使所有的从站都同步于一个参考时钟
-
主站连接的第一个具有分布时钟功能的从站作为参考时钟
-
必须测量和计算数据传输延时和本地时钟偏移 , 并补偿本地时钟的漂移。
-
分布时钟同步机制就是使各个从站的本地系统时间保持一致 。参考时钟也是相应从站的本地系统时钟
-
本地时钟:每一个 DC 从站都有本地时钟 , 本地时钟独立运行, 使用本地时钟信号计时 。
-
时钟初始偏移量: 系统启动时 , 各从站的本地时钟和参考时钟之间有一定的差值 。
-
时钟漂移 :在运行过程中,由于参考时钟和 DC 从站时钟使用各自的时钟源等原因,它们的计时周期存在一定的漂移
-
本地系统时间 :从站的本地时钟经过补偿和同步之后产生本地系统时间
-
工作模式
从站:
- 周期性模式:周期性发送数据,使用本地定时器,此时从站有两种模式:
- 自由运行模式:从站不管主站的周期信号,自行执行操作
- 同步模式:从站操作受主站信号触发
- DC模式:分布式时钟模式,主站的本地定时器需要和参考时钟对齐
- 和周期性模式的差别不大
中断信号
- 自由运行模式:只需要PDI_IRQ:
- 同步模式、DC模式:SYNC0,SYNC1:
主站
- 周期性模式
- DC 模式
自由运行模式(FreeRun Mode)
- 定义:从站设备的操作不依赖于网络上的同步事件。每个从站设备独立地控制其过程数据的更新和输出。
- 工作原理:
- 从站设备根据自己的内部时钟周期性地更新过程数据。
- 过程数据在网络上的传输没有固定的周期,从站设备可以在任何时间点发送更新。
- 每个从站设备都独立地维护其内部的状态和时序,不需要依赖网络上的同步信号。
- 应用场景:
- 适用于不需要严格同步的从站设备,如一些独立工作的传感器或执行器。
- 适用于对实时性要求不高或能够独立控制的从站设备。
同步模式(Synchron Mode)
- 定义:在同步模式下,从站设备的行为依赖于网络上的同步事件,通常由主站设备发出的SYNC信号触发。
- 工作原理:
- 从站设备在接收到SYNC信号后,会按照预定的时序更新过程数据。
- 每个从站设备通常在SYNC信号的触发下周期性地发送过程数据。
- 从站设备之间通过SYNC信号保持同步,确保过程数据的更新和输出是同步的。
- 应用场景:
- 适用于需要与其他从站设备保持严格同步的从站设备,如分布式控制系统中的节点。
- 适用于需要高精度同步控制的从站设备,如机器人或运动控制设备。
EtherCAT状态机
EtherCAT 设备必须支持四种状态 :
- Init: 初始化, 简写为 I;
- 主站:初始化 ESC 的一些配置寄存器
- 从站:如果支持邮箱通信,则配置邮箱通道参数。
- 主站与从站不可以直接通信
- Pre-Operational: 预运行 , 简写为 P;
- 可以使用邮箱通信 ,不允许过程数据通信 。
- 主站与从站使用邮箱通信来交换与应用程序相关的初始化操作和参数
- Safe-Operational: 安全运行,简 写为 S;
- 可以使用 邮箱通信。
- 从站:可以被读取数据, 但不能写入数据。
- Operational: 运行 , 简写为 0;
- 可以使用 邮箱通信。
- 从站正常输入输出。
- Boot-Strap: 引导状态(可选) , 简写为 B。
- 可选的一种状态
- 用于向站点写入新的程序
与状态机相关的寄存器如下所示:
Register Address | Name | Description |
---|---|---|
0x0120:0x0121 | AL Control | Requested state by the master |
0x0130:0x0131 | AL Status | AL Status of the slave application |
0x0134:0x0135 | AL Status Code | Error codes from the slave application |
0x0141[0] | ESC Configuration | Device emulation configuration |
- 向AL控制寄存器写入,可以控制状态转换
- AL状态寄存器则表示当前状态。
状态转换条件
INIT2PREOP
- 启动邮箱通信:
- 需要注意,邮箱通信需要从站应用层有一片用于存储邮箱通信数据的空间。
- 协议栈中默认使用malloc动态分配,需要确保应用层处理器有充足的堆存储空间。
PREOP2SAFEOP
- 启动过程数据的input
- 即允许从站向主站发送数据,或者说允许主站读取从站数据。
- 当从站接收到来自主站的数据的时候,在freerun模式下,会触发中断,向应用层发送PDI_IRQ中断信号。
- 主站会不断向从站发送EtherCAT帧,所以PDI_IRQ信号也会不断触发。
SAFEOP2OP
- 启动过程数据的output
- 即允许主站向从站写入数据。
- 转换过程是:
- 首先,主站向从站发送状态转换的指令,
- 从站启动被写入的功能,并不断向应用层发送PDI_IRQ信号(在SAFEOP时已产生)
- 然后,等待来自主站的写入数据。
- 只要在等待超时之前,成功完成一次写入数据的接收,就可以进入OP状态。
- 如果在SAFEOP状态时,转换之前就已经完成过写入数据的接收,可以无需等待直接进入OP
- 写入数据被接收,但不会被使用。
从站启动流程
简要概述:
- 主站读取从站的EEPRAM,获得从站的配置信息
- 主站根据配置信息,向从站的相应寄存器写入配置:
- 一些从站配置的寄存器只能由主站写入,例如从站的端口控制、SM通道配置等
详细流程如下图所示
ESC 数据链路控制
**由DL控制寄存器控制。**详见参考资料P59
数据收发端口 (四个):
- 每个端口都可以收发以太网数据帧。
- 数据帧在 ESC 内部的传输顺序是固定的
- 如果 ESC 检测到某个端口没有外部链接,则 自动闭合此端口
- 一个 EtherCAT 从站设备至少使用两个端口 , 使用多个端口可以构成不同物理拓扑结构。
由于 ET1100、 ET1200 和 EtherCAT 从站没有 MAC 地址和 IP 地址 , 它们只能支持真连模式
或使用管理型的交换机实现开放模式 , 由交换机中的端口地址米识别不同的EtherCAT 网段。
为了降低延迟时间, ESC 省略 了发送 FIFO。
为了隔离接收时钟和处理时钟, ESC 使用了接收 FIFO (RX FIFO )。
- RX FIFO 的大小取决于数据接收方和数据发送方的时钟源精度,以及最大的数据帧字节数
- 接收FIFO作缓冲以同步数据接收过程和处理过程。
端口控制
所有端口由主站控制,从站不控制端口
通过主站写数据链路 DL 控制寄存器( Ox0100-0x01 03 ) 来控制。
- 强制回路控制(开、关):不管端口实际连接状态,强制打开、闭合。
- 自动回路控制:有端口是否有连接决定打开闭合。
- 自动回路关闭:当端口丢失链路连接时,自动关闭(打开->关闭状态)。
- 及时此后连接重新建立,也不会自动打开(关闭->关闭等待状态)。
- 但建立连接之后,主站可以通过另一个端口操作DL控制寄存器的方式打开端口(关闭等待->打开)。
- 或者当端口接收到一个正确的以太网帧的时候,也会自动打开(关闭等待->打开状态)。
在所有的端口不管是因为强制或自动而处于闭合状态时, 端口0 将打开作为恢复端
- 以便改正 DL 控制寄存器的设置
EtherCAT物理拓扑结构
在逻辑上 , EtherCAT网段内从站设备的布置构成一个开口的环型总线
- 在开口处,主站从一段插入以太网数据帧,并从另一端接受。
允许在 EtherCAT 网段内的任一位置使用分支结构,同时不打破逻辑环路
- 以环形总线为主。当遇到分支时,数据帧先走向分支,然后再回归环形总线继续向下。
循环帧避免
当意外导致某些关键链路失效时,EtherCAT数据帧可能会在设备之间不断循环,如下图所示:
在EtherCAT帧的子报文中,加入了一个循环位
- 当从机的端口0关闭时,会操作EtherCAT数据帧的循环位
- 若循环位为0,则正常处理,并将循环位置1
- 若循环位为1,则丢弃整个帧不做处理。
所以一个循环帧不会两次通过一个端口0链路丢失的从机。
- 因此,禁止无端关闭从机的端口0
- 可以不适用,强制设置为开。但是不能强制设置为关。
端口0的特殊功能
- 当其他所有端口关闭时,端口0自动打开
- 端口0通向主机。是所有端口的上游
- 端口0的链路状态影响帧循环位的设置
PDI接口(IO、SPI…)
应用数据接口(过程数据接口、物理设备接口、PDI):两种类型
- 直接IO信号接口:
- 无需应用层微处理器 , 最多 32 位引脚 ;
- DPRAM 数据接口 :
- 使用外部微处理器访 问, 支持并行和串行两种方式。
PDI接口可以用作:
- 数字量IO接口
- SPI从站接口(串行)
- 并行微处理器总线接 口
PDI接口在硬件设备上,表现为可以对外连接的管脚。
主站接口:输入网口(in)
PDI控制寄存器(0x0140)
- 不同型号的ESC支持不同对PDI模式
- 每一个PDI模式都有一个对应的编码
以ET100为例:
- 0x00:PDI接口停用
- 0x04:数字量IO
- 0x05:作SPI从机
- 0x08,0x09,0x10,0x11:16位、8位的异步、同步。
PDI选择和配置
一般,PDI对配置参数会存储在EEPROM中,在上电的时候自动载入寄存器。
某些ESC功能是通过写入或读取单个字节地址来触发的,例如SyncManager缓冲区更改或AL事件请求确认
存储同步管理-SM
ESC 内部过程数据存储区:可以用于 EtherCAT 主站与从站应用程序数据的交换,
- 由于ESC的存储器需要至少被主站和从站微处理器两方读取,
- 为了保证数据读写的安全性,使用SM来管理对存储区的访问。
从站应用程序将数据写入ESC的DPRAM中,依靠SPI传输,需要使用到简单的内存地址读写指令
主站从ESC中再去读取数据,依靠网口传输,使用EtherCAT协议。
1
存储同步管理通道 SM ( SyncManager ) :保证主站与本地应用数据交换的一致性和安全性
- 在数据状态改变时产生中断来通知双方
- SM 由主站配置
SM的两种运行模式
- 缓存类型-过程数据通信(PDO、SDO)
- 邮箱类型-邮箱数据通信
一般,4条SM通道被分别配置为过程数据读、写,邮箱数据读、写
缓存类型
常用于周期性过程数据通信
-
使用 3 个缓存区 ,经常有一个可写入的空闲缓存区和可读的数据缓存区 ;
- 通过三个缓存区,分别为读、写、空闲等待来实现。
- 如果写入的速度比读取的速度快,会导致旧的数据被覆盖。
-
允许主从双方在任何时候访问
在物理上 , 三个缓存区由 SM 统一管理 ,但只有第一个缓存区的地址配置给SM
- 所以对于主从的访问来说,逻辑上是只有一个缓存地址的。
- SM会根据具体情况,将访问请求重定向到三个缓存区中的一个。
邮箱类型
常用于应用层非周期性数据交换
- 使用一个缓存区 , 支持握手机制 :不会有数据覆盖等造成数据丢失
- 只有写入新数据后才可 以进行读操作 ; 只有读取之后才允许再次写入。
- 同时只能有一方访问
- 使用两个SM通道 ,它们被配置成为一个缓存区方式
- 例如主站到从站用SM0,从站到主站用SM1,但两个通道对应的是同一个物理地址
从站信息接口(SII)-EEPROM
所谓从站信息接口,就是指EEPROM中存储的信息。
- 字0~64:包含ESC 寄存器配置、产品标识、引导状态下邮箱配置 、标准邮箱通信 SM 配置
- 上电后ESC会自动读取寄存器配置并写入寄存器中
- ESC 寄存器配置区包含:
- PDI控制、PDI配置、扩展PDI配置
- SYNC信号脉冲强度
- 站点别名
- 校验和
在TwinCAT中,可以通过XML文件配置EEPROM。
- 注意,这里的XML文件只是TwinCAT设定的格式,和实际存入EEPROM中的数据格式并无直接关联
EEPROM访问控制
- ESC 具有读写 EEPROM 的功能 ,
- 主站或 PDI 通过读写 ESC 的 EEPROM 控制寄存器来读写 EEPROM
- 具体操作详见 EEPROM 控制寄存器功能表,参考资料P77
主站和PDI对 EEPROM的访问权限可以依靠控制寄存器来分配。
- 在使用完成之后,二者都可以主动放弃权限
- 主站可以在PDI持有权限时强制获取权限。
- 权限分配依靠 EEPROM访问分配位和强制PDI操作释放位来实现控制。
EEPROM操作命令
- 写一个 EEPROM地址
- 从 EEPROM 读
- 从 EEPROM重载 ESC 配置
常见操作错误:见参考资料P81
EEPROM操作流程
- 检查 EEPROM 是否空闲
- 如果不空闲 ,则必须等待空闲 ;
- 检查 EEPROM 是否有错误
- 如果有错误,则写 Ox0502.[10:8] = [000]消除销误。
- 写 EEPROM 字地址到 EEPROM 地址寄存器。
- 如果 要执行写操作 , 首先将要写入的数据写入 EEPROM 数据寄存器。
- 写控制寄存器启动命令执行 :
- 读操作 , 写 读命令位。
- 写操作 , 写 ECAT写使能位 和 写命令位 都为1。必须由一个数据帧写完成 。
- ECAT写使能位可以实现写保护机制;它对同一数据帧中的 EEPROM 命令有效,并随后自动清除 ;
- 如果是PDI 访问,不需要写这一位 。
- · 重载操作 , 写重载命令位 。
- 主站发起的读写操作:在数据帧结束符 EOF 之后开始执行的 ;
PDI 发起的操作:马上执行。 - 等待 EEPROM 繁忙位消除;
- 检查 EEPROM 错误位。 如果 EEPROM 应答丢失 , 可以重新发起命令(回到步骤5)。
- 在重试之前等待一段时间 , 使 EEPROM 有足够时间保存 内部数据 。
- 获得执行结果 :
- 读操作 , 读到的数据在 EEPROM 数据寄存器 中
- 重载操作 , ESC 配置被重新写入
分布时钟-DC
分布时钟由主站在数据链路的初始化阶段进行初始化、配置和启动运行。
在运行阶段 ,主站也需要维护分布时钟的运行,补偿时钟漂移。
同步信号-SYNC0/1
可以产生两个同步信号SYNC1和SYNC0。
-
用于给应用层程序提供中断或直接触发的输出数据更新。
- 中断处理和数据更新的具体操作需要在应用层中实现。
-
SYNC1 依赖于 SYNCO, SYNC1延迟一个预定义的量
同步信号有4种工作模式
- 周期性模式:启动后,产生等时的同步信号
- 单次模式:启动后只产生一个脉冲
- 周期性应答模式:产生等时中断。
- 单次应答模式:用于产生中断。中断信号处理之后才能产生下一次,
四种工作模式可以通过配置脉宽寄存器和周期寄存器来实现
DC锁存单元
锁存单元寄存器表见参考资料P85
可以为两个外部事件信号保存时间标记
- 外部事件:Latch0,latch1.
DC 锁存单元支持两钟模式 : 单事件或连续模式
- 单事件模式:只有锁存信号的第一个上升沿和第一个下降沿的时间被记录
- 锁存事件也会映射到AL事件寄存器
- 连续模式 :每次时间发生都会更新锁存的时间积累。
- 每次读取都读到最近发生的事件的时间标记
- 不会映射到AL事件寄存器
分布时钟初始化流程
- 主站读所有从站特征信息寄存器 ,得知哪些从站支持分布时钟。
- 使用顺序寻址命令 APRD 操作并获得从站 DC 特征信息 。
- 主站读数据链路状态寄存器,判断正被使用的端口 , 获得网段拓扑结构。
- 主站发送一个广播写命令 BWR ,写所有从站端口 0 的接收时间寄存器
- 从站会将捕捉到数据帧第一个前导位的本地时间保存下来。
- 主站分别读取各个从站记录的以太网帧到达时间,结合第二步的信息,判断哪些端口正在被使用。
- 计算传输延时和初始偏移量
- 主站使用 APWR命令将步骤5算得到的传输延时写入每个从站的传输延时寄存器
- 主站使用 APWR 命令将初始偏移量写入每个从站的初始时间偏差寄存器
- 主站使用 ARMW 命令读参考时钟的系统时间寄存器, 然后将读取结果写入到后续所有从站的本地系统时间寄存器 。各个从站再各自初始化本地时钟。
重复这个步骤多次,直到同步性达到要求。 - 初始化结束, 开始发送周期性数据帧。
- 在运行模式下,也可以经常重复步骤③、 ④、 ⑤和6, 随时修正传输延时的值。
在预运行阶段 , 通过如下流程来配置每个从站的同步信号。
- 均使用FPWR指令。
- 设定同步信号周期时间 :SYNC 信号周期时间寄存器
- 设定启动时间:同步信号启动时间寄存器
- 激活同步信号:同步信号控制寄存器
通信
主站可以通过子报文向从站执行三种操作:
- 读、写、读写
根据不同的寻址方式,分别有不同的命令:共16条
- 顺序寻址*3,设置寻址*3,广播寻址*3,逻辑寻址*3
- 顺序寻址、设置寻址的多重读写:有从站读数据并写入之后所有从站的相同地址。
- 空指令。
详见下表:
主站:
- 接收到返回数据帧后 ,检查子报文中的 WKC,如果不等于预期值,则表示此子报文没有被正确处理。
- 子报文的 WKC 预期值与通信服务类型和寻址地址相关。
子报文经过某一个从站:
- 操作失败,WKC不变化
- 如果是单独地读或写操作, WKC 加 l 。
- 如果是读写操作 , 读成功时 WKC加1, 写成功时 WKC 加 2 ,读写全部完成时 WKC 加3
- 子报文由 多个从站处理时, WKC是各个从站处理结果的累加
通信模式
注意:此部分描述从站ESC与主站的通信,和从站ESC与应用层的关系不大。
在实际自动化控制系统中 , 应用程序之间通常有两种数据交换形式 :
- 时间关键表示特定的动作必须在确定的时间窗口内完成。
- 时间关键的数据通常周期性发送,称为周期性过程数据通信。
- 非时间关键数据可以非周期性发送, EtheCAT 中采用非周期性邮箱 ( mailbox) 数据通信。
非周期性邮箱数据通信
数据元素 | 位 数 | 搞迷 |
---|---|---|
长度 | 16位 | 跟随的邮箱服务数据长度 |
地址 | 16位 | 从站->从站:数据目的从站 主站->从站:数据源从站 |
通道 | 6位 | 保留 |
优先级 | 2位 | 保留 |
类型 | 4位 | 邮箱类型,决定后续数据的协议类型 |
计数器Ctr | 4位 | 用于重复检测的顺序编号。每个新的邮箱服务都加1. |
主站 -> 从站:写邮箱命令
- 主站需要检查从站邮箱命令应答报文中工作计数器 WKC。
- WKC = 1 :写命令成功
- 反之:通常因为从站没有读完上一个命令,或在时间内没有响应,主站必须重发写邮箱数据命令 。
从站 -> 主站:读邮箱命令
- 从站有数据要发送给主站 , 必须先将数据写入输入邮箱缓存区 , 然后由主站来读取。
- 从站无法主动向主站发出信号,只能依靠主站检测。
主站测定是否需要读取数据的方法
- 用FMMU周期性读取一个标志位,使用逻辑寻址将多个从站的标志位映射到一个逻辑地址。
- 主站轮询从站的ESC 输入邮箱的数据区
- 读命令的工作计数器增加 1,表示从站已经将新数据填入了输入数据区。
- 即不断发出读缓存的命令
非周期通信流程
主站写邮箱操作:
主站要发送非周期性数据给从站时 ,
- 发送 ECAT 帧命令写从站的 SMO 所管理的缓存区地址,
- 邮箱数据子报文中的Ctr 是用于重复检测的顺序编号 , 每个新的邮箱服务将加 1。
- 数据帧返回主站后,主站检查 ECAT帧命令的 WKC
- 如果 WKC 为 1 , 表示写 SMO 成功,如 情况①。
- 如果 WKC仍然为 0,表示 SMO 非空,从站还没有将上次写入的数据读走,主站本次写失败。
- 等待一段时间后再重新发送相同的数据帧 , 并再次根据返回数据帧的 WKC 判断是否成功,
- 如果从站在此期间读走了缓存区数据,则主站此次写操作成功,返回数据帧子报文的 WKC 等于 1,如情况2.
如果写邮箱数据帧丢失:
- 主站在发现接收返回数据帧超时之后, 重新发送相同数据帧 。
- 从站读取此数据之后,发现其中的计数器 Ctr 与上次数据命令相同,认为是重复的邮箱数据 ,如情况3
主站读邮箱操作
当主站检测到有数据需要读取时,发出读操作指令。
或者在轮询的读操作指令的响应中发现WKC = 1.则认为读取成功。
如果读邮箱操作错误:
- 主站需要翻转SM0控制寄存器的重复请求位,
- 之后从站会再次写入数据到SM1数据区。并翻转SM1配置寄存器中PDI控制中的重发应答位。
通信流程
- 主站向从站发出ECAT帧
- 从站ESC接受ECAT帧,并从中解析出属于自己的子帧
- 子帧根据读写操作的不同,使用预先定义的SM通道,将数据写入或读取存储区。
- 在SM通道被读写的同时,会发出SYNC中断信号,触发从站微处理器的中断服务函数
- 微处理器根据预先定义SM通道性质,读写数据
- 然后,微处理器根据数据执行相应的操作
EtherCAT 应用层协议
- 应用层协议需要依靠程序主动实现,即需要在从站的微处理器中使用协议栈。
EtherCAT 作为网络通信技术,支持:
- CoE 和 SoE:CANopen 协议中的行规 CiA402 和 SERCOS 协议应用层
- FOE:
- AOE:
其中,COE是基础协议,必须支持
CoE
CoE ( CANopen over EtherCAT )
CANopen :为基于 CAN ( Control Aera Netwαk) 总线的系统所制定的应用层协议。
- 其核心为对象字典。一个遵循预先约定,存储相关参数的特定内容。
CoE主要功能有:
- 网络初始化:使用邮箱通信访问 对象字典及其对象;
- 网络管理: 使用 CANopen 应急对象和可边的事件驱动 PDO 消息;
- 使用对象字典映射过程数据,周期性传输指令数据和状态数据 。
CoE 对象字典
这是继承自CANopen协议的概念。
针对 EtherCAT 通信扩展了相关通信对象,包括:
- 用于设置存储同步管理器(SM)的类型、通信参数和 PDO 数据分配。
周期性通信-过程数据-PDO
周期性数据通信中 ,过程数据可以包含多个 PDO 影射数据对象,
一个EtherCAT数据帧种的从站数据内,可以包含多个PDO数据对象。
- 具体的PDO分配由对象字典的相关位置决定。
PDO数据映射有以下几种形式:
- 简单数据:无映射
- 使用固定过程数据
- PDO的配置数据从EEPROM中读取,无需SDO读取
- 固定PDO映射
- 可以使用SDO读取
- 可选PDO映射
- 有多组固定PDO映射可供选择,通过PDO分配对象0x1c1x选择
- 使用SDO通信选择
- 可变PDO映射
- PDO映射内容可变
- 通过CoE通信实现配置
非周期性通信-邮箱数据-PDO、SDO
邮箱通信数据帧如下所示
邮箱数据中包含2字节的命令
- 9位PDO的编号和4位类型,以及3位保留
- 类型主要有:紧急事件,SDO请求、响应,TxPDO、RxPDO等
CoE的邮箱通信支持PDO和SDO两种数据
而过程数据通信只支出PDO一种。
SDO服务
SDO服务同样分为普通与快速两种,和CANopen种的规定一致。
- 快速:只使用8个字节,最多包含4个字节的有效数据
- 常规:最大有效数据量取决于邮箱SM通道的存储区大小
- 使用快速SDO中表示有效数据的4个字节表示数据大小,使用扩展数据区域存放有效数据
- 最大有效数据 = 邮箱容量-16
此外,还有分段传输
- 当传输的数据超过邮箱容量时,使用分段传输。
SoE
FOE
AOE
ESC应用层控制
状态控制
- 主站将目的状态写入从站 AL 控制位
- 从站应用层读取到新状态请求之后,检查 自身状态 ;
- 如果可以转化,则将新的状态写入状态机实际状态位
- 如果不能转化,则不改变实际状态位,设置错误指示位 , 并将错误码写入
- 主站读取状态机实际状态
- 如果正常转化,执行下一步操作 ;
- 如果出错,主站读取错误码,并写 AL 错误应答来消除 AL 错误指示 。
具体状态类型见[状态机](# 初始化状态机)
中断控制
ESC 支持两种类型的中断
- 给本地微处理器 :
- AL 事件请求中断 (PDI中断)
- 所有请求都会存入到AL 事件请求寄存器
- 由事件屏蔽寄存器决定哪些时间触发中断信号。
- 微处理器中断服务中会读取 AL 事件请求寄存器 。
- 分布时钟的同步信号中断(SYNC 信号中断):
- AL 事件请求中断 (PDI中断)
- 给主站 :ECAT 帧中断
- 用来通知 EtherCAT 主站从站发生的 AL 事件
- 使用 EtherCAT 子报文头中的状态位传输 到ECAT中断请求寄存器
ESC寄存器
ESC中的寄存器(0x0000-0x0f7f)有影子缓冲区。
- 在一个帧期间收到的数据首先存放在影子缓冲区,校验无误之后再写入寄存器
关键概念辨析
SM通道:
- 负责管理主站与从站应用层对ESC的读写操作,是ESC内部的数据管理单元。
- 不同类型的读、写使用不同的SM进行管理。
- SM通道数量与ESC芯片的硬件配置相关
- 在触发读写操作的时候,会向双方发送AL事件请求信号
- 可以触发应用层的中断
SYNC信号:
- 同步信号:是一个可以有ESC控制产生并向外输出的脉冲信号
- 可以有多重不同的工作模式,即信号生成逻辑
- SYNC信号通过分布时钟产生,可以保证整个网络中的SYNC信号具有较高的同步性
- 可以给从站应用层作为中断触发信号。
- 通常,将SYNC信号作为一个通信周期的标识。
- 例如,启动周期性数据交换中一个周期的数据交换
PDI接口:
- 从站内部,ESC芯片与实现应用层逻辑处理的微处理器之间的连接
- 用于交换过程数据,可以以SPI的形式实现。
端口:
- ESC芯片与外部物理链路连接的接口,用于网络连接
- 连接主机和从设备,或者多个从站之间的连接。
- 一般端口有4个,端口的开合有主站控制
注意:对于应用层:
- 两个SYNC信号可以分别触发两种中断,依靠EXIT实现。
- 所有的SM通道读写事件都只会触发一种中断,SPI_IRQ,依靠EXIT实现
更多推荐
所有评论(0)