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行规定义的伺服参数和控制数据。

【EtherCAT理论篇】二、EtherCAT工作原理相关推荐

  1. 原理剖析(第 009 篇)ReentrantReadWriteLock工作原理分析

    2019独角兽企业重金招聘Python工程师标准>>> 原理剖析(第 009 篇)ReentrantReadWriteLock工作原理分析 一.大致介绍 1.在前面章节了解了AQS和 ...

  2. 【EtherCAT理论篇】一、EtherCAT现场总线概述

    1.EtherCAT介绍 EtherCAT现场总线协议是由德国倍福公司在2003年提出的,该通讯协议拓扑结构十分灵活,数据传输速度快,同步特性好,可以形成各种网络拓扑结构.EtherCAT协议自从推出 ...

  3. 【Spring第一篇】ClassPathXmlApplicationContext工作原理

    ClassPathXmlApplicationContext工作原理 创建一个ClassPathXmlApplicationContext类 package com.qx;import org.jso ...

  4. android stm32 wifi模块,STM32F1模块篇ESP8266WIFI模块工作原理

    ESP8266 WIFI 模块工作原理 ESP8266概述 ESP8266是一个完整且自成体系的Wi-Fi网络解决方案,能够搭载软件应用,或通过另一个应用处理器卸载所有Wi-Fi网络功能. ESP82 ...

  5. 慢慢学Linux驱动开发,第四篇,USB工作原理简单分析

    1.简单概念 学习U盘驱动,不仅仅是去关注drivers/usb/storage目录下那相关的3000行代码. 毕竟,作为U盘,她需要与usb core打交道,需要与scsi core打交道,需要与内 ...

  6. 武器篇-子弹的工作原理//2021-1-28

    前言: 因为喜欢,所以然,想了解一些子弹工作的原理,男人的快乐如此简单,并且可以举一反三,许多武器的原理与子弹一样. 正文: 子弹结构: Cartridge case VuZn30 [弹壳] Catr ...

  7. arp 项删除失败: 请求的操作需要提升。_ccna必懂篇-arp协议工作原理详解。

    本次呢,要说的是arp协议,那么什么是arp协议呢?有什么作用呢? 什么是arp ARP(Address Resolution Protocol)地址解析协议,地址解析协议由互联网工程任务组(IETF ...

  8. 目标跟踪心得篇二:ByteTrack原理及其在MMTracking上的代码逐行分析(本文顺带分析MMTracking相关难点,后期不在赘述)

    要学习ByteTrack,首先得了解其名字是怎么来的:这个工作是一个学生在字节实习的时候提出来的算法,因此就以Byte这个单词来命名,可能从名字上没有太直观的含义来体现出这个算法在干嘛. ByteTr ...

  9. Spring源码分析番外篇二:事务原理番外篇

    文章目录 1.获取事务 1.1 创建事务实例--doGetTransaction 1.2 处理存在的事务--handleExistingTransaction 1.3 开启新事务 1.3.1 事务开启 ...

最新文章

  1. 使用 Sticky-Kit 实现基于 jQuery 的元素固定效果
  2. 按阅读习惯来高效排列字符串的脚本
  3. 吴恩达 coursera ML 第二课总结+作业答案
  4. linux执行python不打印_在Python中执行shell程序而不打印到屏幕
  5. zip解压mysql安装图解_Mysql安装教程-zip格式压缩包
  6. 用java来实现验证码功能
  7. python实例 69,70
  8. ant之property关键字
  9. 【原创·总结】影响sql查询性能的因素
  10. RabbitMQ之延迟队列
  11. android蓝牙hid 鼠标,BLE HID协议-----蓝牙鼠标代码流分析
  12. 7-4 输出两行短句 (10分)
  13. PDPS软件:机器人TCP轨迹跟踪功能介绍与使用方法
  14. SAR学习笔记后续-phased工具箱介绍
  15. MYSQL数据库备份全攻略
  16. 2015年,我从国内二线城市来到日本东京工作生活
  17. 水星路由器wan口ip显示0_路由器WAN口获取不到IP地址怎么办?
  18. UART的break信号
  19. 都是行业盛宴,AWE和CES等展会到底有啥不一样?
  20. WIndows 中文字体类型对应的文件名称

热门文章

  1. 深度学习中的图像增强
  2. ubuntu开机停留在(initramfs)页面
  3. php微信获取素材列表,20.6.7 获取素材列表
  4. XX系统可用性易用性
  5. python 创建和使用字典
  6. 解决vc6卡死的办法就是打上官方的原版VC6sp6补丁|VS6sp6补丁
  7. 基础版微信模板消息开发详解,附代码PHP
  8. matlab 矩阵的n次,用matlab的for循环产生N个矩阵,怎么取第N次的矩阵?
  9. Boosting和Bagging区别
  10. Win32中设置窗体失去焦点,并重新获取焦点