3.6 EtherCAT从站控制器的存储同步管理

3.6.1 EtherCAT从站控制器存储同步管理器

EtherCAT定义了如下两种SM通道运行模式。

(1) 缓存类型

该SM运行模式用于过程数据通信。

1) 使用3个缓存区,保证可以随时接收和交付最新的数据。

2) 经常有一个可写入的空闲缓存区。

3) 在第一次写入之后,经常有一个连续可读的数据缓存区。

(2) 邮箱类型

1) 使用一个缓存区,支持握手机制。

2) 对数据溢出产生保护。

3) 只有写入新数据后才可以进行成功的读操作。

4) 只有成功读取之后才允许再次写入。

EtherCAT从站控制器内部过程数据存储区可以用于EtherCAT主站与从站应用程序数据的交换,需要满足如下条件。

1) 保证数据一致性,必须由软件实现协同的数据交换。

2) 保证数据安全,必须由软件实现安全机制。

3)EtherCAT主站和应用程序都必须轮询存储器来判断另一端是否完成访问。

EtherCAT从站控制器使用了存储同步管理通道来保证主站与本地应用数据交换的一致性和安全性,并在数据状态改变时产生中断来通知双方。SM通道把存储空间组织为一定大小的缓存区,由硬件控制对缓存区的访问。缓存区的数量和数据交换方向可配置。

SM由主站配置,其配置寄存器描述见表3-48。

SM配置寄存器从0x800开始,每个通道使用8个字节,包括配置寄存器和状态寄存器。

要从起始地址开始操作一个缓存区,否则操作被拒绝。操作起始地址之后,就可以操作整个缓存区。

SM允许再次操作起始地址,并且可以分多次操作。操作缓存区的结束地址表示缓存区操作结束,随后缓存区状态改变,同时可以产生一个中断信号或WDT触发脉冲。不允许在一个数据帧内两次操作结束地址。

表3-48EtherCAT从站控制器的SM配置寄存器描述

(续)

(续)

3.6.2 SM通道缓存区的数据交换

EtherCAT的缓存模式使用3个缓存区,允许EtherCAT主站和从站控制微处理器双方在任何时候访问数据交换缓存区。数据接收方可以随时得到一致的最新数据,而数据发送方也可以随时更新缓存区的内容。如果写缓存区的速度比读缓存区的速度快,以前的数据将被覆盖。

3个缓存区模式通常用于周期性过程数据交换。3个缓存区由SM通道统一管理,SM通道只配置了第一个缓存区的地址范围。根据SM通道的状态,对第1个缓存区的访问将被重新定向到3个缓存区中的一个。第2和第3个缓存区的地址范围不能被其他SM通道所使用,SM通道缓存区分配见表3-49。

表3-49SM通道缓存区分配

表3-49配置了一个SM通道,其起始地址为0x1000,长度为0x100,0x1100~0x12FF的地址范围不能被直接访问,而是作为缓存区由SM通道来管理。所有缓存区由SM通道控制,只有缓存区1的地址配置给SM通道,并由EtherCAT主站和本地应用直接访问。

SM缓存区的运行原理如图3-29所示。

在图3-29的状态①中,缓存区1正由主站数据帧写入数据,缓存区2空闲,缓存区3由从站微处理器读走数据。

主站写缓存区1完成后,缓存区1和缓存区2交换,变为图3-29中的状态②。

从站微处理器读缓存区3完成后,缓存区3空闲,并与缓存区1交换,变为图3-29中的状态③。

此时,主站和微处理器又可以分别开始写和读操作。如果SM 控制寄存器(0x0804+Nx8)中使能了ECAT帧或PDI中断,那么每次成功的读写操作都将在SM状态寄存器(0x0805+Nx8)中设置中断事件请求,并映射到ECAT中断请求寄存器(0x0210~0x0211)和AL事件请求寄存器(0x0220~0x0221)中,再由相应的中断屏蔽寄存器决定是否映射到数据帧状态位或触发中断信号。

图3-29SM 缓存区的运行原理

3.6.3 SM通道邮箱数据通信模式

SM通道的邮箱模式使用一个缓存区,实现了带有握手机制的数据交换,所以不会丢失数据。只有在一端完成数据操作之后,另一端才能访问缓存区。

首先,数据发送方写缓存区,然后缓存区被锁定为只读,直到数据按收方读走数据。随后,发送方再次写操作缓存区,同时缓存区对接收方锁定。

邮箱模式通常用于应用层非周期性数据交换,分配的这一个缓存区也称为邮箱。邮箱模式只允许以轮流方式读和写操作,实现完整的数据交换。

只有EtherCAT从站控制器接收数据帧FCS正确时,SM通道的数据状态才会改变。这样,在数据帧结束之后缓存区状态立刻变化。

邮箱数据通信使用两个存储同步管理器通道。通常,主站到从站通信使用SM0通道,从站到主站通信使用SM1通道,它们被配置成为一个缓存区方式,使用握手来避免数据溢出。

1.主站写邮箱操作

SM通道邮箱数据通信模式如图3-30所示。

主站要发送非周期性数据给从站时,发送ECAT帧命令写从站的SM0通道所管理的缓存区地址。Ctr是用于重复检测的顺序编号,每个新的邮箱服务将加1。数据返回主站后,主站检查ECAT帧命令的WKC,如果WKC为1,表示写SM0通道成功,如图3-30中的状态①。

如果WKC仍然为0,表示SM0通道非空,从站还没有将上次写入的数据读走,主站本次写失败。等待一段时间后再重新发送相同的数据帧,并再次根据返回数据帧的WKC判断是否成功,如果从站在此期间读走了缓存区数据,则主站此次写操作成功,返回数据帧子报文的WKC等于1,如图3-30中的状态②。

图3-30SM 通道邮箱数据通信模式

如果写邮箱数据丢失,主站在发现接收返回数据帧超时之后,重新发送相同数据帧。从站读取此数据之后,发现其中的计数器Ctr与上次数据命令相同,表示为重复的邮箱数据,如图3-30中的状态③。

2.主站读邮箱操作

主站读邮箱的操作过程如图3-31所示。

图3-31 主站读邮箱的操作过程

数据交换是由主站发起的。如果从站有数据要发送给主站,必须先将数据写入发送邮箱缓存区,然后由主站来读取。主站有两种方法来测定从站是否已经将邮箱数据填入发送数据区。

一种方法是将SM1通道配置寄存器中的邮箱状态位(0x80D.3)映射到逻辑地址中,使用FMMU周期性地读这一位。使用逻辑寻址可以同时读取多个从站的状态位,这种方法的缺点是每个从站都需要一个FMMU单元。

另一个方法是简单地轮询SM1通道数据区。从站已经将新数据填入数据区后,这个读命令的工作计数器WKC将加1。

读邮箱操作可能会出现错误,主站需要检查从站邮箱命令应答报文中的工作计数器WKC。如果工作计数器没有增加或在限定的时间内没有响应,主站必须翻转SM0通道控制存器中的重复请求位(0x0806.1)。从站检测到翻转位之后,将上次的数据再次写入SM1通道数据区,并翻转SM1通道配置寄存器中PDI控制字节中的重发应答位(0x80E.1)。主站读到SM1通道翻转位后,再次发起读命令。