EtherCAT主站读取从站EEPROM抓包分析

2023-11-05 05:04

本文主要是介绍EtherCAT主站读取从站EEPROM抓包分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0 工具准备

1.EtherCAT主站
2.EtherCAT从站(本文使用步进电机驱动器)
3.Wireshark

1 抓包分析

1.1 报文总览

本文让主站去读取从站1字地址为0的EEPROM数据内容,主站读取从站EEPROM数据内容使用Wireshark抓包如下:
在这里插入图片描述

1.2 EEPROM读取阶段1:将EEPROM访问控制权设置为主站

在这里插入图片描述
这一阶段涉及的寄存器包括0x0500、0x0501,有关这2个寄存器的描述如下:
在这里插入图片描述
将EEPROM访问控制权设置为主站的操作分为2步:
(1)强制PDI释放EEPROM访问控制权
在这里插入图片描述
通过APWR自动增量写报文设置0x0500.1为1,该位设置为1时将复位0x0501.0为0。这一操作可以强制清除0x0501.0为0,从PDI手中夺取EEPROM访问控制权。
(2)主站接管EEPROM访问控制权
在这里插入图片描述
通过APWR自动增量写报文设置0x0500.0为0,由主站接管EEPROM的控制权。

1.3 EEPROM读取阶段2:读取EEPROM支持读字节数

在这里插入图片描述
这一阶段涉及的寄存器为0x0502:
在这里插入图片描述
主站通过APRD自动增量读报文读取0x0502寄存器获取EEPROM状态,返回的数据为0x0060,表明EEPROM支持读取的字节数为8字节,也就是每次读取每个字地址时都会返回以字地址开头的8字节数据。
在这里插入图片描述

1.4 EEPROM读取阶段3:等待EEPROM接口空闲

在这里插入图片描述
这一阶段涉及的寄存器为0x0502的bit15:
在这里插入图片描述
主站不断发送APRD自动增量读报文查看0x0502的bit15状态,一直等到EEPROM接口空闲。
在这里插入图片描述

1.5 EEPROM读取阶段4:发送读取EEPROM命令

在这里插入图片描述

这一阶段涉及的寄存器为0x0502的bit8以及0x0504-0x0507寄存器:
在这里插入图片描述在这里插入图片描述

主站通过APWR自动增量写报文设置0x0502寄存器的bit8为1,表示主站要开始进行读操作,设置寄存器0x504-0x507为0x0表示EEPROM的读取字地址为0x0:
在这里插入图片描述

1.6 EEPROM读取阶段5:等待EEPROM接口空闲

在这里插入图片描述

这一阶段涉及的寄存器为0x0502的bit15:
在这里插入图片描述
主站不断发送APRD自动增量读报文,读取0x0502寄存器bit15查看EEPROM接口是否空闲:
在这里插入图片描述

1.7 EEPROM读取阶段6:读取EEPROM数据

在这里插入图片描述
这一阶段涉及的寄存器为0x0508:
在这里插入图片描述
主站发送APRD自动增量读报文读取0x0508寄存器内容,长度为8,也就是前文获取到的读取字节数:
在这里插入图片描述
至此,主站读取从站EEPROM工作结束,获取到的以字地址0开头的EEPROM 8字节数据为:00 3C 00 00 00 64 00 00。

2 总结

主站读取从站EEPROM数据可以分为以下6个步骤:
(1)主站夺取EEPROM访问控制权
(2)获取从站EEPROM支持的读字节数
(3)等待从站EEPROM接口空闲
(4)发送读取EEPROM命令(包括读取地址)
(5)等待从站EEPROM接口空闲
(6)读取EEPROM数据

这篇关于EtherCAT主站读取从站EEPROM抓包分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/347600

相关文章

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

Java读取InfluxDB数据库的方法详解

《Java读取InfluxDB数据库的方法详解》本文介绍基于Java语言,读取InfluxDB数据库的方法,包括读取InfluxDB的所有数据库,以及指定数据库中的measurement、field、... 首先,创建一个Java项目,用于撰写代码。接下来,配置所需要的依赖;这里我们就选择可用于与Infl

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实