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

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

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

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

正運動技術(shù) ? 來源:正運動技術(shù) ? 作者:正運動技術(shù) ? 2024-07-17 14:47 ? 次閱讀

硬件介紹

PCIE464運動控制卡是正運動推出的一款EtherCAT總線+脈沖型、PCIE接口式的運動控制卡,可選6-64軸運動控制,支持多路高速數(shù)字輸入輸出,可輕松實現(xiàn)多軸同步控制和高速數(shù)據(jù)傳輸。

wKgaomaXZ1mAMANfAALNtKNdygY254.png

PCIE464運動控制卡適合于多軸點位運動、插補運動、軌跡規(guī)劃、手輪控制、編碼器位置檢測、IO控制、位置鎖存等功能的應(yīng)用。PCIE464運動控制卡適用于3C電子加工、檢測設(shè)備、半導(dǎo)體設(shè)備、SMT加工、激光加工、光通訊設(shè)備、鋰電及光伏設(shè)備、以及非標(biāo)自動化設(shè)備等高速高精應(yīng)用場合。

wKgZomaXZ2GAKAOvAARpxX09S_w353.png

PCIE4系列控制卡的應(yīng)用程序可以使用VC,VB,VS,C++,C#等軟件開發(fā),程序運行時需要動態(tài)庫zmotion.dll,調(diào)試時可以將RTSys軟件同時連接控制器,從而方便調(diào)試、方便觀察。

wKgaomaXZ22AGclwAAEE1NMWI5U178.png

接線參考

1、IN數(shù)字量輸入接口

數(shù)字輸入分布在J400(IN0-IN7)和X400(IN8-IN39)信號接口中。

wKgZomaXZ4CAIf8vAAG8KnMTlkQ772.pngwKgZomaXZ4aALW52AACMVKf44Js674.png

2、OUT數(shù)字量輸出接口

數(shù)字輸出分布在 J400(OUT0-7)和 X400(OUT8-OUT39)信號接口中。

wKgaomaXZ4-ARLMuAAHU6secIrk062.pngwKgZomaXZ5OAPI0-AAC2cyAtD1M837.png

3、編碼器輸入接口

J400包含一個差分脈沖輸出接口,一個差分編碼器反饋,通過轉(zhuǎn)接板接入。其中IN2-7有單端編碼器軸的功能,只支持24V編碼器輸入。

wKgaomaXZ5uAfUX-AACmbig9ysE444.pngwKgaomaXZ5-AYl1LAAJ7qSGz8yE821.pngwKgZomaXZ6OAcQBEAADi7uMyfZw710.pngwKgaomaXZ6eARtHyAAHk6ib3gf8046.png

C#語言進行項目開發(fā)

1、在VS2010菜單“文件”→“新建”→“項目”,啟動創(chuàng)建項目向?qū)А?/p>

wKgaomaXZ7aAfNagAADhJnjejPI813.png

2、選擇開發(fā)語言為“Visual C#”和.NET Framework 4以及Windows窗體應(yīng)用程序。

wKgZomaXZ7qALuNlAAGRBTag48I667.png

3、找到廠家提供的光盤資料里面的C#函數(shù)庫,路徑如下(32位庫為例)。

1)進入廠商提供的光盤資料找到“04PC函數(shù)”文件夾,并點擊進入。

wKgaomaXZ76ATAdCAADImVJ0Eb0888.png

2)選擇“函數(shù)庫2.1”文件夾。

wKgZomaXZ8GAWre_AACrDhzFbhA847.png

3)選擇“Windows平臺”文件夾。

wKgaomaXZ8SAY_wzAACDyIs5lvU751.png

4)根據(jù)需要選擇對應(yīng)的函數(shù)庫,這里選擇32位庫。

wKgaomaXZ8iANUhAAAB6ZixLpzQ789.png

5)解壓C#壓縮包,里面有C#對應(yīng)的函數(shù)庫。

wKgaomaXZ8uAGoBpAACopv96xHU152.png

6)函數(shù)庫具體路徑如下。

wKgZomaXZ86AXW-PAAC2TupS_AU260.png

4.將廠商提供的C#的庫文件以及相關(guān)文件復(fù)制到新建的項目中。

1)將zmcaux.cs文件復(fù)制到新建的項目里面中。

wKgZomaXZ9GAAcG6AAEO9lQTGd0912.png

2)將zauxdll.dll和zmotion.dll文件放入bindebug文件夾中。

wKgaomaXZ9WAe330AAKHyDKjxaA987.png

5.雙擊Form1.cs里面的Form1,出現(xiàn)代碼編輯界面,在文件開頭寫入using cszmcaux,并聲明控制器句柄g_handle。

wKgaomaXZ9iAaxcbAAG2UEH7n4k840.png

6、至此,項目新建完成,可進行C#項目開發(fā)。

PC函數(shù)介紹

1.PC函數(shù)手冊可在光盤資料查看,具體路徑如下。

wKgaomaXZ-WAH5Q3AABVprL-soc100.png

2.鏈接控制卡,獲取鏈接句柄。

wKgZomaXZ-mAGTjnAAA-z-NuBvw152.png

3.讀取單個I/O信號。

wKgZomaXZ-2AIksIAABT7jxxmLU918.pngwKgaomaXZ_KAekBcAABTbNoR0C0417.png

4.批量讀取I/O信號。

wKgaomaXZ_eAAIc4AABCVw36pQk358.pngwKgZomaXZ_uAeY5WAABEOh0S-C0132.png

5.設(shè)置單個輸出口。

wKgZomaXaAGAKeUqAABJbpgKDhA681.png

6.批量設(shè)置輸出口。

wKgZomaXaAWAeH9AAABATa0DKj4030.png

7.讀取單軸編碼器反饋位置。

wKgaomaXaAyAMyirAAA3ScLEmkw508.png

8.批量讀取編碼器反饋位置,BASIC字符串為MPOS。

wKgZomaXaBKAPx9AAABFrxCAU_w489.png

9.自定義函數(shù)封裝指令。

wKgaomaXaBaALt_nAABD974qF84497.png

單個或批量讀取IO和編碼器數(shù)據(jù)

1.鏈接控制器獲取句柄,上位機操作通過獲取到的句柄來操作控制器。

//連接PCIe控制卡,控制卡卡號缺省從0開始
int ret = zmcaux.ZAux_OpenPci(0, out g_handle);
if (g_handle != (IntPtr)0)
{
   MessageBox.Show("控制卡鏈接成功!" , "提示");
   timer_GetData.Enabled = true;  //開啟定時器或在單獨線程里實時讀取I/O信號
}
else
{
   MessageBox.Show("控制卡鏈接失敗,請檢測PCI卡號!" , "警告");
}

2.開啟定時器實時讀取I/O信號。

//定時器刷新I/O和軸反饋數(shù)據(jù)
private void timer_GetData_Tick(object sender, EventArgs e)
{
   uint[] instate = new uint[4];
   uint[] opstate = new uint[4];
   float[] mpos = new float[4];
   for (int i = 0; i < 4; i++)
   {
       zmcaux.ZAux_Direct_GetIn(g_handle, i, ref instate[i]); //讀取單個IN
       zmcaux.ZAux_Direct_GetOp(g_handle, i, ref opstate[i]); //讀取單個OUT
       zmcaux.ZAux_Direct_GetMpos(g_handle, i, ref mpos[i]); //讀取單軸反饋位置MPOS
   }
   IN0.Checked = (instate[0] == 1);
   IN1.Checked = (instate[1] == 1);
   IN2.Checked = (instate[2] == 1);
   IN3.Checked = (instate[3] == 1);
   OP0.Checked = (opstate[0] == 1);
   OP1.Checked = (opstate[1] == 1);
   OP2.Checked = (opstate[2] == 1);
   OP3.Checked = (opstate[3] == 1);
   MPOS0.Text = mpos[0].ToString();
   MPOS1.Text = mpos[1].ToString();
   MPOS2.Text = mpos[2].ToString();
   MPOS3.Text = mpos[3].ToString();
   int[] inputs = new int[4];
   uint[] outputs = new uint[4];
   float[] allmpos = new float[8];
   zmcaux.ZAux_Direct_GetInMulti(g_handle, 16, 31, inputs); //批量讀取輸入IN16-31
   zmcaux.ZAux_Direct_GetOutMulti(g_handle, 16, 31, outputs); //批量讀取輸出OUT16-31
   zmcaux.ZAux_Direct_GetAllAxisPara(g_handle, "MPOS", 8, allmpos);//批量讀取軸反饋位置MPOS 0-7
   InputGroup1631.Text = inputs[0].ToString("X4"); 
}

3.單個或批量設(shè)置OP輸出口。

//單個輸出口狀態(tài)切換函數(shù)
private void OP0_CheckedChanged(object sender, EventArgs e)
{
    if (g_handle == (IntPtr)0)
    {
        MessageBox.Show("未鏈接到控制卡!", "提示");
        return;
    }
    if (OP0.Checked)
    {
        zmcaux.ZAux_Direct_SetOp(g_handle,0, 1);
        OP0.Text = "out0 打開";
    }
    else
    {
        zmcaux.ZAux_Direct_SetOp(g_handle, 0, 0);
        OP0.Text = "out0 關(guān)閉";
    }
}
//批量切換輸出口狀態(tài)函數(shù)
private void OutputGroup03_CheckedChanged(object sender, EventArgs e)
{
   if (g_handle == (IntPtr)0)
   {
       MessageBox.Show("未鏈接到控制卡!", "提示");
       return;
   }  
   uint[] iostate = new uint[4];
   if (OutputGroup03.Checked)
   {
       iostate[0] = 0xF;    //以二進制組合OUT,十六進制0xF即OUT0-3全部置1
       zmcaux.ZAux_Direct_SetOutMulti(g_handle, 0, 3, iostate);
       OutputGroup03.Text = "全部置ON";
       OP0.Checked = true;
       OP1.Checked = true;
       OP2.Checked = true;
       OP3.Checked = true;
   }
   else
   {
       iostate[0] = 0x0;
       zmcaux.ZAux_Direct_SetOutMulti(g_handle, 0, 3, iostate);
       OutputGroup03.Text = "全部置OFF";
       OP0.Checked = false;
       OP1.Checked = false;
       OP2.Checked = false;
       OP3.Checked = false;
   }
}

4.若想驗證通過函數(shù)獲取的IO狀態(tài)和數(shù)據(jù)是否準(zhǔn)確,可以使用正運動的調(diào)試軟件RTSys連接到控制卡。

通過工具→輸入口/輸出口觀察當(dāng)前控制卡的實時IO狀態(tài),通過軸參數(shù)窗口觀察各軸的反饋位置MPOS,并與C#獲取的數(shù)據(jù)進行對比。

wKgaomaXaHSAJHhLAAEjbS7LtOw237.pngwKgZomaXaHiAOlUMAAIDUhc7MGE098.png

5.自定義函數(shù)封裝,單條命令批量獲取需要的部分I/O和部分軸數(shù)據(jù)。

通過組合不同的Basic命令字符串,中間以英文逗號字符隔開,一次性下發(fā)讀取所需的數(shù)據(jù),如:

(1)獲取某個輸入信號,對應(yīng)Basic命令字符串為:IN(輸入口序號);(2)獲取某個輸出信號,對應(yīng)Basic命令字符串為:OP(輸入口序號);(3)獲取某軸反饋位置,對應(yīng)Basic命令字符串為:MPOS(軸號);其他參數(shù)也可以使用此方式,具體Basic字符串可參考PC手冊“軸參數(shù)指令表”。

舉例說明,需要單條命令獲取輸入0,輸入3,輸出1,輸出4,軸2和軸5的反饋數(shù)據(jù),則需要通過ZAux_Execute函數(shù)下發(fā)字符串:

“?IN(0),IN(3),OP(1),OP(4),MPOS(2),MPOS(5)”;

其中,英文 “?”字符和“PRINT”字符為同一含義,表示讀取后續(xù)參數(shù)的值;參數(shù)字符不用區(qū)分大小寫。

private void getData_Click(object sender, EventArgs e)
{
   //通過Execute函數(shù)發(fā)送Basic字符串組合實現(xiàn)一次性讀取多個參數(shù)
   if (g_handle == (IntPtr)0)
   {
       MessageBox.Show("未鏈接到控制卡!", "提示");
       return;
   }
   string pszCommand;                                      //發(fā)送的Basic命令字符串
   StringBuilder psResponse = new StringBuilder(1024);     //接收返回的字符串
   uint uiResponseLength = 1024;                           //接收返回的字符長度,不能小于接收的字符串長度
   pszCommand = "?IN(4),IN(5),OP(4),OP(5),MPOS(4),MPOS(5)";//讀取數(shù)據(jù)Basic字符串,共6個數(shù)據(jù)
   zmcaux.ZAux_Execute(g_handle, pszCommand, psResponse, uiResponseLength);    
   string psResponseResult = "";
   psResponseResult += psResponse;
   string[] parts = psResponseResult.Split('t');          //這里以空格對字符串分割
   IN4.Checked = Convert.ToInt32(parts[0]) == 1;
   IN5.Checked = Convert.ToInt32(parts[1]) == 1;
   OP4.Checked = Convert.ToInt32(parts[2]) == 1;
   OP5.Checked = Convert.ToInt32(parts[3]) == 1;
   MPOS4.Text = parts[4];
   MPOS5.Text = parts[5];
}
wKgaomaXaJiAC5DgAAIn8EbWHhg992.png

調(diào)試軟件RTSys命令與輸出窗口的在線命令,與上述封裝函數(shù)為相同的功能。

wKgZomaXaJyARl12AACb2JeZDCk273.png

本次,正運動技術(shù)PCIe EtherCAT實時運動控制卡PCIE464的IO與編碼器讀寫應(yīng)用,就分享到這里。

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

本文由正運動技術(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)系本站處理。 舉報投訴
  • 編碼器
    +關(guān)注

    關(guān)注

    44

    文章

    3551

    瀏覽量

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

    關(guān)注

    4

    文章

    557

    瀏覽量

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

    關(guān)注

    7

    文章

    106

    瀏覽量

    15424
  • ethercat
    +關(guān)注

    關(guān)注

    18

    文章

    625

    瀏覽量

    38478
  • 正運動技術(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    244
收藏 人收藏

    評論

    相關(guān)推薦

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

    產(chǎn)品摘要正運動技術(shù)PCIE464運動控制卡,提供高效的工業(yè)運動控制解決方案。用戶可直接將
    發(fā)表于 01-24 09:48

    EtherCAT超高速實時運動控制卡XPCIE1032H驅(qū)動安裝# 運動控制卡# 正運動技術(shù)# PCIE

    人工智能運動控制卡
    正運動技術(shù)
    發(fā)布于 :2023年11月10日 15:44:03

    EtherCAT同步周期快至100us】超高實時性PCle EtherCAT控制卡PCIE464

    控制卡PCIe
    正運動技術(shù)
    發(fā)布于 :2024年01月31日 14:31:05

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

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

    EtherCAT運動控制卡之ECI2820如何使用

    軸直線插補、任意圓弧插補、空間圓弧、螺旋插補、電子凸輪、電子齒輪、同步跟隨、虛擬軸、機械手指令等;采用優(yōu)化的網(wǎng)絡(luò)通訊協(xié)議可以實現(xiàn)實時運動控制?! CI2828系列運動
    發(fā)表于 09-01 06:24

    步進、伺服電機控制,運動控制卡回原點、定長運動、高低速、編碼器實驗例程

    實時位置及速度測量,編碼器的實驗講解等。 主要有以下5個實驗課程: (1)運動控制卡與絲杠滑臺接線方法 (2)定長運動實驗講解 (3)
    發(fā)表于 11-26 10:38

    EtherCAT運動控制卡的硬件接線與C#的硬件外設(shè)讀寫與回零運動

    EtherCAT運動控制卡進行硬件接線與C#的硬件外設(shè)讀寫與回零運動
    的頭像 發(fā)表于 11-08 16:26 ?2253次閱讀
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>運動</b><b class='flag-5'>控制卡</b>的硬件接線與C#的硬件外設(shè)<b class='flag-5'>讀寫</b>與回零<b class='flag-5'>運動</b>

    不止10倍提速!PCIe EtherCAT實時運動控制卡XPCIE1032H 等您評測!

    PCIe實時運動控制卡助力EtherCAT高速高精運動控制應(yīng)用!
    的頭像 發(fā)表于 06-26 10:14 ?7592次閱讀
    不止10倍提速!<b class='flag-5'>PCIe</b> <b class='flag-5'>EtherCAT</b><b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b>XPCIE1032H 等您評測!

    PCIE超高速實時運動控制卡在六面外觀視覺檢測上的應(yīng)用

    超高速視覺篩選機PCIe實時運動控制卡XPCIE1028
    的頭像 發(fā)表于 08-22 09:31 ?836次閱讀
    <b class='flag-5'>PCIE</b>超高速<b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b>在六面外觀視覺檢測上的應(yīng)用

    超高速PCIe實時運動控制卡解決方案

    搭載Windows運動控制實時內(nèi)核MotionRT7,完美解決傳統(tǒng)PCI/PCle運動控制卡在Windows環(huán)境下
    發(fā)表于 09-16 10:16 ?803次閱讀
    超高速<b class='flag-5'>PCIe</b><b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b>解決方案

    高速視覺篩選機PCIe實時運動控制卡XPCIE1028簡介

    本次的深圳慕尼黑華南電子展正運動技術(shù)將攜高速視覺篩選機PCIe實時運動控制卡XPCIE1028亮相。此外,我們還為您準(zhǔn)備了的新互動模式,您將有機會贏得超值禮品!
    的頭像 發(fā)表于 11-06 16:00 ?476次閱讀
    高速視覺篩選機<b class='flag-5'>PCIe</b><b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b>XPCIE1028簡介

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

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

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

    運動技術(shù)PCIE464運動控制卡,提供高效的工業(yè)運動控制解決方案。用戶可直接將
    發(fā)表于 01-26 14:39 ?991次閱讀

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

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

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

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