在工業(yè)自動(dòng)化領(lǐng)域,運(yùn)動(dòng)控制系統(tǒng)往往面臨兩大痛點(diǎn):實(shí)時(shí)性要求極高,同時(shí)又需要直觀的人機(jī)交互界面。傳統(tǒng)方案要么犧牲實(shí)時(shí)性換取界面體驗(yàn),要么用昂貴的專(zhuān)用 HMI 設(shè)備來(lái)彌補(bǔ)。
今天分享一個(gè)基于睿擎派 RC3506的完整方案——用LVGL 圖形界面 + EtherCAT 總線,在一塊開(kāi)發(fā)板上同時(shí)搞定可視化操控和微秒級(jí)實(shí)時(shí)控制。(文末附完整工程源碼及使用指南掃碼領(lǐng)取)
效果先看
觸摸屏上拖動(dòng)滑塊 → 伺服電機(jī)精準(zhǔn)轉(zhuǎn)到指定位置;點(diǎn)擊 Run/Stop 按鈕 → 電機(jī)啟停;切換 Direct/Reverse → 方向立即響應(yīng)。屏幕上的位置表盤(pán)實(shí)時(shí)顯示期望位置和當(dāng)前位置,一目了然。
7寸觸控屏上的 LVGL 控制界面:位置表盤(pán) + 滑塊 + 運(yùn)行控制按鈕
與此同時(shí),EtherCAT 總線上掛載的遠(yuǎn)程 IO 模塊同步輸出流水燈效果,展示多從站并行控制能力。
為什么選 EtherCAT?
EtherCAT(Ethernet for Control Automation Technology)是目前工業(yè)現(xiàn)場(chǎng)總線中實(shí)時(shí)性最強(qiáng)的協(xié)議之一:
●通信周期最低 1ms,支持分布式時(shí)鐘(DC)同步,精度達(dá)微秒級(jí)
●"飛速處理"機(jī)制:數(shù)據(jù)幀在經(jīng)過(guò)從站時(shí)直接被讀寫(xiě),無(wú)需等待,延遲極低
●菊花鏈拓?fù)洌阂桓W(wǎng)線串聯(lián)多個(gè)從站,布線簡(jiǎn)單,最多支持 65535 個(gè)節(jié)點(diǎn)
●使用標(biāo)準(zhǔn)以太網(wǎng)硬件,無(wú)需專(zhuān)用芯片,成本可控
睿擎派 RC3506 內(nèi)置 EtherCAT 主站協(xié)議棧,配合 RT-Thread 實(shí)時(shí)操作系統(tǒng),可以穩(wěn)定跑出1ms 控制周期。
硬件準(zhǔn)備
連接方式:
睿擎派 ETH0 ──網(wǎng)線──> 伺服驅(qū)動(dòng)器 IN 口
伺服驅(qū)動(dòng)器 OUT 口 ──網(wǎng)線──> 遠(yuǎn)程 IO IN 口
睿擎派 MIPI 接口 ──排線──> 7 寸觸控屏
EtherCAT 主從站硬件連接示意:睿擎派 → 伺服驅(qū)動(dòng)器 → 遠(yuǎn)程 IO
軟件架構(gòu)
整個(gè)示例的軟件結(jié)構(gòu)非常清晰,main 函數(shù)只做兩件事:
intmain(void)
{
lvgl_thread_init();// 啟動(dòng) LVGL 圖形線程
ethercat_domain_init();// 啟動(dòng) EtherCAT 控制線程
return0;
}
兩個(gè)線程并行運(yùn)行,互不干擾:
●LVGL 線程:負(fù)責(zé)渲染界面、響應(yīng)觸摸事件,將用戶操作寫(xiě)入共享變量
●EtherCAT 線程:以 1ms 為周期讀取共享變量,通過(guò) PDO 下發(fā)目標(biāo)位置給伺服驅(qū)動(dòng)器
EtherCAT 主站初始化流程
EtherCAT 的狀態(tài)機(jī)切換是標(biāo)準(zhǔn)流程,睿擎平臺(tái)封裝得很簡(jiǎn)潔:
// 1. 初始化主站服務(wù)
ecat_service_init();
// 2. 自動(dòng)掃描總線拓?fù)洌l(fā)現(xiàn)所有從站
ecat_master_init(&csp_master);
// 2. 自動(dòng)掃描總線拓?fù)洌l(fā)現(xiàn)所有從站
slave_counts=ecat_slavecount(&csp_master);;
// 3. 配置分布式時(shí)鐘(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 映射(目標(biāo)位置、控制字、狀態(tài)字等)
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. 啟動(dòng)主站自動(dòng)完成狀態(tài)機(jī)切換:INIT → PRE-OP → SAFE-OP → OPERATIONAL
ecat_master_start(&csp_master);
state=EC_STATE_OPERATIONAL;
ecat_check_state(&csp_master,0,&state,20000000*3);
進(jìn)入 OPERATIONAL 狀態(tài)后,主站開(kāi)始周期性收發(fā)過(guò)程數(shù)據(jù)(PDO),電機(jī)控制正式開(kāi)始。
CSP 模式:周期同步位置控制
本示例使用CSP(Cyclic Synchronous Position)模式,這是伺服控制中最常用的模式之一:
主站每個(gè)控制周期向伺服驅(qū)動(dòng)器發(fā)送目標(biāo)位置,驅(qū)動(dòng)器內(nèi)部完成位置環(huán)、速度環(huán)、電流環(huán)的閉環(huán)控制。主站只需關(guān)心"去哪里",不需要關(guān)心"怎么去"。
核心控制循環(huán)如下:
while(1)
{
servo_switch_op(rmap,tmap);// 進(jìn)行伺服狀態(tài)機(jī)切換
if(rmap->control_word==7)
{
rmap->mode_byte=0x8;
rmap->dest_pos=tmap->cur_pos;// 同步當(dāng)前位置
}
if(rmap->control_word==0xf)
{
if(motor_target_pos_last!=motor_target_pos)
{
/* 獲取當(dāng)前位置 */
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)
{
/* 微調(diào)目標(biāo)位置 */
motor_target_pos_last=motor_target_pos;
}
gotostop;
}
if(servo_dir)
{
rmap->dest_pos-=motor_step;// 根據(jù)方向步進(jìn)目標(biāo)位置
}
else
{
rmap->dest_pos+=motor_step;// 根據(jù)方向步進(jìn)目標(biāo)位
}
}
}
stop:
rt_thread_delay(5);
}
servo_run、motor_target_pos、servo_dir 這些變量由 LVGL 界面線程寫(xiě)入,EtherCAT 線程讀取,實(shí)現(xiàn)了界面與控制的解耦。
PDO 映射:主站與從站的數(shù)據(jù)約定
PDO(Process Data Object)定義了每個(gè)控制周期主站和從站交換哪些數(shù)據(jù):
主站 → 從站(RPDO,輸出):
對(duì)象字典 | 含義 |
0x6060 | 工作模式(設(shè)為 0x08 = CSP 模式) |
0x6040 | 控制字(使能/停止/故障復(fù)位) |
0x607A | 目標(biāo)位置 |
0x60FF | 目標(biāo)速度 |
0x6071 | 目標(biāo)轉(zhuǎn)矩 |
從站 → 主站(TPDO,輸入):
對(duì)象字典 | 含義 |
0x603F | 錯(cuò)誤碼 |
0x6041 | 狀態(tài)字(當(dāng)前狀態(tài)) |
0x6064 | 實(shí)際位置(反饋給 LVGL 顯示) |
0x606C | 實(shí)際速度 |
0x6077 | 實(shí)際轉(zhuǎn)矩 |
實(shí)際位置 0x6064 會(huì)實(shí)時(shí)回傳給 LVGL 界面,驅(qū)動(dòng)表盤(pán)指針更新,讓操作者直觀看到電機(jī)當(dāng)前位置。
多從站擴(kuò)展:雙電機(jī) + IO 并行控制
睿擎平臺(tái)同樣支持一拖多的 EtherCAT 拓?fù)洌恍柙诔跏蓟瘯r(shí)掃描從站數(shù)量,循環(huán)處理每個(gè)從站的 PDO 即可:
雙電機(jī) + 遠(yuǎn)程 IO 模塊菊花鏈連接拓?fù)?/span>
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)
{// 伺服電機(jī)控制
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);
}
電機(jī)控制和 IO 控制在同一個(gè) 1ms 周期內(nèi)完成,完全同步。
快速上手
第一步:
在RuiChing Studio中選擇 05_gui_lvgl_ethercat_motor_control_7in_1024_600 示例工程
睿擎派 RC3506 開(kāi)發(fā)板 + EtherCAT 伺服驅(qū)動(dòng)器實(shí)物連接
第二步:按硬件連接圖接好網(wǎng)線和顯示屏,上電
第三步:編譯下載,啟動(dòng)調(diào)試,顯示屏自動(dòng)亮起控制界面
第四步:拖動(dòng)滑塊設(shè)置目標(biāo)位置,點(diǎn)擊Run/Stop啟動(dòng)電機(jī)
整個(gè)過(guò)程無(wú)需手寫(xiě)一行 EtherCAT 協(xié)議代碼,睿擎平臺(tái)已封裝好所有底層細(xì)節(jié)。
適用場(chǎng)景
●多軸運(yùn)動(dòng)控制:CNC 機(jī)床、機(jī)械臂、自動(dòng)化產(chǎn)線
●工業(yè) HMI:替代傳統(tǒng)觸摸屏 PLC,降低系統(tǒng)成本
●教學(xué)與原型驗(yàn)證:快速驗(yàn)證 EtherCAT 控制方案可行性
●設(shè)備狀態(tài)可視化:實(shí)時(shí)顯示電機(jī)位置、速度、轉(zhuǎn)矩等運(yùn)行參數(shù)
總結(jié)
這個(gè)示例展示了睿擎派 RC3506 在工業(yè)控制場(chǎng)景的完整能力:
RT-Thread 實(shí)時(shí)內(nèi)核保障 1ms EtherCAT 控制周期
LVGL 圖形框架提供流暢的觸控操作界面
EtherCAT 主站協(xié)議棧支持 CSP/CSV/CST 多種控制模式
多從站并行控制,電機(jī) + IO 同步運(yùn)行
RuiChing Studio 一鍵創(chuàng)建工程,開(kāi)箱即用
如果你正在尋找一個(gè)既能跑實(shí)時(shí)控制、又能做可視化界面的嵌入式平臺(tái),睿擎派值得一試。
示例工程:
通過(guò) RuiChing Studio 搜索 05_gui_lvgl_ethercat_motor_control_7in_1024_600 即可獲取
開(kāi)發(fā)文檔:https://www.rt-thread.com/ruiching/document/site/
技術(shù)交流:歡迎在評(píng)論區(qū)留言,或加入睿擎開(kāi)發(fā)者社區(qū)
完整資料包領(lǐng)取
想親手跑通這個(gè) LVGL + EtherCAT 電機(jī)控制示例?我們整理了完整資料包,助你快速?gòu)?fù)現(xiàn):
示例完整工程源碼(RuiChing Studio 可直接導(dǎo)入)
LVGL 界面源碼 + 觸控驅(qū)動(dòng)配置說(shuō)明
EtherCAT 主站使用指南
伺服驅(qū)動(dòng)器 ESI 文件及配置指南
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
電機(jī)控制
+關(guān)注
關(guān)注
3601文章
2138瀏覽量
278059 -
伺服電機(jī)
+關(guān)注
關(guān)注
88文章
2189瀏覽量
61343 -
ethercat
+關(guān)注
關(guān)注
20文章
1524瀏覽量
45437 -
LVGL
+關(guān)注
關(guān)注
3文章
127瀏覽量
4614
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
一種可視化智能充電機(jī)的設(shè)計(jì)
針對(duì)電動(dòng)車(chē)、電動(dòng)汽車(chē)電池壽命偏低,設(shè)計(jì)了一種可視化智能充電機(jī),它是結(jié)合了單片機(jī)智能控制技術(shù),VB可視化技
發(fā)表于 11-14 16:27
?4570次閱讀
基于LVGL驅(qū)動(dòng)的OLED屏的FFT聲音實(shí)時(shí)可視化
本項(xiàng)目旨在利用LVGL驅(qū)動(dòng)的 Xiao-expansion-board的OLED顯示屏實(shí)現(xiàn)FFT聲音數(shù)據(jù)的實(shí)時(shí)可視化。關(guān)鍵內(nèi)容包括利用LVGL
10分鐘上手睿擎平臺(tái)GUI開(kāi)發(fā):第一個(gè)LVGL圖形應(yīng)用
,在睿擎平臺(tái)上支持LVGL能夠更好地發(fā)揮其優(yōu)勢(shì),為開(kāi)發(fā)者帶來(lái)更多便利。一環(huán)境搭建:5分鐘極速配置1.睿擎
基于睿擎派輕松玩轉(zhuǎn)CANopen電機(jī)控制
在工業(yè)自動(dòng)化領(lǐng)域,穩(wěn)定高效的設(shè)備間通信是核心。CANopen協(xié)議憑借其可靠性,成為眾多工業(yè)設(shè)備(如伺服電機(jī))的首選通信標(biāo)準(zhǔn)。今天,我們就來(lái)展示如何利用RT-Thread睿
睿擎EtherCAT多軸控制技術(shù):如何實(shí)現(xiàn)低抖動(dòng)高精度運(yùn)動(dòng)控制 | 深度解析
在工業(yè)自動(dòng)化領(lǐng)域,運(yùn)動(dòng)控制的精度和穩(wěn)定性直接決定了生產(chǎn)效率和產(chǎn)品質(zhì)量。近日,睿擎SDKV1.5.0版本重磅發(fā)布,其中EtherCAT多軸
基于睿擎派的工業(yè)FOC無(wú)刷電機(jī)控制系統(tǒng)與WEB推流監(jiān)看系統(tǒng)| 技術(shù)集結(jié)
需人員到場(chǎng),導(dǎo)致運(yùn)維效率較低。睿擎派嵌入式開(kāi)發(fā)板具備串口外設(shè)接口與網(wǎng)絡(luò)傳輸能力,可同時(shí)承載控制與監(jiān)看需求,因此本項(xiàng)目基于該硬件展開(kāi)開(kāi)發(fā)。項(xiàng)目通過(guò)串口
【睿擎派】EtherCAT總線之IO模塊讀寫(xiě)
在上一篇文章《【睿擎派】CANOpen總線之IO模塊讀寫(xiě)(DS401協(xié)議)》我寫(xiě)了關(guān)于睿擎派上CANOpen的IO模塊通信,為什么先寫(xiě)CAN
深度解析 | 低抖動(dòng)高精度EtherCAT多軸控制的實(shí)現(xiàn)與實(shí)踐案例
:
l 睿擎派RC3506工業(yè)開(kāi)發(fā)板
l EtherCAT伺服驅(qū)動(dòng)器(推薦匯川SV660N或LICHUAN-LC10E)
l
發(fā)表于 12-09 17:17
labview通過(guò)Ethercat控制伺服電機(jī)
現(xiàn)在伺服電機(jī)很多都支持Ethercat總線了,這個(gè)總線速度很牛。有玩過(guò)labview通過(guò)Ethercat控制
發(fā)表于 10-16 19:15
伺服電機(jī)的種類(lèi)與區(qū)別_伺服電機(jī)最簡(jiǎn)單控制方法
伺服電機(jī)是一種能夠精確控制運(yùn)動(dòng)的電機(jī),通常包括以下幾種類(lèi)型:
直流伺服電機(jī):直流
發(fā)表于 03-12 10:20
?5110次閱讀
用Arduino控制伺服電機(jī)的超級(jí)簡(jiǎn)單方法
電子發(fā)燒友網(wǎng)站提供《用Arduino控制伺服電機(jī)的超級(jí)簡(jiǎn)單方法.zip》資料免費(fèi)下載
發(fā)表于 06-28 09:51
?0次下載
如何實(shí)現(xiàn)園區(qū)大屏可視化?
孿生可視化 構(gòu)建平臺(tái)利用Web三維可視化技術(shù)對(duì)現(xiàn)實(shí)場(chǎng)景進(jìn)行仿真,實(shí)現(xiàn)園區(qū)級(jí)業(yè)務(wù)場(chǎng)景 的可視化呈現(xiàn),助力企業(yè)快速完成項(xiàng)目的實(shí)施。
智慧大屏是如何實(shí)現(xiàn)數(shù)據(jù)可視化的?
智慧大屏,作為數(shù)據(jù)可視化的重要載體,已在城市管理、交通監(jiān)控、商業(yè)運(yùn)營(yíng)等領(lǐng)域廣泛應(yīng)用。本文旨在闡述智慧大屏實(shí)現(xiàn)數(shù)據(jù)可視化的關(guān)鍵
伺服電機(jī)最簡(jiǎn)單控制方法是什么
伺服電機(jī)是一種高精度、高響應(yīng)速度的電機(jī),廣泛應(yīng)用于工業(yè)自動(dòng)化、機(jī)器人、航空航天等領(lǐng)域。伺服電機(jī)的
基于睿擎派輕松玩轉(zhuǎn)EtherCAT主站,實(shí)現(xiàn)電機(jī)精確控制
總線技術(shù)。本次實(shí)戰(zhàn)教程將基于睿擎派平臺(tái),演示實(shí)現(xiàn):EtherCAT主站開(kāi)發(fā)CSP模式
用睿擎派實(shí)現(xiàn) LVGL 可視化 EtherCAT 電機(jī)控制,觸屏操控伺服電機(jī)就這么簡(jiǎn)單|技術(shù)集結(jié)





評(píng)論