強(qiáng)實時運動控制內(nèi)核MotionRT750
MotionRT750是正運動技術(shù)首家自主自研的x86架構(gòu)Windows系統(tǒng)或Linux系統(tǒng)下獨占確定CPU的強(qiáng)實時運動控制內(nèi)核。

該方案采用獨占確定CPU內(nèi)核技術(shù)實現(xiàn)超強(qiáng)性能的強(qiáng)實時運動控制。它將核心的運動控制、機(jī)器人算法、數(shù)控(CNC)及機(jī)器視覺等強(qiáng)實時的任務(wù),集中運行在1-2個專用CPU核上。與此同時,其余CPU核則專注于處理Windows/Linux相關(guān)的非實時任務(wù)。
此外集成MotionRT750 Runtime實時層與操作系統(tǒng)非實時層,并利用高速共享內(nèi)存進(jìn)行數(shù)據(jù)交互,顯著提升了運動控制與上層應(yīng)用間的通信效率及函數(shù)執(zhí)行速度,最終實現(xiàn)更穩(wěn)定、更高效的智能裝備控制,確保了運動控制任務(wù)的絕對實時性與系統(tǒng)穩(wěn)定性,特別適用于半導(dǎo)體、電子裝備等高速高精的應(yīng)用場合。

MotionRT750應(yīng)用優(yōu)勢:
1.跨平臺兼容性:支持Windows/Linux系統(tǒng),適配不同等級CPU。
2.開發(fā)靈活性:提供多語言編程接口,便于二次開發(fā)與功能定制。
3.實時性提升:通過CPU內(nèi)核獨占機(jī)制與高效LOCAL接口,實現(xiàn)2-3μs指令交互周期,較傳統(tǒng)PCI/PCIe方案提速近20倍。
4.擴(kuò)展能力強(qiáng)化:多卡多EtherCAT通道架構(gòu)支持254軸運動控制及500μsEtherCAT周期。
5.系統(tǒng)穩(wěn)定性:32軸125μsEtherCAT冗余架構(gòu)消除單點故障風(fēng)險,保障連續(xù)生產(chǎn)。
6.安全可靠性:不懼Windows系統(tǒng)崩潰影響,藍(lán)屏?xí)r仍可維持急停與安全停機(jī)功能有效,確保產(chǎn)線安全運行。
7.功能擴(kuò)展性:實時內(nèi)核支持C語言程序開發(fā),方便功能拓展與實時代碼提升效率。
MotionRT750視頻介紹可點擊→“正運動強(qiáng)實時運動控制內(nèi)核MotionRT750”查看。
更多關(guān)于MotionRT750的詳情介紹與使用點擊→強(qiáng)實時運動控制內(nèi)核MotionRT750(一):驅(qū)動安裝、內(nèi)核配置與使用。
超實時EtherCAT運動控制卡XPCIE6032H
XPCIE6032H運動控制卡集成6路獨立EtherCAT主站接口。整卡最高可支持254軸運動控制;125usEtherCAT通訊周期時,兩個端口配置冗余最高可支持32軸運動控制。6個EtherCAT主站各通道獨立工作,多EtherCAT主站互不影響。

此外,對于EtherCAT接口數(shù)量需求不高的客戶,我們也有衍生型號XPCIE2032H可選。同系列產(chǎn)品XPCIE2032H集成2路獨立EtherCAT接口。整卡最高可支持至254軸運動控制;125usEtherCAT通訊周期時,單接口最高可支持32軸運動控制。2個EtherCAT主站各通道獨立工作,多EtherCAT主站互不影響。

XPCIE2032H視頻介紹可點擊→“高速高精運動控制!PCIe超實時2通道EtherCAT運動控制卡上市!_嗶哩嗶哩_bilibili”查看。
XPCIE6032H運動控制卡面向半導(dǎo)體設(shè)備、精密3C電子、生物醫(yī)療儀器、新能源裝備、人形機(jī)器人及激光加工等高速高精場景,為固晶機(jī)、貼片機(jī)、分選機(jī)、鋰電切疊一體機(jī)、高速異形插件設(shè)備等自動化裝備提供核心運動控制支持。
XPCIE6032H硬件特性:
1.EtherCAT通訊周期可到125us(需要主機(jī)性能與實時性足夠)。
2.板卡集成6路獨立的EtherCAT主站接口,最多可支持254軸運動控制。
3.搭載運動控制實時內(nèi)核MotionRT750。
4.相較于傳統(tǒng)的PCI/PCIe、網(wǎng)口等通訊方式,速度可提升了10-100倍以上。
5.板載16路高速輸入,16路高速輸出。
6.板載4路高速鎖存、4路硬件位置比較輸出、4路通用PWM輸出。
XPCIE6032H視頻介紹可點擊→“全球首創(chuàng)!PCIe 6路高性能EtherCAT運動控制卡XPCIE6032H_嗶哩嗶哩_bilibili”查看。
更多關(guān)于XPCIE6032H的詳情介紹與使用點擊→全球首創(chuàng)!PCIe超實時6通道EtherCAT運動控制卡上市!。
PCIe EtherCAT實時運動控制卡XPCIE1032H
XPCIE1032H是一款基于PCI Express的EtherCAT總線運動控制卡,可選6-64軸運動控制,支持多路高速數(shù)字輸入輸出,可輕松實現(xiàn)多軸同步控制和高速數(shù)據(jù)傳輸。

XPCIE1032H運動控制卡集成了強(qiáng)大的運動控制功能,結(jié)合MotionRT7運動控制實時軟核,解決了高速高精應(yīng)用中,PC Windows開發(fā)的非實時痛點,指令交互速度比傳統(tǒng)的PCI/PCIe快10倍。

XPCIE1032H硬件特性:
1.6-64軸EtherCAT總線+脈沖可選,其中4路單端500KHz脈沖輸出。
2.16軸EtherCAT同步周期500us,支持多卡聯(lián)動。
3.板載16點通用輸入,16點通用輸出,其中8路高速輸入和16路高速輸出。
4.通過EtherCAT總線,可擴(kuò)展到512個隔離輸入或輸出口。
5.支持PWM輸出、精準(zhǔn)輸出、PSO硬件位置比較輸出、視覺飛拍等。
6.支持直線插補(bǔ)、圓弧插補(bǔ)、連續(xù)軌跡加工(速度前瞻)。
7.支持電子凸輪、電子齒輪、位置鎖存、同步跟隨、虛擬軸、螺距補(bǔ)償?shù)裙δ堋?/p>
8.支持30+機(jī)械手模型正逆解模型算法,比如SCARA、Delta、UVW、4軸/5軸 RTCP...
XPCIe1032H視頻介紹可點擊→“高性能PCIe EtherCAT運動控制卡 | XPCIE1032H_嗶哩嗶哩_bilibili”
更多關(guān)于XPCIE1032H詳情點擊“不止10倍提速!PCIe EtherCAT實時運動控制卡XPCIE1032H 等您評測!”查看。
冗余的概念
什么是總線冗余功能?我們都知道,EtherCAT現(xiàn)場總線具有靈活的拓?fù)浣Y(jié)構(gòu),設(shè)備間支持線型、星型、樹型的連接方式,其中線型結(jié)構(gòu)簡單、傳輸效率高,大多數(shù)的現(xiàn)場應(yīng)用中也是使用這種連接方式,如下圖所示。

線型的連接方式確實簡單,走線靈活,便于現(xiàn)場設(shè)備布局與維護(hù)。在自動化的工業(yè)生產(chǎn)中,設(shè)備通常在不同的環(huán)境中長時間運行,線纜的老化、安裝連接不夠嚴(yán)謹(jǐn)?shù)纫蛩貙?dǎo)致線纜斷連。
假如有一天第一個伺服和第二個伺服之間的線纜斷了,那么第1個伺服后面的設(shè)備是不是將無法正常運行呢?

不管是哪種接線方式,線纜斷線將會影響設(shè)備的正常運轉(zhuǎn),哪怕是傳統(tǒng)的CAN、RS485等通信的設(shè)備控制也都無法正常運轉(zhuǎn)。
問題還得要解決,那有沒有標(biāo)準(zhǔn)的、又不需要添加太多額外的設(shè)計成本,就能解決上述的問題呢?一起來看EtherCAT總線給出的解決方案,以及EtherCAT冗余技術(shù)的實現(xiàn)原理。我們先看它的連接方式,如下圖所示。

從EtherCAT的線纜冗余接線圖中可以看出,復(fù)用了最后一個從站設(shè)備的OUT端接回主站,是不是有點巧妙呢?減少了硬件成本,還能解決問題,確實受大家喜歡。再來細(xì)看它的數(shù)據(jù)流向,假設(shè)還是第一個伺服和第二個伺服之間斷開了,它的工作原理如下圖所示。

伺服1和伺服2的線纜斷開后仍與從站設(shè)備連接著,但通信線路變成兩條支線,設(shè)備仍然可以正常通信,設(shè)備依然還能夠繼續(xù)控制運行。上述就是EtherCAT冗余的解決方案,將線型結(jié)構(gòu)變成了環(huán)形結(jié)構(gòu),實現(xiàn)了鏈路冗余功能。
冗余功能的優(yōu)勢
01 冗余功能標(biāo)準(zhǔn)化
雙網(wǎng)口的EtherCAT主站與線纜冗余,使用了最后一個從站設(shè)備的OUT端口,使得EtherCAT冗余功能標(biāo)準(zhǔn)化。
02 增強(qiáng)系統(tǒng)可靠性和穩(wěn)定性
工業(yè)自動化行業(yè)中通常要求總線上的設(shè)備不間斷運轉(zhuǎn),不允許停止生產(chǎn),冗余技術(shù)可以實現(xiàn)應(yīng)用系統(tǒng)的可靠性和穩(wěn)定性。
03 故障診斷與處理
當(dāng)出現(xiàn)線纜斷線時,變成兩條之鏈路控制繼續(xù)工作,同時EtherCAT可以自動檢測到總線系統(tǒng)中的故障點,可大大簡化系統(tǒng)的維護(hù)工作,提高了設(shè)備的維護(hù)性。
總線冗余的軟硬件配置
(1)安裝MotionRT750強(qiáng)實時運動控制內(nèi)核的工控機(jī)一臺。
(2)XPCIE6032H運動控制卡,該卡自帶槽位0到槽位5總共6個EtherCAT總線主站接口。也可以采用XPCIE2032H運動控制卡,該卡自帶槽位0到槽位1總共2個EtherCAT總線主站接口。


(3)8個總線伺服驅(qū)動器和1個ZMIO310的EtherCAT總線擴(kuò)展模塊。

Qt開發(fā)MotionRT750強(qiáng)實時運動控制內(nèi)核
Qt項目的創(chuàng)建
1.打開Qt Creator參考如下步驟創(chuàng)建新的Qt項目。





2.把廠商提供的zmotion.dll、zmotion.lib、zmotion.h、zmcaux.cpp、zmcaux.h庫文件拷貝到新建的QT項目下(Linux系統(tǒng)的使用libzmotion.so的動態(tài)庫)。

3.如果想實現(xiàn)純上位機(jī)的總線初始化,可以找廠商提供一下以下2個文件,進(jìn)行總線初始化。

4.添加外部庫【選擇項目后右鍵】→【添加庫】→【外部庫】。

5.引入頭文件并定義控制器的句柄。

6.至此Qt項目新建完成,可以進(jìn)行MotionRT750的項目開發(fā)了。
相關(guān)PC函數(shù)介紹
1.上位機(jī)連接MotionRT750的接口。

2.總線冗余相關(guān)的指令上位機(jī)暫時還沒封裝成現(xiàn)成的指令,我們可以通過在線命令直接封裝實現(xiàn)。
總線冗余功能相關(guān)Basic指令介紹:


萬能上位機(jī)接口在線命令介紹:


通過在線命令封裝Basic的軸速度設(shè)置指令得到上位機(jī)的軸速度設(shè)置指令例程如下:

/************************************************************* Description: //設(shè)置軸速度,單位為units/s,當(dāng)多軸運動時,作為插補(bǔ)運動的速度 Input: //卡鏈接handle iaxis 軸號 fValue 設(shè)置的速度值 Output: // Return: //錯誤碼 *************************************************************/ int32 __stdcall ZAux_Direct_SetSpeed(ZMC_HANDLE handle, int iaxis, float fValue) { char cmdbuff[2048]; char cmdbuffAck[2048]; if( iaxis > MAX_AXIS_AUX) { return ERR_AUX_PARAERR; } //生成Basic命令 sprintf(cmdbuff, "SPEED(%d)=%f", iaxis, fValue); //調(diào)用命令執(zhí)行函數(shù) return ZAux_DirectCommand(handle, cmdbuff, cmdbuffAck, 2048); }
相關(guān)測試代碼介紹
1.上位機(jī)如何鏈接上MotionRT750。
//通過LOCAL接口連接RT750, LOCAL接口的指令交互速度快至3us以內(nèi) intrint =ZAux_FastOpen(5,"LOCAL",1000,&g_handle); if(0== rint) { //控制器連接成功,初始化程序變量 ConnectNum=0; ContrStatus=1; //控制器連接成功,啟動定時器 startTimer(200); //控制器連接成功,開始正常初始化 MainWindow::ZmcEcatInit(SlotId,BeiYongSlotId); //初始化線程和 Worker thread =newQThread(this); worker =newWorker();// 注意:不指定父對象 //將 Worker 移至子線程 worker->moveToThread(thread); //連接信號與槽 connect(thread, &QThread::started, worker, &Worker::doWork); connect(worker, &Worker::workFinished, thread, &QThread::quit); connect(worker, &Worker::workFinished, worker, &QObject::deleteLater); connect(thread, &QThread::finished, thread, &QObject::deleteLater); //可選:根據(jù)子線程的總線掃描情況,彈出對應(yīng)彈窗 connect(worker, &Worker::EcatInitStatus, this,&MainWindow::EcatScanInfo); connect(worker, &Worker::UpdateLog, this,&MainWindow::UpdateLog); //啟動狀態(tài)監(jiān)控線程 thread->start(); }
2.如何實現(xiàn)純上位機(jī)的總線初始化。
//Qt的總線初始化子函數(shù) intMainWindow::ZmcEcatInit(intScanSlotId ,intBackSlotId) { //定義總線初始化的信息結(jié)構(gòu)體 structEcatInitInfoSetMyEcatInitInfo; //是否自定義初始化參數(shù),設(shè)置1的話使用默認(rèn)的總線初始化參數(shù),設(shè)置成0則需要自定義總線初始化相關(guān)參數(shù); MyEcatInitInfo.InitStructFlag =0; if(MyEcatInitInfo.InitStructFlag !=1) { //【1. 本地軸參數(shù),用于指定本地軸的起始 ID 和使用的軸數(shù)量】 MyEcatInitInfo.LocalAxisId =0; MyEcatInitInfo.LocalAxisNum =0; //【2. 驅(qū)動軸相關(guān)參數(shù),用于指定驅(qū)動軸的起始 ID 和數(shù)量】 MyEcatInitInfo.DriveAxisStart =0; MyEcatInitInfo.DriveAxisNum =-1; // 驅(qū)動軸數(shù)量,-1 表示總線初始化的時候不判斷驅(qū)動的軸數(shù)量是否對上 MyEcatInitInfo.EcatNodeNum =-1; // 總線節(jié)點數(shù)目,-1 表示總線初始化的時候不判斷節(jié)點個數(shù)是否對上 for(inti =0; i ?128; i++) ? ? ? ? { ? ? ? ? ? ? MyEcatInitInfo.DrivePdoMode[i] =?12;?// PDO 模式數(shù)組 ? ? ? ? } ? ? ? ??// 總線初始化時是否自動使能,1 驅(qū)動器自動使能,0 不使能驅(qū)動器 ? ? ? ? MyEcatInitInfo.DriveEnable =?1; ? ? ???//【3、冗余設(shè)置】 ? ? ? ? MyEcatInitInfo.BusRedSwitch=1; //總線冗余開關(guān)(1=開啟,0=關(guān)閉) ? ? ? ? MyEcatInitInfo.RedSpareSlot=1; //冗余備用槽編號 ? ? } ? ??//開始總線初始化 ? ??int?Err =?ZAux_BusCmd_EcatScan(g_handle,ScanSlotId, MyEcatInitInfo,10000,BackSlotId); ? ? MainWindow::EcatScanInfo(Err); ? ??return?Err; }
3.指定哪個總線接口為主槽位號,哪個總線接口為從槽位號。
//停止總線 sprintf(cmdbuff,"SLOT_STOP(%d)", SlotId); ZAux_Execute(handle, cmdbuff, ReceBuff,256); //設(shè)置總線冗余的從總線槽位號,總線掃描前設(shè)置 if((BusRedSwitch==1)&&( SlotId!=RedSpareSlot)) { //等待200ms MyDelayMs(200, pOutTime); //設(shè)置總線槽位號SlotId為主總線槽,設(shè)置RedSpareSlot為從總線槽 sprintf(cmdbuff," SLOT_SLAVE(%d)=%d", SlotId,RedSpareSlot); ZAux_Execute(handle, cmdbuff, ReceBuff,256); } //等待200ms MyDelayMs(200, pOutTime); //掃描總線 sprintf(cmdbuff,"SLOT_SCAN(%d) ?return", SlotId); Iresult += ZAux_Execute(handle, cmdbuff, ReceBuff,256);
通過RTSys軟件的在線命令功能,輸入?*slot指令查詢XPCIE6032H的槽位號分布情況如下:

通過RTSys軟件的在線命令功能,輸入?*slot指令查詢XPCIE2032H的槽位號分布情況如下:

4.通過Qt的定時器實時獲取總線In口和Out口的通訊狀態(tài)。
//3、更新ECAT In口與Out口狀態(tài) sprintf(Cmdbuff,"?NODE_INFO(%d,%d,6)",SlotId,CurNodeId); Err =ZAux_Execute(g_handle, Cmdbuff, AckBuff,256); if(0== Err) { Tempint =std::atoi(AckBuff); //如果bit0為1,則總線IN口通訊正常,設(shè)置為綠色 if((Tempint==1)||(Tempint==3)) { EcatInList[i]->setStyleSheet( "QPushButton {"http://背景色 " background-color: rgb(50, 205, 50);" "}" "QPushButton:hover {" //鼠標(biāo)懸停時的背景色 " background-color: rgb(50, 205, 50);" "}" "QPushButton:pressed {"http://鼠標(biāo)按下時的背景色 " background-color: rgb(50, 205, 50);" "}"); } //否則總線IN口通訊異常,設(shè)置為紅色 else { EcatInList[i]->setStyleSheet( "QPushButton {"http://背景色 " background-color: rgb(205, 50, 50);" "}" "QPushButton:hover {" //鼠標(biāo)懸停時的背景色 " background-color: rgb(205, 50, 50);" "}" "QPushButton:pressed {"http://鼠標(biāo)按下時的背景色 " background-color: rgb(205, 50, 50);" "}"); } //如果bit1為1,則總線Out口通訊正常,設(shè)置為綠色 if((Tempint==2)||(Tempint==3)) { EcatOpList[i]->setStyleSheet( "QPushButton {"http://背景色 " background-color: rgb(50, 205, 50);" "}" "QPushButton:hover {" //鼠標(biāo)懸停時的背景色 " background-color: rgb(50, 205, 50);" "}" "QPushButton:pressed {"http://鼠標(biāo)按下時的背景色 " background-color: rgb(50, 205, 50);" "}"); } //否則總線Out口通訊異常,設(shè)置為紅色 else { EcatOpList[i]->setStyleSheet( "QPushButton {"http://背景色 " background-color: rgb(205, 50, 50);" "}" "QPushButton:hover {" //鼠標(biāo)懸停時的背景色 " background-color: rgb(205, 50, 50);" "}" "QPushButton:pressed {"http://鼠標(biāo)按下時的背景色 " background-color: rgb(205, 50, 50);" "}"); } }
5.總線冗余演示視頻可點擊→“正運動強(qiáng)實時運動控制內(nèi)核MotionRT750”
本次,正運動技術(shù)強(qiáng)實時運動控制內(nèi)核MotionRT750(五):EtherCAT總線冗余讓生產(chǎn)制造更可靠,就分享到這里。
本文由正運動技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國智能制造水平。文章版權(quán)歸正運動技術(shù)所有,如有轉(zhuǎn)載請注明文章來源。
審核編輯 黃宇
-
運動控制器
+關(guān)注
關(guān)注
2文章
483瀏覽量
26041 -
總線
+關(guān)注
關(guān)注
10文章
3040瀏覽量
91658 -
運動控制
+關(guān)注
關(guān)注
5文章
821瀏覽量
34536 -
EtherCAT總線
+關(guān)注
關(guān)注
5文章
93瀏覽量
5943 -
正運動技術(shù)
+關(guān)注
關(guān)注
0文章
124瀏覽量
892
發(fā)布評論請先 登錄
強(qiáng)實時運動控制內(nèi)核MotionRT750(十一):C#實現(xiàn)CAD導(dǎo)圖和小線段速度前瞻優(yōu)化 #運動控制內(nèi)核
強(qiáng)實時運動控制內(nèi)核MotionRT750(十):運動控制中的微調(diào)軌跡動態(tài)補(bǔ)償
強(qiáng)實時運動控制內(nèi)核MotionRT750(九):內(nèi)置C語言的自定義機(jī)械手模型實現(xiàn) #正運動技術(shù) #運動控制器
強(qiáng)實時運動控制內(nèi)核MotionRT750(六):us級高速交互之C++,為智能裝備提速 #正運動技術(shù)
強(qiáng)實時運動控制內(nèi)核MotionRT750(四):高速貼裝應(yīng)用中的拱形運動 #正運動技術(shù) #運動控制器
強(qiáng)實時運動控制內(nèi)核MotionRT750(三):us級高速交互之C#,為智能裝備提速 #正運動技術(shù) #
強(qiáng)實時運動控制內(nèi)核MotionRT750(二):精密點膠的PSO應(yīng)用#正運動技術(shù) #運動控制 #
強(qiáng)實時運動控制內(nèi)核MotionRT750(一):驅(qū)動安裝、內(nèi)核配置與使用
強(qiáng)實時運動控制內(nèi)核MotionRT750(一):驅(qū)動安裝 #正運動技術(shù) #正運動 #運動控制 #
強(qiáng)實時運動控制內(nèi)核MotionRT750(一):CPU配置 #正運動技術(shù) #運動控制 #正運動 #
強(qiáng)實時運動控制內(nèi)核MotionRT750(五):EtherCAT總線冗余讓生產(chǎn)制造更可靠
評論