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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Windows實時運動控制軟核(三):LOCAL高速接口測試之C++

正運動技術 ? 來源:正運動技術 ? 作者:正運動技術 ? 2022-12-20 09:41 ? 次閱讀

今天,正運動小助手給大家分享一下MotionRT7的安裝和使用,以及使用C++對MotionRT7開發(fā)的前期準備。

01 MotionRT7簡介

MotionRT7是深圳市正運動技術推出的跨平臺運動控制實時內核,也是國內首家完全自主自研,自主可控的Windows運動控制實時軟核。

poYBAGOW4pOACcciAAHq9VIXJmU220.png

1.MotionRT7具備以下特點

(1)獨立軟件安裝,適合各種Windows電腦;綠色免安裝,快速體驗;采用硬件綁定的運行許可證授權(未授權也可試用);可以方便配置、啟動、連接、模擬運行等。

(2)與MotionRT其它版本功能兼容,一次開發(fā),可快速切換到嵌入式Linux各種平臺。

(3)統一函數庫接口,快速的本地LOCAL接口,運動函數調用快至us級別,比普通PCI卡快數十倍。

(4)集成機器視覺,快速搭建各類運動控制+機器視覺的實時應用。

(5)強大多卡功能,最多240軸聯動,支持跨卡聯動,脈沖與總線聯動,振鏡與平臺聯動,輕松實現位置鎖存/PSO等高級功能。

2.持續(xù)迭代的運動控制實時內核MotionRT

MotionRT是正運動技術持續(xù)建設與發(fā)展的運動控制實時內核,已不斷迭代7代,從MotionRT1到MotionRT7。

poYBAGOK_DKAHSMdAAdoI1y_Yq8958.png

3.MotionRT7采用模塊化軟件架構

poYBAGOW4quAUP9nAAC-UQ_GFpA341.png

運動控制程序、視覺算法、MotionRT7運動控制引擎,通過高共享內存進行數據交互,大大提升運動控制與機器視覺的交互效率。用戶自定義功能,融合Gmc、Gear/Cam、Frame、Robotics、CNC等算法,打造用戶的專用控制系統

4.統一開放的API函數

統一完善的SDK庫,所有的第三方開發(fā)環(huán)境同一套API接口,跨平臺的產品架構,提高效率,保持兼容性。

poYBAGOW4rGAGfvuAACTkFdnWq4151.png

5.簡單易用的運動控制功能特性

a.點位運動、直線插補、圓弧插補、螺旋插補、連續(xù)軌跡加工;

b.電子凸輪、電子齒輪、同步跟隨、位置鎖存、虛擬軸疊加;

c.S曲線加減速,SS曲線加減速,軌跡運動更柔和;

d.1D/2D/3D高速位置同步輸出PS0,充分滿足視覺飛拍、高速點膠、激光加工;

e.客戶可自定義運動控制算法或者機器人正反解算法;

f.方便與第三方視覺配合。

6.開放的EtherCAT與配置調試工具

ZDevelop具備開放易用的配置,開發(fā),調試,診斷等工具。ZDevelop不僅是個綠色免費的軟件,而且具備軸調試,軸狀態(tài),示波器等工具。

pYYBAGOW4riABKRwAAKHtlkaieE117.png

MotionRT7廣泛支持EtherCAT總線,支持市面上廣泛易用的EtherCAT伺服,EtherCAT步進,EtherCAT IO,EtherCAT閥島和EtherCAT傳感器

我司后續(xù)將持續(xù)完善EtherCAT的配置工具,持續(xù)努力做最好用的運動控制。

02 MotionRT7的安裝和使用

第一步:安裝驅動程序

1.打開“設備管理器”,選擇“操作”中的“添加過時硬件”,選擇“手動選擇”。

pYYBAGOhD8mAEZl7AAGbch8B5BA092.pngpYYBAGOhD8-AWKd3AADvey1SwV8010.png

2.點擊“下一步”。

poYBAGOhD9WAZrSOAAEqUZPKWVs780.png

3.點擊“從磁盤安裝”。

poYBAGOhD9uAblg3AAFNC7-M0DQ571.png

4.點擊“瀏覽按鈕”選擇驅動所在的路徑,打開文件夾“driver_signed”,選擇“ZMotionRt64.inf”。

poYBAGOhD9-AcPZGAADGYfFDkhw144.pngpoYBAGOhD-SASDdVAAEN9OEoO1A830.png

5.一直點擊下一步,直到安裝完成。

pYYBAGOhD-mAPzY6AAK36k_9fUA195.png

注意:驅動更新時,要從設備管理器刪除設備,一定要選擇把驅動文件也刪除。

第二步:運行控制臺程序

1.打開控制臺程序所在位置,運行可執(zhí)行文件“MotionRt710.exe”。

pYYBAGOhD_2AX2IHAAI8PzGk9MA233.png

2.點擊“Start”。

poYBAGOhEAKAaz5uAACPcSC9SGE414.png

第三步:使用ZDevelop軟件鏈接到控制器,進行參數監(jiān)控

ZDevelop鏈接控制器,軟件版本3.10以上,使用PCI/LOCAL方式進行連接。

pYYBAGOhEAiAVr1JAACPMfA0fZQ716.pngpYYBAGOhEA6ALyx9AAD9ezl-gvI817.png

第四步:網口擴展EtherCAT主站協議

1.查看網絡連接。

poYBAGOhEBOAQBXOAAB7ijtTu4c524.png

2.選擇用作EtherCAT的網卡,右鍵屬性,安裝協議。

poYBAGOhEBiAO-N3AAH8P4y6t-4331.pngpYYBAGOhEB-AHB7rAAKkJBC4rZ8633.pngpoYBAGOhECWAB1aMAAFp7vNd_iI354.png

3.點擊從磁盤安裝,選擇驅動器所在的路徑,打開文件夾”driver_signed”,選擇“MotionRtPacket.inf”。

pYYBAGOhECuAL5wgAAEkUXb9kN4892.pngpoYBAGOhEDGALVS0AADLJEIeqBs822.pngpYYBAGOhEDaAYEUDAAFX-NthDqA697.pngpYYBAGOhED6AQLpbAAKM7fRgq8Y918.png

4.安裝成功后,確認ZMotionRT64 Packet Protocol Driver前面有選上。

在RT控制臺程序選擇增加AddEcat,這時能看到對應網卡,選擇后,啟動RT。

poYBAGOhEEaARZLqAAH0VYisv3s803.png

自帶PC的網卡EtherCAT具有一定的實時性,如EtherCAT要提升性能,則需要把網口其它的協議都去掉以提升實時性。

如需進一步提升實時性,請使用正運動專門的EtherCAT運動控制卡XPCIE1032。

更多關于MotionRT7的參數設置以及相關問題,請參照“MotionRT7說明書”。

相關資料請前往正運動技術官網www.zmotion.com.cn或聯系正運動相關人員。

03 C++進行MotionRT7項目的開發(fā)

1.新建MFC應用。

pYYBAGOhEGmAKuE_AADjCz7h9A8992.png

2.將zauxdll.lib、zauxdll2.h、zauxdll.dll和zmotion.dll這4個文件放到剛剛創(chuàng)建的MFC項目文件夾下。以上資料可聯系正運動相關人員獲取。

pYYBAGOhEG6AQi0rAAMOLMJRtLg436.png

3.添加頭文件聲明并聲明句柄。

poYBAGOhEHSAVgppAAEF5JbYlpo864.png

(1)相關PC函數介紹

poYBAGOhEI-AbCKiAABpJXN5e5Y753.pngpoYBAGOhEJSAeVwGAABIPXTMS9k802.pngpYYBAGOhEJmAQXqhAAA4XiKOHDU977.pngpYYBAGOhEJ6AM_7HAABCx4uRfdU295.pngpYYBAGOhEKOAJ8PgAABEac6vw0c295.pngpoYBAGOhEKeAE_bmAAAjj6iU-O4909.png

在C++的MFC設計界面,找到需要用到的控件拖拽到窗體中進行UI界面設計,效果如下。

pYYBAGOhEL6AIncDAABxNSygp8w640.png

注:使用IP模式連接MotionRT7的時候,要將MotionRT710中的Config配置項Eth num的值設置為一個大于0的數(1-12),輸入的IP為本機IP,可以在ZDevelop中直接查看。

(2)相關代碼

① 通過IP鏈接方式的鏈接按鈕的消息響應函數來鏈接控制器。

//IP鏈接方式鏈接控制器
void CcRunSpdDlg::OnBnClickedButton1()
{
    CString s;
    ed1.GetWindowText(s);
    std::string ip = s.GetBuffer();
    if (!ZAux_OpenEth(&ip[0],&handle))
    {
        MessageBox("MotionRT7鏈接成功!");
    }
    else
    {
        MessageBox("MotionRT7鏈接失敗!");
    }
}

②通過LOCAL鏈接方式的鏈接按鈕的消息響應函數來鏈接控制器。

//Local鏈接方式鏈接控制器
void CcRunSpdDlg::OnBnClickedButton3()
{
    // 連接類型, 
    CString s;
    cb1.GetWindowText(s);
    if (!ZAux_FastOpen((ZMC_CONNECTION_TYPE)5, &s.GetBuffer()[0], 1000, &handle))
    {
        MessageBox("MotionRT7鏈接成功!");
    }
    else
    {
        MessageBox("MotionRT7鏈接失??!");
    }
}

③通過斷開按鈕的消息響應函數來斷開控制器的鏈接。

//斷開上位機與控制器的鏈接
void CcRunSpdDlg::OnBnClickedButton2()
{
    ZAux_Close(handle);
    MessageBox("MotionRT7已斷開!");
}

④通過單條指令交互周期的測試按鈕對單條指令交互的周期進行測試。

void CcRunSpdDlg::OnBnClickedButton5()
{
    CString s;
    std::string S;
    float dpos;
    double tme;
    char g[30];
    cb2.GetWindowText(s);
    S = s.GetBuffer();
    int i;
    DWORD startTime = GetTickCount64();//計時開始
    for (i= 1; i <= std::stoi(S); i++)
    {
        ZAux_Direct_GetDpos(handle, 0, &dpos);
    }
    ed2.SetWindowText(g);
    DWORD endTime = GetTickCount64();//計時結束
    tme = (double)(endTime - startTime) / (std::stoi(S)) * 1000;
    ed2.SetWindowText(std::to_string(tme).data());
    ed3.SetWindowText(std::to_string((double)(endTime - startTime)).data());
    ed6.SetWindowText(std::to_string(dpos).data());
}

⑤通過多條指令交互周期的測試按鈕對多條指令交互的周期進行測試。

void CcRunSpdDlg::OnBnClickedButton6()
{
    CString s;
    std::string S;
    float data[12] = { 0 };
    char get[255];
    cb2.GetWindowText(s);
    S = s.GetBuffer();
    std::string cmd = "?dpos(0),dpos(1),dpos(2),dpos(3),axisstatus(0),axisstatus(1),axisstatus(2),axisstatus(3),in(0),in(1),in(2),in(3)";
    DWORD startTime = GetTickCount64();//計時開始
    for (int i = 1; i <= std::stoi(S); i++)
    {
        ZMC_DirectCommand(handle, &cmd[0], get, 255);
    }
    DWORD endTime = GetTickCount64();//計時結束
    double tme = (double)(endTime - startTime) / (std::stoi(S)) * 1000;
    ed4.SetWindowText(std::to_string(tme).data());
    ed5.SetWindowText(std::to_string((double)(endTime - startTime)).data());
    ZAux_TransStringtoFloat(&get[0], 12, data);
    ed7.SetWindowText(std::to_string(data[0]).data());
    ed8.SetWindowText(std::to_string(data[1]).data());
    ed9.SetWindowText(std::to_string(data[2]).data());
    ed10.SetWindowText(std::to_string(data[3]).data());
    ed11.SetWindowText(std::to_string((int)data[4]).data());
    ed12.SetWindowText(std::to_string((int)data[5]).data());
    ed13.SetWindowText(std::to_string((int)data[6]).data());
    ed14.SetWindowText(std::to_string((int)data[7]).data());
    ed15.SetWindowText(std::to_string((int)data[8]).data());
    ed16.SetWindowText(std::to_string((int)data[9]).data());
    ed17.SetWindowText(std::to_string((int)data[10]).data());
    ed18.SetWindowText(std::to_string((int)data[11]).data());
}

(3)運行效果

poYBAGOhEXSASnzmAACXkynTxjY925.pngIP鏈接方式的測試(1w次)

pYYBAGOhEXuAJU3XAACU5p13nS8397.pngLOCAL鏈接方式的測試(1w次)

poYBAGOhEYGAZwRFAACYZ8wDfe8269.pngIP鏈接方式的測試(10w次)

pYYBAGOhEYWAS18aAACYiDKeVk8403.pngLOCAL鏈接方式的測試(10w次)

04 分析與結論

以上分別是對IP方式鏈接MotionRT7與LOCAL方式鏈接MotionRT7的指令交互測試,從上面運行效果圖的數據顯示來看,當進行

1w次和進行10w次的單指令交互或多指令交互的時候,LOCAL鏈接的方式進行指令交互所需要的單條指令交互時間(平均4.7us左右和3.9us左右),一次性讀取12個狀態(tài)的多條指令交互時間(平均6.2us左右和5.5us左右)都比IP鏈接的方式更快(平均28us左右與29us左右)。

poYBAGOhEeeAF-kOAAAYnjgsTdE802.png

其次,我們可以從運行結果看出MotionRT7在LOCAL鏈接的方式下,指令交互的效率也是非常地穩(wěn)定,當測試數量從1w增加到10w時,單條指令交互時間與多條指令交互時間波動不大,這將為工藝作業(yè)中穩(wěn)定性提供了極大的保證。

MotionRT7的出現,絕對是一次重大的驚喜與升級,它為我們在進行大批量指令交互的過程中,提供了更好的效率與穩(wěn)定性,給生產創(chuàng)造更高的效率與更多的價值!

相關的函數請參照“ZMotion PC函數庫編程手冊”。

本次,正運動技術Windows實時運動控制軟核(三):LOCAL高速接口測試之C++,就分享到這里。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • WINDOWS
    +關注

    關注

    3

    文章

    3521

    瀏覽量

    88317
  • 高速接口
    +關注

    關注

    1

    文章

    44

    瀏覽量

    14752
  • C++
    C++
    +關注

    關注

    21

    文章

    2100

    瀏覽量

    73453
  • locale
    +關注

    關注

    0

    文章

    11

    瀏覽量

    1169
收藏 人收藏

    評論

    相關推薦

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

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

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

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

    Windows實時運動控制MotionRT7 | VC6.0例程講解# 正運動技術#運動控制

    運動控制
    正運動技術
    發(fā)布于 :2024年05月29日 14:59:41

    Windows實時運動控制MotionRT7 | VB.NET例程講解# 運動控制器# 運動控制系統

    運動控制系統
    正運動技術
    發(fā)布于 :2024年05月13日 13:59:34

    Windows實時運動控制MotionRT7 | Matlab例程講解# 正運動技術# 運動控制器# 控制

    運動控制
    正運動技術
    發(fā)布于 :2024年05月07日 17:25:42

    Windows實時運動控制LOCAL高速接口測試Labview# 正運動技術# 運動控制器# 運動控制

    運動控制
    正運動技術
    發(fā)布于 :2024年04月16日 14:40:48

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

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

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

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

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

    XPCIE1032H集成了強大的運動控制功能,結合MotionRT7運動控制實時
    發(fā)表于 01-15 11:20 ?530次閱讀
    EtherCAT超<b class='flag-5'>高速</b><b class='flag-5'>實時運動</b><b class='flag-5'>控制</b>卡XPCIE1032H上位機<b class='flag-5'>C</b>#開發(fā)

    Windows實時運動控制MotionRT7 | 功能配置介紹# 正運動技術# 運動控制# 控制

    WINDOWS運動控制
    正運動技術
    發(fā)布于 :2024年01月15日 10:54:39

    Windows實時運動控制MotionRT7 | Qt例程講解視頻演示# 正運動技術# 運動控制

    WINDOWS運動控制
    正運動技術
    發(fā)布于 :2024年01月10日 14:17:06

    Windows實時運動控制(一):EtherCAT協議安裝視頻演示# 正運動技術# 運動控制器# 運動控制

    運動控制WINDOWS
    正運動技術
    發(fā)布于 :2023年12月04日 16:19:41

    基于PCI Express的EtherCAT總線運動控制卡-XPCIE1032H

    XPCIE1032H集成了強大的運動控制功能,結合MotionRT7運動控制實時
    發(fā)表于 12-02 10:02 ?644次閱讀
    基于PCI Express的EtherCAT總線<b class='flag-5'>運動</b><b class='flag-5'>控制</b>卡-XPCIE1032H

    EtherCAT超高速實時運動控制卡(二):EtherCAT總線初始化

    XPCIE1032H是一款基于PCI Express的EtherCAT總線運動控制卡,可選6-64軸運動控制,支持多路高速數字輸入輸出,可輕
    的頭像 發(fā)表于 11-20 09:40 ?2164次閱讀
    EtherCAT超<b class='flag-5'>高速</b><b class='flag-5'>實時運動</b><b class='flag-5'>控制</b>卡(二):EtherCAT總線初始化