工业以太网EtherCat学习

2023-05-16

一. 简单介绍          

              EtherCAT是由德国Beckhoff公司提出的实时以太网解决方案,它是国际现场总线标准的组成部分。在现场总线级的高速I/O控制和高速运动控制方面有突出的表现。EtherCAT使用标准的以太网卡作为主站,利用标准以太网物理层。

EtherCAT是一种直达I/O级的实时以太网,它已经被纳入IEC61784、IEC61158以及ISO15745-4等国际标准。EtherCAT突破了其他实时以太网的解决方案,它在以太网物理层作了改进,增加了实时通道传输数据。EtherCAT数据帧的处理方式与其他的实时以太网所用方法大为不同,它借鉴了“集总帧”的通讯机制,可以将多个从站的过程数据整合到一个以太网帧中,使得EtherCAT的带宽利用率可以达到90%以上;当EtherCAT帧通过每个从站时,从站控制器查看是否有与本机寻址相关的数据,根据FMMU机制的寻址范围提取本机相关的数据,并将要传输给主站的数据插入到上行报文的相应位置。这个过程由EtherCAT从站ASIC芯片处理,整个过程的处理延迟很短,大大低于处理数据时问为微秒级的现场总线设备。EtherCAT采用了基于IEEE1588的时钟同步机制,网络中的数据帧在交换过程中会打上时间戳,这一过程完全是基于硬件完成的;主站能精确地测量各个从站的延迟偏移,各从站的分布时钟能基于主时钟来调整,在整个网络范围内可以使主从时钟达到微妙级同步。EtherCAT在应用层上扩展了CANopen和SERCOS的伺服控制协议,可以与其他协议设备的互通和互操作。

EtherCAT物理介质可以是 100Base-TX 电缆或者光缆,整个网络可同时挂接 65535 个设备。

        EtherCat运行原理:




二. EtherCat数据帧结构

             EtherCAT数据采用标准的 IEEE802.3 以太网帧传输,使用保留的以太网帧类型0x88A4,因此其它类型的以太网帧也可以在 EtherCAT 网段内透明传输而不会被从站处理一个标准 EtherCAT 帧包括 2 个字节的 EtherCAT 头和 44~1498 个字节的数据。EtherCAT 数据区可以包含多个子报文,每个子报文对应所要寻址的节点数据。EtherCAT 数据帧的结构如图 2.6 所示。

            EtherCat帧格式定义:  

                                             

            EtherCat子报文结构定义:

                                    

           EtherCAT子报文由子报文头、数据域和 WKC(Working Counter)组成。WKC用来记录子报文是否被相应的从站正确处理。主站首先为每个通信子报文设定一个预期的 WKC 值,发送的子报文中 WKC 的初值为 0,从站根据识别出的命令处理子报文后,WKC 会增加一个值。主站通过比较返回的子报文的 WKC 值是否与预期的WKC 值一致,来判断子报文是否被从站正确处理。

           在 EtherCAT 协议中,非周期性数据称为邮箱数据,邮箱通信是 EtherCAT 子报文的一种特殊形式,它存在于子报文数据区中,但是以特定的数据格式来组织数据,其具体帧结构如图 2.6 所示。邮箱数据帧包括三部分:邮箱数据头部、命令、命令相关数据

                  EtherCat邮箱数据帧结构:

                          

                 邮箱数据头定义:

                  

三. EtherCat报文寻址方式

           一个 EtherCAT 网段相当于一个以太网设备,主站首先根据以太网帧头寻址到相应的网段,然后根据子报文头中的 32 位地址来寻址网段内的设备。段内寻址方式有两种:设备寻址和逻辑寻址。设备寻址模式下,子报文头中的 32 位地址分为 16 位的从站设备地址和 16 的设备内物理存储地址,每个报文只能寻址唯一的一个从站设备。设备寻址又有两种寻址机制:顺序寻址和设置寻址。顺序寻址时,从站地址根据从站在网段内的连接位置,用一个负数来表示。每个从站设备收到顺序寻址子报文后都将其顺序地址加 1,如果接受的子报文的顺序地址为 0 就寻址到了自己的报文。设置寻址时,从站的地址可以是从站自身的配置值或者由主站在初始化阶段进行配置。逻辑寻址模式下,子报文头中的 32 位地址作为整体的数据逻辑地址来对设备进行逻辑寻址。逻辑寻址方式由 FMMU(Fieldbus Memory Management Unit,现场总线内存管理单元)实现,每个 EtherCAT 从站控制器内部的 FMMU 单元将本站的物理地址映射成网段内的逻辑地址。主站在初始化阶段配置每个从站的 FMMU 单元。每个从站接受到逻辑寻址子报文后,检查自己的 FMMU 单元地址是否和子报文中的逻辑地址匹配。如果匹配,则对子报文的数据区进行相应的数据操作。

           EtherCAT 通信由主站发送 EtherCAT 数据帧读写从站的内存来实现数据交互,在此过程中有多种寻址方式可供使用。主站首先用网段寻址方式寻址到网段,每个网段都有一个MAC 地址,然后使用段内寻址方式找到段内从站设备;段内寻址可以采用两种方式:设备寻址和逻辑寻址。设备寻址针对某个从站进行读写操作,逻辑寻址面向过程数据,同一个子报文可以读写多个从站设备的内存。

(一) EtherCAT网段寻址

           EtherCAT 网段寻址是通过以太网数据帧头部的 MAC 地址寻址到网段的。根据主站和从站的连接方式不同可以分为两种方式:直连模式和开放模式。直连模式是将一个网段直接和主站的网口相连,主站使用广播 MAC 地址发送数据。

            开放模式中 EtherCAT 网段是连接到标准的以太网交换机上的,此时一个网段需要一个MAC 地址,主站发送EtherCAT 数据帧中的目的地址就是它所控制的网段的 MAC地址。EtherCAT 网段内的第一个从站设备的 MAC 地址代表了整个从站,通讯时就是本网段的地址。

(二) 设备寻址

          在设备寻址过程中,EtherCAT 子报文头部的 32 位地址包括设备地址和从站物理内存地址,这两种地址各占 16 位。设备寻址只允许每个子报文寻址一个从站,它有两种寻址机制:顺序寻址和设置寻址,这两种方式的地址组成如图 2.10 所示。

                                 

(三) 逻辑寻址和 FMMU

             在逻辑寻址过程中,主站可以使用 4GB 逻辑地址空间来映射多个从站的物理内存,一个报文内的数据可以分布于多个从站中。逻辑寻址方式由 FMMU 来实现,FMMU 功能位于每个从站内部,将其物理地址映射到网段的逻辑地址上来,从站部分的 FMMU 寻址功能集成到 ASIC 芯片内部,它为每个从站提供逻辑寻址功能。当主站通过 FMMU 方式发送数据到从站时,只须把数据插入到帧的相应位置上,当 EtherCAT 帧经过从站时,从站控制器通过 FMMU 进行寻址分析,找出与本站相关的数据并提取出来,这时如果从站有数据要发送给主站,只须把数据插入到帧的相应空间中,FMMU 允许一个子报文寻址多个从站设备,就是把多个从站的物理内存映射到一个子报文中。

          FMMU 数据映射由主站来配置,在预运行阶段发送给从站,一般 FMMU 需要配置以下信息:数据长度、数据逻辑位起始地址、数据逻辑起始位、数据逻辑终止位、从站物理内存起始地址、物理内存起始位、操作类型、使能。

四. 分布时钟原理:

        这里首先介绍 EtherCAT 分布时钟涉及的一些约定概念。参考时钟是指主站连接的第一个具有分布时钟功能的从站的时钟,其它从站的时钟称为从时钟。主站时钟是指 EtherCAT 主站的时钟。系统时钟是指分布时钟使用的系统及时,使用 64 位二进制表示,单位为 ns。每个具有分布时钟功能从站的本地时钟都是独立运行的,系统启动时参考时钟和从站的本地时钟的差值称为时钟初始偏移量。由于参考时钟和从时钟使用的都是各自的时钟源,它们的计时周期存在漂移,导致时钟运行不同步,本地时钟产生漂移。本地系统时间是指经过补偿和同步之后的本地时钟。传输延时是指从站之间数据传输时产生的延时。EtherCAT 采用 IEEE1588 网络测量和控制系统的精密时钟同步协议标准机制来实现分布时钟,使所有的 EtherCAT 设备都同步于一个参考时钟,从而控制各设备同步执行相应的任务,EtherCAT 各站设备可以达到小于 1 微秒的时钟同步精度。

EtherCAT 的通信模式有两种,时间关键的周期性过程数据通信和非时间关键的邮箱数据通信。周期性过程数据通信通常使用 FMMU 进行逻辑寻址,所以一个报文可以寻址多个从站。EtherCAT 的非周期性数据通信称为邮箱通信,邮箱通信一般使用设备寻址模式,所以一个报文只能寻址一个设备。邮箱数据报文的结构如图 2.5 所示。

                                

五.应用层协议:

         EtherCAT 协议模型只包含三层:物理层、数据链路层和应用层。应用层为控制程序提供服务和访问网络环境提供手段,是 EtherCAT 协议最高的一个功能层。应用层不包括控制程序,它只是定义控制程序与网络的接口,如图 2.6 所示。EtherCAT协议在应用层支持 CANopen 协议、SERCOS 协议、HTTP 协议等其它许多协议。

                            














本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

工业以太网EtherCat学习 的相关文章

  • stm32零基础入门,应学习那些知识

    1 首先我们先看看与STM32相关的文档 我们假定大家已经对STM32的书籍或者文档有一定的理解 如不理解 xff0c 请立即阅读STM32的文档 xff0c 以获取最基本的知识点 如果你手上拥有ST官方主推的STM32神舟系列的板子 xf
  • Java如何实现二维码扫码授权登陆

    如今的生活中 xff0c 登录网站也变得如此简单 xff0c 当你已经登录一微信时 xff0c 当你想要登录另一个网站时 xff0c 只需扫码便可 xff0c 可是大家知道用Java怎么实现扫码授权吗 本文讲述的就是关于如何用Java实现扫
  • Postman安装与简单使用

    Postman使用参考文档 xff1a 1 官方英文文档 2 chrome插件整理的 postman中文使用教程 Postman一款非常流行的API调试工具 其实 xff0c 开发人员用的更多 因为测试人员做接口测试会有更多选择 xff0c
  • c语言入门基础

    C语言的结构 1 Hello world 简单来说 xff0c 一个C程序就是由若干头文件和函数组成 include 包含头文件 主函数 int main printf Hello World return 0 include 就是一条预处
  • 单片机串行口介绍

    介绍 串行口是单片机与外界进行信息交换的工具 xff0c 8051单片机的通信方式有两种 xff1a 并行通信 数据的各位同时发送或接收 串行通信 数据一位一位次序发送或接收 串行通信的方式 异步通信 用一个起始位0表示字符的开始 xff0
  • 51单片机中断机制(定时器)

    单片机中断简介 52单片机一共有6个中断源 xff0c 它们的符号 xff0c 名称以及各产生的条件分别如下 xff1a INT0 外部中断0 xff0c 由P3 2端口线引入 xff0c 低电平或下降沿引起 INT1 外部中断1 xff0
  • 什么叫51单片机最小系统

    单片机最小系统 或者称为最小应用系统 是指用最少的元件组成的单片机可以工作的系统 对51系列单片机来说 最小系统一般应该包括 单片机 晶振电路 复位电路 下面给出一个51单片机的最小系统电路图 说明 复位电路 由电容串联电阻构成 由图并结合
  • 嵌入式系统C编程之错误处理

    一 错误概念 1 1 错误分类 从严重性而言 xff0c 程序错误可分为致命性和非致命性两类 对于致命性错误 xff0c 无法执行恢复动作 xff0c 最多只能在用户屏幕上打印出错消息或将其写入日志文件 xff0c 然后终止程序 而对于非致
  • 补光灯的单片机开发设计

    说到摄影灯 xff0c 相信每个人都一定听说过闪光灯和补光灯 那它们是怎么由来的呢 又是怎么达到了你想要的效果呢 不论是闪光灯还是补光灯 xff0c 它们都有一个共同点 xff0c 那就是由NY8A051D单片机开发而来 xff0c 单片机
  • 单片机C语言如何产生随机数

    单片机C语言如何产生随机数 随机数在单片机的应用中也是很多的 xff0c 当然产生随机数的方法有很多 xff0c 当中有一个就是利用单片机定时器 xff0c 取出未知的定时器THX和TLX的值 xff0c 再加以运算得到一个规定范围内的随机
  • 使用mac终端编译运行c程序

    使用mac终端编译运行c程序 本文介绍如何利用mac自带文本编辑软件编写c代码 xff0c 并在mac自带终端内用命令行编译运行c程序 1 在mac上安装c编译环境 打开mac自带的终端 在终端命令行里输入xcode select inst
  • HtmlParser 一个不错的网站爬虫工具

    有时候我们需要在网上获取自己需要的内容时 xff0c 而且需求量达到一定程度时 xff0c 就要通过代码来实现重复的操作 当用Java来帮我们解决这个问题时 xff0c 我们又如何通过Java来过滤掉多余的内容 xff0c 剩余自己想要的信
  • 因为jsoup,再见了我的htmlparser

    jsoup 一款Java 的HTML解析器 xff0c 可直接解析某个URL地址 HTML文本内容 它提供了一套非常省力的API xff0c 可通过DOM xff0c CSS以及类似于jQuery的操作方法来取出和操作数据 这里是jsoup
  • Python 当前时间是那一年第几周的周几

    isocalendar 函数 返回 xff08 XX年 xff0c 一年中的第几周 xff0c 这一天是周几 xff09 gt gt gt from datetime import datetime gt gt gt datetime no
  • 对Socket CAN的理解(1)——【CAN总线原理】

    转载请注明出处 xff1a http blog csdn net Righthek 谢谢 xff01 由于Socket CAN涉及到CAN总线协议 套接字 Linux网络设备驱动等 因此 xff0c 为了能够全面地了解Socket CAN的
  • 对Socket CAN的理解(2)——【Socket的原理及使用】

    转载请注明出处 xff1a http blog csdn net Righthek 谢谢 xff01 为了能够对Socket CAN的深入理解 xff0c 我们需要了解Socket的机制 Socket的中文翻译为 插座 xff0c 在计算机
  • 【智能家居篇】wifi网络结构(上)

    转载请注明出处 xff1a http blog csdn net Righthek 谢谢 xff01 WIFI是什么 xff0c 相信大家都知道 xff0c 这里就不作说明了 我们需要做的是深入了解其工作原理 xff0c 包括软硬件 网络结
  • 【智能家居篇】wifi网络结构(下)

    转载请注明出处 xff1a http blog csdn net Righthek 谢谢 xff01 由于WIFI网络具有移动性 xff0c 同时WIFI以无线电波作为传输媒介 xff0c 这种媒介本质上是开放的 xff0c 且容易被拦截
  • 【智能家居篇】wifi网络接入原理(上)——扫描Scanning

    转载请注明出处 xff1a http blog csdn net Righthek 谢谢 xff01 对于低头党来说 xff0c 在使用WIFI功能时 xff0c 经常性的操作是打开手机上的WIFI设备 xff0c 搜索到心目中的热点 xf
  • 【智能家居篇】wifi网络接入原理(下)——关联Association

    转载请注明出处 xff1a http blog csdn net Righthek 谢谢 xff01 认证完成后 xff0c 下一步就是关联 xff08 Association xff09 工作站与基站进行关联 xff0c 以便获得网络的完

随机推荐

  • 【智能家居篇】wifi驱动的理解(3)——usb接口在wifi模块中的角色

    转载请注明出处 xff1a http blog csdn net Righthek 谢谢 xff01 上一篇文章已经提到USB接口在wifi模块中的最重要两个函数是usb read port 和usb write port 那它们是怎么和w
  • 【智能家居篇】wifi驱动的理解(4)——usb接口在wifi模块中的角色

    转载请注明出处 xff1a http blog csdn net Righthek 谢谢 xff01 还有1天就到2017年了 xff0c 回顾整个2016年至此 xff0c 都没发表过一篇技术文章 做软件开发已有5 6年 xff0c 作为
  • mx51 TVOUT分析

    1397 static int init enable tve setup char options 1398 1399 g enable tve 61 true 1400 1401 return 1 1402 1403 setup 34
  • 2D图形加速引擎(GE2D)

    转载请注明出处 xff1a http blog csdn net Righthek 谢谢 xff01 英文原文 NUC970 Series Technical Reference Manual Chapter 5 28 一 概述 32位2D
  • Redis 安装

    安装 下载 解压 编译Redis wget http download redis io releases redis 6 0 6 tar gz tar xzf redis 6 0 6 tar gz cd redis 6 0 6 make
  • linux下 tcpdump实现原理

    linux下抓包实现原理 一 tcpdump 对于本机中进程的系统行为调用跟踪 xff0c strace是一个很好的工具 xff0c 而在网络问题的调试中 xff0c tcpdump应该说是一个必不可少的工具 xff0c 和大部分linux
  • eigen求特征值和特征向量

    Eigen Matrix2d matrix 22 matrix 22 lt lt 2 3 2 1 cout lt lt 34 matrix 61 n 34 lt lt matrix 22 lt lt endl Eigen SelfAdjoi
  • sophus库的一些使用

    首先是cmakelists cmake minimum required VERSION 2 8 project useSophus 为使用 sophus xff0c 您需要使用find package命令找到它 find package
  • OpenCV中ORB特征点检测和匹配简单用法

    cmakelists span class hljs keyword cmake minimum required span VERSION span class hljs number 3 7 span span class hljs k
  • LKflow

    cmakelists span class hljs keyword cmake minimum required span VERSION span class hljs number 3 7 span span class hljs k
  • 关于关于高博3d2d程序报错的改动

    想直接改动 xff0c 在 还是g2o初始化一些 那篇 xff0c 这篇比较啰嗦 xff0c 主要是记录自己思考的步骤 首先说明主题 xff1a 没文化真可怕 好了 xff0c 说干货 之前高博的代码 只要涉及g2o的部分 xff0c 一律
  • C++类内成员初始化

    所有标准为C11标准 xff0c 旧的就不看了 首先说一条指导规则 xff1a 通常情况下 xff0c 不应该在类内部初始化成员 xff01 xff01 无论是否为静态 是否为常量 是否为int等 xff01 xff01 统统不建议在类内初
  • RANSAC算法理解

    最早应该是十四讲上见过 xff0c 在第九章的project中src中的visual odometry cpp中 xff0c 最核心的求解3d 2d的变换中 xff1a span class hljs label 整个核心就是用这个cv s
  • 装双系统的一些记录

    小米电脑F2进入BIOS设置 xff0c F12选取启动项 启动U盘制作 ROS安装
  • ROS使用注意事项

    看到一篇总结 xff0c 感觉很有用 摘抄下来 转自 xff1a https www cnblogs com pk28 p 7625838 html
  • Python time模块 时间戳转换

    时间戳转换 时间戳获取 import time time time 时间戳转时间字符串 时间戳 gt 时间数组 gt 格式化时间字符串 时间字符串转时间戳 格式时间字符串 gt 时间数组 gt 时间数组 时间戳转换时间字符串 time st
  • 图漾深度摄像头基本使用方法

    搞到一款图漾的3d相机 xff08 型号为FM810 C xff09 有好久了 xff0c 一直也只是编译了sample代码跑起来看看样子 xff0c 并没有着手看SDK以及开发的事 近几日对照SDK以及其中的SimpleView Fetc
  • Xilinx FPGA的约束设计和时序分析总结 (转)

    在进行FPGA的设计时 xff0c 经常会需要在综合 实现的阶段添加约束 xff0c 以便能够控制综合 实现过程 xff0c 使设计满足我们需要的运行速度 引脚位置等要求 通常的做法是设计编写约束文件并导入到综合实现工具 xff0c 在进行
  • STM32学习笔记-串口

    所用的STM32主要有3个串口 xff0c 3个串口的物理位置如图中所示 串口的驱动编写流程 待续
  • 工业以太网EtherCat学习

    一 简单介绍 EtherCAT是由德国Beckhoff公司提出的实时以太网解决方案 xff0c 它是国际现场总线标准的组成部分 在现场总线级的高速I O控制和高速运动控制方面有突出的表现 EtherCAT使用标准的以太网卡作为主站 xff0