【EtherCAT理论篇】二、EtherCAT工作原理

2023-05-16

1、EtherCAT系统组成

     EtherCAT是一种实时以太网技术,由一个主站设备和多个从站设备组成。主站设备使用标准的以太网控制器,具有良好的兼容性,任何具有网络接口卡的计算机和具有以太网控制的嵌入式设备都可以作为EtherCAT的主站。对于PC计算机而言,主站控制器多采用倍福开发的TwinCAT软件。EtherCAT从站使用专门的从站控制器(ESC),如专用集成芯片ET1100和ET1200,或者是利用FPGA集成EtherCAT通信功能的的IP-Core。EtherCAT物理层使用标准的以太网物理层器件,如传输介质通常使用100BASE-TX规范的5类UTP线缆。

    EtherCAT运行原理为如上图所示:在一个通讯周期内,主站发送以太网数据帧给各个从站,数据帧到达从站后,每个从站根据寻址从数据帧内提取相应的数据,并把它反馈的数据写入数据帧。当数据帧发送到最后一个从站后返回,并通过第一个从站返回至主站。这种传输方式能够在一个周期内实现数据通讯,还改善了带宽利用率,最大有效数据利用率达90%以上。

2、 EtherCAT数据帧结构

EtherCAT数据直接通过以太网数据帧传输,数据帧类型为0x88A4。EtherCAT数据帧是由14个字节的以太网帧头、2个字节的EtherCAT头、44到1498字节的EtherCAT数据和4字节的帧校验序列构成。EtherCAT的数据帧结构定义如图所示。

    在EtherCAT以太网报文中,目的地址为接收方的MAC地址,源地址为发送发的MAC地址,EtherCAT的以太网帧类型为0x88A4。EtherCAT头包括三个部分,分别是EtherCAT数据长度、保留位和类型。其中,EtherCAT数据长度为所有子报文长度的总和,类型固定为1,表示和EtherCAT从站通讯。每个EtherCAT子报文包括3个部分,分别是子报文头、数据和工作计数器(WKC)。其中子报文头如下表所示的7个部分。数据区中最多可以有1486个字节的数据,WKC用于记录子报文被从站操作的次数,主站设置WKC的初始值为0,当子报文被从站处理后,WKC增加一定的数值,当数据帧返回到主站时,主站会比较WKC的实际值和预期值,用来判断报文是否被正确处理。

3、EtherCAT寻址方式

    EtherCAT的数据通讯是通过主站发送EtherCAT报文读写从站的内部寄存器实现的。EtherCAT报文首先通过网段寻址找到从站所在的EtherCAT网段,之后通过设备寻址找到报文数据对应的从站设备,从而完成数据交换。

  (1)EtherCAT网段寻址:EtherCAT主站和从站网段有两种连接方式,分别是直连模式和开放模式。在直连模式中,从站所在的EtherCAT网段通过网线直接连接到主站的以太网控制器。在这种网络连接模式中,主站使用广播MAC地址,以太网帧头的目的地址设为0xFFFFFFFFFFFF,便可以找到EtherCAT的从站网段。在开放模式中,EtherCAT主站和从站网段都连接到一个标准的以太网交换机上,而且每个EtherCAT从站网段的第一个从站设备都有一个代表整个从站网段的MAC地址,这个从站被称作段地址从站。在这种模式下,主站发送EtherCAT报文时,以太网帧头的目的地址应该设置为目的从站网段的段地址。

(2)设备寻址:EtherCAT数据帧的子报文头里的地址区有32位,其中前16位是EtherCAT从站设备的地址,后16位是从站设备内存偏移地址。EtherCAT报文首先根据前16位找到特定的从站设备,之后根据后16位将数据写入或读出从站设备相应的内存地址。设备寻址有两种方式:顺序寻址和设置寻址。使用顺序寻址时,从站的地址是由从站设备的物理连接顺序决定的。使用设置寻址时,从站的设备地址和物理连接顺序无关,而是系统上电初始化时主站配置给从站,或者从站从自身EEPROM的配置文件中读取的。在一个EtherCAT从站网段内,每个从站设备都拥有唯一的一个设备地址,用于获取EtherCAT数据帧中相应的子报文。

4、EtherCAT分布时钟

EtherCAT提供了分布式时钟(DC)单元,来同步从站设备。相比于完全同步的通讯,分布式同步时钟具有更好的容错性,从而保证各EtherCAT从站设备同步工作的稳定性。由于每个设备的本地时钟是自由运行的,为了使所有设备进行同步,需要利用分布时钟进行同步。

分布时钟同步的原理是将所有的从站设备时钟都同步于参考时钟,EtherCAT将主站连接的第一个且具有分布时钟功能的从站作为参考时钟。为了实现各从站设备之间的准确同步控制,在EtherCAT网络上电初始化时,会对分布时钟进行初始化。通过测量和计算出各从站设备时钟与参考时间的偏移,对从站设备时钟进行校正,从而达到时钟同步的目的。EtherCAT分布时钟同步方法基于硬件校正,具有很高的准确性,同步信号抖动远小于1us。

5、EtherCAT通信模式

EtherCAT通信是以主从通讯模式进行的,其中主站控制着EtherCAT系统通信。在实际自动化控制应用中,通信数据一般可分为:时间关键的和非时间关键。在EtherCAT中利用周期性过程数据通信来进行时间关键数据通信,而采用非周期性邮箱通信(mailbox)来实现非时间关键数据通信。

(1)周期性过程数据通信

周期性过程数据通信通常使用现场总线内存管理单元(FMMU)进行逻辑寻址,主站可以通过逻辑读写命令来操作从站。周期性过程数据通信使用两个存储同步管理单元(SM)来保证数据交换的一致性和安全性,通讯模式采用缓存模式。在缓存模式下使用三个相同大小的缓冲区,由SM统一管理,缓存模式的运行原理如图所示。

(2)非周期性邮箱通信

邮箱数据通信模式只使用一个缓冲区,为保证数据不丢失,数据交换采用握手机制,即在一端完成对缓冲区数据操作后,另一端才能操作缓冲区数据。通过这种轮流方式进行读写操作,来实现邮箱数据交换。

6、EtherCAT应用层协议

EtherCAT的应用层直接面向应用任务,它定义了应用程序与网络连接的接口,为应用程序访问网络提供手段和服务。通过对常用协议进行简单修改,与EtherCAT通讯协议相兼容,从而可得EtherCAT多种应用层协议,主要包括:EoE、CoE,SoE以及FoE等。

EtherCAT协议本身具有良好的同步特性和数据传输速度,非常适用于伺服系统的控制,其中CoE与SoE可实现交流伺服驱动器控制的应用层。CoE是在CANopen协议基础上,对协议进行了一些补充。CoE完全遵从CANopen的应用行规,其中CiA402行规用于伺服和运动控制。SERCOS是一种高性能数字伺服实时通信接口协议,包含多种通信技术和设备行规。SoE是指在EtherCAT协议下运行SERCOS协议规定的伺服控制行规,使用EtherCAT协议操作SERCOS行规定义的伺服参数和控制数据。

 

 

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

【EtherCAT理论篇】二、EtherCAT工作原理 的相关文章

  • Prometheus(二)部署Prometheus和node_exporter

    软件包列表 Prometheus安装 解压部署 rm rf prometheus 2 28 1 linux amd64 tar xvf prometheus 2 28 1 linux amd64 tar gz rm usr local pr
  • Python学习之路_day_02(编程语言介绍及变量)

    一 编程语言介绍 1 机器语言 直接用二进制编程 xff0c 直接控制硬件 xff0c 需要掌握硬件的操作细节 优点 xff1a 执行效率高 缺点 xff1a 开发效率低 2 汇编语言 xff1a 用英文标签取代二进制指令去编写程序 xff
  • 解决linux系统read only system 解决办法

    首先确认系统属于非硬盘物理坏道引起 其次确认是否有root权限 下面我要阐述一个恢复实例 xff1a 一现象 xff1a 1 没有root权限 2 由于磁盘空间满溢导致分区表损坏 xff08 非物理坏道引起 xff09 3 重启后已经无法进
  • 哈希查找效率及应用场景

    数组的特点是 xff1a 寻址容易 xff0c 插入和删除困难 xff1b 而链表的特点是 xff1a 寻址困难 xff0c 插入和删除容易 那么我们能不能综合两者的特性 xff0c 做出一种寻址容易 xff0c 插入删除也容易的数据结构
  • 四位比较器

    四位比较器 一 xff0c 实验目的 通过使用比较四位二进制判断它的相对大小 二 xff0c 实验内容 四位比较器的实验 三 xff0c 实验代码 module Comp 2 str output A gt B A lt B A eq B
  • 程序员玩游戏之三--天天爱消除非暴力脚本

    评论 xff1a 此款游戏成功在其好友排名上 好友的分数超过了你无疑会增加你的斗志 中级策略 xff1a 七手八脚多人一起点 这相当于多个CPU处理一个大任务了 xff0c 哈哈 终极策略 xff1a 自动化 机器总是比人快的多 你两个人一
  • 程序员玩游戏之四--娱网棋牌大连打滚子记牌器

    话说大连人都爱打滚子 xff0c 所以本人就做了一个打滚子记牌器 基本原理同 程序员玩游戏之一 自动对对碰 xff0c 故此处不再赘述 xff0c 只留下一张截图吧 代码请见资源地址 xff1a http download csdn net
  • 为SIGSEGV设置handler有用吗?

    背景 最近几天看到先辈们30年前留下了一块代码 xff0c 为SIGSEGV设置了handler xff0c 所以心中有了两个疑问 xff1a 为SIGSEGV设置handler有没有用 xff1f 能否跳过引起崩溃的那一句指令 xff1f
  • GDB调试技巧实战--为优化版release版本的函数寻找参数值

    在上一篇 GDB调试技巧实战 为release版本的函数寻找参数值 中 xff0c 我们探讨了一种为函数找参数的办法 xff0c 但是 xff0c 那是最理想的情况 编译时没有使用 fomit frame pointer 编译时没有开启优化
  • 通过实例了解uprobe及其对性能的影响

    前言 uprobe是用户空间探针的意思 xff0c 可以用来给用户程序的任何地方下探针 xff0c 不仅仅是函数粒度层级的 所以异常灵活 如果不熟悉ftrace uprobe 可参考以下文档 xff1a https www kernel o
  • bpftrace各维度捕捉SIGKILL信号

    一 问题 Ftrace 几乎适配任何主流内核版本 xff09 和 bpftrace xff08 要求内核版本4 1以上 xff09 中都有两个现成的脚本execsnoop bt killsnoop bt 我经常用他们从外部 xff08 不去
  • 写个Python程序上下班抢个顺风单

    一 程序预览 本程序已经写了多年 很久没用 不过刚运行了下竟然还可以成功运行 先来张运行结果图 二 最近的滴滴APP已经可以支持设置自动抢单功能 这个小程序就没有那么大意义了 在此主要谈一下我当初的想法 1 这个小程序运行在电脑上 人在回家
  • 图形化VS201x工程中的项目依赖关系

    目录 1 背景 2 入手 2 1 分析sln文件 2 2 给出正则表达式 3 程序 4 demo 5 补充 另外一种情况 6 补充 完整代码 1 背景 初次接手一个大工程时 往往因为复杂的项目依赖而遇到各种编译问题 同时如果能图形化其中的依
  • 深入应用python关键字yield--实现任务调度

    在此假设读者了解yield关键字的基本用法 如不了解请参照python文档或google之 大家知道遇到yield关键字时python会把当前的环境 xff0c 比如局部变量 全局变量等 xff0c 给记录下来以便以后能正确的继续向下运行
  • 刘慈欣(三体作者)写给200年以后的女儿的一封信

    原文地址 xff1a http blog sina com cn s blog 540d5e800101lcsb html 亲爱的女儿 xff0c 你好 xff01 这是一封你可能永远收不到的信 xff0c 我将把这封信保存到银行的保险箱中
  • k8s集群添加master节点提示control plane instance a cluster that doesn‘t have a stable controlPlaneEndpoint ad

    k8s集群添加master节点提示unable to add a new control plane instance a cluster that doesn 39 t have a stable controlPlaneEndpoint
  • 程序员玩游戏之二--篡改植物大战僵尸2的阳光值

    植物大战僵尸1几年前曾经风靡一时 xff0c 妇孺皆知 xff01 其续作奇幻时空之旅千呼万唤始出来 xff0c 不过从首发到目前都1月有余 xff0c 本人竟然还没玩过 于是昨晚下载了一个汉化版 本人系统为IOS5 0 1 xff0c a
  • 跟涛哥一起学嵌入式 第01集:say you say me

    大家好 xff0c 此时此刻 xff0c 2018俄罗斯世界杯已暂告一段落 xff0c 16强已经产生 xff0c 卫冕冠军德国队提早回家 xff0c 阿根廷起死回生 xff0c C罗一个30多高龄的年纪 xff0c 还在坚持健身 xff0
  • 《嵌入式工程师自我修养》学习路线指南

  • 跟涛哥一起学习嵌入式 33:《嵌入式C语言自我修养》书稿V1.0版

    经常有网友要我推荐一些关于嵌入式方面的书 xff0c 尤其是一些转行学嵌入式的朋友 xff0c 该看那些书能快速构建嵌入式学习所需要的知识体系呢 xff1f 嵌入式是一门交叉学科 xff0c 没有足够的知识储备 xff0c 上来就学习的话

随机推荐