赞
踩
EtherCAT协议是位于Ethernet协议之上的网络层协议,与IP协议平级。EtherCAT协议与其它常见协议的关系如图1所示:
一般使用wireshark软件抓取和分析EtherCAT报文,针对不同的情况一般有以下3种抓包方式:
普通PC机或可以运行wireshark软件的工业电脑作为EtherCAT主站(如图2所示),这种情况下抓包非常容易,直接在电脑上运行wireshark软件抓包即可。
使用PLC或其它无法直接运行wireshark软件的专用控制器作为EtherCAT主站(如下图所示),这种情况下一般有两种抓包方式:一种是使用专用的抓包硬件(如图3所示),这种方法在这里不作过多说明;另一种方法是加入一个交换机和一台普通电脑(如图4所示),在电脑上运行wireshark软件抓包。
特别说明:使用交换机抓包时EtherCAT报文要使用广播方式传输,在Codesys中设置方法如下图所示:
EtherCAT报文过滤方法及相关过滤器参见以下网址:
常用过滤器及使用说明
过滤器 | 说明 |
---|---|
ecat | 过滤出所有EtherCAT报文 |
ecat_mailbox | 过滤出所有邮箱访问报文 |
ecat_mailbox.coe | 过滤出所有COE报文 |
eth.addr==fc:69:47:21:da:87 | 过滤出源MAC地址或目标MAC地址为fc:69:47:21:da:87的报文 |
eth.src==fc:69:47:21:da:87 | 过滤出源MAC地址为fc:69:47:21:da:87的报文 |
eth.dst==fc:69:47:21:da:87 | 过滤出目标MAC地址为fc:69:47:21:da:87的报文 |
ecat.cmd==FPRD | 过滤出名了为FPRD的报文(见表2) |
ecat.adp==0x03e9 | 过滤出从站地址为0x03e9(1001)的报文 |
ecat.ado==0x130 | 过滤出偏移地址为0x130的报文 |
ecat_mailbox.coe.sdoidx==0x1a00 | 过滤出索引为0x1a00的SDO报文 |
ecat_mailbox.coe.sdosub==0 | 过滤出子索引为0的SDO报文 |
常见的EtherCAT命令
命令 | 说明 |
---|---|
BRD | 广播读 |
BWR | 广播写 |
BRW | 广播读写 |
APRD | 自动增加地址读 |
APWR | 自动增加地址写 |
APRW | 自动增加地址读写 |
FPRD | 配置地址读 |
FPWR | 配置地址写 |
FPRW | 配置地址读写 |
LRD | 逻辑地址读 |
LWR | 逻辑地址写 |
LRW | 逻辑地址读写 |
常见的偏移地址
偏移地址 | 说明 |
---|---|
0x0010 | 配置地址(Configed address) |
0x0012 | 地址别名(Alias address) |
0x0120 | 状态控制(见表4) |
0x0130 | 状态反馈(见表4) |
0x0504 | 指定EEPROM地址 |
0x508 | 访问EEPROM内容 |
EtherCAT状态
状态 | 说明 |
---|---|
1 | 初始化(Init) |
2 | 预操作(PreOP) |
4 | 安全操作(SafeOP) |
8 | 操作(OP) |
扫描从站:主站发送偏移地址为0x0130的BRD报文,应当报文中的工作计数即为扫描到的从站数量。
报文过滤器:ecat.cmdBRD && ecat.ado0x130
请求报文
应答报文
从站启动过程:主站依次向偏移地址0x0120发送1、2、4、8命令控制从站依次进入初始化、预操作、安全操作、操作状态
报文过滤器:ecat.ado0x120&& (ecat.adp0x03e9 ||ecat.adp==0xffff)
控制从站进入Init状态
控制从站进入PreOP状态
控制从站进入SafeOP状态
控制从站进入OP状态
报文过滤器:
ecat.ado0x120 || ecat_mailbox.coe) && (ecat.adp0x03e9 ||ecat.adp==0xffff)
在PreOP状态下通过SDO读取或设置PDO映射参数
用下面报文过滤器过滤1001从站的索引为0x1600、子索引为0的SDO报文
ecat.adp0x03e9 && ecat_mailbox.coe.sdoidx0x1600 && ecat_mailbox.coe.sdosub==0
SDO报文过滤
PDO报文过滤器:
(ecat.cmdLWR || ecat.cmdLRD || ecat.cmdLRW) && ecat.lad0x1000000
RPDO数据
TPDO数据
根据报文内容过滤:
过滤数据部分前6个字节为00:00:37:16:01:00的报文
ecat.cmd==LRW && ecat.data[0:6]==00:00:37:16:01:00
Data过滤
PDO报文延迟抖动分析:
按照下图将过滤出的PDO报文导出到CSV文件
导出PDO报文到CSV文件
用Excel打开导出的CSV文件,并过滤发送帧
选中前两列数据并复制到一个新sheet页,并计算每帧与前一帧的时间差(帧间隔)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。