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

該方案采用獨占確定CPU內核技術實現超強性能的強實時運動控製。它將核心的運動控製、機器人算法、數控(CNC)及機器視覺等強實時的任務,集中運行在1-2個專用CPU核上。與此同時,其餘CPU核則專注於處理Windows/Linux相關的非實時任務。
此外集成MotionRT750 Runtime實shi時shi層ceng與yu操cao作zuo係xi統tong非fei實shi時shi層ceng,並bing利li用yong高gao速su共gong享xiang內nei存cun進jin行xing數shu據ju交jiao互hu,顯xian著zhu提ti升sheng了le運yun動dong控kong製zhi與yu上shang層ceng應ying用yong間jian的de通tong信xin效xiao率lv及ji函han數shu執zhi行xing速su度du,最zui終zhong實shi現xian更geng穩wen定ding、更高效的智能裝備控製,確保了運動控製任務的絕對實時性與係統穩定性,特別適用於半導體、電子裝備等高速高精的應用場合。

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現場總線具有靈活的拓撲結構,設備間支持線型、星型、樹型的連接方式,其中線型結構簡單、傳輸效率高,大多數的現場應用中也是使用這種連接方式,如下圖所示。

線xian型xing的de連lian接jie方fang式shi確que實shi簡jian單dan,走zou線xian靈ling活huo,便bian於yu現xian場chang設she備bei布bu局ju與yu維wei護hu。在zai自zi動dong化hua的de工gong業ye生sheng產chan中zhong,設she備bei通tong常chang在zai不bu同tong的de環huan境jing中zhong長chang時shi間jian運yun行xing,線xian纜lan的de老lao化hua、安裝連接不夠嚴謹等因素導致線纜斷連。
假如有一天第一個伺服和第二個伺服之間的線纜斷了,那麼第1個伺服後麵的設備是不是將無法正常運行呢?

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

從EtherCAT的線纜冗餘接線圖中可以看出,複用了最後一個從站設備的OUT端(duan)接(jie)回(hui)主(zhu)站(zhan),是(shi)不(bu)是(shi)有(you)點(dian)巧(qiao)妙(miao)呢(ne)?減(jian)少(shao)了(le)硬(ying)件(jian)成(cheng)本(ben),還(hai)能(neng)解(jie)決(jue)問(wen)題(ti),確(que)實(shi)受(shou)大(da)家(jia)喜(xi)歡(huan)。再(zai)來(lai)細(xi)看(kan)它(ta)的(de)數(shu)據(ju)流(liu)向(xiang),假(jia)設(she)還(hai)是(shi)第(di)一(yi)個(ge)伺(si)服(fu)和(he)第(di)二(er)個(ge)伺(si)服(fu)之(zhi)間(jian)斷(duan)開(kai)了(le),它(ta)的(de)工(gong)作(zuo)原(yuan)理(li)如(ru)下(xia)圖(tu)所(suo)示(shi)。

伺服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。
benwenyouzhengyundongjishuyuanchuang,huanyingdajiazhuanzai,gongtongxuexi,yiqitigaozhongguozhinengzhizaoshuiping。wenzhangbanquanguizhengyundongjishusuoyou,ruyouzhuanzaiqingzhumingwenzhanglaiyuan。

正運動技術專注於運動控製技術研究和通用運動控製軟硬件產品的研發,是國家級高新技術企業。正運動技術彙集了來自華為、中(zhong)興(xing)等(deng)公(gong)司(si)的(de)優(you)秀(xiu)人(ren)才(cai),在(zai)堅(jian)持(chi)自(zi)主(zhu)創(chuang)新(xin)的(de)同(tong)時(shi),積(ji)極(ji)聯(lian)合(he)各(ge)大(da)高(gao)校(xiao)協(xie)同(tong)運(yun)動(dong)控(kong)製(zhi)基(ji)礎(chu)技(ji)術(shu)的(de)研(yan)究(jiu),是(shi)國(guo)內(nei)工(gong)控(kong)領(ling)域(yu)發(fa)展(zhan)最(zui)快(kuai)的(de)企(qi)業(ye)之(zhi)一(yi),也(ye)是(shi)國(guo)內(nei)少(shao)有(you)、完整掌握運動控製核心技術和實時工控軟件平台技術的企業。主要業務有:運動控製卡_運動控製器_EtherCAT運動控製卡_EtherCAT控製器_運動控製係統_視覺控製器__運動控製PLC_運動控製_機器人控製器_視覺定位_XPCIe/XPCI係列運動控製卡等等。
|