0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

解锁 EtherCAT-CoE:小米电机驱动实战

RT-Thread官方账号 2025-01-20 18:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

电机控制演示


简介

EtherCAT CoE(CAN over EtherCAT)是 EtherCAT 协议中的一种通信协议,它将 CANopen 应用层协议集成到 EtherCAT 网络中,用于分布式系统中的设备控制和数据交换。它结合了 CANopen 的易用性和 EtherCAT 的高性能优势,广泛用于工业自动化、运动控制和传感器网络等领域。

以下是 CoE 的主要特点和功能:

基于CANopen:

CoE 的应用层直接采用了 CANopen 的设备协议,包括对象字典(Object Dictionary)的结构和服务。

通过对象字典定义设备参数、通信对象和控制数据,确保了设备间的互操作性。

支持标准服务:

SDO(Service Data Object):用于点对点的配置和诊断通信,允许主站与从站交换大容量数据(如参数配置)。

PDO(Process Data Object):用于实时通信,传输小数据量的周期性过程数据,支持快速响应。

Emergency(EMCY)消息:用于报告设备异常情况。

NMT(Network Management):提供网络管理功能,如启动、停止和复位设备。

高效传输:

EtherCAT 的总线结构和高速帧处理能力,使 CoE 能以更低的延迟和更高的效率进行数据交换。

支持多种应用场景:

适用于工业设备配置、实时监控、参数诊断和系统集成等。

对象字典映射:

对象字典以层级结构组织设备的数据和功能。

EtherCAT 使用 CoE 协议访问对象字典中的变量,以实现参数读取、写入和实时控制。

典型应用:

用于支持复杂控制逻辑的驱动器(如伺服驱动)。

用于监控、调试和配置设备的工程工具。

本节将演示如何使用Beckhoff TwinCAT3和EtherKit开发板实现EtherCAT COE主从站通信,该示例工程

已支持CSP及CSV两种操作模式。

前期准备

软件环境:

RT-Thread Studio

https://download-redirect.rt-thread.org/download/studio/RT-Thread Studio_2.2.8-setup-x86_64_202405200930.exe

RZN-FSP v2.0.0

https://github.com/renesas/rzn-fsp/releases/download/v2.0.0/setup_rznfsp_v2_0_0_rzsc_v2024-01.1.exe

Beckhoff Automation TwinCAT3

https://www.beckhoff.com/en-us/support/download-finder/search-result/?c-1=26782567

硬件环境:

EtherKit开发板

网线一根

Jlink调试器

CiA402伺服使用说明

首先来看下CiA402协议:CiA402协议(Communication Interface for Drive Systems)是由CiA (CAN in Automation) 组织定义的,用于工业自动化领域,特别是针对电机控制系统的标准化协议。CiA402是驱动器和运动控制器CANopen设置子协议,定义变频器、伺服控制器以及步进的接口,它是国际标准IEC 61800-7系列的组成部分。CiA402协议基于CANopen通信协议,并在此基础上扩展和优化了用于运动控制系统的功能。它主要用于伺服电机步进电机以及其他类型的电动驱动系统的控制。

接下来看下FSA(有限状态自动机)显示驱动器的不同状态以及如何执行它们之间的转换。

17f95bd8-d71a-11ef-9434-92fbcf53809c.png

下面是对应上图各个状态的详细说明:

1825f846-d71a-11ef-9434-92fbcf53809c.png

对于控制器来说,在通信的每个周期内,都需要主站向从站发送控制字(control word),并且接收从站的状态字进行确认,比如说本工程中通过CiA402_StateMachine()实现CiA402的状态切换:

1836b7bc-d71a-11ef-9434-92fbcf53809c.png

与此同时,主站通过读取从站的状态字(status word, 0x6041)来了解从站当前正在运行的状态,通过 status word可以了解关于从机当前状态和可能发生的故障或警告的详细信息:

18574644-d71a-11ef-9434-92fbcf53809c.png

而主站通过控制字(control word, 0x6040)向从站发送控制命令,以此来改变其操作状态或触发指定的动作:

18618fd2-d71a-11ef-9434-92fbcf53809c.png18618fd2-d71a-11ef-9434-92fbcf53809c.png

CiA402对象字典定义

下面是有关CiA402对象字典在EtherKit CoE工程中支持的列表,其中已经支持了位置模式及速度模式,可通过主站去设置控制字来与从站的过程数据进行交互,基于CoE协议完成对控制器的读写:

1891e24a-d71a-11ef-9434-92fbcf53809c.png18bd4930-d71a-11ef-9434-92fbcf53809c.png

TwinCAT3配置

在启动TwinCAT3之前,我们还需要做一些配置操作:

安装ESI文件

启动TwinCAT之前,将发布文件夹中包含的ESI文件复制到TwinCAT目标位置:..\TwinCAT\3.x\Config\IO\EtherCAT

注意:当前版本的 ESI 文件位于:..\board\ports\ESI_File\Renesas EtherCAT RZN2 CoE CDP.xml

18d78cdc-d71a-11ef-9434-92fbcf53809c.png

新建TwinCAT工程

打开TwinCAT软件,点击文件->新建->新建项目,选择TwinCAT Projects,创建TwinCAT XAR Project(XML format)工程:

19056d78-d71a-11ef-9434-92fbcf53809c.png

从站启动CoEApp

将EtherKit开发板上电后,需要使用网线连接ETH0网口, ethercat会默认运行。

191b133a-d71a-11ef-9434-92fbcf53809c.png

从站设备扫描

新建工程之后,在左侧导航栏找到Devices,右键选择扫描设备。正常来说如果扫描从站设备成功的话是会显示:Device x[EtherCAT];而扫描失败则显示的是:Device x[EtherCAT Automation Protocol],此时就代表从站初始化失败。

192dc584-d71a-11ef-9434-92fbcf53809c.png

点击Ok后会弹出一个窗口:Scan for boxes,点击确认后,会再次弹出窗口:Activate Free Run,由于我们首次使用CoE还需要更新EEPROM固件,所以暂时先不激活。

更新EEPROM固件

回到TwinCAT,在左侧导航栏中,由于我们已经成功扫描到从站设备,因此可以看到主从站的配置界

面:

193bf44c-d71a-11ef-9434-92fbcf53809c.png

我们双击Box 1,在中间界面的上方导航栏中单击EtherCAT,并点击Advanced Settings …:

194f3520-d71a-11ef-9434-92fbcf53809c.png

这里按图示点击Download from List …:

195e9420-d71a-11ef-9434-92fbcf53809c.png

我们写入ESI固件到EEPROM中,这里由于我们配置的是双网口,所以选择Renesas EtherCAT RZ/N2 COE 2port,如果你配置的是三网口的话则选择3port后缀的ESI文件进行下载。

19785694-d71a-11ef-9434-92fbcf53809c.png

下载完成之后,我们右键Device x(EtherCAT)移除设备后重新扫描并添加设备,并完成激活工作(参考上文)。

19846d94-d71a-11ef-9434-92fbcf53809c.png

EtherCAT COE测试

首先我们需要确保程序已经正常下载至工程中,同时ESI文件已经成功烧录,下面是开发板串口终端打印信息:

19a79f44-d71a-11ef-9434-92fbcf53809c.png

同时我们打开前面新建的ESC工程,并且扫描设备,此时会弹出EtherCATdrive(s) added,我们选择NC

– configuration,点击OK后并激活设备:

19c1cf36-d71a-11ef-9434-92fbcf53809c.png

成功激活后, EtherCAT状态机会依次经历Init->Pre-Op->Safe-Op,最后到Op(Operational,可操作状态), EtherKit CoE工程默认开启csp (周期同步位置模式),并且支持csv(同步周期速度模式)。

当系统上电后,驱动器自动完成初始化,然后进入STATE_SWITCH_ON_DISABLED状态,此时可以对驱动器的工作状态模式进行设置,比如说设置为csp或csv模式等等;同时对应在开发板端能看到当前轴1对 应的CiA402状态机信息在不断打印:

19dd5594-d71a-11ef-9434-92fbcf53809c.png

csp位置模式控制

先来看下csp模式下的控制器:在位置模式下,我们可以将规划好的目标位置通过写入控制字0x607A设置目标位置,并且对应状态字0x6064可以得到实际反馈的位置信息。

而如果想要在csp或csv模式下操作,必须先将其状态修改为STATE_OPERATION_ENABLED (可操作模式)。

展开左侧导航栏,依次点击Box1(RenesasEtherCATRZ/N2 CoE2port)->Module1(csp- axis)-

>Outputs->Control Word,首先需要将状态切换为伺服无故障模式,主站通过向控制字0x6040写入值0x0080(dec:128),将伺服控制器转变为无障碍状态:

19fbe176-d71a-11ef-9434-92fbcf53809c.png

此时可以看到从站串口终端会停止State Transition2、State Transition7的打印,接着我们再次向控制字0x6040写入值0x000F(dec:15):

1a1ca29e-d71a-11ef-9434-92fbcf53809c.png

此时伺服控制器由等待打开伺服使能切换到伺服运行的状态,同时在从站串口中断打印

StateTransition2、State Transition3、State Transition4,在经过状态传输2 3 4后, CiA402状态机进入STATE_OPERATION_ENABLED ,此时就可以对控制器进行控制了。

比如说当前是位置模式,通过向Index:0x607A写入位置数值,我们写入100000:

1a2b12de-d71a-11ef-9434-92fbcf53809c.png

此时依次点击Box 1(Renesas EtherCAT RZ/N2 CoE 2port)->Module 1(csp - axis)->Inputs->Actual Position,查看实际反馈的位置,会发现Index 0x6064对应的value会不断自增,直到100000停止:

1a3eb4ba-d71a-11ef-9434-92fbcf53809c.png

csv速度模式控制

首先需要将控制器模式由默认的csp切换为csv模式,点击左侧导航栏中的Box1(RenesasEtherCAT

RZ/N2 CoE 2port),接着在中间的页面中找到上方的Slots选择Axis 0,在右边预设支持的module修改为 csv ,并点击‘<’标志:

1a48f268-d71a-11ef-9434-92fbcf53809c.png

同时我们也可以观察左侧对应的模块信息是否更新,并切换为csv模式:

1a63f22a-d71a-11ef-9434-92fbcf53809c.png

切换好模式后,我们需要重新加载设备,点击TwinCAT3上方导航栏的TwinCAT->Reload Devices:

1a7b84f8-d71a-11ef-9434-92fbcf53809c.png

然后需要使控制器进入STATE_OPERATION_ENABLED (可操作模式,参考上文),同样是对控制字依次写入0x0080(转变为无障碍状态)、 0x000F (由等待打开伺服使能切换到伺服运行状态)。

此时我们查看输入的状态字0x6041,如果对应的value值为0x1237,那么就代表当前处于可操作模式(STATE_OPERATION_ENABLED);如果显示的值为0x1208,那么代表当前status处于Fault,重新设置 control word为0x0080( dec:128),并且在重复上述操作即可。

此时我们便可对Target Velocity值进行写入实际想要控制的速度值:

1a8725ce-d71a-11ef-9434-92fbcf53809c.png

同时可在输入中查看实际设置的速度信息是否一致:

1a9c1a1a-d71a-11ef-9434-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信协议
    +关注

    关注

    28

    文章

    1073

    浏览量

    41869
  • 电机驱动
    +关注

    关注

    60

    文章

    1375

    浏览量

    89097
  • ethercat
    +关注

    关注

    19

    文章

    1377

    浏览量

    43438
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    耐达讯CAN转EtherCAT网关,变频器通信升级的“真香”指南

    EtherCAT主站与CAN总线上的变频器,将指令双向转译。这样无需更换变频器,就能融入高速网络。如果设备支持CANopen,通过CANopen over EtherCAT (CoE)技术,还能沿用
    发表于 07-15 15:34

    TMC8670 – 集成EtherCAT通讯和FOC伺服运动控制芯片适用2/3相永磁同步电机

    - 传感器接口(数字或模拟霍尔;数字或模拟编码器)- 支持3相永磁同步电机和2相步进电机- PWM引擎包括SVPWM-EtherCAT 通讯接口 COE协议,CiA 402
    发表于 08-06 22:47

    labview通过Ethercat控制伺服电机

    现在伺服电机很多都支持Ethercat总线了,这个总线速度很牛。有玩过labview通过Ethercat控制伺服电机的大神请指教:
    发表于 10-16 19:15

    基于TMC8462和TMCC160的EtherCAT直流伺服快速开发指导

    与高效的最先进的FOC算法. 在TMCC160-LC CoE芯片中集成了CoE协议以及用于3相BLDC/PMSM可达24V 1A的预驱. TMC8462是一款完全兼容实时的EtherCAT从站通讯协议
    发表于 02-12 15:10

    如何快速更改.coe文件?

    假设我的.coe文件最初是memory_initialization_radix = 2; memory_initialization_vector = 10,11,00;我将第三个元素更改为11并进行了运行模拟 - >运行行为模拟,但它仍然是00。如何快速更改.coe
    发表于 04-02 06:52

    labview如何使用ethercat协议

    现在想使用ethercat板卡控制电机,不知道labview如何使用ethercat协议,是要安装什么驱动吗还是怎么样,请教一下各位大神,
    发表于 06-23 14:08

    资料下载:在CODESYS中通过EtherCAT总线驱动单个电机

    在CODESYS中同通过EtherCAT总线驱动单个电机本文讲述了手上有个支持EtherCAT总线的驱动器和步进
    发表于 07-02 06:30

    在CODESYS中怎样通过EtherCAT总线去驱动单个电机

    在CODESYS中怎样通过EtherCAT总线去驱动单个电机呢?如何通过CODESYS添加EtherCAT的主站从站控制电机转动?
    发表于 09-18 08:43

    开源!ZYNQ IgH EtherCAT主站方案分享

    ethercat-stable-1.5-gcd0d17d-20210723Xenomai:xenomai-v3.0.11-g4f49146伺服驱动器:台达ASD-A2-0121-E伺服电机:台达
    发表于 10-29 11:17

    EtherCAT网络支持CiA402规格所有的CoE模式?

    本系列伺服驱动器满足标准EtherCAT协议。支持CiA402规格所有的CoE模式及EtherCAT的各项命令模式,支持周期性同步运行模式如周期性同步位置CSP模式,周期性同步速度模式
    发表于 08-17 16:25 7803次阅读

    如何生成ROM的coe文件?

      在生成ROM时需要提供coe文件,如下图所示。这个coe文件本质上就是Memory的初始化文件,Xilinx对其有具体的格式要求。   coe文件格式 coe文件格式要求如下图所示
    的头像 发表于 02-11 11:43 9709次阅读
    如何生成ROM的<b class='flag-5'>coe</b>文件?

    基于最新5.4电机库的STM32电机控制应用实战分享

    基于最新5.4电机库的STM32电机控制应用实战分享MC_SDK_5_4Training_201911
    发表于 07-27 15:23 74次下载

    STM32电机控制应用实战分享

    电子发烧友网站提供《STM32电机控制应用实战分享.pdf》资料免费下载
    发表于 07-31 15:04 51次下载
    STM32<b class='flag-5'>电机</b>控制应用<b class='flag-5'>实战</b>分享

    如何同步运行?--基于EtherCAT的柔性电机驱动系统

    在自动化生产线中,EtherCAT网络轻松实现了过去难以同步控制的成百上千个电机,如流水线等。本文将探讨如何通过柔性电机驱动系统,在EtherCAT
    的头像 发表于 05-16 08:24 1515次阅读
    如何同步运行?--基于<b class='flag-5'>EtherCAT</b>的柔性<b class='flag-5'>电机</b><b class='flag-5'>驱动</b>系统

    Analog Devices / Maxim Integrated PD60-4H-1461-CoE单轴步进电机数据手册

    Analog Devices PD60-4H-1461-CoE单轴步进电机设计用作伺服驱动器,实现高达+48V电源电压和高达3Nm扭矩。PD60-4H-1461-CoE设有用于
    的头像 发表于 06-12 15:10 587次阅读
    Analog Devices / Maxim Integrated PD60-4H-1461-<b class='flag-5'>CoE</b>单轴步进<b class='flag-5'>电机</b>数据手册