0.工具准备
1.EtherCAT主站
2.EtherCAT从站(本文使用步进电机驱动器)
3.Wireshark
1.EtherCAT报文帧结构
EtherCAT使用标准的IEEE802.3 Ethernet帧结构,帧类型为0x88A4。EtherCAT数据包括2个字节的数据头和44-1498字节的数据。数据区由一个或多个EtherCAT子报文组成,每个子报文对应独立的设备或从站存储区域。EtherCAT数据帧结构定义如下所示:
图中部分内容的定义如下:
3.EtherCAT报文-BRD抓包
BRD报文也就是广播读报文,一般用于在主站初始化从站阶段通过BRD报文获取当前网络中的从站数量。
3.1 主站发送BRD报文
主站向从站(2个)的0x0001寄存器(ESC芯片类型寄存器)发起广播读命令。报文如下:
3.1.1 以太网帧头
目的地址:ff:ff:ff:ff:ff:ff
源地址:01:01:01:01:01:01
帧类型:0x88A4
3.1.2 EtherCAT头
EtherCAT数据长度:0x00d(13)
保留位:0
类型:0x1(EtherCAT命令)
3.1.3 子报文
3.1.3.1 子报文头
命令:7(广播读命令)
索引(帧存放临时缓冲区编号):0x01
从站地址:0x0000 (这里由于是主站发送的BRD报文,通常都置0x0000)
偏移地址:0x0001(所谓偏移地址就是寄存器地址)
长度:1(和寄存器地址长度相对应,0x0000寄存器长度为2字节)
保留位:0
是否阻止循环帧发送:0(报文不是循环报文)
是否有后续子报文:0(这是最后一个子报文)
状态(中断到来标志):0x0000
3.1.3.2 数据
注意:图中红框标记处为数据
数据:0x00
3.1.3.3 WKC
WKC(工作计数器):由于是主站发出的BRD报文,还没经过从站,因此wkc为0
后面的连续的00是填充字节,使EtherCAT报文满足以太网报文最小64byte的要求。
3.1.3.4 FCS
由于Wireshark不支持显示FCS,这里省略4Byte的FCS。值得说明的是,能够被Wireshark抓取到的报文,都是FCS校验通过的帧。
3.2 主站接收从站返回的BRD报文
主站向从站(2个)的0x0001寄存器(ESC芯片类型寄存器)发起广播读命令,随后会收到从站返回的BRD报文,内容如下:
3.2.1 以太网帧头
目的地址:ff:ff:ff:ff:ff:ff
源地址:03:01:01:01:01:01
帧类型:0x88A4
3.2.2 EtherCAT头
EtherCAT数据长度:0x00d(13)
保留位:0
类型:0x1(EtherCAT命令)
3.2.3 子报文
3.2.3.1 子报文头
命令:7(广播读命令)
索引(帧存放临时缓冲区编号):0x01
从站地址:0x0002(从站返回的顺序号)
偏移地址:0x0001(所谓偏移地址就是寄存器地址)
长度:1(和寄存器地址长度相对应,0x0000寄存器长度为1字节)
保留位:0
是否阻止循环帧发送:0(报文不是循环报文)
是否有后续子报文:0(这是最后一个子报文)
状态(中断到来标志):0x0000
3.2.3.2 数据
数据:0x01
3.2.3.3 WKC
WKC(工作计数器):经过了2个从站的BRD报文,wkc = 0 +1 + 1 = 2。
后面的连续的00是填充字节,使EtherCAT报文满足以太网报文最小64byte的要求。
3.2.3.4 FCS
由于Wireshark不支持显示FCS,这里省略4Byte的FCS。值得说明的是,能够被Wireshark抓取到的报文,都是FCS校验通过的帧。
总结
(1)BRD报文每经过一个从站wkc+1,本例接入从站数量为2,因此返回wkc=2。
(2)BRD报文返回的数据是最后一个从站所处理的。