EtherCAT数据抓包方法分析

描述

 

3. EtherCAT数据抓包方法分析

检测主站是否请求从站进入op状态

原理性分析:0x120是ESC的AL control寄存器,通过分析该值知道主站是否请求从站进入相应的状态,比如从站进不了op,那么可以先根据该指令判断主站是否请求从站进入op了。AL control寄存器不同值对应不同含义:

1: Request Init State 

3: Request Bootstrap State 

2: Request Pre-Operational State 

4: Request Safe-Operational State 

8: Request Operational State

通过设置过滤条件ecat.ado == 0x120,找到该寄存器值为8,从而知道在第32007条报文,主站开始请求从站进入op。

寄存器

检测从站是否进入op状态

原理性分析:0x130是ESC的AL status寄存器,通过分析该值知道从站是否已进入相应的状态,比如从站是否进入op,AL status寄存器不同值对应不同含义:

Actual State of the Device State Machine:

1: Init State

3: Bootstrap State

2: Pre-Operational State

4: Safe-Operational State

8: Operational State

通过设置过滤条件ecat.ado == 0x130,找到该寄存器值为8,从而知道在第32812条报文,从站才开始进入op,才有周期过程数据(pdo数据),也就是说,分析主站的周期性数据,报文范围是从32812开始算起。

寄存器

检测主站数据发送周期情况

原理性分析:通过分析进入op后,发送的过程数据逻辑寻址指令Lxx来分析主站报文周期抖动情况,比如每个周期都会发送LWR逻辑写,那么可以将LWR指令过滤出来,cnt等于0表示刚从主站出来,还没经过任何从站,所以WKC为0。

根据章节2连接好拓扑,将数据包通过侦听器抓取出来后,设置数据显示格式如下:

寄存器

过滤出在第32812条报文,从站开始进入op,主站开始发送周期性报文。

寄存器

分析周期性报文,注意到每个周期性报文包含三个子报文(逻辑寻址LRD,LWR,LRD)和DC指令,在DC模式下,每个DC周期都会发送相关的ARMW命令。

寄存器

过滤出周期性报文,使用指令ecat.sub1.cmd == LRD && ecat.sub1.cnt == 0,过滤出子报文1为LRD且计数器值为0(表示从主站发出,未经过从站)的周期性报文,选择三角进行报文排序,可以是从小到大,或者从大到小,可以看出主站周期最小981.160us,最大是1015.040us,wireshark报文保存为CSV格式,然后excel打开 通过对time列数据进行excel波形图分析,绘制出波形图,可以看出主站周期抖动情况,是否有数据包丢失等问题。

寄存器寄存器寄存器

 

  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分