天天看點

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

作者:正運動技術

本文主要介紹正運動技術EtherCAT控制器在VS平台采用C++語言實作的各種PSO功能。正運動提供多種PSO模式供使用者搭配不同的場景使用。

本節主要講解采用TABLE寄存器存儲的資料表觸發比較,更多周期比較模式、二維三維比較模式參見下一節說明。

01 硬體介紹

ZMC408CE是正運動推出的一款多軸高性能EtherCAT總線運動控制器,具有EtherCAT、EtherNET、RS232、CAN和U盤等通訊接口,ZMC系列運動控制器可應用于各種需要脫機或聯機運作的場合。

ZMC408CE支援8軸運動控制,最多可擴充至32軸,支援直線插補、任意圓弧插補、空間圓弧、螺旋插補、電子凸輪、電子齒輪、同步跟随等功能。

ZMC408CE支援8軸運動控制,可采用脈沖軸(帶編碼器回報)或EtherCAT總線軸,通用IO包含24個輸入口和16個輸出口,部分IO為高速IO,EtherCAT最快100us的重新整理周期。

ZMC408CE支援8個通道的硬體比較輸出、硬體定時器、運動中精準輸出,還支援8通道PWM輸出,對應的輸出口為OUT0-7,支援8個通道同時觸發硬體比較輸出,用于多通道的視覺飛拍場合等。

ZMC408CE支援PLC、Basic、HMI組态三種程式設計方式。PC上位機API程式設計支援C#、C++、LabVIEW、Matlab、Qt、Linux、VB.Net、Python等接口。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

ZMC408CE内置高精度PSO位置同步輸出功能,在加工圓角與曲線時即使進行有減速調整,在高速加工的場合中也能控制雷射輸出的等間距輸出。

02 PSO技術介紹

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

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

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

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

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

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

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

03 MFC項目的開發

(一)建立MFC項目并添加函數庫

注:本例程在VS2010編譯環境下,基于.NET Framework 4.0架構建立的MFC窗體應用程式。

1.工具欄菜單“檔案”→“建立”→“項目”,啟動建立項目向導。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

2.選擇開發語言為“Visual C++”和.NET Framework 4以及MFC應用程式,填寫好程式名以及選擇好程式存放路徑,點選确定。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

3.點選下一步。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

4.選擇類型為“基于對話框”,點選下一步或者完成即可。

(二)找到廠家提供的C++函數庫檔案

1.進入廠商提供的CD光牒資料,找到“8.PC函數”檔案夾,并點選進入,找到C++函數庫,路徑如下(64位庫為例)。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

2.選擇“函數庫2.1”檔案夾。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

3.選擇“Windows平台”檔案夾。

4.根據需要選擇對應的函數庫,這裡選擇“64位庫”。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

5.解壓C++壓縮包,裡面有C++對應的函數庫。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

6.函數庫具體路徑如下。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

7.将廠商提供的C++庫檔案以及相關檔案複制到建立的項目中。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

(三)在項目中添加靜态庫和相關頭檔案

靜态庫:zauxdll.lib, zmotion.lib

相關頭檔案:zauxdll2.h, zmotion.h

1.先右擊頭檔案,接着依次選擇:“添加”→“現有項”。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

2.在彈出的視窗中依次添加靜态庫和相關頭檔案。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

3.聲明用到的頭檔案和定義控制器連接配接句柄。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO
運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

至此,項目建立完成。

(四)檢視PC函數手冊

使用者需要從PC函數手冊中擷取運動控制開發使用的函數接口,對照手冊說明使用,PC函數手冊在CD光牒資料檢視,具體路徑如下:“CD光牒資料\8.PC函數\函數庫2.1\ZMotion函數庫程式設計手冊V2.1.pdf”。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

(五)控制器網口連接配接函數接口

PC程式設計一般使用網口對控制器和工控機進行連結。ZAux_FastOpen();如果連結成功,該接口會傳回一個連結句柄。通過操作這個連結句柄可以實作對控制器的控制。

ZAux_OpenEth()接口說明:

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

項目應用截圖:

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

(六)硬體比較輸出函數接口

使用對下位機寄存器操作的指令操作連結句柄“g_handle”,對控制器進行寄存器内容取值,實時控制下位機相關的指令如下。

實時全局變量指令:ZAux_Direct_HwPswitch2硬體比較輸出指令到位置後硬體自動觸發op輸出信号。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

(七)硬體定時器函數接口

ZAux_Direct_HwTimer硬體定時器硬體比較輸出後一段時間還原電平。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

04 MFC程式的運作和讀寫控制開發

(一)Demo互動界面

Demo主要分為三個部分:

1.連結控制器,支援網口連接配接和序列槽連接配接。

2.配置基本軸參數。

3.配置硬體比較輸出,可選多種模式測試,部分模式需要先配置TABLE的比較點資料才能啟動。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

(二)常用模式例程功能與效果

1.單軸比較(模式1)

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

ZAux_Direct_HwPswitch2(ZMC_HANDLE handle,int Axisnum,int Mode, int Opnum,int Opstate,float ModePara1, float ModePara2,float ModePara3,float ModePara4).

(1)handle:控制器連接配接句柄;

(2)Axisnum:比較軸号;

(3)Mode:1-啟動比較器;

(4)Opnum:對應的輸出口;

(5)Opstate:第一個比較點的輸出狀态;

(6)ModePara1:第一個比較點絕對坐标所在TABLE寄存器編号;

(7)ModePara2:最後一個比較點絕對坐标所在TABLE寄存器編号;

(8)ModePara3:第一個點判斷方向,0坐标負向,1坐标正向,-1不使用方向;

(9)ModePara4:模式1裡面,該參數無意義,填0或其他任意值。

模式1主要功能為:在TABLE寄存器裡面設定好比較點,碰到設定好的單軸比較點之後,輸出口電平反轉。

該模式使用時需要指定高速輸出口,将首個比較點的輸出狀态、比較軸設定好之後,再設定比較點(即設定table寄存器,點數量等),最後設定比較點的運動方向,啟動比較。緊接着驅動軸運動即可。

如下圖所示,設定高速比較輸出口0,首個比較點的輸出狀态為1,設定比較軸為0。設定4個比較點,比較點坐标分别為:100,200,300,400。即當軸運動到100,200,300,400時,都會觸發電平變化。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

示波器波形如圖所示:由圖可得輸出口OP(0)在100,200,300,400時會發生電平變化。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

2.清除比較點(模式2)

ZAux_Direct_HwPswitch2(ZMC_HANDLE handle,int Axisnum,int Mode, int Opnum,int Opstate,float ModePara1, float ModePara2,float ModePara3,float ModePara4).

(1)handle:控制器連接配接句柄;

(2)Axisnum:比較軸号;

(3)Mode:2-清除比較緩沖區;

(4)Opnum:對應的輸出口;

(5)Opstate:模式2裡面,該參數無意義,填0;

(6)ModePara1:模式2裡面,該參數無意義,填0;

(7)ModePara2:模式2裡面,該參數無意義,填0;

(8)ModePara3:模式2裡面,該參數無意義,填0;

(9)ModePara4:模式2裡面,該參數無意義,填0。

使用前需要調用此模式,清除可能沒有比較完成的資料。使用過程中也可以發送此指令,停止比較。

3.矢量比較方式(模式3)

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

ZAux_Direct_HwPswitch2(ZMC_HANDLE handle,int Axisnum,int Mode, int Opnum,int Opstate,float ModePara1, float ModePara2,float ModePara3,float ModePara4).

(1)handle:控制器連接配接句柄;

(2)Axisnum:比較軸号;

(3)Mode:3-啟動比較器;

(4)Opnum:對應的輸出口;

(5)Opstate:第一個比較點的輸出狀态;

(6)ModePara1:第一個矢量距離比較點絕對坐标所在TABLE寄存器編号;

(7)ModePara2:最後一個矢量距離比較點絕對坐标所在TABLE寄存器編号;

(8)ModePara3:模式3裡面,該參數無意義,填0或其他任意值;

(9)ModePara4:模式3裡面,該參數無意義,填0或其他任意值。

模式3主要功能為:在TABLE寄存器裡面設定好比較點,碰到設定單軸矢量距離比較點之後,輸出口電平反轉。

該模式使用時需要指定高速輸出口,将首個比較點的輸出狀态、比較軸設定好之後,再設定比較點(即設定TABLE寄存器,點數量等),啟動比較。緊接着驅動軸運動即可。

如下圖所示,設定高速比較輸出口0,首個比較點的輸出狀态為1,設定比較軸為0。設定4個比較點,比較點坐标分别為:100,200,300,400。即當軸矢量距離運動到100,200,300,400時,都會觸發電平變化。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

示波器波形如圖所示:由圖可得輸出口OP(0)在100,200,300,400時會發生電平變化。

運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO

本次,正運動技術運動控制器PSO視覺飛拍與精準輸出的C++開發(一):單軸PSO,就分享到這裡。

更多精彩内容請關注“正運動小助手”公衆号,需要相關開發環境與例程代碼,請咨詢正運動技術銷售工程師。

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