MotionRT750是正運動技術首家自主自研的x86架構Windows系統或Linux系統下獨占確定CPU的強實時運動控制內核。

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

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

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

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

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

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

線型的連接方式確實簡單,走線靈活,便于現場設備布局與維護。在自動化的工業生產中,設備通常在不同的環境中長時間運行,線纜的老化、安裝連接不夠嚴謹等因素導致線纜斷連。
假如有一天第一個伺服和第二個伺服之間的線纜斷了,那么第1個伺服后面的設備是不是將無法正常運行呢?

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

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

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


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

Qt開發MotionRT750強實時運動控制內核
Qt項目的創建
1.打開Qt Creator參考如下步驟創建新的Qt項目。





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

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

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

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

6.至此Qt項目新建完成,可以進行MotionRT750的項目開發了。
相關PC函數介紹
1.上位機連接MotionRT750的接口。

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


萬能上位機接口在線命令介紹:


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

/*************************************************************
Description: //設置軸速度,單位為units/s,當多軸運動時,作為插補運動的速度
Input: //卡鏈接handle
iaxis 軸號
fValue 設置的速度值
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);
//調用命令執行函數
return ZAux_DirectCommand(handle, cmdbuff, cmdbuffAck, 2048);
}
相關測試代碼介紹
1.上位機如何鏈接上MotionRT750。
//通過LOCAL接口連接RT750, LOCAL接口的指令交互速度快至3us以內
int rint = ZAux_FastOpen(5,"LOCAL",1000,&g_handle);
if(0 == rint)
{
//控制器連接成功,初始化程序變量
ConnectNum=0;
ContrStatus=1;
//控制器連接成功,啟動定時器
startTimer(200);
//控制器連接成功,開始正常初始化
MainWindow::ZmcEcatInit(SlotId,BeiYongSlotId);
//初始化線程和 Worker
thread = new QThread(this);
worker = new Worker(); // 注意:不指定父對象
//將 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);
//可選:根據子線程的總線掃描情況,彈出對應彈窗
connect(worker, &Worker::EcatInitStatus, this,&MainWindow::EcatScanInfo);
connect(worker, &Worker::UpdateLog, this,&MainWindow::UpdateLog);
//啟動狀態監控線程
thread->start();
}
2.如何實現純上位機的總線初始化。
//Qt的總線初始化子函數
int MainWindow::ZmcEcatInit(int ScanSlotId ,int BackSlotId)
{
//定義總線初始化的信息結構體
struct EcatInitInfoSet MyEcatInitInfo;
//是否自定義初始化參數,設置1的話使用默認的總線初始化參數,設置成0則需要自定義總線初始化相關參數;
MyEcatInitInfo.InitStructFlag = 0;
if (MyEcatInitInfo.InitStructFlag != 1)
{
//【1. 本地軸參數,用于指定本地軸的起始 ID 和使用的軸數量】
MyEcatInitInfo.LocalAxisId = 0;
MyEcatInitInfo.LocalAxisNum = 0;
//【2. 驅動軸相關參數,用于指定驅動軸的起始 ID 和數量】
MyEcatInitInfo.DriveAxisStart = 0;
MyEcatInitInfo.DriveAxisNum = -1; // 驅動軸數量,-1 表示總線初始化的時候不判斷驅動的軸數量是否對上
MyEcatInitInfo.EcatNodeNum = -1; // 總線節點數目,-1 表示總線初始化的時候不判斷節點個數是否對上
for (int i = 0; i < 128; i++)
{
MyEcatInitInfo.DrivePdoMode[i] = 12; // PDO 模式數組
}
// 總線初始化時是否自動使能,1 驅動器自動使能,0 不使能驅動器
MyEcatInitInfo.DriveEnable = 1;
//【3、冗余設置】
MyEcatInitInfo.BusRedSwitch=1; //總線冗余開關(1=開啟,0=關閉)
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);
//設置總線冗余的從總線槽位號,總線掃描前設置
if((BusRedSwitch==1)&&( SlotId!=RedSpareSlot))
{
//等待200ms
MyDelayMs(200, pOutTime);
//設置總線槽位號SlotId為主總線槽,設置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口的通訊狀態。
//3、更新ECAT In口與Out口狀態
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口通訊正常,設置為綠色
if((Tempint==1)||(Tempint==3))
{
EcatInList[i]->setStyleSheet(
"QPushButton {"//背景色
" background-color: rgb(50, 205, 50);"
"}"
"QPushButton:hover {" //鼠標懸停時的背景色
" background-color: rgb(50, 205, 50);"
"}"
"QPushButton:pressed {"//鼠標按下時的背景色
" background-color: rgb(50, 205, 50);"
"}");
} //否則總線IN口通訊異常,設置為紅色
else
{
EcatInList[i]->setStyleSheet(
"QPushButton {"//背景色
" background-color: rgb(205, 50, 50);"
"}"
"QPushButton:hover {" //鼠標懸停時的背景色
" background-color: rgb(205, 50, 50);"
"}"
"QPushButton:pressed {"//鼠標按下時的背景色
" background-color: rgb(205, 50, 50);"
"}");
}
//如果bit1為1,則總線Out口通訊正常,設置為綠色
if((Tempint==2)||(Tempint==3))
{
EcatOpList[i]->setStyleSheet(
"QPushButton {"//背景色
" background-color: rgb(50, 205, 50);"
"}"
"QPushButton:hover {" //鼠標懸停時的背景色
" background-color: rgb(50, 205, 50);"
"}"
"QPushButton:pressed {"//鼠標按下時的背景色
" background-color: rgb(50, 205, 50);"
"}");
}
//否則總線Out口通訊異常,設置為紅色
else
{
EcatOpList[i]->setStyleSheet(
"QPushButton {"//背景色
" background-color: rgb(205, 50, 50);"
"}"
"QPushButton:hover {" //鼠標懸停時的背景色
" background-color: rgb(205, 50, 50);"
"}"
"QPushButton:pressed {"//鼠標按下時的背景色
" background-color: rgb(205, 50, 50);"
"}");
}
}
5.總線冗余演示視頻可點擊→“正運動強實時運動控制內核MotionRT750”查看。
完整代碼獲取地址
▼

本次,正運動技術強實時運動控制內核MotionRT750(五):EtherCAT總線冗余讓生產制造更可靠,就分享到這里。
更多精彩內容請關注“正運動小助手”公眾號,需要相關開發環境與例程代碼,請咨詢正運動技術銷售工程師:400-089-8936。
本文由正運動技術原創,歡迎大家轉載,共同學習,一起提高中國智能制造水平。文章版權歸正運動技術所有,如有轉載請注明文章來源。

正運動技術專注于運動控制技術研究和通用運動控制軟硬件產品的研發,是國家級高新技術企業。正運動技術匯集了來自華為、中興等公司的優秀人才,在堅持自主創新的同時,積極聯合各大高校協同運動控制基礎技術的研究,是國內工控領域發展最快的企業之一,也是國內少有、完整掌握運動控制核心技術和實時工控軟件平臺技術的企業。主要業務有:運動控制卡_運動控制器_EtherCAT運動控制卡_EtherCAT控制器_運動控制系統_視覺控制器__運動控制PLC_運動控制_機器人控制器_視覺定位_XPCIe/XPCI系列運動控制卡等等。
|