EtherCAT开发_5_wireshark抓包记录

1、TwinCAT 设置成混杂模式

81505b016164ebbc21a15ddf180c8151.png

保存后重启TwinCAT。

此时我的设备无法进入OP状态,WireShark也没有任何数据。

537e98ed9fbed43f2a0cc3e0bf8ff0d8.png

2、TwinCAT无法进入OP状态,如何再次进入到OP状态?

①点击绿色按钮后,点击弹窗的确定按钮,消除弹窗,此时仍无法进入OP状态    

4fbba7bfe173fc8f7f4520f78ee020f6.png

5a2ebddcb9c3e95ba222376d3e784d62.png

②重新加载设备

28230500375aed984cd0c7a93b359746.png

0e1ca714f246f2c97da3cf5af5bd815d.png

选择是。

54fd0b4200b1bd7dca696644bc1a2c0d.png

可以了。

3、EtherCAT数据帧初步分析

EtherCAT采用标准的IEEE 802.3以太网帧,帧类型为0x88A4。EtherCAT帧是由EtherCAT帧头和最大有效长度为1498字节的EtherCAT报文组成。

Ether CAT 通信帧结构采用标准以外网帧结构,是通过对传统协议进行修改形成,在标准协议里插入专用帧类型的 Ether CAT 数据帧,也就是说,标准协议的数据内容就是 Ether CAT 的数据帧。专用帧类型用 0x88A4 进行标记。也因为如此,Ether CAT 通信可被标准的以太网通信完全兼容。Ether CAT 数据帧的报文结构如图。    

57137ba94194a8d7fb3e8904059f0e96.png

cc1f0165896ec6da67f8f7bd9c810246.png

两个对比学习。    

daf65fad7eb75ce1bbcee79723a2ac66.png

Ether CAT 的子报文主要由三个部分组成,分别是子报文头、子报文数据和工作计数器 WKC(Working Counter)。工作计数器 WCK 存在的目的是判断子报文是否被从站读取或插入过,通过记录从站对子报文进行操作的次数来实现。

6fb4593b8580a69ee58a191c52dac314.png

       Ether CAT 子报文的结构定义见表 2-2。子报文包含命令、索引、地址区长度、标志位、状态位、数据区和工作计数器等 7 个部分。报文中的命令一般是 8 位,用来表示报文寻址方式和读写操作;索引就是帧编码;从站通信地址是地址去中的32位二进制码;标志位M是后续报文的表示,如果 Ether CAT 数据帧有多个子报文,除最后一个子报文的标志位外,其他子报文的标志位都需要被职位;子报文数据属于用户自定义部分,长度一般是 1486个 byte。        

EtherCAT 子报文所有的服务都是以主站操作捎述的 。 数据链路!去规定了从站内部物理存储、读写和交换(读取并马上写入〉数据的服务。读写操作和寻址方式共同决定了子报文的通信服务类型,由子报文头中的命令字节表示。EtherCAT 支持的所有命令如表2.4所列 。

1bf4edba099c0be8e1ed2ac099a69a3a.png

395e939aa6a1c7c8e63b3f00eb41c596.png

       先储备上述基础知识,报文的分析总是枯燥和快乐的,快乐的是从无知到懵懵懂懂。

看抓到的第一帧数据,29字节。

①好理解的数据

6字节(010105010000)目标mac;

6字节(000000000000)源mac;

0x88A4(88a4);                      ……  目前总计14字节    

EtherCAT frame header(16bit,2字节)

    .... .000 0000 1101 = Length: 0x00d                               …… 11位

    .... 0... .... .... = Reserved: Valid (0x0)                               …… 1位

    0001 .... .... .... = Type: EtherCAT command (0x1)     …… 4位

②子报文

EtherCAT datagram(s): 'BWR': Len: 1, Adp 0x0, Ado 0x101, Wc 0

    EtherCAT datagram: Cmd: 'BWR' (8), Len: 1, Adp 0x0, Ado 0x101, Cnt 0

        Header

            Cmd        : 8 (Broadcast Write)

            Index: 0x80

索引:80 BWR命令下每发出1条子报文,索引会加1,范围在0x80~0xff

            Slave Addr: 0x0000

            Offset Addr: 0x0101

地址区: 00 00 01 01 除逻辑寻址命令外,地址区会拆分成Slave Addr 和 Offset Addr,也就是Slave Addr:0x0000,Offset Addr:0x0101,注意一下,这是小端模式,要怎么读你懂的;如果是逻辑寻址,地址区就只有一个32位的 Log Addr:0x 01010000。(我还看不懂…)

            Length     : 1 (0x1) - No Roundtrip - Last Sub Command

                .... .000 0000 0001 = Length: 1

                ..00 0... .... .... = Reserved: Valid (0)

                .0.. .... .... .... = Round trip: Frame is not circulating

                0... .... .... .... = Last indicator: Last EtherCAT datagram

长度:0100 报文数据区长度,小端模式,正确排序是0x0001,将它扩写成二进制:

0000 0000 0000 0001;

把无关的位用*代替:    

0*** **** **** ****最高位,就是帧结构里的M,为0表示只有一帧,为1表示后续还有后续报文;

*000 0*** **** ****高2、3、4位是保留位,但实际情况下,使用wireshark解析,高第二位的定义是.0.. .... .... .... = Round trip: Frame is not circulating;

**** *000 0000 0001剩余的低11位是数据长度。

            Interrupt: 0x0000

状态位:0000中断到来标志

        ESC Ctrl (0x101): 0x00, Port 0: Auto loop, Port 1: Auto loop, Port 2: Auto loop, Port 3: Auto loop

            .... ..00 = Port 0: Auto loop (0x0)

            .... 00.. = Port 1: Auto loop (0x0)

            ..00 .... = Port 2: Auto loop (0x0)

            00.. .... = Port 3: Auto loop (0x0)

数据:00 报文结构,用户定义

        Working Cnt: 0

WKC:00 WKC了子报文被从站操作的次数,主站为每个通信服务子报文设置预期的WKC。发送子报文中的工作计数器初值为0,子报文被从站正确处理后,工作计数器的值将增加一个增量,主站比较返回子报文中的WKC和预期WKC来判断子报文是否被正确处理。WKC由ESC在处理数据帧的同时进行处理,不同的通信服务对WKC的增加方式不同。    

defefdebb52120d821ef4587ebae70b0.png

参考资料:     

《https://www.cnblogs.com/panda990/p/16787029.html》

《工业以太网现场总线 EtherCAT 驱动程序设计及应用》

《EtherCAT 主站与从站设计与实现——蒲婉玲》

殊途同归!   

欢迎关注!

《工业以太网现场总线 EtherCAT 驱动程序设计及应用》

《EtherCAT 主站与从站设计与实现——蒲婉玲》

两个资料的获取可在公众号后台留言“ecat报文资料”。

EtherCAT开发_1_软硬件环境介绍

EtherCAT开发_2_SSC使用记录

EtherCAT开发_3_SSC生成协议栈移植到STM32F405

EtherCAT开发_4_分布时钟知识点摘抄笔记1

0349436f865dbee5173662fabd340843.png

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Wireshark是一款开源的网络协议分析工具,可以监控和分析网络通信数据。而EtherCAT是一种实时以太网通信协议,用于实时控制系统中的高速数据传输。 当我们想要对EtherCAT进行抓包分析时,可以使用Wireshark来进行抓包工作。首先,我们需要在Wireshark中设置网络接口,选择与EtherCAT通信的网络接口,并启动抓包功能。 一旦Wireshark开始捕获数据包,它将会记录在接口上发送和接收的所有数据包。当然,由于EtherCAT是基于以太网的协议,所以Wireshark可以直接识别并解析EtherCAT数据包。 通过分析捕获的数据包,我们可以得到许多有用的信息。首先,我们可以查看EtherCAT数据包的源和目的IP地址、MAC地址,以及协议类型。其次,我们可以查看EtherCAT数据包的内容,了解数据包中的实时控制命令、数据值等。 除了基本的数据包信息和内容,Wireshark还提供了很多功能用于进一步分析EtherCAT通信。我们可以使用过滤器来筛选和检索特定类型的数据包,以便更好地观察特定的通信模式。此外,Wireshark还提供了图形化的统计信息和报告功能,可以帮助我们更好地理解EtherCAT通信的性能和效率。 总之,Wireshark是一款强大的网络协议分析工具,可以帮助我们抓包和分析EtherCAT通信。通过使用Wireshark,我们可以深入了解EtherCAT通信的细节,并找到可能存在的问题或优化的空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值