imtoken钱包下载安卓教程|ethercat状态机

作者: imtoken钱包下载安卓教程
2024-03-14 16:03:43

EtherCAT状态机详解_ecatslv 状态机-CSDN博客

>

EtherCAT状态机详解_ecatslv 状态机-CSDN博客

EtherCAT状态机详解

最新推荐文章于 2024-01-04 10:53:42 发布

VIP文章

雪花飞龙

最新推荐文章于 2024-01-04 10:53:42 发布

阅读量7.8k

收藏

65

点赞数

6

分类专栏:

EtherCAT主站SOEM专栏

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_43956732/article/details/106547961

版权

EtherCAT状态机详解

canopen over ethercat参考模型

网络状态机 EtherCAT State Machine

COE状态机

canopen over ethercat参考模型

从下图中可以看出,运行模型可以分为如下几层

1 商家软件运用层

2 基于CANopen DS402运用层

3 数据链路层

4 物理连接层

网络状态机 EtherCAT State Machine

网络状态机如下图所示

最低0.47元/天 解锁文章

优惠劵

雪花飞龙

关注

关注

6

点赞

65

收藏

觉得还不错?

一键收藏

知道了

0

评论

EtherCAT状态机详解

EtherCAT状态机详解canopen over ethercat参考模型网络状态机 EtherCAT State Machinecanopen over ethercat参考模型从下图中可以看出,运行模型可以分为如下几层1 商家软件运用层2 基于CANopen DS402运用层3 数据链路层4 物理连接层网络状态机 EtherCAT State Machine网络状态机如下图所示对应功能介绍:...

复制链接

扫一扫

专栏目录

松下EtherCat 电机描述

04-06

ETHERCAT 伺服电机

Ethercat协议详解.zip

05-12

Ethercat主站协议详解,对于想要开发主站的同学有很大帮助,便于理解主站源代码的相关作用。注:英文文档

1、Ethercat协议原理,应用层,数据链路层,物理层。

2、Ethercat从站寄存器说明

3、ET1200硬件详解

参与评论

您还未登录,请先

登录

后发表或查看评论

EtherCAT从站状态机分析:PREOP to SAFEOP过程

JavanChen的博客

11-15

1万+

/////////////////////////////////////////////////////////////////////////////////////////

/**

\return AL Status Code (see ecatslv.h ALSTATUSCODE_....)

\brief This function is called in case o...

EtherCAT的COE报文

u014453443的博客

01-04

515

动态PDO配置包括PDO Assignment和PDO Configuration,前者指的是,已经有配置好的一堆1600,1601,1602等等PDO,我们可以选择如何组合成我们自己的传输数据。其中,子索引0是分配的PDO数目,其他子索引是PDO映射对象的索引号,也就是前面的0x1600~0x17FF。COE协议是完全遵循CANopen协议的,但针对EtherCAT通信做了一些扩展,索引为0x1c00~0x1c4f,用于设置存储同步管理器的类型,通信参数和PDO数据分配。0x1c12配置示例。

EtherCAT通讯DS402协议----控制模式

weixin_43956732的博客

06-07

1万+

EtherCAT通讯DS402协议----控制模式控制模式查看和设定查看控制器支持的控制模式:6502h设置控制器的模式:6060h查看当前控制模式:6061h控制模式详解轮廓位置模式Profiled Position

驱动器控制电机有多种模式,如轮廓位置模式、同步位置模式、同步速度模式等,不同的控制模式具有不同的特性,如何选择这些控制模式实现最优的性能是机器人开发中的一个重要课题。

控制模式查看和设定

当我们一款控制器时,可以通过6502h查看控制器支持的控制模式,然后通过6060h设置需要的控制模式,最

EtherCAT设备协议详解二、EtherCAT状态机及配置流程

EtherCAT

12-16

7893

设备可以拒绝来自主站的状态请求,并通过错误指示(AL 状态寄存器中的错误标志)和相关错误代码(AL 状态代码寄存器)发出错误信号。设置了上述信息后,从站检查无误后,主站可以请求进入safe-op状态,如果不能进入safe-op可以读取相关寄存器,判断错误原因。设置了上述信息后,从站检查无误后,主站可以请求进入pre-op状态,如果不能进入pre-op可以读取相关寄存器,判断错误原因。safe-op状态主要把pdo中的数据设置的从站中,确认从站是否会报错。DC同步稳定,从站也没有报错就可以申请进入op状态。

倍福提供的EtherCAT从站代码包解析

进阶的Kaiser@ZJU !!!

06-13

1万+

用倍福的从站配置工具得到的源代码有以下

1 主要代码

 ecatappl.c

 ecatappl.h

   Ecatappl:  EtherCAT从站应用层接口,整个协议栈运行的核心模块,

EtherCAT从站状态机和过程数据接口。Main()函数的定义,输入输出程数据

对象的映射处理,ESC与处理器本地内存的输入输出过程数据的交换等;

 ecatslv.c

 ecat

EtherCAT学习笔记:状态机(ESM)

weixin_38933763的博客

04-24

3559

ESM(EtherCAT State Machine)负责协调主站和从站应用程序在初始化和运行时的状态关系及转换;

从初始化状态至运行状态,必须按照“初始化->预运行->安全运行->运行”的顺序转化。

从运行状态逆向返回时可以越级转化;

EtherCAT必须支持四种状态和一种可选状态:

Init:初始化

Pre-Operational:预运行

Saft-Operational:...

Ethercat学习-电机调试问题总结

西澳峰的博客

03-10

3035

主站硬件:STM32F405+LAN8720A主站软件:SOEM。

ethercat状态机

weixin_52720049的博客

11-24

622

在EtherCAT网络中,主站可以通过发送特定的EtherCAT命令将从站设备从预运行模式(PRE-OP)切换到安全运行模式(SAFE-OP),然后再切换到运行模式(OP)。向从站设备发送 "Operational" 命令:一旦主站准备好并安全运行参数配置完成,它可以向从站设备发送 "Operational"(运行)命令,以请求从站设备进入运行模式(OP)。从站进入运行模式:从站设备接收并解析主站发送的 "Operational" 命令后,将切换到运行模式,执行实际的应用操作。在PRE-OP状态下,

IGH(ethercat)命令行不能进入OP原因

关注工业机器人应用

12-17

4773

解决命令行不能让伺服进入OP模式的问题。

EtherCAT状态机控制和状态

風之逍遥的博客

09-05

8446

        主机和从站状态转化规律如下:

        (1)、主机控制从机状态转换,将目的状态写入从站AL控制位(0x0120.0~3);

        (2)、从机读取新状态请求后,检查自身状态:

        a:如果可以转化,则将新状态写入状态机实际状态位(0x0130.0~3);

        b:如果不能转化,则不改变实际状态位,设置错误指示位(0x013.4),并...

EtherCAT协议栈代码详解

05-31

EtherCAT代码详解,ET9300,开发EtherCAT的的必备文档。

详解EtherCAT主站协议栈-综合文档

05-22

详解EtherCAT主站协议栈

台达伺服电机EtherCAT英文文档

08-12

台达伺服电机A2E型说明书英文版,介绍该类型电机EtherCAT总线通讯方式及规格

CanOpen通信----PDO与SDO

热门推荐

weixin_43956732的博客

06-07

2万+

CanOpen通信----PDO与SDO

EtherCAT通信主站----PDO过程数据映射

weixin_43956732的博客

09-07

1万+

EtherCAT通信主站----PDO过程数据映射FMMU与Sync Manager配置PDO过程数据映射PDO映射PDO分配PDO 映射的步骤

EtherCAT其中COE在数据链路层采用EtherCAT协议,在运用层采用CanOpen协议,其和兴是对象字典,对PDO和SDO相关知识,可以参考CanOpen通信----PDO与SDO,本文将只PDO的映射相关知识。

FMMU与Sync Manager配置

为了使SDO与PDO数据能在EtherCAT数据链路层上得到正确解析,需要对FMMU与Sync Mana

EtherCAT通讯DS402协议----Controlword和Statusword

weixin_43956732的博客

06-07

1万+

EtherCAT通讯DS402协议----Controlword和Statusword控制字和状态字作用控制字:controlword

控制字和状态字作用

主站通过控制字(controlword)对驱动器控制,通过读取驱动器的状态字(statusword)获取驱动器的状态。驱动器的8种状态转换参照EtherCAT状态机详解

控制字:controlword

...

ethercat soem详解

最新发布

01-26

EtherCAT (Ethernet for Control Automation Technology)是一种高性能的实时以太网通信协议,用于自动化控制系统中的实时数据传输。EtherCAT是一种开放的标准,它基于以太网技术,具有低延迟、高实时性、高带宽和高可靠性等特点。

EtherCAT使用专有的通信协议,称为SOEM (Simple Open EtherCAT Master)。SOEM是一个用于EtherCAT主站(也称为主控设备)开发的开源库。它提供了一套简单易用的API,使得开发人员能够轻松地实现EtherCAT设备的主动驱动和控制。

SOEM库提供了与EtherCAT从站(也称为从控设备)进行通信的功能。它能够检测和自动配置连接在EtherCAT总线上的所有从站设备,并且可以实时地传输数据。通过SOEM,主站可以控制和监视从站设备,以实现自动化系统的高效运行。

EtherCAT和SOEM的组合为实时控制系统的设计和开发提供了许多优势。首先,EtherCAT具有低延迟和高实时性,可以在毫秒级的延迟下传输实时数据。这使得实时控制系统能够快速响应变化,并实现高精度的运动控制。

其次,EtherCAT具有高带宽,能够同时传输多个数据流。这使得多个设备可以并行进行通信,提高了系统的整体性能。此外,EtherCAT支持热插拔功能,从而可以动态添加或删除从站设备,而无需停机。

最后,SOEM作为一个开源库,提供了灵活和可扩展的开发平台。开发人员可以根据实际需求自定义和扩展SOEM库的功能,并与其他开源工具和库进行整合。这为自动化控制领域的研究和创新提供了更多的可能性。

综上所述,EtherCAT和SOEM是一对强大的工具,可用于实现高性能和实时性的自动化控制系统。它们的特性使得工程师和开发人员能够更加灵活地设计和部署控制系统,提高系统的可靠性和性能。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

雪花飞龙

CSDN认证博客专家

CSDN认证企业博客

码龄5年

暂无认证

70

原创

5699

周排名

148万+

总排名

46万+

访问

等级

4001

积分

1万+

粉丝

484

获赞

130

评论

4071

收藏

私信

关注

热门文章

ROS中rviz使用教程

29707

CanOpen通信----PDO与SDO

24387

EtherCAT通信主站----PDO过程数据映射

18272

C++时间函数----time

16162

WPF入门教学(C#窗口、客户端)

15281

分类专栏

.net开发

1篇

C++专栏

24篇

界面开发工具

2篇

Python基础知识

11篇

自动化物理仿真

5篇

协作机器人控制算法

18篇

ROS专栏

20篇

EtherCAT主站SOEM专栏

22篇

OpenCV学习专栏

13篇

移动机器人运动控制

7篇

Scipy专栏

3篇

TCP/IP通讯

3篇

Linux

CanOpen通讯专栏

4篇

KDL库专栏

4篇

UR控制通讯专栏

5篇

Matplotlib专栏

协作机器人本体结构

1篇

最新评论

ROS中gazebo配置教程详解

2301_80197036:

名空间必须与××.gazebo文件中的命名空间相同 是指哪个部分?

利用Python scipy.signal.filtfilt() 实现信号滤波

alpha的beta:

您好!请教一下带通滤波器遇到的问题

当sampleRate比较大的时候,eg.48k,

截止频率为300-1000Hz

filtfilt的输出结果是Nan

降低采样率后,就是合理的数字,请问这个问题应该怎么解决呢?感谢~

卡尔曼滤波原理介绍及算法实现

Mdwsbb:

想问下教科书是哪本?

EtherCAT通信主站----PDO过程数据映射

muti_Fuction:

唉,干点事真难找个资料,昨天看的还好好的,今天就成vip文档了

机器人控制算法----模糊控制

muti_Fuction:

催更,博主

大家在看

大小鼠主动跑轮系统

Java常用设计模式(工厂,策略,责任链)

学习Android的第二十八天

243

基于SpringBoot+Vue的IT博客管理系统

954

AI壁纸号一周增加上千粉丝,轻松变现的成功案例分享

288

最新文章

C#使用Math.Net库进行矩阵运算

程序开发小白需了解的一些概念

C#串口通讯

2021年8篇

2020年124篇

目录

目录

分类专栏

.net开发

1篇

C++专栏

24篇

界面开发工具

2篇

Python基础知识

11篇

自动化物理仿真

5篇

协作机器人控制算法

18篇

ROS专栏

20篇

EtherCAT主站SOEM专栏

22篇

OpenCV学习专栏

13篇

移动机器人运动控制

7篇

Scipy专栏

3篇

TCP/IP通讯

3篇

Linux

CanOpen通讯专栏

4篇

KDL库专栏

4篇

UR控制通讯专栏

5篇

Matplotlib专栏

协作机器人本体结构

1篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

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

余额充值

EtherCAT设备协议详解二、EtherCAT状态机及配置流程-CSDN博客

>

EtherCAT设备协议详解二、EtherCAT状态机及配置流程-CSDN博客

EtherCAT设备协议详解二、EtherCAT状态机及配置流程

EtherCat技术研究

已于 2022-12-16 15:00:21 修改

阅读量7.8k

收藏

81

点赞数

6

分类专栏:

EtherCAT

文章标签:

ethercat

于 2022-12-16 14:59:44 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/gufuguang/article/details/128342161

版权

EtherCAT

专栏收录该内容

13 篇文章

71 订阅

订阅专栏

 EtherCAT状态机(ESM)

        EtherCAT状态机定义了每个EtherCAT从站设备的分步设置,并指示了可用的功能。设备可以拒绝来自主站的状态请求,并通过错误指示(AL 状态寄存器中的错误标志)和相关错误代码(AL 状态代码寄存器)发出错误信号。状态请求、状态响应和错误响应通过 ESC AL 控制寄存器 (reg0x0120)、AL 状态寄存器 (reg0x0130) 和 AL 状态代码寄存器 (reg0x0134) 进行交换。ESM指定从机行为,而主机分别从机状态。下面的 ESM 描述概述了每个状态转换的基本操作:主设备发送的命令和连接设备的(本地)行为。

上图描述了从站从INIT到OP的过程。INIT到OP过程是不能出现状态跳跃的,回退过程可以出现状态跳跃。

下面介绍从INIT到OP的过程,也就是从站初始化到工作的过程。

1、INIT状态,从站上电处于INIT状态

主站可以读取从站的设备信息和做一些准备进入pre-op初始化的配置

(1)清除从站FMMU和SyncManagers配置

(2)设置从站的地址和mailbox信息

(3)如果使用DC、设置DC的传输延时和启动的偏移时间,并进行若干次的时钟同步

设置了上述信息后,从站检查无误后,主站可以请求进入pre-op状态,如果不能进入pre-op可以读取相关寄存器,判断错误原因

2、pre-op状态

(1)主站设置从站需要映射的pdo数据,配置好FMMU的映射

(2)如果使用DC需要配置DC的周期时间、启动时间、触发方式、及开始同步DC时钟

(3)第一步已经配置好pdo数据及映射关系,可以开始发送pdo数据

设置了上述信息后,从站检查无误后,主站可以请求进入safe-op状态,如果不能进入safe-op可以读取相关寄存器,判断错误原因

3、safe-op状态

pre-op状态已经把数据都配置完成了,在safe-op状态基本不需要再进行配置了

safe-op状态主要把pdo中的数据设置的从站中,确认从站是否会报错

判断从站DC同步是否达到一个稳定值

DC同步稳定,从站也没有报错就可以申请进入op状态

4、OP状态

进入op状态后就可以对伺服进行运动控制

 

优惠劵

EtherCat技术研究

关注

关注

6

点赞

81

收藏

觉得还不错?

一键收藏

知道了

9

评论

EtherCAT设备协议详解二、EtherCAT状态机及配置流程

设备可以拒绝来自主站的状态请求,并通过错误指示(AL 状态寄存器中的错误标志)和相关错误代码(AL 状态代码寄存器)发出错误信号。设置了上述信息后,从站检查无误后,主站可以请求进入safe-op状态,如果不能进入safe-op可以读取相关寄存器,判断错误原因。设置了上述信息后,从站检查无误后,主站可以请求进入pre-op状态,如果不能进入pre-op可以读取相关寄存器,判断错误原因。safe-op状态主要把pdo中的数据设置的从站中,确认从站是否会报错。DC同步稳定,从站也没有报错就可以申请进入op状态。

复制链接

扫一扫

专栏目录

详解EtherCAT主站协议栈-综合文档

05-22

详解EtherCAT主站协议栈

EtherCAT学习笔记:状态机(ESM)

weixin_38933763的博客

04-24

3559

ESM(EtherCAT State Machine)负责协调主站和从站应用程序在初始化和运行时的状态关系及转换;

从初始化状态至运行状态,必须按照“初始化->预运行->安全运行->运行”的顺序转化。

从运行状态逆向返回时可以越级转化;

EtherCAT必须支持四种状态和一种可选状态:

Init:初始化

Pre-Operational:预运行

Saft-Operational:...

9 条评论

您还未登录,请先

登录

后发表或查看评论

Ethercat“BWR配置从站地址”报文分析(0x0010:0x0011)

geshifei的博客

12-23

507

涉及的从站寄存器:Configured Station Address (0x0010:0x0010)。使用场景举例:IgH启动后,通过“配置从站地址”报文将所有从站地址清零,然后通过APWR指令+“配置从站地址”报文,设置各个从站的地址。

倍福PLC通过EtherCAT总线控制伺服电机---(一)硬件配置篇

weixin_42728270的博客

12-04

1427

本文主要介绍倍福TC3如何配置EtherCAT伺服电机。后续两篇会介绍一下程序控制以及程序形成功能块去控制。

汇川 Ethercat 总线通讯

08-15

汇川 Ethercat 总线通讯模板,汇川H5U

Ethercat协议详解.zip

05-12

Ethercat主站协议详解,对于想要开发主站的同学有很大帮助,便于理解主站源代码的相关作用。注:英文文档

1、Ethercat协议原理,应用层,数据链路层,物理层。

2、Ethercat从站寄存器说明

3、ET1200硬件详解

ethercat状态机

weixin_52720049的博客

11-24

622

在EtherCAT网络中,主站可以通过发送特定的EtherCAT命令将从站设备从预运行模式(PRE-OP)切换到安全运行模式(SAFE-OP),然后再切换到运行模式(OP)。向从站设备发送 "Operational" 命令:一旦主站准备好并安全运行参数配置完成,它可以向从站设备发送 "Operational"(运行)命令,以请求从站设备进入运行模式(OP)。从站进入运行模式:从站设备接收并解析主站发送的 "Operational" 命令后,将切换到运行模式,执行实际的应用操作。在PRE-OP状态下,

EtherCAT状态机控制和状态

風之逍遥的博客

09-05

8446

        主机和从站状态转化规律如下:

        (1)、主机控制从机状态转换,将目的状态写入从站AL控制位(0x0120.0~3);

        (2)、从机读取新状态请求后,检查自身状态:

        a:如果可以转化,则将新状态写入状态机实际状态位(0x0130.0~3);

        b:如果不能转化,则不改变实际状态位,设置错误指示位(0x013.4),并...

EtherCAT状态机详解

weixin_43956732的博客

06-04

7887

EtherCAT状态机详解canopen over ethercat参考模型网络状态机 EtherCAT State Machine

canopen over ethercat参考模型

从下图中可以看出,运行模型可以分为如下几层

1 商家软件运用层

2 基于CANopen DS402运用层

3 数据链路层

4 物理连接层

网络状态机 EtherCAT State Machine

网络状态机如下图所示

对应功能介绍:

...

EtherCAT设备协议详解一、EtherCAT概述

EtherCAT

12-16

3626

• 国际范围内涵盖的开放技术标准(IEC61158,61784,61800和ISO 15745)• 用于控制自动化技术的以太网(EtherCAT) 是一种基于以太网的现场总线系统。后面介绍上图中的从站设备协议,图上内容很多,原图可以从ethercat官网获取。• 涉及从站和从站的设置节点采用物理连接的菊花链样式但在逻辑上按循环运行。• EtherCAT专注于精确、低抖动从节点间同步 (≤ 1 μs)• 每个从站“动态”处理消息数据当帧从一个节点传递到下一个节点时。– ETG拥有EtherCAT的权利。

EtherCat用户工程中的任务与配置

viixin的博客

12-10

1339

EtherCat用户工程中的任务与配置

倍福EtherCAT通信协议详细解析

weixin_41883890的博客

06-07

2万+

单轴的运动控制系统可分为开环、半闭环和闭环伺服系统。多轴运动控制系统可以分成点位控制、连续轨迹控制和同步控制。典型的运动控制系统,从结构上看,包括上位机控制窗口、运动控制器、驱动器、电机以及测量反馈系统等几个部分组成:

1.2 实时以太网

实时以太网(RTE, Real Time Ethernet)是常规以太网技术的延伸,以便满足工业控制领域的实时性数据通信要求。目前,国际上有多种实时工业以太网协议,根据不同的实时性和成本的要求使用不同的原理,大致可以分为以下三类:

(1)基于TCP/IP实现的工业以太

EtherCAT主站IgH解析(一)--主站初始化、状态机与EtherCAT报文

wsg1100

02-22

6998

文章目录1 启动脚本1.1 start1.2 stop2 主站实例创建2.1 Master Phases2.2 数据报与状态机数据报状态机2.3 master状态机及数据报初始化2.4 初始化EtherCAT device2.5 设置IDLE 线程的发送间隔:2.6 初始化字符设备3 网卡4 IDLE阶段内核线程

版权声明:本文为本文为博主原创文章,转载请注明出处。如有问题,欢迎指正。博客地址:https://www.cnblogs.com/wsg1100/

1 启动脚本

igh通过脚本来启动,可以是sys

Ethercat状态机转化(ESM)

qq_39854159的博客

10-08

1982

ESM状态机

四种应支持的状态机

●Init.

Pre-Operational.

Safe-Operational.

Operational.

一种可选的状态机

●Bootstrap.

其状态转化关系,如下图所示:

状态转化

本地管理服务

IP

开始邮箱通信

PI

停止邮箱通信

PS

开始输入更新

SP

停止输入更新

SO

开始输出更新

OS

停止输出更新

OP

停止输出更新,停止输入更新

SI

停止输出更新,停止邮箱通信

OI

停止输出更新,停止输入更新,

EtherCAT协议基础知识(Part 1)

工业通讯__HongKe的博客

10-10

6801

一、EtherCAT概述

1.特性

①开放的技术

EtherCAT全称EtherNetControlAutomationTechnology,是由德国倍福(Beckhoff)公司提出的一种实时以太网技术。EtherCAT是一种开放但不开源的技术,意味着您可以任意使用这项技术,但若要进行相关设备的开发,则需要向倍福公司获取相关授权。

②快速性

相比传统现场总线,EtherCAT的数据传输速率有了极大的提升,可选10Mbit/s或100Mbit/s,甚至依托补充的EtherCATG技术,传...

【EtherCAT分析】三、EtherCAT从站设备描述文件设计

zhandouhu的博客

11-03

1万+

从站设备描述文件ESI(EtherCAT Slave Information)是EtherCAT从站设备的配置文件,文件为XML格式。XML文件编写好后,通过主站程序下载到从站设备的EEPROM中,通过I2C总线与ET1100芯片内部的寄存器进行数据交换,实现配置信息的读取。从站设备描述文件的主要功能是描述EtherCAT从站的配置信息,主要包含以下两个部分内容:EtherCAT从站制...

EtherCAT 应用层协议的部分理解(一)

热门推荐

王三三

06-22

2万+

不对EtherCAT进行介绍,只谈谈对EtherCAT应用层协议的简单理解1、COE (CANopen over EtherCAT)  一种基于且完全遵循CANopen协议的通信协议  用途:

     1、用于驱动PDO对象,实现PDO对象间数据通信

      2、用于驱动SDO对象,实现SDO对象间的数据传输  分类:

    1、周期性过程数据通信 – 驱动PDO

3.KUKA机器人Ethercat通讯参数配置方法.pdf

04-20

KUKA Ethercat通讯配置

基于EtherCat通信的simulink Real-time配置

dongshanchuanshuo的博客

04-01

1543

软件与硬件环境

matlab:2017b,编译环境是vs2013

twincat:3.1.4024.22

驱动器:maxon

电机:maxon

力传感器的数据采集卡:宇立SRI-8126

主机系统:Win10 专业版

主机与从机都是i7-6700的cpu

xml文件生成

(以下步骤是在硬件接线已经完成情况下进行)

首先在twincat中新建twincat projects

扫描设备

选择twincat NC任务

这里可以先选择否

在IO-Device里可以

ethercat通信协议分析及实现

最新发布

01-27

要实现EtherCAT通信协议,首先需要了解其数据帧结构和通信流程。EtherCAT的数据帧包括了以太网头部、EtherCAT头部、数据包数据和CRC校验字段。在通信流程上,主站会定期向从站发送数据包,从站接收并处理数据后返回...

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

EtherCat技术研究

CSDN认证博客专家

CSDN认证企业博客

码龄11年

暂无认证

84

原创

3万+

周排名

2万+

总排名

27万+

访问

等级

2392

积分

574

粉丝

168

获赞

261

评论

1119

收藏

私信

关注

热门文章

机内码、国际码、区位码换算

24839

各种ADC转换方式的优缺点

20211

IgH详解 一、概述

12652

IgH配置EtherCAT流程

12340

目前常用AD/DA芯片简介

7913

分类专栏

Linuxcnc-ethercat

1篇

IgH详解

23篇

arm_Linux

1篇

TCP/IP

1篇

S3C2440

18篇

EtherCAT

13篇

最新评论

IgH详解十二、IgH实现使用ENI文件配置从站(二)

EtherCat技术研究:

扫描跟兼容性关系不大,先要确保ethercat报文是否有正常收发

IgH详解二、主栈启动流程(二)

EtherCat技术研究:

要看你报文是否有超时,是否有丢包?用的实时网卡驱动吗?需要你根据自己环境去查

IgH详解十二、IgH实现使用ENI文件配置从站(二)

weixin_50007256:

大佬,我偶然会出现伺服和io的从站突然重启后扫描不上来的情况,重启前还是能扫描上来的,是因为兼容性的问题么。

IgH详解二、主栈启动流程(二)

weixin_50007256:

大佬,从站成功切到op之后,为了检测从站是否会断开,我判断ec_slave_config_state_t.online的值,出现有时候online为false的现象,但是从站状态一直是op,这是什么原因呢

IgH详解十、EtherCAT DC(4)主站做参考时钟和从站作参考时钟性能对比

records111:

大神你好,我想请教下你用从站作为参考时钟的话,主站的时钟是怎么被同步的呢,可以详细聊聊吗

大家在看

下单功能需要进行哪些测试?

379

CocoaPod 如何创建私有库

376

#微信小程序(轮播图以及开发方法)

25

【Anaconda环境报错】‘activate.bat‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件

Java面试题:深度解析设计模式、内存模型、多线程与并发框架有关面试题的综合应用,必知必会Java知识点梳理

496

最新文章

倍福控制器搭建IgH环境

全志A40i PRREMPT-RT Linux平台搭建IgH环境

ubuntu 16.04 阿里软件源

2023年11篇

2022年18篇

2021年12篇

2019年3篇

2018年1篇

2015年2篇

2013年58篇

目录

目录

分类专栏

Linuxcnc-ethercat

1篇

IgH详解

23篇

arm_Linux

1篇

TCP/IP

1篇

S3C2440

18篇

EtherCAT

13篇

目录

评论 9

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

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

余额充值

Ethercat状态机的实现教程 - 知乎

Ethercat状态机的实现教程 - 知乎首发于IT技术专栏切换模式写文章登录/注册Ethercat状态机的实现教程iiidd777IT技术分享及教程在主站内核代码执行过程中,总会出现各种情况,比如有些从站被人为的拔下或者从站之间的连接的网线断掉,为了保障主站可以正常的运行,主站必须时刻的检测网络拓扑的状态,因此需要运行一个主站状态机来完成上面提到的工作,其执行在主站状态的上下文中,其有如下几个阶段: Bus monitoring :监视总线的拓扑结构,假如拓扑改变,总线将重新扫描。 Bus monitoring:监控从站的应用层状态,假如检测的从站状态非理想状态,将会进行重新配置。 Request handling:应用层或者外部源请求处理。比如像SII或者SDO访问等要求需要主站异步处理。主站状态机就是在上面三个状态之间不断的转换,具体主要实现流程图如下:上图中只是列出比较重要的部分做出了介绍,主站驱动被加载之后就会不断执行此状态机。期间当检查到从站状态出错的时,还会启动从站状态检测状态机。同时,在执行过程中也会不断的检测是否出现错误及其是否需要退出本状态机。1.主站状态机主状态机在主线程的上下文中执行。 图5.2显示了其过渡图。 其目的是:总线监控:监视总线拓扑。如果更改,则对总线进行(重新)扫描。从站配置:监视从站的应用程序层状态。 如果从站未处于应有的状态,则将(重新)配置该从站。要求处理:处理请求(来自应用程序或来自外部源)。 请求是主机必须异步处理的工作,例如SII访问,SDO访问或类似操作。3.2从站扫描状态机主站为了方便的获取从站的信息,建立了从站扫描状态机,其主要有如下几个 步骤: Node Address :为从站设置的节点地址,有了节点地址才可以进行下面的工作。 AL State :读取应用层的状态 Base Information:从内存中读取一写基础信息(比如从站中FMMU的个数)。 Data Link :从物理端口读取一些信息。 SII Size SII:内容的大小,以便为SII申请映像内存。 SII Data :从主站的SII映射内存中读取的SII数据。 PREOP :假如其支持COE,PREOP 被设置成使用状态变化的FSM使能邮箱通信并通过COE进行PDO的读取。 PDOs :通过COE读取PDOs,通过PDO读取FSM,假如读取成功,SII中的PDO信息将被重写。具体的执行流程图如下: 上图可以看出从站扫描状态机就是不断的读取从站的信息,以保障主站可以正常的工作。2.从机扫描状态机从机扫描状态机(如图5.3所示)引导着读取所需从机信息的过程。扫描过程包括以下步骤:节点地址:节点地址是为从站设置的,因此可以为随后的所有操作指定节点地址。AL状态:读取初始应用程序层状态。基本信息:基本信息(如支持的FMMU的数量)是从较低的物理内存中读取的。数据链接:读取有关物理端口的信息。SII大小:确定SII内容的大小以分配SII图像存储器。SII数据:SII内容将读入主站映像。PREOP如果从站支持CoE,则使用状态更改FSM(请参阅第5.6节)将其设置为PREOP状态,以启用邮箱通信并通过CoE读取PDO配置。PDO使用PDO读取FSM,通过CoE(如果支持)读取PDO(请参见5.8节)。 如果成功,则将覆盖来自SII的PDO信息(如果有)。3.从站配置状态机从机配置状态机(如图5.4所示)引导了配置从机并将其置于特定应用程序层状态的过程。初始化(INIT):状态更改FSM用于使从设备进入INIT状态。FMMU清除(FMMU Clearing):为避免从站对任何过程数据作出反应,将清除FMMU配置。 如果从站不支持FMMU,则跳过此状态。 如果INIT是请求的状态,则状态机完成。邮箱同步管理器配置(Mailbox Sync Manager Configuration):如果从属服务器支持邮箱通信,则将配置邮箱同步管理器。否则,将跳过此状态。预备(PREOP):状态更改FSM用于使从设备进入PREOP状态。 如果这是请求的状态,则状态机完成。SDO配置(SDO Configuration):如果附加了从站配置(请参阅第3.1节),并且应用程序提供了任何SDO配置,则将这些配置发送到从站。PDO配置(PDO Configuration):执行PDO配置状态机以应用所有必需的PDO配置。PDO Sync Manager配置:如果存在任何PDO同步管理器,则将对其进行配置。FMMU配置(FMMU Configuration):如果应用程序提供了FMMU配置(如果应用程序注册了PDO条目),则将应用它们。安全运行状态(SAFEOP):状态更改FSM用于使从设备进入SAFEOP状态。 如果这是请求的状态,则状态机完成。OP:状态更改FSM用于使从站进入OP状态。 如果这是请求的状态,则状态机完成。4.状态改变状态机状态更改状态机(如图5.5所示)引导了更改从站的应用程序层状态的过程。 这实现了状态和转换中所述。Start:通过“ AL控制请求”寄存器请求新的应用层状态Check for Response :一些从站需要一些时间来响应AL状态更改命令,并且一段时间不响应。对于这种情况,将再次发出命令,直到确认为止。Check AL Status:如果确认了AL状态更改数据报,则必须读出“ AL控制响应”寄存器,直到从机更改AL状态为止。AL Status Code:如果从站拒绝了状态更改命令,则可以从“ AL状态更改”寄存器中的“ AL状态代码”字段中读取原因Acknowledge State:如果状态更改不成功,则主机必须通过再次写入“ AL控制请求”寄存器来了解旧状态。Check Acknowledge:发送确认命令后,它必须再次读出“ AL控制响应”寄存器。“开始确认”状态是状态机的快捷方式,适用于以下情况:主机希望确认未请求的自发AL状态更改。5. SII状态机SII状态机(如图5.6所示)实现了通过Slave Information Interface中描述的Slave Information Interface读取或写入SII数据的过程。这是状态机的读取部分的工作方式:开始读取(Start Reading):读取请求和请求的字地址被写入SII属性。检查读取命令(Check Read Command):如果已确认SII读取请求命令,则将启动计时器。 发出一个数据报,该数据报读取状态和数据的SII属性。获取数据(Fetch Data):如果读取操作仍然很忙(通常将SII实现为EEPROM),则将再次读取状态。否则,数据将从数据报中复制。写入部分的工作原理几乎相似:开始写(Start Writing):将写请求,目标地址和数据字写入SII属性。检查写命令(Check Write Command):如果已确认SII写请求命令,则启动计时器。 发出一个数据报,该数据报从SII属性中读取写操作的状态。繁忙等待(Wait while Busy):如果写操作仍然很忙(由最小等待时间和忙标志的状态决定),则状态机将保持在此状态,以避免过早发出另一个写操作。6. PDO状态机PDO状态机是一组状态机,它们通过“对象访问”中描述的“ CoE通信区域”来读取或写入PDO分配和PDO映射。对于对象访问,使用基于EtherCAT的CANopen访问原语(请参见6.2节),因此从属服务器必须支持CoE邮箱协议。PDO读取FSM(PDO Reading FSM):该状态机(图5.7)旨在读取从站的完整PDO配置。它读取每个Sync Manager的PDO分配,并使用PDO Entry Reading FSM(图5.8)读取每个分配的PDO的映射。基本上,它会读取每个Sync Manager的PDO分配SDO的(0x1C1x)个元素,以确定为此同步管理器分配的PDO的数量,然后读取SDO的子索引以获取分配的PDO的索引。 读取PDO索引后,将执行PDO条目读取FSM,以读取PDO映射的PDO条目。PDO条目读取FSM(PDO Entry Reading FSM):此状态机(图5.8)读取PDO的PDO映射(PDO条目)。它通过先读取子索引零(元素数量)来确定映射的PDO条目的数量,从而读取给定PDO的相应映射SDO(0x1600 – 0x17ff或0x1a00 – 0x1bff)。 之后,读取每个子索引以获得映射的PDO条目索引,子索引和位大小。7. CANopen over EtherCAT (CoE)EtherCAT上的CANopen协议用于在应用程序级别配置从站并交换数据对象。SDO Download State Machine:应用SDO配置的最佳时间是在从站的PREOP状态期间,因为已经可以进行邮箱通信,并且从站的应用将从在后续SAFEOP状态下更新输入数据开始。 因此,SDO配置必须是从属配置状态机的一部分(请参阅第5.5节):它通过SDO下载状态机实现,该状态机在进入从属设备的SAFEOP状态之前执行。这样,可以确保每次重新配置从站时都应用SDO配置。SDO下载状态机的转换图如图6.2所示。START:CoE下载状态机的开始状态。 发送“ SDO下载正常请求”邮箱命令。→ REQUESTREQUEST:检查从站是否已收到CoE下载请求。 之后,发出邮箱检查命令并启动计时器。→ CHECKCHECK:如果没有邮箱数据可用,则检查计时器。•如果超时,则SDO下载将中止。→ ERROR•否则,将再次查询邮箱。→ CHECK如果邮箱包含新数据,则获取响应。→ RESPONSERESPONSE:如果无法获取邮箱响应,数据无效,接收到错误的协议或接收到“中止SDO传输请求”,则SDO下载将中止。→ ERROR如果收到“ SDO下载正常响应”确认,则说明SDO下载成功。→ ENDEND:SDO下载成功。ERROR:SDO下载由于错误而中止。发布于 2021-05-28 14:58EDA技术与FPGA工程实例开发(书籍)开放式 IEC 61131 控制系统设计(书籍)以太网(Ethernet)​赞同 2​​添加评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录IT技术专栏IT技术分享

【原创】EtherCAT主站IgH解析(一)--主站初始化、状态机与EtherCAT报文 - 沐多 - 博客园

【原创】EtherCAT主站IgH解析(一)--主站初始化、状态机与EtherCAT报文 - 沐多 - 博客园

会员

周边

新闻

博问

AI培训

云市场

所有博客

当前博客

我的博客

我的园子

账号设置

简洁模式 ...

退出登录

注册

登录

沐多

博客园

首页

新随笔

联系

管理

订阅

【原创】EtherCAT主站IgH解析(一)--主站初始化、状态机与EtherCAT报文

目录0 获取源码1 启动脚本1.1 start1.2 stop2 主站实例创建2.1 Master Phases2.2 数据报与状态机数据报状态机2.3 master状态机及数据报初始化2.4 初始化EtherCAT device2.5 设置IDLE 线程的发送间隔:2.6 初始化字符设备3 网卡4 IDLE阶段内核线程4.1 数据报发送4.2 数据报接收

版权声明:本文为本文为博主原创文章,转载请注明出处。如有问题,欢迎指正。博客地址:https://www.cnblogs.com/wsg1100/

0 获取源码

IgH EtherCAT Master现已迁移到gitlab:https://gitlab.com/etherlab.org/ethercat,可以使用以下命令克隆存储库:

git clone https://gitlab.com/etherlab.org/ethercat.git

git checkout stable-1.5

上面的是igh官方的仓库,下面是其他Ethercat主站:

https://github.com/ribalda/ethercat 基于官方,功能更为全面的igh etehrcat主站。

https://github.com/leducp/KickCAT 一个C++写的全新etehrcat主站,目前功能不完善。

https://github.com/ethercrab-rs/ethercrab 一个纯rust语言编写的全新etehrcat主站,目前功能不完善。

本文主要讲igh。

1 启动脚本

igh通过脚本来启动,可以是systemd、init.d或sysconfig。分别位于源码script目录下:

对于systemd方式,编译时由ethercat.service.in文件生成ethercat.service。ethercat.service中指定了执行文件为ethercatctl.ethercatctl文件由``ethercatctl.in`生成。init.d和sysconfig类似,都是生成一个可执行脚本,且脚本完成的工作一致,主要完成加载主站模块、网卡驱动、给主站内核模块传递参数、卸载模块等操作。

ethercat.conf共同的配置文件,配置主站使用的网卡、驱动等信息。下面看脚本start和stop所做的工作。

1.1 start

加载ec_master.ko

模块参数:

main_devices :主网卡MAC地址,多个main_devices 表示创建多个主站,MAC参数个数master_count。

backup_devices :备用网卡MAC地址,多个backup_devices 表示创建多个主站,MAC参数个数backup_count。

debug_level :调试level,调试信息输出级别。

eoe_interfaces eoe接口,eoe_count表示eoe_interfaces 的个数。

eoe_autocreate 是否自动创建eoe handler。

pcap_size Pcap buffer size。

遍历配置文件中/etc/sysconfig/ethercat的环境变量DEVICE_MODULES,位于ethercat.conf中。

在每个DEVICE_MODULES前添加前缀ec_替换,如DEVICE_MODULES为igb的话,添加前缀后为ec_igb。

modinfo检查该模块是否存在。

对于非generic和rtdm的驱动,需要先将网卡与当前驱动unbind,unbind后的网卡才能被新驱动接管。

加载该驱动。

start加载了两个内核模块,ec_master.ko和网卡驱动ec_xxx.ko,ec_master先根据内核参数(网卡MAC)来创建主站实例,此时主站处于Orphaned phase。后续加载网卡驱动ec_xxx.ko,执行网卡驱动probe,根据MAC地址将网卡与主站实例匹配,此时主站得到操作的网卡设备,进入Idle phase。详细过程见后文。

1.2 stop

卸载内核模块ec_master.ko和网卡驱动ec_xxx.ko。

遍历配置文件中的环境变量DEVICE_MODULES。

在每个DEVICE_MODULES前添加前缀‘ec_’替换。

lsmod检查该模块是否被加载。

卸载模块。

后文“主站”和”master“均表示主站或主站实例对象,slave和从站表示从站或从站对象,中英混用,不刻意区分。

2 主站实例创建

一个使用IgH的控制器中可以有多个EtherCAT主站,每个主站可以绑定了一个主网卡和一个备用网卡,一般备用网卡不使用,线缆冗余功能时才使用备用网卡(文中假设只有一个主网卡)。

start过程中执行insmod ec_master.ko,这个时候,先调用的就是 module_init 调用的初始化函数ec_init_module()。先根据参数main_devices 的个数master_count,每个master需要一个设备节点来与应用程序交互,所以master_count决定需要创建多少个matser和多少个字符设备;

这里先分配注册master_count个字符设备的主次设备号device_number和名称,这样每个master对应的设备在文件系统中就是/dev/EtherCAT0、/dev/EtherCAT1...(Linux下)。

if (master_count) {

if (alloc_chrdev_region(&device_number,

0, master_count, "EtherCAT")) {

EC_ERR("Failed to obtain device number(s)!\n");

...

}

}

class = class_create(THIS_MODULE, "EtherCAT");

解析模块参数得到MAC地址,保存到数组macs中。

for (i = 0; i < master_count; i++) {

ret = ec_mac_parse(macs[i][0], main_devices[i], 0);

if (i < backup_count) {

ret = ec_mac_parse(macs[i][1], backup_devices[i], 1);

}

}

分配master_count个主站对象的内存,调用ec_master_init()初始化这些实例。

if (master_count) {

if (!(masters = kmalloc(sizeof(ec_master_t) * master_count,

GFP_KERNEL))) {

...

}

}

for (i = 0; i < master_count; i++) {

ret = ec_master_init(&masters[i], i, macs[i][0], macs[i][1],

device_number, class, debug_level);

...

}

2.1 Master Phases

igh中,状态机是其核心思想,一切操作基于状态机来执行,对创建的每个EtherCAT主站实例都需要经过如下阶段转换(见图2.3),主站各阶段操作如下:

Orphaned phase 此时主站实例已经分配初始化,正在等待以太网设备连接,即还没有与网卡驱动联系起来,此时无法使用总线通讯。

Idle phase 当主站与网卡绑定后,Idle线程ec_master_idle_thread开始运行,主站处于IDLE状态,ec_master_idle_thread主要完成从站拓扑扫描、配置站点地址等工作。该阶段命令行工具能够访问总线,但无法进行过程数据交换,因为还缺少总线配置。

Operation phase 应用程序请求主站提供总线配置并激活主站后,主站处于operation状态,ec_master_idle_thread停止运行,内核线程变为ec_master_operation_thread,之后应用可周期交换过程数据。

具体的后面会说到。

2.2 数据报与状态机

继续看master初始化代码ec_master_init前,我们先了解数据报与状态机的关系,这对后续理解很有帮助。

数据报

EtherCAT是以以太网为基础的现场总线系统,EtherCAT使用标准的IEEE802.3以太网帧,在主站一侧使用标准的以太网控制器,不需要额外的硬件。并在以太网帧头使用以太网类型0x88A4来和其他以太网帧相区别(EtherCAT数据还可以通过UDP/IP 来传输,本文已忽略),标准的IEEE802.3以太网帧中数据部分为EtherCAT的数据,标准的IEEE802.3以太网帧与EtherCAT数据帧关系如下:

EtherCAT数据位于以太网帧数据区,EtherCAT数据由EtherCAT头和若干EtherCAT数据报文组成。其中EtheRCAT头中记录了EtherCAT数据报的长度、和类型,类型为1表示与从站通讯。EtherCAT数据报文内包含多个子报文,每个子报文又由子报文头、数据和WKC域组成。子报文结构含义如下。

整个EtherCAT网络形成一个环状,主站与从站之间是通过EtherCAT数据报来交互,一个EtherCAT报文从网卡TX发出后,从站ESC芯片EtherCAT报文进行交换数据,最后该报文回到主站。网上有个经典的EtherCAT动态图(刷新后动态图重新播放).

认识EtherCAT数据帧结构后,我们看IgH内是如何表示一个EtherCAT数据报文的?EtherCAT数据报文在igh中用对象ec_datagram_t表示。

typedef struct {

struct list_head queue; /**< 发送和接收时插入主站帧队列. */

struct list_head sent; /**< 已发送数据报的主站列表项. */

ec_device_index_t device_index; /**< 发送/接收数据报的设备。 */

ec_datagram_type_t type; /**< 帧类型 (APRD, BWR, etc.). */

uint8_t address[EC_ADDR_LEN]; /**< Recipient address. */

uint8_t *data; /**< 数据. */

ec_origin_t data_origin; /**< 数据保存的地方. */

size_t mem_size; /**< Datagram \a data memory size. */

size_t data_size; /**< Size of the data in \a data. */

uint8_t index; /**< Index (set by master). */

uint16_t working_counter; /**< 工作计数. */

ec_datagram_state_t state; /**数据帧状态 */

#ifdef EC_HAVE_CYCLES

cycles_t cycles_sent; /**< Time, 数据报何时发送. */

#endif

unsigned long jiffies_sent; /**< Jiffies,数据报何时发送. */

#ifdef EC_HAVE_CYCLES

cycles_t cycles_received; /**< Time, 何时被接收. */

#endif

unsigned long jiffies_received; /**< Jiffies,何时被接收. */

unsigned int skip_count; /**< 尚未收到的重新排队数. */

unsigned long stats_output_jiffies; /**< Last statistics output. */

char name[EC_DATAGRAM_NAME_SIZE]; /**< Description of the datagram. */

} ec_datagram_t;

可以看到上面子报文中各字段大都在ec_datagram_t中有表示了,不过多介绍,其它几个成员简单介绍下,

device_index表示这个数据报是属于哪个网卡设备发送接收的,IgH中一个master实例可以使用多个多个网卡设备来发送/接收EtherCAT数据帧,device_index就是表示master下的网络设备的。

data_origin表示每个master管理着多个空闲的ec_datagram_t,这些ec_datagram_t分成了三类,给不同的状态机使用,具体的后文马上会细说,data_origin就是表示这个ec_datagram_t是属于哪类的。

index表示该数据报是EtherCAT数据区的第index个子报文,在master发送一个完整的EtherCAT数据报时,组装以太网数据帧时使用。

data这个指向子报文的数据内存区,由于每个子报文交换数据不同,其大小不同,所以数据区为动态分配,mem_size表示的就是分配的大小。

data_size表示数据报操作的数据大小,比如该数据报用于读从站的某个寄存器,该值就是这个寄存器的大小。

jiffies_sent、jiffies_received、cycles_sent、cycles_received使用不同时钟方式是记录数据帧发送接收时间的,用于统计。

ec_datagram_state_t表示数据报的状态,每个数据报(ec_datagram_t)也是基于状态来处理,有6种状态:

EC_DATAGRAM_INIT :数据报已经初始化

EC_DATAGRAM_QUEUED :插入发送队列准备发送

EC_DATAGRAM_SENT :已经发送(还存在队列中)

EC_DATAGRAM_RECEIVED:该数据报已接收,并从发送队列删除

EC_DATAGRAM_TIMED_OUT :该数据报发送后,接收超时,从发送队列删除

EC_DATAGRAM_ERROR :发送和接收过程中出错(从队列删除),校验错误、不匹配等。

M位在master发送时组装EtherCAT数据帧时确定,接收时也根据该位判断后面还有没有子报文。

数据报对象初始化由函数ec_datagram_init()完成:

void ec_datagram_init(ec_datagram_t *datagram /**< EtherCAT datagram. */)

{

INIT_LIST_HEAD(&datagram->queue); // mark as unqueued

datagram->device_index = EC_DEVICE_MAIN; /*默认主设备使用*/

datagram->type = EC_DATAGRAM_NONE; /*数据报类型*/

memset(datagram->address, 0x00, EC_ADDR_LEN); /*数据报地址清零*/

datagram->data = NULL;

datagram->data_origin = EC_ORIG_INTERNAL; /*默认内部数据*/

datagram->mem_size = 0;

datagram->data_size = 0;

datagram->index = 0x00;

datagram->working_counter = 0x0000;

datagram->state = EC_DATAGRAM_INIT; /*初始状态*/

#ifdef EC_HAVE_CYCLES

datagram->cycles_sent = 0;

#endif

datagram->jiffies_sent = 0;

#ifdef EC_HAVE_CYCLES

datagram->cycles_received = 0;

#endif

datagram->jiffies_received = 0;

datagram->skip_count = 0;

datagram->stats_output_jiffies = 0;

memset(datagram->name, 0x00, EC_DATAGRAM_NAME_SIZE);

}

状态机

说完IgH数据报对象,我们来看有限状态机(fsm),有限状态机(fsm):表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。说起状态机,相信大家大学时候都有用过吧,不管是单片机、FPGA,用它写按键、菜单、协议处理、控制器什么的爽的一塌糊涂。其实我们使用的计算机就是本就是基于状态机作为计算模型的,它对数字系统的设计具有十分重要的作用。另外Linux TCP协议也是由状态机实现。

同样igh主站内部机制使用有限状态机来实现,IgH内状态机的基本表示如下:

struct ec_fsm_xxx {

ec_datagram_t *datagram; /**< 主站状态机使用的数据报对象 */

void (*state)(ec_fsm_master_t *); /**< 状态函数 */

....

};

IgH EtherCAT协议栈几乎所有功能通过状态机实现,每个状态机管理着某个对象的状态、功能实现的状态装换,而这些状态转换是基于EtherCAT数据报来进行的,如状态机A0状态函数填充datagram,经EtherCAT数据帧发出后,经过slave ESC处理,回到网卡接收端接收后,交给状态机A1状态的下一个状态函数解析处理。所以每个状态机内都包含有指向该状态机操作的数据报对象指针datagram和状态执行的状态函数void (*state)(ec_fsm_master_t *);

总结一句话:状态机是根据数据报的状态来执行,每个状态机都需要操作一个数据报对象。

现在知道了状态机与数据报的关系,下面介绍IgH EtherCAT协议栈中有哪些状态机,及状态机使用的数据报对象是从哪里分配如何管理的。

master状态机

前面说到主站具有的三个阶段,当主站与网卡设备attach后进入Idle phase,处于Idle phase后,开始执行主站状态机。

主站状态机包含1个主状态机和许多子状态机,matser状态机主要目的是:

Bus monitoring 监控EtherCAT总线拓扑结构,如果发生改变,则重新扫描。

Slave con fguration 监视从站的应用程序层状态。如果从站未处于其应有的状态,则从站将被(重新)配置

Request handling 请求处理(源自应用程序或外部来源),主站任务应该处理异步请求,例如:SII访问,SDO访问或类似。

主状态机ec_fsm_master_t结构如下:

struct ec_fsm_master {

ec_master_t *master; /**< master the FSM runs on */

ec_datagram_t *datagram; /**< 主站状态机使用的数据报对象 */

unsigned int retries; /**< retries on datagram timeout. */

void (*state)(ec_fsm_master_t *); /**< master state function */

ec_device_index_t dev_idx; /**< Current device index (for scanning etc.).

*/

int idle; /**< state machine is in idle phase */

unsigned long scan_jiffies; /**< beginning of slave scanning */

uint8_t link_state[EC_MAX_NUM_DEVICES]; /**< Last link state for every

device. */

unsigned int slaves_responding[EC_MAX_NUM_DEVICES]; /**<每个设备的响应从站数。*/

unsigned int rescan_required; /**< A bus rescan is required. */

ec_slave_state_t slave_states[EC_MAX_NUM_DEVICES]; /**< AL states of

responding slaves for

every device. */

ec_slave_t *slave; /**< current slave */

ec_sii_write_request_t *sii_request; /**< SII write request */

off_t sii_index; /**< index to SII write request data */

ec_sdo_request_t *sdo_request; /**< SDO request to process. */

ec_fsm_coe_t fsm_coe; /**< CoE state machine */

ec_fsm_soe_t fsm_soe; /**< SoE state machine */

ec_fsm_pdo_t fsm_pdo; /**< PDO configuration state machine. */

ec_fsm_change_t fsm_change; /**< State change state machine */

ec_fsm_slave_config_t fsm_slave_config; /**< slave state machine */

ec_fsm_slave_scan_t fsm_slave_scan; /**< slave state machine */

ec_fsm_sii_t fsm_sii; /**< SII state machine */

};

可以看到,主站状态机结构下还有很多子状态机,想象一下如果主站的所有功能通过一个状态机来完成,那么这个状态机的状态数量、各状态之间的联系会有多恐怖,复杂性级别将会提高到无法管理的水平。为此,IgH中,将EtherCAT主状态机的某些功能用子状态机完成。这有助于封装相关工作流,并且避免“状态爆炸”现象。这样当主站完成coe功能时,可以由子状态机fsm_coe去完成。具体各功能是如何通过状态机完成的,文章后面会介绍。

slave状态机

slave状态机管理着每个从站的状态,所以位于从站对象(ec_slave_t)内:

struct ec_slave

{

ec_master_t *master; /**< Master owning the slave. */

.....

ec_fsm_slave_t fsm; /**< Slave state machine. */

.....

};

struct ec_fsm_slave {

ec_slave_t *slave; /**< slave the FSM runs on */

struct list_head list; /**< Used for execution list. */

ec_dict_request_t int_dict_request; /**< Internal dictionary request. */

void (*state)(ec_fsm_slave_t *, ec_datagram_t *); /**< State function. */

ec_datagram_t *datagram; /**< Previous state datagram. */

ec_sdo_request_t *sdo_request; /**< SDO request to process. */

ec_reg_request_t *reg_request; /**< Register request to process. */

ec_foe_request_t *foe_request; /**< FoE request to process. */

off_t foe_index; /**< Index to FoE write request data. */

ec_soe_request_t *soe_request; /**< SoE request to process. */

ec_eoe_request_t *eoe_request; /**< EoE request to process. */

ec_mbg_request_t *mbg_request; /**< MBox Gateway request to process. */

ec_dict_request_t *dict_request; /**< Dictionary request to process. */

ec_fsm_coe_t fsm_coe; /**< CoE state machine. */

ec_fsm_foe_t fsm_foe; /**< FoE state machine. */

ec_fsm_soe_t fsm_soe; /**< SoE state machine. */

ec_fsm_eoe_t fsm_eoe; /**< EoE state machine. */

ec_fsm_mbg_t fsm_mbg; /**< MBox Gateway state machine. */

ec_fsm_pdo_t fsm_pdo; /**< PDO configuration state machine. */

ec_fsm_change_t fsm_change; /**< State change state machine */

ec_fsm_slave_scan_t fsm_slave_scan; /**< slave scan state machine */

ec_fsm_slave_config_t fsm_slave_config; /**< slave config state machine. */

};

slave状态机和master状态机类似,slave状态机内还包含许多子状态机。slave状态机主要目的是:

主站管理从站状态

主站与从站应用层(AL)通讯。比如具有EoE功能的从站,主站通过该从站下的子状态机fsm_eoe来管理主站与从站应用层的EOE通讯。

数据报对象的管理

上面简单介绍了IgH内的状态机,状态机输入输出的对象是datagram,fsm对象内只有数据报对象的指针,那fsm工作过程中的数据报对象从哪里分配?

由于每个循环周期都需要操作数据报对象,IgH为减少datagram的动态分配操作,提高主站性能,在master初始化的时候预分配了主站运行需要的所有datagram对象。在master实例我们可以看到下面的数据报对象:

struct ec_master {

...

ec_datagram_t fsm_datagram; /**< Datagram used for state machines. */

...

ec_datagram_t ref_sync_datagram; /**< Datagram used for synchronizing the

reference clock to the master clock.*/

ec_datagram_t sync_datagram; /**< Datagram used for DC drift

compensation. */

ec_datagram_t sync_mon_datagram; /**< Datagram used for DC synchronisation

monitoring. */

...

ec_datagram_t ext_datagram_ring[EC_EXT_RING_SIZE];

}

这些数据报对象都是已经分配内存的,但由于报文不同,报文操作的数据大小不同,所以datagram数据区大小随状态机的具体操作而变化,在具体使用时才分配数据区内存。

以上数据报对象给状态机使用,别忘了还有过程数据也需要数据报对象,所以IgH中数据报类型分为以下四类:

分为三类(非常重要):

数据报对象

用途

Datagram_pairs

过程数据报

fsm_datagram[]

Fsm_master及子状态机专用的数据报对象。

ext_datagram_ring[]

动态分配给fsm_slave及其子fsm。

ref_sync_datagram sync_datagram sync64_datagram sync_mon_datagram

应用专用数据报用于时钟同步。

其中fsm_datagram为master状态机及master下的子状态机执行过程中操作的对象。

ext_datagram_ring[]是一个环形队列,当fsm_slave从站状态机处于ready状态,可以开始处理与slave相关请求,如配置、扫描、SDO、PDO等,这时会从ext_datagram_ring[]中给该fsm_slave分配一个数据报,并运行fsm_slave状态机检查并处理请求。

应用专用数据报用于时钟同步,与时钟强相关,它们比较特殊,它们的数据区大小是恒定的,所以其数据区在主站初始化时就已分配内存,应用调用时直接填数据发送,避免linux的内存分配带来时钟的偏差。

数据报数据区(data)内存通过ec_datagram_prealloc()来分配.

int ec_datagram_prealloc(

ec_datagram_t *datagram, /**< EtherCAT datagram. */

size_t size /**< New payload size in bytes. */

)

{

if (datagram->data_origin == EC_ORIG_EXTERNAL

|| size <= datagram->mem_size)

return 0;

......

if (!(datagram->data = kmalloc(size, GFP_KERNEL))) {

......

}

datagram->mem_size = size;

return 0;

}

数据区的大小为一个以太网帧中单个Ethercat数据报的最大数据大小EC_MAX_DATA_SIZE。

/** Size of an EtherCAT frame header. */

#define EC_FRAME_HEADER_SIZE 2

/** Size of an EtherCAT datagram header. */

#define EC_DATAGRAM_HEADER_SIZE 10

/** Size of an EtherCAT datagram footer. */

#define EC_DATAGRAM_FOOTER_SIZE 2

/** Size of the EtherCAT address field. */

#define EC_ADDR_LEN 4

/** Resulting maximum data size of a single datagram in a frame. */

#define EC_MAX_DATA_SIZE (ETH_DATA_LEN - EC_FRAME_HEADER_SIZE \

- EC_DATAGRAM_HEADER_SIZE - EC_DATAGRAM_FOOTER_SIZE)

由于以太网帧的大小有限,因此数据报的最大大小受到限制,即以太网帧长度 1500 - ethercat头2byte- ethercat子数据报报头10字节-WKC 2字节,如图:

如果过程数据镜像的大小超过该限制,就必须发送多个帧,并且必须对映像进行分区以使用多个数据报。 Domain自动进行管理。

2.3 master状态机及数据报初始化

对状态机及数据报对象有初步认识后,我们回到ec_master.ko模块入口函数ec_init_module()主站实例初始化ec_master_init(),主要完成主站状态机初始化及数据报:

// init state machine datagram

ec_datagram_init(&master->fsm_datagram); /*初始化数据报对象*/

snprintf(master->fsm_datagram.name, EC_DATAGRAM_NAME_SIZE, "master-fsm");

ret = ec_datagram_prealloc(&master->fsm_datagram, EC_MAX_DATA_SIZE);

// create state machine object

ec_fsm_master_init(&master->fsm, master, &master->fsm_datagram); /*初始化master fsm*/

其中ec_fsm_master_init初始化master fsm和子状态机,并指定了master fsm使用的数据报对象fsm_datagram。

void ec_fsm_master_init(

ec_fsm_master_t *fsm, /**< Master state machine. */

ec_master_t *master, /**< EtherCAT master. */

ec_datagram_t *datagram /**< Datagram object to use. */

)

{

fsm->master = master;

fsm->datagram = datagram;

ec_fsm_master_reset(fsm);

// init sub-state-machines

ec_fsm_coe_init(&fsm->fsm_coe);

ec_fsm_soe_init(&fsm->fsm_soe);

ec_fsm_pdo_init(&fsm->fsm_pdo, &fsm->fsm_coe);

ec_fsm_change_init(&fsm->fsm_change, fsm->datagram);

ec_fsm_slave_config_init(&fsm->fsm_slave_config, fsm->datagram,

&fsm->fsm_change, &fsm->fsm_coe, &fsm->fsm_soe, &fsm->fsm_pdo);

ec_fsm_slave_scan_init(&fsm->fsm_slave_scan, fsm->datagram,

&fsm->fsm_slave_config, &fsm->fsm_pdo);

ec_fsm_sii_init(&fsm->fsm_sii, fsm->datagram);

}

初始化外部数据报队列

外部数据报队列用于从站状态机,每个状态机执行期间使用的数据报从该区域分配,下面是初始化ext_datagram_ring中每个结构:

for (i = 0; i < EC_EXT_RING_SIZE; i++) {

ec_datagram_t *datagram = &master->ext_datagram_ring[i];

ec_datagram_init(datagram);

snprintf(datagram->name, EC_DATAGRAM_NAME_SIZE, "ext-%u", i);

}

非应用数据报队列链表,如EOE数据报会插入该队列后发送。

INIT_LIST_HEAD(&master->ext_datagram_queue);

同样初始化几个时钟相关数据报对象,它们功能固定,所以数据区大小固定,就不贴代码了,比如sync_mon_datagram,它的作用是用于同步监控,获取从站系统时间差,所以是一个BRD数据报,在此直接将数据报操作偏移地址初始化,使用时能快速填充发送。

ec_datagram_init(&master->sync_mon_datagram);

......

ret = ec_datagram_brd(&master->sync_mon_datagram, 0x092c, 4);

地址

名称

描述

复位值

0x092c~0x092F

0~30

系统时间差

本地系统时间副本与参考时钟系统时间值之差

0

31

符号

0:本地系统时间≥参考时钟时间1:本地系统时间<参考时钟时间

0

另外比较重要的是将使用的网卡MAC地址放到macs[]中,在网卡驱动probe过程中根据MAC来匹配主站使用哪个网卡。

for (dev_idx = EC_DEVICE_MAIN; dev_idx < EC_MAX_NUM_DEVICES; dev_idx++) {

master->macs[dev_idx] = NULL;

}

master->macs[EC_DEVICE_MAIN] = main_mac;

2.4 初始化EtherCAT device

master协议栈主要完成EtherCAT数据报的解析和组装,然后需要再添加EtherNet报头和FCS组成一个完整的以太网帧,最后通过网卡设备发送出去。为与以太网设备驱动层解耦,igh使用ec_device_t来封装底层以太网设备,一般来说每个master只有一个ec_device_t,这个编译时配置决定,若启用线缆冗余功能,可指定多个网卡设备:

struct ec_device

{

ec_master_t *master; /**< EtherCAT master */

struct net_device *dev; /**< 使用的网络设备 */

ec_pollfunc_t poll; /**< pointer to the device's poll function */

struct module *module; /**< pointer to the device's owning module */

uint8_t open; /**< true, if the net_device has been opened */

uint8_t link_state; /**< device link state */

struct sk_buff *tx_skb[EC_TX_RING_SIZE]; /**< transmit skb ring */

unsigned int tx_ring_index; /**< last ring entry used to transmit */

#ifdef EC_HAVE_CYCLES

cycles_t cycles_poll; /**< cycles of last poll */

#endif

#ifdef EC_DEBUG_RING

struct timeval timeval_poll;

#endif

unsigned long jiffies_poll; /**< jiffies of last poll */

// Frame statistics

u64 tx_count; /**< 发送的帧数 */

u64 last_tx_count; /**<上次统计周期发送的帧数。 */

u64 rx_count; /**< 接收的帧数 */

u64 last_rx_count; /**< 上一个统计周期收到的帧数。 */

u64 tx_bytes; /**< 发送的字节数 */

u64 last_tx_bytes; /**< 上一个统计周期发送的字节数。 */

u64 rx_bytes; /**< Number of bytes received. */

u64 last_rx_bytes; /**< Number of bytes received of last statistics cycle.

*/

u64 tx_errors; /**< Number of transmit errors. */

s32 tx_frame_rates[EC_RATE_COUNT]; /**< Transmit rates in frames/s for

different statistics cycle periods.

*/

s32 rx_frame_rates[EC_RATE_COUNT]; /**< Receive rates in frames/s for

different statistics cycle periods.

*/

s32 tx_byte_rates[EC_RATE_COUNT]; /**< Transmit rates in byte/s for

different statistics cycle periods. */

s32 rx_byte_rates[EC_RATE_COUNT]; /**< Receive rates in byte/s for

different statistics cycle periods. */

......

};

成员*master表示改对象属于哪个master,*dev指向使用的以太网设备net_device,poll该网络设备poll函数,tx_skb[]以太网帧发送缓冲区队列,需要发送的以太网帧会先放到该队里,tx_ring_index管理tx_skb[],以及一些网络统计变量,下面初始化ec_device_t对象:

/*\master\master.c*/

for (dev_idx = EC_DEVICE_MAIN; dev_idx < ec_master_num_devices(master);

dev_idx++) {

ret = ec_device_init(&master->devices[dev_idx], master);

if (ret < 0) {

goto out_clear_devices;

}

}

/*\master\device.c*/

int ec_device_init(

ec_device_t *device, /**< EtherCAT device */

ec_master_t *master /**< master owning the device */

)

{

int ret;

unsigned int i;

struct ethhdr *eth;

....

device->master = master;

device->dev = NULL;

device->poll = NULL;

device->module = NULL;

device->open = 0;

device->link_state = 0;

for (i = 0; i < EC_TX_RING_SIZE; i++) {

device->tx_skb[i] = NULL;

}

......

ec_device_clear_stats(device);

......

for (i = 0; i < EC_TX_RING_SIZE; i++) {

if (!(device->tx_skb[i] = dev_alloc_skb(ETH_FRAME_LEN))) {

......

}

// add Ethernet-II-header

skb_reserve(device->tx_skb[i], ETH_HLEN);

eth = (struct ethhdr *) skb_push(device->tx_skb[i], ETH_HLEN);

eth->h_proto = htons(0x88A4);

memset(eth->h_dest, 0xFF, ETH_ALEN);

}

.....

}

主要关注分配以太网帧发送队列内存tx_skb[],并填充Ethernet报头中的以太网类型字段为0x88A4,目标MAC地址0xFFFFFFFF FFFF,对于源MAC地址、sk_buff所属网络设备、ec_device_t对象使用的网络设备net_device,将在网卡驱动初始化与master建立联系过程中设置。

2.5 设置IDLE 线程的发送间隔:

ec_master_set_send_interval(master, 1000000 / HZ);

根据网卡速率计算:

void ec_master_set_send_interval(

ec_master_t *master, /**< EtherCAT master */

unsigned int send_interval /**< Send interval */

)

{

master->send_interval = send_interval; //发送间隔 us

master->max_queue_size =

(send_interval * 1000) / EC_BYTE_TRANSMISSION_TIME_NS;

master->max_queue_size -= master->max_queue_size / 10;

}

100Mbps网卡发送一字节数据需要的时间EC_BYTE_TRANSMISSION_TIME_NS: 1/(100 MBit/s / 8 bit/byte) = 80 ns/byte.

2.6 初始化字符设备

由于主站位于内核空间,用户空间应用与主站交互通过字符设备来交互;

创建普通字符设备,给普通linux应用和Ethercat tool使用。若使用xenomai或RTAI,则再创建实时字符设备,提供给实时应用使用。

......

master->class_device = device_create(class, NULL,

MKDEV(MAJOR(device_number), master->index), NULL,

"EtherCAT%u", master->index);

......

#ifdef EC_RTDM

// init RTDM device

ret = ec_rtdm_dev_init(&master->rtdm_dev, master);

...

#endif

到这里明白了IgH中的状态机与数据报之间的关系,主站对象也创建好了,但是主站还没有网卡设备与之关联,主站也还没有工作,下面简单看一下ecdev_offer流程。

关于网卡驱动代码详细解析推荐这两篇文章:

Monitoring and Tuning the Linux Networking Stack: Sending Data

Monitoring and Tuning the Linux Networking Stack: Receiving Data

3 网卡

网卡probe

static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)

{

......

adapter->ecdev = ecdev_offer(netdev, ec_poll, THIS_MODULE);

if (adapter->ecdev) { /*注册打开ec_net设备*/

err = ecdev_open(adapter->ecdev);

.....

adapter->ec_watchdog_jiffies = jiffies;

} else { /*注册普通网络设备*/

......

err = register_netdev(netdev);

......

}

......

}

给主站提供网络设备:ecdev_offer

根据MAC地址找到master下的ec_device_t对象

device->dev = net_dev;

device->poll = poll;

device->module = module;

上面我们只设置了ec_device_t->tx_skb[]中sk_buff的以太网类型和目的地址,现在继续填充源MAC地址为网卡的MAC地址、sk_buff所属的net_device:

for (i = 0; i < EC_TX_RING_SIZE; i++) {

device->tx_skb[i]->dev = net_dev;

eth = (struct ethhdr *) (device->tx_skb[i]->data);

memcpy(eth->h_source, net_dev->dev_addr, ETH_ALEN);

}

调用网络设备接口打开网络设备

int ec_device_open(

ec_device_t *device /**< EtherCAT device */

)

{

int ret;

.....

ret = device->dev->open(device->dev);

if (!ret)

device->open = 1;

....

return ret;

}

当master下的所有的网络设备都open后,master从ORPHANED转到IDLE阶段

int ec_master_enter_idle_phase(

ec_master_t *master /**< EtherCAT master */

)

{

int ret;

ec_device_index_t dev_idx;

......

master->send_cb = ec_master_internal_send_cb;

master->receive_cb = ec_master_internal_receive_cb;

master->cb_data = master;

master->phase = EC_IDLE; /*更新master状态*/

// reset number of responding slaves to trigger scanning

for (dev_idx = EC_DEVICE_MAIN; dev_idx < ec_master_num_devices(master);

dev_idx++) {

master->fsm.slaves_responding[dev_idx] = 0;

}

ret = ec_master_nrthread_start(master, ec_master_idle_thread,

"EtherCAT-IDLE");

....

return ret;

}

其中主要设置master发送和接收回调函数,应用通过发送和接收数据时,将通过这两接口直接发送和接收。创建master idle线程ec_master_idle_thread。

4 IDLE阶段内核线程

综上,状态机操作对象是datagram,datagram发送出去后回到主站交给状态机的下一个状态处理,所以主站需要循环地执行状态机、发送EtherCAT数据帧、接收EtherCAT数据帧、执行状态机、发送EtherCAT数据帧、……来驱动状态机运行,这个循环由内核线程来完成。

当主站与网卡绑定后,应用还没有请求主站,主站处于IDLE状态,这时循环由内核线程ec_master_idle_thread来完成,主要完成从站拓扑扫描、配置站点地址等工作。

static int ec_master_idle_thread(void *priv_data)

{

ec_master_t *master = (ec_master_t *) priv_data;

int fsm_exec;

#ifdef EC_USE_HRTIMER

size_t sent_bytes;

#endif

// send interval in IDLE phase

ec_master_set_send_interval(master, 250000 / HZ);

while (!kthread_should_stop()) {

// receive

ecrt_master_receive(master); /*接收上个循环发送的数据帧*/

......

// execute master & slave state machines

......

fsm_exec = ec_fsm_master_exec(&master->fsm); /*执行master状态机*/

ec_master_exec_slave_fsms(master); /*为从站状态机分配datagram,并执行从站状态机*/

......

if (fsm_exec) {

ec_master_queue_datagram(master, &master->fsm_datagram); /*将master状态机处理的datagram插入发送链表*/

}

// send

ecrt_master_send(master); /*组装以太网帧并调用网卡发送*/

sent_bytes = master->devices[EC_DEVICE_MAIN].tx_skb[

master->devices[EC_DEVICE_MAIN].tx_ring_index]->len;

up(&master->io_sem);

if (ec_fsm_master_idle(&master->fsm)) {

ec_master_nanosleep(master->send_interval * 1000);

set_current_state(TASK_INTERRUPTIBLE);

schedule_timeout(1);

} else {

ec_master_nanosleep(sent_bytes * EC_BYTE_TRANSMISSION_TIME_NS);

}

}

EC_MASTER_DBG(master, 1, "Master IDLE thread exiting...\n");

return 0;

}

整个过程简单概述如下。

4.1 数据报发送

下面介绍IgH中状态机处理后数据报的发送流程(ecrt_master_send())。

master使用一个链表datagram_queue来管理要发送的子报文对象datagram,需要发送的子报文对象会先插入该链表中,统一发送时,分配一个sock_buff,从datagram_queue上取出报文对象,设置index(index是发送后接收回来与原报文对应的标识之一),将一个个报文对象按EtherCAT数据帧结构填充到sock_buff中,最后通过网卡设备驱动函数hard_start_xmit,将sock_buff从网卡发送出去。

4.2 数据报接收

接收数据时,通过网卡设备驱动ec_poll函数取出Packet得到以太网数据,然后解析其中的EtherCAT数据帧,解析流程如下:

得到子报文index,遍历发送链表datagram_queue,找到index对应的datagram。

将子报文数据拷贝到datagram数据区。

将以太网帧内子报文中的WKC值复制到datagram中的WKC。

将datagram从链表datagram_queue删除。

根据子报文头M位判断还有没有子报文,有则跳转1继续处理下一个子报文,否则完成接收。

接收完成后,进入下一个循环,内核线程运行状态机或周期应用进行下一个周期,处理接收的Ethercat报文。

先简单介绍到这,敬请关注后续文章。。。。

作者:wsg1100

出处:http://www.cnblogs.com/wsg1100/

本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。

posted @

2021-02-22 23:39 

沐多 

阅读(9825) 

评论(6) 

编辑 

收藏 

举报

会员力量,点亮园子希望

刷新页面返回顶部

公告

Copyright © 2024 沐多

Powered by .NET 8.0 on Kubernetes

CIA402�会到�会——状�机(1) - 陈的错题集

CIA402�会到�会——状�机(1) - 陈的错题集

💻陈的错题集

📜归档 ��标签 📂分类 �关�

💻陈的错题集

�消

📜归档��标签📂分类�关�

目录

CIA402�会到�会——状�机(1)

Jacob Chen æ”¶å½•äº� è¿�动æ�§åˆ¶

 2023-09-15  çº¦ 1035 å­— 

 é¢„计阅读 3 分钟 

目录

简介

状�机

状��述

�制命令�状�切�

�制模�

详细了解EtherCAT中的COE�议,以�CIA402�个模��制的细节

简介

CIA402�议是用�CiA402是CANopen标准�议中的��议之一,全称CAN in Automation Draft Standard Proposed 402 Version。

CIA402�议用��动�制功能,定义了�动�制相关的一些对象�数,状�机和相关�行模�。

状�机

状��述

状�

�述

�始化

驱动器�始化�内部自检已�完�。

伺�无故障

伺�驱动器无故障或错误已�除。

伺�准备好

伺�驱动器已准备好。

等待打开伺�使能

伺�驱动器等待打开伺�使能。

伺��行

驱动器正常�行,已使能�一伺��行模�,电机已通电,指令�为 0 时,电机旋转。

快速�机

快速�机功能被激活,驱动器正在执行快速�机功能。

故障�机

驱动器�生故障,正在执行故障�机过程中。

故障

故障�机完�,所有驱动功能�被�止,�时�许更改驱动器�数以便�除故障。对����故障,�数更改�,�通过�制字 6040h=0x80 使故障��。

�制命令�状�切�

编�

CIA402状�切�

�制字 6040h

状�字 6041h 的 bit0~bit9

0

上电→�始化

自然过渡,无需�制指令

0x0000

1

�始化→伺�无故障

自然过渡,无需�制指令若�始化中�生错误,直�进入 13

0x0250

2

伺�无故障→伺�准备好

0x06

0x0231

3

伺�准备好→等待打开伺�使能

0x07

0x0233

4

等待打开伺�使能→伺��行

0x0F

0x0237

5

伺��行→等待打开伺�使能

0x07

0x0233

6

等待打开伺�使能→伺�准备好

0x06

0x0231

7

伺�准备好→伺�无故障

0x00

0x0250

8

伺��行→伺�准备好

0x06

0x0231

9

伺��行→伺�无故障

0x00

0x0250

10

等待打开伺�使能→伺�无故障

0x00

0x0250

11

伺��行→快速�机

0x02

0x0217

12

快速�机→伺�无故障

快速�机方� 605Ah 选择0~3,�机完��,自然过渡,无需�制指令

0x0250

13

除故障外所有状� →故障�机

除“故障�外其他任�状�下,伺�驱动器一旦�生故障,自动切�到故障�机状�,无需�制指令

0x021F

14

故障�机→故障

故障�机完��,自然过渡,无需�制指令

0x0218

15

故障→伺�无故障

0x80bit7 上�沿有效;bit7 ��为 1,其他�制指令�无效。

0x0250

16

快速�机→伺��行

快速�机方� 605Ah 选择5~7,�机完��,�� 0x0F

0x0237

�制模�

在EtherCAT总线�制下,�COE(CANopen Over EtherCAT)中,CIA402�议共有7�模�。

注:EtherCAT相关介���考《EtherCAT�会到�会》相关介�。

模�

�作模� 6060h

Profile Position Mode(�置规划模�)

1

Profile Velocity Mode(速度规划模�)

3

Profile Torque Mode(扭矩规划模�)

4

Homing Mode(�点�归模�)

6

Cyclic Synchronous Position Mode(周期�步�置模�)

8

Cyclic Synchronous Velocity Mode(周期�步速度模�)

9

Cyclic Synchronous Torque Mode(周期�步扭矩模�)

10

更新� 2023-09-15

阅读�始文档

 cia402

è¿”å›� | ä¸»é¡µ

EtherCAT�会到�会——EtherCAT通讯全�程(5)

CIA402�会到�会——��OD介�(2)

由 Hugo 强力驱动 | 主题 - LoveIt

2023 - 2024 Jacob Chen | CC BY-NC-SA 4.0

ethercat状态机-CSDN博客

>

ethercat状态机-CSDN博客

ethercat状态机

RinHoo

已于 2023-12-21 19:01:18 修改

阅读量622

收藏

11

点赞数

7

文章标签:

笔记

于 2023-11-24 21:07:57 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_52720049/article/details/134607007

版权

在EtherCAT网络中,从INIT(Initialization,初始化)状态切换到预运行模式(PRE-OP)需要完成一系列的配置步骤,以确保从站设备可以正常运行并与主站进行通信。以下是一些典型的配置信息和步骤,以完成INIT状态到PRE-OP状态的切换:

PDO配置:主站需要配置PDO(Process Data Object)以定义从站设备将要传输的数据以及传输的方式。这包括指定PDO的数量、映射的数据对象、PDO的传输周期等。 网络拓扑配置:主站需要配置网络拓扑,确定从站设备的物理连接和位置。这确保了数据可以正确地从主站传输到从站设备。 通信参数配置:包括网络速度、通信模式(半双工或全双工等)和其他通信参数的配置。 设备标识和地址分配:每个从站设备通常都有一个唯一的标识符,主站需要分配这些标识符,以便识别和寻址从站设备。 控制参数配置:如果需要,主站还可以配置从站设备的控制参数,如电机驱动器的速度和位置控制参数。 安全性和故障检测配置:在INIT状态中,也可以配置从站设备的安全性参数和故障检测机制,以确保设备在运行期间能够安全操作并检测到故障。 启动命令:主站通常会发送特定的启动命令或配置帧,要求从站设备执行配置。

一旦主站完成上述配置信息的发送和从站设备的接收和解析,从站设备可以进入PRE-OP状态。在PRE-OP状态下,设备准备好接受更多的配置和参数,以及从主站发送的进一步命令,以最终切换到SAFE-OP状态和运行模式(OP)。

请注意,确切的配置信息和步骤可能因设备和应用的不同而有所不同。因此,您应该参考设备制造商提供的文档和指南,以确保正确配置从站设备并顺利切换到预运行模式。

在EtherCAT网络中,主站可以通过发送特定的EtherCAT命令将从站设备从预运行模式(PRE-OP)切换到安全运行模式(SAFE-OP),然后再切换到运行模式(OP)。以下是主要的命令和步骤,用于将从站设备从PRE-OP模式切换到SAFE-OP模式:

配置从站参数:首先,主站需要配置从站设备的参数,包括PDO映射、同步周期等。这些参数通常在PRE-OP模式下配置。 向从站设备发送 "Initialize" 命令:主站向从站设备发送 "Initialize"(初始化)命令,以请求从站设备进入安全运行模式。该命令通常包含在主站发送的配置帧中。 从站进入SAFE-OP模式:从站设备接收并解析主站发送的 "Initialize" 命令后,会执行必要的初始化步骤和检查。如果一切正常,从站设备将切换到SAFE-OP模式。 配置安全运行参数:在SAFE-OP模式下,主站可以进一步配置安全运行参数,确保设备可以在安全模式下正常运行。 向从站设备发送 "Operational" 命令:一旦主站准备好并安全运行参数配置完成,它可以向从站设备发送 "Operational"(运行)命令,以请求从站设备进入运行模式(OP)。 从站进入运行模式:从站设备接收并解析主站发送的 "Operational" 命令后,将切换到运行模式,执行实际的应用操作。

需要注意的是,切换从PRE-OP到SAFE-OP再到OP模式的确切命令和过程可能会因设备和应用的不同而有所不同。通常,EtherCAT从站设备的生产商会提供详细的配置和操作指南,以确保正确配置和切换不同模式。这些步骤的目的是确保设备在不同的模式下能够按照预期的方式运行,并提供实时性和安全性。

在启动igh主站,而不运行应用程序,通常情况下,IGH主站设备会扫描并检测已连接的从站设备,识别它们的类型和标识符,并尝试自动配置从站设备的参数,以确保它们能够顺利运行。这包括设置PDO映射、同步周期、通信参数等。一旦自动配置完成,从站设备通常会进入预运行状态(PRE-OP),并准备好接受主站的进一步命令和配置。

优惠劵

RinHoo

关注

关注

7

点赞

11

收藏

觉得还不错?

一键收藏

知道了

0

评论

ethercat状态机

在EtherCAT网络中,主站可以通过发送特定的EtherCAT命令将从站设备从预运行模式(PRE-OP)切换到安全运行模式(SAFE-OP),然后再切换到运行模式(OP)。向从站设备发送 "Operational" 命令:一旦主站准备好并安全运行参数配置完成,它可以向从站设备发送 "Operational"(运行)命令,以请求从站设备进入运行模式(OP)。从站进入运行模式:从站设备接收并解析主站发送的 "Operational" 命令后,将切换到运行模式,执行实际的应用操作。在PRE-OP状态下,

复制链接

扫一扫

ethercat学习笔记1

08-08

代码的笔记放到第二章。1.8 松下的从站 PDO映射。6040h控制字这个控制字是用来控制伺服电机上使能的。6041状态字这个状态字读取伺服电机的状态。控制模式

EtherCAT设备协议详解二、EtherCAT状态机及配置流程

EtherCAT

12-16

7893

设备可以拒绝来自主站的状态请求,并通过错误指示(AL 状态寄存器中的错误标志)和相关错误代码(AL 状态代码寄存器)发出错误信号。设置了上述信息后,从站检查无误后,主站可以请求进入safe-op状态,如果不能进入safe-op可以读取相关寄存器,判断错误原因。设置了上述信息后,从站检查无误后,主站可以请求进入pre-op状态,如果不能进入pre-op可以读取相关寄存器,判断错误原因。safe-op状态主要把pdo中的数据设置的从站中,确认从站是否会报错。DC同步稳定,从站也没有报错就可以申请进入op状态。

参与评论

您还未登录,请先

登录

后发表或查看评论

EtherCAT学习笔记:状态机(ESM)

weixin_38933763的博客

04-24

3559

ESM(EtherCAT State Machine)负责协调主站和从站应用程序在初始化和运行时的状态关系及转换;

从初始化状态至运行状态,必须按照“初始化->预运行->安全运行->运行”的顺序转化。

从运行状态逆向返回时可以越级转化;

EtherCAT必须支持四种状态和一种可选状态:

Init:初始化

Pre-Operational:预运行

Saft-Operational:...

基于FPGA的EtherCAT从站通信链路分析与验证

10-16

EtherCAT是工业控制领域广泛应用的现场总线之一,从站控制器ESC(EtherCAT Slave Controller)是从站模块实现EtherCAT协议数据通信的关键,对从站控制芯片实现自主可控是工业控制系统国产化研发的重要基础。基于EtherCAT通信协议及基本通信功能逻辑,设计了EBUS编码/解码、Auto-forwarder、Loop-back function关键通信节点的FPGA状态机,并通过解析各阶段数据状态变化,验证了各节点通信数据的正确性。实验结果表明,基于上述状态机的FPGA实现EtherCAT从站基本通信链路是完全可行的。

Soem-1个电机PP模式 界面显示目标位置达到状态-添加代码注释-CSDN - EtherCAT主站-SOEM专栏的源代码

01-10

Soem-1个电机PP模式 界面显示目标位置达到状态-添加代码注释-CSDN.zip

EtherCAT主站-SOEM专栏的源代码。

EtherCAT主站SOEM -- 17 --Qt-Soem控制电机走PP模式并且界面显示目标位置达到状态,这一篇博客的源代码,博客链接( 正在编写,2024.1.21发布, https )。

注意: 该项目源代码提供了 QT-SOEM 配置从站到OP状态,并且对1个EtherCAT从站 电机进行操作,操作1个电机走PP模式 界面显示目标位置达到状态,正转达到目标位置,反转达到目标位置,及停止。

源代码 主要功能:

获取网卡信息,绑定网卡,配置EtherCAT网络,等待从站进入OP状态,检查EtherCAT主站和从站状等等。

Soem主站识别到 几 个从站。

并且操作1个电机走PP模式 界面显示目标位置达到状态,正转达到目标位置,反转达到目标位置,及电机运行过程中停止。

Ethercat状态机转化(ESM)

qq_39854159的博客

10-08

1982

ESM状态机

四种应支持的状态机

●Init.

Pre-Operational.

Safe-Operational.

Operational.

一种可选的状态机

●Bootstrap.

其状态转化关系,如下图所示:

状态转化

本地管理服务

IP

开始邮箱通信

PI

停止邮箱通信

PS

开始输入更新

SP

停止输入更新

SO

开始输出更新

OS

停止输出更新

OP

停止输出更新,停止输入更新

SI

停止输出更新,停止邮箱通信

OI

停止输出更新,停止输入更新,

EtherCAT状态机控制和状态

風之逍遥的博客

09-05

8446

        主机和从站状态转化规律如下:

        (1)、主机控制从机状态转换,将目的状态写入从站AL控制位(0x0120.0~3);

        (2)、从机读取新状态请求后,检查自身状态:

        a:如果可以转化,则将新状态写入状态机实际状态位(0x0130.0~3);

        b:如果不能转化,则不改变实际状态位,设置错误指示位(0x013.4),并...

Ethercat--基础架构与数据帧格式

qq_41931610的博客

04-20

1860

(过程数据对象):过程数据用来传输周期性的数据,PDO由三个数据缓冲区组成,类似于一个FIFO,从站写入第一个缓冲区,主站从第三个缓冲区读走。(服务数据对象):邮箱通信用来发送非周期性的数据,邮箱通信只有一个数据缓冲区,通信方式采用握手的机制确保主从之间的数据交互不丢失,而PDO由于采用FIFO的机制,可能会出现新值覆盖旧值或旧值被多次读走的情况。EtherCAT协议在应用层支持CANopen协议,因此支持CANopen协议的从站可以被运用在EtherCAT协议上。并且可以通过命令行工具加载或存储文件。

EtherCAT状态机详解

weixin_43956732的博客

06-04

7887

EtherCAT状态机详解canopen over ethercat参考模型网络状态机 EtherCAT State Machine

canopen over ethercat参考模型

从下图中可以看出,运行模型可以分为如下几层

1 商家软件运用层

2 基于CANopen DS402运用层

3 数据链路层

4 物理连接层

网络状态机 EtherCAT State Machine

网络状态机如下图所示

对应功能介绍:

...

Ethercat学习-电机调试问题总结

西澳峰的博客

03-10

3035

主站硬件:STM32F405+LAN8720A主站软件:SOEM。

IgH EtherCAT master-ethercatpack.7z

10-16

之前工作有接触到Ethercat 并学习实践了IghMaster库,现在不做这方面工作了把代码开源出来,希望对大家有用。

代码使用Source Insight 3.5编辑的,用其它编辑器可能会出现乱码。

压缩包中包含了

1.基于Ighmaster 1.5.2驱动Sanyo,泰科伺服电机做力矩模式运动的代码。包含电机使能/禁止使能,设置运行模式,控制模式,发送力矩控制命令,读取力矩反馈等功能。基于SDO方式实现的代码。

2. 基于Ighmaster 1.5.2 驱动Et100 Io板代码,基于PDO,SDO方式的Io控制及温湿度读取

3. 测试例子包括了介于原生驱动接口ioctl方式控制码和基于libethercat库的驱动代码。具体见源代码。

文档目录结构及简要说明

0.Ethercat调试记录.txt

自己调试Ethercat过程中碰到的问题及解决办法

1. libethercat\std 目录

编译Igh生成的ethecat库

2. libethercat\include

Igh Master Ethercat库包含的头文件

3. scripts/

自动生成从站信息的相关脚本文件,要生成从站信息,将该文件夹复制到开发板运行GenerateSlavesConfig.sh。

默认生成ec_common_configs_define.h和ec_common_configs_define.c文件,这两个文件会在libethercat\ec_common\ecat_common.c,libethercat\ec_common\ecat_common.h相关接口使用。

4. libethercat\ec_common

4.0

ec_common_configs_define.h

ec_common_configs_define.c

由脚本scripts/GenerateSlavesConfig.sh自动生成的从站信息,包括从站PDO,SDO设置等,更具体的可以参照scripts/README.txt

4.1

ecat_common.h

ecat_common.c

基于ibethercat\std 中的库的二次封装库,简化了PDO,SDO等操作

4.2

ecat_common_intermediate_interface.h

ecat_common_intermediate_interface.c

与具体厂商相关的接口库,基于ecat_common.c中接口的实现,不同设备修改这两个文件中的接口进行适配。

目前该文件实现的山羊电机接口。主要实现的PDO接口的电机状态查询,上电开机,关机,操作模式设置,力矩设置等接口,不同电机的类似接口可以参照该文件实现,接口作用见名知意。

封装接口的关键是对象字典的操作,根据手册设置对象字典即可,标准的Ethercat接口伺服电机一般来说对象字典定义基本是一样的,可能稍微有差别

5. 标准Igh Master接口的使用例子

mytest目录

mytest/test_torque_sanyo_ioctl

基于ioctl接口的sanyo电机测试例子

mytest/test_torque_tec_ioctl

基于ioctl接口的泰科电机电机测试例子

mytest/test_torque_tec_lib

基于libethercat\std库接口的电机测试例子

mytest/test_torque2

基于libethercat\std库接口的电机测试例子2

mytest/test_io_board

ET1100,IO板的测试例子

基于标准的Igh 库及iotcl接口可以参照该文件夹例子

6.二次封装接口库ecat_common_intermediate_interface.c的使用说明

使用步骤

(1)将编译生成的Igh库文件替换libethercat\std文件, 文件名可能要改成,或者不该也行,自己写Makefile时匹配库名称就行

(2)将 scripts/ 目录复制到开发运行GenerateSlavesConfig.sh脚本,将脚本生成的ec_common_configs_define.h ec_common_configs_define.h 复制到libethercat\ec_common 文件夹

(3)基于二次封装接口的电机一般操作参照demo.c

参照demo.c中的ethercat_init() 进行从站初始化

初始化后就可以调用ecat_common_intermediate_interface.c中接口对从站进行操作

比如

interpolation_2_ecat_set_slave_pwr_on()接口使能电机,

interpolation_2_ecat_set_slave_pwr_off() 关闭电机

interpolation_2_ecat_set_slave_target_pos() 设置目标位置,对应位置模式操作

其它接口作用见参照具体实现

7.关于轴操作的几点说明

(1)每个轴对应一个从站,由alias,position确定,一般来说从站不多时alias=0固定不变,对不同轴根据positon确定。

例如使能和关闭不同的轴

int interpolation_2_ecat_set_slave_pwr_on(MasterSpecifiedInfo_T *master_specified_info, int slave_pos);

int interpolation_2_ecat_set_slave_pwr_off(MasterSpecifiedInfo_T *master_specified_info, int slave_pos);

中slave_pos参数就对应不同的轴,slave_pos=0,axis1 slave_pos=1,axis2...

(2)设置不同轴的操作模式,位置,力矩,速度模式 可以参照这个接口

int interpolation_2_ecat_set_slave_operation_model(MasterSpecifiedInfo_T *master_specified_info, int slave_pos, unsigned char operation_model)

代码已经托管在云上,可以直接通过git下载:

https://gitee.com/wllw7176/MyEthercat-IGH-1.5.2.git

汇川 Ethercat 总线通讯

08-15

汇川 Ethercat 总线通讯模板,汇川H5U

EtherCAT之相知(状态机&字典)

u014311679的博客

05-31

2695

状态机

ethercat在建立主从连接时,需要通过一套逻辑状态机来完成,状态机的模型如下:

Init(初始化):在这个状态下,通过主机同步EtherCAT总线网路, 主机仅访问从设备的寄存器,但在应用层没有任何交互;

I TO P:

• 主机读取Eeprom的加载状态;

主机为邮箱交互方式配置SM通道(专属于邮箱通信的SM0和SM1通道);

• 主站设置AL Control寄存器申请转换为Pre...

EtherCAT使用与解析-主站状态机(idle->preop)

lswdcyy的博客

04-05

2697

当加载完毕ec_master主站模块和一个网络驱动模块后(如ec_generic),整个系统就创建一个线程用于指向空闲阶段函数(./master/master.c/ec_master_idle_thread()),在该函数中有一个过程就是执行主站状态机,也就是ec_fsm_master_exec()函数,具体实现模式就与主站中的ec_fsm_master_t类型结构有关,该类型的数据如下:

s...

IGH(ethercat)命令行不能进入OP原因

关注工业机器人应用

12-17

4773

解决命令行不能让伺服进入OP模式的问题。

倍福--EtherCAT诊断方法

weixin_41883890的博客

06-24

3944

在调试阶段可能会出现EtherCAT模块因接线、参数配置等问题而导致无法使用的情况。本文介绍Ethercat模块网络诊断和硬件排查的基本方法。1.1.2. EK1100 EtherCAT Link口状态显示

同样连接网口的灯也有状态显示,一般需要查看网口的灯是否在正常状态,LinK口的LED灯显示状态和意义如下所示:

1.1.3. EK1100 EtherCAT Run灯的含义

Run灯的变化是根据状态机进行变化的,EtherCAT状态机如下所示:

因此LED RUN灯颜色和状态意义如下所示:

EtherCAT IgH常用命令行使用记录

Rot_Tianers

05-07

1414

该命令显示主站和从站的信息,且其生成的PDO信息可以直接被应用层的ecrt_slave_config_pdos()函数调用。用来请求从站转换状态,可选参数有INIT、PREOP、BOOT、SAFEOP、OP。显示当前支持的命令行指令,当前总共提供了 28 个命令行指令。以文本信息输出总线上连接的所有从站设备连接拓扑图。显示当前主站和从站设备的连接状态和信息。显示当前从站设备的连接状态和信息。显示当前ighH主站的版本信息。

EtherCAT的实现和应用 - 从站软硬件设计

weiDev的博客

03-21

3576

EtherCAT的实现和应用 - 从站软硬件设计

黑马点评-发布探店笔记

最新发布

cangshanjiang的博客

03-08

296

探店笔记类似点评网站的评价,往往是图文结合。

EtherCAT state Machine

07-20

EtherCAT(Ethernet for Control Automation Technology)是一种用于实时控制系统的网络通信协议。EtherCAT状态机(EtherCAT State Machine)是指在EtherCAT网络中,用于描述各个设备(从站)状态转换和通信行为的模型或算法。

在EtherCAT网络中,每个设备都有一个状态机,用于管理设备之间的通信和协调操作。状态机定义了设备的状态以及在不同状态之间的转换条件和动作。通常,EtherCAT从站设备的状态机包括以下几个常见的状态:

1. 初始化(Init):设备初始状态,进行硬件初始化和配置。

2. 预运行(Pre-Operational):设备已经初始化并连接到EtherCAT网络,但还不能进行实际的数据交换。

3. 运行(Operational):设备进入正常工作状态,可以进行实时数据交换和控制操作。

4. 停止(Stopped):设备停止工作,停止数据交换和控制操作。

5. 错误(Error):设备发生错误或异常情况,需要处理和恢复。

通过状态机的状态转换和相应的动作,各个设备可以在EtherCAT网络中进行同步的数据交换和协调操作,实现实时控制系统的功能。

需要注意的是,具体的EtherCAT状态机实现可能会有一些差异,不同设备厂商或应用领域可能会有自己的状态定义和行为。因此,在使用EtherCAT网络时,需要根据具体设备的文档和规范来理解和实现相应的状态机逻辑。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

RinHoo

CSDN认证博客专家

CSDN认证企业博客

码龄3年

暂无认证

24

原创

126万+

周排名

6万+

总排名

8532

访问

等级

503

积分

100

粉丝

140

获赞

10

评论

129

收藏

私信

关注

热门文章

进程和线程,多线程示例

835

ethercat状态机

618

ros2 第一章ros2概述与环境搭建

437

ctrl+c触发sigint终端无限循环执行之后代码

408

一张图片的打印出来的实际尺寸是多少,通常说的显示器的分辨率具体是什么

346

分类专栏

文献

cpp

工业机器人

电机

ethercat

qt

ros

linux

最新评论

安装ubuntu22.04

CSDN-Ada助手:

恭喜你写了第18篇博客!安装ubuntu22.04这个主题确实是一个很有用的教程,对很多人来说都是非常有帮助的。希望你能继续保持创作的激情,分享更多有趣、实用的内容。或许下一步可以考虑分享一些关于ubuntu22.04的使用技巧和经验,或者是一些相关的软件推荐,让读者能够更好地利用这个系统。期待你的下一篇文章!

can总线

CSDN-Ada助手:

恭喜您撰写了关于“can总线”的博客!您对这一主题的深入探讨让我受益匪浅。希望您能继续保持创作的热情,不断分享您的专业知识和见解。或许下一步可以考虑分享一些实际案例或者对未来can总线发展的展望,这样会更加丰富您的博客内容。期待您的下一篇精彩文章!

canopen

CSDN-Ada助手:

恭喜您写了第16篇博客!看到您对CanOpen的深入探讨,我感到非常兴奋。在下一步的创作中,我建议您可以考虑结合实际案例或者具体的应用场景,让读者更容易理解和接受这些技术知识。期待您更多精彩的文章!

iso/osi

CSDN-Ada助手:

亲爱的博主,恭喜你写了第17篇博客!iso/osi是一个非常重要的话题,你的文章写得很详细,让我受益良多。希望你能继续保持创作的热情,不断分享自己的知识和见解。下一步,我建议你可以尝试结合实际案例,深入分析iso/osi在实际应用中的价值和意义,这样会更加生动和具有实践性。期待你的下一篇精彩文章!加油!

twincat2、3

CSDN-Ada助手:

恭喜您写了第9篇博客!您对twincat2、3的深入探讨让我受益匪浅。希望您能继续保持创作的热情,分享更多关于这方面的知识。或许下一步可以考虑结合实际案例,分享一些使用twincat2、3的经验和教训,这样更能帮助到大家。期待您的下一篇作品!

您愿意向朋友推荐“博客详情页”吗?

强烈不推荐

不推荐

一般般

推荐

强烈推荐

提交

最新文章

机械设计中最常用的3种材料——304不锈钢、45号钢和Q235

ros2 第一章ros2概述与环境搭建

ctrl+c触发sigint终端无限循环执行之后代码

2023年24篇

目录

目录

分类专栏

文献

cpp

工业机器人

电机

ethercat

qt

ros

linux

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

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

余额充值

EtherCAT状态机详解_ecatslv 状态机-CSDN博客

>

EtherCAT状态机详解_ecatslv 状态机-CSDN博客

EtherCAT状态机详解

最新推荐文章于 2024-01-04 10:53:42 发布

VIP文章

雪花飞龙

最新推荐文章于 2024-01-04 10:53:42 发布

阅读量7.8k

收藏

65

点赞数

6

分类专栏:

EtherCAT主站SOEM专栏

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_43956732/article/details/106547961

版权

EtherCAT状态机详解

canopen over ethercat参考模型

网络状态机 EtherCAT State Machine

COE状态机

canopen over ethercat参考模型

从下图中可以看出,运行模型可以分为如下几层

1 商家软件运用层

2 基于CANopen DS402运用层

3 数据链路层

4 物理连接层

网络状态机 EtherCAT State Machine

网络状态机如下图所示

最低0.47元/天 解锁文章

优惠劵

雪花飞龙

关注

关注

6

点赞

65

收藏

觉得还不错?

一键收藏

知道了

0

评论

EtherCAT状态机详解

EtherCAT状态机详解canopen over ethercat参考模型网络状态机 EtherCAT State Machinecanopen over ethercat参考模型从下图中可以看出,运行模型可以分为如下几层1 商家软件运用层2 基于CANopen DS402运用层3 数据链路层4 物理连接层网络状态机 EtherCAT State Machine网络状态机如下图所示对应功能介绍:...

复制链接

扫一扫

专栏目录

松下EtherCat 电机描述

04-06

ETHERCAT 伺服电机

EtherCAT从站状态机分析:PREOP to SAFEOP过程

JavanChen的博客

11-15

1万+

/////////////////////////////////////////////////////////////////////////////////////////

/**

\return AL Status Code (see ecatslv.h ALSTATUSCODE_....)

\brief This function is called in case o...

参与评论

您还未登录,请先

登录

后发表或查看评论

EtherCAT的COE报文

u014453443的博客

01-04

515

动态PDO配置包括PDO Assignment和PDO Configuration,前者指的是,已经有配置好的一堆1600,1601,1602等等PDO,我们可以选择如何组合成我们自己的传输数据。其中,子索引0是分配的PDO数目,其他子索引是PDO映射对象的索引号,也就是前面的0x1600~0x17FF。COE协议是完全遵循CANopen协议的,但针对EtherCAT通信做了一些扩展,索引为0x1c00~0x1c4f,用于设置存储同步管理器的类型,通信参数和PDO数据分配。0x1c12配置示例。

EtherCAT通讯DS402协议----控制模式

weixin_43956732的博客

06-07

1万+

EtherCAT通讯DS402协议----控制模式控制模式查看和设定查看控制器支持的控制模式:6502h设置控制器的模式:6060h查看当前控制模式:6061h控制模式详解轮廓位置模式Profiled Position

驱动器控制电机有多种模式,如轮廓位置模式、同步位置模式、同步速度模式等,不同的控制模式具有不同的特性,如何选择这些控制模式实现最优的性能是机器人开发中的一个重要课题。

控制模式查看和设定

当我们一款控制器时,可以通过6502h查看控制器支持的控制模式,然后通过6060h设置需要的控制模式,最

EtherCAT设备协议详解二、EtherCAT状态机及配置流程

EtherCAT

12-16

7893

设备可以拒绝来自主站的状态请求,并通过错误指示(AL 状态寄存器中的错误标志)和相关错误代码(AL 状态代码寄存器)发出错误信号。设置了上述信息后,从站检查无误后,主站可以请求进入safe-op状态,如果不能进入safe-op可以读取相关寄存器,判断错误原因。设置了上述信息后,从站检查无误后,主站可以请求进入pre-op状态,如果不能进入pre-op可以读取相关寄存器,判断错误原因。safe-op状态主要把pdo中的数据设置的从站中,确认从站是否会报错。DC同步稳定,从站也没有报错就可以申请进入op状态。

倍福提供的EtherCAT从站代码包解析

热门推荐

进阶的Kaiser@ZJU !!!

06-13

1万+

用倍福的从站配置工具得到的源代码有以下

1 主要代码

 ecatappl.c

 ecatappl.h

   Ecatappl:  EtherCAT从站应用层接口,整个协议栈运行的核心模块,

EtherCAT从站状态机和过程数据接口。Main()函数的定义,输入输出程数据

对象的映射处理,ESC与处理器本地内存的输入输出过程数据的交换等;

 ecatslv.c

 ecat

EtherCAT学习笔记:状态机(ESM)

weixin_38933763的博客

04-24

3559

ESM(EtherCAT State Machine)负责协调主站和从站应用程序在初始化和运行时的状态关系及转换;

从初始化状态至运行状态,必须按照“初始化->预运行->安全运行->运行”的顺序转化。

从运行状态逆向返回时可以越级转化;

EtherCAT必须支持四种状态和一种可选状态:

Init:初始化

Pre-Operational:预运行

Saft-Operational:...

ethercat状态机

weixin_52720049的博客

11-24

622

在EtherCAT网络中,主站可以通过发送特定的EtherCAT命令将从站设备从预运行模式(PRE-OP)切换到安全运行模式(SAFE-OP),然后再切换到运行模式(OP)。向从站设备发送 "Operational" 命令:一旦主站准备好并安全运行参数配置完成,它可以向从站设备发送 "Operational"(运行)命令,以请求从站设备进入运行模式(OP)。从站进入运行模式:从站设备接收并解析主站发送的 "Operational" 命令后,将切换到运行模式,执行实际的应用操作。在PRE-OP状态下,

IGH(ethercat)命令行不能进入OP原因

关注工业机器人应用

12-17

4773

解决命令行不能让伺服进入OP模式的问题。

EtherCAT状态机控制和状态

風之逍遥的博客

09-05

8446

        主机和从站状态转化规律如下:

        (1)、主机控制从机状态转换,将目的状态写入从站AL控制位(0x0120.0~3);

        (2)、从机读取新状态请求后,检查自身状态:

        a:如果可以转化,则将新状态写入状态机实际状态位(0x0130.0~3);

        b:如果不能转化,则不改变实际状态位,设置错误指示位(0x013.4),并...

TwinCAT在init->pre op ->safe op->op模式切换时的error caode说明

weixin_42915969的博客

04-01

4739

TwinCAT在模式切换时的error caode说明

Ethercat协议详解.zip

05-12

Ethercat主站协议详解,对于想要开发主站的同学有很大帮助,便于理解主站源代码的相关作用。注:英文文档

1、Ethercat协议原理,应用层,数据链路层,物理层。

2、Ethercat从站寄存器说明

3、ET1200硬件详解

EtherCAT协议栈代码详解

05-31

EtherCAT代码详解,ET9300,开发EtherCAT的的必备文档。

详解EtherCAT主站协议栈-综合文档

05-22

详解EtherCAT主站协议栈

台达伺服电机EtherCAT英文文档

08-12

台达伺服电机A2E型说明书英文版,介绍该类型电机EtherCAT总线通讯方式及规格

ethercat通讯移植

qq_41918577的博客

11-30

1459

本文主要用于记录

一、尝试在Linux系统下进行ethercat通讯

1.使用Igh进行通讯

Ethernet & EtherCAT and EtherCAT State Transition

PI_sunyang的博客

08-14

2819

EtherCAT状态机

EtherCAT有如下几种状态,Init、PreOP、SafeOP、OP和bootstrap。EtherCAT状态机模块负责控制EtherCAT状态机在以上几种状态间跳转。EtherCAT主函数名称为ECAT_Main(),可以在定时器中断函数或程序主函数,周期性运行。该函数主要包含以下功能:1、读取中断标志寄存器ALEventReg的值,根据值来判断是什么触发的中断,中断

EtherCAT状态机----Kithara RTS

Studying……

12-12

5311

本文摘自Kithara RTS官网对EtherCAT状态机的介绍

The EtherCAT state machine

EtherCAT状态机

EtherCAT defines 5 different states BOOT, INIT, PREOP, SAFEOP and OP.These are identified by the Kithara constants KS_ECAT_ST

倍福--EtherCAT诊断方法

weixin_41883890的博客

06-24

3944

在调试阶段可能会出现EtherCAT模块因接线、参数配置等问题而导致无法使用的情况。本文介绍Ethercat模块网络诊断和硬件排查的基本方法。1.1.2. EK1100 EtherCAT Link口状态显示

同样连接网口的灯也有状态显示,一般需要查看网口的灯是否在正常状态,LinK口的LED灯显示状态和意义如下所示:

1.1.3. EK1100 EtherCAT Run灯的含义

Run灯的变化是根据状态机进行变化的,EtherCAT状态机如下所示:

因此LED RUN灯颜色和状态意义如下所示:

ethercat soem详解

最新发布

01-26

EtherCAT (Ethernet for Control Automation Technology)是一种高性能的实时以太网通信协议,用于自动化控制系统中的实时数据传输。EtherCAT是一种开放的标准,它基于以太网技术,具有低延迟、高实时性、高带宽和高...

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

雪花飞龙

CSDN认证博客专家

CSDN认证企业博客

码龄5年

暂无认证

70

原创

5699

周排名

148万+

总排名

46万+

访问

等级

4001

积分

1万+

粉丝

484

获赞

130

评论

4071

收藏

私信

关注

热门文章

ROS中rviz使用教程

29707

CanOpen通信----PDO与SDO

24387

EtherCAT通信主站----PDO过程数据映射

18272

C++时间函数----time

16162

WPF入门教学(C#窗口、客户端)

15281

分类专栏

.net开发

1篇

C++专栏

24篇

界面开发工具

2篇

Python基础知识

11篇

自动化物理仿真

5篇

协作机器人控制算法

18篇

ROS专栏

20篇

EtherCAT主站SOEM专栏

22篇

OpenCV学习专栏

13篇

移动机器人运动控制

7篇

Scipy专栏

3篇

TCP/IP通讯

3篇

Linux

CanOpen通讯专栏

4篇

KDL库专栏

4篇

UR控制通讯专栏

5篇

Matplotlib专栏

协作机器人本体结构

1篇

最新评论

ROS中gazebo配置教程详解

2301_80197036:

名空间必须与××.gazebo文件中的命名空间相同 是指哪个部分?

利用Python scipy.signal.filtfilt() 实现信号滤波

alpha的beta:

您好!请教一下带通滤波器遇到的问题

当sampleRate比较大的时候,eg.48k,

截止频率为300-1000Hz

filtfilt的输出结果是Nan

降低采样率后,就是合理的数字,请问这个问题应该怎么解决呢?感谢~

卡尔曼滤波原理介绍及算法实现

Mdwsbb:

想问下教科书是哪本?

EtherCAT通信主站----PDO过程数据映射

muti_Fuction:

唉,干点事真难找个资料,昨天看的还好好的,今天就成vip文档了

机器人控制算法----模糊控制

muti_Fuction:

催更,博主

最新文章

C#使用Math.Net库进行矩阵运算

程序开发小白需了解的一些概念

C#串口通讯

2021年8篇

2020年124篇

目录

目录

分类专栏

.net开发

1篇

C++专栏

24篇

界面开发工具

2篇

Python基础知识

11篇

自动化物理仿真

5篇

协作机器人控制算法

18篇

ROS专栏

20篇

EtherCAT主站SOEM专栏

22篇

OpenCV学习专栏

13篇

移动机器人运动控制

7篇

Scipy专栏

3篇

TCP/IP通讯

3篇

Linux

CanOpen通讯专栏

4篇

KDL库专栏

4篇

UR控制通讯专栏

5篇

Matplotlib专栏

协作机器人本体结构

1篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

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

余额充值

EtherCAT从站学习笔记——2.3应用层 - 知乎

EtherCAT从站学习笔记——2.3应用层 - 知乎首发于EtherCAT从站学习切换模式写文章登录/注册EtherCAT从站学习笔记——2.3应用层鹏飞亿里探索宇宙规律,施加适当激励。2.3.1 EtherCAT状态机在系统网络运行中,EtherCAT状态机负责主站从站之间的运行的协调关系。由主站发起状态的变化,在相应的工作完成之后从站程序确认状态的转换。如图2-8所示,EtherCAT支持四种状态和一个可选的状态:Init(初始化)、Pre-Operational(预运行)、Safe-Operational(安全运行)、Operational(运行)、Boot-Strap(引导状态,可选)。从初始状态到运行状态,必须按“初始化→预运行→安全运行→运行”顺序进行,不可以越级转化,然而返回时可以越级。引导状态可选,只允许与初始状态相互转化。1) 初始化。初始化状态定义了主站与从站在应用层之间的初始通讯关系。此时,主站利用初始化来对ESC的一些寄存器进行初始化。2) 预运行。在该状态下,邮箱通信被激活。主站和从站都可以利用邮箱服务和适当的协议来交换与应用层程序相关的初始化操作和参数。这个状态不支持过程数据通讯。3) 安全运行。从站的应用程序将输入的实际数据读入,无输出信号产生,输出被设置为“安全状态”。4) 运行。在设备运行状态下,从站的应用程序读取实际输入的报文数据,主站的应用程序输出实际相应数据,从站设备输出信号,EtherCAT系统处于正常的运行状态。5)引导状态(可选)。引导状态只用于实现设备固件程序的下载,并且只和初始化状态交互。在引导状态下,主站可以并且只限使用FoE协议的邮箱数据通信,给从站写入一个新的固件程序。2.3.2 应用层协议应用层(AL, Application Layer)在EtherCAT协议中是最高的控制功能层,直接面向具体的控制对象。在访问网络环境给控制程序提供手段,而且给控制程序提供了服务。如图2-9所示为EtherCAT协议结构。应用程序只要符合此应用层协议,都可以在应用层的控制下协同完成控制任务。EtherCAT协议中支持的应用层协议包括以下四种:1)CANopen over EtherCAT, CoE。CANopen最初是为CAN总线控制系统所开发的应用层协议。EtherCAT协议在应用层支持CANopen协议,并作了相应的扩充。主要功能有:使用邮箱通信访问CANopen对象字典及其对象,实现网络初始化;使用CANopen应急对象和可选的事件驱动PDO消息,实现网络管理;使用对象字典映射过程数据,周期性传输指令数据和状态数据。我司的从站软件站也主要实现应用层CoE协议,其框架结构如图2-10所示。2) Servo Drive over EtherCAT, SoE。IEC61491是国际上第一个专门用于伺服驱动器控制的实时数据通信协议标准,其商业名称为SERCOS(Serial Real-time Communication Specification)。EtherCAT协议的通信性能非常适合数字伺服驱动器的控制,应用层使用SERCOS应用层协议实现数据接口,可以实现以下功能:使用邮箱通信访问伺服控制规范参数(IDN),配置伺服系统参数;使用SERCOS数据电报格式配置EtherCAT过程数据报文,周期性传输伺服指令数据和伺服状态数据。3) Ethernet over EtherCAT, EoE。EtherCAT支持IP标准的协议,比如TCP/IP、UDP/IP和所有其他高层协议(HTTP和FTP等)。EtherCAT能分段传输标准以太网协议数据帧,并在相应的设备完成组装。这种办法可以避免为长数据帧预留时间片,大大缩短周期性数据的通信周期。此时,主站和从站需要相应的EoE驱动程序的支持。4)File Access over EtherCAT, FoE。该协议通过EtherCAT下载和上传固件程序和其他文件,其使用类似TFTP(Trivial File Transfer Protocol,简单文件传输协议)的协议,不需要TCP/IP的支持,实现简单。发布于 2021-12-14 10:23应用层(物联网)工业机器人伺服系统​赞同 7​​添加评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录EtherCAT从站学习EtherCAT工业现场总线,伺服系统

EtherCAT状态机流程 – 燕骏博客

EtherCAT状态机流程 – 燕骏博客

燕骏博客

本站早已不维护,资源已失效,择期关闭,勿打赏

工控技术

控制算法

PLC应用

AM600

H123U

CoDeSys

工艺算法

伺服运控

变频器应用

通信技术

工业云

网络技术

Python爬虫

网站搭建

校园技术

matlab仿真

生活笔记

旅途之中

理财投资

读书感悟

随便扯淡

资源下载

PLC资源

软件下载

变频器资源

wincc资源

触摸屏资源

EPLAN资源

伺服资料

机器人

Python资料

电子教程

ST编程自学

AM600笔记

赞助本站

关于自己

实操派工控文库

登录

快使用Ctrl+D收藏本站!本站早已不再维护,择期将关闭本站!!本站资源已全部失效,请勿打赏!!PLC培训创业官网 苏州实操派科技-点击访问-

Catchable fatal error: Object of class WP_Error could not be converted to string in C:\WWW\zhuziwen_blog\wp-content\themes\yusi1.0\functions.php on line 186

EtherCAT的实现和应用 - 从站软硬件设计 - 知乎

EtherCAT的实现和应用 - 从站软硬件设计 - 知乎首发于EtherCAT切换模式写文章登录/注册EtherCAT的实现和应用 - 从站软硬件设计酱哒​珠海极海半导体有限公司 嵌入式工程师01 从站硬件设计从站最小系统EtherCAT的最小系统由MCU、ESC、晶振、EEPROM、PHY芯片和RJ45接口组成。 从站应用系统一般来说我们可以采用MCU + ESC芯片,集成IO控制和电机控制两种从站方案。作为IO从站应用时,可以利用板载的4个LED和4个Button实现IO逻辑功能。而作为Motor从站应用时,可以利用UVW和HALL采样电路驱动BLDC电机。另外还可引出了ADC、DAC、CAN和RS485等扩展接口。02 从站软件设计从站栈代码代码结构EtherCAT从站栈代码(EtherCAT Slave Stack Code)的代码结构如下图所示,包含ESC内存接口、mailbox(CoE、EoE等等)、DC(Sync)同步功能、过程数据处理、状态机和本地通信应用等结构。其中过程数据的处理使用对象字典,和CoE协议定义的一致。基础的示例代码可以从官方的SSC Tool获得。状态机EtherCAT状态机(ESM,EtherCAT Slave Machine)负责协调主站和从站应用程序在初始化和运行时的状态关系。SSC代码中的ESM在AL_ControlInd()函数实现。EtherCAT设备必须支持四种状态,另外还有一个可选的状态。所有的状态改变都由主站发起。具体可以看《ETG.1000-part 6》应用层协议规范。ESI从站信息接口文件EEPROM内容结构ESC使用EEPROM来存储所需要的设备相关信息,称为从站信息接口SII(Slave Information Interface)。EEPROM的容量为1Kbit ~ 4Mbit,取决于ESC规格。EEPROM内容结构如下图所示。采用字地址,字0~63是必须的基本信息。这些信息都写在XML文件中。XML文件结构每个从站都要有一个XML配置文件,XML里定义的对象字典和PDO设置,需要和固件里的对象字典相对应。还记得”概述“里讲到的从站信息文件xml文件吧。 标蓝色的几个部分是主要的配置内容。下图是XML编辑器转换的视图,关键的对象字典和数据类型都在Devices->Device->Profile元素里。上面部分为制造商信息,下面部分为从站描述信息,包括设备标识、设备名称、接口类型、FMMU通道、SM、过程数据定义、邮箱、分布时钟、EEPROM。发布于 2022-03-21 23:05Ethernet软硬件产品设计(硬件)​赞同 3​​1 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录EtherCATEtherCAT的实现

EtherCAT Technology Group | 技术概览

EtherCAT Technology Group | 技术概览

 

EN

|

DE

|

ES

|

IT

|

CN

|

JP

主页

新闻

市场活动

新闻发布

联系方式

会员专区

搜索  

技术概览 技术概览 为何使用EtherCAT? 协会组织 常见问题 会员相关 供应商ID 产品指南 资料下载 一致性测试 EtherCAT G EtherCAT P Safety over EtherCAT EtherCAT 和 TSN 技术汇编 开发者论坛 知识库

退出

EtherCAT - 以太网现场总线

本文深入阐述了基于以太网现场总线系统的EtherCAT (Ethernet for Control Automation Technology)技术。EtherCAT为现场总线技术领域树立了新的性能标准,具备灵活的网络拓扑结构,系统配置简单,和现场总线系统一样操作直观简便。另外,由于EtherCAT实施的成本低廉,因此使系统得以在过去无法应用现场总线网络的场合中选用该现场总线。

 

1. 引言

1.1 以太网和实时能力

2. EtherCAT 运行原理

3. EtherCAT 技术特征

3.1 协议

3.2 拓扑

3.3 分布时钟

3.4 性能

3.5 诊断

3.6 高可靠性

3.7 安全性

3.8 EtherCAT 取代PCI

3.9 设备行规

3.9.1 EtherCAT实现CAN总线应用层协议 (CoE)

3.9.2 EtherCAT实现伺服驱动设备行规IEC61491 (SoE)

3.10 EtherCAT实现以太网(EoE)

3.11 EtherCAT实现文件读取(FoE)

3.12 ADS over EtherCAT (AoE)

4. 基础设施成本

5. EtherCAT 实施

5.1 主站

5.1.1 主站实施服务

5.1.2 主站样本代码

5.2 从站

5.2.1 EtherCAT Slave Controller

5.2.2 从站评估工具包

6. 小结

7. 参考文献

 

 

1. 引言 

页首

 

现场总线已成为自动化技术的集成组件,通过大量的实践试验和测试,如今已获得广泛应用。正是由于现场总线技术的普及,才使基于PC的控制系统得以广泛应用。然而,虽然控制器CPU的性能(尤其是IPC的性能)发展迅猛,但传统的现场总线系统正日趋成为控制系统性能发展的“瓶颈”。急需技术革新的另一个因素则是由于传统的解决方案并不十分理想。传统的方案是,按层划分的控制体系通常都由几个辅助系统所组成(周期系统):即实际控制任务、现场总线系统、I/O系统中的本地扩展总线或外围设备的简单本地固件周期。正常情况下,系统响应时间是控制器周期时间的3-5倍。 在现场总线系统之上的层面(即网络控制器)中,以太网往往在某种程度上代表着技术发展的水平。该方面目前较新的技术是驱动或I/O级的应用,即过去普遍采用现场总线系统的这些领域。这些应用类型要求系统具备良好的实时能力、适应小数据量通讯,并且价格经济。EtherCAT可以满足这些需求,并且还可以在I/O级实现因特网技术 (参见图1)。

图1: 传统现场总线系统响应时间

在现场总线系统 之上的层面(即网络控制器)中,以太网往往在某种程度上代表着技术发展的水平。该方面目前较新的技术是驱动或I/O级的应用,即过去普遍采用现场总线系统的这些领域。这些应用类型要求系统具备良好的实时能力、适应小数据量通讯,并且价格经济。EtherCAT可以满足这些需求,并且还可以在I/O级实现因特网技术。

1.1 以太网和实时能力 

目前,有许多方案力求实现以太网的实时能力。例如,CSMA/CD介质存取过程方案,即禁止高层协议访问过程,而由时间片或轮循方式所取代的一种解决方案;另一种解决方案则是通过专用交换机精确控制时间的方式来分配以太网包。这些方案虽然可以在某种程度上快速准确地将数据包传送给所连接的以太网节点,但是,输出或驱动控制器重定向所需要的时间以及读取输入数据所需要的时间都要受制于具体的实现方式。

如果将单个以太网 帧用于每个设备,那么,理论上讲,其可用数据率非常低。例如,最短的以太网帧为84字节(包括内部的包间隔IPG)。如果一个驱动器周期性地发送4字节的实际值和状态信息,并相应地同时接收4字节的命令值和控制字信息,那么,即便是总线负荷为100%(即:无限小的驱动响应时间)时,其可用数据率也只能达到4/84= 4.8%。如果按照10 µs的平均响应时间估计,则速率将下降到1.9%。对所有发送以太网 帧到每个设备(或期望帧来自每个设备)的实时以太网方式而言,都存在这些限制,但以太网帧内部所使用的协议则是例外。

2. EtherCAT 运行原理 

页首

 

EtherCAT技术突破了其他以太网解决方案的系统限制:通过该项技术,无需接收以太网数据包,将其解码,之后再将过程数据复制到各个设备。EtherCAT从站设备在报文经过其节点时读取相应的编址数据,同样,输入数据也是在报文经过时插入至报文中(参见图2)。整个过程中,报文只有几纳秒的时间延迟。

图 2: 过程数据插入至报文中

由于发送和接收的以太网帧压缩了大量的设备数据,所以有效数据率可达90%以上。100 Mb/s TX的全双工特性完全得以利用,因此,有效数据率可 大于100 Mb/s(即大于2 x 100 Mb/s的90%)(参见图3)。

图 3: 带宽利用率的比较

符合IEEE 802.3标准的以太网协议无需附加任何总线即可访问各个设备。耦合设备中的物理层可以将双绞线或光纤转换为LVDS(一种可供选择的以太网物理层标准[4,5]),以满足电子端子块等模块化设备的需求。这样,就可以非常经济地对模块化设备进行扩展了。之后,便可以如普通以太网一样,随时进行从底板物理层LVDS到100 Mb/s TX物理层的转换。

3. EtherCAT 技术特征 

页首

 

3.1 协议 

EtherCAT是用于过程数据的优化协议,凭借特殊的以太网类型,它可以在以太网帧内直接传送。EtherCAT帧可包括几个EtherCAT报文,每个报文都服务于一块逻辑过程映像区的特定内存区域,该区域最大可达4GB字节。数据顺序不依赖于网络中以太网端子的物理顺序,可任意编址。从站之间的广播、多播和通讯均得以实现。当需要实现最佳性能,且要求EtherCAT组件和控制器在同一子网操作时,则直接以太网帧传输就将派上用场。

然而,EtherCAT不仅限于单个子网的应用。EtherCAT UDP将EtherCAT协议封装为UDP/IP数据报文(参见图4),这就意味着,任何以太网协议堆栈的控制均可编址到EtherCAT系统之中,甚至通讯还可以通过路由器跨接到其它子网中。显然,在这种变体结构中,系统性能取决于控制的实时特性和以太网协议的实现方式。因为UDP数据报文仅在第一个站才完成解包,所以EtherCAT网络自身的响应时间基本不受影响。

图 4: EtherCAT:符合IEEE 802.3 [3]的标准帧

另外,根据主/从数据交换原理,EtherCAT也非常适合控制器之间(主/从)的通讯。自由编址的网络变量可用于过程数据以及参数、诊断、编程和各种远程控制服务,满足广泛的应用需求。主站/从站与主站/主站之间的数据通讯接口也相同。

从站到从站的通讯则有两种机制以供选择。一种机制是,上游设备和下游设备可以在同一周期内实现通讯,速度非常快。由于这种方法与拓扑结构相关,因此适用于由设备架构设计所决定的从站到从站的通讯,如打印或包装应用等。而对于自由配置的从站到从站的通讯,则可以采用第二种机制—数据通过主站进行中继。这种机制需要两个周期才能完成,但由于EtherCAT的性能非常卓越,因此该过程耗时仍然快于采用其他方法所耗费的时间。

按照文献[3]所述,EtherCAT仅使用标准的以太网帧,无任何压缩。因此,EtherCAT 以太网帧可以通过任何以太网MAC发送,并可以使用标准工具(如:监视器)。

3.2 拓扑 

EtherCAT几乎支持任何拓扑类型,包括线型、树型、星型等(参见图5)。通过现场总线而得名的总线结构或线型结构也可用于以太网,并且不受限于级联交换机或集线器的数量。

图 5: 灵活的拓扑结构:线型、树型或星型拓扑

最有效的系统连线方法是对线型、分支或树叉结构进行拓扑组合。因为所需接口在I/O 模块等很多设备中都已存在,所以无需附加交换机。当然,仍然可以使用传统的、基于以太网的星型拓扑结构。

还可以选择不同的电缆以提升连线的灵活性:灵活、经济的标准超五类以太网电缆可采用100BASE-TX模式传送信号;塑封光纤(PFO)则可用于特殊应用场合;还可通过交换机或介质转换器实现不同以太网连线(如:不同的光纤和铜电缆)的完整组合。

快速以太网的物理层(100BASE-TX )允许两个设备之间的最大电缆长度为100米。由于连接的设备数量可高达65535,因此,网络的容量几乎没有限制。

3.3. 分布时钟 

精确同步对于同时动作的分布式过程而言尤为重要。例如,几个伺服轴同时执行协调运动时,便是如此。

最有效的同步方法是精确排列分布时钟(请参阅IEEE 1588标准[6])。与完全同步通讯中通讯出现故障会立刻影响同步品质的情况相比,分布排列的时钟对于通讯系统中可能存在的相关故障延迟具有极好的容错性。

采用EtherCAT,数据交换就完全基于纯硬件机制。由于通讯采用了逻辑环结构 (借助于全双工快速以太网的物理层),主站时钟可以简单、精确地确定各个从站时钟传播的延迟偏移,反之亦然。分布时钟均基于该值进行调整,这意味着可以在网络范围内使用非常精确的、小于1 微秒的、确定性的同步误差时间基(参见图6)。而跨接工厂等外部同步则可以基于IEEE 1588 标准。

图 6: 同步性与一致性:相距电缆长度为有120米的两个分布系统,

带有300个节点的示波器比较

此外,高分辨率的分布时钟不仅可以用于同步,还可以提供数据采集的本地时间精确信息。当采样时间非常短暂时,即使是出现一个很小的位置测量瞬时同步偏差,也会导致速度计算出现较大的阶跃变化,例如,运动控制器通过顺序检测的位置计算速度便是如此。而在EtherCAT中,引入时间戳数据类型作为一个逻辑扩展,以太网所提供的巨大带宽使得高分辨率的系统时间得以与测量值进行链接。这样,速度的精确计算就不再受到通讯系统的同步误差值影响,其精度要高于基于自由同步误差的通讯测量技术。

3.4 性能 

EtherCAT使网络性能达到了一个新境界。借助于从站硬件集成和网络控制器主站的直接内存存取,整个协议的处理过程都在硬件中得以实现,因此,完全独立于协议堆栈的实时运行系统、CPU 性能或软件实现方式。1000个I/O的更新时间只需30 µs,其中还包括I/O周期时间(参见表1)。单个以太网帧最多可进行1486字节的过程数据交换,几乎相当于12000个数字输入和输出,而传送这些数据耗时仅为300 µs。

表 1: EtherCAT性能概貌

100个伺服轴的通讯也非常快速:可在每100µs中更新带有命令值和控制数据的所有轴的实际位置及状态,分布时钟技术使轴的同步偏差小于1微秒。而即使是在保证这种性能的情况下,带宽仍足以实现异步通讯,如TCP/IP、下载参数或上载诊断数据。

超高性能的EtherCAT技术可以实现传统的现场总线系统无法迄及的控制理念。EtherCAT使通讯技术和现代工业PC所具有的超强计算能力相适应,总线系统不再是控制理念的瓶颈,分布式I/O可能比大多数本地I/O接口运行速度更快。EtherCAT技术原理具有可塑性,并不束缚于100 M bps的通讯速率,甚至有可能扩展为1000 M bps的以太网。 

3.5 诊断 

现场总线系统的实际应用经验表明,有效性和试运行时间关键取决于诊断能力。只有快速而准确地检测出故障,并明确标明其所在位置,才能快速排除故障。因此,在EtherCAT的研发过程中,特别注重强化诊断特征。

试运行期间,驱动或I/O 端子等节点的实际配置需要与指定的配置进行匹配性检查,拓扑结构也需要与配置相匹配。由于整合的拓扑识别过程已延伸至各个端子,因此,这种检查不仅可以在系统启动期间进行,也可以在网络自动读取时进行(配置上载)。

可以通过评估CRC校验,有效检测出数据传送期间的位故障——32 位CRC多项式的最小汉明距为4。除断线检测和定位之外,EtherCAT系统的协议、物理层和拓扑结构还可以对各个传输段分别进行品质监视,与错误计数器关联的自动评估还可以对关键的网络段进行精确定位。此外,对于电磁干扰、连接器破损或电缆损坏等一些渐变或突变的错误源而言,即便它们尚未过度应变到网络自恢复能力的范围,也可对其进行检测与定位。

3.6 高可靠性 

选择冗余电缆可以满足快速增长的系统可靠性需求,以保证设备更换时不会导致网络瘫痪。您可以很经济地增加冗余特性,仅需在主站设备端增加使用一个标准的以太网端口(无需专用网卡或接口),并将单一的电缆从总线型拓扑结构转变为环型拓扑结构即可(见图7)。当设备或电缆发生故障时,也仅需一个周期即可完成切换。因此,即使是针对运动控制要求的应用,电缆出现故障时也不会有任何问题。EtherCAT也支持热备份的主站冗余。由于在环路中断时EtherCAT从站控制器芯片将立刻自动返回数据帧,一个设备的失败不会导致整个网络的瘫痪。例如,拖链设备可以配置为分支拓扑以防线缆断开。

图 7: 使用标准从站设备的低成本线缆冗余

3.7 安全性 

为了实现EtherCAT安全数据通信,EtherCAT安全通信协议已经在ETG组织内部公开。EtherCAT被用作传输安全和非安全数据的单一通道。传输介质被认为是“黑色通道”而不被包括在安全协议中(见图8)。EtherCAT过程数据中的安全数据报文包括安全过程数据和所要求的数据备份。这个“容器”在设备的应用层被安全地解析。通信仍然是单一通道的。这符合IEC61784-3附件中的模型A。

图 8: 使用黑色通道的EtherCAT安全通信软件构件

EtherCAT安全协议已经由德国技术监督局(TÜV SÜD Rail)评估为满足IEC61508定义的SIL3等级的安全设备之间传输过程数据的通信协议。设备上实施EtherCAT安全协议必须满足安全目标的需求。相应的产品相关要求也必须考虑进来。

图 9: EtherCAT安全系统

图9中的应用示例受益于这种技术。安全元件在自动化系统中所需要的任意地方都可以使用。系统中可以使用不同规模的本地输入和输出元件。可以根据需求使用安全或非安全总线端子扩展额外的输入和输出。安全逻辑也嵌入到网络当中。这样不用安全扩展的标准PLC可以继续处理控制任务。安全输入和输出功能需要的本地安全逻辑由智能化的安全总线端子实现。这节约了昂贵的安全PLC所带来的成本,并可以根据当前任务随意裁剪逻辑功能。只有安全EtherCAT主站和所分配的安全从站通过非安全的标准PLC路由。

本协议在安全数据长度,通信介质或波特率方面么有限制。

EtherCAT被用作“黑色通道”,即,通信系统在安全处理中没有任何作用。

协议被鉴定符合IEC61508定义的SIL3等级

提供EtherCAT安全功能的产品已经于2005年就上市了。

3.8 EtherCAT 取代PCI 

随着PC组件急剧向小型化方向发展,工业PC的体积日趋取决于插槽的数目。而快速以太网的带宽和EtherCAT通讯硬件的过程数据长度则为该领域的发展提供了新的可能性——IPC 中的传统接口现在可以转变为集成的EtherCAT接口端子(参见图10)。除了可以对分布式I/O进行编址,还可以对驱动和控制单元以及现场总线主站、快速串行接口、网关和其它通讯接口等复合系统进行编址。

图 10: 分布式现场总线接口

即使是其他无协议限制的以太网设备变体,也可以通过分布式交换机端口设备进行连接。由于一个以太网接口足以满足整个外围设备的通讯 (参见图11),因此,这不仅极大地精简了IPC主机的体积和外观,而且也降低了IPC主机的成本。

图 11: EtherCAT使控制器的体积显著减小

3.9 设备行规 

设备行规描述了设备的应用参数和功能特性,如设备类别相关的机器状态等。现场总线技术已经为I/O设备、驱动、阀等许多设备类别提供了可利用的设备行规。用户非常熟悉这些行规以及相关的参数和工具,因此,EtherCAT无需为这些设备类别重新开发设备行规,而是为现有的设备行规提供了简单的接口。该特性使得用户和设备制造商可以轻松完成从现有的现场总线到EtherCAT技术的转换过程。

3.9.1 EtherCAT实现CANopen (CoE) 

CANopen©设备和应用行规广泛用于多种设备类别和应用,如I/O组件、驱动、编码器、比例阀、液压控制器,以及用于塑料或纺织行业的应用行规等。EtherCAT可以提供与CANopen机制[7]相同的通讯机制,包括对象字典、PDO(过程数据对象)、SDO(服务数据对象),甚至于网络管理。因此,在已经安装了CANopen的设备中,仅需稍加变动即可轻松实现EtherCAT,绝大部分的CANopen©固件都得以重复利用。并且,可以选择性地扩展对象,以便利用EtherCAT所提供的巨大带宽。

3.9.2 EtherCAT实施伺服驱动 设备行规IEC 61491 (SoE) 

SERCOS interface™ 是全球公认的、用于高性能实时运行系统的通讯接口,尤其适用于运动控制的应用场合。用于伺服驱动和通讯技术的SERCOS™框架属于IEC 61491标准[8] 的范畴。该伺服驱动框架可以轻松地映射到 EtherCAT中,嵌入于驱动中的服务通道、全部参数存取以及功能都基于EtherCAT邮箱(参见图12)。在此,关注焦点还是EtherCAT与现有协议的兼容性(IDN的存取值、属性、名称、单位等),以及与数据长度限制相关的扩展性。过程数据,即形式为AT和MDT的SERCOS™数据,都使用EtherCAT从站控制器机制进行传送,其映射与SERCOS映射相似。并且,EtherCAT从站的设备状态也可以非常容易地映射为SERCOS™协议状态。EtherCAT从站状态机可以很容易地映射到SERCOS™协议的通信阶段。EtherCAT为这种在CNC行业中广泛使用的设备行规提供了先进的实时以太网技术。这种设备行规的优点与EtherCAT分布时钟提供的优点相结合,保证了网络范围内精确时钟同步。可以任意传输位置命令,速度命令或扭矩命令。取决于实现方式,甚至可能继续使用相同的设备配置工具。

图 12: 同时并存的多个设备行规和协议

3.10 EtherCAT实现以太网(EoE) 

EtherCAT技术不仅完全兼容以太网,而且在“设计”之初就具备良好的开放性特征——该协议可以在相同的物理层网络中包容其它基于以太网的服务和协议,通常可将其性能损失降到最小。对以太网的设备类型没有限制,设备可通过交换机端口在EtherCAT段内进行连接。以太网帧通过EtherCAT协议开通隧道,这也正是VPN、 PPPoE (DSL) 等因特网应用所普遍采取的方法。EtherCAT网络对以太网设备而言是完全透明的,其实时特性也不会发生畸变(参见图13)。

图 13: 对所有以太网协议完全透明

EtherCAT设备可以包容其它的以太网协议,因此具备标准以太网设备的一切特性。主站的作用与第2层交换机所起的作用一样,可按照编址信息将以太网帧重新定向到相应的设备。因此,集成万维网服务器、电子邮件和FTP 传送等所有的因特网技术都可以在EtherCAT的环境中得以应用。

3.11 EtherCAT实现文件读取(FoE) 

这种简单的协议与TFTP类似,允许存取设备中的任何数据结构。因此,无论设备是否支持TCP/IP,都有可能将标准化固件上载到设备上。

3.12 ADS over EtherCAT (AoE) 

ADS over EtherCAT (AoE)是由EtherCAT规范定义的客户端-服务器邮箱协议。尽管CoE协议提供了详尽的描述,但AoE则更适合路由与并行服务的应用:通过网关设备访问子网络,如EtherCAT至CANopen® 或 EtherCAT至IO-Link™ 网关设备。AoE使EtherCAT主站应用(如PLC程序)可以访问所属CANopen® 或 IO-Link™从站的各个参数。AoE路由机制开销远低于因特网协议(IP)所定义的开销,并且发送方和接收方寻址参数始终包含在AoE报文中。因此,EtherCAT主站和从站端的实施更为精简。AoE也通过EtherCAT自动化协议(EAP)进行非周期通信的标准化,从而为上位机MES系统或主计算机、EtherCAT主站及其从属的现有设备之间提供无缝通信。同时,AoE也提供了从远程诊断工具获取EtherCAT网络诊断信息的标准化方法。

4. 基础设施成本 

页首

 

由于EtherCAT无需集线器和交换机,因此,在环境条件允许的情况下,可以节省电源、安装费用等设备方面的投资,只需使用标准的以太网电缆和价格低廉的标准连接器即可。如果环境条件有特殊要求,则可以依照IEC标准,使用增强密封保护等级的连接器。

5. EtherCAT 实施 

页首

 

EtherCAT技术是面向经济的设备而开发的,如I/O 端子、传感器和嵌入式控制器等。EtherCAT使用遵循IEEE802.3标准的以太网帧。这些帧由主站设备发送,从站设备只是在以太网帧经过其所在位置时才提取和/或插入数据。因此,EtherCAT 使用标准的以太网MAC,这正是其在主站设备方面智能化的表现。同样,EtherCAT在从站控制器中使用专用芯片,这也是其在从站设备方面智能化的表现——无论本地处理能力是否强大或软件品质好坏与否,专用芯片均可在硬件中处理过程数据协议,并提供最佳实时性能。

5.1 主站 

EtherCAT可以在单个以太网帧中最多实现1486字节的分布式过程数据通讯。其它解决方案一般是,主站设备需要在每个网络周期中为各个节点处理、发送和接收帧。而EtherCAT系统与此不同之处在于,在通常情况下,每周期仅需要一个或两个帧即可完成所有节点的全部通讯,因此,EtherCAT主站不需要专用的通讯处理器。主站功能几乎不会给主机CPU带来任何负担,轻松处理这些任务的同时,还可以处理应用程序,因此EtherCAT 无需使用昂贵的专用有源插接卡,只需使用无源的NIC卡或主板集成的以太网MAC设备即可。EtherCAT主站很容易实现,尤其适用于中小规模的控制系统和有明确规定的应用场合。

例如,如果某个单个过程映像的PLC没有超过1486 字节,那么在其周期时间内循环发送这个以太网帧就足够了。因为报文头运行时不会发生变化,所以只需将常数报文头插入到过程映像中,并将结果传送到以太网控制器即可。

EtherCAT映射不是在主站产生,而是在从站产生(外围设备将数据插入所经以太网帧的相应位置),因此,此时过程映像已经完成排序。该特性进一步减轻了主机CPU的负担。可以看到,EtherCAT主站完全在主机CPU中采用软件方式实现,相比之下,传统的慢速现场总线系统通过有源插接卡方可实现主站的方式则要占用更多的资源,甚至服务于DPRAM的有源卡本身也将占用可观的主机资源。

系统配置工具(通过生产商获取)可提供包括相应的标准 XML 格式启动顺序在内的网络和设备参数。

图 14: 主站实施的单个过程映像

5.1.1 主站实施服务 

已经在各种实时操作系统上实现了EtherCAT主站,包括但并不限于:eCos, INtime, MICROWARE OS-9, MQX, On Time RTOS-32, Proconos OS, Real-Time Java, RT Kernel, RT-Linux, RTX, RTXC, RTAI Linux, PikeOS, Linux with RT-Preempt, QNX, VxWin + CeWin, VxWorks, Windows CE, Windows XP/XPE with CoDeSys SP RTE, Windows NT/NTE/2000/XP/XPE/Vista with TwinCAT RTE, Windows 7 and XENOMAI Linux.

可以获得开源主站协议栈,作为示例代码或商业软件。也有各种公司提供各种硬件平台上的实施服务。可以在EtherCAT网站上的产品区找到快速增长的供应商信息[1]。

5.1.2 主站样本代码 

另一种EtherCAT主站的实现方式是使用样本代码,花费不高。软件以源代码形式提供,包括所有的EtherCAT主站功能,甚至还包括EoE(EtherCAT实现以太网)功能(见图15)。开发人员只要把这些应用于Windows环境的代码与目标硬件及所使用的RTOS加以匹配就可以了。该软件代码已经成功应用于多个系统。

图 15: 主站样本代码结构

5.2 从站 

EtherCAT从站设备使用一个价格低廉的从站控制器芯片ESC。从站不需要微处理器就可以实现EtherCAT通信。可以通过I/O接口实现的简单设备可以只由ESC和其下的PHY,变压器和RJ45接头。给从站的过程数据接口是32位的I/O接口。这种从站没有可配置的参数,所以不需要软件或邮箱协议。EtherCAT状态机由ESC处理。ESC的启动信息从EEPROM中读取,它也支持从站的身份识别。更复杂的可配置从站有使用一个CPU。这个CPU和ESC之间使用8位或16位并行接口或串行SPI接口。要求的CPU性能取决于从站的应用,EtherCAT协议软件在其上运行。EtherCAT协议栈管理EtherCAT状态机和应用层协议,可以实现CoE协议和支持固件下载的FoE协议。EoE协议也可以实施。

5.2.1 EtherCAT Slave Controller 

目前,有多家制造商均提供EtherCAT从站控制器。通过价格低廉的FPGA,也可实现从站控制器的功能,可以购买授权以获取相应的二进制代码。

从站控制器通常都有一个内部的DPRAM,并提供存取这些应用内存的接口范围:

串行SPI(串行外围接口)主要用于数量较小的过程数据设备,如模拟量I/O模块、传感器、编码器和简单驱动等。该接口通常使用8位微控制器,如微型芯片PIC、DSP、Intel 80C51等(见图16)。

8/16位微控制器并行接口与带有DPRAM接口的传统现场总线控制器接口相对应,尤其适用于数据量较大的复杂设备。通常情况下,微控制器使用的接口包括Infineon 80C16x、Intel 80x86、Hitachi SH1、ST10、ARM和TI TMS320等系列(见图16)。

32位并行I/O接口不仅可以连接多达32位数字输入/输出,而且也适用于简单的传感器或执行器的32位数据操作。这类设备无需主机CPU(见图17)。

图 16: 从站硬件:带主机CPU的FPGA

图 17: 从站硬件:带直接I/O的FPGA

关于EtherCAT从站控制器的最新信息,请登录EtherCAT网站[1]。

5.2.2 从站评估工具包 

倍福公司提供的从站评估工具包使接口操作变得简便易行。由于采用了EtherCAT,无需功能强大的通讯处理器,因此,可将从站评估工具包中的8位微处理器作为主机CPU使用。该工具包还包括源代码形式的从站主机软件(相当于协议堆栈)和参考主站软件包(TwinCAT)。

6. 小结 

页首

 

EtherCAT 拥有杰出的通讯性能,接线非常简单,并对其它协议开放。传统的现场总线系统已达到了极限,而EtherCAT则突破建立了新的技术标准——30 µs内可以更新1000个I/O数据,可选择双绞线或光纤,并利用以太网和因特网技术实现垂直优化集成。使用 EtherCAT,可以用简单的线型拓扑结构替代昂贵的星型以太网拓扑结构,无需昂贵的基础组件。EtherCAT还可以使用传统的交换机连接方式,以集成其它的以太网设备。其它的实时以太网方案需要与控制器进行特殊连接,而EtherCAT只需要价格低廉的标准以太网卡(NIC) 便可实现。

EtherCAT拥有多种机制,支持主站到从站、从站到从站以及主站到主站之间的通讯(参见图18)。它实现了安全功能,采用技术可行且经济实用的方法,使以太网技术可以向下延伸至I/O级。EtherCAT功能优越,可以完全兼容以太网,可将因特网技术嵌入到简单设备中,并最大化地利用了以太网所提供的巨大带宽,是一种实时性能优越且成本低廉的网络技术。

图 19: 网络结构形式多样

7. 参考文献 

页首

 

[1]

EtherCAT Technology Group (ETG)

http://www.ethercat.org

[2]

IEC 61158-3/4/5/6-12 (Ed.1.0), Industrial communication networks – Fieldbus specifications – Part 3-12: Data-link layer service definition – Part 4-12: Data-link layer protocol specification – Part 5-12: Application layer service definition – Part 6-12: Application layer protocol specification – Type 12 elements (EtherCAT)

[3]

IEEE 802.3: Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications

[4]

IEEE 802.3ae-2002: CSMA/CD Access Method and Physical Layer Specifications: Media Access Control (MAC) Parameters, Physical Layers, and Management Parameters for 10 Gb/s Operation

[5]

ANSI/TIA/EIA-644-A, Electrical Characteristics of Low Voltage Differential Signaling (LVDS) Interface Circuits

[6]

IEEE 1588-2002: IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems

[7]

EN 50325-4: Industrial communications subsystem based on ISO 11898 (CAN) for controller-device interfaces. Part 4: CANopen

[8]

IEC 61800-7-301/304 (Ed.1.0), Adjustable speed electrical power drive systems – Part 7-301: Generic interface and use of profiles for power drive systems – Mapping of profile type 1 to network technologies – Part 7-304: Generic interface and use of profiles for power drive systems – Mapping of profile type 4 to network technologies

[9]

SEMI E54.20: Standard for Sensor/Actuator Network Communications for EtherCAT.

http://www.semi.org

[10]

IEC 61784-2 (Ed.1.0), Industrial communication networks – Profiles – Part 2: Additional fieldbus profiles for real-time networks based on ISO/IEC 8802-3

 

EtherCAT样本

了解更多关于最快的“工业以太网现场总线”的详细信息

中文

英文

德文

西班牙语

意大利文

法语

日文

韩文

EtherCAT多媒体视频

EtherCAT技术协会

工业以太网通信技术EtherCAT运行原理

EtherCAT技术简介

EtherCAT Technology Group | 技术概览

EtherCAT Technology Group | 技术概览

 

EN

|

DE

|

ES

|

IT

|

CN

|

JP

主页

新闻

市场活动

新闻发布

联系方式

会员专区

搜索  

技术概览 技术概览 为何使用EtherCAT? 协会组织 常见问题 会员相关 供应商ID 产品指南 资料下载 一致性测试 EtherCAT G EtherCAT P Safety over EtherCAT EtherCAT 和 TSN 技术汇编 开发者论坛 知识库

退出

EtherCAT - 以太网现场总线

本文深入阐述了基于以太网现场总线系统的EtherCAT (Ethernet for Control Automation Technology)技术。EtherCAT为现场总线技术领域树立了新的性能标准,具备灵活的网络拓扑结构,系统配置简单,和现场总线系统一样操作直观简便。另外,由于EtherCAT实施的成本低廉,因此使系统得以在过去无法应用现场总线网络的场合中选用该现场总线。

 

1. 引言

1.1 以太网和实时能力

2. EtherCAT 运行原理

3. EtherCAT 技术特征

3.1 协议

3.2 拓扑

3.3 分布时钟

3.4 性能

3.5 诊断

3.6 高可靠性

3.7 安全性

3.8 EtherCAT 取代PCI

3.9 设备行规

3.9.1 EtherCAT实现CAN总线应用层协议 (CoE)

3.9.2 EtherCAT实现伺服驱动设备行规IEC61491 (SoE)

3.10 EtherCAT实现以太网(EoE)

3.11 EtherCAT实现文件读取(FoE)

3.12 ADS over EtherCAT (AoE)

4. 基础设施成本

5. EtherCAT 实施

5.1 主站

5.1.1 主站实施服务

5.1.2 主站样本代码

5.2 从站

5.2.1 EtherCAT Slave Controller

5.2.2 从站评估工具包

6. 小结

7. 参考文献

 

 

1. 引言 

页首

 

现场总线已成为自动化技术的集成组件,通过大量的实践试验和测试,如今已获得广泛应用。正是由于现场总线技术的普及,才使基于PC的控制系统得以广泛应用。然而,虽然控制器CPU的性能(尤其是IPC的性能)发展迅猛,但传统的现场总线系统正日趋成为控制系统性能发展的“瓶颈”。急需技术革新的另一个因素则是由于传统的解决方案并不十分理想。传统的方案是,按层划分的控制体系通常都由几个辅助系统所组成(周期系统):即实际控制任务、现场总线系统、I/O系统中的本地扩展总线或外围设备的简单本地固件周期。正常情况下,系统响应时间是控制器周期时间的3-5倍。 在现场总线系统之上的层面(即网络控制器)中,以太网往往在某种程度上代表着技术发展的水平。该方面目前较新的技术是驱动或I/O级的应用,即过去普遍采用现场总线系统的这些领域。这些应用类型要求系统具备良好的实时能力、适应小数据量通讯,并且价格经济。EtherCAT可以满足这些需求,并且还可以在I/O级实现因特网技术 (参见图1)。

图1: 传统现场总线系统响应时间

在现场总线系统 之上的层面(即网络控制器)中,以太网往往在某种程度上代表着技术发展的水平。该方面目前较新的技术是驱动或I/O级的应用,即过去普遍采用现场总线系统的这些领域。这些应用类型要求系统具备良好的实时能力、适应小数据量通讯,并且价格经济。EtherCAT可以满足这些需求,并且还可以在I/O级实现因特网技术。

1.1 以太网和实时能力 

目前,有许多方案力求实现以太网的实时能力。例如,CSMA/CD介质存取过程方案,即禁止高层协议访问过程,而由时间片或轮循方式所取代的一种解决方案;另一种解决方案则是通过专用交换机精确控制时间的方式来分配以太网包。这些方案虽然可以在某种程度上快速准确地将数据包传送给所连接的以太网节点,但是,输出或驱动控制器重定向所需要的时间以及读取输入数据所需要的时间都要受制于具体的实现方式。

如果将单个以太网 帧用于每个设备,那么,理论上讲,其可用数据率非常低。例如,最短的以太网帧为84字节(包括内部的包间隔IPG)。如果一个驱动器周期性地发送4字节的实际值和状态信息,并相应地同时接收4字节的命令值和控制字信息,那么,即便是总线负荷为100%(即:无限小的驱动响应时间)时,其可用数据率也只能达到4/84= 4.8%。如果按照10 µs的平均响应时间估计,则速率将下降到1.9%。对所有发送以太网 帧到每个设备(或期望帧来自每个设备)的实时以太网方式而言,都存在这些限制,但以太网帧内部所使用的协议则是例外。

2. EtherCAT 运行原理 

页首

 

EtherCAT技术突破了其他以太网解决方案的系统限制:通过该项技术,无需接收以太网数据包,将其解码,之后再将过程数据复制到各个设备。EtherCAT从站设备在报文经过其节点时读取相应的编址数据,同样,输入数据也是在报文经过时插入至报文中(参见图2)。整个过程中,报文只有几纳秒的时间延迟。

图 2: 过程数据插入至报文中

由于发送和接收的以太网帧压缩了大量的设备数据,所以有效数据率可达90%以上。100 Mb/s TX的全双工特性完全得以利用,因此,有效数据率可 大于100 Mb/s(即大于2 x 100 Mb/s的90%)(参见图3)。

图 3: 带宽利用率的比较

符合IEEE 802.3标准的以太网协议无需附加任何总线即可访问各个设备。耦合设备中的物理层可以将双绞线或光纤转换为LVDS(一种可供选择的以太网物理层标准[4,5]),以满足电子端子块等模块化设备的需求。这样,就可以非常经济地对模块化设备进行扩展了。之后,便可以如普通以太网一样,随时进行从底板物理层LVDS到100 Mb/s TX物理层的转换。

3. EtherCAT 技术特征 

页首

 

3.1 协议 

EtherCAT是用于过程数据的优化协议,凭借特殊的以太网类型,它可以在以太网帧内直接传送。EtherCAT帧可包括几个EtherCAT报文,每个报文都服务于一块逻辑过程映像区的特定内存区域,该区域最大可达4GB字节。数据顺序不依赖于网络中以太网端子的物理顺序,可任意编址。从站之间的广播、多播和通讯均得以实现。当需要实现最佳性能,且要求EtherCAT组件和控制器在同一子网操作时,则直接以太网帧传输就将派上用场。

然而,EtherCAT不仅限于单个子网的应用。EtherCAT UDP将EtherCAT协议封装为UDP/IP数据报文(参见图4),这就意味着,任何以太网协议堆栈的控制均可编址到EtherCAT系统之中,甚至通讯还可以通过路由器跨接到其它子网中。显然,在这种变体结构中,系统性能取决于控制的实时特性和以太网协议的实现方式。因为UDP数据报文仅在第一个站才完成解包,所以EtherCAT网络自身的响应时间基本不受影响。

图 4: EtherCAT:符合IEEE 802.3 [3]的标准帧

另外,根据主/从数据交换原理,EtherCAT也非常适合控制器之间(主/从)的通讯。自由编址的网络变量可用于过程数据以及参数、诊断、编程和各种远程控制服务,满足广泛的应用需求。主站/从站与主站/主站之间的数据通讯接口也相同。

从站到从站的通讯则有两种机制以供选择。一种机制是,上游设备和下游设备可以在同一周期内实现通讯,速度非常快。由于这种方法与拓扑结构相关,因此适用于由设备架构设计所决定的从站到从站的通讯,如打印或包装应用等。而对于自由配置的从站到从站的通讯,则可以采用第二种机制—数据通过主站进行中继。这种机制需要两个周期才能完成,但由于EtherCAT的性能非常卓越,因此该过程耗时仍然快于采用其他方法所耗费的时间。

按照文献[3]所述,EtherCAT仅使用标准的以太网帧,无任何压缩。因此,EtherCAT 以太网帧可以通过任何以太网MAC发送,并可以使用标准工具(如:监视器)。

3.2 拓扑 

EtherCAT几乎支持任何拓扑类型,包括线型、树型、星型等(参见图5)。通过现场总线而得名的总线结构或线型结构也可用于以太网,并且不受限于级联交换机或集线器的数量。

图 5: 灵活的拓扑结构:线型、树型或星型拓扑

最有效的系统连线方法是对线型、分支或树叉结构进行拓扑组合。因为所需接口在I/O 模块等很多设备中都已存在,所以无需附加交换机。当然,仍然可以使用传统的、基于以太网的星型拓扑结构。

还可以选择不同的电缆以提升连线的灵活性:灵活、经济的标准超五类以太网电缆可采用100BASE-TX模式传送信号;塑封光纤(PFO)则可用于特殊应用场合;还可通过交换机或介质转换器实现不同以太网连线(如:不同的光纤和铜电缆)的完整组合。

快速以太网的物理层(100BASE-TX )允许两个设备之间的最大电缆长度为100米。由于连接的设备数量可高达65535,因此,网络的容量几乎没有限制。

3.3. 分布时钟 

精确同步对于同时动作的分布式过程而言尤为重要。例如,几个伺服轴同时执行协调运动时,便是如此。

最有效的同步方法是精确排列分布时钟(请参阅IEEE 1588标准[6])。与完全同步通讯中通讯出现故障会立刻影响同步品质的情况相比,分布排列的时钟对于通讯系统中可能存在的相关故障延迟具有极好的容错性。

采用EtherCAT,数据交换就完全基于纯硬件机制。由于通讯采用了逻辑环结构 (借助于全双工快速以太网的物理层),主站时钟可以简单、精确地确定各个从站时钟传播的延迟偏移,反之亦然。分布时钟均基于该值进行调整,这意味着可以在网络范围内使用非常精确的、小于1 微秒的、确定性的同步误差时间基(参见图6)。而跨接工厂等外部同步则可以基于IEEE 1588 标准。

图 6: 同步性与一致性:相距电缆长度为有120米的两个分布系统,

带有300个节点的示波器比较

此外,高分辨率的分布时钟不仅可以用于同步,还可以提供数据采集的本地时间精确信息。当采样时间非常短暂时,即使是出现一个很小的位置测量瞬时同步偏差,也会导致速度计算出现较大的阶跃变化,例如,运动控制器通过顺序检测的位置计算速度便是如此。而在EtherCAT中,引入时间戳数据类型作为一个逻辑扩展,以太网所提供的巨大带宽使得高分辨率的系统时间得以与测量值进行链接。这样,速度的精确计算就不再受到通讯系统的同步误差值影响,其精度要高于基于自由同步误差的通讯测量技术。

3.4 性能 

EtherCAT使网络性能达到了一个新境界。借助于从站硬件集成和网络控制器主站的直接内存存取,整个协议的处理过程都在硬件中得以实现,因此,完全独立于协议堆栈的实时运行系统、CPU 性能或软件实现方式。1000个I/O的更新时间只需30 µs,其中还包括I/O周期时间(参见表1)。单个以太网帧最多可进行1486字节的过程数据交换,几乎相当于12000个数字输入和输出,而传送这些数据耗时仅为300 µs。

表 1: EtherCAT性能概貌

100个伺服轴的通讯也非常快速:可在每100µs中更新带有命令值和控制数据的所有轴的实际位置及状态,分布时钟技术使轴的同步偏差小于1微秒。而即使是在保证这种性能的情况下,带宽仍足以实现异步通讯,如TCP/IP、下载参数或上载诊断数据。

超高性能的EtherCAT技术可以实现传统的现场总线系统无法迄及的控制理念。EtherCAT使通讯技术和现代工业PC所具有的超强计算能力相适应,总线系统不再是控制理念的瓶颈,分布式I/O可能比大多数本地I/O接口运行速度更快。EtherCAT技术原理具有可塑性,并不束缚于100 M bps的通讯速率,甚至有可能扩展为1000 M bps的以太网。 

3.5 诊断 

现场总线系统的实际应用经验表明,有效性和试运行时间关键取决于诊断能力。只有快速而准确地检测出故障,并明确标明其所在位置,才能快速排除故障。因此,在EtherCAT的研发过程中,特别注重强化诊断特征。

试运行期间,驱动或I/O 端子等节点的实际配置需要与指定的配置进行匹配性检查,拓扑结构也需要与配置相匹配。由于整合的拓扑识别过程已延伸至各个端子,因此,这种检查不仅可以在系统启动期间进行,也可以在网络自动读取时进行(配置上载)。

可以通过评估CRC校验,有效检测出数据传送期间的位故障——32 位CRC多项式的最小汉明距为4。除断线检测和定位之外,EtherCAT系统的协议、物理层和拓扑结构还可以对各个传输段分别进行品质监视,与错误计数器关联的自动评估还可以对关键的网络段进行精确定位。此外,对于电磁干扰、连接器破损或电缆损坏等一些渐变或突变的错误源而言,即便它们尚未过度应变到网络自恢复能力的范围,也可对其进行检测与定位。

3.6 高可靠性 

选择冗余电缆可以满足快速增长的系统可靠性需求,以保证设备更换时不会导致网络瘫痪。您可以很经济地增加冗余特性,仅需在主站设备端增加使用一个标准的以太网端口(无需专用网卡或接口),并将单一的电缆从总线型拓扑结构转变为环型拓扑结构即可(见图7)。当设备或电缆发生故障时,也仅需一个周期即可完成切换。因此,即使是针对运动控制要求的应用,电缆出现故障时也不会有任何问题。EtherCAT也支持热备份的主站冗余。由于在环路中断时EtherCAT从站控制器芯片将立刻自动返回数据帧,一个设备的失败不会导致整个网络的瘫痪。例如,拖链设备可以配置为分支拓扑以防线缆断开。

图 7: 使用标准从站设备的低成本线缆冗余

3.7 安全性 

为了实现EtherCAT安全数据通信,EtherCAT安全通信协议已经在ETG组织内部公开。EtherCAT被用作传输安全和非安全数据的单一通道。传输介质被认为是“黑色通道”而不被包括在安全协议中(见图8)。EtherCAT过程数据中的安全数据报文包括安全过程数据和所要求的数据备份。这个“容器”在设备的应用层被安全地解析。通信仍然是单一通道的。这符合IEC61784-3附件中的模型A。

图 8: 使用黑色通道的EtherCAT安全通信软件构件

EtherCAT安全协议已经由德国技术监督局(TÜV SÜD Rail)评估为满足IEC61508定义的SIL3等级的安全设备之间传输过程数据的通信协议。设备上实施EtherCAT安全协议必须满足安全目标的需求。相应的产品相关要求也必须考虑进来。

图 9: EtherCAT安全系统

图9中的应用示例受益于这种技术。安全元件在自动化系统中所需要的任意地方都可以使用。系统中可以使用不同规模的本地输入和输出元件。可以根据需求使用安全或非安全总线端子扩展额外的输入和输出。安全逻辑也嵌入到网络当中。这样不用安全扩展的标准PLC可以继续处理控制任务。安全输入和输出功能需要的本地安全逻辑由智能化的安全总线端子实现。这节约了昂贵的安全PLC所带来的成本,并可以根据当前任务随意裁剪逻辑功能。只有安全EtherCAT主站和所分配的安全从站通过非安全的标准PLC路由。

本协议在安全数据长度,通信介质或波特率方面么有限制。

EtherCAT被用作“黑色通道”,即,通信系统在安全处理中没有任何作用。

协议被鉴定符合IEC61508定义的SIL3等级

提供EtherCAT安全功能的产品已经于2005年就上市了。

3.8 EtherCAT 取代PCI 

随着PC组件急剧向小型化方向发展,工业PC的体积日趋取决于插槽的数目。而快速以太网的带宽和EtherCAT通讯硬件的过程数据长度则为该领域的发展提供了新的可能性——IPC 中的传统接口现在可以转变为集成的EtherCAT接口端子(参见图10)。除了可以对分布式I/O进行编址,还可以对驱动和控制单元以及现场总线主站、快速串行接口、网关和其它通讯接口等复合系统进行编址。

图 10: 分布式现场总线接口

即使是其他无协议限制的以太网设备变体,也可以通过分布式交换机端口设备进行连接。由于一个以太网接口足以满足整个外围设备的通讯 (参见图11),因此,这不仅极大地精简了IPC主机的体积和外观,而且也降低了IPC主机的成本。

图 11: EtherCAT使控制器的体积显著减小

3.9 设备行规 

设备行规描述了设备的应用参数和功能特性,如设备类别相关的机器状态等。现场总线技术已经为I/O设备、驱动、阀等许多设备类别提供了可利用的设备行规。用户非常熟悉这些行规以及相关的参数和工具,因此,EtherCAT无需为这些设备类别重新开发设备行规,而是为现有的设备行规提供了简单的接口。该特性使得用户和设备制造商可以轻松完成从现有的现场总线到EtherCAT技术的转换过程。

3.9.1 EtherCAT实现CANopen (CoE) 

CANopen©设备和应用行规广泛用于多种设备类别和应用,如I/O组件、驱动、编码器、比例阀、液压控制器,以及用于塑料或纺织行业的应用行规等。EtherCAT可以提供与CANopen机制[7]相同的通讯机制,包括对象字典、PDO(过程数据对象)、SDO(服务数据对象),甚至于网络管理。因此,在已经安装了CANopen的设备中,仅需稍加变动即可轻松实现EtherCAT,绝大部分的CANopen©固件都得以重复利用。并且,可以选择性地扩展对象,以便利用EtherCAT所提供的巨大带宽。

3.9.2 EtherCAT实施伺服驱动 设备行规IEC 61491 (SoE) 

SERCOS interface™ 是全球公认的、用于高性能实时运行系统的通讯接口,尤其适用于运动控制的应用场合。用于伺服驱动和通讯技术的SERCOS™框架属于IEC 61491标准[8] 的范畴。该伺服驱动框架可以轻松地映射到 EtherCAT中,嵌入于驱动中的服务通道、全部参数存取以及功能都基于EtherCAT邮箱(参见图12)。在此,关注焦点还是EtherCAT与现有协议的兼容性(IDN的存取值、属性、名称、单位等),以及与数据长度限制相关的扩展性。过程数据,即形式为AT和MDT的SERCOS™数据,都使用EtherCAT从站控制器机制进行传送,其映射与SERCOS映射相似。并且,EtherCAT从站的设备状态也可以非常容易地映射为SERCOS™协议状态。EtherCAT从站状态机可以很容易地映射到SERCOS™协议的通信阶段。EtherCAT为这种在CNC行业中广泛使用的设备行规提供了先进的实时以太网技术。这种设备行规的优点与EtherCAT分布时钟提供的优点相结合,保证了网络范围内精确时钟同步。可以任意传输位置命令,速度命令或扭矩命令。取决于实现方式,甚至可能继续使用相同的设备配置工具。

图 12: 同时并存的多个设备行规和协议

3.10 EtherCAT实现以太网(EoE) 

EtherCAT技术不仅完全兼容以太网,而且在“设计”之初就具备良好的开放性特征——该协议可以在相同的物理层网络中包容其它基于以太网的服务和协议,通常可将其性能损失降到最小。对以太网的设备类型没有限制,设备可通过交换机端口在EtherCAT段内进行连接。以太网帧通过EtherCAT协议开通隧道,这也正是VPN、 PPPoE (DSL) 等因特网应用所普遍采取的方法。EtherCAT网络对以太网设备而言是完全透明的,其实时特性也不会发生畸变(参见图13)。

图 13: 对所有以太网协议完全透明

EtherCAT设备可以包容其它的以太网协议,因此具备标准以太网设备的一切特性。主站的作用与第2层交换机所起的作用一样,可按照编址信息将以太网帧重新定向到相应的设备。因此,集成万维网服务器、电子邮件和FTP 传送等所有的因特网技术都可以在EtherCAT的环境中得以应用。

3.11 EtherCAT实现文件读取(FoE) 

这种简单的协议与TFTP类似,允许存取设备中的任何数据结构。因此,无论设备是否支持TCP/IP,都有可能将标准化固件上载到设备上。

3.12 ADS over EtherCAT (AoE) 

ADS over EtherCAT (AoE)是由EtherCAT规范定义的客户端-服务器邮箱协议。尽管CoE协议提供了详尽的描述,但AoE则更适合路由与并行服务的应用:通过网关设备访问子网络,如EtherCAT至CANopen® 或 EtherCAT至IO-Link™ 网关设备。AoE使EtherCAT主站应用(如PLC程序)可以访问所属CANopen® 或 IO-Link™从站的各个参数。AoE路由机制开销远低于因特网协议(IP)所定义的开销,并且发送方和接收方寻址参数始终包含在AoE报文中。因此,EtherCAT主站和从站端的实施更为精简。AoE也通过EtherCAT自动化协议(EAP)进行非周期通信的标准化,从而为上位机MES系统或主计算机、EtherCAT主站及其从属的现有设备之间提供无缝通信。同时,AoE也提供了从远程诊断工具获取EtherCAT网络诊断信息的标准化方法。

4. 基础设施成本 

页首

 

由于EtherCAT无需集线器和交换机,因此,在环境条件允许的情况下,可以节省电源、安装费用等设备方面的投资,只需使用标准的以太网电缆和价格低廉的标准连接器即可。如果环境条件有特殊要求,则可以依照IEC标准,使用增强密封保护等级的连接器。

5. EtherCAT 实施 

页首

 

EtherCAT技术是面向经济的设备而开发的,如I/O 端子、传感器和嵌入式控制器等。EtherCAT使用遵循IEEE802.3标准的以太网帧。这些帧由主站设备发送,从站设备只是在以太网帧经过其所在位置时才提取和/或插入数据。因此,EtherCAT 使用标准的以太网MAC,这正是其在主站设备方面智能化的表现。同样,EtherCAT在从站控制器中使用专用芯片,这也是其在从站设备方面智能化的表现——无论本地处理能力是否强大或软件品质好坏与否,专用芯片均可在硬件中处理过程数据协议,并提供最佳实时性能。

5.1 主站 

EtherCAT可以在单个以太网帧中最多实现1486字节的分布式过程数据通讯。其它解决方案一般是,主站设备需要在每个网络周期中为各个节点处理、发送和接收帧。而EtherCAT系统与此不同之处在于,在通常情况下,每周期仅需要一个或两个帧即可完成所有节点的全部通讯,因此,EtherCAT主站不需要专用的通讯处理器。主站功能几乎不会给主机CPU带来任何负担,轻松处理这些任务的同时,还可以处理应用程序,因此EtherCAT 无需使用昂贵的专用有源插接卡,只需使用无源的NIC卡或主板集成的以太网MAC设备即可。EtherCAT主站很容易实现,尤其适用于中小规模的控制系统和有明确规定的应用场合。

例如,如果某个单个过程映像的PLC没有超过1486 字节,那么在其周期时间内循环发送这个以太网帧就足够了。因为报文头运行时不会发生变化,所以只需将常数报文头插入到过程映像中,并将结果传送到以太网控制器即可。

EtherCAT映射不是在主站产生,而是在从站产生(外围设备将数据插入所经以太网帧的相应位置),因此,此时过程映像已经完成排序。该特性进一步减轻了主机CPU的负担。可以看到,EtherCAT主站完全在主机CPU中采用软件方式实现,相比之下,传统的慢速现场总线系统通过有源插接卡方可实现主站的方式则要占用更多的资源,甚至服务于DPRAM的有源卡本身也将占用可观的主机资源。

系统配置工具(通过生产商获取)可提供包括相应的标准 XML 格式启动顺序在内的网络和设备参数。

图 14: 主站实施的单个过程映像

5.1.1 主站实施服务 

已经在各种实时操作系统上实现了EtherCAT主站,包括但并不限于:eCos, INtime, MICROWARE OS-9, MQX, On Time RTOS-32, Proconos OS, Real-Time Java, RT Kernel, RT-Linux, RTX, RTXC, RTAI Linux, PikeOS, Linux with RT-Preempt, QNX, VxWin + CeWin, VxWorks, Windows CE, Windows XP/XPE with CoDeSys SP RTE, Windows NT/NTE/2000/XP/XPE/Vista with TwinCAT RTE, Windows 7 and XENOMAI Linux.

可以获得开源主站协议栈,作为示例代码或商业软件。也有各种公司提供各种硬件平台上的实施服务。可以在EtherCAT网站上的产品区找到快速增长的供应商信息[1]。

5.1.2 主站样本代码 

另一种EtherCAT主站的实现方式是使用样本代码,花费不高。软件以源代码形式提供,包括所有的EtherCAT主站功能,甚至还包括EoE(EtherCAT实现以太网)功能(见图15)。开发人员只要把这些应用于Windows环境的代码与目标硬件及所使用的RTOS加以匹配就可以了。该软件代码已经成功应用于多个系统。

图 15: 主站样本代码结构

5.2 从站 

EtherCAT从站设备使用一个价格低廉的从站控制器芯片ESC。从站不需要微处理器就可以实现EtherCAT通信。可以通过I/O接口实现的简单设备可以只由ESC和其下的PHY,变压器和RJ45接头。给从站的过程数据接口是32位的I/O接口。这种从站没有可配置的参数,所以不需要软件或邮箱协议。EtherCAT状态机由ESC处理。ESC的启动信息从EEPROM中读取,它也支持从站的身份识别。更复杂的可配置从站有使用一个CPU。这个CPU和ESC之间使用8位或16位并行接口或串行SPI接口。要求的CPU性能取决于从站的应用,EtherCAT协议软件在其上运行。EtherCAT协议栈管理EtherCAT状态机和应用层协议,可以实现CoE协议和支持固件下载的FoE协议。EoE协议也可以实施。

5.2.1 EtherCAT Slave Controller 

目前,有多家制造商均提供EtherCAT从站控制器。通过价格低廉的FPGA,也可实现从站控制器的功能,可以购买授权以获取相应的二进制代码。

从站控制器通常都有一个内部的DPRAM,并提供存取这些应用内存的接口范围:

串行SPI(串行外围接口)主要用于数量较小的过程数据设备,如模拟量I/O模块、传感器、编码器和简单驱动等。该接口通常使用8位微控制器,如微型芯片PIC、DSP、Intel 80C51等(见图16)。

8/16位微控制器并行接口与带有DPRAM接口的传统现场总线控制器接口相对应,尤其适用于数据量较大的复杂设备。通常情况下,微控制器使用的接口包括Infineon 80C16x、Intel 80x86、Hitachi SH1、ST10、ARM和TI TMS320等系列(见图16)。

32位并行I/O接口不仅可以连接多达32位数字输入/输出,而且也适用于简单的传感器或执行器的32位数据操作。这类设备无需主机CPU(见图17)。

图 16: 从站硬件:带主机CPU的FPGA

图 17: 从站硬件:带直接I/O的FPGA

关于EtherCAT从站控制器的最新信息,请登录EtherCAT网站[1]。

5.2.2 从站评估工具包 

倍福公司提供的从站评估工具包使接口操作变得简便易行。由于采用了EtherCAT,无需功能强大的通讯处理器,因此,可将从站评估工具包中的8位微处理器作为主机CPU使用。该工具包还包括源代码形式的从站主机软件(相当于协议堆栈)和参考主站软件包(TwinCAT)。

6. 小结 

页首

 

EtherCAT 拥有杰出的通讯性能,接线非常简单,并对其它协议开放。传统的现场总线系统已达到了极限,而EtherCAT则突破建立了新的技术标准——30 µs内可以更新1000个I/O数据,可选择双绞线或光纤,并利用以太网和因特网技术实现垂直优化集成。使用 EtherCAT,可以用简单的线型拓扑结构替代昂贵的星型以太网拓扑结构,无需昂贵的基础组件。EtherCAT还可以使用传统的交换机连接方式,以集成其它的以太网设备。其它的实时以太网方案需要与控制器进行特殊连接,而EtherCAT只需要价格低廉的标准以太网卡(NIC) 便可实现。

EtherCAT拥有多种机制,支持主站到从站、从站到从站以及主站到主站之间的通讯(参见图18)。它实现了安全功能,采用技术可行且经济实用的方法,使以太网技术可以向下延伸至I/O级。EtherCAT功能优越,可以完全兼容以太网,可将因特网技术嵌入到简单设备中,并最大化地利用了以太网所提供的巨大带宽,是一种实时性能优越且成本低廉的网络技术。

图 19: 网络结构形式多样

7. 参考文献 

页首

 

[1]

EtherCAT Technology Group (ETG)

http://www.ethercat.org

[2]

IEC 61158-3/4/5/6-12 (Ed.1.0), Industrial communication networks – Fieldbus specifications – Part 3-12: Data-link layer service definition – Part 4-12: Data-link layer protocol specification – Part 5-12: Application layer service definition – Part 6-12: Application layer protocol specification – Type 12 elements (EtherCAT)

[3]

IEEE 802.3: Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications

[4]

IEEE 802.3ae-2002: CSMA/CD Access Method and Physical Layer Specifications: Media Access Control (MAC) Parameters, Physical Layers, and Management Parameters for 10 Gb/s Operation

[5]

ANSI/TIA/EIA-644-A, Electrical Characteristics of Low Voltage Differential Signaling (LVDS) Interface Circuits

[6]

IEEE 1588-2002: IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems

[7]

EN 50325-4: Industrial communications subsystem based on ISO 11898 (CAN) for controller-device interfaces. Part 4: CANopen

[8]

IEC 61800-7-301/304 (Ed.1.0), Adjustable speed electrical power drive systems – Part 7-301: Generic interface and use of profiles for power drive systems – Mapping of profile type 1 to network technologies – Part 7-304: Generic interface and use of profiles for power drive systems – Mapping of profile type 4 to network technologies

[9]

SEMI E54.20: Standard for Sensor/Actuator Network Communications for EtherCAT.

http://www.semi.org

[10]

IEC 61784-2 (Ed.1.0), Industrial communication networks – Profiles – Part 2: Additional fieldbus profiles for real-time networks based on ISO/IEC 8802-3

 

EtherCAT样本

了解更多关于最快的“工业以太网现场总线”的详细信息

中文

英文

德文

西班牙语

意大利文

法语

日文

韩文

EtherCAT多媒体视频

EtherCAT技术协会

工业以太网通信技术EtherCAT运行原理

EtherCAT技术简介

EtherCAT从站学习笔记——2.3应用层 - 知乎

EtherCAT从站学习笔记——2.3应用层 - 知乎首发于EtherCAT从站学习切换模式写文章登录/注册EtherCAT从站学习笔记——2.3应用层鹏飞亿里探索宇宙规律,施加适当激励。2.3.1 EtherCAT状态机在系统网络运行中,EtherCAT状态机负责主站从站之间的运行的协调关系。由主站发起状态的变化,在相应的工作完成之后从站程序确认状态的转换。如图2-8所示,EtherCAT支持四种状态和一个可选的状态:Init(初始化)、Pre-Operational(预运行)、Safe-Operational(安全运行)、Operational(运行)、Boot-Strap(引导状态,可选)。从初始状态到运行状态,必须按“初始化→预运行→安全运行→运行”顺序进行,不可以越级转化,然而返回时可以越级。引导状态可选,只允许与初始状态相互转化。1) 初始化。初始化状态定义了主站与从站在应用层之间的初始通讯关系。此时,主站利用初始化来对ESC的一些寄存器进行初始化。2) 预运行。在该状态下,邮箱通信被激活。主站和从站都可以利用邮箱服务和适当的协议来交换与应用层程序相关的初始化操作和参数。这个状态不支持过程数据通讯。3) 安全运行。从站的应用程序将输入的实际数据读入,无输出信号产生,输出被设置为“安全状态”。4) 运行。在设备运行状态下,从站的应用程序读取实际输入的报文数据,主站的应用程序输出实际相应数据,从站设备输出信号,EtherCAT系统处于正常的运行状态。5)引导状态(可选)。引导状态只用于实现设备固件程序的下载,并且只和初始化状态交互。在引导状态下,主站可以并且只限使用FoE协议的邮箱数据通信,给从站写入一个新的固件程序。2.3.2 应用层协议应用层(AL, Application Layer)在EtherCAT协议中是最高的控制功能层,直接面向具体的控制对象。在访问网络环境给控制程序提供手段,而且给控制程序提供了服务。如图2-9所示为EtherCAT协议结构。应用程序只要符合此应用层协议,都可以在应用层的控制下协同完成控制任务。EtherCAT协议中支持的应用层协议包括以下四种:1)CANopen over EtherCAT, CoE。CANopen最初是为CAN总线控制系统所开发的应用层协议。EtherCAT协议在应用层支持CANopen协议,并作了相应的扩充。主要功能有:使用邮箱通信访问CANopen对象字典及其对象,实现网络初始化;使用CANopen应急对象和可选的事件驱动PDO消息,实现网络管理;使用对象字典映射过程数据,周期性传输指令数据和状态数据。我司的从站软件站也主要实现应用层CoE协议,其框架结构如图2-10所示。2) Servo Drive over EtherCAT, SoE。IEC61491是国际上第一个专门用于伺服驱动器控制的实时数据通信协议标准,其商业名称为SERCOS(Serial Real-time Communication Specification)。EtherCAT协议的通信性能非常适合数字伺服驱动器的控制,应用层使用SERCOS应用层协议实现数据接口,可以实现以下功能:使用邮箱通信访问伺服控制规范参数(IDN),配置伺服系统参数;使用SERCOS数据电报格式配置EtherCAT过程数据报文,周期性传输伺服指令数据和伺服状态数据。3) Ethernet over EtherCAT, EoE。EtherCAT支持IP标准的协议,比如TCP/IP、UDP/IP和所有其他高层协议(HTTP和FTP等)。EtherCAT能分段传输标准以太网协议数据帧,并在相应的设备完成组装。这种办法可以避免为长数据帧预留时间片,大大缩短周期性数据的通信周期。此时,主站和从站需要相应的EoE驱动程序的支持。4)File Access over EtherCAT, FoE。该协议通过EtherCAT下载和上传固件程序和其他文件,其使用类似TFTP(Trivial File Transfer Protocol,简单文件传输协议)的协议,不需要TCP/IP的支持,实现简单。发布于 2021-12-14 10:23应用层(物联网)工业机器人伺服系统​赞同 7​​添加评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录EtherCAT从站学习EtherCAT工业现场总线,伺服系统

EtherCAT Technology Group | 技术概览

EtherCAT Technology Group | 技术概览

 

EN

|

DE

|

ES

|

IT

|

CN

|

JP

主页

新闻

市场活动

新闻发布

联系方式

会员专区

搜索  

技术概览 技术概览 为何使用EtherCAT? 协会组织 常见问题 会员相关 供应商ID 产品指南 资料下载 一致性测试 EtherCAT G EtherCAT P Safety over EtherCAT EtherCAT 和 TSN 技术汇编 开发者论坛 知识库

退出

EtherCAT - 以太网现场总线

本文深入阐述了基于以太网现场总线系统的EtherCAT (Ethernet for Control Automation Technology)技术。EtherCAT为现场总线技术领域树立了新的性能标准,具备灵活的网络拓扑结构,系统配置简单,和现场总线系统一样操作直观简便。另外,由于EtherCAT实施的成本低廉,因此使系统得以在过去无法应用现场总线网络的场合中选用该现场总线。

 

1. 引言

1.1 以太网和实时能力

2. EtherCAT 运行原理

3. EtherCAT 技术特征

3.1 协议

3.2 拓扑

3.3 分布时钟

3.4 性能

3.5 诊断

3.6 高可靠性

3.7 安全性

3.8 EtherCAT 取代PCI

3.9 设备行规

3.9.1 EtherCAT实现CAN总线应用层协议 (CoE)

3.9.2 EtherCAT实现伺服驱动设备行规IEC61491 (SoE)

3.10 EtherCAT实现以太网(EoE)

3.11 EtherCAT实现文件读取(FoE)

3.12 ADS over EtherCAT (AoE)

4. 基础设施成本

5. EtherCAT 实施

5.1 主站

5.1.1 主站实施服务

5.1.2 主站样本代码

5.2 从站

5.2.1 EtherCAT Slave Controller

5.2.2 从站评估工具包

6. 小结

7. 参考文献

 

 

1. 引言 

页首

 

现场总线已成为自动化技术的集成组件,通过大量的实践试验和测试,如今已获得广泛应用。正是由于现场总线技术的普及,才使基于PC的控制系统得以广泛应用。然而,虽然控制器CPU的性能(尤其是IPC的性能)发展迅猛,但传统的现场总线系统正日趋成为控制系统性能发展的“瓶颈”。急需技术革新的另一个因素则是由于传统的解决方案并不十分理想。传统的方案是,按层划分的控制体系通常都由几个辅助系统所组成(周期系统):即实际控制任务、现场总线系统、I/O系统中的本地扩展总线或外围设备的简单本地固件周期。正常情况下,系统响应时间是控制器周期时间的3-5倍。 在现场总线系统之上的层面(即网络控制器)中,以太网往往在某种程度上代表着技术发展的水平。该方面目前较新的技术是驱动或I/O级的应用,即过去普遍采用现场总线系统的这些领域。这些应用类型要求系统具备良好的实时能力、适应小数据量通讯,并且价格经济。EtherCAT可以满足这些需求,并且还可以在I/O级实现因特网技术 (参见图1)。

图1: 传统现场总线系统响应时间

在现场总线系统 之上的层面(即网络控制器)中,以太网往往在某种程度上代表着技术发展的水平。该方面目前较新的技术是驱动或I/O级的应用,即过去普遍采用现场总线系统的这些领域。这些应用类型要求系统具备良好的实时能力、适应小数据量通讯,并且价格经济。EtherCAT可以满足这些需求,并且还可以在I/O级实现因特网技术。

1.1 以太网和实时能力 

目前,有许多方案力求实现以太网的实时能力。例如,CSMA/CD介质存取过程方案,即禁止高层协议访问过程,而由时间片或轮循方式所取代的一种解决方案;另一种解决方案则是通过专用交换机精确控制时间的方式来分配以太网包。这些方案虽然可以在某种程度上快速准确地将数据包传送给所连接的以太网节点,但是,输出或驱动控制器重定向所需要的时间以及读取输入数据所需要的时间都要受制于具体的实现方式。

如果将单个以太网 帧用于每个设备,那么,理论上讲,其可用数据率非常低。例如,最短的以太网帧为84字节(包括内部的包间隔IPG)。如果一个驱动器周期性地发送4字节的实际值和状态信息,并相应地同时接收4字节的命令值和控制字信息,那么,即便是总线负荷为100%(即:无限小的驱动响应时间)时,其可用数据率也只能达到4/84= 4.8%。如果按照10 µs的平均响应时间估计,则速率将下降到1.9%。对所有发送以太网 帧到每个设备(或期望帧来自每个设备)的实时以太网方式而言,都存在这些限制,但以太网帧内部所使用的协议则是例外。

2. EtherCAT 运行原理 

页首

 

EtherCAT技术突破了其他以太网解决方案的系统限制:通过该项技术,无需接收以太网数据包,将其解码,之后再将过程数据复制到各个设备。EtherCAT从站设备在报文经过其节点时读取相应的编址数据,同样,输入数据也是在报文经过时插入至报文中(参见图2)。整个过程中,报文只有几纳秒的时间延迟。

图 2: 过程数据插入至报文中

由于发送和接收的以太网帧压缩了大量的设备数据,所以有效数据率可达90%以上。100 Mb/s TX的全双工特性完全得以利用,因此,有效数据率可 大于100 Mb/s(即大于2 x 100 Mb/s的90%)(参见图3)。

图 3: 带宽利用率的比较

符合IEEE 802.3标准的以太网协议无需附加任何总线即可访问各个设备。耦合设备中的物理层可以将双绞线或光纤转换为LVDS(一种可供选择的以太网物理层标准[4,5]),以满足电子端子块等模块化设备的需求。这样,就可以非常经济地对模块化设备进行扩展了。之后,便可以如普通以太网一样,随时进行从底板物理层LVDS到100 Mb/s TX物理层的转换。

3. EtherCAT 技术特征 

页首

 

3.1 协议 

EtherCAT是用于过程数据的优化协议,凭借特殊的以太网类型,它可以在以太网帧内直接传送。EtherCAT帧可包括几个EtherCAT报文,每个报文都服务于一块逻辑过程映像区的特定内存区域,该区域最大可达4GB字节。数据顺序不依赖于网络中以太网端子的物理顺序,可任意编址。从站之间的广播、多播和通讯均得以实现。当需要实现最佳性能,且要求EtherCAT组件和控制器在同一子网操作时,则直接以太网帧传输就将派上用场。

然而,EtherCAT不仅限于单个子网的应用。EtherCAT UDP将EtherCAT协议封装为UDP/IP数据报文(参见图4),这就意味着,任何以太网协议堆栈的控制均可编址到EtherCAT系统之中,甚至通讯还可以通过路由器跨接到其它子网中。显然,在这种变体结构中,系统性能取决于控制的实时特性和以太网协议的实现方式。因为UDP数据报文仅在第一个站才完成解包,所以EtherCAT网络自身的响应时间基本不受影响。

图 4: EtherCAT:符合IEEE 802.3 [3]的标准帧

另外,根据主/从数据交换原理,EtherCAT也非常适合控制器之间(主/从)的通讯。自由编址的网络变量可用于过程数据以及参数、诊断、编程和各种远程控制服务,满足广泛的应用需求。主站/从站与主站/主站之间的数据通讯接口也相同。

从站到从站的通讯则有两种机制以供选择。一种机制是,上游设备和下游设备可以在同一周期内实现通讯,速度非常快。由于这种方法与拓扑结构相关,因此适用于由设备架构设计所决定的从站到从站的通讯,如打印或包装应用等。而对于自由配置的从站到从站的通讯,则可以采用第二种机制—数据通过主站进行中继。这种机制需要两个周期才能完成,但由于EtherCAT的性能非常卓越,因此该过程耗时仍然快于采用其他方法所耗费的时间。

按照文献[3]所述,EtherCAT仅使用标准的以太网帧,无任何压缩。因此,EtherCAT 以太网帧可以通过任何以太网MAC发送,并可以使用标准工具(如:监视器)。

3.2 拓扑 

EtherCAT几乎支持任何拓扑类型,包括线型、树型、星型等(参见图5)。通过现场总线而得名的总线结构或线型结构也可用于以太网,并且不受限于级联交换机或集线器的数量。

图 5: 灵活的拓扑结构:线型、树型或星型拓扑

最有效的系统连线方法是对线型、分支或树叉结构进行拓扑组合。因为所需接口在I/O 模块等很多设备中都已存在,所以无需附加交换机。当然,仍然可以使用传统的、基于以太网的星型拓扑结构。

还可以选择不同的电缆以提升连线的灵活性:灵活、经济的标准超五类以太网电缆可采用100BASE-TX模式传送信号;塑封光纤(PFO)则可用于特殊应用场合;还可通过交换机或介质转换器实现不同以太网连线(如:不同的光纤和铜电缆)的完整组合。

快速以太网的物理层(100BASE-TX )允许两个设备之间的最大电缆长度为100米。由于连接的设备数量可高达65535,因此,网络的容量几乎没有限制。

3.3. 分布时钟 

精确同步对于同时动作的分布式过程而言尤为重要。例如,几个伺服轴同时执行协调运动时,便是如此。

最有效的同步方法是精确排列分布时钟(请参阅IEEE 1588标准[6])。与完全同步通讯中通讯出现故障会立刻影响同步品质的情况相比,分布排列的时钟对于通讯系统中可能存在的相关故障延迟具有极好的容错性。

采用EtherCAT,数据交换就完全基于纯硬件机制。由于通讯采用了逻辑环结构 (借助于全双工快速以太网的物理层),主站时钟可以简单、精确地确定各个从站时钟传播的延迟偏移,反之亦然。分布时钟均基于该值进行调整,这意味着可以在网络范围内使用非常精确的、小于1 微秒的、确定性的同步误差时间基(参见图6)。而跨接工厂等外部同步则可以基于IEEE 1588 标准。

图 6: 同步性与一致性:相距电缆长度为有120米的两个分布系统,

带有300个节点的示波器比较

此外,高分辨率的分布时钟不仅可以用于同步,还可以提供数据采集的本地时间精确信息。当采样时间非常短暂时,即使是出现一个很小的位置测量瞬时同步偏差,也会导致速度计算出现较大的阶跃变化,例如,运动控制器通过顺序检测的位置计算速度便是如此。而在EtherCAT中,引入时间戳数据类型作为一个逻辑扩展,以太网所提供的巨大带宽使得高分辨率的系统时间得以与测量值进行链接。这样,速度的精确计算就不再受到通讯系统的同步误差值影响,其精度要高于基于自由同步误差的通讯测量技术。

3.4 性能 

EtherCAT使网络性能达到了一个新境界。借助于从站硬件集成和网络控制器主站的直接内存存取,整个协议的处理过程都在硬件中得以实现,因此,完全独立于协议堆栈的实时运行系统、CPU 性能或软件实现方式。1000个I/O的更新时间只需30 µs,其中还包括I/O周期时间(参见表1)。单个以太网帧最多可进行1486字节的过程数据交换,几乎相当于12000个数字输入和输出,而传送这些数据耗时仅为300 µs。

表 1: EtherCAT性能概貌

100个伺服轴的通讯也非常快速:可在每100µs中更新带有命令值和控制数据的所有轴的实际位置及状态,分布时钟技术使轴的同步偏差小于1微秒。而即使是在保证这种性能的情况下,带宽仍足以实现异步通讯,如TCP/IP、下载参数或上载诊断数据。

超高性能的EtherCAT技术可以实现传统的现场总线系统无法迄及的控制理念。EtherCAT使通讯技术和现代工业PC所具有的超强计算能力相适应,总线系统不再是控制理念的瓶颈,分布式I/O可能比大多数本地I/O接口运行速度更快。EtherCAT技术原理具有可塑性,并不束缚于100 M bps的通讯速率,甚至有可能扩展为1000 M bps的以太网。 

3.5 诊断 

现场总线系统的实际应用经验表明,有效性和试运行时间关键取决于诊断能力。只有快速而准确地检测出故障,并明确标明其所在位置,才能快速排除故障。因此,在EtherCAT的研发过程中,特别注重强化诊断特征。

试运行期间,驱动或I/O 端子等节点的实际配置需要与指定的配置进行匹配性检查,拓扑结构也需要与配置相匹配。由于整合的拓扑识别过程已延伸至各个端子,因此,这种检查不仅可以在系统启动期间进行,也可以在网络自动读取时进行(配置上载)。

可以通过评估CRC校验,有效检测出数据传送期间的位故障——32 位CRC多项式的最小汉明距为4。除断线检测和定位之外,EtherCAT系统的协议、物理层和拓扑结构还可以对各个传输段分别进行品质监视,与错误计数器关联的自动评估还可以对关键的网络段进行精确定位。此外,对于电磁干扰、连接器破损或电缆损坏等一些渐变或突变的错误源而言,即便它们尚未过度应变到网络自恢复能力的范围,也可对其进行检测与定位。

3.6 高可靠性 

选择冗余电缆可以满足快速增长的系统可靠性需求,以保证设备更换时不会导致网络瘫痪。您可以很经济地增加冗余特性,仅需在主站设备端增加使用一个标准的以太网端口(无需专用网卡或接口),并将单一的电缆从总线型拓扑结构转变为环型拓扑结构即可(见图7)。当设备或电缆发生故障时,也仅需一个周期即可完成切换。因此,即使是针对运动控制要求的应用,电缆出现故障时也不会有任何问题。EtherCAT也支持热备份的主站冗余。由于在环路中断时EtherCAT从站控制器芯片将立刻自动返回数据帧,一个设备的失败不会导致整个网络的瘫痪。例如,拖链设备可以配置为分支拓扑以防线缆断开。

图 7: 使用标准从站设备的低成本线缆冗余

3.7 安全性 

为了实现EtherCAT安全数据通信,EtherCAT安全通信协议已经在ETG组织内部公开。EtherCAT被用作传输安全和非安全数据的单一通道。传输介质被认为是“黑色通道”而不被包括在安全协议中(见图8)。EtherCAT过程数据中的安全数据报文包括安全过程数据和所要求的数据备份。这个“容器”在设备的应用层被安全地解析。通信仍然是单一通道的。这符合IEC61784-3附件中的模型A。

图 8: 使用黑色通道的EtherCAT安全通信软件构件

EtherCAT安全协议已经由德国技术监督局(TÜV SÜD Rail)评估为满足IEC61508定义的SIL3等级的安全设备之间传输过程数据的通信协议。设备上实施EtherCAT安全协议必须满足安全目标的需求。相应的产品相关要求也必须考虑进来。

图 9: EtherCAT安全系统

图9中的应用示例受益于这种技术。安全元件在自动化系统中所需要的任意地方都可以使用。系统中可以使用不同规模的本地输入和输出元件。可以根据需求使用安全或非安全总线端子扩展额外的输入和输出。安全逻辑也嵌入到网络当中。这样不用安全扩展的标准PLC可以继续处理控制任务。安全输入和输出功能需要的本地安全逻辑由智能化的安全总线端子实现。这节约了昂贵的安全PLC所带来的成本,并可以根据当前任务随意裁剪逻辑功能。只有安全EtherCAT主站和所分配的安全从站通过非安全的标准PLC路由。

本协议在安全数据长度,通信介质或波特率方面么有限制。

EtherCAT被用作“黑色通道”,即,通信系统在安全处理中没有任何作用。

协议被鉴定符合IEC61508定义的SIL3等级

提供EtherCAT安全功能的产品已经于2005年就上市了。

3.8 EtherCAT 取代PCI 

随着PC组件急剧向小型化方向发展,工业PC的体积日趋取决于插槽的数目。而快速以太网的带宽和EtherCAT通讯硬件的过程数据长度则为该领域的发展提供了新的可能性——IPC 中的传统接口现在可以转变为集成的EtherCAT接口端子(参见图10)。除了可以对分布式I/O进行编址,还可以对驱动和控制单元以及现场总线主站、快速串行接口、网关和其它通讯接口等复合系统进行编址。

图 10: 分布式现场总线接口

即使是其他无协议限制的以太网设备变体,也可以通过分布式交换机端口设备进行连接。由于一个以太网接口足以满足整个外围设备的通讯 (参见图11),因此,这不仅极大地精简了IPC主机的体积和外观,而且也降低了IPC主机的成本。

图 11: EtherCAT使控制器的体积显著减小

3.9 设备行规 

设备行规描述了设备的应用参数和功能特性,如设备类别相关的机器状态等。现场总线技术已经为I/O设备、驱动、阀等许多设备类别提供了可利用的设备行规。用户非常熟悉这些行规以及相关的参数和工具,因此,EtherCAT无需为这些设备类别重新开发设备行规,而是为现有的设备行规提供了简单的接口。该特性使得用户和设备制造商可以轻松完成从现有的现场总线到EtherCAT技术的转换过程。

3.9.1 EtherCAT实现CANopen (CoE) 

CANopen©设备和应用行规广泛用于多种设备类别和应用,如I/O组件、驱动、编码器、比例阀、液压控制器,以及用于塑料或纺织行业的应用行规等。EtherCAT可以提供与CANopen机制[7]相同的通讯机制,包括对象字典、PDO(过程数据对象)、SDO(服务数据对象),甚至于网络管理。因此,在已经安装了CANopen的设备中,仅需稍加变动即可轻松实现EtherCAT,绝大部分的CANopen©固件都得以重复利用。并且,可以选择性地扩展对象,以便利用EtherCAT所提供的巨大带宽。

3.9.2 EtherCAT实施伺服驱动 设备行规IEC 61491 (SoE) 

SERCOS interface™ 是全球公认的、用于高性能实时运行系统的通讯接口,尤其适用于运动控制的应用场合。用于伺服驱动和通讯技术的SERCOS™框架属于IEC 61491标准[8] 的范畴。该伺服驱动框架可以轻松地映射到 EtherCAT中,嵌入于驱动中的服务通道、全部参数存取以及功能都基于EtherCAT邮箱(参见图12)。在此,关注焦点还是EtherCAT与现有协议的兼容性(IDN的存取值、属性、名称、单位等),以及与数据长度限制相关的扩展性。过程数据,即形式为AT和MDT的SERCOS™数据,都使用EtherCAT从站控制器机制进行传送,其映射与SERCOS映射相似。并且,EtherCAT从站的设备状态也可以非常容易地映射为SERCOS™协议状态。EtherCAT从站状态机可以很容易地映射到SERCOS™协议的通信阶段。EtherCAT为这种在CNC行业中广泛使用的设备行规提供了先进的实时以太网技术。这种设备行规的优点与EtherCAT分布时钟提供的优点相结合,保证了网络范围内精确时钟同步。可以任意传输位置命令,速度命令或扭矩命令。取决于实现方式,甚至可能继续使用相同的设备配置工具。

图 12: 同时并存的多个设备行规和协议

3.10 EtherCAT实现以太网(EoE) 

EtherCAT技术不仅完全兼容以太网,而且在“设计”之初就具备良好的开放性特征——该协议可以在相同的物理层网络中包容其它基于以太网的服务和协议,通常可将其性能损失降到最小。对以太网的设备类型没有限制,设备可通过交换机端口在EtherCAT段内进行连接。以太网帧通过EtherCAT协议开通隧道,这也正是VPN、 PPPoE (DSL) 等因特网应用所普遍采取的方法。EtherCAT网络对以太网设备而言是完全透明的,其实时特性也不会发生畸变(参见图13)。

图 13: 对所有以太网协议完全透明

EtherCAT设备可以包容其它的以太网协议,因此具备标准以太网设备的一切特性。主站的作用与第2层交换机所起的作用一样,可按照编址信息将以太网帧重新定向到相应的设备。因此,集成万维网服务器、电子邮件和FTP 传送等所有的因特网技术都可以在EtherCAT的环境中得以应用。

3.11 EtherCAT实现文件读取(FoE) 

这种简单的协议与TFTP类似,允许存取设备中的任何数据结构。因此,无论设备是否支持TCP/IP,都有可能将标准化固件上载到设备上。

3.12 ADS over EtherCAT (AoE) 

ADS over EtherCAT (AoE)是由EtherCAT规范定义的客户端-服务器邮箱协议。尽管CoE协议提供了详尽的描述,但AoE则更适合路由与并行服务的应用:通过网关设备访问子网络,如EtherCAT至CANopen® 或 EtherCAT至IO-Link™ 网关设备。AoE使EtherCAT主站应用(如PLC程序)可以访问所属CANopen® 或 IO-Link™从站的各个参数。AoE路由机制开销远低于因特网协议(IP)所定义的开销,并且发送方和接收方寻址参数始终包含在AoE报文中。因此,EtherCAT主站和从站端的实施更为精简。AoE也通过EtherCAT自动化协议(EAP)进行非周期通信的标准化,从而为上位机MES系统或主计算机、EtherCAT主站及其从属的现有设备之间提供无缝通信。同时,AoE也提供了从远程诊断工具获取EtherCAT网络诊断信息的标准化方法。

4. 基础设施成本 

页首

 

由于EtherCAT无需集线器和交换机,因此,在环境条件允许的情况下,可以节省电源、安装费用等设备方面的投资,只需使用标准的以太网电缆和价格低廉的标准连接器即可。如果环境条件有特殊要求,则可以依照IEC标准,使用增强密封保护等级的连接器。

5. EtherCAT 实施 

页首

 

EtherCAT技术是面向经济的设备而开发的,如I/O 端子、传感器和嵌入式控制器等。EtherCAT使用遵循IEEE802.3标准的以太网帧。这些帧由主站设备发送,从站设备只是在以太网帧经过其所在位置时才提取和/或插入数据。因此,EtherCAT 使用标准的以太网MAC,这正是其在主站设备方面智能化的表现。同样,EtherCAT在从站控制器中使用专用芯片,这也是其在从站设备方面智能化的表现——无论本地处理能力是否强大或软件品质好坏与否,专用芯片均可在硬件中处理过程数据协议,并提供最佳实时性能。

5.1 主站 

EtherCAT可以在单个以太网帧中最多实现1486字节的分布式过程数据通讯。其它解决方案一般是,主站设备需要在每个网络周期中为各个节点处理、发送和接收帧。而EtherCAT系统与此不同之处在于,在通常情况下,每周期仅需要一个或两个帧即可完成所有节点的全部通讯,因此,EtherCAT主站不需要专用的通讯处理器。主站功能几乎不会给主机CPU带来任何负担,轻松处理这些任务的同时,还可以处理应用程序,因此EtherCAT 无需使用昂贵的专用有源插接卡,只需使用无源的NIC卡或主板集成的以太网MAC设备即可。EtherCAT主站很容易实现,尤其适用于中小规模的控制系统和有明确规定的应用场合。

例如,如果某个单个过程映像的PLC没有超过1486 字节,那么在其周期时间内循环发送这个以太网帧就足够了。因为报文头运行时不会发生变化,所以只需将常数报文头插入到过程映像中,并将结果传送到以太网控制器即可。

EtherCAT映射不是在主站产生,而是在从站产生(外围设备将数据插入所经以太网帧的相应位置),因此,此时过程映像已经完成排序。该特性进一步减轻了主机CPU的负担。可以看到,EtherCAT主站完全在主机CPU中采用软件方式实现,相比之下,传统的慢速现场总线系统通过有源插接卡方可实现主站的方式则要占用更多的资源,甚至服务于DPRAM的有源卡本身也将占用可观的主机资源。

系统配置工具(通过生产商获取)可提供包括相应的标准 XML 格式启动顺序在内的网络和设备参数。

图 14: 主站实施的单个过程映像

5.1.1 主站实施服务 

已经在各种实时操作系统上实现了EtherCAT主站,包括但并不限于:eCos, INtime, MICROWARE OS-9, MQX, On Time RTOS-32, Proconos OS, Real-Time Java, RT Kernel, RT-Linux, RTX, RTXC, RTAI Linux, PikeOS, Linux with RT-Preempt, QNX, VxWin + CeWin, VxWorks, Windows CE, Windows XP/XPE with CoDeSys SP RTE, Windows NT/NTE/2000/XP/XPE/Vista with TwinCAT RTE, Windows 7 and XENOMAI Linux.

可以获得开源主站协议栈,作为示例代码或商业软件。也有各种公司提供各种硬件平台上的实施服务。可以在EtherCAT网站上的产品区找到快速增长的供应商信息[1]。

5.1.2 主站样本代码 

另一种EtherCAT主站的实现方式是使用样本代码,花费不高。软件以源代码形式提供,包括所有的EtherCAT主站功能,甚至还包括EoE(EtherCAT实现以太网)功能(见图15)。开发人员只要把这些应用于Windows环境的代码与目标硬件及所使用的RTOS加以匹配就可以了。该软件代码已经成功应用于多个系统。

图 15: 主站样本代码结构

5.2 从站 

EtherCAT从站设备使用一个价格低廉的从站控制器芯片ESC。从站不需要微处理器就可以实现EtherCAT通信。可以通过I/O接口实现的简单设备可以只由ESC和其下的PHY,变压器和RJ45接头。给从站的过程数据接口是32位的I/O接口。这种从站没有可配置的参数,所以不需要软件或邮箱协议。EtherCAT状态机由ESC处理。ESC的启动信息从EEPROM中读取,它也支持从站的身份识别。更复杂的可配置从站有使用一个CPU。这个CPU和ESC之间使用8位或16位并行接口或串行SPI接口。要求的CPU性能取决于从站的应用,EtherCAT协议软件在其上运行。EtherCAT协议栈管理EtherCAT状态机和应用层协议,可以实现CoE协议和支持固件下载的FoE协议。EoE协议也可以实施。

5.2.1 EtherCAT Slave Controller 

目前,有多家制造商均提供EtherCAT从站控制器。通过价格低廉的FPGA,也可实现从站控制器的功能,可以购买授权以获取相应的二进制代码。

从站控制器通常都有一个内部的DPRAM,并提供存取这些应用内存的接口范围:

串行SPI(串行外围接口)主要用于数量较小的过程数据设备,如模拟量I/O模块、传感器、编码器和简单驱动等。该接口通常使用8位微控制器,如微型芯片PIC、DSP、Intel 80C51等(见图16)。

8/16位微控制器并行接口与带有DPRAM接口的传统现场总线控制器接口相对应,尤其适用于数据量较大的复杂设备。通常情况下,微控制器使用的接口包括Infineon 80C16x、Intel 80x86、Hitachi SH1、ST10、ARM和TI TMS320等系列(见图16)。

32位并行I/O接口不仅可以连接多达32位数字输入/输出,而且也适用于简单的传感器或执行器的32位数据操作。这类设备无需主机CPU(见图17)。

图 16: 从站硬件:带主机CPU的FPGA

图 17: 从站硬件:带直接I/O的FPGA

关于EtherCAT从站控制器的最新信息,请登录EtherCAT网站[1]。

5.2.2 从站评估工具包 

倍福公司提供的从站评估工具包使接口操作变得简便易行。由于采用了EtherCAT,无需功能强大的通讯处理器,因此,可将从站评估工具包中的8位微处理器作为主机CPU使用。该工具包还包括源代码形式的从站主机软件(相当于协议堆栈)和参考主站软件包(TwinCAT)。

6. 小结 

页首

 

EtherCAT 拥有杰出的通讯性能,接线非常简单,并对其它协议开放。传统的现场总线系统已达到了极限,而EtherCAT则突破建立了新的技术标准——30 µs内可以更新1000个I/O数据,可选择双绞线或光纤,并利用以太网和因特网技术实现垂直优化集成。使用 EtherCAT,可以用简单的线型拓扑结构替代昂贵的星型以太网拓扑结构,无需昂贵的基础组件。EtherCAT还可以使用传统的交换机连接方式,以集成其它的以太网设备。其它的实时以太网方案需要与控制器进行特殊连接,而EtherCAT只需要价格低廉的标准以太网卡(NIC) 便可实现。

EtherCAT拥有多种机制,支持主站到从站、从站到从站以及主站到主站之间的通讯(参见图18)。它实现了安全功能,采用技术可行且经济实用的方法,使以太网技术可以向下延伸至I/O级。EtherCAT功能优越,可以完全兼容以太网,可将因特网技术嵌入到简单设备中,并最大化地利用了以太网所提供的巨大带宽,是一种实时性能优越且成本低廉的网络技术。

图 19: 网络结构形式多样

7. 参考文献 

页首

 

[1]

EtherCAT Technology Group (ETG)

http://www.ethercat.org

[2]

IEC 61158-3/4/5/6-12 (Ed.1.0), Industrial communication networks – Fieldbus specifications – Part 3-12: Data-link layer service definition – Part 4-12: Data-link layer protocol specification – Part 5-12: Application layer service definition – Part 6-12: Application layer protocol specification – Type 12 elements (EtherCAT)

[3]

IEEE 802.3: Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications

[4]

IEEE 802.3ae-2002: CSMA/CD Access Method and Physical Layer Specifications: Media Access Control (MAC) Parameters, Physical Layers, and Management Parameters for 10 Gb/s Operation

[5]

ANSI/TIA/EIA-644-A, Electrical Characteristics of Low Voltage Differential Signaling (LVDS) Interface Circuits

[6]

IEEE 1588-2002: IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems

[7]

EN 50325-4: Industrial communications subsystem based on ISO 11898 (CAN) for controller-device interfaces. Part 4: CANopen

[8]

IEC 61800-7-301/304 (Ed.1.0), Adjustable speed electrical power drive systems – Part 7-301: Generic interface and use of profiles for power drive systems – Mapping of profile type 1 to network technologies – Part 7-304: Generic interface and use of profiles for power drive systems – Mapping of profile type 4 to network technologies

[9]

SEMI E54.20: Standard for Sensor/Actuator Network Communications for EtherCAT.

http://www.semi.org

[10]

IEC 61784-2 (Ed.1.0), Industrial communication networks – Profiles – Part 2: Additional fieldbus profiles for real-time networks based on ISO/IEC 8802-3

 

EtherCAT样本

了解更多关于最快的“工业以太网现场总线”的详细信息

中文

英文

德文

西班牙语

意大利文

法语

日文

韩文

EtherCAT多媒体视频

EtherCAT技术协会

工业以太网通信技术EtherCAT运行原理

EtherCAT技术简介

EtherCAT的实现和应用 - 从站软硬件设计 - 知乎

EtherCAT的实现和应用 - 从站软硬件设计 - 知乎首发于EtherCAT切换模式写文章登录/注册EtherCAT的实现和应用 - 从站软硬件设计酱哒​珠海极海半导体有限公司 嵌入式工程师01 从站硬件设计从站最小系统EtherCAT的最小系统由MCU、ESC、晶振、EEPROM、PHY芯片和RJ45接口组成。 从站应用系统一般来说我们可以采用MCU + ESC芯片,集成IO控制和电机控制两种从站方案。作为IO从站应用时,可以利用板载的4个LED和4个Button实现IO逻辑功能。而作为Motor从站应用时,可以利用UVW和HALL采样电路驱动BLDC电机。另外还可引出了ADC、DAC、CAN和RS485等扩展接口。02 从站软件设计从站栈代码代码结构EtherCAT从站栈代码(EtherCAT Slave Stack Code)的代码结构如下图所示,包含ESC内存接口、mailbox(CoE、EoE等等)、DC(Sync)同步功能、过程数据处理、状态机和本地通信应用等结构。其中过程数据的处理使用对象字典,和CoE协议定义的一致。基础的示例代码可以从官方的SSC Tool获得。状态机EtherCAT状态机(ESM,EtherCAT Slave Machine)负责协调主站和从站应用程序在初始化和运行时的状态关系。SSC代码中的ESM在AL_ControlInd()函数实现。EtherCAT设备必须支持四种状态,另外还有一个可选的状态。所有的状态改变都由主站发起。具体可以看《ETG.1000-part 6》应用层协议规范。ESI从站信息接口文件EEPROM内容结构ESC使用EEPROM来存储所需要的设备相关信息,称为从站信息接口SII(Slave Information Interface)。EEPROM的容量为1Kbit ~ 4Mbit,取决于ESC规格。EEPROM内容结构如下图所示。采用字地址,字0~63是必须的基本信息。这些信息都写在XML文件中。XML文件结构每个从站都要有一个XML配置文件,XML里定义的对象字典和PDO设置,需要和固件里的对象字典相对应。还记得”概述“里讲到的从站信息文件xml文件吧。 标蓝色的几个部分是主要的配置内容。下图是XML编辑器转换的视图,关键的对象字典和数据类型都在Devices->Device->Profile元素里。上面部分为制造商信息,下面部分为从站描述信息,包括设备标识、设备名称、接口类型、FMMU通道、SM、过程数据定义、邮箱、分布时钟、EEPROM。发布于 2022-03-21 23:05Ethernet软硬件产品设计(硬件)​赞同 3​​1 条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录EtherCATEtherCAT的实现