EtherCAT笔记(五)—— 寻址方式与应用层协议

news2024/10/7 14:28:33

目录

1. EtherCAT 报文寻址

 1.1 EtherCAT 网段寻址

1.1.1 直连模式

1.1.2 开放模式

 1.2 段内寻址 —— 设备寻址

1.2.1 顺序寻址 

 1.2.2 设置寻址

1.3 逻辑寻址 

1.4 关于WKC

 2. 应用层协议

2.1 CoE : CANopen over EtherCAT

2.2 SoE (Servo Drive Profile over EtherCAT)

2.3 FoE (File Access over EtherCAT)

2.4 EoE (Ethernet over EtherCAT)

2.5 AoE (ADS over EtherCAT)

EtherCAT的寻址方式与应用层协议一般会因为一个已经定义好的主站而固定下来,因此这里偷个懒,只做些简要介绍。把更多精力放在 DC 分布时钟问题上可能更好些。

1. EtherCAT 报文寻址

EtherCAT通信由主站发送EtherCAT数据帧读写从站设备的内部存储区实现,该内部存储区即ESC的EEPROM。

EtherCAT报文需要先根据网段寻址,一个EtherCAT网段相当于一个以太网设备。那么根据网段寻址就类似于按不同网口寻找EtherCAT的设备,不同的网口(EtherCAT网段)有不同的IP地址(MAC地址)。而寻找不同网段的方式就是通过EtherCAT协议帧中的目的地址来实现的。

 1.1 EtherCAT 网段寻址

 通过网段寻址有两种不同的方式:直连模式和开放模式。

1.1.1 直连模式

直连模式是一种常用的EtherCAT网段寻址方式,其中目的MAC地址被固定为全F,此时相当于只有一个网口,从站之间串联。

 直连模式是最常用的连接方式,一个主站,直接接入EtherCAT第一个从站设备的EtherCAT In口,第一个EtherCAT从站的EtherCAT Out口接入下一个EtherCAT In口,如此级联。

直连模式下,主站使用广播MAC地址形式。

1.1.2 开放模式

开放模式使用了标准以太网交换机,EtherCAT主站设备与各个从站接入交换机中。主站发送的目的地址就是它所控制网段的MAC地址。

注:目前使用中未见过,不做过多记录。

 1.2 段内寻址 —— 设备寻址

 当寻找到的指定的网段后,即需要根据子报文头中的地址进一步做段内寻址。段内寻址分为两种方式,一种叫做设备寻址,即根据从站设备实内部物理存储空间地址进行寻址。设备寻址有支持两种机制:顺序寻址 & 设置寻址。

设备寻址中,EtherCAT子报文头内的32bits地址分为16bits从站设备地址和16bits从站设备内部物理存储空间地址(也叫从站内存偏移地址)。理论上讲16bits存储的地址数有65535个,但物理实际上也不太可能连接这么多设备,另外由于主站和通信性能限制,在不同场合也可能有上限差异。

段内寻址:即一个网段内部的从站寻址。

1.2.1 顺序寻址 

顺序寻址时,从站的地址由其在网段内的连接位置确定,用一个负数来表示每个从站在网段内由接线顺序所决定的位置。

假设有三个从站,Master -> A -> B -> C. 顺序寻址方式如下:

1. 主站初始化三个子报文及顺序寻址地址 A=0, B = -1, C = -2;

2. EtherCAT数据帧下发,数据帧到达A时,子报文地址为0的报文可被A操作;

3. 子报文顺序地址加1,变更为:A=1, B=0, C=-1;

4. 数据帧到达B时,子报文地址为0的报文可被B操作;

5. 子报文顺序地址加1,变更为:A=2, B=1, C=0;

6. 数据帧到达C时,子报文地址为0的报文可被C操作;

实际应用总,顺序寻址主要用于启动阶段,主站配置站点地址给各个从站。然后可以使用与物理位置无关的站点地址来寻址从站。 

 1.2.2 设置寻址

设置寻址方式的从站地址由主站在数据链路启动时分配给从站,也可以将从站地址存储在从站的数据存储区。

主站在数据链路启动时,使用顺序寻址的方式读取各个从站已分配的地址,从而实现对指定从站的寻址过程。

1.3 逻辑寻址 

逻辑寻址方式在周期性数据交换中非常常用,逻辑寻址需要用到FMMU(现场总线内存管理单元 Fieldbus Memory Management Unit)。FMMU位于从站的ESC中,将从站的本地物理地址映射到网段内的逻辑地址。 FMMU是由主站来配置的。

FMMU的配置对于进一步理解主站状态机部分十分重要。FMMU需要配置数据逻辑起始地址、从站物理内存的起始地址、数据长度、表示映射方向的类型位等。

 子报文内的32bits地址区作为整体的数据逻辑地址完成设备的逻辑寻址。

从站设备收到一个数据逻辑寻址的EtherCAT报文后,检查是否有FMMU地址匹配,如果有,就将输入类型数据插入到EtherCAT子报文数据区的对应位置,并从子报文中提取对应的输出类型数据(这个过程是在从站的角度来看的,即从站完成这样的操作)。 

1.4 关于WKC

WKC (Working Counter) 是用于对从站设备正确性验证的工作计数器。主站接收回从站的返回的数据帧后,会对WKC进行检查,如果不正确,则表示当前子报文没有被正确处理。

 2. 应用层协议

应用层协议分为多种类型:CoE, SoE,EoE, FoE。应用层是EtherCAT协议最高的功能层。应用层向上为应用程序提供服务,向下与网络接口通信。

2.1 CoE : CANopen over EtherCAT

  • 将CANopen协议移植到EtherCAT上,用于配置和诊断。继承了CANopen的对象字典概念,便于设备参数的统一管理。
  • 支持SDO(服务数据对象)和PDO(过程数据对象)通信。
  • 常用于传感器、执行器等设备的实时数据交换和配置。

2.2 SoE (Servo Drive Profile over EtherCAT)

  • 专用于伺服驱动器控制的实时数据通信协议标准。
  • 定义了伺服驱动器的控制和状态数据结构,包括速度、位置和电流控制等.

需要区分SoE的伺服控制架构与当前的控制架构的区别。

2.3 FoE (File Access over EtherCAT)

  • 提供文件传输服务,用于固件更新、配置文件传输等。
  • 主要用于非实时数据传输,文件传输速率受限于EtherCAT的整体通信性能

2.4 EoE (Ethernet over EtherCAT)

  • 允许在EtherCAT网络上传输标准的以太网帧,实现EtherCAT与传统以太网设备的互联。
  • 支持TCP/IP协议栈的通信,可以在EtherCAT网络中传输常规的以太网数据包。

2.5 AoE (ADS over EtherCAT)

  • 基于Beckhoff的ADS(Automation Device Specification)协议,实现不同控制系统之间的数据交换。
  • 支持设备间的复杂数据通信和远程诊断(参考阅读)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1876055.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot学习04-[定制SpringMVC]

定制SpringMVC 定制SpringMvc的自动配置定制springmvc-configurePathMatch配置定制SpringMVC-拦截器Interceptor定制SpringMVC-CORS配置全局cors配置针对某个方法加跨域解决 WebMvcConfigurer原理定制SpringMVC-JSONJSON开发jackson的使用定制化json序列化和反序列化 JSON国际化…

解锁音乐潮流:使用TikTok API获取平台音乐信息

一、引言 TikTok,作为全球领先的短视频社交平台,不仅为用户提供了展示自我、分享生活的舞台,还为用户带来了丰富多样的音乐体验。在TikTok上,音乐与视频内容的结合,为用户带来了全新的视听盛宴。对于音乐制作人、品牌…

【Python实战因果推断】6_元学习器1

目录 Metalearners for Discrete Treatments T-Learner 简单回顾一下,在之前的部分中,你们的重点是干预效果的异质性,也就是确定各单位对治疗的不同反应。在此框架下,您希望估算 或连续情况下的 。换句话说,您想知道…

Kafka面试必备:深度解析Replica副本的作用与机制

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! Hey大家好!我是小米,一个超级喜欢分享技术干货的大哥哥!今天咱们来聊聊阿里巴巴面试题中的一个热门话题:Kafka中的Replica副本作用。这可是个既基础…

在运行中遇到扫描包问题

问题描述:当我们看到这个上面一行代码时就代表我们有个包没有被当前的Spring容器给扫描到,关于这个问题我们有两个:第一把整个包导进来,第二用哪个导哪个

安卓应用开发学习:获取经纬度及地理位置描述信息

前段时间,我在学习鸿蒙应用开发的过程中,在鸿蒙系统的手机上实现了获取经纬度及地理位置描述信息(鸿蒙应用开发学习:手机位置信息进阶,从经纬度数据获取地理位置描述信息)。反而学习时间更长的安卓应用开发…

Qt源码分析:窗体绘制与响应

作为一套开源的UI代码库,窗体绘制与响应自然是最为基本的功能。在前面的博文中,已就Qt中的元对象系统(反射机制)、事件循环等基础内容进行了分析,并捎带阐述了窗体响应相关的内容。因此,本文着重分析Qt中窗体绘制相关的内容。 注…

vscode 使用正则将/deep/ 替换成 :deep()

在VSCODE编辑器的SEARCH中按上图书写即可,正则表达式如下:(\/deep\/)(.*?)(?\{) 替换操作如下::deep($2) 如果有用,号隔开的用:(\/deep\/)(.*?)(?,)替换操作如下::deep($2) 即可实现快速替换所有/deep/写法; 同理…

【Dison夏令营 Day 03】使用 Python 创建我们自己的 21 点游戏

21 点(英文:Blackjack)是一种在赌场玩的纸牌游戏。这种游戏的参与者不是互相竞争,而是与赌场指定的庄家竞争。在本文中,我们将从头开始创建可在终端上玩的玩家与庄家之间的二十一点游戏。 二十一点规则 我们将为从未玩过二十一点的读者提供…

【Python实战因果推断】7_元学习器2

目录 X-Learner X-Learner X-learner 在解释上要比前一个学习器复杂得多,但其实现却非常简单,所以如果你一开始不理解,也不用担心。X 学习器有两个阶段和一个倾向得分模型。第一个阶段与 T 学习器相同。首先,将样本分为治疗组和…

3.js - 反射率(reflectivity) 、折射率(ior)

没啥太大的感觉 反射率 reflectivity 概念 反射率:指的是,材质表面反射光线的能力反射率,用于控制材质对环境光,或光源的反射程度反射率越高,材质表面反射的光线越多,看起来就越光亮使用 适用于&#xff0…

react+customize-cra使用less+less-loader时,可能遇到的问题及解决办法

目录 1、先附上各依赖版本和config-overrides.js配置代码,按这个版本和配置就没问题 2、问题(注意:问题顺序没有先后之分哦) 2.1、TypeError: Cannot read property tap of undefined 2.2、No module factory available for d…

算法金 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost 算法大全

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 决策树是一种简单直观的机器学习算法,它广泛应用于分类和回归问题中。它的核心思想是将复杂的决策过程分解成一系列简单的决…

【windows|011】TCP/IP5层模型常见协议及应用总结大全

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 ​ 🏅阿里云ACE认证高级工程师 ​ 🏅阿里云开发者社区专家博主 💊交流社…

【计算机毕业设计】077停车场微信小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

qmt量化交易策略小白学习笔记第52期【qmt编程之商品期货数据】

qmt编程之获取商品期货数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 主力合约生成规则 每个品种只有一个主连合约。主连合约于下一个交易日进行指向切换,切换前主连合约不变…

2024全新【大模型学习路径导航】从入门到精通的全面规划

引言 随着人工智能技术的迅猛发展,大模型成为了引领技术变革的关键力量。无论你是对大模型领域感兴趣的初学者,还是希望深化理解并应用大模型的开发者,这份精心策划的学习路径将为你提供从零基础到精通的全面指导。 第一阶段:基…

堆排序思想分享

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

鸿蒙NEXT

[中国,东莞,2024年6月24日] 华为开发者大会(HDC)正式开幕,带来全新的 HarmonyOS NEXT、盘古大模型5.0等最创新成果,持续为消费者和开发者带来创新体验。 HarmonyOS NEXT 鸿蒙生态 星河璀璨 鸿蒙生态设备数…

boost asio异步服务器(4)处理粘包

粘包的产生 当客户端发送多个数据包给服务器时,服务器底层的tcp接收缓冲区收到的数据为粘连在一起的。这种情况的产生通常是服务器端处理数据的速率不如客户端的发送速率的情况。比如:客户端1s内连续发送了两个hello world!,服务器过了2s才接…