EtherCAT 是运动控制领域主要的通信协议,开源EtherCAT 主站协议栈 IgH 和SOEM 两个项目,IgH 相对更普及一些,但是它是基于Linux 内核的方式,比SOEM更复杂一些。使用IgH 协议栈编写一个应用程序,控制EtherCAT 伺服电机驱动器是比较简单的。但是要实现一个通用的EtherCAT 组件库(例如IEC61131-3 ,或者IEC61499功能块)就复杂一些了,例如动态地加入一个从站驱动器,通过组件控制某一个从站。
本博文研究基于组件的EtherCAT 程序架构及其实现方法。
背景技术
CiA402 运动控制的CANopen 驱动器规范
EtherCAT 的运动控制器是基于CANopen 的CiA402规范。这套配置文件规范标准化了伺服驱动器、变频器和步进电机控制器的功能行为。它定义了状态机,控制字,状态字,参数值,它们映射到过程数据对象(PDO)配置文件已在 IEC 61800-7 系列中部分实现国际标准化。
COE 协议
CANopen Over EtherCAT 协议被称为COE,它的架构为:

正是由于如此,基于EtherCAT 的运动控制器的控制方式,PDO 定义,控制方式都是类似的。
主要的一些数据对象

PLCopen 运动控制库
最著名的运动控制的标准应当数PLCopen 运动控制库,它是PLC 上的一个功能块集。PLC 的应用程序通过这些功能块能够方便地实现运动控制。但是这些功能块如何实现,如何与硬件驱动结合。内部实现应该是比较复杂的。笔者看来,应该有两种方式:
- PLC 内嵌运动控制模型
- 通过Ethercat 总线外接运动控制模块
两种结构的实现方法应该各不相同。是否有支持etherCAT 的PLCopen 功能块库?
PLCopen 的功能块分为管理功能块和运动功能块。管理功能块不会引起轴的运动。
管理功能块
| 功能块 | 功能说明 |
| MC_Power | |
| MC_ReadStatus | |
| MC_ReadDigitalInput | |
| MC_ReadDigitalOutput |
运动功能块
| 功能块 | 功能说明 |
| MC_Home | 复位到原点 |
| MC_Stop | 被控轴减速并停止 |
| MC_MoveAbsolute | 以原点为基础,以绝对位置为目标的运动 |
| MC_MoveRelative | 以运动点为基础,相对距离为目标的运动 |
| MC_MoveVelocity | 对未终止的运动以规定的速度运动 |
| MC_TorqueControl | 被控轴施加规定的转矩或者力,达到该值后以该值恒定施加。 |
| MC_PositionProfile | 位置配置 |
| MC_VelocityProfile | 速度配置 |
一个开源项目GitHub - i5cnc/plcopen: plcopen中的运动控制功能块。
| 功能块 | 描述 |
|---|---|
| MC_Power | 控制电源(开或关)。 |
| MC_Home | 命令轴执行“search home”序列。 |
| MC_Stop | 命令受控运动停止并将轴传递到“停止”状态。 |
| MC_Halt | 命令受控运动停止并将轴传递到“静止”状态。 |
| MC_MoveAbsolute | 命令受控运动到指定的绝对位置。 |
| MC_MoveRelative | 命令相对于执行时设定的位置具有指定距离的受控运动。 |

本文探讨了EtherCAT在运动控制领域的应用,特别是基于组件的程序架构,如IgH协议栈的使用,以及如何实现PLCopen运动控制功能块库,包括多轴运动控制和IEC61499功能块的集成。

2万+

被折叠的 条评论
为什么被折叠?



