EtherCAT的4种寻址方式解析
我们知道,一个EtherCAT数据帧(frame)里面包含很多个报文(datagram),不管是什么样式的报文,它们的目的只有一个,就是读写从站寄存器或内存。所以寻址就是以什么方式访问哪个从站的哪个寄存器或内存。理解了寻址方式,就可以结合具体的地址和数据,搞清楚报文对从站到底干了什么事情。
EtherCAT数据帧
1.寻址方式解析
EtherCAT寻址方式只有4种:位置寻址(Position address)、节点寻址(Node address)、广播寻址(Broadcast address)、逻辑寻址(Logical address)。表中给出了不同的Cmd所采用的寻址方式。
Cmd寻址方式和描述
不同寻址方式,报文头的Address字段组成也有所不同:
不同寻址方式的Address字段组成
(1)位置寻址
又叫顺序寻址,根据从站在链路上的位置进行寻址,通常用于初始化。
Address字段包括16位ADP和16位ADO。
当从站接收到ADP为0的报文时,则对报文进行读写操作,然后再把ADP加1。(如果是读操作就把从站ADO地址对应的数据写入报文,如果是写操作就把报文中的数据写入从站ADO对应的地址)
例如要对第0个从站进行读写操作,该报文的ADP就为0,第0个从站操作完之后ADP加1,后面的从站就不会根据该报文进行任何操作。又比如要对第2个从站进行读写操作,ADP就为-2(0xFFFE),那它传到第0个从站时ADP=-2,传到第1个从站时ADP=-1,传到第2个从站时才ADP=0,相应的读写操作才会进行。
(2)节点寻址
又叫设置寻址,根据从站被配置的地址进行寻址,通常用于对单独某个从站的读写(如SDO)。
Address字段包括16位ADP和16位ADO。
其中ADP为从站被配置的地址(理论上可以为任意值),ADO为从站里面某个寄存器的地址。如果报文的ADP与从站被配置的地址(存储在寄存器中)匹配,则该从站执行相应的操作。
(3)广播寻址
对链路上的每个从站进行读写操作。
Address字段包括16位ADP和16位ADO。
ADP本身不用于寻址,但每个从站会对它进行加1操作,ADO为从站里面某个寄存器的地址。如果是广播写,从站会将报文数据写入存储;如果是广播读,从站会把存储数据与报文数据求或,再写入报文。
(4)逻辑寻址
根据FMMU映射进行寻址,通常用于PDO过程数据交互。
Address字段包括32位的Addr。
Address为逻辑起始地址(由FMMU配置,存放在0x06y0寄存器中)。如果从站FMMU与报文的Address相符,则根据配置好的映射关系,将报文中特定偏移量的数据写入从站特定的地址,或将从站特定的地址的数据读入报文中特定偏移量。
2.示例解析
接下来通过WireShark抓取实际EtherCAT数据包,来对不同寻址方式进行详细分析。
如图所示为某品牌六轴机械臂运行时收发的数据帧,主站通过串行方式直连6台伺服驱动器从站设备,抓包时机械臂各关节在位置模式下做简单运动。
EtherCAT发送数据帧
EtherCAT接收数据帧
可以看到EtherCAT数据帧中包含了位置寻址(ARMW)、逻辑寻址(LWR、LRD)、节点寻址(FPRD)和广播寻址(BRD)报文。不同Cmd指令描述见上表。
可见发送出去和接收进来的报文种类数量都没有改变,但其中的数据内容和Working Counter(Cnt)在从站的操作下发生了相应的改变。下面对每种报文进行解析。
(1)ARMW报文
发送ARMW报文
接收ARMW报文
如图所示为发送和接收的ARMW报文。采用位置寻址,当从站接收到ADP为0时,将地址为ADO的寄存器内容写入报文数据,如果从站接收到ADP不为0时,则将报文数据写入地址为ADO的寄存器,操作完成后对ADP加1。
该报文用于DC时钟同步,链路上第一个具有DC功能的从站作为主时钟。因此发送数据帧ADP=0意味着只有第一个从站会把自己的0x910寄存器数值写入报文,报文中的数据就是第一个从站的系统时间,后面的从站就只是默默地把该数据读入自己的0x910寄存器中。
这里由于链路上第一个从站对该报文进行了1次写操作,另外五个从站对该报文进行了总共5次读操作,因此Cnt=1+1+5=7。
(2)LRD报文
发送LRD报文
接收LRD报文
如图所示为发送和接收的LRD报文。LWR、LRD都采用逻辑寻址,因此从站只需要按照约定(配置)好的,将内存中特定的数据写入报文数据中特定的位置即可。发送时该报文的数据为全零,接收回来的时候就已经被填上数据了。这里的数据内容无非就是PDO过程数据,比如伺服电机的位置、速度、电流、状态字什么的。
这里六个从站分别对该报文进行了1次写操作,因此Cnt=1+6=7。
(3)FPRD报文
发送FPRD报文
接收FPRD报文
如图所示为发送和接收的FPRD报文,采用节点寻址。从站接收到ADP与自己被配置的地址相符,就把ADO地址的寄存器数据写入报文。这里链路上某个从站地址被配置为0x3ec,然后读取它的0x130寄存器的数值写入报文数据。
这里由于链路上只有一个从站对该报文进行了1次写操作,因此Cnt=0+1=1。
(4)BRD报文
发送BRD报文

接收BRD报文
如图所示为发送和接收的BRD报文。采用广播寻址,ADP没有实际意义,但每经过一个从站就会被加1。这里每个从站都会把ADO,也就是0x130地址的寄存器数值与报文中的数据按位或,然后写入报文。
查手册可知0x130寄存器存放的是从站的数据链路层状态(AL Status),当从站处于不同的状态,对应的比特位就会置1。也就是说,当报文数据中只有bit3为1时,可判断链路上所有从站都进入了OP状态;而当报文数据中bit2和bit3同时为1时(0x000c),链路上至少有一个从站处于SAFEOP且至少有一个处于OP,但具体哪一个也不知道。
这里六个从站分别对该报文进行了1次写操作,因此Cnt=2+6=8。
3.总结
总的来说,位置寻址用于从站都没有被配置,仅知道它在链路中位置的情况;节点寻址用于对从站点对点的通信,可用于从站配置和数据读取;广播寻址用于比较宽泛的设置和读取操作;逻辑寻址则用于数据量较大的读写操作,具有更高的信息密度和报文使用率。
参考网址:
EtherCAT寻址方式解析 - 知乎
Beckhoff Information System - English
相关文章:
EtherCAT的4种寻址方式解析
我们知道,一个EtherCAT数据帧(frame)里面包含很多个报文(datagram),不管是什么样式的报文,它们的目的只有一个,就是读写从站寄存器或内存。所以寻址就是以什么方式访问哪个从站的哪个…...
Trino 源码剖析
Functions function 反射和注册 io.trino.operator.scalar.annotations.ScalarFromAnnotationsParser 这里是提取注解元素的方法 String baseName scalarFunction.value().isEmpty() ? camelToSnake(annotatedName(annotated)) : scalarFunction.value(); 这里如果 scala…...
element表格自定义筛选
文章目录 前言一、简介二、效果展示三、源码总结 前言 提示:这里可以添加本文要记录的大概内容: …待续 提示:以下是本篇文章正文内容,下面案例可供参考 一、简介 修改el-table的筛选…待续 二、效果展示 三、源码 使用方法…...
全方位 Linux 性能调优经验总结
Part1Linux性能优化 1性能优化 性能指标 高并发和响应快对应着性能优化的两个核心指标:吞吐和延时 图片来自: www.ctq6.cn 应用负载角度:直接影响了产品终端的用户体验系统资源角度:资源使用率、饱和度等 性能问题的本质就是系统资源已经…...
Linux机器网络检查
查看DNS file: dianTestLRSSnapshot:~$ cat /etc/resolv.conf # This file is managed by man:systemd-resolved(8). Do not edit. # # This is a dynamic resolv.conf file for connecting local clients to the # internal DNS stub resolver of systemd-resolved. This file…...
使用示例和应用程序全面了解高效数据管理的Golang MySQL数据库
Golang,也被称为Go,已经成为构建强大高性能应用程序的首选语言。在处理MySQL数据库时,Golang提供了一系列强大的库,简化了数据库交互并提高了效率。在本文中,我们将深入探讨一些最流行的Golang MySQL数据库库ÿ…...
ubuntu 22.04 源码安装 apollo 8.0
对于其他的关于GPU的安装包需求,这里不再列出,因为我之前安装过,偷个懒就不写了,哈哈哈哈1, 安装docker 安装docker命令(这里的安装命令都是在docker官网,还有安装包): 1, 设置docker的apt仓库 # Add Do…...
RK3588编译MXNet框架
目录 1. 背景 2.编译MXNet准备 3.开发板编译 1. 背景 MXNet(也称为Apache MXNet或incubator-mxnet)是一个开源的深度学习框架,它最初由华为和亚马逊AWS共同开发,并于2017年成为Apache软件基金会的孵化项目。MXNet旨在提供高效、…...
港府Web3宣言周年思考:合规困境中的“隐患”
出品|欧科云链研究院 作者|毕良寰 距离《有关虚拟资产在港发展的政策宣言》已过去一年,我们欧科云链研究院在分析全球几个主要国家和地区对Web3的监管政策及态度后,对港府的雄心壮志充满期待。然而,由于近期一些庞氏骗…...
vue点击按钮跳转页面
在Vue.js中,你可以使用<router-link>或this.$router.push()来实现点击按钮跳转页面的功能,前提是你已经配置了Vue Router。以下是两种不同的方法来实现页面跳转: 方法一:使用<router-link> <router-link> 是Vu…...
大中小企业对CRM系统的需求
在以前,CRM客户管理系统是大型企业的专属。如今,不论何种规模的企业都能够使用CRM系统。市面上的CRM有着丰富的功能类型,管理者可以从企业自身规模出发,选择适合的CRM系统。下面说说,大中小企业对CRM系统的需求。 一句…...
.net core iis 发布后登入的时候请求不到方法报错502
.net core iis 发布后登入的时候请求不到方法报错502 502 bad gateway 502 - Web 服务器在作为网关或代理服务器时收到了无效响应。 您要查找的页面有问题,无法显示。当 Web 服务器(作为网关或代理)与上游内容服务器联系时,收到来自内容服务器的无效…...
知识图谱实战应用30-知识图谱在反欺诈情报分析项目中的应用实践
大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用30-知识图谱在反欺诈情报分析项目中的应用实践,现代商业环境中,各类欺诈行为日益猖獗,严重影响企业的运营和社会秩序。传统的欺诈检测方法难以满足实时性和有效性方面的要求。本文介绍了采用知识图谱技术构建反欺诈情报…...
[云原生1. ] 使用Docker-compose一键部署Wordpress平台
文章目录 1. Docker-compose概述1.1 简介1.2 docker-compose 的三大概念1.3 docker-compose配置模板文件常用的字段1.4 docker-compose 常用命令及格式 2. YAML 文件的详细介绍及编写注意事项2.1 简介2.2 yaml的特性2.2.1 语法特点2.2.2 数据结构2.2.3 引号的区别2.2.4 内置类型…...
springboot--基本特性--自定义 Banner
SpringApplication的使用 前言效果1.1 自定义banner1.2 自定义SpringApplication配置文件优先级高于程序化调整的优先级启动自定义banner关闭自定义banner 1.3 FluentBuilder API 前言 修改启动时候的修改banner 效果 1.1 自定义banner banner制定官网链接 在配置文件中设置…...
Vue3:checkbox使用及限制选中数量
HTML: <!--投票列表--> <ul class"list f16"><li v-for"(list,index) in listData" :key"index" ><!--div click"goAbout(list.orderid)">img :src"list.thumb"<span><i>编…...
如何选择更快更稳定的存储服务器
如何选择更快更稳定的存储服务器 选择更快、更稳定的存储服务器需要考虑以下几个方面: 存储介质:存储服务器的主要存储介质包括固态硬盘和机械硬盘。相比于机械硬盘,固态硬盘具有更高的读写速度和更低的延迟,因此能够提供更快的数…...
AcWing89. a^b
题目 求 a a a 的 b b b 次方对 p p p 取模的值。 输入格式 三个整数 a , b , p , a,b,p, a,b,p, 在同一行用空格隔开。 输出格式 输出一个整数,表示 a^b mod p 的值。 数据范围 0 ≤ a , b ≤ 1 0 9 0≤a,b≤10^9 0≤a,b≤109 1 ≤ p ≤ 1 0 9 1≤p≤10^…...
【推荐系统】推荐算法:冷启动-召回-粗排-精排-重排 解读
【推荐系统】推荐算法:冷启动-召回-粗排-精排-重排 解读 文章目录 【推荐系统】推荐算法:冷启动-召回-粗排-精排-重排 解读1. 介绍2. 冷启动2.1 用户冷启动2.1.1 利用用户注册信息冷启动2.1.2 好物推荐冷启动2.1.3 问题启发式冷启动2.1.4 社交冷启动2.1.…...
NB-IOT的粮库挡粮门异动监测装置
一种基于NBIOT的粮库挡粮门异动监测装置,包括若干个NBIOT开门监测装置,物联网后台管理系统,NBIOT低功耗广域网络和用户访问终端;各个NBIOT开门监测装置通过NBIOT低功耗广域网络与物联网后台管理系统连接,物联网后台管理系统与用户访问终端连接.NBIOT开门监测装置能够对粮库挡粮…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
