0.工具准备
1.EtherCAT主站
2.EtherCAT从站(本文使用步进电机驱动器)
3.Wireshark
1.EtherCAT报文帧结构
EtherCAT使用标准的IEEE802.3 Ethernet帧结构,帧类型为0x88A4。EtherCAT数据包括2个字节的数据头和44-1498字节的数据。数据区由一个或多个EtherCAT子报文组成,每个子报文对应独立的设备或从站存储区域。EtherCAT数据帧结构定义如下所示:
图中部分内容的定义如下:
3.EtherCAT报文-FPWR抓包
FPWR报文也就是配置地址写报文,在主站设置好从站的站点地址后便可以使用该报文寻址从站写从站寄存器数据。
3.1 主站发送FPWR报文
主站向从站(2个)发送FPWR报文,设置站点地址为0x1001的从站本地系统时间(0x0910寄存器)为0x0,报文如下:
3.1.1 以太网帧头
目的地址:ff:ff:ff:ff:ff:ff
源地址:01:01:01:01:01:01
帧类型:0x88A4
3.1.2 EtherCAT头
EtherCAT数据长度:0x014(20)
保留位:0
类型:0x1(EtherCAT命令)
3.1.3 子报文
3.1.3.1 子报文头
命令:5(配置地址写命令)
索引(帧存放临时缓冲区编号):0x00
从站地址:0x1001(从站1的站点地址)
偏移地址:0x0910(所谓偏移地址就是寄存器地址)
长度:8(和寄存器地址长度相对应,0x0910寄存器长度为2字节)
保留位:0
是否阻止循环帧发送:0(报文不是循环报文)
是否有后续子报文:0(这是最后一个子报文)
状态(中断到来标志):0x0000
3.1.3.2 数据
数据:0x0000000000000000
3.1.3.3 WKC
WKC(工作计数器):由于是主站发出的FPWR报文,还没经过从站,因此wkc为0。
后面的连续的00是填充字节,使EtherCAT报文满足以太网报文最小64byte的要求。
3.1.3.4 FCS
由于Wireshark不支持显示FCS,这里省略4Byte的FCS。值得说明的是,能够被Wireshark抓取到的报文,都是FCS校验通过的帧。
3.2 主站接收从站返回的FPWR报文
主站向从站(2个)发送FPWR报文,设置站点地址为0x1001的从站1的本地系统时间为0x0,随后会收到从站返回的FPWR报文,内容如下:
3.2.1 以太网帧头
目的地址:ff:ff:ff:ff:ff:ff
源地址:03:01:01:01:01:01
帧类型:0x88A4
3.2.2 EtherCAT头
EtherCAT数据长度:0x014(20)
保留位:0
类型:0x1(EtherCAT命令)
3.2.3 子报文
3.2.3.1 子报文头
命令:5(配置地址写命令)
索引(帧存放临时缓冲区编号):0x00
从站地址:0x1001
偏移地址:0x0910(所谓偏移地址就是寄存器地址)
长度:8(和寄存器地址长度相对应,0x0910寄存器长度为8字节)
保留位:0
是否阻止循环帧发送:0(报文不是循环报文)
是否有后续子报文:0(这是最后一个子报文)
状态(中断到来标志):0x0000
3.2.3.2 数据
数据:0x0000000000000000
3.2.3.3 WKC
WKC(工作计数器):FPWR报文有1个从站处理,因此wkc = 0 + 1 = 1。
后面的连续的00是填充字节,使EtherCAT报文满足以太网报文最小64byte的要求。
3.2.3.4 FCS
由于Wireshark不支持显示FCS,这里省略4Byte的FCS。值得说明的是,能够被Wireshark抓取到的报文,都是FCS校验通过的帧。
总结
(1)设置寻址时,从站的地址与其在网段内的连接顺序无关。从站的配置地址可以由主站在数据链路启动阶段配置给从站,也可以由从站上电初始化时从自身的配置数据存储区装载,然后由主站在链路启动阶段使用顺序寻址方式读取各个从站的设置地址,并在后续运行中使用。
(2)FPWR报文寻址成功情况下,WKC+1。