EtherCAT总线

news2024/10/5 8:15:45

目录

1、EtherCAT的系统组成

2、EtherCAT的运行原理

3、EtherCAT的数据帧结构 

4、EtherCAT的寻址方式

5、EtherCAT的分布时钟

6、EtherCAT的通信模式

7、EtherCAT应用层协议


1、EtherCAT的系统组成

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

2、EtherCAT的运行原理

如上图所示,在一个通讯周期内,主站发送以太网数据帧到各个从站,数据帧到达从站后,每个从站根据寻址提取数据帧内对应的数据,并把反馈数据写入到数据帧中,当数据发送到最后一个从站后返回,并通过第一个从站返回到主站。这种传输方式在一个周期内就可以实现数据通讯,还可以改善带宽利用率,最大有效数据利用率可以达到90%以上。

3、EtherCAT的数据帧结构 

EtherCAT的数据帧结构包括14字节的以太网帧头,2字节的EtherCAT头,44-1498字节的EtherCAT数据,4字节的帧校验序列。以太网帧头中包含6字节的目的地址,6字节的源地址和2字节的帧类型。目的地址是接收方的MAC地址,源地址是发送方的MAC地址,帧类型为0x88A4,是EtherCAT的以太网的帧类型。EtherCAT头包括三部分:11字节的EtherCAT数据长度(所有子报文的数据长度的总和),1字节的保留位,4字节的类型(类型固定为1,表示和EtherCAT从站通讯)。每个子报文包含3部分:10字节的子报文头,最多1486字节的数据,2字节的WKC(工作计数器,记录子报文被从站操作的次数)。其中子报文头可分为7个部分,详细解释如下表。主站设置WKC的初始值为0,当子报文被从站处理后,WKC都会增加一定的数量,当数据帧返回到主站后,主站会比较WKC的实际值和预期值是否一致,从而判断报文是否被正确处理。

4、EtherCAT的寻址方式

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

(1)EtherCAT网段寻址:EtherCAT主站和从站网段有两种连接方式:直连模式和开放模式。

  ①直连模式就是从站所在的EtherCAT网段用网线直接连接到主站的以太网控制器,这种模式下,主站使用广播MAC地址,以太网帧头的目的地址设置为0xFFFFFFFFFFFF,就可以找到EtherCAT的从站网段。

  ②在开放模式中,EtherCAT的主站和从站网段都连接到同一个标准的以太网交换机上,而且每个EtherCAT从站网段的第一个从站设备都有一个代表整个从站网段的MAC地址,这个从站成为段地址从站。在这种模式下,主站发送EtherCAT报文的时候,以太网帧头的目的地址应该设置为目的从站网段的段地址。

(2)设备寻址:EtherCAT数据帧的子报文头里有32位的地址区,前16位是从站设备的设备地址,后16位是该从站设备的内存偏移地址。EtherCAT报文首先根据前16位找到特定的从站设备,然后根据后16位将数据写入相应的内存地址或者从相应的内存地址中读出数据。设备寻址可以分为顺序寻址和设置寻址。

  ①顺序寻址:从站设备的地址是由物理连接顺序决定的。

  ②设置寻址:从站设备的地址跟从站设备的物理连接顺序无关,是系统上电初始化的时候由主站配置的,或者从站设备从自身的EEPROM配置文件中读取出来的。

在一个EtherCAT从站网段中,每一个从站设备都有一个唯一的设备地址,用于获取EtherCAT数据帧中相应的子报文。

5、EtherCAT的分布时钟

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

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

6、EtherCAT的通信模式

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

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

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

7、EtherCAT应用层协议

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

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

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

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

相关文章

SwinTransformer的相对位置索引的原理以及源码分析

文章目录 1. 理论分析2. 完整代码 引用:参考博客链接 1. 理论分析 根据论文中提供的公式可知是在 Q Q Q和 K K K进行匹配并除以 d \sqrt d d ​ 后加上了相对位置偏执 B B B。 A t t e n t i o n ( Q , K , V ) S o f t m a x ( Q K T d B ) V \begin{aligned} &…

认识并理解webSocket

今天逛牛客,看到有大佬分享说前端面试的时候遇到了关于webSocket的问题,一看自己都没见过这个知识点,赶紧学习一下,在此记录! WebSocket 是一种网络通信协议,提供了全双工通信渠道,即客户端和服…

无法下载cuda

cuda下载不了 一、台式机电脑浏览器打不开cuda下载下面二、解决办法 一、台式机电脑浏览器打不开cuda下载下面 用360、chrome、Edge浏览器都打不开下载页面,有的人说后缀com改成cn,都不行。知乎上说是网络问题,电信换成换成移动/联通的网络会…

2229:Sumsets

网址如下&#xff1a; OpenJudge - 2229:Sumsets 这题不是我想出来的 在这里仅做记录 代码如下&#xff1a; #include<iostream> using namespace std;const int N 1000000000; int dp[1000010]; int n;int main() {cin >> n;dp[0] 1;dp[1] 1;for (int i 2…

Win11系统文件夹预览无法预览PDF文件,PDF阅读器是adobe acrobat

三步走 首先&#xff0c;打开文件夹预览功能 然后&#xff0c;设置adobe acrobat为默认PDF打开应用 最后&#xff0c;打开在Windows资源管理器中启用PDF缩略图&#xff0c;正常设定后&#xff0c;会显示配置文件&#xff0c;稍等一会。

5个实用的文章生成器,高效输出优质文章

在自媒体时代&#xff0c;优质内容的持续输出是吸引读者、提升影响力的关键。然而&#xff0c;对于许多自媒体创作者来说&#xff0c;频繁的创作难免会遭遇灵感枯竭、创作不出文章的困扰。此时&#xff0c;文章生成器便成为了得力的助手。文章生成器的优势能够快速自动生成高质…

7 系列 FPGA 引脚及封装(参考ug475)

目录 I/O BankPins引脚定义I/O and Multi-Function PinsPower Supply PinsDedicated XADC PinsTransceiver PinsDedicated Configuration PinsTemperature Sensor Pins Device 视图整个 FPGAIOBILOGIC,OLOGIC,IDELAY,ODELAYBUFIO,BUFR,IDELAYCTRLBUFMRCEBRAM,DSPIBUFDS_GTE2CLB…

Spring源码十四:Spring生命周期

上一篇我们在Spring源码十三&#xff1a;非懒加载单例Bean中看到了Spring会在refresh方法中去调用我们的finishBeanFactoryInitialization方法去实例化&#xff0c;所有非懒加载器单例的bean。并实例化后的实例放到单例缓存中。到此我们refresh方法已经接近尾声。 Spring的生命…

医疗器械企业CRM系统推荐清单(2024版)

近年来&#xff0c;我国医疗器械行业在国家政策支持、医改深入、人口老龄化和消费能力提升等因素推动下&#xff0c;得到了快速发展&#xff0c;正日益成为创新能力增强、市场需求旺盛的朝阳产业。然而&#xff0c;行业也面临价格压力、市场份额重新分配、合规风险以及产品和服…

【C语言】register 关键字

在C语言中&#xff0c;register关键字用于提示编译器将变量尽量存储在CPU的寄存器中&#xff0c;而不是在内存中。这是为了提高访问速度&#xff0c;因为寄存器的访问速度比内存快得多。使用register关键字的变量通常是频繁使用的局部变量。 基本用法 void example() {regist…

使用ChatGPT写学术论文的技巧和最佳实践指南

大家好&#xff0c;感谢关注。我是七哥&#xff0c;一个在高校里不务正业&#xff0c;折腾学术科研AI实操的学术人。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥&#xff08;yida985&#xff09;交流&#xff0c;多多交流&#xff0c;相互成就&#xff0c;共同进步&a…

ActiveMq工具之管理页面说明

文章目录 安装ActiveMQ一: 访问管理页面二: 进入管理页面&#xff0c;主页三: Queues页说明四: Topics页说明五: Subscribers页说明 安装ActiveMQ wget https://archive.apache.org/dist//activemq/5.13.3/apache-activemq-5.13.3-bin.tar.gz wget https://mirrors.huaweiclou…

ubuntu 系统中 使用docker 制作 Windows 系统,从此告别 vmware虚拟机

我的系统是 ubuntu 24 前期准备工作&#xff1a; 安装dockerdocker pull 或者 手动制作镜像 docker build 的话 必须要 科学上网&#xff0c; 好像阿里镜像都下不下来。需要 知道 docker 和docker compose 命令的使用方式 我是给docker 挂了 http代理 如果你能pull下来镜像 …

Mysql-常见DML-DQL-语句语法用法总结

1、常见DML语句 1.1 INSERT语句 说明&#xff1a;将数据插入到数据库表中。 INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...); 实例&#xff1a;添加C罗信息到数据库表中 insert into employee (ID, name, gender, entrydate, age) values …

MinIO - 从 环境搭建 -> SpringBoot实战 -> 演示,掌握 Bucket 和 Object 操作

目录 开始 Docker 部署 MinIO 中的基本概念 SpringBoot 集成 MinIO 依赖 配置 MinIO 时间差问题报错 The difference between the request time and the servers time is too large MinIO 中对 Bucket&#xff08;文件夹&#xff09; 的操作 是否存在 / 创建 查询所有…

Android 四大组件

1. Activity 应用程序中&#xff0c;一个Activity通常是一个单独的屏幕&#xff0c;它上面可以显示一些控件&#xff0c;也可以监听并对用户的事件做出响应。 Activity之间通过Intent进行通信&#xff0c;在Intent 的描述结构中&#xff0c;有两个最重要的部分&#xff1a;动…

嵌入式Linux系统编程 — 7.2 进程的环境变量

目录 1 什么是进程的环境变量 2 环境变量的作用 3 应用程序中获取环境变量 3.1 environ全局变量 3.2 获取指定环境变量 getenv 4 添加/删除/修改环境变量 4.1 putenv()函数添加环境变量 4.2 setenv()函数 4.3 unsetenv()函数 1 什么是进程的环境变量 每一个进程都有一…

Node.js 生成vue组件

在项目根目录下创建 create.js /*** 脚本生成vue组件* 主要是利用node自带的fs模块操作文件的写入* ===========================================* 准备步骤:* 1.输入作者名* 2.输入文件名* 3.输入菜单名* 4.输入文件地址* ============================================* 操…

【公益案例展】厦门大学附属成功医院——国产数据库在综合三甲医院核心系统的应用...

‍ 达梦数据公益案例 本项目案例由达梦数据投递并参与数据猿与上海大数据联盟联合推出的 #榜样的力量# 《2024中国数据智能产业最具社会责任感企业》榜单/奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 厦门大学附属成功医院是一所集医疗、教学、科研、保健、疗…

C++基础(八):类和对象 (下)

经过前面的学习&#xff0c;我们已经翻过了两座大山&#xff0c;类和对象入门知识就剩下这一讲了&#xff0c;加油吧&#xff0c;少年&#xff01; 目录 一、再谈构造函数 1.1 构造函数体赋值 1.2 初始化列表&#xff08;理解&#xff09; 1.3 explicit关键字&#xff08;C…