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波形圖分析,繪制出波形圖,可以看出主站周期抖動情況,是否有數據包丟失等問題。
-
寄存器
+關注
關注
31文章
5357瀏覽量
120689 -
指令
+關注
關注
1文章
608瀏覽量
35762 -
ethercat
+關注
關注
18文章
714瀏覽量
38744
原文標題:基于RX72M開發EtherCAT從站的數據包分析(下)
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論