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

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

3天内不再提示

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

RT-Thread官方账号 2026-03-18 11:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

工业自动化领域,运动控制系统往往面临两大痛点:实时性要求极高,同时又需要直观的人机交互界面。传统方案要么牺牲实时性换取界面体验,要么用昂贵的专用 HMI 设备来弥补。

今天分享一个基于睿擎派 RC3506的完整方案——用LVGL 图形界面 + EtherCAT 总线,在一块开发板上同时搞定可视化操控和微秒级实时控制。(文末附完整工程源码及使用指南扫码领取)

效果先看



触摸屏上拖动滑块 → 伺服电机精准转到指定位置;点击 Run/Stop 按钮 → 电机启停;切换 Direct/Reverse → 方向立即响应。屏幕上的位置表盘实时显示期望位置和当前位置,一目了然。


8eaec692-2277-11f1-96ea-92fbcf53809c.jpg


7寸触控屏上的 LVGL 控制界面:位置表盘 + 滑块 + 运行控制按钮

与此同时,EtherCAT 总线上挂载的远程 IO 模块同步输出流水灯效果,展示多从站并行控制能力。

为什么选 EtherCAT?

EtherCAT(Ethernet for Control Automation Technology)是目前工业现场总线中实时性最强的协议之一:

通信周期最低 1ms,支持分布式时钟DC)同步,精度达微秒级

●"飞速处理"机制:数据帧在经过从站时直接被读写,无需等待,延迟极低

●菊花链拓扑:一根网线串联多个从站,布线简单,最多支持 65535 个节点

●使用标准以太网硬件,无需专用芯片,成本可控


睿擎派 RC3506 内置 EtherCAT 主站协议栈,配合 RT-Thread 实时操作系统,可以稳定跑出1ms 控制周期。


硬件准备

8ec75c16-2277-11f1-96ea-92fbcf53809c.png

连接方式:

睿擎派 ETH0 ──网线──> 伺服驱动器 IN 口


伺服驱动器 OUT 口 ──网线──> 远程 IO IN 口


睿擎派 MIPI 接口 ──排线──> 7 寸触控屏


8ed31baa-2277-11f1-96ea-92fbcf53809c.png


EtherCAT 主从站硬件连接示意:睿擎派 → 伺服驱动器 → 远程 IO


软件架构

整个示例的软件结构非常清晰,main 函数只做两件事:

intmain(void)
{
lvgl_thread_init();// 启动 LVGL 图形线程
ethercat_domain_init();// 启动 EtherCAT 控制线程
return0;
}


两个线程并行运行,互不干扰:

●LVGL 线程:负责渲染界面、响应触摸事件,将用户操作写入共享变量

●EtherCAT 线程:以 1ms 为周期读取共享变量,通过 PDO 下发目标位置给伺服驱动器


EtherCAT 主站初始化流程

EtherCAT 的状态机切换是标准流程,睿擎平台封装得很简洁:

// 1. 初始化主站服务


ecat_service_init();

// 2. 自动扫描总线拓扑,发现所有从站
ecat_master_init(&csp_master);

// 2. 自动扫描总线拓扑,发现所有从站
slave_counts=ecat_slavecount(&csp_master);;

// 3. 配置分布式时钟(DC)同步
slave_cia402_config.dc_assign_activate=0x300;
slave_cia402_config.dc_sync[0].cycle_time=csp_master.main_cycletime_us*1000;
slave_cia402_config.dc_sync[0].shift_time=500000;
slave_cia402_config.dc_sync[1].cycle_time=0;
slave_cia402_config.dc_sync[1].shift_time=0;

// 4. 配置 PDO 映射(目标位置、控制字、状态字等)
slave_cia402_config.sync=slave_syncs;
slave_cia402_config.sync_count=sizeof(slave_syncs)/sizeof(ec_sync_info_t);
ecat_slave_config(&csp_master,0,&slave_cia402_config);

// 5. 启动主站自动完成状态机切换:INIT → PRE-OP → SAFE-OP → OPERATIONAL
ecat_master_start(&csp_master);
state=EC_STATE_OPERATIONAL;
ecat_check_state(&csp_master,0,&state,20000000*3);


进入 OPERATIONAL 状态后,主站开始周期性收发过程数据(PDO),电机控制正式开始。


CSP 模式:周期同步位置控制

本示例使用CSP(Cyclic Synchronous Position)模式,这是伺服控制中最常用的模式之一:


主站每个控制周期向伺服驱动器发送目标位置,驱动器内部完成位置环、速度环、电流环的闭环控制。主站只需关心"去哪里",不需要关心"怎么去"。

核心控制循环如下:

while(1)
{
servo_switch_op(rmap,tmap);// 进行伺服状态机切换

if(rmap->control_word==7)
{
rmap->mode_byte=0x8;
rmap->dest_pos=tmap->cur_pos;// 同步当前位置
}
if(rmap->control_word==0xf)
{
if(motor_target_pos_last!=motor_target_pos)
{
/* 获取当前位置 */
motor_current_pos=PULSE_TO_ANGLE(tmap->cur_pos);

if(abs(motor_current_pos-motor_target_pos)<=0)
{
rmap->dest_pos=tmap->cur_pos;
if(abs(tmap->cur_pos-rmap->dest_pos)<=10)
{
/* 微调目标位置 */
motor_target_pos_last=motor_target_pos;
}
gotostop;
}
if(servo_dir)
{
rmap->dest_pos-=motor_step;// 根据方向步进目标位置
}
else
{
rmap->dest_pos+=motor_step;// 根据方向步进目标位
}
}
}
stop:
rt_thread_delay(5);
}


servo_run、motor_target_pos、servo_dir 这些变量由 LVGL 界面线程写入,EtherCAT 线程读取,实现了界面与控制的解耦。


PDO 映射:主站与从站的数据约定

PDO(Process Data Object)定义了每个控制周期主站和从站交换哪些数据:

主站 → 从站(RPDO,输出):

对象字典

含义

0x6060

工作模式(设为 0x08 = CSP 模式)

0x6040

控制字(使能/停止/故障复位)

0x607A

目标位置

0x60FF

目标速度

0x6071

目标转矩

从站 → 主站(TPDO,输入):

对象字典

含义

0x603F

错误码

0x6041

状态字(当前状态)

0x6064

实际位置(反馈给 LVGL 显示)

0x606C

实际速度

0x6077

实际转矩

实际位置 0x6064 会实时回传给 LVGL 界面,驱动表盘指针更新,让操作者直观看到电机当前位置。


多从站扩展:双电机 + IO 并行控制

睿擎平台同样支持一拖多的 EtherCAT 拓扑,只需在初始化时扫描从站数量,循环处理每个从站的 PDO 即可:

8ee5712e-2277-11f1-96ea-92fbcf53809c.jpg


双电机 + 远程 IO 模块菊花链连接拓扑

slave_counts=ecat_slavecount(&csp_master);

while(1){
for(size_tslave=0;slave<slave_counts;slave++)
{
rmap=(structrpdo_csp*)(info[slave].outputs);
tmap=(structtpdo_csp*)(info[slave].inputs);

if(info[slave].vendor_id!=0xee000002)
{// 伺服电机控制
servo_switch_op(rmap,tmap);
if(rmap->control_word==7)
{
rmap->dest_pos=tmap->cur_pos;
rmap->mode_byte=0x8;
}
elseif(rmap->control_word==0xf)
{
rmap->dest_pos=tmap->cur_pos;
if(servo_dir==0)
{
rmap->dest_pos-=10000;
}
else
{
rmap->dest_pos+=10000;
}
}
}
else
{// 流水灯控制
if(rt_tick_get()-last_ms>RT_TICK_PER_SECOND/4)
{
staticuint8_tindex=0;
uint16_t*out=(uint16_t*)rmap;
last_ms=rt_tick_get();
*out=(0x01<<index);
index++;
if(index>=16)
index=0;
}
}
}
stop:
rt_thread_mdelay(5);
}


电机控制和 IO 控制在同一个 1ms 周期内完成,完全同步。


快速上手

第一步:

在RuiChing Studio中选择 05_gui_lvgl_ethercat_motor_control_7in_1024_600 示例工程

8ef1314e-2277-11f1-96ea-92fbcf53809c.png

睿擎派 RC3506 开发板 + EtherCAT 伺服驱动器实物连接

第二步:按硬件连接图接好网线和显示屏,上电

第三步:编译下载,启动调试,显示屏自动亮起控制界面

第四步:拖动滑块设置目标位置,点击Run/Stop启动电机


整个过程无需手写一行 EtherCAT 协议代码,睿擎平台已封装好所有底层细节。


适用场景

多轴运动控制:CNC 机床、机械臂、自动化产线

●工业 HMI:替代传统触摸屏 PLC,降低系统成本

●教学与原型验证:快速验证 EtherCAT 控制方案可行性

●设备状态可视化:实时显示电机位置、速度、转矩等运行参数


总结

这个示例展示了睿擎派 RC3506 在工业控制场景的完整能力:

RT-Thread 实时内核保障 1ms EtherCAT 控制周期

LVGL 图形框架提供流畅的触控操作界面

EtherCAT 主站协议栈支持 CSP/CSV/CST 多种控制模式

多从站并行控制,电机 + IO 同步运行

RuiChing Studio 一键创建工程,开箱即用

如果你正在寻找一个既能跑实时控制、又能做可视化界面的嵌入式平台,睿擎派值得一试。

示例工程

通过 RuiChing Studio 搜索 05_gui_lvgl_ethercat_motor_control_7in_1024_600 即可获取

开发文档:https://www.rt-thread.com/ruiching/document/site/

技术交流:欢迎在评论区留言,或加入睿擎开发者社区

完整资料包领取

想亲手跑通这个 LVGL + EtherCAT 电机控制示例?我们整理了完整资料包,助你快速复现:

示例完整工程源码(RuiChing Studio 可直接导入)

LVGL 界面源码 + 触控驱动配置说明

EtherCAT 主站使用指南

伺服驱动器 ESI 文件及配置指南

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

    关注

    3602

    文章

    2228

    浏览量

    279515
  • 伺服电机
    +关注

    关注

    88

    文章

    2209

    浏览量

    61656
  • ethercat
    +关注

    关注

    20

    文章

    1618

    浏览量

    46342
  • LVGL
    +关注

    关注

    3

    文章

    127

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    一种可视化智能充电机的设计

    针对电动车、电动汽车电池寿命偏低,设计了一种可视化智能充电机,它是结合了单片机智能控制技术,VB可视化
    发表于 11-14 16:27 4623次阅读
    一种<b class='flag-5'>可视化</b>智能充<b class='flag-5'>电机</b>的设计

    基于LVGL驱动的OLED的FFT声音实时可视化

    本项目旨在利用LVGL驱动的 Xiao-expansion-board的OLED显示实现FFT声音数据的实时可视化。关键内容包括利用LVGL
    的头像 发表于 11-25 14:20 5572次阅读
    基于<b class='flag-5'>LVGL</b>驱动的OLED<b class='flag-5'>屏</b>的FFT声音实时<b class='flag-5'>可视化</b>

    10分钟上手平台GUI开发:第一个LVGL图形应用

    ,在平台上支持LVGL能够更好地发挥其优势,为开发者带来更多便利。一环境搭建:5分钟极速配置1.
    的头像 发表于 06-06 18:41 3112次阅读
    10分钟上手<b class='flag-5'>睿</b><b class='flag-5'>擎</b>平台GUI开发:第一个<b class='flag-5'>LVGL</b>图形应用

    基于轻松玩转CANopen电机控制

    在工业自动领域,稳定高效的设备间通信是核心。CANopen协议凭借其可靠性,成为众多工业设备(如伺服电机)的首选通信标准。今天,我们就来展示如何利用RT-Thread
    的头像 发表于 07-19 09:04 6138次阅读
    基于<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>

    EtherCAT多轴控制技术:如何实现低抖动高精度运动控制 | 深度解析

    在工业自动领域,运动控制的精度和稳定性直接决定了生产效率和产品质量。近日,SDKV1.5.0版本重磅发布,其中EtherCAT多轴
    的头像 发表于 10-15 18:39 6462次阅读
    <b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>EtherCAT</b>多轴<b class='flag-5'>控制</b><b class='flag-5'>技术</b>:如何<b class='flag-5'>实现</b>低抖动高精度运动<b class='flag-5'>控制</b> | 深度解析

    基于的工业FOC无刷电机控制系统与WEB推流监看系统| 技术集结

    需人员到场,导致运维效率较低。嵌入式开发板具备串口外设接口与网络传输能力,可同时承载控制与监看需求,因此本项目基于该硬件展开开发。项目通过串口
    的头像 发表于 11-26 18:25 3565次阅读
    基于<b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>派</b>的工业FOC无刷<b class='flag-5'>电机</b><b class='flag-5'>控制</b>系统与WEB推流监看系统| <b class='flag-5'>技术</b><b class='flag-5'>集结</b>

    EtherCAT总线之IO模块读写

    在上一篇文章《【】CANOpen总线之IO模块读写(DS401协议)》我写了关于派上CANOpen的IO模块通信,为什么先写CAN
    的头像 发表于 12-31 19:07 6086次阅读
    【<b class='flag-5'>睿</b><b class='flag-5'>擎</b><b class='flag-5'>派</b>】<b class='flag-5'>EtherCAT</b>总线之IO模块读写

    深度解析 | 低抖动高精度EtherCAT多轴控制实现与实践案例

    : l RC3506工业开发板 l EtherCAT伺服驱动器(推荐汇川SV660N或LICHUAN-LC10E) l
    发表于 12-09 17:17

    labview通过Ethercat控制伺服电机

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

    伺服电机的种类与区别_伺服电机简单控制方法

    伺服电机是一种能够精确控制运动的电机,通常包括以下几种类型:   直流伺服电机:直流
    发表于 03-12 10:20 5236次阅读

    Arduino控制伺服电机的超级简单方法

    电子发烧友网站提供《Arduino控制伺服电机的超级简单方法.zip》资料免费下载
    发表于 06-28 09:51 0次下载
    <b class='flag-5'>用</b>Arduino<b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>的超级<b class='flag-5'>简单</b>方法

    如何实现园区大可视化

    孪生可视化 构建平台利用Web三维可视化技术对现实场景进行仿真,实现园区级业务场景 的可视化呈现,助力企业快速完成项目的实施。
    的头像 发表于 06-19 15:39 1325次阅读
    如何<b class='flag-5'>实现</b>园区大<b class='flag-5'>屏</b><b class='flag-5'>可视化</b>?

    智慧大是如何实现数据可视化的?

    智慧大,作为数据可视化的重要载体,已在城市管理、交通监控、商业运营等领域广泛应用。本文旨在阐述智慧大实现数据可视化的关键
    的头像 发表于 06-04 15:02 1756次阅读
    智慧大<b class='flag-5'>屏</b>是如何<b class='flag-5'>实现</b>数据<b class='flag-5'>可视化</b>的?

    伺服电机简单控制方法是什么

    伺服电机是一种高精度、高响应速度的电机,广泛应用于工业自动、机器人、航空航天等领域。伺服电机
    的头像 发表于 06-05 15:49 2490次阅读

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

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