Ethercat主站通过读写邮箱数据SM通道
实现非周期性数据通信。
邮箱数据定义
邮箱数据单元结构

邮箱数据头各字段含义如下表

非周期性邮箱数据通信
EtherCAT协议中非周期性数据通信称为邮箱数据通信,它可以双向进行---主站到从站和从站到主站。它支持全双工,两个方向独立通信和多用户协议。邮箱通信数据头中包括一个地址域,使主站可以重寄邮箱数据。邮箱数据通信是实现参数交换的标准方式,如果需要配置周期性过程数据通信或需要其他非周期性服务时需要使用邮箱数据通信。
主站到从站通信,写邮箱命令
主站发送写数据区命令将发送邮箱数据给从站。主站需要检查从站邮箱命令应答报文中工作计数器WKC。如果工作计数器为1,表示写命令成功。反之,如果工作计数器没有增加,通常因为从站没有读完上一个命令,或在限定的时间内没有响应,主站必须重发写邮箱数据命令。
从站到主站通信,读邮箱命令
从站有数据要发送给主站,必须先将数据写入输入邮箱缓存区,然后由主站来读取。主站发现从站ESC输入邮箱数据区有数据等待发送时,会尽快发送适当的读命令来读取从站数据。主站有两种方法来测定从站是否已经将邮箱数据填入数据区。一种是使用FMMU周期性地读某一标志位。使用逻辑寻址可以同时读取多个从站的标志位,但其缺点是每个从站都需要一个FMMU单元。另一个方法就是简单地轮询ESC输入邮箱的数据区。读命令的工作计数器增加1表示从站已经将新数据填入了输入数据区。
CoE邮箱数据结构


SDO服务
CoE通信服务类型为2和3是SDO通信服务,SDO数据结构如下图所示,


SDO通信服务的3种类型,如下图所示,

SDO下载传输请求
SDO下载传输请求数据格式如下图所示,

如果要传输的数据小于4个字节,则使用SDO快速SDO传输服务,它完全兼容CANOpen协议,使用8个字节数据,其中4个字节为数据区,有效字节数为4-x(位2和3表示的数值)。
如果要传输的数据大于4个字节,则使用常规传输服务。在常规传输时,用快速传输时的4个数据字节表示要传输的数据的完整大小,用扩展数据部分传输有效数据,有效数据的最大容量为邮箱容量减去16(邮箱头6+CoE命令2字节+8字节数据 = 16),实际大小为邮箱头中长度数据n-10(CoE命令2字节+8字节数据=10)。
SDO下载传输请求服务的数据帧内容如下表:

SDO分段下载传输
在常规下载传输时,如果传输数据对象的总数量大于本次传输的允许数据数量,则必须使用后续的分段下载传输服务,数据元素描述如下表,

SDO下载传输响应
从站收到SDO下载请求后执行相应处理,然后将响应数据写入输入邮箱SM1中,由主站读走。主站只有得到正确的响应之后才能执行下一步SDO操作。正确的SDO下载响应数据格式如下图,

响应数据描述如下表:

终止SDO传输
在SDO传输过程中,如果某一方发现有错误,可以发起SDO终止传输请求,对方收到此请求后,停止当前SDO传输。SDO终止传输请求不需要应答。下表描述了该请求的相关数据元素。

其中SDO数据中有4个字节的终止码,表示终止传输的具体原因,如下表所列。


SDO下载传输举例
1)有效数据不大于4字节

2)有效数据大于4字节且小于邮箱容量

3)有效数据大于邮箱容量,需分段传输

紧急事件
紧急事件由设备内部的错误事件触发,将诊断信息发送给主站。当诊断事件消失之后,从站应该将诊断事件和错误复位码再发送一次。紧急事件数据帧格式如下图,

其各个数据元素描述如下表,

紧急事件的错误码如下表所列,

