技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 運動控制卡應(yīng)用開發(fā)教程之VC6.0

運動控制卡應(yīng)用開發(fā)教程之VC6.0

時間:2020-11-27 15:54:16來源:正運動技術(shù)

導(dǎo)語:?今天,我們來講解一下正運動技術(shù)運動控制卡應(yīng)用開發(fā)教程之VC6.0。在正式學(xué)習(xí)之前,我們先了解一下正運動技術(shù)的運動控制卡ECI2418和ECI2618。這兩款產(chǎn)品分別是4軸,6軸運動控制卡。

  今天,我們來講解一下正運動技術(shù)運動控制卡應(yīng)用開發(fā)教程之VC6.0。

  在正式學(xué)習(xí)之前,我們先了解一下正運動技術(shù)的運動控制卡ECI2418和ECI2618。這兩款產(chǎn)品分別是4軸,6軸運動控制卡。

  

  1.png

  

  ECI2418支持4軸脈沖輸入與編碼器反饋,板載24點輸入,16點輸出,2AD,2DA,支持手輪接口,其中特定輸出支持高速PWM控制。

  

  2.png

  

  ECI2618支持6軸脈沖輸入與編碼器反饋,板載24點輸入,16點輸出,2AD,2DA,支持手輪接口,其中特定輸出支持高速PWM控制。

  

  3.png

  

  ECI2418,ECI2618均使用同一套API函數(shù),均支持C、C++、C#、LabView、Python、Delphi等開發(fā)語言,支持VC6.0、VB6.0、Qt、.Net等平臺,支持Windows、Linux、WinCE、iMac等操作系統(tǒng)。

  

   一、運動控制卡VC6.0開發(fā)流程

  

  1、打開 VC++6.0,新建一個工程。

  

  4.png

  

  2、選擇“ MFC APPWizard(exe)”,選擇 工程保存路徑,設(shè)置 工程名,選擇 確定。

  

  5.png

  

  3、在應(yīng)用程序類型 選擇基本對話框,完成項目新建。

  

  6.png

  

  4、將產(chǎn)品配套光盤“ ..\函數(shù)庫\dll”文件夾中的 動態(tài)鏈接庫 zmotion.dll、zauxdll.dll”、 頭文件 zauxdll2.h”和 lib文件 zauxdll.lib”復(fù)制到工程文件夾中。

  

  7.png

  

  5、選擇“Project”菜單下的“Settings…”菜單項。

  6、切換到“Link”標(biāo)簽頁,在“Object\library modules”欄中輸入lib文件名:zauxdll.lib。

  

  8.png

  

  7、在應(yīng)用程序文件中加入函數(shù)庫頭文件的聲明,如:#include “zauxdll2.h”,

  

  9.png

  

  8、至此,用戶就可以在VC6.0中調(diào)用函數(shù)庫中的任何函數(shù),開始編寫應(yīng)用程序, 具體函數(shù)的用法的功能可以參考光盤資料里面的:ZMotion PC函數(shù)庫編程手冊。

  

  10.png

  

  9、參考ZMotion PC函數(shù)庫編程手冊的鏈接控制器的函數(shù)說明,在 ECIDlg:OnInitDialog()函數(shù)中添加鏈接控制器代碼 ZAux_OpenEth(“192.168.0.11”,&g_handle);即可鏈接控制器。

  

  11.png

  

  

  10、通過MOVE按鈕,控制控制器進行插補運動。

  (1)右鍵MOVE按鈕,選擇屬性,設(shè)置按鈕ID。

  

  12.png

  

  (2)右鍵MOVE按鈕選擇事件。

  

  13.png

  

  (3)新建相關(guān)事件。

  

  14.png

  

  4)在事件處理函數(shù)中添加插補運動函數(shù)。

  

  15.png

  

  11、編譯運行就可以通過PC控制控制器了。

  

  如果編譯報錯:無法打開預(yù)編譯的頭文件:沒有這樣的文件或目錄。

  請選擇“Project”菜單下的“Settings…”菜單項,然后選擇c/c++進行如下設(shè)置。

  

  16.png

  

   二、VC6.0例程講解

  

  1、在我們的光盤資料里有很多VC6.0的例程,通過這些歷程可以更容易的上手我們的控制器。

  

  17.png

  

  2、單軸運動例程

  a、通過以太網(wǎng)鏈接到指定IP的控制器;

  b、設(shè)置運動軸參數(shù);

  c、選擇運動軸對象;

  d、選擇運動方式,實現(xiàn)持續(xù)運動和寸動;

  

  18.png

  

  3、實現(xiàn)步驟

  

   (1)搜索IP,鏈接控制器。

  A、先將相關(guān)控件拖拽到UI界面,并設(shè)置對應(yīng)的事件處理函數(shù)。

  

  19.png

  

  B、下拉框事件處理函數(shù),實現(xiàn)自動搜索IP。

  先根據(jù)ZMotion PC 編程手冊,在下拉框事件處理函數(shù)添加控制器IP搜索函數(shù)“ZAux_SearchEthlist()”,然后將獲取到的IP字符串進行解析,具體解析方法請參考例程。

  

  


 //自動搜索IP
 void CECIDlg::OnDropdownIPList()
 {
 /*自動搜索IP地址*/
 char buffer[10240];
 int32 iresult;
 /*搜索當(dāng)前網(wǎng)段下的 IP 地址 詳情請參考:zmotion pc 編程手冊*/
 iresult = ZAux_SearchEthlist(buffer, 10230, 100);
 if(ERR_OK != iresult)
 {
 return;
 }
 CComboBox *m_pEthList;
 m_pEthList = (CComboBox *)GetDlgItem(IDC_IPList);
 if(NULL == m_pEthList)
 {
 return;
 }
 /*從字符串轉(zhuǎn)換成IP*/
 int ipos =0;
 const char * pstring;
 pstring = buffer; 
for(int j= 0; j< 20;j++) { char buffer2[256]; buffer2[0] = '\0';
/*跳過空格*/ while(' ' == pstring[0]) { pstring++; }
ipos = sscanf(pstring , "%s", &buffer2); if(EOF == ipos) { break; } /*跳過字符*/ while((' ' != pstring[0]) && ('\t' != pstring[0]) && ('\0' != pstring[0])) { pstring++; } if(CB_ERR != m_pEthList->FindString(0, buffer2)) { continue; } if('\0' == buffer2) { return; } /*加入*/ m_pEthList->AddString(buffer2); } return; }

  

  C、點擊鏈接按鈕鏈接控制器。

  根據(jù)ZMotion PC 編程手冊,在鏈接按鈕點擊事件處理函數(shù)中添加網(wǎng)口連接控制器的函數(shù)“ZAux_OpenEth()”,即可實現(xiàn)鏈接控制器的功能。

  

  20.png

  

  D、點擊斷開按鈕斷開鏈接控制器。

  根據(jù)ZMotion PC 編程手冊,在斷開按鈕點擊事件處理函數(shù)中添加斷開鏈接控制器的函數(shù)“ZAux_Close()”,即可實現(xiàn)斷開鏈接控制器的功能。

  

  21.png

  

   (2)選擇軸,并對所選擇的dpos和當(dāng)前速度以及運動狀態(tài)進行監(jiān)控。

  A、先將相關(guān)控件拖拽到UI界面,并設(shè)置對應(yīng)的事件處理函數(shù)。

  

  22.png

  

  B、通過X、Y、Z、R 4個單選按鈕的事件處理函數(shù),實現(xiàn)對軸的選擇。

  

  23.png

  

  C、通過定時器實現(xiàn)對軸狀態(tài)的實時更新。

  

  24.png

  

  (3)實現(xiàn)in0-in7,out0-out7狀態(tài)的讀取。

  

  25.png

  

  使用接口ZAux_GetModbusIn() 和ZAux_GetModbusOut(),對io狀態(tài)進獲取。并封裝成一個子函數(shù)將該函數(shù)添加到定時器超時處理函數(shù)中,用于io狀態(tài)的更新。

  

  

        //IO監(jiān)控

        void CECIDlg::IOGet()

        {

          uint8 in, out, i=0,j=0,k=0;

          char  buff[128]={0};

          /*獲取輸入口狀態(tài)*/

          ZAux_GetModbusIn (g_handle, 0, 7, &in);  //獲取in0-in7狀態(tài)

          /*十進制轉(zhuǎn)二進制*/

          itoa(in, buff, 2);

          j=0;

          for( i=0; i<8; i++)

          {

            if((48 == buff[i])||(49 == buff[i]))

            {

              j++;  

            }  

          }

          for(i=0 ; i<(8-j); i++)

          {

            for(k=7; k>0; k--)

            {

              buff[k] = buff[k-1];

            }

            buff[0]=48;

          }

          sprintf(buff, "輸入口IN0-7 狀態(tài):%c %c %c %c %c %c %c %c", buff[7], buff[6],buff[5],buff[4],buff[3],buff[2],buff[1],buff[0]);

          GetDlgItem( IDC_IN )->SetWindowText( buff );

          /*獲取輸出口狀態(tài)*/

          ZAux_GetModbusOut (g_handle, 0, 7, &out);//獲取out0-out7狀態(tài)

          /*十進制轉(zhuǎn)二進制*/

          itoa(out, buff, 2);

          j=0;

          for( i=0; i<8; i++)

          {

            if((48 == buff[i])||(49 == buff[i]))

            {

              j++;  

            }  

          }

          for(i=0 ; i<(8-j); i++)

          {

            for(k=7; k>0; k--)

            {

              buff[k] = buff[k-1];

            }

            buff[0]=48;

          }

          sprintf(buff, "輸出口OUT0-7狀態(tài):%c %c %c %c %c %c %c %c",buff[7], buff[6],buff[5],buff[4],buff[3],buff[2],buff[1],buff[0]);

          GetDlgItem( IDC_OUT )->SetWindowText( buff );  

        }

  

  (4)對控制器參數(shù)進行設(shè)置。

  A、先將相關(guān)控件拖拽到UI界面,并設(shè)置參數(shù)生效按鈕的事件處理函數(shù)。

  

  26.png

  

  B、設(shè)置各個編輯框的成員變量,先右鍵編輯框選擇建立類導(dǎo)向,再選擇成員變量進行設(shè)置。

  

  27.png

  

  C、然后在參數(shù)生效按鈕的事件處理函數(shù)中添加參數(shù)設(shè)置的相關(guān)函數(shù)接口,對控制器參數(shù)進行設(shè)置。

  

  28.png

  

  (5)控制控制器運動。

  A、在UI界面再添加兩組單選框、寸動距離編輯框,以及兩個按鈕。

  

  29.png

  

  B、兩組單選框用于運動方向和運動方式的設(shè)置,通過他們的事件處理函數(shù)對標(biāo)志位變量m_moveatype和m_movedir進行設(shè)置。

  

  30.png

  

  C、通過啟動按鈕的事件處理函數(shù)來啟動控制器進行運動。

  

  31.png

  

  D、通過停止按鈕的事件處理函數(shù)來停止控制器運動。

  

  32.png

  

  (6)編譯運行演示。

  A、編譯運行示教例程

  

  33.png

  

  B、同時通過ZDevelop軟件連接同一個控制器,對運動控制效果進行觀察。

  以下是軸參數(shù)的顯示,IN/OP顯示,示波器中 DPOS MSPEED顯示。

  

  34.png

  35.png

  今天,正運動技術(shù)運動控制卡應(yīng)用開發(fā)教程之VC6.0就分享到這里。更多精彩內(nèi)容,請關(guān)注我們的公眾號。 本文由正運動小助手原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國智能制造水平。文章版權(quán)歸正運動技術(shù)所有,如有轉(zhuǎn)載請注明文章來源。

  36.png


標(biāo)簽: 運動控制卡

點贊

分享到:

上一篇:快速入門 | 篇十六:正運動控...

下一篇:運動控制卡應(yīng)用開發(fā)教程之使用Qt

中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.treenowplaneincome.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號