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

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

?XPCIE1032H運動控製卡與MotionRT7運動控製實時內核的配合具有以下優勢:

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

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

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

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

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



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

三、相關程序以及設計思路
本次設計操作步驟相應的流程圖如下:

本例程以運動控製卡XPLCIE1032H搭載MotionRT7實時內核,通過EthereCAT總線口接節點0(彙川驅動器-0軸),節點1(正運動擴展模塊EIO16084)1-4軸映射為總線軸為例:

注意: 在總線初始化basic程序,驅動器PDO不能設置為-1,因為該PDO列表不含數據字典6060,不支持驅動器回零。
關於pdo列表的配置詳細說明,可以查閱basic編程手冊,搜索DRIVE_PROFILE指令。

1、初始化程序執行後,通過ZAux_Direct_GetUserVar函數接口,可以讀取basic程序自定義的變量。
本節案例獲取的是總線初始化映射軸數量、總線初始化起始軸號和總線初始化完成狀態。下圖是事先編輯好的basic程序的自定義變量。

使用定時器將總線軸數量,總線起始軸號,初始化狀態等總線初始化信息進行獲取更新。
//讀取basic程序自定義變量--總線初始化的總軸數
zmcaux.ZAux_Direct_GetUserVar(g_handle, "Bus_TotalAxisnum", ref EcatAxisNum);
//讀取basic程序自定義變量--總線初始化的總線起始軸號
zmcaux.ZAux_Direct_GetUserVar(g_handle, "Bus_AxisStart", ref EcatStartAxisNum);
//讀取basic程序自定義變量--總線初始化的初始化狀態
zmcaux.ZAux_Direct_GetUserVar(g_handle, "Bus_InitStatus", ref EcatInitStatus)
2、使用RTsys軟件,點擊軟件菜單欄的幫助→Zbasic幫助→搜索,搜索DATUM指令,選擇回零模式並設置回零模式對應的參數。
假設回零模式選擇的是13,需要設置原點開關、限位開關、回零速度(SPEED)和爬行速度(CREEP)。
該模式進行回零時軸以SPEED速度正向運行, 碰到限位開關會反向查找原點。找到原點後以CREEP速度反向爬行,直到離開原點。

private void Controllers_DatumPara_Button_Click(object sender, EventArgs e)
{
if (g_handle == (IntPtr)0)
{
MessageBox.Show("未連接到控製器!", "提示");
}
else
{
//軸基本參數設置,控製器回零的速度是SPEED
AxisParaSet();
int[] ret = new int[7];
//設置回零爬行速度
ret[0] = zmcaux.ZAux_Direct_SetCreep(g_handle, MoveAxis, Convert.ToSingle(Datum_Creep_Value.Text));
//配置原點信號。ZMC係列默認OFF時信號有效,常開傳感器需要反轉輸入口為ON
ret[1] = zmcaux.ZAux_Direct_SetDatumIn(g_handle, MoveAxis, Convert.ToInt32(DatumIO_Value.Text));
ret[2] = zmcaux.ZAux_Direct_SetInvertIn(g_handle, Convert.ToInt32(DatumIO_Value.Text), 1);
//正硬限位IO設置
ret[3] = zmcaux.ZAux_Direct_SetFwdIn(g_handle, MoveAxis, Convert.ToInt32(FWD_IO_Value.Text));
ret[4] = zmcaux.ZAux_Direct_SetInvertIn(g_handle, Convert.ToInt32(FWD_IO_Value.Text), 1);
//負硬限位IO設置
ret[5] = zmcaux.ZAux_Direct_SetRevIn(g_handle, MoveAxis, Convert.ToInt32(REV_IO_Value.Text));
ret[6] = zmcaux.ZAux_Direct_SetInvertIn(g_handle, Convert.ToInt32(REV_IO_Value.Text), 1);
//設置控製器回零模式
Controllers_DatumMode = Convert.ToInt32(Controllers_DatumMode_Value.Text);
//定義臨時的變量記錄各個函數的返回值
int FinalRet = -1;
for(int i = 0; i < 7; ++i)
{
FinalRet *= ret[i];
}
if (FinalRet == 0) //說明所有函數的返回值都是0,回零等參數均設置成功
{
MessageBox.Show("控製器回零參數設置成功!", "提示");
}
else
{
MessageBox.Show("控製器回零參數設置失敗!", "提示");
}
}
}
3、使用ZAux_Direct_Single_Datum函數,函數語法如下:
語法: ZAux_Direct_Single_Datum(連接句柄,軸號,控製器回零模式)
選擇回零的軸號,模式以及設置完參數,確認參數按鈕然後點擊回零按鈕,此時軸以控製器回零參數進行回零。
private void Controllers_Datum_Button_Click(object sender, EventArgs e)
{
if (g_handle == (IntPtr)0)
{
MessageBox.Show("未連接到控製器!", "提示");
return;
}
int ret = -1;
//觸發示波器
zmcaux.ZAux_Trigger(g_handle);
//控製器回零
ret = zmcaux.ZAux_Direct_Single_Datum(g_handle, MoveAxis, Controllers_DatumMode);
if(ret != 0)
{
MessageBox.Show("控製器回零啟動失敗!", "提示");
}
else
{
MessageBox.Show("控製器回零啟動成功!", "提示");
}
}
4、查閱驅動器手冊→回零模式介紹,選擇驅動器支持的回零模式(數據字典6098),然後設置該回零模式的回零高速,回零低速等參數。
在本次例程選擇的是模式19,開始回零時 原點開關(HW)為0,以設置的回零高速Speed(50units/s)正向開始回零,遇到 原點開關(HW)為1後以回零低速Creep(20units/s)反向爬行, 直到原點開關(HW)為0時停機,回零完成。

private void Drivers_DatumPara_Button_Click(object sender, EventArgs e)
{
if (g_handle == (IntPtr)0)
{
MessageBox.Show("未連接到控製器!", "提示");
return;
}
int ret1, ret2, ret3;
//設置驅動器回零高速
ret1 = zmcaux.ZAux_Direct_SetSpeed(g_handle, MoveAxis, Convert.ToSingle(Datum_HighSpeed_Value.Text));
//設置驅動器回零低速
ret2 = zmcaux.ZAux_Direct_SetCreep(g_handle, MoveAxis, Convert.ToSingle(Datum_LowSpeed_Value.Text));
//設置驅動器回零偏移
ret3 = zmcaux.ZAux_BusCmd_SetDatumOffpos(g_handle, (uint)MoveAxis, Convert.ToSingle(Datum_OffSet_Value.Text));
//設置驅動器回零模式
Drivers_DatumMode = Convert.ToInt32(Drivers_DatumMode_Value.Text);
if (ret1 == 0 && ret2 == 0 && ret3 == 0)
{
MessageBox.Show("驅動器回零參數設置成功!", "提示");
}
else
{
MessageBox.Show("驅動器回零參數設置失敗!", "提示");
}
}
5、使用ZAux_BusCmd_Datum 函數,函數語法如下:
語法: ZAux_BusCmd_Datum(連接句柄,軸號,驅動器回零模式)
選擇回零的軸號,模式以及設置完參數,確認參數按鈕然後點擊回零按鈕,此時軸以驅動器回零參數進行回零。
private void Drivers_Datum_Button_Click(object sender, EventArgs e)
{
if (g_handle == (IntPtr)0)
{
MessageBox.Show("未連接到控製器!", "提示");
return;
}
int ret = -1;
//觸發示波器
zmcaux.ZAux_Trigger(g_handle);
//驅動器回零
ret = zmcaux.ZAux_BusCmd_Datum(g_handle, (uint)MoveAxis, (uint)Drivers_DatumMode);
if (ret != 0)
{
MessageBox.Show("驅動器回零啟動失敗!", "提示");
}
else
{
MessageBox.Show("驅動器回零啟動成功!", "提示");
}
}
四、運行效果
打開RTsys編程軟件,通過Local連接到控製器,同步上位機的軸等等參數。然後在工具欄→示波器界麵,打開示波器觀察波形。
選擇好數據源和編號,點擊啟動;在上位機界麵點擊回零按鈕,回到RTsys軟件點擊手動觸發,觀察對應回零模式的波形。

⊙控製器回零:以模式13(軸以SPEED速度正向運行,碰到限位開關會反向查找原點。找到原點後以Creep速度反向爬行,直到離開原點)為例,抓取的圖形如下。

⊙總線驅動器回零:查閱驅動器手冊,選擇驅動器支持的回零模式。
這裏以模式19為例,回零啟動時,原點信號為0,以回零高速(50units/s)正向回零運行;當原點信號為1時以回零低速Creep(20units/s)反向爬行;再次遇到下降沿將停機,回零完成。

EtherCAT驅動器與控製器回零例程演示。
完整代碼獲取地址
▼

本次,正運動技術EtherCAT驅動器回零與控製器回零 :EtherCAT超高速實時運動控製卡XPCIE1032H上位機C#開發(九),就分享到這裏。
更多精彩內容請關注“ 正運動小助手 ”公眾號,需要相關開發環境與例程代碼,請谘詢正運動技術銷售工程師:400-089-8936。
benwenyouzhengyundongjishuyuanchuang,huanyingdajiazhuanzai,gongtongxuexi,yiqitigaozhongguozhinengzhizaoshuiping。wenzhangbanquanguizhengyundongjishusuoyou,ruyouzhuanzaiqingzhumingwenzhanglaiyuan。
正運動技術專注於運動控製技術研究和通用運動控製軟硬件產品的研發,是國家級高新技術企業。正運動技術彙集了來自華為、中(zhong)興(xing)等(deng)公(gong)司(si)的(de)優(you)秀(xiu)人(ren)才(cai),在(zai)堅(jian)持(chi)自(zi)主(zhu)創(chuang)新(xin)的(de)同(tong)時(shi),積(ji)極(ji)聯(lian)合(he)各(ge)大(da)高(gao)校(xiao)協(xie)同(tong)運(yun)動(dong)控(kong)製(zhi)基(ji)礎(chu)技(ji)術(shu)的(de)研(yan)究(jiu),是(shi)國(guo)內(nei)工(gong)控(kong)領(ling)域(yu)發(fa)展(zhan)最(zui)快(kuai)的(de)企(qi)業(ye)之(zhi)一(yi),也(ye)是(shi)國(guo)內(nei)少(shao)有(you)、完整掌握運動控製核心技術和實時工控軟件平台技術的企業。 主要業務有:運動控製卡_運動控製器_EtherCAT運動控製卡_EtherCAT控製器_運動控製係統_視覺控製器__運動控製PLC_運動控製_機器人控製器_視覺定位_XPCIe/XPCI係列運動控製卡等等。

|