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的測試數據結果對比:
?
平均值 | C++ LOCAL | C# LOCAL | 傳統PCI/PCIe卡接口交互 | PLC網口通訊交互 |
1w次單條讀取交互周期 | 4.70us | 5.3us | 64us | 500us-10ms |
10w次單條讀取交互周期 | 3.90us | 5.7us | 65us | 500us-10ms |
1w次多條讀取交互周期 | 6.20us | 8.85us | 472us | 500us-10ms |
10w次多條讀取交互周期 | 5.50us | 8.37us | 471us | 500us-10ms |
?
我們可以從測試對比結果看出,XPCIE1032H運動控制卡配合實時運動控制內核MotionRT7,在LOCAL鏈接(核內交互)的方式下,指令交互的效率是非常穩定,當測試數量從1w增加到10w時,單條指令交互時間與多條指令交互時間波動不大,非常適用于高速高精的應用。 XPCIE1032H控制卡安裝
關閉計算機電源。
打開計算機機箱,選擇一條空閑的XPCIE卡槽,用螺絲刀卸下相應的擋板條。
將運動控制卡插入該槽,擰緊擋板條上的固定螺絲。
XPCIE1032H驅動安裝與建立連接參考往期文章EtherCAT超高速實時運動控制卡XPCIE1032H上位機C#開發(一):驅動安裝與建立連接。
一、C#語言進行運動控制項目開發
庫文件下載地址:http://www.zmotion.com.cn/download_list_21.html
2.解壓下載的安裝包找到“ Zmcaux.cs ”,“ zauxdll.dll ”,“ zmotion.dll ”放入到項目文件中。 (1)“Zmcaux.cs”放在項目根目錄文件中,與bin目錄同級。
(2)“zauxdll.dll”,“zmotion.dll”放在bin → Debug。
3.用vs打開新建的項目文件,在右邊的解決方案資源管理器中點擊顯示所有,然后鼠標右鍵點擊zmcaux.cs文件,點擊包括在項目中。
4.雙擊Form1.cs里面的Form1,出現代碼編輯界面,在文件開頭寫入using cszmcaux,并聲明控制器句柄g_handle。
二、相關PC函數介紹
相關PC函數介紹詳情可參考“ZMotion PC函數庫編程手冊 V2.1.1”。
1、控制器網口連接函數接口
?
指令1 | ZAux_FastOpen | ||||||||
指令原型 | int32 ?__stdcall ?ZAux_FastOpen(int type, char *pconnectstring, uint32 uims ,ZMC_HANDLE * phandle) | ||||||||
指令說明 | 與控制器建立連接, 可以指定連接的等待時間 | ||||||||
輸入參數 |
|
||||||||
輸出參數 |
|
||||||||
返回值 | 成功返回值為0,非0詳見錯誤碼說明。 | ||||||||
指令示例 |
串口連接: ZMC_HANDLE phandle;//控制器連接句柄 Char comID[32]= "0";//串口ID ZAux_FastOpen(1, comID,1000?,&phandle); 網口連接例子: ZMC_HANDLE phandle;//控制器連接句柄 Char EthID[32]= "192.168.0.11";//網口ID ZAux_FastOpen(2, EthID,1000 ,&phandle); LOCAL接口連接例子: ZMC_HANDLE phandle://控制器連接句柄 ZAux_FastOpen(ZMC_CONNECTION_LOCAL,"LOCAL1",3000,&phandle): |
?
2、硬件比較輸出函數接口
?
指令19 | ZAux_Direct_HwPswitch2 | ||||||||||||||||||||
指令原型 | int32 ?__stdcall ?ZAux_Direct_HwPswitch2(ZMC_HANDLE handle,int ?Axisnum,int ?Mode, int ?Opnum, int ?Opstate, float ModeParal, float ModePara2, float ?Mode ?Para3 , float ?ModePara4) | ||||||||||||||||||||
指令說明 |
硬件位置比較輸出2,4系列產品20170513以上版本支持。 ZMC306E/306N支持。 |
||||||||||||||||||||
輸入參數 |
|
||||||||||||||||||||
輸出參數 | / | ||||||||||||||||||||
返回值 | 成功返回值為0,非0詳見錯誤碼說明。 | ||||||||||||||||||||
指令示例 | / | ||||||||||||||||||||
詳細說明 |
(1)4系列產品有4個比較輸出口,可以選擇不同的比較輸出口,一般為OUT0/1/2/3口。 (2)比較主軸帶編碼器輸入時,自動使用編碼器位置來觸發,可以使用MOVEOP_DELAY參數來調整輸出準確時刻。 (3)不同的總線驅動器效果可能有差異,也可以通過MOVEOP_DELAY參數來調整。 (4)HW_PSWITCH2與MOVE_OP精準使用同樣的硬件資源,不建議在同一個通道同時使用,可以在不同的通道同時使用。 (5)每個系統周期內只能比較一次,系統周期通過SERVO_PERIOD查詢。 (6)TABLE位置數據在所有比較點完成前不要修改。 (7)脈沖軸和總線軸均支持此指令。 (8)使用脈沖型電機時只有ATYPE為4時才是比較反饋位置(MPOS),默認出廠的ATYPE為1或7比較的是命令位置(DPOS)。 |
?
3、硬件定時器函數接口
?
指令21 | ZAux_Direct_HwTimer | ||||||||||||||||
指令原型 | int32 __stdcall ZAux_Direct_HwTimer(ZMC_HANDLE handle,int mode, int cyclonetime, int ?optime, int ?reptimes, int ?opstate, int ?opnum) | ||||||||||||||||
指令說明 | 硬件定時器用于硬件比較輸出后一段時見還原電平-4系列產品支持 | ||||||||||||||||
輸入參數 |
|
||||||||||||||||
輸出參數 | / | ||||||||||||||||
返回值 | 成功返回值為0,非0詳見錯誤碼說明。 | ||||||||||||||||
指令示例 |
//周期調整為2,輸出兩次 ZAux_Trigger(g_handle); ZAux_Direct_SetOp(g_handle, 0, 0); ZAux_Direct_HwTimer(g_handle, 2, 1000000, 500000, 2, 0, 0);//輸出口0變為on后,硬件定時器觸發開始計時,500ms后切換為off ZAux_Direct_SetOp(g_handle, 0, 1); |
||||||||||||||||
詳細說明 |
(1)HW_TIMER只有1個,每次調用會強制停止之前的調用。 (2)ZMC420SCAN每個輸出口的HW_TIMER功能獨立。 (3)ZMC3系列部分、4系列及以上產品支持此功能。 (4)OP和MOVE_OP操作會關閉正在進行的HW_TIMER脈沖,這樣可以使用HW_TIMER來實現類似PWM的功能,OP輸出打開脈沖輸出,下一個OP輸出關閉脈沖輸出,當使用MOVE_OP精準輸出時,可以實現精準的PWM輸出無限脈沖功能。 |
?
在form設計界面找到需要用到的控件拖拽到窗體中進行UI界面設計,效果如下。
三、位置同步輸出PSO介紹
PSO(position synchronized output)即位置同步輸出,本質是通過采集實時的編碼器反饋位置(無編碼器可使用輸出的脈沖位置)與比較模式設定的位置進行比較,控制OP高速同步輸出信號,PSO示意圖如下。
PSO一般與激光器(或點膠噴射閥等設備)同步輸出信號進行相位同步,在運動軌跡的所有階段以恒定的空間(或恒定時間)間隔觸發輸出開關,包括加速、減速和勻速段,從而實現脈沖能量均勻地作用在被加工物體上。
PSO功能的特點是能高速且穩定的輸出信號,因為輸出精度足夠高,所以能夠在整個運動軌跡中以固定的距離觸發輸出信號而不用考慮總體速度,即在直線部分以很快的速度運動,而在圓角部分減速的同時也能保證輸出間距恒定。
通常圓角加工部分在整個加工過程中占有比較小的部分,這樣在保證加工效果的同時,就可以最大限度地提高產能。
正運動的PSO功能調用ZAux_Direct_HwPswitch2函數接口實現,該函數采用硬件實現IO的高速比較輸出,故名硬件比較輸出。
四、位置同步輸出PSO模式介紹 單軸PSO參考往期文章單軸PSO視覺飛拍與精準輸出:EtherCAT超高速實時運動控制卡XPCIE1032H上位機C#開發(七)。
1、2D比較 --?模式25
⊙該模式主要功能為:碰到設置好的二維比較點之后,輸出口電平反轉。
該模式使用時需要指定高速輸出口,設置好首個比較點的輸出狀態、比較軸和比較點(即設置table寄存器,點數量等),設置比較點的脈沖最大誤差等參數后,啟動比較。緊接著驅動軸運動即可。
如下圖設置:設置高速比較輸出口0,首個比較點的輸出狀態為1,設置比較軸為0,1。設置兩個比較點,比較點坐標分別為:(100,50),(160,80)。即當軸運動到點(100,50),點(160,80)。誤差范圍在±50個脈沖左右的范圍時,都會觸發電平變化。
示波器波形如圖所示:在坐標(100,50)的時候輸出為1,直到坐標(160,80)的時候恢復為0。
2、2D比較 -- 模式26
⊙該模式主要功能為:碰到設置好的二維比較點之后,輸出口輸出一斷設置好的定時脈沖。 該模式使用時,需要指定高速輸出口,設置好首個比較點的輸出狀態,設置比較軸,在設置比較點(即設置table寄存器,點數量等),設置好比較點之后在設置脈沖的有效時間,脈沖周期時間,以及脈沖個數(重復次數),設置比較點的脈沖最大誤差等參數后,啟動比較。緊接著驅動軸運動即可。
如下圖設置:設置高速比較輸出口0,首個比較點的輸出狀態為1,設置比較軸為0,1。設置兩個比較點,比較點坐標分別為:(100,100),(200,200)。即當軸運動到點(100,100),點(200,200)。誤差范圍在±10個脈沖左右的范圍時,都會觸發兩個周期為60ms,脈沖有效時間為20ms的脈沖。
示波器波形如圖所示:在坐標(100,100),坐標(200,200)的時候都會觸發兩個周期為60ms,脈沖有效時間為20ms的脈沖。
3、3D比較 -- 模式35
該模式主要功能為:碰到設置好的三維比較點之后,輸出口電平反轉。 該模式使用時需要指定高速輸出口,設置好首個比較點的輸出狀態,設置比較軸,在設置比較點(即設置table寄存器,點數量等),設置比較點的脈沖最大誤差等參數后,啟動比較。緊接著驅動軸運動即可。
如下圖設置:設置高速比較輸出口0,首個比較點的輸出狀態為1,設置比較軸為0,1,2。設置4個比較點,比較點坐標分別為:(80,40,20),(160,80,40),(240,120,60),(320,160,80)。即當軸運動到點(80,40,20),(160,80,40),(240,120,60),(320,160,80)。誤差范圍在±10個脈沖左右的范圍時,都會觸發電平變化。
示波器波形如圖所示:在坐標點(80,40,20),(160,80,40),(240,120,60),(320,160,80)時會發生電平變化。
4、3D比較 -- 模式36
該模式主要功能為:碰到設置三維比較點之后,輸出口輸出一斷設置好的定時脈沖。 該模式使用時,需要指定高速輸出口,設置好首個比較點的輸出狀態,設置比較軸,在設置比較點(即設置table寄存器,點數量等),設置好比較點之后在設置脈沖的有效時間,脈沖周期時間,以及脈沖個數(重復次數),設置比較點的脈沖最大誤差等參數后,啟動比較。緊接著驅動軸運動即可。
如下圖設置:設置高速比較輸出口0,首個比較點的輸出狀態為1,設置比較軸為0,1,2。設置4個比較點,比較點坐標分別為:(80,40,20),(160,80,40),(240,120,60),(320,160,80)。即當軸運動到點(80,40,20),(160,80,40),(240,120,60),(320,160,80)。誤差范圍在±10個脈沖左右的范圍時,都會觸發兩個周期為60ms,脈沖有效時間為20ms的脈沖。
示波器波形如圖所示:在坐標點(80,40,20),(160,80,40),(240,120,60),(320,160,80)的時候都會觸發兩個周期為60ms,脈沖有效時間為20ms的脈沖。
核心功能代碼:PSO/2D/3D核心程序。
?
int?ZAux_Direct_HwPswitch2_2D() { string cmdbuff=""; ????string?tempbuff?=?"";? StringBuilder cmdbuffAck = new StringBuilder(); ????//生成命令??? switch (PsoMode) { case 7: tempbuff = String.Format("HW_PSWITCH2({0},{1},{2},{3},{4},{5},{6},{7})", PsoMode, ModePara1, ModePara2, ModePara3, ModePara4, ModePara5, ModePara6, ModePara7); break; case 25: tempbuff = String.Format("HW_PSWITCH2({0},{1},{2},{3},{4},{5})", PsoMode, ModePara1, ModePara2, ModePara3, ModePara4, ModePara5); break; case 26: tempbuff = String.Format("HW_PSWITCH2({0},{1},{2},{3},{4},{5},{6},{7},{8})", PsoMode, ModePara1, ModePara2, ModePara3, ModePara4, ModePara5, ModePara6, ModePara7, ModePara8); break; case 35: tempbuff = String.Format("HW_PSWITCH2({0},{1},{2},{3},{4},{5})", PsoMode, ModePara1, ModePara2, ModePara3, ModePara4, ModePara5); break; case 36: tempbuff = String.Format("HW_PSWITCH2({0},{1},{2},{3},{4},{5},{6},{7},{8})", PsoMode, ModePara1, ModePara2, ModePara3, ModePara4, ModePara5, ModePara6, ModePara7, ModePara8); ????????????break; } //調用命令執行函數 ????int?ret?=?zmcaux.ZAux_Execute(g_handle,?tempbuff,?cmdbuffAck,?2048); if (cmdbuffAck.Length != 0) ????????MessageBox.Show(cmdbuff,?"提示"); return ret; }
?
?
本次,正運動技術二維/三維的多軸PSO視覺飛拍與精準輸出:EtherCAT超高速實時運動控制卡XPCIE1032H上位機C#開發(八),就分享到這里。
審核編輯:黃飛
?
評論
查看更多