一、 方案核心概述
本方案旨在解決系統(tǒng)開(kāi)發(fā)中“高性能實(shí)時(shí)控制與“豐富人機(jī)交互”的需求矛盾。它采用混合部署的架構(gòu),將系統(tǒng)清晰地分為兩個(gè)層面:
1.實(shí)時(shí)層:部署在睿擎派設(shè)備的RT-Thread實(shí)時(shí)系統(tǒng)中,負(fù)責(zé)執(zhí)行高頻率、高確定性的核心控制算法、EtherCat 等工業(yè)總線通信、故障保護(hù)等硬實(shí)時(shí)任務(wù)。
2.交互層:基于Qt Framework開(kāi)發(fā),運(yùn)行在Linux操作系統(tǒng)上,提供圖形化用戶界面,用于參數(shù)配置、狀態(tài)監(jiān)控、曲線顯示、數(shù)據(jù)記錄、報(bào)警管理和網(wǎng)絡(luò)通信等軟實(shí)時(shí)或非實(shí)時(shí)任務(wù)。
兩個(gè)層面通過(guò)高速通信機(jī)制進(jìn)行數(shù)據(jù)交換和指令傳遞,從而形成一個(gè)兼顧實(shí)時(shí)性能與開(kāi)發(fā)效率的完整解決方案。
二、睿擎派運(yùn)行混合部署方案
混合部署雙系統(tǒng)指的是單一芯片上同時(shí)運(yùn)行兩個(gè)系統(tǒng),既運(yùn)行Linux,又運(yùn)行RT-Thread系統(tǒng)。
●Linux 系統(tǒng):運(yùn)行在應(yīng)用核心,負(fù)責(zé)圖形界面和非實(shí)時(shí)任務(wù)
●RT-Thread 系統(tǒng):運(yùn)行在實(shí)時(shí)核心,負(fù)責(zé)電機(jī)控制和實(shí)時(shí)通信
●核間通信通道:基于 rpmsg 機(jī)制實(shí)現(xiàn)兩個(gè)系統(tǒng)間的高速數(shù)據(jù)交換,是整個(gè)方案的技術(shù)核心
睿擎派RC3506上運(yùn)行Linux系統(tǒng)日志圖通過(guò)串口1查看

睿擎派RC3506上運(yùn)行RT-Thread系統(tǒng)日志圖通過(guò)串口3查看

三、Linux 側(cè) QT 應(yīng)用界面與核間通訊實(shí)現(xiàn)
1.UI 設(shè)計(jì)與實(shí)現(xiàn)

2.QT界面繪制及業(yè)務(wù)邏輯核心代碼
●繪制電機(jī)啟停按鈕
●設(shè)計(jì)電機(jī)運(yùn)行方向控制
●實(shí)現(xiàn)電機(jī)期望位置和當(dāng)前位置顯示
●創(chuàng)建位置曲線實(shí)時(shí)顯示界面


3.Linux 側(cè)核間通訊實(shí)現(xiàn)
●rpmsg 端點(diǎn)管理:通過(guò) rpmsg_char_create_eptdev 創(chuàng)建通信端點(diǎn),rpmsg_char_destroy_eptdev 銷毀端點(diǎn)
●數(shù)據(jù)發(fā)送:send_msg 函數(shù)通過(guò) write 接口向 RT-Thread 側(cè)發(fā)送控制命令
●數(shù)據(jù)接收:MotorStateThread 線程通過(guò) recv_msg 函數(shù)接收 RT-Thread 側(cè)的狀態(tài)數(shù)據(jù)
●數(shù)據(jù)同步:sync_data 函數(shù)在控制參數(shù)變化時(shí)觸發(fā)數(shù)據(jù)傳輸
●狀態(tài)更新:MotorStateRecv 接收并更新電機(jī)狀態(tài)數(shù)據(jù)到 UI 界面

創(chuàng)建打開(kāi)Linux側(cè)/dev/rpmsg字符設(shè)備節(jié)點(diǎn),初始化電機(jī)ctrl_data結(jié)構(gòu)體成員值

Linux MASTER端地址是0x1001,RT-Thread遠(yuǎn)端地址是0x3001

Linux側(cè)將電機(jī)的啟動(dòng)停止,運(yùn)行方向和電機(jī)位置控制值通過(guò)send_msg接口實(shí)際是write接口將ctrl_data結(jié)構(gòu)體寫入RT-Thread側(cè)。
四、RT-Thread側(cè)核間通訊實(shí)現(xiàn)
●通信初始化:通過(guò) rt_device_find 查找并打開(kāi) rpmsg 設(shè)備
●線程創(chuàng)建:創(chuàng)建 rpmsg_ethercat_read 和 rpmsg_ethercat_write 線程
●數(shù)據(jù)同步:使用 dynamic_sem 信號(hào)量實(shí)現(xiàn)數(shù)據(jù)傳輸同步
●狀態(tài)反饋:將電機(jī)狀態(tài)實(shí)時(shí)更新到 ctrl_data 結(jié)構(gòu)體并發(fā)送到 Linux 側(cè)

創(chuàng)建打開(kāi)RT-Thread側(cè)/dev/rpmsg字符設(shè)備節(jié)點(diǎn),創(chuàng)建兩個(gè)rpmsg讀寫線程

RT-Thread源地址是0x3001,Linux目的地址是0x1001
RT-Thread側(cè) rpmsg讀線程

rpmsg讀線程里RT-Thread源端的電機(jī)控制值,電機(jī)運(yùn)行狀態(tài),電機(jī)運(yùn)行方向賦值給 ctrl_data結(jié)構(gòu)體中
RT-Thread側(cè) rpmsg寫線程

rpmsg寫線程會(huì)不斷的獲取dynamic_sem信號(hào)量,這個(gè)信號(hào)量會(huì)在每次改變電機(jī)控制偏移值,改變電機(jī)運(yùn)行狀態(tài),改變電機(jī)運(yùn)行方向都會(huì)去釋放,一旦獲取到信號(hào)量就會(huì)通過(guò)rt_device_write接口將ctrl_data結(jié)構(gòu)體寫入到Linux目的端。
五、核間通訊技術(shù)總結(jié)
rpmsg 是一種用于 Linux 與 RT-Thread 操作系統(tǒng)之間進(jìn)行多核異構(gòu)通信的機(jī)制,是整個(gè)方案的技術(shù)核心。通過(guò)前面的實(shí)現(xiàn)分析,我們可以總結(jié)出以下技術(shù)要點(diǎn):
1.通信架構(gòu)
●雙端通信:Linux 端作為 MASTER(地址 0x1001),RT-Thread 端作為 REMOTE(地址 0x3001)
●數(shù)據(jù)結(jié)構(gòu):統(tǒng)一使用 motorctrl_data_t 結(jié)構(gòu)體在兩端傳遞數(shù)據(jù),確保數(shù)據(jù)格式一致
●傳輸機(jī)制:基于字符設(shè)備接口,通過(guò) write/read 操作實(shí)現(xiàn)數(shù)據(jù)傳輸
2.技術(shù)優(yōu)勢(shì)
●低延遲:基于內(nèi)核級(jí)通信機(jī)制,延遲低,滿足實(shí)時(shí)控制需求
●高可靠性:采用信號(hào)量同步機(jī)制,確保數(shù)據(jù)傳輸?shù)耐暾?/span>
●雙向通信:支持 Linux 到 RT-Thread 的控制命令傳輸,以及 RT-Thread 到 Linux 的狀態(tài)數(shù)據(jù)回傳
●易于集成:提供了簡(jiǎn)潔的 API 接口,便于在應(yīng)用層集成
3.實(shí)現(xiàn)要點(diǎn)
●端點(diǎn)管理:通過(guò) rpmsg_char_create_eptdev 和 rpmsg_char_destroy_eptdev 管理通信端點(diǎn)
●線程安全:使用獨(dú)立的讀寫線程,確保通信的并發(fā)處理能力
●錯(cuò)誤處理:包含完善的設(shè)備查找、打開(kāi)和通信錯(cuò)誤處理機(jī)制
●實(shí)時(shí)性保障:設(shè)置合理的線程優(yōu)先級(jí)和通信周期,確保實(shí)時(shí)控制的響應(yīng)速度
4.數(shù)據(jù)流程
1.控制命令流:Qt 界面 → Linux 應(yīng)用 → rpmsg 發(fā)送 → RT-Thread 接收 → 電機(jī)控制
2.狀態(tài)數(shù)據(jù)流:電機(jī)狀態(tài) → RT-Thread 讀取 → rpmsg 發(fā)送 → Linux 接收 → Qt 界面更新
這種雙向數(shù)據(jù)流確保了用戶操作與電機(jī)狀態(tài)的實(shí)時(shí)同步,為整個(gè)系統(tǒng)提供了流暢的交互體驗(yàn)。
-
電機(jī)控制
+關(guān)注
關(guān)注
3600文章
2131瀏覽量
277663 -
Qt
+關(guān)注
關(guān)注
2文章
320瀏覽量
40852 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1612瀏覽量
44817
發(fā)布評(píng)論請(qǐng)先 登錄
10分鐘上手睿擎平臺(tái)GUI開(kāi)發(fā):第一個(gè)LVGL圖形應(yīng)用
基于睿擎派輕松玩轉(zhuǎn)CANopen電機(jī)控制
基于睿擎派輕松玩轉(zhuǎn)Modbus工業(yè)通信
睿擎平臺(tái)網(wǎng)絡(luò)開(kāi)發(fā)指南:從IP配置到遠(yuǎn)程控制 | 技術(shù)解析
睿擎派文件系統(tǒng)指南:從開(kāi)發(fā)到發(fā)布全流程實(shí)踐 | 技術(shù)解析
RS232+RS485實(shí)現(xiàn)通訊實(shí)驗(yàn)板
中新社:RT-Thread攜“睿擎平臺(tái)”亮相工博會(huì) | 媒體視角
川商傳媒:睿擎工業(yè)開(kāi)發(fā)平臺(tái)開(kāi)啟智能化新篇章 | 媒體視角
睿擎平臺(tái)極簡(jiǎn)開(kāi)發(fā)重要實(shí)踐—— PinMux 配置工具 | 睿擎派試用名單公示
基于睿擎派輕松玩轉(zhuǎn)EtherCAT主站,實(shí)現(xiàn)電機(jī)精確控制
像STM32一樣輕松玩轉(zhuǎn) MPU!RT-Thread 睿擎平臺(tái) Workshop 上海站開(kāi)啟硬核實(shí)戰(zhàn)!下一城?你定!
睿擎平臺(tái)v1.7.2版本正式發(fā)布|技術(shù)集結(jié)
直播預(yù)告 | 睿擎平臺(tái)AMP混合部署:你的Qt界面如何“指揮”底層電機(jī)?
直播 | 睿擎平臺(tái)AMP混合部署:你的Qt界面如何“指揮”底層電機(jī)?
睿擎平臺(tái)核間通訊實(shí)踐:QT與電機(jī)控制的無(wú)縫集成
評(píng)論