上期回顾:EtherCAT协议介绍
01
EtherCAT介绍
1
EtherCAT状态机制
ESM (EtherCAT state machine)是用来在启动或者工作时协调主站和从站关系用的,由应用层控制器将从站应用的状态写入AL状态寄存器,主站通过写AL控制寄存器进行状态请求。因此从逻辑上说,ESM位于EtherCAT从站控制器与应用之间。
如下所示,它包含 EtherCAT状态转换的过程。
运行状态 | 描述 |
Initial | 初始化状态 |
Pre-Operational | 预运行状态 |
Safe-Operational | 安全运行状态 |
Operational | 运行状态 |
初始状态(Init)
此时应用层无通信,没有邮箱通信也没有过程数据通信
转换到预工作状态(Init to Pre-Op)
主站配置地址和SM,用于进行邮箱通信;同时主站请求向Pre-Op模式转换;接着从站检查邮箱是否初始化正确
安全工作状态(Safe-Op)
在这一阶段,从站应用程序将传输实际输入数据,此时主站并不对从站输出进行操作,并将输出模式设为安全状态
转换到工作状态(Safe Op to Op)
这一阶段主站开始发送有效的输出数据,同时请求向工作模式转换
工作状态(Op)
此时主站的输入和输出均有效,可以进行过程数据的通信
Bootstrap状态
此外还有个Bootstrap状态,该状态作为可选项,一般是在固件更新时使用,该状态只允许从初始状态切换到该状态,在此状态期间是没有过程数据通信的,一般是用于FOE协议文件传输或固件升级的
下面是具体的一些状态转换,此处不再说明
状态转换 | 描述 |
IP | 启动邮箱通讯 |
PI | 停止邮箱通讯 |
PS | 启动输入更新 |
SP | 停止输入更新 |
SO | 启动输出更新 |
OS | 停止输出更新 |
OP | 停止输入输出更新 |
SI | 停止输入更新,停止邮箱通讯 |
OI | 停止输入输出更新,停止邮箱通讯 |
IB | 启动bootstrap模式 |
BI | 重启节点 |
2
EtherCAT寻址
EtherCAT通信是指主设备从EtherCAT从设备的内部闪存读取和写入数据,通常来说有两种寻址方式来控制内部的ESC寄存器:
1)设备寻址
在设备寻址时,EtherCAT子报文头内的32位地址分为16位从站设备地址和16位从站设备内部物理存储空间地址。设备寻址时,每个报文只寻址唯一的一个从站设备,但对于寻址机制又分为两种:
顺序寻址:使用顺序寻址时,从站的地址由其在网段内的连接位置确定,用一个负数来表示每个从站在网段内由接线顺序决定的位置。顺序寻址子报文在经过每个从站设备时,其顺序地址加1,从站在接收报文时,顺序地址位0的报文就是寻址到自己的报文,因此这种寻址机制也被称为“自动增量寻址”;
例如:主站发起三个子报文分别去寻址三个从站,其中地址分别为0,-1,-2,如上图中的数据帧1,数据帧在到达从站1时,从站1检查到子报文1中的地址为0,从而得知子报文1就是寻址到自己的报文,数据帧经过从站1后,所有的顺序地址都增加1,称为1,0,-1,以此类推...
在设置寻址时,从站的地址与其在网段内的连接顺序无关,地址可以由主站在数据链路层启动阶段配置EtherCAT ID给从站;也可以由从站在上电初始化时从自身的EEPROM内部读取EtherCAT ID进而分配地址。
2)逻辑寻址
前面讲的设备寻址一般来说只针对某一从站进行读写操作,并且是在扫描阶段去使用的,相对与逻辑寻址来说并不常见。逻辑寻址面向过程数据,可以实现多播,同一个子报文可以读取多个从站设备。
在逻辑寻址时,从站地址并不是单独定义的,而是使用了寻址段内4G逻辑地址空间中的一段区域,报文内的32位地址作为整体的数据逻辑地址完成对设备的逻辑寻址。
而谈到逻辑寻址,需要了解FMMU(现场总线内存管理单元),逻辑寻址由FMMU实现,在ESC(从站控制器),主要负责逻辑地址与物理地址的映射,用于将过程数据映射到主站,从而减轻主站的存储器管理负担。
当从站设备收到一个数据逻辑寻址的EtherCAT子报文时,会检查是否由FMMU单元地址匹配,如果有的话,就会将输入类型数据插入至EtherCAT子报文数据区的对应位置。
3
EtherCAT从站同步模式
EtherCAT从站同步模式主要分为以下几种:
(1)自由运行模式(Free Run Mode)
在此模式下,从站设备独立于主站运行,内部没有同步到任何外部信号。设备的周期性操作由内部时钟或定时器控制,通常用于非实时要求的应用场景。
(2)分布式时钟模式(Distributed Clocks,DC)
分布式时钟是 EtherCAT 的关键同步机制之一,广泛用于需要高精度同步的场景。在 DC 模式下,所有 EtherCAT 从站通过一个参考时钟(通常由主站或某个从站提供)实现时间同步。每个从站都会调整其内部时钟,使所有设备在微秒级别内同步。此模式适用于需要精确协调多个设备动作的应用,例如运动控制。
(3)同步管理器事件模式(SyncManager Event Mode)
前面我们说了,FMMU主要用于地址映射,寻找对应的地址(寻址),那SyncManager就是用于交换数据,将数据同步进去。
在此模式下,从站设备通过 SyncManager 同步数据传输。每当主站写入或读取 SyncManager 寄存器时,从站的同步管理器事件会触发中断,从而引发应用程序的执行。这个模式下的同步精度不如 DC 模式高,通常用于不需要严格时间同步的应用场合。
SyncManager主要有两种模式:
1)邮箱(单缓存模式)