硬件介紹
PCIE464運動控制卡是正運動推出的一款EtherCAT總線+脈沖型、PCIE接口式的運動控制卡,可選6-64軸運動控制,支持多路高速數(shù)字輸入輸出,可輕松實現(xiàn)多軸同步控制和高速數(shù)據(jù)傳輸。
PCIE464運動控制卡適合于多軸點位運動、插補運動、軌跡規(guī)劃、手輪控制、編碼器位置檢測、IO控制、位置鎖存等功能的應(yīng)用。PCIE464運動控制卡適用于3C電子加工、檢測設(shè)備、半導(dǎo)體設(shè)備、SMT加工、激光加工、光通訊設(shè)備、鋰電及光伏設(shè)備、以及非標自動化設(shè)備等高速高精應(yīng)用場合。
PCIE4系列控制卡的應(yīng)用程序可以使用VC,VB,VS,C++,C#等軟件開發(fā),程序運行時需要動態(tài)庫zmotion.dll,調(diào)試時可以將RTSys軟件同時連接控制器,從而方便調(diào)試、方便觀察。
接線參考
1、IN數(shù)字量輸入接口
數(shù)字輸入分布在J400(IN0-IN7)和X400(IN8-IN39)信號接口中。
2、OUT數(shù)字量輸出接口
數(shù)字輸出分布在 J400(OUT0-7)和 X400(OUT8-OUT39)信號接口中。
3、編碼器輸入接口
J400包含一個差分脈沖輸出接口,一個差分編碼器反饋,通過轉(zhuǎn)接板接入。其中IN2-7有單端編碼器軸的功能,只支持24V編碼器輸入。
C#語言進行項目開發(fā)
1、在VS2010菜單“文件”→“新建”→“項目”,啟動創(chuàng)建項目向?qū)А?/p>
2、選擇開發(fā)語言為“Visual C#”和.NET Framework 4以及Windows窗體應(yīng)用程序。
3、找到廠家提供的光盤資料里面的C#函數(shù)庫,路徑如下(32位庫為例)。
1)進入廠商提供的光盤資料找到“04PC函數(shù)”文件夾,并點擊進入。
2)選擇“函數(shù)庫2.1”文件夾。
3)選擇“Windows平臺”文件夾。
4)根據(jù)需要選擇對應(yīng)的函數(shù)庫,這里選擇32位庫。
5)解壓C#壓縮包,里面有C#對應(yīng)的函數(shù)庫。
6)函數(shù)庫具體路徑如下。
4.將廠商提供的C#的庫文件以及相關(guān)文件復(fù)制到新建的項目中。
1)將zmcaux.cs文件復(fù)制到新建的項目里面中。
2)將zauxdll.dll和zmotion.dll文件放入bindebug文件夾中。
5.雙擊Form1.cs里面的Form1,出現(xiàn)代碼編輯界面,在文件開頭寫入using cszmcaux,并聲明控制器句柄g_handle。
6、至此,項目新建完成,可進行C#項目開發(fā)。
PC函數(shù)介紹
1.PC函數(shù)手冊可在光盤資料查看,具體路徑如下。
2.鏈接控制卡,獲取鏈接句柄。
3.讀取單個I/O信號。
4.批量讀取I/O信號。
5.設(shè)置單個輸出口。
6.批量設(shè)置輸出口。
7.讀取單軸編碼器反饋位置。
8.批量讀取編碼器反饋位置,BASIC字符串為MPOS。
9.自定義函數(shù)封裝指令。
單個或批量讀取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ù)是否準確,可以使用正運動的調(diào)試軟件RTSys連接到控制卡。
通過工具→輸入口/輸出口觀察當前控制卡的實時IO狀態(tài),通過軸參數(shù)窗口觀察各軸的反饋位置MPOS,并與C#獲取的數(shù)據(jù)進行對比。
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](https://file1.elecfans.com/web2/M00/FD/E7/wKgaomaXaJiAC5DgAAIn8EbWHhg992.png)
調(diào)試軟件RTSys命令與輸出窗口的在線命令,與上述封裝函數(shù)為相同的功能。
本次,正運動技術(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)載請注明文章來源。
審核編輯 黃宇
-
編碼器
+關(guān)注
關(guān)注
45文章
3673瀏覽量
135284 -
運動控制
+關(guān)注
關(guān)注
4文章
590瀏覽量
32989 -
運動控制卡
+關(guān)注
關(guān)注
7文章
114瀏覽量
15518 -
ethercat
+關(guān)注
關(guān)注
19文章
739瀏覽量
38898 -
正運動技術(shù)
+關(guān)注
關(guān)注
0文章
104瀏覽量
457
發(fā)布評論請先 登錄
相關(guān)推薦
【正運動】高速高精,超高實時性的PCIe EtherCAT實時運動控制卡 | PCIE464
![](https://file1.elecfans.com/web2/M00/AD/7F/wKgaomVN3vyAfQTuAAWRMS4AI8I023.png)
EtherCAT超高速實時運動控制卡XPCIE1032H驅(qū)動安裝# 運動控制卡# 正運動技術(shù)# PCIE
![](https://file1.elecfans.com/web2/M00/BF/FE/wKgaomW56MeAP4PzAAdgHIX7rhw955.png)
![](https://file1.elecfans.com/web2/M00/FD/D0/wKgZomafCTaAcaodAAFHllVMUDg057.png)
PCIe EtherCAT實時運動控制卡PCIE464的IO與編碼器讀寫應(yīng)用# 正運動技術(shù)# 運動控制卡
EtherCAT運動控制卡之ECI2820如何使用
步進、伺服電機控制,運動控制卡回原點、定長運動、高低速、編碼器實驗例程
超高速PCIe實時運動控制卡解決方案
![超高速<b class='flag-5'>PCIe</b><b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b>解決方案](https://file1.elecfans.com/web2/M00/A4/DD/wKgaomUFEQiANQzHAAAwwAUKjsk323.png)
高速視覺篩選機PCIe實時運動控制卡XPCIE1028簡介
![高速視覺篩選機<b class='flag-5'>PCIe</b><b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b>XPCIE1028簡介](https://file1.elecfans.com/web2/M00/AC/B0/wKgaomVIndCAGfLxAABcf7v5qWI106.png)
評論