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

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

3天内不再提示

【睿擎派】EtherCAT总线之IO模块读写

RT-Thread官方账号 2025-12-31 19:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群



上一篇文章《【睿擎派】CANOpen总线之IO模块读写(DS401协议)》我写了关于睿擎派上CANOpen的IO模块通信,为什么先写CANOpen?说来也有挺意思,是因为在睿擎派上对接EtherCAT的IO模块,花费了很久时间,也没有多少进展,所以转头去研究了基于CANOpen对接IO模块,因为二者是有非常大的渊源的。


一、EtherCAT和CANOpen的异同



1980年代CAN总线诞生,1996年CANOpen协议发布,2003年EtherCAT技术发布。EtherCAT 和 CANopen 的核心关系是:CANopen 是协议规范(侧重应用层),EtherCAT 是总线技术(侧重物理层 / 传输层)—— 两者均源于 CAN 总线生态,EtherCAT 复用了 CANopen 的核心应用层规范,同时在底层传输上实现了质的突破,最终形成 “上层兼容、底层独立” 的技术互补格局。


EtherCAT完全复用 CANopen 的对象字典结构(索引范围、寻址方式),仅在 0x1C00~0x1C3F 等区间扩展了 Sync Manager、DC 同步等专属索引。完全保留 PDO/SDO 的功能定义,仅改变了底层传输方式。


CANopen 的 PDO 通过 COB-ID 映射到 CAN 帧,EtherCAT 的 PDO 通过 Sync Manager(同步管理器)绑定到以太网帧;CANopen 的 SDO 通过 CAN 帧分片传输,EtherCAT 的 SDO 通过邮箱通道(SM0/SM1)实现低延迟传输;


CANopen通过 EDS(Electronic Data Sheet)文件描述设备的对象字典、PDO 映射等配置,主站通过 EDS 识别设备;


EtherCAT通过 ESI(EtherCAT Slave Information)文件扩展 EDS 规范,新增了 Sync Manager、DC 同步、FMMU 等 EtherCAT 专属配置,同时兼容 EDS 的核心内容;


此外比较关键的差异就是CAN总线最大速率1Mbps,ms级抖动,而EtherCAT最大可以1Gbps速率,us级抖动。这其中的原因除了速率上的差异外,传输机制上有很大的差别,CANOpen是帧逐节点转发,需等待节点处理后再传递,而帧 “并行处理”,所有节点同时读取帧中自身数据(如下面的动图比较形象的展现了EtherCAT的传输原理)。


df4faed4-e638-11f0-8ce9-92fbcf53809c.gif

CANOpen主要运用在低速设备(传感器、执行器)、低成本场景,而EtherCAT多用在高速 IO、多轴伺服、实时控制场景,比如机器臂,具身智能等设备上。


二、睿擎派对接雷赛EM32DX-E4-V30模块



我从RC-Pi-3506的SDK1.5.0版本开始进行IO模块对接,经过SDK1.7.0版本,最后在SDK1.7.2版本上在RTT郭老师的协助下调试成功,SDK1.7.2和SDK1.7.0关于EtherCAT的接口调用差异还是蛮大的,所以本篇内容以SDK1.7.2版本为准。


在真正对接之前,除了硬件模块外,还需要硬件手册和ESI文件(文后附相关文件下载链接)。

df621f2e-e638-11f0-8ce9-92fbcf53809c.jpg


我们以BSP 1.7.2版本的示例工程06_bus_ethercat_master_2motor_1io为基础进行开发调试。

df722d74-e638-11f0-8ce9-92fbcf53809c.png


本代码的官方说明的链接如下:

https://www.rt-thread.com/ruiching/document/site/rc3506/q7dq3ksb/#%E7%A4%BA%E4%BE%8B%E8%BF%90%E8%A1%8C


原示例支持2个伺服器+1个IO模块,为了简化,我们睿擎派只连接一个IO模块(如下图)。

df7d6220-e638-11f0-8ce9-92fbcf53809c.png

所以ethercat_2motor_1io.c文件的第16行代码我们把电机的数量调整为0。

define MOTOR_NUM 0 //2


(1)配置PDO



最关键的部分是修改IO模块的PDO定义,由于官方示例中所用的IO模块(SG-ELC)和我们的型号规格不同,所以需要修改这部分配置。


查阅《EM32DX-E4 模块用户手册 V3.1》 第20页 5.2.1小结(如下图)

df8cc864-e638-11f0-8ce9-92fbcf53809c.png

对应IO模块16路开关量输入,所以对应的pdo定义的代码如下:


static ec_pdo_entry_info_t eio_input_pdo_entries[] =

{

{ 0x6000, 0x01, 16 },

};

0x6000是索引地址

0x01 是子索引地址

16表示16bit

同样,我们查阅第22页5.2.3小结(如下图)

df9ac57c-e638-11f0-8ce9-92fbcf53809c.png

对应IO模块的16路开关量输出,所以对应的pdo定义代码如下:

staticec_pdo_entry_info_teio_output_pdo_entries[] ={{0x7000,0x01,16},};

0x7000是索引地址

0x01 是子索引地址

16表示16bit

ec_pdo_entry_info_t是定义单个PDO条目的核心属性类型,其结构体的定义如下:

typedefstruct{uint16_tindex; / PDO entry index. */uint8_tsubindex; / PDO entry subindex. /uint8_tbit_length;/** Size of the PDO entry in bit. /} ec_pdo_entry_info_t;

index – DO主索引 (对象字典对应条目主索引地址)

subindex- DO子索引

bit_length – 对应的位数

我们再看5.2.1和5.2.3的说明,TxPDO0的索引地址为0x1A00,RxPDO0的索引地址为0x1600。

我们需要配置eio_pdos 对象数组,其结构体定义为ec_pdo_info_t ,原型如下:

typedefstruct{uint16_tindex;uint32_tn_entries;ec_pdo_entry_info_tconstentries;}ec_pdo_info_t;

index – PDO索引,本身也是对象字典的一部分,TxPDO是 从站à主站(数据上传),RxPDO是主站à从站(指令下发)。

n_entries – 对应条目的数量

entries 条目数组指针。

所以eio_pdos 对象数组的定义代码如下:

ec_pdo_info_teio_pdos[] = {{0x1600,1, eio_output_pdo_entries },{0x1a00,1, eio_input_pdo_entries },};

接下来我们定义同步管理器相关内容。我们先看ec_sync_info_t 结构体定义。

typedefstruct{uint8_tindex;/** Sync manager index. /ec_direction_t dir / Sync manager direction. */uint32_tn_pdos; / Number of PDOs in a pdos. /ec_pdo_info_tconstpdos; /< Array with PDOs to assign. Thismust contain at least \a n_pdos PDOs. */ec_watchdog_mode_t watchdog_mode; / Watchdog mode. */} ec_sync_info_t;

index – 同步管理器的硬件索引 0 – 15,常见的是SM0-SM3

对应SDO非实时操作

SM0(索引 0)- 主站→IO 模块(系统配置入),发送SDO报文,配置对象字典,接受CoE管理指令、

SM1(索引 1)- IO 模块→主站(系统响应出),SDO响应报文,回传诊断信息,发送从站状态切换码。

对应PDO实时操作:

SM2(索引 2)- 主站→IO 模块(输出)

SM3(索引 3)- IO 模块→主站(输入)

dir – SM的传输方向 EC_DIR_OUTPUT:主站输出→从站输入(RxPDO,如 DO 控制),EC_DIR_INPUT:从站输出→主站输入(TxPDO,如 DI 采集)。

n_pdos – SM要绑定的PDO数量(pdos数组中的PDO个数)

watchdog_mode — 看门狗模式(枚举类型):

EC_WD_DISABLE:禁用看门狗

EC_WD_ON:启用看门狗(主站心跳超时后,从站进入安全状态,如 DO 归零)

综上,所以eio_syncs的数组定义如下:

ec_sync_info_teio_syncs[] ={{2, EC_DIR_OUTPUT,1, &eio_pdos[0], EC_WD_DISABLE },{3, EC_DIR_INPUT,1, &eio_pdos[1], EC_WD_DISABLE },};

也就是官方代码(右边)被左边的代码代替。

dfa96ea6-e638-11f0-8ce9-92fbcf53809c.png

(2)配置DC

这部分相关的内容需要查询ESI文件,也就是因为DC配置有误,设备总进入不到OP模式的主要原因。


EM32DX-E4.xml文件里,支持两种产品型号,一种是EM32DX-E4-V30,一种是EM32DX-E4,


EM32DX-E4是支持DC同步的,配置如下图所示:

dfb6d65e-e638-11f0-8ce9-92fbcf53809c.jpg


而EM32DX-E4-V30对应的ESI描述如下:

dfc60c3c-e638-11f0-8ce9-92fbcf53809c.jpg


通过读取设备数据字典的信息,我们知道当前这款EM32DX-E4模块其实是EM32DX-E4-V30。它是不支持DC的。

dfd4501c-e638-11f0-8ce9-92fbcf53809c.jpg

相关DC配置必须为0才可以。另外查手册或者回读数据字典,我们都可以知道厂商ID为0x00004321,这个地方需要替换一下。


此外进入OP模式后,电机操作的代码注释掉就可以了,这里不做详述了。


三、运行调试


编译代码,然后部署。最后在远程操作终端,我们输入ect_csp_io,进行EtherCAT总线初始化及相关的配置。然后再输入motor_run命令,就可以看到开关量输出灯像走马灯一样运转了。


dfe264e0-e638-11f0-8ce9-92fbcf53809c.jpg


dfed1124-e638-11f0-8ce9-92fbcf53809c.gif


附1:内置调试命令

dfff0014-e638-11f0-8ce9-92fbcf53809c.jpg



附2:雷赛EM32DX-E4说明书和ESI文件


https://download.csdn.net/download/yefanqiu/92462286

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

    关注

    59

    文章

    3107

    浏览量

    473824
  • 总线
    +关注

    关注

    10

    文章

    3065

    浏览量

    91966
  • ethercat
    +关注

    关注

    20

    文章

    1618

    浏览量

    46342
  • IO模块
    +关注

    关注

    0

    文章

    177

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于轻松玩转Modbus工业通信

    。今天,我们就带来一篇实战教程,教大家如何基于/工业平台,分别作为ModbusRTU主机和ModbusTCP主机,读取Modbus
    的头像 发表于 07-23 17:05 4059次阅读
    基于<b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>派</b>轻松玩转Modbus工业通信

    文件系统指南:从开发到发布全流程实践 | 技术解析

    在嵌入式系统开发中,文件系统扮演着至关重要的角色,它负责数据的持久化存储、配置文件管理和资源访问等核心功能。平台提供了一套完整的文件系统解决方案,从开发阶段的API调用到调试阶段的文件操作,再到
    的头像 发表于 11-05 18:13 8404次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>派</b>文件系统指南:从开发到发布全流程实践 | 技术解析

    】CANOpen总线IO模块读写(DS401协议)

    以瑞芯微RK3506为主控芯片,底层搭载RT-Thread操作系统,基于专为工业场景打造的工业平台进行开发。该平台是全栈自主可控的
    的头像 发表于 12-24 18:01 7719次阅读
    【<b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>派</b>】CANOpen<b class='flag-5'>总线</b><b class='flag-5'>之</b><b class='flag-5'>IO</b><b class='flag-5'>模块</b><b class='flag-5'>读写</b>(DS401协议)

    3562快速上手体验

    1引言随着物联网和工业自动化的快速发展,嵌入式开发板的需求日益增长。3562作为一款基于瑞芯微RK3562处理器的高性能开发板,凭借其强大的处理能力和丰富的外设接口,成为了嵌入式开发者的新选择
    的头像 发表于 03-04 21:19 7729次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>派</b>3562快速上手体验

    3562 EtherCAT主站实践

    结构和低廉的成本优势,广泛应用于工业机器人、CNC机床、自动化产线等场景。3562作为一款基于瑞芯微RK3562处理器的高性能开发板,内置了EtherCAT
    的头像 发表于 03-11 18:18 6645次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b>3562 <b class='flag-5'>EtherCAT</b>主站实践

    实现 LVGL 可视化 EtherCAT 电机控制,触屏操控伺服电机就这么简单|技术集结

    在工业自动化领域,运动控制系统往往面临两大痛点:实时性要求极高,同时又需要直观的人机交互界面。传统方案要么牺牲实时性换取界面体验,要么用昂贵的专用HMI设备来弥补。今天分享一个基于RC3506
    的头像 发表于 03-18 11:07 8308次阅读
    用<b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>派</b>实现 LVGL 可视化 <b class='flag-5'>EtherCAT</b> 电机控制,触屏操控伺服电机就这么简单|技术集结

    EtherCAT总线IO模块功能及安装介绍

    XD系列插片式远程IO模块,成套系统主要由耦合器、各种功能IO模块、电源辅助模块以及终端模块组成
    的头像 发表于 07-14 09:14 2755次阅读
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>总线</b><b class='flag-5'>IO</b><b class='flag-5'>模块</b>功能及安装介绍

    平台极简开发重要实践—— PinMux 配置工具 | 试用名单公示

    RT-Thread工业开发平台是为工业场景设计的软硬件一体化开发方案,全栈自主可控,赋能用户聚焦核心业务创新,大幅提升开发效率。平台以极简化设计理念来指导产品开发。为降低开发门
    的头像 发表于 06-11 17:05 1745次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b>平台极简开发重要实践—— PinMux 配置工具 | <b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>派</b>试用名单公示

    RK3506J开发板开箱记录、初步调试

    基于RK3506J开发,RK3506J是一款三核A7+M0的入门级工业MPU,由于其价位低,性能优异,近期收到热捧,各家都出了很多RK3506J的开发板,赛德也出了一款,不过是
    的头像 发表于 06-20 20:43 2783次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>派</b>RK3506J开发板开箱记录、初步调试

    【MCU体验、MPU性能】 RC3506 套件今日10点淘宝独家开售!首批200套,抢完即止!| 产品动态

    工业开发平台-RC-Pi3506套件今日在淘宝「赛德科技」店铺正式发售!原价299元
    的头像 发表于 07-04 09:04 1373次阅读
    【MCU体验、MPU性能】<b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>派</b> RC3506 套件今日10点淘宝独家开售!首批200套,抢完即止!| 产品动态

    基于轻松玩转EtherCAT主站,实现电机精确控制

    总线技术。本次实战教程将基于平台,演示实现:EtherCAT主站开发CSP模式伺服电机精准控制远程
    的头像 发表于 07-30 17:03 5609次阅读
    基于<b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>派</b>轻松玩转<b class='flag-5'>EtherCAT</b>主站,实现电机精确控制

    直播预告 | 3506 Ubuntu开发实战:从环境搭建到整包固件制作,一次讲透

    想用Ubuntu系统在3506上做开发,却卡在环境配置?开发完应用程序,如何打包成完整的固件方便部署?SSH连不上、网络配不好、固件烧了起不来——这些坑你都踩过几个?3月18日(周三)晚8点
    的头像 发表于 03-13 17:45 1801次阅读
    直播预告 | <b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>派</b>3506 Ubuntu开发实战:从环境搭建到整包固件制作,一次讲透

    直播预告 | 3562 NullClaw 系统开发实战:把 AI 助手塞进工业开发板

    ,在3562上完整部署NullClaw,让工业开发板瞬间拥有AI对话与自动化任务能力。直播核心内容本次直播以
    的头像 发表于 03-30 18:23 377次阅读
    直播预告 | <b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>派</b> 3562 NullClaw 系统开发实战:把 AI 助手塞进工业开发板

    3562 整包固件制作指南

    与重打包操作。本文以RC3562为例,详细介绍整包固件从解包、修改分区内容、重新打包到烧录验证的完整操作流程。一、准备工作1.1所需工具
    的头像 发表于 04-01 18:08 1218次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>派</b> 3562 整包固件制作指南

    免费试用|开发板等你来测:提交高质量报告,开发板免费送

    正在为下一代工业控制器选型?想在实际硬件上验证AMP混合部署、EtherCAT实时性?免费申请一块,30天深度测试,只要提交高质量报告,开发板就归你。
    的头像 发表于 04-17 11:56 207次阅读
    免费试用|<b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>派</b>开发板等你来测:提交高质量报告,开发板免费送