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

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

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

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

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

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

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

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

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

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

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


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

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





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

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

4.添加外部庫【選擇項(xiàng)目后右鍵】→【添加庫】→【外部庫】。

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

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

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


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


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

/*************************************************************
Description: //設(shè)置軸速度,單位為units/s,當(dāng)多軸運(yùn)動(dòng)時(shí),作為插補(bǔ)運(yùn)動(dòng)的速度
Input: //卡鏈接handle
iaxis 軸號
fValue 設(shè)置的速度值
Output: //
Return: //錯(cuò)誤碼
*************************************************************/
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)
int rint = ZAux_FastOpen(5,"LOCAL",1000,&g_handle);
if(0 == rint)
{
//控制器連接成功,初始化程序變量
ConnectNum=0;
ContrStatus=1;
//控制器連接成功,啟動(dòng)定時(shí)器
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);
//可選:根據(jù)子線程的總線掃描情況,彈出對應(yīng)彈窗
connect(worker, &Worker::EcatInitStatus, this,&MainWindow::EcatScanInfo);
connect(worker, &Worker::UpdateLog, this,&MainWindow::UpdateLog);
//啟動(dòng)狀態(tài)監(jiān)控線程
thread->start();
}
2.如何實(shí)現(xiàn)純上位機(jī)的總線初始化。
//Qt的總線初始化子函數(shù)
int MainWindow::ZmcEcatInit(int ScanSlotId ,int BackSlotId)
{
//定義總線初始化的信息結(jié)構(gòu)體
struct EcatInitInfoSet MyEcatInitInfo;
//是否自定義初始化參數(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ū)動(dòng)軸相關(guān)參數(shù),用于指定驅(qū)動(dòng)軸的起始 ID 和數(shù)量】
MyEcatInitInfo.DriveAxisStart = 0;
MyEcatInitInfo.DriveAxisNum = -1; // 驅(qū)動(dòng)軸數(shù)量,-1 表示總線初始化的時(shí)候不判斷驅(qū)動(dòng)的軸數(shù)量是否對上
MyEcatInitInfo.EcatNodeNum = -1; // 總線節(jié)點(diǎn)數(shù)目,-1 表示總線初始化的時(shí)候不判斷節(jié)點(diǎn)個(gè)數(shù)是否對上
for (int i = 0; i < 128; i++)
{
MyEcatInitInfo.DrivePdoMode[i] = 12; // PDO 模式數(shù)組
}
// 總線初始化時(shí)是否自動(dòng)使能,1 驅(qū)動(dòng)器自動(dòng)使能,0 不使能驅(qū)動(dòng)器
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.指定哪個(gè)總線接口為主槽位號,哪個(gè)總線接口為從槽位號。
//停止總線
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的定時(shí)器實(shí)時(shí)獲取總線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 {"//背景色
" background-color: rgb(50, 205, 50);"
"}"
"QPushButton:hover {" //鼠標(biāo)懸停時(shí)的背景色
" background-color: rgb(50, 205, 50);"
"}"
"QPushButton:pressed {"//鼠標(biāo)按下時(shí)的背景色
" background-color: rgb(50, 205, 50);"
"}");
} //否則總線IN口通訊異常,設(shè)置為紅色
else
{
EcatInList[i]->setStyleSheet(
"QPushButton {"//背景色
" background-color: rgb(205, 50, 50);"
"}"
"QPushButton:hover {" //鼠標(biāo)懸停時(shí)的背景色
" background-color: rgb(205, 50, 50);"
"}"
"QPushButton:pressed {"//鼠標(biāo)按下時(shí)的背景色
" background-color: rgb(205, 50, 50);"
"}");
}
//如果bit1為1,則總線Out口通訊正常,設(shè)置為綠色
if((Tempint==2)||(Tempint==3))
{
EcatOpList[i]->setStyleSheet(
"QPushButton {"//背景色
" background-color: rgb(50, 205, 50);"
"}"
"QPushButton:hover {" //鼠標(biāo)懸停時(shí)的背景色
" background-color: rgb(50, 205, 50);"
"}"
"QPushButton:pressed {"//鼠標(biāo)按下時(shí)的背景色
" background-color: rgb(50, 205, 50);"
"}");
}
//否則總線Out口通訊異常,設(shè)置為紅色
else
{
EcatOpList[i]->setStyleSheet(
"QPushButton {"//背景色
" background-color: rgb(205, 50, 50);"
"}"
"QPushButton:hover {" //鼠標(biāo)懸停時(shí)的背景色
" background-color: rgb(205, 50, 50);"
"}"
"QPushButton:pressed {"//鼠標(biāo)按下時(shí)的背景色
" background-color: rgb(205, 50, 50);"
"}");
}
}
5.總線冗余演示視頻可點(diǎn)擊→“正運(yùn)動(dòng)強(qiáng)實(shí)時(shí)運(yùn)動(dòng)控制內(nèi)核MotionRT750”查看。
完整代碼獲取地址
▼

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

正運(yùn)動(dòng)技術(shù)專注于運(yùn)動(dòng)控制技術(shù)研究和通用運(yùn)動(dòng)控制軟硬件產(chǎn)品的研發(fā),是國家級高新技術(shù)企業(yè)。正運(yùn)動(dòng)技術(shù)匯集了來自華為、中興等公司的優(yōu)秀人才,在堅(jiān)持自主創(chuàng)新的同時(shí),積極聯(lián)合各大高校協(xié)同運(yùn)動(dòng)控制基礎(chǔ)技術(shù)的研究,是國內(nèi)工控領(lǐng)域發(fā)展最快的企業(yè)之一,也是國內(nèi)少有、完整掌握運(yùn)動(dòng)控制核心技術(shù)和實(shí)時(shí)工控軟件平臺技術(shù)的企業(yè)。主要業(yè)務(wù)有:運(yùn)動(dòng)控制卡_運(yùn)動(dòng)控制器_EtherCAT運(yùn)動(dòng)控制卡_EtherCAT控制器_運(yùn)動(dòng)控制系統(tǒng)_視覺控制器__運(yùn)動(dòng)控制PLC_運(yùn)動(dòng)控制_機(jī)器人控制器_視覺定位_XPCIe/XPCI系列運(yùn)動(dòng)控制卡等等。
|