目录
前言
IGH EtherCAT主站介绍
主要特点和功能
使用场景
SOEM 主站介绍
SOEM 的特点和功能
SOEM 的使用场景
IGH 主站 和 SOEM对比
1. 功能和复杂性
2. 资源消耗和移植性
3. 使用场景
EtherCAT 通信原理
EtherCAT主站控制伺服过程
位置规划模式
原点复归模式
PLC与从站伺服驱动器的控制
软件主站与从站伺服驱动器的控制
相关概念介绍
对象字典
服务数据对象(SDO)
过程数据对象(PDO)
CiA 402 规范
其他
前言
EtherCAT全称EtherNet Control Automation Technology,是由德国倍福(Beckhoff)公司提出的一种实时以太网技术,用于工业自动化的现场总线通信协议。EtherCAT是一种开放但不开源的技术,从站使用专属ASIC芯片或是FPGA的形式。
IGH EtherCAT是一种EtherCAT协议主站协议栈的开源实现,是一个完全符合EtherCAT标准的库,能够在实时操作系统上运行。与传统总线相比,EtherCAT的优点在于减少了总线通信的延迟时间,从而提高了实时性。IGH EtherCAT实现了这一协议,并对其进行了优化和改进。
EtherCAT的主站开发是基于EtherCAT工控制系统的开发中非常重要的环节。EtherLab的the IgH EtherCAT® Master是目前常见的一种开源的主站协议栈。IgH EtherCAT Master比SOEM复杂一些,但对EtherCAT的实现更为完整。
目前用的最多的开源ethercat主站是igh和soem。igh主站功能更多,结构较为复杂。soem功能相对没有那么完善,实现更为简单一些。主站实现在带有处理器的硬件平台上,带有完整或较为完整的操作系统时用igh;如果主站实现在单片机平台上,则推荐使用soem。igh主站依赖操作系统,而soem很容易可以移植到单片机上。
SOME支持Windows和Linux平台,功能相对简单。IGH的EtherCATMaster基于Linux平台,从发布至今已经将近10年并进行了多次更新,功能相对完善,还支持RTAI、RT-Preempt、Xenomai等多种实时扩展,并且支持DC分布时钟,支持COE、SOE、EOE等多种通信协议。
IGH的EtherCAT 主站由三部分组成,包括主站协议栈、控制应用程序、支持EtherCAT的网卡驱动模块。IGH提供了两种网卡驱动方式:generic驱动和native驱动,generic驱动适用于所有网卡,通过调用Linux网络协议栈实现数据包的收发,并不能直接对硬件进行操作,实时性较难保证。native驱动针对主站支持的一些特定网卡,可以对底层硬件进行操作,可以支持RATI、Xenomai等实时扩展,可以保证EtherCAT主站的实时性。
IGH EtherCAT主站介绍
IGH EtherCAT 主站(IgH EtherCAT Master for Linux)是一个专门针对 Linux 平台的 EtherCAT 主站实现。它是一个开源项目,旨在为 Linux 系统提供完整的 EtherCAT 主站功能。
IgH的官网:http://www.etherlab.org/en/ethercat/index.php
EtherLab / EtherCAT Master · GitLab
以下是 IGH EtherCAT Master的一些特点和功能:
主要特点和功能
-
适用于 Linux 平台:IGH EtherCAT 主站专门设计用于在 Linux 操作系统上实现 EtherCAT 主站功能。它利用 Linux 内核的实时性能和特性来实现对实时控制系统的支持。
-
完整的 EtherCAT 主站功能:IGH EtherCAT 主站支持 EtherCAT 协议的完整功能和特性,包括实时数据通信、分布式时钟同步、监视和配置等。
-
高性能和实时性:基于 Linux 实时内核的特性,IGH EtherCAT 主站能够提供可靠的实时通信和控制能力,适用于实时控制系统的要求。
-
开源和免费:IGH EtherCAT 主站是开源项目,基于 GPL 协议发布,用户可以免费使用、修改和定制它。
-
支持各种 EtherCAT 从站设备:IGH EtherCAT 主站能够与各种符合 EtherCAT 标准的从站设备进行通信,为用户提供了在 Linux 平台上实现 EtherCAT 控制网络的解决方案。
使用场景
IGH EtherCAT 主站主要适用于对实时控制系统有高要求的应用场景。它能够提供高性能、实时性和完整的 EtherCAT 功能,在需要在 Linux 系统中实现 EtherCAT 控制网络的工业自动化、机器人控制、运动控制等领域发挥重要作用。
此外,由于其开源和免费的特性,IGH EtherCAT 主站还可以被广泛应用于研究和教育领域,为从业人员和学生提供了一个了解和探索 EtherCAT 技术的平台,同时市场上也有很多基于它的专利和市场商业应用。
SOEM 主站介绍
SOEM(Simple Open EtherCAT Master)是一种基于 EtherCAT 协议的开源主站实现,专为嵌入式系统和实时控制应用而设计。SOEM 的主要目标是提供一个轻量级、简单易用的 EtherCAT 主站解决方案,适用于资源受限的嵌入式平台和实时控制系统。
SOEM 的特点和功能
-
轻量级实现:SOEM 设计简单、轻量级,适用于资源受限的嵌入式系统和实时控制应用。它的设计旨在降低系统资源消耗,以便在嵌入式设备上运行。
-
容易移植:由于 SOEM 的设计简单,它相对容易移植到各种硬件平台,包括单片机等资源受限的设备上。这使得 SOEM 成为嵌入式系统和实时控制领域中的一种受欢迎的 EtherCAT 主站选择。
-
适用于实时控制:SOEM 专注于提供对实时控制系统的支持,其设计目标是确保稳定的实时通信和控制能力。
-
开源:SOEM 是开源项目,基于 LGPL 协议发布,这意味着它可以免费用于商业和非商业项目中,并且用户可以根据需要进行修改和定制。
SOEM 的使用场景
SOEM 主要适用于嵌入式系统和实时控制应用场景,通常由需要在资源受限的嵌入式平台或实时控制系统中实现 EtherCAT 主站功能的开发人员和工程师使用。由于其轻量级和易于移植的特点,SOEM 更适合于单片机等资源受限的处理器平台上使用。
由于 SOEM 对资源的精简使用和易于移植性,它在需要实现 EtherCAT 主站功能的嵌入式系统和实时控制应用中具有一定的优势。然而,需要同时注意的是,SOEM 的功能相对简化,可能不如其他更复杂的 EtherCAT 主站实现(如 IGH EtherCAT 主站)提供丰富的特性和功能。
IGH 主站 和 SOEM对比
IGH EtherCAT 主站(IgH EtherCAT Master for Linux)和 SOEM(Simple Open EtherCAT Master)都是开源的 EtherCAT 主站实现,用于在各种平台上实现 EtherCAT 主站功能。以下是它们之间的一些对比:
1. 功能和复杂性
-
IGH EtherCAT 主站:
- 功能较为丰富,支持 EtherCAT 主站的各种特性和功能。
- 结构相对复杂,适用于复杂的系统和对 EtherCAT 功能有较高要求的应用场景。
- 针对 Linux 平台设计,依赖于 Linux 操作系统的功能和特性。
-
SOEM:
- 设计简单、轻量级,专注于提供基本的 EtherCAT 主站功能。
- 适用于嵌入式系统和实时控制应用,资源消耗较低,易于移植到不同的硬件平台。
- 对实时控制系统提供基本但稳定的 EtherCAT 支持。
2. 资源消耗和移植性
-
IGH EtherCAT 主站:
- 由于功能较为丰富且结构复杂,可能会消耗更多系统资源,对硬件和操作系统可能有更高的要求。
- 针对 Linux 平台设计,对于在 Linux 系统中实现 EtherCAT 主站功能提供了良好的支持。
-
SOEM:
- 设计目标是轻量级和易于移植,适用于资源受限的嵌入式系统和实时控制应用。
- 容易移植到不同的硬件平台,包括单片机等资源受限的设备。
- 对实时控制系统提供基本但稳定的 EtherCAT 支持。
3. 使用场景
-
IGH EtherCAT 主站:
- 适用于需要实现 EtherCAT 主站功能并且对功能和特性有较高要求的复杂系统,通常是在带有处理器的硬件平台和完整的操作系统上使用。
-
SOEM:
- 适用于嵌入式系统和实时控制应用场景,在单片机等资源受限的平台上使用,例如实时控制系统和嵌入式设备。
EtherCAT 通信原理
传统的以太网设备组成的网络中,每个设备都能接收到网络中的所有数据包,指定设备的有用信息必须在应用层逐一提取,该方式严重影响了应用层执行效率。
EtherCAT 技术突破了传统以太网解决方案的系统限制,不必再像其它以太网那样每个连接点都接收以太网中所有的数据包。当数据帧通过每一个设备时,EtherCAT 从站设备在报文经过其节点时读取相应的编址数据。同样,输入数据可以在报文通过时插入至报文中。
在帧被传递(几纳秒的延迟)过去的时候,从站会识别出相关命令,并进行处理。此过程是在从站控制器中通过硬件实现的,因此与协议栈处理器性能无关。由于以太网帧到达许多设备的数据,在发送和接收方向,可用的数据速率增加至超过 90%,对 100BaseTX 全双工功能得到更充分的利用,使> 100 MBit/S 的有效数据率(> 2×100 MBit/S 90%)可以实现。
EtherCAT主站控制伺服过程
要实现使用EtherCAT协议,主站对从站的伺服驱动器进行控制,常见的有几种方式。如使用PLC,运动控制卡,或者工业PC,软件主站或者嵌入式系统等。
EtherCAT 主站要通过写参数和读设备状态/信息来控制伺服驱动器。为了达到这个目的,伺服驱动器定义了可以读写的参数和只读的状态值,这些参数和状态的集合就是对象字典。
伺服驱动器对象字典以标准化的方式包含 DSP402 及 CoE 相关的所有数据对象。它是伺服驱动器参数数据结构的集合。
COE 协议
CANopen Over EtherCAT 协议被称为COE,它的架构为:
伺服驱动器厂家提供EtherCAT 的 XML 文件,是一种用于描述设备对象字典(Object Dictionary)的文件,它提供了设备的参数配置、通信接口和数据交换方式的描述。对象字典是一种用于定义设备参数、状态和配置的数据结构的机制。XML 文件中包含了设备的数据对象、参数配置、映射方式以及其他相关信息。
XML 文件描述设备所支持的对象字典,以便于 EtherCAT 主站或者其他控制设备可以了解和访问设备的数据。在 EtherCAT 网络中,各个从站设备通过对象字典的描述,向主站和其他从站提供了自己的数据结构和通信能力。
伺服驱动器对象字典是主站与它通讯的接口,EtherCAT 主站实现对伺服驱动器的运动控制功能,都是通过对象字典这个接口完成的。
伺服在 EtherCAT 模式下,各项由 CiA DS402 所规范的操作模式 。
以下以常见的定点运动和回零运动过程举例:
位置规划模式
伺服驱动器接收到由上位机传送的位置命令后,驱动器控制伺服电机到达目标位置。在位置规划模式下,上位机仅在一开始时告知驱动器目标位置、速度命令与加减速等相关设定。从命令触发到到达目标位置这中间的运动规划,都是由驱动器内部的运动命令产生器去执行。下图为驱动器的位置规划模式架构图:
原点复归模式
原点复归模式,即回零模式。在完成原点复归后,驱动器的坐标系随即建立,驱动器可开始执行上位机所下达的位置命令。
PLC与从站伺服驱动器的控制
选择支持EtherCAT协议的PLC作为主控单元,PLC 通过 EtherCAT 协议与伺服驱动器进行通信。 PLC 作为 EtherCAT 的主站,负责协调 EtherCAT 网络中的所有从站设备,包括伺服驱动器。
PLC 中集成了 EtherCAT 的主站实现,通常使用特定的编程语言或者软件来实现对伺服驱动器的控制。 PLC 程序可以通过 EtherCAT 协议,向伺服驱动器发送命令并接收其状态和反馈信息。
PLC 通过对伺服驱动器的对象字典进行解析,可以实现对伺服驱动器的配置和控制,以及获取状态信息。
PLC 通过周期性的发送 EtherCAT 帧来控制伺服驱动器的动作。 PLC 会定期地向伺服驱动器发送控制指令(例如位置、速度、加速度等指令),同时将接收和处理伺服驱动器的状态和反馈信息。
对于一些 PLC(特别是工业级 PLC)来说,可能会提供专门的运动控制模块或者函数库,以便实现更高级的运动控制功能,比如插补运动。这些模块或者函数库可以辅助用户实现更复杂的运动控制功能,比如多轴插补运动、圆弧插补、轨迹规划等。
软件主站与从站伺服驱动器的控制
这个就需要开发了,开发EtherCAT主站应用程序,有一定的门槛和含金量。需要理解基于EtherCAT的从站伺服驱动器应遵循的标准规范,尤其是CiA402规范,CiA402是针对伺服驱动器控制的CANopen应用规范,涵盖了运动控制、状态管理、参数设置等方面的要求。还需要熟悉伺服驱动器的参数和控制指令,包括速度控制、位置控制、电流控制等。这些参数和指令将会在使用API接口控制伺服驱动器时用到。
使用IGH主站通过api接口,控制从站伺服驱动器,实现对从站的访问和设置,如设置从站地址、显示总线配置、显示PDO数据、读写SDO参数等。
IGH的应用程序接口为应用程序提供访问EtherCAT主站的功能和数据结构。 接口包含在头文件include / ecrt.h中。
开发EtherCAT主站应用程序大致包括配置软件交互模块、配置参数解析模块、总线扫描模块、主站业务管理模块、过程数据交互模块等。
配置软件交互模块提供上位机配置软件网络配置、主/从站操作功能。在主站进入正常工作流程前,用户通过配置软件把现场总线的网络拓朴结构、主站配置参数、从站配置参数、PDO对象映射等下发给主站,本模块将配置参数保存到文件中,并给主平配置解析模块下发信号量。同时本模块也响应配置软件对主/从站操作命令、状态信息获取命令、信息监控等。
配置参数解析模块功能单一,主要解析主站、从站配置参数。接收到配置软件交互模块信号量后,本模块从配置文件中读取网络配置参数,并进行动态解析,将解析到的主/从站配置信息、SDO/PDO映射等信息保存到全局变量中,然后给主站业务管理模块发送信量。若解析参数出现异常,则将错误信息传递给主站业务管理模块。
总线扫描模块主要功能是对现场EtherCAT总线网络进行扫描。本模块接收到配置软件交互模块信号量后,启动网络总路线扫描,获取总线网络拓扑结构及从站信息,将上述信息传递给配置软件交互模块及主站业务管理模块。
主站业务管理模块为应用程序的核心。处理的业务包括主站创建、主/从站参数协议栈配置、从站启动参数配置、从站同步管理器配置、系统异常错误处理等。本模块接收到主站配置解析模块信号量后,首先调用ecrt_requet_master()函数申请主站,然后调用ecrt_master_create_domain()函数创建domain数据域,调用ecrt_master_slave_config()、ecrt_slave_config_pdos()等函数配置从站PDO映射;调用ecrt_slave_config_dc()配置从站DC同步时钟。EtherCAT总线配置完成后,调用ecrt_master_activate()激活主站,并启动过程数据交互模块,进入主站业务循环处理,状态信息更新及系统异常处理。
过程数据交互模块在主站进入正常业务处理后启动,处理的业务包括过程数据接收、过程数据处理、主/从站状态检测、主/从站DC时钟同步、过程数据发送。本模块调用高精度定时函数clock_nanosleep()实现任务的精确定时,调用ecrt_master_receive()函数接收网络数据,调用ecrt_domain_process()函数处理过程数据,调用ecrt_master_sync_slave_clocks()函数设置DC同步时钟,调用ecrt_master_send()发送网络数据,从而实现EtherCAT网络数据的周期处理。
一些三方公司也提供的有开发板或开发包,通过向linux内核打实时补丁和使用IGH软件主站,简化伺服运动控制的开发。
相关概念介绍
在 EtherCAT 中,对象字典(Object Dictionary)、PDO(Process Data Objects)和 SDO(Service Data Objects)这些概念都是源自 CANopen 协议,并在 EtherCAT 中得到了应用。
CANopen 是一种用于控制系统中各种设备之间通信和数据交换的高层协议,而 CiA 402 是作为 CANopen 的一个特定设备配置规范存在的,主要用于定义运动控制设备的对象字典和通信机制。
在 EtherCAT 中,可以使用 CiA 402 的规范来定义设备的对象字典、PDO 和 SDO,以便于使用 EtherCAT 实现运动控制设备和系统的开发和集成。
对象字典和通讯功能可以合称为 COE 部分。
核心部分:对象字典——通讯功能和应用部分沟通的桥梁。
关键部分:通讯功能——通信规则(SDO、PDO 等)的实现。
重点部分:应用部分——决定了设备的具体功用,例如驱动器、IO 模块。
对象字典
对象字典是一种用于定义设备数据对象的格式和布局的机制。在 EtherCAT 中,对象字典描述了设备的数据结构、寄存器映射、参数配置等信息,以便其他设备或主站了解和访问这些数据。对象字典通常以标准格式进行定义,以确保设备之间能够进行正确的通信和交换数据。
服务数据对象(SDO)
PDO 和 SDO 是用于数据交换的机制,通常在实时通信中使用。PDO 用于在实时数据交换过程中传输周期性的过程数据,而 SDO 用于在非周期性数据交换过程中提供配置、参数设置和状态查询等服务。通过这些机制, EtherCAT 设备能够在实时通信中进行数据交换和设备控制。
伺服系统支持 SDO 服务,EtherCAT 主站可以通过使用 SDO 读写 驱动器伺服系统的对象字典,从而配置、监控、控制伺服系统。
SDO 采用的是客户端/服务器模型;SDO 操作中主站对应为客户端,伺服驱动器从站为服务器,所有传输都必须是客户端发起,服务器响应。
在传统 CANopen DS301 模式下,SDO 协议为了匹配 CAN 报文数据长度,一次只能传输 8 个字节。在 COE 增强模式下仅扩大有效载荷数据而不改变协议首部;在这种方式下,SDO 协议使用更大数据长度的邮箱,从而提高了大数据的传输效率。
过程数据对象(PDO)
PDO 一般用于实时的数据更新;其分为接收 PDO(RXPDO)和发送 PDO(TXPDO),前者的数据流方向是主站到从站,后者则是从站到主站。
伺服驱动器 的 PDO 功能支持同步周期的刷新方式,也支持非周期的更新方式。当主站选择为分布时钟同步模式时,PDO 将按同步周期更新;如果选择自由运行模式,那么 PDO 数据的更新将是非周期性的。
CiA 402 规范
CiA 402 是由CAN in Automation(CiA)组织发布的针对运动控制设备的 CANopen 设备配置和应用规范。CiA 402 定义了一系列对象字典、PDO 映射和 SDO 服务,以便于控制运动设备、配置参数和获取状态信息。该规范是专门面向运动控制设备的,包括驱动器、伺服控制器等。
其他资源
基于IMX8、ZYNQ、T3平台的IgH EtherCAT主站开发案例分享
Igh1.5.2 etherCAT接口分析教程 - 知乎
一种基于IGH开源框架改进的EtherCAT通信主站方法及系统与流程
IgH EtherCAT主站开发案例分享——基于NXP i.MX 8M Mini - 知乎
https://www.cnblogs.com/wsg1100/p/14433632.html
基于i.MX6处理器的EtherCAT主站的设计-伺服与运动控制-中国传动网
[工业互联-23]:EtherCat从站 - EtherCAT协议栈与工作原理, 软硬件解决方案-CSDN博客
【EtherCAT】4.实现一个成熟的从站 - 知乎
免费开源!IgH EtherCAT控制伺服电机方法分享!|linux|ethercat|驱动器_网易订阅
IGH_Master主站配置驱动伺服电机和变频器总结
EtherCAT 伺服控制功能块实现_ethercat伺服控制-CSDN博客
https://blog.csdn.net/gufuguang/category_11310794.html
https://patents.google.com/patent/CN110311846A/zh
GitHub - ahoarau/ethercat-drivers: r8169 EtherCAT driver for IgH EtherCAT Master for Linux
https://docs.etherlab.org/ethercat/1.5/pdf/ethercat_doc.pdf
https://patents.google.com/patent/CN115378761B/zh
https://www.cnblogs.com/pwl999/p/15534998.html