0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

運動控制卡周期上報實時數(shù)據(jù)IO狀態(tài)之C++篇

正運動技術(shù) ? 來源:正運動技術(shù) ? 作者:正運動技術(shù) ? 2024-12-17 13:59 ? 次閱讀

本文導(dǎo)讀

今天,正運動小助手為大家分享一下運動控制卡周期上報,通過提前設(shè)置經(jīng)常讀取的參數(shù)主動周期上報,可以減少PC主動輪詢的時間。此次介紹將以ECI2A18B為例,主要講解如何使用C++編程語言來進(jìn)行周期上報函數(shù)的編寫和功能的開發(fā)。

01ECI2A18B控制卡硬件介紹

ECI2A18B經(jīng)濟(jì)型多軸運動控制卡是一款脈沖型、模塊化的網(wǎng)絡(luò)型運動控制卡??刂瓶ū旧碜疃嘀С?0軸,用以實現(xiàn)直線插補(bǔ)、任意圓弧插補(bǔ)、空間圓弧、螺旋插補(bǔ)、電子凸輪、電子齒輪、同步跟隨、虛擬軸、機(jī)械手指令等簡單的軌跡控制需求;采用優(yōu)化的網(wǎng)絡(luò)通訊協(xié)議可以實現(xiàn)實時的運動控制。

wKgZO2dhD7aAExSYAAKMzmoxqe0256.png

ECI2A18B控制卡功能特點:

(1)本身支持6差分脈沖軸+4單端脈沖軸運動控制,最多可擴(kuò)展至12軸運動控制。

(2)脈沖輸出模式:脈沖/方向或雙脈沖。

(3)AXIS接口支持編碼器位置測量,可以配置為手輪輸入模式。

(4)專用的手輪輸入接口。

(5)每軸最大輸出脈沖頻率10MHz。

(6)通過CAN總線,最多可擴(kuò)展到256個隔離輸入口和256個隔離輸出口。

(7)軸正負(fù)限位信號口/原點信號口可以隨意配置到任何輸入口。

(8)通用數(shù)字輸出口最大輸出電流可達(dá)500mA,可直接驅(qū)動部分電磁閥。

(9)RS232接口、以太網(wǎng)接口、CAN接口。

(10)支持最多達(dá)12軸直線插補(bǔ)、任意圓弧插補(bǔ)、螺旋插補(bǔ)。

(11)支持點位運動、電子凸輪、直線插補(bǔ)、圓弧插補(bǔ)、連續(xù)插補(bǔ)運動、機(jī)械手指令。

(12)支持Basic多文件多任務(wù)編程。

(13)多種程序加密手段,保護(hù)客戶的知識產(chǎn)權(quán)。

wKgZPGdhD8WAAQbjAAMJoch5p60981.png

接口定義:

wKgZPGdhD86AO_dTAAPVRC6f_gk342.png

ECI2000系列經(jīng)濟(jì)型多軸運動控制卡可用于電子半導(dǎo)體設(shè)備(檢測類設(shè)備、組裝類設(shè)備、鎖附類設(shè)備、焊錫機(jī))、點膠設(shè)備和流水線等12軸以內(nèi)脈沖應(yīng)用場合。

控制器支持windows、linux、Mac、Android、wince各種操作系統(tǒng)下的開發(fā),提供vc、c#、vb.net、labview等各種環(huán)境的dll庫,如下圖。上位機(jī)軟件編程參考《ZMotion PC函數(shù)庫編程手冊》。

wKgZPGdhD9SADfCyAAEbnAlgRhI831.png

02 為什么要進(jìn)行周期上報,作用是什么?

1、當(dāng)PC主動輪詢的次數(shù)過多時,可能會導(dǎo)致以下問題:

(1)消耗系統(tǒng)資源

輪詢會使系統(tǒng)資源消耗增加,無論是任務(wù)輪詢或定時器輪詢,都會消耗系統(tǒng)的部分資源。在多用戶或者資源受限的環(huán)境里,這極有可能致使系統(tǒng)性能下滑。

(2)浪費CPU資源

只要是輪詢都會造成CPU資源的浪費。這是因為輪詢會會在系統(tǒng)內(nèi)不間斷的運行,不論當(dāng)前設(shè)備的狀態(tài)是否有改變。實際上,設(shè)備的諸多狀態(tài)并不經(jīng)常改變,輪詢空轉(zhuǎn)只會無端消耗CPU的時間。

(3)影響電源管理

向PC報告外圍設(shè)備次數(shù)增多會使功耗提高,這可能縮短電池壽命或增加能源消耗,從而影響電源管理。

(4)降低響應(yīng)速度

如果輪詢頻率過高,系統(tǒng)響應(yīng)其他任務(wù)的速度或許會變慢。造成原因是由于CPU會不間斷的輪詢當(dāng)前狀態(tài),從而響應(yīng)處理其他計算或與用戶交互任務(wù)會減慢。

(5)網(wǎng)絡(luò)負(fù)載增加

若輪詢涉及網(wǎng)絡(luò)通信,輪詢請求過多就可能加大網(wǎng)絡(luò)負(fù)載,造成網(wǎng)絡(luò)擁堵或者延遲加劇。

(6)服務(wù)器壓力增大

在客戶端服務(wù)器架構(gòu)里,要是頻繁進(jìn)行輪詢請求,就可能給服務(wù)器帶來壓力。主要集中在在服務(wù)器資源不足時,也許會使服務(wù)質(zhì)量降低或者出現(xiàn)請求超時的情況。

2、多種獲取方式對于程序運行占比的區(qū)別:

在探討單條獲取、多條獲取以及周期性獲取對程序運行產(chǎn)生的影響時,我們需要考量這些操作的特性以及它們對程序整體性能可能存在的潛在影響。

(1)單條獲取

單條獲取即程序每次僅處理一個單獨的數(shù)據(jù)項。此方式簡單直接,然而處理大量數(shù)據(jù)時效率不高,因為每次操作都會有上下文切換與資源管理方面的開銷。此時,程序運行時間主要耗費在數(shù)據(jù)處理上。

(2)多條獲取

多條獲取意味著同時處理多個數(shù)據(jù)項。在現(xiàn)代計算機(jī)系統(tǒng)里,常借助多線程或者并發(fā)技術(shù)達(dá)成這一操作,這樣做能大幅提升數(shù)據(jù)處理的吞吐量。不過,多線程雖有好處,卻可能被鎖爭、內(nèi)存競爭和上下文切換等問題所抵消。所以,多條獲取也許會縮短單個數(shù)據(jù)項處理的相對運行時間,但總體運行時間能否減少取決于多線程優(yōu)化的成效。

(3)周期性獲取

周期獲取即按照固定的時間間隔重復(fù)開展數(shù)據(jù)獲取操作。在諸如實時監(jiān)控系統(tǒng)、定時任務(wù)這類需要定期更新數(shù)據(jù)狀態(tài)的應(yīng)用場景中較為常見。其運行時間占比由任務(wù)的周期性和每個周期內(nèi)實際工作量決定。若周期性任務(wù)負(fù)載較輕,則對程序整體運行時間影響不大。

應(yīng)用場合:

在實際應(yīng)用里,具體的應(yīng)用場景、數(shù)據(jù)特性以及性能要求決定了選擇何種數(shù)據(jù)獲取策略。比如,若程序要對單個事件快速響應(yīng),單條獲取或許更合適;要是旨在使數(shù)據(jù)處理速度最大化,多條獲取可能更有利;而對于那些需要定期保持?jǐn)?shù)據(jù)新鮮度的應(yīng)用而言,周期性獲取則不可或缺。

03 新建MFC項目并添加函數(shù)庫

1、首先打開Visual Studio 2022,點擊創(chuàng)建新項目。

wKgZPGdhENaAQhNnAACo80rt9AU803.png

2、選擇開發(fā)語言為“Visual C++”和程序類型“MFC應(yīng)用程序”。

wKgZO2dhEN2ATfGdAADtDb5XFCA712.png

3、點擊下一步即可。

wKgZPGdhEOeALdZSAAAm5N5xZJM539.png

4、選擇類型為“基于對話框”,下一步或者完成。

wKgZO2dhEO2AeGjJAAAvog10iG4162.png

5、前往正運動官網(wǎng)下載PC函數(shù)庫,路徑如下(本文采用64位函數(shù)庫為例)。

(1)進(jìn)入官網(wǎng),選擇支持與服務(wù),打開下載中心選擇庫文件,就能找到所有的PC函數(shù)庫。

wKgZPGdhEPKABE5BAAOmrDZ1S9o954.png

(2)點擊下載Windows C++(64位),可按需求另存為想要保存的路徑下。

wKgZO2dhEPeAdvQZAAI5XgWucj4954.png

(3)函數(shù)庫另存為具體路徑如下。

wKgZPGdhEP2AEun_AAB8eTUcS8M779.png

6、將廠商提供的C++庫文件和相關(guān)頭文件復(fù)制到新建的項目里。

wKgZPGdhEQKAHoX2AADWPVZysZU370.png

7、在項目中添加靜態(tài)庫和相關(guān)頭文件。

(1)先右擊項目文件,接著依次選擇:“添加”→“現(xiàn)有項”。

wKgZO2dhEQiAY3SKAADxkycVkeI645.png

(2)在彈出的窗口中依次添加靜態(tài)庫和相關(guān)頭文件。

wKgZPGdhERqABlizAAEYBE10gHU189.png

8、聲明用到的頭文件和定義控制器連接句柄。

wKgZO2dhESWAYgdyAABLR3oq8QI248.png

至此項目新建完成,可進(jìn)行MFC項目開發(fā)。

04 查看PC函數(shù)手冊,熟悉相關(guān)函數(shù)接口

1、PC函數(shù)手冊也可以在正運動官網(wǎng)“支持與服務(wù)”→“下載中心”→“編程手冊”中找到。

wKgZPGdhETWARnArAAPetJgXHLQ096.png

2、鏈接控制器,獲取鏈接句柄。

wKgZO2dhETqAXaJlAAAKRMIx8TI177.png

3、控制器自動上報相關(guān)指令。

wKgZPGdhET-AbeNwAABuO_MbkLs659.png

4、讀取數(shù)字輸入輸出相關(guān)指令。

wKgZO2dhEUSAdroGAAF970mWsbc172.png

5、讀取Modbus寄存器相關(guān)指令。

wKgZPGdhEUiAZnA0AAEBGpVNqg0727.png

05 MFC實現(xiàn)軸的周期上報

1、例程界面如下。

wKgZO2dhEVaAX1rLAAA0zy7hH1I825.png

2、通過下拉控件選擇連接控制器/控制卡連接方式。

BOOL CTest_CycleUpDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 將“關(guān)于...”菜單項添加到系統(tǒng)菜單中。 // IDM_ABOUTBOX 必須在系統(tǒng)命令范圍內(nèi)。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if(pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if(!strAboutMenu.IsEmpty()) { pSysMenu-?>AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX,strAboutMenu); } } // 設(shè)置此對話框的圖標(biāo)。當(dāng)應(yīng)用程序主窗口不是對話框時,框架將自動 // 執(zhí)行此操作 SetIcon(m_hIcon, TRUE); // 設(shè)置大圖標(biāo) SetIcon(m_hIcon, FALSE); // 設(shè)置小圖標(biāo) // TODO: 在此添加額外的初始化代碼 GetDlgItem(IDC_COMBO2)->SetWindowTextA("網(wǎng)口n"); CComboBox *connetList; connetList = (CComboBox *)GetDlgItem(IDC_COMBO2); connetList->AddString(_T("網(wǎng)口n")); connetList->AddString(_T("LOCALn")); connetList->AddString(_T("PCIn")); connetList->AddString(_T("串口n")); return TRUE; // 除非將焦點設(shè)置到控件,否則返回 TRUE }

3、自動搜索IP。

void CTest_CycleUpDlg::OnCbnDropdownCombo1() { char Buffer[256]; CTest_CycleUpDlg* pDlg = (CTest_CycleUpDlg*)AfxGetMainWnd(); GetDlgItemText(IDC_COMBO2,Buffer,256); Buffer[255] = ''; if(0==strcmp(Buffer,"串口n")) { Com_SCAN(pDlg); } else if(0==strcmp(Buffer,"網(wǎng)口n")) { IP_SCAN(pDlg); } else if(0==strcmp(Buffer,"PCIn")) { PCI_SCAN(pDlg); } else if(0==strcmp(Buffer,"LOCALn")) { CComboBox *m_pEthList; m_pEthList = (CComboBox *)GetDlgItem(IDC_COMBO1); m_pEthList->ResetContent(); m_pEthList->AddString(_T("LOCAL1n")); }else { CString str; MessageBox("請選擇正確的鏈接類型!"); return; } return; }

wKgZO2dhEaKAWkaGAAA5OW7GG-k755.png

4、開啟上報。

wKgZO2dhEZ6AUAAuAAA5qEDf1iE212.png

//開啟關(guān)閉上報 void CTest_CycleUpDlg::OnBnClickedCheckStart() { if(NULL == G_ZmcHandle) { MessageBox(_T("控制器未連接")); return; } CString tempstr; UpdateData(true); int iret = 0; if(m_If_StartUp) //開啟上報 { GetCycleStr(); iret = ZAux_CycleUpEnable(G_ZmcHandle,m_CyclePort,m_CycleTime,Str_CycleCmd); if(ERR_SUCCESS != iret) { tempstr.Format("周期上報打開失??!錯誤碼:%d 命令:%srn",iret,Str_CycleCmd); AppendTextOut(tempstr); return; } tempstr.Format("周期上報開始!命令:%srn",Str_CycleCmd); AppendTextOut(tempstr); ifirsttimeus = GetTickCount(); SetTimer(1,1,NULL); } else { m_CycleCount = ZAux_CycleUpGetRecvTimes(G_ZmcHandle,m_CyclePort); iret = ZAux_CycleUpDisable(G_ZmcHandle,m_CyclePort); if(ERR_SUCCESS != iret) { tempstr.Format("周期上報關(guān)閉失??!錯誤碼:%d rn",iret); AppendTextOut(tempstr); return; } tempstr.Format("周期上報關(guān)閉-上報用時:%dms, 上報次數(shù):%d ,平均時間:%.3fmsrn",(GetTickCount() - ifirsttimeus),m_CycleCount,(float)(GetTickCount() - ifirsttimeus)/m_CycleCount); AppendTextOut(tempstr); KillTimer(1); } }

5、選擇獲取參數(shù)類型和起始地址及數(shù)量。

wKgZPGdhEcKAF9q0AAA5YAZZI-8886.png

//獲取上報參數(shù) void CTest_CycleUpDlg::GetCycleStr() { memset(Str_CycleCmd,0,sizeof(Str_CycleCmd)); CString TempString = ""; int ilen = 0; if(m_CycleParaEnAble[0]) { switch(m_CyclePara[0]) { case 0: //AXISSTATUS TempString.Format("AXISSTATUS(%d,%d),",m_CycleParaStart[0],m_CycleParaNum[0]); break; case 1: //DPOS TempString.Format("DPOS(%d,%d),",m_CycleParaStart[0],m_CycleParaNum[0]); break; case 2: //IDLE TempString.Format("IDLE(%d,%d),",m_CycleParaStart[0],m_CycleParaNum[0]); break; case 3: //IN TempString.Format("IN(%d,%d),",m_CycleParaStart[0],m_CycleParaNum[0]); break; case 4: //MODBUS_REG TempString.Format("MODBUS_REG(%d,%d),",m_CycleParaStart[0],m_CycleParaNum[0]); break; case 5: //MPOS TempString.Format("MPOS(%d,%d),",m_CycleParaStart[0],m_CycleParaNum[0]); break; case 6: //OP TempString.Format("OP(%d,%d),",m_CycleParaStart[0],m_CycleParaNum[0]); break; case 7: //TABLE TempString.Format("TABLE(%d,%d),",m_CycleParaStart[0],m_CycleParaNum[0]); break; default: break; } } ilen += TempString.GetLength(); memcpy(Str_CycleCmd,TempString.GetBuffer(0),TempString.GetLength()*sizeof(TCHAR)); if(m_CycleParaEnAble[1]) { switch(m_CyclePara[1]) { case 0: //AXISSTATUS TempString.Format("AXISSTATUS(%d,%d),",m_CycleParaStart[1],m_CycleParaNum[1]); break; case 1: //DPOS TempString.Format("DPOS(%d,%d),",m_CycleParaStart[1],m_CycleParaNum[1]); break; case 2: //IDLE TempString.Format("IDLE(%d,%d),",m_CycleParaStart[1],m_CycleParaNum[1]); break; case 3: //IN TempString.Format("IN(%d,%d),",m_CycleParaStart[1],m_CycleParaNum[1]); break; case 4: //MODBUS_REG TempString.Format("MODBUS_REG(%d,%d),",m_CycleParaStart[1],m_CycleParaNum[1]); break; case 5: //MPOS TempString.Format("MPOS(%d,%d),",m_CycleParaStart[1],m_CycleParaNum[1]); break; case 6: //OP TempString.Format("OP(%d,%d),",m_CycleParaStart[1],m_CycleParaNum[1]); break; case 7: //TABLE TempString.Format("TABLE(%d,%d),",m_CycleParaStart[1],m_CycleParaNum[1]); break; default: break; } } if((ilen + TempString.GetLength()) < 1000) { memcpy(&Str_CycleCmd[ilen],TempString.GetBuffer(0),TempString.GetLength()*sizeof(TCHAR)); ilen += TempString.GetLength(); } if(m_CycleParaEnAble[2]) { switch(m_CyclePara[2]) { case 0: //AXISSTATUS TempString.Format("AXISSTATUS(%d,%d)",m_CycleParaStart[2],m_CycleParaNum[2]); break; case 1: //DPOS TempString.Format("DPOS(%d,%d)",m_CycleParaStart[2],m_CycleParaNum[2]); break; case 2: //IDLE TempString.Format("IDLE(%d,%d)",m_CycleParaStart[2],m_CycleParaNum[2]); break; case 3: //IN TempString.Format("IN(%d,%d)",m_CycleParaStart[2],m_CycleParaNum[2]); break; case 4: //MODBUS_REG TempString.Format("MODBUS_REG(%d,%d)",m_CycleParaStart[2],m_CycleParaNum[2]); break; case 5: //MPOS TempString.Format("MPOS(%d,%d)",m_CycleParaStart[2],m_CycleParaNum[2]); break; case 6: //OP TempString.Format("OP(%d,%d)",m_CycleParaStart[2],m_CycleParaNum[2]); break; case 7: //TABLE TempString.Format("TABLE(%d,%d)",m_CycleParaStart[2],m_CycleParaNum[2]); break; default: break; } } if((ilen + TempString.GetLength()) < 1000) { memcpy(&Str_CycleCmd[ilen],TempString.GetBuffer(0),TempString.GetLength()*sizeof(TCHAR)); ilen += TempString.GetLength(); } }

6、獲取上報結(jié)果并輸出。

wKgZO2dhEfeAc2DFAAA50YHScuQ923.png

//獲取上報結(jié)果 void CTest_CycleUpDlg::GetCycleInfo() { CString ParaString = ""; CString TempString = ""; CString ShowString = ""; int iret = 0; int ival = 0; for(int inum=0;inum

7、強(qiáng)制上報一次。

//強(qiáng)制上報一次 void CTest_CycleUpDlg::OnBnClickedBtnCycleup() { if(NULL == G_ZmcHandle) { MessageBox(_T("控制器未連接")); return; } UpdateData(true); int iret = ZAux_CycleUpForceOnce(G_ZmcHandle, m_CyclePort); if(ERR_SUCCESS != iret) { MessageBox(_T("周期上報刷新失敗!")); return; } }

8、使用正運動RTSys軟件輸出窗口和軸參數(shù)窗口方便直接的觀察到我們周期上報的數(shù)值。

wKgZO2dhEk2AXODVAABmL-p971g030.png

9、上位機(jī)讀取周期上報的值并輸入在文本框。

wKgZO2dhElGAHGHoAABSDGF-UCQ364.png

10、可以點擊下拉框選擇其他參數(shù)或更改起始地址及數(shù)量讀取不同區(qū)域數(shù)據(jù)。

wKgZPGdhElaAOXnEAABRefiqjks078.png

11、周期上報獲取信息和單次獲取信息的比較。

wKgZPGdhEluARxrwAADOmuuW8sE431.png

12、視頻教程。

教學(xué)視頻可點擊→“教學(xué)視頻:運動控制卡周期上報實時數(shù)據(jù)IO狀態(tài)之C++篇”查看。

本次,正運動運動控制卡周期上報實時數(shù)據(jù)IO狀態(tài)之C++篇就分享到這里。

更多精彩內(nèi)容請關(guān)注“正運動小助手”公眾號,需要相關(guān)開發(fā)環(huán)境與例程代碼,請咨詢正運動技術(shù)銷售工程師:400-089-8936。

本文由正運動技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國智能制造水平。文章版權(quán)歸正運動技術(shù)所有,如有轉(zhuǎn)載請注明文章來源。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7026

    瀏覽量

    89025
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2108

    瀏覽量

    73646
  • 運動控制卡
    +關(guān)注

    關(guān)注

    7

    文章

    113

    瀏覽量

    15463
收藏 人收藏

    評論

    相關(guān)推薦

    運動控制卡網(wǎng)絡(luò)通訊的心跳檢測C#上位機(jī)編程

    使用C#上位機(jī)編程實現(xiàn)運動控制卡網(wǎng)絡(luò)通訊的心跳檢測功能
    的頭像 發(fā)表于 12-24 10:54 ?93次閱讀
    <b class='flag-5'>運動</b><b class='flag-5'>控制卡</b>網(wǎng)絡(luò)通訊的心跳檢測<b class='flag-5'>之</b><b class='flag-5'>C</b>#上位機(jī)編程

    以太網(wǎng)IO控制卡C#實時讀寫時間測試

    C#語言進(jìn)行ECI IO的項目開發(fā)和快速讀取多個IO狀態(tài)與上位機(jī)交互速度的測試結(jié)果
    的頭像 發(fā)表于 11-21 13:50 ?206次閱讀
    以太網(wǎng)<b class='flag-5'>IO</b><b class='flag-5'>控制卡</b>:<b class='flag-5'>C</b>#<b class='flag-5'>實時</b>讀寫時間測試

    PCIe實時運動控制卡的雙盤視覺篩選機(jī)上位機(jī)開發(fā)應(yīng)用

    PCIe實時運動控制卡的雙盤視覺篩選機(jī)上位機(jī)開發(fā)應(yīng)用
    的頭像 發(fā)表于 10-10 10:15 ?316次閱讀
    PCIe<b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b>的雙盤視覺篩選機(jī)上位機(jī)開發(fā)應(yīng)用

    PCIe EtherCAT實時運動控制卡PCIE464的IO與編碼器讀寫應(yīng)用# 正運動技術(shù)# 運動控制卡

    編碼器運動控制卡
    正運動技術(shù)
    發(fā)布于 :2024年07月23日 09:37:31

    PCIe EtherCAT實時運動控制卡PCIE464的IO與編碼器讀寫應(yīng)用

    C#進(jìn)行PCIe EtherCAT運動控制卡的項目開發(fā)和快速讀取多個IO和軸編碼器位置的例程。
    的頭像 發(fā)表于 07-17 14:47 ?787次閱讀
    PCIe EtherCAT<b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b>PCIE464的<b class='flag-5'>IO</b>與編碼器讀寫應(yīng)用

    運動控制卡伺服電機(jī)如何控制

    運動控制卡伺服電機(jī)控制是現(xiàn)代工業(yè)自動化領(lǐng)域中一項重要的技術(shù),它涉及到運動控制卡、伺服電機(jī)、控制
    的頭像 發(fā)表于 06-12 14:13 ?901次閱讀

    PCIE464M — 高速高精,超高速PCIe EtherCAT實時運動控制卡

    運動“高速高精運動控制卡”家族再添一員猛將!
    的頭像 發(fā)表于 05-31 11:17 ?448次閱讀
    PCIE464M — 高速高精,超高速PCIe EtherCAT<b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b>

    運動控制卡/運動控制器的ZCAN總線ZMIO310擴(kuò)展模塊使用

    運動控制卡/運動控制器的ZCAN總線ZMIO310擴(kuò)展模塊使用
    的頭像 發(fā)表于 04-11 11:46 ?673次閱讀
    <b class='flag-5'>運動</b><b class='flag-5'>控制卡</b>/<b class='flag-5'>運動</b><b class='flag-5'>控制</b>器的ZCAN總線ZMIO310擴(kuò)展模塊使用

    EtherCAT超高速實時運動控制卡XPCIE1032H上位機(jī)C#開發(fā)(十四)

    XPCIE1032H是一款基于PCI Express的EtherCAT總線運動控制卡,可選6-64軸運動控制,支持多路高速數(shù)字輸入輸出,可輕松實現(xiàn)多軸同步
    的頭像 發(fā)表于 03-04 10:46 ?4.1w次閱讀
    EtherCAT超高速<b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b>XPCIE1032H上位機(jī)<b class='flag-5'>C</b>#開發(fā)(十四)

    超高實時性的EtherCAT運動控制卡——PCIE464

    運動技術(shù)PCIE464運動控制卡,提供高效的工業(yè)運動控制解決方案。用戶可直接將PCIE464嵌入標(biāo)準(zhǔn)PC機(jī)快速實現(xiàn)高性能的EtherCAT
    發(fā)表于 01-26 14:39 ?1177次閱讀

    【正運動】高速高精,超高實時性的PCIe EtherCAT實時運動控制卡 | PCIE464

    充分利用PC的高效數(shù)據(jù)處理和開放性特性,以及控制卡高速PWM、多維位置比較輸出PSO等功能,實現(xiàn)出色的多軸同步控制和高速點位以及復(fù)雜的軌跡運動控制
    發(fā)表于 01-24 09:48

    超高速PCle實時運動控制卡XPCIE1028 ,實現(xiàn)15000+pcs/分鐘的IO觸發(fā)檢測速度!# 視覺篩選

    運動控制卡
    正運動技術(shù)
    發(fā)布于 :2024年01月18日 09:22:13

    PCIE464 — 高速高精,超高實時性的PCIe EtherCAT實時運動控制卡

    運動高速高精運動控制卡家族迎來新成員!
    的頭像 發(fā)表于 01-17 16:29 ?684次閱讀
    PCIE464 — 高速高精,超高<b class='flag-5'>實時</b>性的PCIe EtherCAT<b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b>