0 工具准备
1.EtherCAT主站
2.EtherCAT从站(本文使用步进电机驱动器)
3.Wireshark
1 抓包分析
1.1 报文总览
本文主站设置从站1字地址为0的EEPROM数据为0x3C00(设置完毕后请还原字0的EEPROM数据),使用Wireshark抓取到的报文如下:
1.2 EEPROM写入阶段1:将EEPROM访问控制权设置为主站
这一阶段涉及的寄存器包括0x0500、0x0501,有关这2个寄存器的描述如下:
将EEPROM访问控制权设置为主站的操作分为2步:
(1)强制PDI释放EEPROM访问控制权
主站通过FPWR配置写报文设置0x0500.1为1,该位设置为1时将复位0x0501.0为0。这一操作可以强制清除0x0501.0为0,从PDI手中夺取EEPROM访问控制权。
(2)主站接管EEPROM访问控制权
主站通过FPWR配置写报文设置0x0500.0为0,由主站接管EEPROM的访问控制权。
1.3 EEPROM写入阶段2:等待EEPROM接口空闲
这一阶段涉及的寄存器为0x0502的bit15:
主站不断发送FPRD配置读报文查看0x0502寄存器bit15状态,一直等到EEPROM接口空闲。
1.4 EEPROM写入阶段3:将数据写入到EEPROM数据寄存器
这一阶段涉及的寄存器是0x0508:
主站通过FPWR设置写报文设置0x0508EEPROM数据寄存器值为0x3C00:
1.4 EEPROM写入阶段4:发送写入EEPROM命令(包括写入地址)
这一阶段涉及的寄存器为0x0502的bit0、bit9以及0x0504-0x0507寄存器:
主站通过FPWR配置写报文设置0x0502.0=1、0x0502.9=1,这2位必须由一个数据帧写完成,表示主站要进行写操作。设置寄存器0x0504-0x0507为0x0表示EEPROM要写入的字地址为0x0:
1.6 EEPROM读取阶段5:等待EEPROM接口空闲(等待ESC完成EEPROM写入操作)
这一阶段涉及的寄存器为0x0502的bit13、bit15:
主站不断发送FPRD配置读报文,读取0x0502寄存器bit15查看EEPROM接口是否空闲,等待ESC完成EEPROM数据写入工作:
当EEPROM接口空闲时主站会检查0x0502寄存器bit13是否为置位,如果置位则表示EEPROM无应答或命令无效,否则表示写入成功。
2 总结
EtherCAT主站写从站EEPROM数据可以分为以下5个步骤:
(1)主站夺取EEPROM访问控制权
(2)等待EEPROM接口空闲
(3)将数据写入到EEPROM数据寄存器
(4)发送写入EEPROM命令(包括写入地址)
(5)等待EEPROM接口空闲(等待ESC完成EEPROM写入操作)