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

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

3天內不再提示

硬件位置比較輸出和編碼器鎖存:EtherCAT超高速實時運動控制卡XPCIE1032H上位機C#開發(fā)(六)

正運動技術 ? 來源:正運動技術 ? 作者:正運動技術 ? 2023-12-27 14:58 ? 次閱讀

XPCIE1032H功能簡介

XPCIE1032H是一款基于PCI Express的EtherCAT總線運動控制卡,可選6-64軸運動控制,支持多路高速數字輸入輸出,可輕松實現多軸同步控制和高速數據傳輸。XPCIE1032H集成了強大的運動控制功能,結合MotionRT7運動控制實時軟核,解決了高速高精應用中,PC Windows開發(fā)的非實時痛點,指令交互速度比傳統(tǒng)的PCI/PCIe快10倍。

wKgZomVfDAyAFMr3AAkZwl5y9mw590.png

XPCIE1032H支持PWM,PSO功能,板載16進16出通用IO口,其中輸出口全部為高速輸出口,可配置為4路PWM輸出口或者16路高速PSO硬件比較輸出口。輸入口含有8路高速輸入口,可配置為4路高速色標鎖存或兩路編碼器輸入。

XPCIE1032H搭配MotionRT7實時內核,使用本地LOCAL接口連接,通過高速的核內交互,可以做到更快速的指令交互,單條指令與多條指令一次性交互時間可以達到3-5us左右。

wKgaomVfDamAezYKAAMg97tWgj8671.png

?XPCIE1032H與MotionRT7實時內核的配合具有以下優(yōu)勢:

wKgaomVfDbWAXMEnAAD8mJdADkQ556.png

1.支持多種上位機語言開發(fā),所有系列產品均可調用同一套API函數庫;

2.借助核內交互,可以快速調用運動指令,響應時間快至微秒級,比傳統(tǒng)PCI/PCIe快10倍;

3.解決傳統(tǒng)PCI/PCIe運動控制卡在Windows環(huán)境下控制系統(tǒng)的非實時性問題;

4.支持一維/二維/三維PSO(高速硬件位置比較輸出),適用于視覺飛拍、精密點膠和激光能量控制等應用;

5.提供高速輸入接口,便于實現位置鎖存;

6.支持EtherCAT總線和脈沖輸出混合聯動、混合插補。

wKgZomVfDcGAWvxzAACDzkihGqI139.png

?使用XPCIE1032H和MotionRT7進行項目開發(fā)時,通常需要進行以下步驟:

1.安裝驅動程序,識別XPCIE1032H;

2.打開并執(zhí)行文件“MotionRT710.exe”,配置參數和運行運動控制實時內核;

3.使用ZDevelop軟件連接到控制器,進行參數監(jiān)控。連接時請使用PCI/LOCAL方式,并確保ZDevelop軟件版本在3.10以上;

4.完成控制程序開發(fā),通過LOCAL鏈接方式連接到運動控制卡,實現實時運動控制。

wKgZomVobjKAPLn_AAGwsQpNe1Q966.png

?與傳統(tǒng)PCI/PCIe卡和PLC的測試數據結果對比:

wKgaomVobjiAOGwqAAAu1S7GuhY671.png

我們可以從測試對比結果看出,XPCIE1032H運動控制卡配合實時運動控制內核MotionRT7,在LOCAL鏈接(核內交互)的方式下,指令交互的效率是非常穩(wěn)定,當測試數量從1w增加到10w時,單條指令交互時間與多條指令交互時間波動不大,非常適用于高速高精的應用。

XPCIE1032H控制卡安裝

關閉計算機電源。

打開計算機機箱,選擇一條空閑的XPCIE卡槽,用螺絲刀卸下相應的擋板條。

將運動控制卡插入該槽,擰緊擋板條上的固定螺絲。

XPCIE1032H驅動安裝與建立連接參考往期文章EtherCAT超高速實時運動控制卡XPCIE1032H上位機C#開發(fā)(一):驅動安裝與建立連接。

一、C#語言進行運動控制項目

wKgaomWLyQuAB6L-AADNcce-7RQ576.png

二、相關PC函數指令介紹

相關PC函數介紹詳情可參考“ZMotion PC函數庫編程手冊 V2.1.1”。

1、硬件位置比較輸出函數介紹

wKgZomWLySaAdbdxAADZyJ3ODRQ869.png

wKgaomWLySaANMivAACFh8mRK0E759.png

2、鎖存相關指令介紹

wKgZomWLyU2ARAZGAAEMU-Elt_A308.png

wKgZomWLyVyAIlLgAABCBqHLeQc481.png

wKgZomWLyU2AbI18AABBXYDpsUA264.png

wKgZomWLyU2ANHa4AABIkQE5igY030.png

wKgaomWLyU2AB45_AABH6ti8RgU879.png

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

wKgaomWLyWaAX1h4AADA0PYALC0477.png

三、相關程序及功能介紹

1.位置比較功能

(1)位置同步輸出PSO的原理與應用

PSO(position synchronized output)即位置同步輸出,本質是通過采集實時的編碼器反饋位置(無編碼器可使用輸出的脈沖位置)與比較模式設定的位置進行比較,控制OP高速同步輸出信號,PSO示意圖如下。

wKgaomWLyXeAHp0MAAAh25q18_U361.png

PSO一般與激光器(或點膠噴射閥等設備)同步輸出信號進行相位同步,在運動軌跡的所有階段以恒定的空間(或恒定時間)間隔觸發(fā)輸出開關,包括加速、減速和勻速段,從而實現脈沖能量均勻地作用在被加工物體上。

PSO功能的特點是能高速且穩(wěn)定的輸出信號,因為輸出精度足夠高,所以能夠在整個運動軌跡中以固定的距離觸發(fā)輸出信號而不用考慮總體速度,即在直線部分以很快的速度運動,而在圓角部分減速的同時也能保證輸出間距恒定。

通常圓角加工部分在整個加工過程中占有比較小的部分,這樣在保證加工效果的同時,就可以最大限度地提高產能。

wKgaomWLyX2ACc7nAAC3EYzBhcw900.png

正運動的PSO功能調用ZAux_Direct_HwPswitch2函數接口實現,該函數采用硬件實現IO的高速比較輸出,響應速度達到微秒級別,故名硬件比較輸出。

(2)程序流程圖

wKgZomWLyZqAb6nZAAAuuM2C78I508.png

(3)相關代碼示例

private void Button2_Click(object sender, EventArgs e) //運動按鈕 { //更新界面參數 updata_value(); //判斷是否連接控制器 if (g_handle == (IntPtr)0) { MessageBox.Show("未鏈接到控制器!", "提示"); return; } int iret = 0; AxisNum = 0; //獲取軸個數 foreach (Control item in this.Controls) if (item is CheckBox) { CheckBox checkBox = (CheckBox)item; if (checkBox.CheckState == CheckState.Checked) AxisNum++; } //判斷是否選擇軸 if (AxisNum == 0) { MessageBox.Show("沒選軸!", "提示"); return; } int[] axislist = new int[AxisNum]; float[] Distancelist = new float[AxisNum]; foreach (int item in axislist) axislist[iret++] = -1; //獲取運動的軸數組和運動距離 foreach (Control item in this.Controls) if (item is CheckBox) { CheckBox checkBox = (CheckBox)item; if (checkBox.CheckState == CheckState.Checked) { int axis = Convert.ToInt32(checkBox.Name.Substring(checkBox.Name.Length - 1, 1)); int index = Array.IndexOf(axislist, -1); axislist[index] = axis; string DistanceName = "Distance" + axis.ToString(); Distancelist[index] = float.Parse(((System.Windows.Forms.TextBox)this.Controls.Find(DistanceName, false)[0]).Text); } } //初始化輸出口 for (int i = 0; i < 3; i++) iret = zmcaux.ZAux_Direct_SetOp(g_handle, i, 0); //選擇運動的軸 iret = zmcaux.ZAux_Direct_Base(g_handle, AxisNum, axislist); //初始化運動參數 foreach (int item in axislist) { iret = zmcaux.ZAux_Direct_SetUnits(g_handle, item, 100); iret = zmcaux.ZAux_Direct_SetSpeed(g_handle, item, 100); iret = zmcaux.ZAux_Direct_SetAccel(g_handle, item, 2000); iret = zmcaux.ZAux_Direct_HwPswitch2(g_handle, item, 2, 0, 0, 0, 0, 0, 0, 0, 0); //清除前面的比較輸出指令 } iret = zmcaux.ZAux_Direct_HwTimer(g_handle, 2, 0, 0, 0, 0, 0); //關閉硬件定時器 //起點輸出口狀態(tài)設置 int tempoutstatus = 0; if (ModePara2 == 0) tempoutstatus = 1; else tempoutstatus = 0; //硬件定時器設置 if (m_Timer_IfOpen == false) { iret = zmcaux.ZAux_Direct_HwTimer(g_handle, 2, m_Timer_Cycle, m_Timer_Valid, m_Timer_Num, tempoutstatus, ModePara1); if (iret != 0) { string tempstr; tempstr = "HwTimer失敗 返回值:" + iret.ToString(); MessageBox.Show(tempstr, "提示"); return; } } else { iret = zmcaux.ZAux_Direct_HwTimer(g_handle, 0, m_Timer_Cycle, m_Timer_Valid, m_Timer_Num, tempoutstatus, ModePara1); if (iret != 0) { string tempstr; tempstr = "HwTimer失敗 返回值:" + iret.ToString(); MessageBox.Show(tempstr, "提示"); return; } } //HwPswitch設置 if (m_POS_IfOpen) { //將比較點填入TABLE switch (PsoMode) { case 1: case 3: iret = zmcaux.ZAux_Direct_SetTable(g_handle, ModePara3, ModePara4 - ModePara3 + 1, fPointPos); break; case 25: case 26: iret = zmcaux.ZAux_Direct_SetTable(g_handle, ModePara5, ModePara4 * 2, fPointPos); break; case 35: case 36: iret = zmcaux.ZAux_Direct_SetTable(g_handle, ModePara5, ModePara4 * 3, fPointPos); break; } if (iret != 0) { string tempstr; tempstr = "SetTable失敗 返回值:" + iret.ToString(); MessageBox.Show(tempstr, "提示"); return; } //初始化矢量位置 switch (PsoMode) { case 3: case 4: case 5: case 6: case 7: zmcaux.ZAux_Direct_SetParam(g_handle, "VECTOR_MOVED", 0, 0); break; } //PSO指令設置 switch (PsoMode) { case 1: case 2: case 3: case 4: case 5: case 6: iret = zmcaux.ZAux_Direct_HwPswitch2(g_handle, axislist[0], PsoMode, ModePara1, ModePara2, ModePara3, ModePara4, ModePara5, ModePara6, ModePara7, ModePara8); break; case 7: case 25: case 26: case 35: case 36: iret = ZAux_Direct_HwPswitch2_2D(); break; } if (iret != 0) { string tempstr; tempstr = "HwPswitch2失敗 返回值:" + iret.ToString(); MessageBox.Show(tempstr, "提示"); return; } } else { iret = 0; iret = zmcaux.ZAux_Direct_HwPswitch2(g_handle, axislist[0], 2, 0, 0, 0, 0, 0, 0, 0, 0); //清除比較輸出指令 if (iret != 0) { string tempstr; tempstr = "HwPswitch2失敗 返回值:" + iret.ToString(); MessageBox.Show(tempstr, "提示"); return; } } //觸發(fā)示波器 zmcaux.ZAux_Trigger(g_handle); //多軸插補運動 iret = zmcaux.ZAux_Direct_Move(g_handle, AxisNum, axislist, Distancelist); }

2.鎖存功能

(1)鎖存的原理和應用

鎖存的原理是通過高速輸入口的感應來記錄當前編碼器的位置。當鎖存信號被觸發(fā)時,當前位置信息立即被捕獲到位置鎖存器中,并將前一次鎖存的位置坐標 清除。讀取鎖存位置信息時,讀取的是最后一次鎖存信號觸發(fā)時鎖存的位置信息。

鎖存一般應用于包裝,印刷,點膠,視覺飛拍等。

wKgZomWLydyAdLT5AAAiQEUYYgQ676.png

(2)程序流程圖

wKgaomWLyeKAIAa1AAAYUjIDTrg838.png

(3)相關代碼示例

private void Button1_Click(object sender, EventArgs e) //啟動鎖存 { if (g_handle == (IntPtr)0) { MessageBox.Show("未鏈接到控制器!", "提示"); return; } int iret = 0; if (m_Regist_IfOpen == false) { m_RegistCount = 0; iret = zmcaux.ZAux_Direct_SetAtype(g_handle, m_RegistAxis, 1); //必須是編碼器軸才可以鎖存 int ReglistListSel = ComboBox1.SelectedIndex; if (ReglistListSel >= 0 && ReglistListSel <= 3) { RegistMode = ReglistListSel + 1; } else if (ReglistListSel == 4 || ReglistListSel == 5) { RegistMode = 10 + ReglistListSel; } else if (ReglistListSel > 5 || ReglistListSel < 9) { RegistMode = 12 + ReglistListSel; } iret = zmcaux.ZAux_Direct_Regist(g_handle, m_RegistAxis, RegistMode); timer2.Start(); //m_Regist_IfOpen 標志位變true 表示開啟了鎖存 //反轉按鈕的設置 m_Regist_IfOpen = true; //不允許修改鎖存軸軸號 //將啟動鎖存按鈕變成停止鎖存 ComboBox1.Enabled = false; Button1.Text = "停止鎖存"; } else { timer2.Stop(); m_Regist_IfOpen = false; ComboBox1.Enabled = true; Button1.Text = "啟動鎖存"; DataGridView2.Rows.Clear(); } }

四、XPCIE1032H的IO接口介紹

1.IO規(guī)格介紹

wKgaomWLyhOAAw_WAAHyQKJ8Pjg479.png

2.IO端子定義

wKgZomWLyh6ASiE1AADXlihqqRk609.png

3.端子定義表

wKgaomWLyiKAJa8eAARrHylustI761.png

下文內容中效果演示就是使用高速輸出口0實現PSO高速輸出,高速輸入口0實現鎖存輸入。

4.IO接線圖

wKgaomWLyi2AFpflAABx4gv6290078.png

五、效果演示

根據上面的開發(fā)流程操作后,編譯運行例程。同時連接ZDevelop軟件進行調試,對運動控制的軸參數和運動情況進行監(jiān)控。

如下圖設置:LOCAL連接上控制卡后,首先開啟PSO硬件位置比較輸出功能;

第一步:設置高速比較輸出口0,首個比較點的輸出狀態(tài)為1,設置比較軸為0。設置4個比較點,比較點坐標分別為:100,200,300,400。

第二步:開啟開啟編碼器鎖存功能:設置鎖存軸號為0,鎖存模式為3。

第三步:勾選運動軸號0并填上運動距離5000,最后將輸入口0和輸出口0接上。

即當軸運動到100,200,300,400時,都會觸發(fā)電平變化,并且會通過鎖存將鎖存的位置保存下來。

wKgaomWLykeAGRVWAABfC110u68755.png例程接線示意圖 wKgZomWLylyAT5YoAADGVf3f8kQ305.png參數設置示意圖

wKgaomWLymyABtmRAADJImqGfns409.png

效果演示示意圖

示波器波形如下圖所示:

wKgaomWLyoaAO5r4AADkSddocwA770.png

本次,正運動技術硬件位置比較輸出和編碼器鎖存:EtherCAT超高速實時運動控制卡XPCIE1032H上位機C#開發(fā)(六),就分享到這里。

完整代碼下載地址以及更多精彩內容請關注“正運動小助手”公眾號。

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

審核編輯 黃宇

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

    關注

    45

    文章

    3648

    瀏覽量

    134742
  • 運動控制
    +關注

    關注

    4

    文章

    584

    瀏覽量

    32899
  • 上位機
    +關注

    關注

    27

    文章

    944

    瀏覽量

    54880
  • 運動控制卡
    +關注

    關注

    7

    文章

    113

    瀏覽量

    15478
收藏 人收藏

    評論

    相關推薦

    EtherCAT運動控制卡XPCIE1032H上位開發(fā)(一):驅動安裝

    XPCIE1032H是一款基于PCI Express的EtherCAT總線運動控制卡,可選6-64軸運動
    的頭像 發(fā)表于 11-15 15:02 ?1090次閱讀
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>運動</b><b class='flag-5'>控制卡</b><b class='flag-5'>XPCIE1032H</b><b class='flag-5'>上位</b><b class='flag-5'>機</b><b class='flag-5'>開發(fā)</b>(一):驅動安裝

    單軸PSO視覺飛拍與精準輸出EtherCAT超高速實時運動控制卡XPCIE1032H上位C#開發(fā)(七)

    運動技術EtherCAT控制卡在VS平臺采用C#語言實現的各種PSO功能。
    的頭像 發(fā)表于 01-03 09:50 ?1060次閱讀
    單軸PSO視覺飛拍與精準<b class='flag-5'>輸出</b>:<b class='flag-5'>EtherCAT</b><b class='flag-5'>超高速</b><b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b><b class='flag-5'>XPCIE1032H</b><b class='flag-5'>上位</b><b class='flag-5'>機</b><b class='flag-5'>C#</b><b class='flag-5'>開發(fā)</b>(七)

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

    XPCIE1032H是一款基于PCI Express的EtherCAT總線運動控制卡,可選6-64軸運動
    的頭像 發(fā)表于 01-13 09:11 ?1346次閱讀
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>超高速</b><b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b><b class='flag-5'>XPCIE1032H</b><b class='flag-5'>上位</b><b class='flag-5'>機</b><b class='flag-5'>C#</b><b class='flag-5'>開發(fā)</b>(九)

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

    XPCIE1032H是一款基于PCI Express的EtherCAT總線運動控制卡,可選6-64軸運動
    的頭像 發(fā)表于 02-25 10:11 ?1003次閱讀
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>超高速</b><b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b><b class='flag-5'>XPCIE1032H</b><b class='flag-5'>上位</b><b class='flag-5'>機</b><b class='flag-5'>C#</b><b class='flag-5'>開發(fā)</b>(十三)

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

    XPCIE1032H是一款基于PCI Express的EtherCAT總線運動控制卡,可選6-64軸運動
    的頭像 發(fā)表于 03-04 10:46 ?4.1w次閱讀
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>超高速</b><b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b><b class='flag-5'>XPCIE1032H</b><b class='flag-5'>上位</b><b class='flag-5'>機</b><b class='flag-5'>C#</b><b class='flag-5'>開發(fā)</b>(十四)

    EtherCAT超高速實時運動控制卡XPCIE1032H上位C#開發(fā)(二):EtherCAT總線初始化

    上位運動控制卡
    正運動技術
    發(fā)布于 :2023年11月17日 09:08:19

    EtherCAT超高速實時運動控制卡XPCIE1032H上位C#開發(fā)(三):EtherCAT總線模式切換

    上位運動控制卡
    正運動技術
    發(fā)布于 :2023年11月23日 16:42:38

    PT/PVT運動模式介紹:EtherCAT超高速實時運動控制卡XPCIE1032H上位C#人工智能

    上位運動控制卡
    正運動技術
    發(fā)布于 :2024年01月25日 11:12:46

    XPCIE1032運動控制卡硬件手冊

    XPCIE1032 最多支持 16 軸運動控制,XPCIE1032H 最多支持 64 軸運動控制
    發(fā)表于 06-06 14:59 ?0次下載

    PCIE超高速實時運動控制卡面外觀視覺檢測上的應用

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

    XPCIE1028超高速實時運動控制卡簡介和應用案例

    XPCIE1028超高速實時運動控制卡面外觀檢測高速視覺篩選中的應用,結合正
    的頭像 發(fā)表于 08-28 15:17 ?1310次閱讀
    <b class='flag-5'>XPCIE</b>1028<b class='flag-5'>超高速</b><b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b>簡介和應用案例

    EtherCAT超高速實時運動控制卡XPCIE1032H上位C#開發(fā)(一):驅動安裝與建立連接

    超高速實時運動控制卡XPCIE1032H硬件介紹、交互原理以及指令說明。
    的頭像 發(fā)表于 11-10 14:00 ?794次閱讀
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>超高速</b><b class='flag-5'>實時運動</b><b class='flag-5'>控制卡</b><b class='flag-5'>XPCIE1032H</b><b class='flag-5'>上位</b><b class='flag-5'>機</b><b class='flag-5'>C#</b><b class='flag-5'>開發(fā)</b>(一):驅動安裝與建立連接

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

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

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

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