EtherCAT总线概述

以下内容节选自作者封狼居胥的《EtherCAT理论篇

1 诞生:

  德国倍福公司在2003年提出,由同年便成立了EtherCAT官方的技术支持协会EtherCAT Technology Group,简称ETG管理。

2 特性:

  • 基于以太网,传输速度100Mbit/s,数据刷新周期小于100us,同步精度小于1us,带宽利用率达90%(见下图ethcat帧头结构),100BASE-TX规范的5类UTP线缆。
  • 在网络拓扑方面没有限制,非常灵活。

3 工作原理:

  • 系统组成:主从架构,主站控制器(PC端多采用倍福开发的TwinCAT软件(网卡要求))。从站控制器(ESC),采用专用集成芯片ET1100ET1200,或者是利用FPGA集成EtherCAT通信功能的的IP-Core。
  • 具体数据帧结构体:WKCWKC用于记录子报文被从站操作的次数,主站设置WKC的初始值为0,当子报文被从站处理后,WKC增加一定的数值,当数据帧返回到主站时,主站会比较WKC的实际值和预期值,用来判断报文是否被正确处理( EtherCAT 实现“无 ACK 仍可靠通信”的关键)。
  • 主站只发一帧(不需要返回应答帧)),但从站在这帧“路过”时就完成读写,在最后一个从站填入输入数据后硬件自动触发自动折返,消息帧依次反向经过各从站(此时从站不能再写))。整个过程是“透传+原地修改”
  • 机制——通过计数代替确认
  • 寻址方式:包括网络寻址和设备寻址2部分。网址寻址(又分直连【主从用一条网线直连,此时以太网帧头的目的地址是FFFFFFFF】)和开放模式【交换机相连,目的地址为从段MAC】);设备询址(从设备地址=设备地址+从设备的偏移内存地址。设备地址又分顺序模式【物理连接顺序决定】和设置模式【主机分配或从机eeroom或硬件提供】)。
  • 分布式时钟同步(上电时):主站先将与主站连接的第一从站设备进行同步并作为参考时钟,通过测量和计算出各从站设备时钟与参考时间的偏移,对从站设备时钟进行校正,从而达到时钟同步的目的。
  • 通信数据分类:时间关键的采用周期性过程数据通信(通过现场总线内存管理单元(FMMU)进行逻辑寻址读写,使用两个存储同步管理单元(SM),3个缓冲区来保证数据交换的一致性和安全性,如下缓存图);非时间关键的采用邮箱通信(握手方式,一个操作 结束另一个才能开始)。
  • 应用层协议:通过对常用协议进行简单修改,与EtherCAT通讯协议相兼容,从而可得EtherCAT多种应用层协议,主要包括:EoE、CoE(CANopenCiA402行规用于伺服和运动控制),SoE(SERCOS是一种高性能数字伺服实时通信接口协议)以及FoE等。

4 基于stm32+ET1100的从站设计(配合PC的TwinCAT进行调试):

  ET1100芯片功能已经固化在芯片内部,实际应用时只需设计相应的XML配置文件。因此在EtherCAT从站软件设计时,主要需要完成STM32处理器的程序编写。

  对应开发板,从站需要将内存映射到XML文件存于eeroom中(参考【EtherCAT分析】三、EtherCAT从站设备描述文件设计),上电后被主站读取。驱动设计书籍《工业以太网现场总线EtherCAT驱动程序设计及应用》。

image 

  • 寄存器0x220表示主机是否有事件请求(是=1);
  • 自由模式:在自由模式下,程序会执行Free_run()函数,这个函数的功能是处理周期性数据传输,STM32通过SPI总线读写ET1100的DPRAM内的数据,完成数据交换。
  • 同步模式,Free_run()函数的功能会放在一个(时钟同步)中断相应函数中执行。
  • Al_event()函数负责处理非周期事件(邮箱数据通讯和从站状态机转换)。
  • EtherCAT协议的状态机:
  1. 初始化(Init:无数据交换,主站通过eeprom对从站相关寄存器进行配置和初始化。
  2. 预运行(Pre-OP):主站通过邮箱将初始化数据发给从站
  3. 安全运行(Safe-OP:主站通过对从站的现场管理单元和SM通道的设置,可以发送过程数据给从站,但是从站无法发送过程数据给主站
  4. 运行状态(OP:主站和从站可以进行完整的数据通讯

从站设备描述文件ESI(EtherCAT Slave Information):

  格式XML,可用Altova XML spy编辑软件进行直观的表格化编辑,或用一般nodepad--编辑内容包括:

        

 

5 主站时钟补偿:

  当主站发送数据帧时间存在较大的抖动(主站时钟与从站ESC时钟),导致数据帧在从站收到SYNC信号之后才到达从站(从站接收到主站通讯帧后会产生SM中断信号【主站时钟】而从站的SYNC0/1信号是从站ESC产生)。因此,需要对EtherCAT主站的时钟进行偏移补偿。方法是:周期性计算EtherCAT主站时间和DC时钟主站时间之间的差异,基于PI控制算法计算主站定时器的补偿值,然后修改定时器的Period。

5 【EtherCAT电机板】CiA402增加cst模式

在EtherCAT电机板上实现cst功能,在xml中增加cst相关pdo,在402程序增加cst模式。

1、XML配置修改

cst模式需要用到目标转矩和反馈实际转矩PDO,结合CiA402手册,这两个PDO对应的索引号分别为:0x6071(Target torque)、0x6077(Torque actual value)

 

 

1)更改索引

增加变量对应于输出映射索引0x1600和0x1a00的,因此需要更改对应据类型:

增加第5SubItem,重新修改数据类型的BitSize

 

 

2)更改数据字典对象表

增加0x6071和0x6077数据索引,已有:

 

 

更改0x1A00数据对象--输出映射表TxPDO:增加SubIndex005,索引号为10007760,其中“6077”代表Torque actual value映射索引号,“00”代表索引6077的第0位SubIdx,“10”代表数据大小,16位。注意:在xml中写的顺序与实际不同。同时修改相应的BitSize=16+32*5=176.

 

 

更改0x1600数据对象--输出映射表RxPDO:增加SubIndex005,索引号为10007160,其中“6071”代表Target torque映射索引号,“00”代表索引6071的第0位SubIdx,“10”代表数据大小,16位。注意:在xml中写的顺序与实际不同。同时修改相应的BitSize=16+32*5=176.

 

 

3)定义PDO传输

修改TxPDO:

 

 

修改RxPDO:

 

 

 

2、STM32程序更改

在cia402appl.h中修改对象描述,包括更改本地存储变量、表项描述、对象名字以及对象描述。

1)更改本地存储变量

更改0x1600本地存储变量

 

 

更改1600结构体

 

 

更改0x1A00本地存储变量

 

 

更改0x1A00结构体

 

 

2)更改表项描述

更改0x1600表项描述

 

 

更改0x1A00表项描述

 

 

3)更改对象描述

需要特别注意数据要与子索引最大值相对应。

 

 

4)应用层程序更改

在APPL_InputMapping()中更改:

 

 

在APPL_Application()更改

 

 

在CiA402_DummyMotionControl()中增加cst应用程序。

3、测试验证

利用TwinCAT主站更新xml,并带电机进行cst模式测试:

 

 

设定运行模式modeofoperation=10,给定TargetTorque一定值,观察电机变化。

 

posted on 2025-12-10 12:13  杰瑞鼠  阅读(3)  评论(0)    收藏  举报