Ethercat学习笔记

1、EtherCAT原理介绍
EtherCAT从站设备在报文经过其节点时读取相应的数据报文,同样输入数据也是在报文经过时插入到报文中。整个过程报文只有几纳秒的时间延迟,实时性获得极大提高

EtherCAT作为一种工业以太网总线,充分利用了以太网的全双工特性。使用主从通信模式,主站发送报文给从站,从站从中读取数据或将数据插入至从站。

主站可使用标准网卡实现,
从站选用特定的EtherCAT从站控制器ESC(EtherCAT Slave Controller)或者FPGA实现,
主要完成通信和控制应用两部分功能,EtherCAT物理层选用标准以太网物理层器件。

从站能将收到的报文直接处理,并读取或插入有关的数据,再将报文发送给下一个EtherCAT从站。最末尾的EtherCAT从站返回处理完全的报文,然后由第一个从站发送给主站。整个通信过程充运行于全双工模式下,TX线发出的报文又通过RX线返回给主站:
在这里插入图片描述
2.1 实时性
数据包刷新时间的计算
数据包中所有从站的 Process Datarocess Datarocess Data rocess Data rocess Data rocess Datarocess Data数据 决定了数据包的长度。

一个Ethernet thernet数据包最小84 字节,不足 84 字节会补齐84 字节。由于EtherCAT Frame中有一些公共开销, 84 字节的数据包最多含18字节的过程数据。考虑到数据包必须经过每个从站两次才能回到主站,所数据包以固定的波特率100 Mbps在网络上传输两次的时间 这就是它的总线刷新时间 。
1.基于这个原则,以包含 1000路开关量信号的数据包为例,计算过程如下:

过程数据长度:1000/8=125Bytes
数据包长度:84-18+125=191Bytes=191*8 Bit= 1528 Bit
总线刷新时间:(1528Bit/100,000,000 Bps)*2=15.28us * 2 = 30.56us
1
2
3
注意,通常的数字量模块, 都是单纯的输出或者输入模块,而不是混合模块。所以 1000 个数字 量信号, Frame 中就会分配 125 字节。

2.再以包含100个EtherCAT伺服驱动器过程数据的EtherCAT数据包为例,假如每个伺服的过程数据只包括控制字(2字节)、状态字(2字节)、目标位置(4字节)、实际位置(4字节),其总线刷新时间的计算过程如下:

过程数据长度:100*(2+4)=600 Byte。
数据包长度:84-18+600=1266 Byte =671*8 Bit =5328 Bit
总线刷新时间:(5328 Bit/100,000,000 Bps) *2=100.656µs
1
2
3
注意,Frame中只为一个伺服分配了6个字节,这是因为根据Beckhoff公司的控制软件TwinCAT中关于EtherCAT的默认设置是从站的Input和Output使用同一数据段,所以数据包进入伺服驱动器时该数据段存放的是控制字和目标位置,而出来时则存放伺服的状态字和实际位置。

以上两个数据30.56µs和101.28 µs就是EtherCAT官方宣传资料中,刷新1000个数字量需要30µs,刷新100个伺服轴只需要100µs的数据由来。实际上,根据从站的类型、是否包含分布时钟、是否启用时钟同步、时钟同步的参数设置不同,在数据包中有可能还会增加8-12字节用于传输同步时钟值,以及相应的为每个从站增加一个Bit的标记等等,会增加几个微秒的刷新时间,暂且忽略不计。

以上计算只是数据包传输需要的理论时间,实际上,数据包经过每个从站会产生短暂的硬件延时。100M超五类网线接口的从站延时约1µs,而EBus的IO模块类从站延时约0.3µs,在毫秒级以下的控制任务中如果从站数量较多,这个时间也相当可观,计算刷新周期时应该考虑进去。
2.2 端口管理
一个从站控制器最多可以有4个端口,如果一个端口关闭了,控制器主动连接下一个端口。端口可以随着EtherCAT命令主动的打开或者关闭。逻辑端口设置决定了EtherCAT帧的处理和发送顺序。
https://blog.csdn.net/pwl999/article/details/109397700

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

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

https://blog.csdn.net/zhandouhu/article/details/102760231?spm=1001.2101.3001.6650.8&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-8.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-8.no_search_link&utm_relevant_index=16

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

https://blog.csdn.net/zhandouhu/article/details/102760231?spm=1001.2101.3001.6650.9&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-9.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-9.no_search_link&utm_relevant_index=12

EtherCAT网络不需要交换机。每个EtherCAT设备通常有两个以太网端口,第一个端口是接收端口,另一个是发送端口,发送给另一个设备。
实时性是EtherCAT的主要优势,使得EtherCAT可以成为高性能的分散式I/O系统:包含一千个分散式数位输入/输出的程序资料交换只需30us,相当于在100Mbit/s的以太网传输125个字节的资料。读写一百个伺服轴的系统可以以10 kHz的速率更新,一般的更新速率约为1–30 kHz,但也可以使用较低的更新速率,以避免太频繁的直接内存存取影响主站个人电脑的运作。

https://worthsen.blog.csdn.net/article/details/119793316?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-4.pc_relevant_paycolumn_v2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-4.pc_relevant_paycolumn_v2&utm_relevant_index=6

Ethercat和传统以太网的区别:

1:数据链路层不同。

2:Ethercat是实时性传输,传统以太网非实时。

Ethercat和Can总线的区别:

1:Ethercat完全兼容CanOpen协议。

2:Ethercat突破了Can总线中对SDO的包长 的限制。

3:Ethercat一次传输可以遍历多个节点。

Ethercat的优势:实时性与同步性;Ethercat可以保证数据传输的实时性,数据的传送仅仅收到两帧之间的安全时间限制。Ethercat所独有的同步性可以保证所有的节点同步触发,其抖动时间可以达到1us。
ON The Fly(飞行中的数据帧),更形象的演示可以参考Ethercat的PPT中的介绍很好的解释了Ethercat的传输机制,每一帧数据包由主站发出后依次经过各个从站,在经过各个从站同时经行数据交换,几乎没有任何的延时即可遍历一个节点。这得益于Ethercat对数据链路层的改造。

注意:Ethercat是全双工的传输,所有的数据交互均发生在数据传输阶段,数据在返回主站时,不做任何操作,只是经过各个节点时进行单纯的转发操作。

Ethercat的拓扑结构灵活,几乎支持任何一种的拓扑结构,数据帧的传输方向完全有拓扑结构来决定。
三、寻址方式(主站寻址从站)

顺序寻址:主站按照物理连接的先后顺序进行寻址,一般用在主机刚刚启动时。

设置寻址:主站按照设置给每个从站的地址进行寻址。

逻辑寻址:主站将每个从站的地址映射到一个虚拟的4G缓存区,进行寻址(这种寻址比较实用、方便)。逻辑寻址的管理有从站的FMMU进行管理,FMMU将本地内存映射到主机设置的4G内存中的一块区域中。主站可以通过逻辑地址方便的读取任一从站的内存。

五、数据传输方式

   主站与从站进行数据交互的方式主要通过PDO和SDO,即过程数据和邮箱数据其概念与CANOpen中的概念相同。

   PDO:过程数据用来传输周期性的数据,PDO由三个数据缓冲区组成,类似于一个FIFO,从站写入第一个缓冲区,主站从第三个缓冲区读走。注意第二个缓冲区不可操作。从站发送PDO和接受PDO各自采用两个独立的数据缓冲区。有同步管理器来控制缓冲区,每一个同步管理器只负责一种功能,例如同步管理器2负责发送PDO,同步管理器3负责接受PDO。

   SDO:邮箱通信用来发送非周期性的数据,邮箱通信只有一个数据缓冲区,通信方式采用握手的机制确保主从之间的数据交互不丢失,而PDO由于采用FIFO的机制,可能会出现新值覆盖旧值或旧值被多次读走的情况。SDO也由同步管理器来进行管理,发送和接受邮箱独立控制,例如同步管理器0控制发送邮箱,同步管理器1控制接受邮箱。

https://blog.csdn.net/weixin_39939972/article/details/80042786?spm=1001.2101.3001.6650.9&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-9.pc_relevant_paycolumn_v2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-9.pc_relevant_paycolumn_v2&utm_relevant_index=11

PDO (过程数据对象)

1、抽象出的一个通信单元,这个通信单元可以和
      其它单元发生数据交互

*2、周期性过程数据通信中的通信对象

用途: COE协议的周期性过程数据通信

SDO (服务数据对象)

每一个从站在进行从站配置时,都被成为是一个SDO
   
   * 进行非周期性数据通信过程中的从站对象

用途:
      用在非周期性(邮箱)数据通信过程中,
如:
1、主站对从站性能参数进行读取
2、主站对从站性能参数进行配置

https://blog.csdn.net/byb123/article/details/73609616?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-4.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-4.no_search_link&utm_relevant_index=7

寻址模式就是在EtherCAT报文的地址数据写入不同的数据和CMD是相关的

在这里插入图片描述
EtherCAT 寻址模式一般介绍有3种模式,其实广播是一种特殊的寻址方式,可以访问到所有从站,广播一般用于EtherCAT初始化过程使用

自增量寻址: 只用在 EtherCAT 系统启动期间用于扫描现场总线。之后,位置寻址应该只用于检测新添加的从站。

固定地址寻址:用于对已识别的单个设备进行数据访问。

逻辑寻址: 所有设备读取和写入 EtherCAT 报文的相同地址范围。每个从站使用一个映射单元(FMMU,现场总线内存管理单元)将数据从逻辑过程数据映像映射到其本地地址和内存区域。主机在启动期间配置每个从机的 FMMU。
2、EtherCAT命令
在这里插入图片描述
https://blog.csdn.net/gufuguang/article/details/119889835?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-9.no_search_link&spm=1001.2101.3001.4242.6&utm_relevant_index=12

在这里插入图片描述
驱动代码中,同步时钟涉及到如下几个概念:
⑴ 本地时钟:每一个支持DC的从站都有一个纳秒级分辨率的本地时钟寄存器。

每次从机上电,则寄存器从0开始计时,这就意味着不同的从机因为上电开机的时间不同而本地时钟也会有差异,所以需要对从机的本地时钟对比参考时钟进行偏移补偿。再者,从机的时钟一般由时钟单元为参考,所以每个从机的时钟频率也会有极小的误差,但是由于这种极小的误差在长时间的工作中会累积,所以想要完全的时钟同步,也要对这种时钟漂移进行补偿。

⑵ 应用时间:应用层为总线提供的基础时间。
用途:
① 配置从站的时钟偏移;
② 为从站的同步脉冲发生器设定开始时间;
③ 为主站时钟同步参考时钟;
偏移补偿:对于偏移补偿,每个从站都有偏移补偿寄存器,偏移补偿值加上从站本地时钟的初始值就是参考时钟的值,数学表达式为:

漂移补偿:所谓的漂移误差就是由于DC从站使用各自本地时钟源,它们的计时周期存在一定的漂移,这将导致时钟运行不同步。因为支持DC从站的一个特殊机制使得漂移补偿成为可能,这个机制就是当有一个写系统时间寄存器操作的时候,内部时间控制环路(internal time control loop)去比较写入时间(减去传输延迟)和当前的系统时间,比较的误差将作为时间控制寄存器的输入,依次来增加或减缓本地时钟,从而消除漂移误差。

传输延迟:以太网帧在由从站到从站的传输过程中需要一些时间,假如不作处理,传输的这个时间将会不断的积累,最终可能达到毫秒级误差,因此我们必须在漂移补偿的时候将传输延迟考虑在内。支持DC的EtherCAT从站提供了一个测量传输延迟的方案:对于从站的四个端口都配有一个接收时间寄存器,大部分当数据帧到达每个从站后,从站都会分别保存每个端口接收到的以太网帧的时刻。主站通过读取记录的这个时间值来计算EtherCAT帧在从站之间和从站到参考时钟的传输延迟并把从站到参考时钟的传输延迟写入传输延迟寄存器中,通过这种方法,漂移补偿可以达到纳秒级同步。

检测同步:支持DC的从站提供了32位系统时间寄存器(地址为0x092c),该寄存器以符号幅度码(sign-and-magnitude coding)的形式存放着本地时间与参考时钟之间的差值(纳秒级分辨率)。在linux中,可以使用命令行工具查看该寄存器的值,具体操作为:

$watch -n0 “ethercat reg_read -p4 -tsm32 0x92c”

同步信号:同步时钟仅仅是总线上同步事件的一个必要条件,每个支持DC从站有两个可编程同步事件,事件触发的同步信号以备供应用层调用。每个同步事件可根据应用要求既可以只触发一次也可以循环触发。编程同步信号是一种所谓的设置”AssignActivate“字和设置同步信号的周期和转变时间的问题。”AssignActivate“字的设置方式跟具体的从站有关,而且必须从XML文件中对描述从站对”AssignActivate“字的设置,在典型的同步信号的配置可以找到”OpModes“
https://blog.csdn.net/absinjun/article/details/81665123?spm=1001.2014.3001.5501

1.在启动过程中,使用顺序寻址方式为从站分配节点地址,然后通过节点寻址的方式配置从站寄存器,将逻辑地址与从站的物理地址进行映射,之后使用逻辑寻址的方式进行过程数据交换。
2.sdo邮箱通信,一般是用节点寻址的。pdo是通过逻辑寻址进行过程数据交换。

https://blog.csdn.net/PI_sunyang/article/details/77507038?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-4.pc_relevant_paycolumn_v2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-4.pc_relevant_paycolumn_v2&utm_relevant_index=7

一个 EtherCAT 网段相当于一个以太网设备,主站首先根据以太网帧头寻址到相应的网段,然后根据子报文头中的 32 位地址来寻址网段内的设备。

段内寻址方式有两种:设备寻址和逻辑寻址。

设备寻址模式:子报文头中的 32 位地址分为 16 位的从站设备地址和 16 的设备内物理存储地址,每个报文只能寻址唯一的一个从站设备。

设备寻址又有两种寻址机制:顺序寻址和设置寻址。

顺序寻址方式是根据从站的连接顺序,即物理位置实现的。在报文头的32bit地址中,前16bit的Position用于存放地址值,Offset用于存放ESC逻辑寄存器或者内存地址。报文每经过一个从站设备,其Position中的地址值加1。当一个从站接收到EtherCAT报文后,如果报文中的地址值为0,则该报文就是这个从站要要接收的报文
https://blog.csdn.net/u012516571/article/details/76850950?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.pc_relevant_paycolumn_v2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.pc_relevant_paycolumn_v2&utm_relevant_index=2

ESC使用EEPROM来存储所需要的设备相关信息,称为从站信息接口SII(Slave Information Interface)。

以Beckhoff 两通道模拟量输入模块EL3102为例,简单介绍 EEPROM中存储的各种信息的位置和含义。

1、EEPROM内容一览
根据ET1100的datasheet,EEPROM中的存储结构如下:
在这里插入图片描述

https://blog.csdn.net/wofreeo/article/details/89488332?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0.no_search_link&spm=1001.2101.3001.4242.1&utm_relevant_index=3

在这里插入图片描述
https://blog.csdn.net/pashanhu6402/article/details/96428887

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值