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

XPCIE1032H運動控制卡支持PWM,PSO功能,板載16進16出通用IO口,其中輸出口全部為高速輸出口,可配置為4路PWM輸出口或者16路高速PSO硬件比較輸出口。輸入口含有8路高速輸入口,可配置為4路高速色標鎖存或兩路編碼器輸入。
XPCIE1032H運動控制卡搭配MotionRT7運動控制實時內(nèi)核,使用本地LOCAL接口連接,通過高速的核內(nèi)交互,可以做到更快速的指令交互,單條指令與多條指令一次性交互時間可以達到3-5us左右。

?XPCIE1032H運動控制卡與MotionRT7運動控制實時內(nèi)核的配合具有以下優(yōu)勢:

1.支持多種上位機語言開發(fā),所有系列產(chǎn)品均可調(diào)用同一套API函數(shù)庫;
2.借助核內(nèi)交互,可以快速調(diào)用 運動指令,響應時間快至微秒級,比傳統(tǒng)PCI/PCIe快10倍;
3.解決傳統(tǒng)PCI/PCIe運動控制卡在Windows環(huán)境下控制系統(tǒng)的非實時性問題;
4.支持一維/二維/三維PSO(高速硬件位置比較輸出),適用于視覺飛拍、精密點膠和激光能量控制等應用;
5.提供高速輸入接口,便于實現(xiàn)位置鎖存;
6.支持EtherCAT總線和脈沖輸出混合聯(lián)動、混合插補。

?使用XPCIE1032H運動控制卡和MotionRT7運動控制實時內(nèi)核進行項目開發(fā)時,通常需要進行以下步驟:
1.安裝驅(qū)動程序,識別控制卡XPCIE1032H;
2.打開并執(zhí)行文件“MotionRT710.exe”,配置參數(shù)和運行運動控制實時內(nèi)核;
3.使用ZDevelop軟件連接到控制器,進行參數(shù)監(jiān)控。連接時請使用PCI/LOCAL方式,并確保ZDevelop軟件版本在3.10以上;
4.完成控制程序開發(fā),通過LOCAL鏈接方式連接到運動控制卡,實現(xiàn)實時運動控制。

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

我們可以從測試對比結(jié)果看出,XPCIE1032H運動控制卡配合實時運動控制內(nèi)核MotionRT7,在LOCAL鏈接(核內(nèi)交互)的方式下,指令交互的效率是非常穩(wěn)定,當測試數(shù)量從1w增加到10w時,單條指令交互時間與多條指令交互時間波動不大,非常適用于高速高精的應用。
XPCIE1032H控制卡安裝
XPCIE1032H驅(qū)動安裝與建立連接參考往期文章 EtherCAT超高速實時運動控制卡XPCIE1032H上位機C#開發(fā)(一):驅(qū)動安裝與建立連接 。
一、C#語言進行運動控制項目開發(fā)

二、相關(guān)PC函數(shù)指令介紹
相關(guān)PC函數(shù)介紹詳情可參考“ZMotion PC函數(shù)庫編程手冊 V2.1.1”。
1、硬件位置比較輸出函數(shù)介紹


2、鎖存相關(guān)指令介紹





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

三、相關(guān)程序及功能介紹
1.位置比較功能
(1)位置同步輸出PSO的原理與應用
PSO(position synchronized output)即位置同步輸出,本質(zhì)是通過采集實時的編碼器反饋位置(無編碼器可使用輸出的脈沖位置)與比較模式設定的位置進行比較,控制OP高速同步輸出信號,PSO示意圖如下。

PSO一般與激光器(或點膠噴射閥等設備)同步輸出信號進行相位同步,在運動軌跡的所有階段以恒定的空間(或恒定時間)間隔觸發(fā)輸出開關(guān),包括加速、減速和勻速段,從而實現(xiàn)脈沖能量均勻地作用在被加工物體上。
PSO功能的特點是能高速且穩(wěn)定的輸出信號,因為輸出精度足夠高,所以能夠在整個運動軌跡中以固定的距離觸發(fā)輸出信號而不用考慮總體速度,即在直線部分以很快的速度運動,而在圓角部分減速的同時也能保證輸出間距恒定。
通常圓角加工部分在整個加工過程中占有比較小的部分,這樣在保證加工效果的同時,就可以最大限度地提高產(chǎn)能。

正運動的PSO功能調(diào)用ZAux_Direct_HwPswitch2函數(shù)接口實現(xiàn),該函數(shù)采用硬件實現(xiàn)IO的高速比較輸出,響應速度達到微秒級別,故名硬件比較輸出。
(2)程序流程圖

(3)相關(guān)代碼示例
private void Button2_Click(object sender, EventArgs e) //運動按鈕
{
//更新界面參數(shù)
updata_value();
//判斷是否連接控制器
if (g_handle == (IntPtr)0)
{
MessageBox.Show("未鏈接到控制器!", "提示");
return;
}
int iret = 0;
AxisNum = 0;
//獲取軸個數(shù)
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;
//獲取運動的軸數(shù)組和運動距離
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);
//初始化運動參數(shù)
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); //關(guān)閉硬件定時器
//起點輸出口狀態(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ā)時鎖存的位置信息。
鎖存一般應用于包裝,印刷,點膠,視覺飛拍等。

(2)程序流程圖

(3)相關(guān)代碼示例
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 表示開啟了鎖存
//反轉(zhuǎn)按鈕的設置
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ī)格介紹

2.IO端子定義

3.端子定義表

下文內(nèi)容中效果演示就是使用高速輸出口0實現(xiàn)PSO高速輸出,高速輸入口0實現(xiàn)鎖存輸入。
4.IO接線圖

五、效果演示
根據(jù)上面的開發(fā)流程操作后,編譯運行例程。同時連接ZDevelop軟件進行調(diào)試,對運動控制的軸參數(shù)和運動情況進行監(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ā)電平變化,并且會通過鎖存將鎖存的位置保存下來。

例程接線示意圖

參數(shù)設置示意圖

效果演示示意圖
示波器波形如下圖所示:

硬件位置比較輸出和編碼器鎖存例程講解:
完整代碼獲取地址
▼

本次,正運動技術(shù)硬件位置比較輸出和編碼器鎖存:EtherCAT超高速實時運動控制卡XPCIE1032H上位機C#開發(fā)(六),就分享到這里。
更多精彩內(nèi)容請關(guān)注“ 正運動小助手 ”公眾號,需要相關(guān)開發(fā)環(huán)境與例程代碼,請咨詢正運動技術(shù)銷售工程師:400-089-8936。
本文由正運動技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學習,一起提高中國智能制造水平。文章版權(quán)歸正運動技術(shù)所有,如有轉(zhuǎn)載請注明文章來源。
正運動技術(shù)專注于運動控制技術(shù)研究和通用運動控制軟硬件產(chǎn)品的研發(fā),是國家級高新技術(shù)企業(yè)。正運動技術(shù)匯集了來自華為、中興等公司的優(yōu)秀人才,在堅持自主創(chuàng)新的同時,積極聯(lián)合各大高校協(xié)同運動控制基礎技術(shù)的研究,是國內(nèi)工控領域發(fā)展最快的企業(yè)之一,也是國內(nèi)少有、完整掌握運動控制核心技術(shù)和實時工控軟件平臺技術(shù)的企業(yè)。主要業(yè)務有:運動控制卡_運動控制器_EtherCAT運動控制卡_EtherCAT控制器_運動控制系統(tǒng)_視覺控制器__運動控制PLC_運動控制_機器人控制器_視覺定位_XPCIe/XPCI系列運動控制卡等等。

|