ZMC408SCAN是正運動技術(shù)新推出的一款支持EtherCAT總線的開放式激光振鏡運動控制器,專為工業(yè)激光+振鏡+運動控制方面的應用而設(shè)計。通過EtherCAT總線和脈沖軸接口能實現(xiàn)多軸聯(lián)動運動控制。
ZMC408SCAN支持ETHERNET、EtherCAT、USB、CAN、RS485、RS232等通訊接口,通過CAN、EtherCAT總線可以連接各個擴展模塊,從而擴展數(shù)字量、模擬量或運動軸。
(1)ZMC408SCAN內(nèi)置高精度PSO位置同步輸出功能,在加工圓角、曲線部分時即使進行了減速調(diào)整,在高速加工的場合,也能控制激光輸出的間距保持恒定;
(2)支持激光振鏡控制和振鏡反饋,包含2個振鏡接口,支持2D振鏡和3D振鏡,配合不帶加減速的運動指令MOVESCAN,拐角處振鏡加工自動延時,完成精準高效的激光控制,提高激光加工設(shè)備的產(chǎn)能;
(3)通過指令在運動中靈活的調(diào)節(jié)激光開光/關(guān)光延時,響應快,精確到us級別的控制,且設(shè)置過程簡單,大大縮短了工程師的調(diào)參時間;
(4)自帶LASER激光器控制接口,支持IPG、YLR、YLS等類型激光電源,還帶一個EXIO擴展IO接口,通過定制轉(zhuǎn)接板,靈活控制市場上主流的各種激光器;
(5)支持PC同時控制16個ZMC408SCAN控制器同時工作,形成一種振鏡陣列的激光加工;
(6)板載4路高速差分脈沖輸出,并帶4路高速差分編碼器反饋,支持EtherCAT總線驅(qū)動器的控制,支持5軸XYZAC軸的插補,支持振鏡軸與運動軸混合插補;
(7)支持直線插補、任意圓弧插補、空間圓弧、螺旋插補、電子凸輪、電子齒輪、同步跟隨、虛擬軸設(shè)置等多種運動控制功能。
02振鏡控制
激光振鏡是一種專門用于激光加工領(lǐng)域的特殊的運動器件,它靠兩個振鏡片反射激光, 形成XY平面的運動。
激光振鏡不同于一般的電機,激光振鏡具有非常小的慣量,且在運動的過程中負載非常小,系統(tǒng)的響應非???,因此在振鏡運動中可以不用考慮振鏡加減速。 振鏡一般分模擬振鏡與數(shù)字振鏡,模擬振鏡就是振鏡驅(qū)動板是接收模擬信號方式,常用的模擬振鏡信號是直流電壓-5伏到+5伏變化的信號,對應的是電機擺動的角度,比如-5V到+5V對應-10度到+10度的電機擺動角度。
數(shù)字振鏡采用數(shù)字信號進行控制,數(shù)字信號則符合XY2-100協(xié)議。數(shù)字量-32768~32767對應電機的最大擺動角度。
正運動針對振鏡軸控制提供來一種專用的運動指令,通過ZAux_Direct_MoveScanAbs或者ZAux_Direct_MoveScan實現(xiàn)振鏡的快速響應。
Scan運動指令相比普通運動指令控制不帶加減速規(guī)劃,支持us級別的時間控制。通過ZAux_Direct_SetForceSpeed設(shè)置的速度與矢量距離直接計算出運行時間。
目前正運動SCAN控制器支持1-2路XY2-100數(shù)字振鏡軸的控制。
指令 | 說明 |
ZAux_Direct_SetAtype | 設(shè)軸類型 |
ZAux_Direct_SetUnits | 設(shè)置軸脈沖當量 |
ZAux_Direct_SetMegre | 設(shè)置軸連續(xù)插補開關(guān) |
ZAux_Direct_SetForceSpeed | 設(shè)置振鏡軸SCAN運動速度 不帶加減速 |
ZAux_Direct_MoveScan | 振鏡軸直線插補相對運動 |
ZAux_Direct_MoveScanAbs | 振鏡軸直線插補絕對運動 |
ZAux_Direct_MoveAddax | 插補運動中設(shè)置運動疊加 |
ZAux_Direct_GetDpos | 讀取軸命令規(guī)劃位置 |
ZAux_Direct_GetMpos | 讀取軸實際反饋位置 |
ZAux_Direct_GetEncoder | 讀取振鏡軸原始位置數(shù)據(jù) |
ZAux_Direct_GetAxisstatus | 讀取振鏡軸狀態(tài) |
ZAux_Direct_StepRatio | 設(shè)置振鏡軸方向 |
ZAux_Direct_MoveSync | 同步跟隨運動 |
一、振鏡軸配置
正運動SCAN控制器支持1-2路振鏡軸,不同控制器映射的軸號及支持的振鏡軸功能不同,不同振鏡組對應軸號如下圖。
通過指令ZAux_Direct_SetAtype設(shè)置對應振鏡軸類型,振鏡軸類型分為三種:
一種軸類型值為20(振鏡類型,帶振鏡狀態(tài)反饋,僅ZMC408SCAN支持);
一種軸類型值為21(振鏡軸控制類型);
一種軸類型值為22(振鏡類型,帶振鏡位置反饋,僅ZMC408SCAN支持)。
*表示不支持的功能。
控制器型號 | SCAN0 | SCAN1 | ||||
X軸 | Y軸 | Z軸(3D特殊固件) | X軸 | Y軸 | Z軸(3D特殊固件) | |
ZMC408SCAN | 4 | 5 | 8 | 6 | 7 | 9 |
ZMC420SCAN | 4 | 5 | * | 6 | 7 | * |
VPLC504SCAN | 4 | 5 | * | * | * | * |
二、振鏡矯正
1.重點說明
激光振鏡掃描系統(tǒng)如下圖所示,可見振鏡掃描的實際工作范圍由振鏡的最大偏轉(zhuǎn)角度與工作高度決定。因此振鏡軸偏轉(zhuǎn)角度對應輸出-32768~32767與實際工作范圍做單位映射時需要按照根據(jù)測試長度做比例映射。
振鏡掃描系統(tǒng)建立的坐標系是一個非正交的坐標系,實際的掃描場會造成枕型失真。由于振鏡本身掃描造成的枕型失真如圖(左),另外由于F-Theta平面場鏡的使用,會造成輸出輪廓的桶型失真如圖(中),疊加以后輸出的圖形具有桶型和枕型雙重失真如圖(右)。
為了使軟件坐標與實際運行距離場地對應及輸出軌跡不失真,則需要需要實時的對每一個數(shù)據(jù)點進行校正,通常采用查找表分段線性插值的方法進行位置校正,校正點越多實際輸出位置越精準。
正運動SCAN控制器提供了BOX校正、多點校正等方法,不管是系數(shù)校正還是多點校正,校正點參數(shù)都是寫到控制器內(nèi)部系統(tǒng)數(shù)組TABLE寄存器的。因此在程序中有其他功能應用到TABLE寄存器時需要注意地址的合理分配。
(1)Box系數(shù)校正
系數(shù)校正指的是根據(jù)振鏡輸出圖形枕/桶形失真、平行四邊形失真、梯形失真、比例縮放幾種情況進行系數(shù)調(diào)整校正。
通過調(diào)用ZScan_CorrectFactor進行系數(shù)校正。先控制振鏡繪制出一個正方形校正圖形,根據(jù)校正圖形的失真按下圖情況調(diào)整對應的系數(shù)參數(shù),根據(jù)標刻長度與測量長度調(diào)整縮放系數(shù),直到實際標刻的尺寸與設(shè)置一致時認為校正成功,校正系以是填寫的變化量,通常以0值為參考基準變化。
(2)9點校正
9點校正指的是根據(jù)在工作范圍內(nèi)標刻3*3的表格,根據(jù)每個點的理論位置與實際位置來進行振鏡校正。
先控制振鏡預繪制出一個3*3校正表格圖形,按下圖所示P1-P9的順序填入X坐標與Y坐標實際測量值,填入P1點的理論標刻與P9點的理論坐標,通過調(diào)用ZScan_Correct9進行9點校正。需重新標刻測試,直到實際標刻與理論值達到預期精度范圍。
(3)25點校正
25點校正指的是根據(jù)在工作范圍內(nèi)標刻5*5的表格,校正過程與9點校正相同,通過調(diào)用ZScan_Correct25進行25點校正。校正點數(shù)越多校正精度也越高。
2.振鏡指令介紹
指令 | 說明 |
ZScan_Correct9 | 振鏡9點校正 |
ZScan_Correct25 | 振鏡25點校正 |
ZScan_CorrectFactor | 振鏡系數(shù)校正 |
ZScan_CancelCorrect | 取消振鏡校正 |
(1)振鏡軸9點矯正
指令20 | ZScan_Correct9 | ||||||||||||||||||||||||||||
指令原型 | int32 __stdcall ZScan_Correct9(ZMC_HANDLE handle, int nScanNum, double *pdXMeasurePt, double *pdYMeasurePt, int nScanExChange, int nRowColPtNum, double dUnits, double dTheoryLeft, double dTheoryBottom, double dTheoryRight, double dTheoryTop, double dScaleRatio, int nTableStart); | ||||||||||||||||||||||||||||
指令說明 | 振鏡軸9點校正 | ||||||||||||||||||||||||||||
輸入?yún)?shù) |
|
||||||||||||||||||||||||||||
輸出參數(shù) | / | ||||||||||||||||||||||||||||
返回值 |
成功返回值為0 50-控制器鏈接錯誤 51-校正點太少 52-校正點數(shù)不正確 53-校正失敗 |
||||||||||||||||||||||||||||
指令示例 | 參見“振鏡控制功能”章節(jié)。 | ||||||||||||||||||||||||||||
詳細說明 | / |
(2)振鏡軸25點矯正
指令21 | ZScan_Correct25 | ||||||||||||||||||||||||||||
指令原型 | int32 __stdcall ZScan_Correct25(ZMC_HANDLE handle, int nScanNum, double *pdXMeasurePt, double *pdYMeasurePt, int nScanExChange, int nRowColPtNum, double dUnits, double dTheoryLeft, double dTheoryBottom, double dTheoryRight, double dTheoryTop, double dScaleRatio, int nTableStart); | ||||||||||||||||||||||||||||
指令說明 | 振鏡軸25點校正 | ||||||||||||||||||||||||||||
輸入?yún)?shù) |
|
||||||||||||||||||||||||||||
輸出參數(shù) | / | ||||||||||||||||||||||||||||
返回值 |
成功返回值為0 50-控制器鏈接錯誤 51-校正點太少 52-校正點數(shù)不正確 53-校正失敗 |
||||||||||||||||||||||||||||
指令示例 | 參見“振鏡控制功能”章節(jié)。 | ||||||||||||||||||||||||||||
詳細說明 | / |
(3)振鏡軸系數(shù)矯正
指令22 | ZScan_CorrectFactor | ||||||||||||||||||||||||||||||||
指令原型 | int32 __stdcall ZScan_CorrectFactor(ZMC_HANDLE handle, int nScanNum, double dMaxBoxX, double dMaxBoxY, double dCorrectBoxX, double dCorrectBoxY, double dOffsetX, double dOffsetY, double *pdFactorX, double *pdFactorY, int nScanExChange, int nRowColPtNum, double dUnits, double dScaleRatio, int nTableStart); | ||||||||||||||||||||||||||||||||
指令說明 | 振鏡軸系數(shù)校正 | ||||||||||||||||||||||||||||||||
輸入?yún)?shù) |
|
||||||||||||||||||||||||||||||||
輸出參數(shù) | / | ||||||||||||||||||||||||||||||||
返回值 |
成功返回值為0 50-控制器鏈接錯誤 51-校正點太少 52-校正點數(shù)不正確 53-校正失敗 |
||||||||||||||||||||||||||||||||
指令示例 | 參見“振鏡控制功能”章節(jié)。 | ||||||||||||||||||||||||||||||||
詳細說明 | / |
(4)取消振鏡矯正
指令23 | ZScan_CancelCorrect | ||||||||||||||
指令原型 | int32 __stdcall ZScan_CancelCorrect(ZMC_HANDLE handle, int nScanNum, int nScanExChange, double dUnits, double dScaleRatio, int nTableStart); | ||||||||||||||
指令說明 | 取消振鏡校正 | ||||||||||||||
輸入?yún)?shù) |
|
||||||||||||||
輸出參數(shù) | / | ||||||||||||||
返回值 |
成功返回值為0 50-控制器鏈接錯誤 51-校正點太少 52-校正點數(shù)不正確 53-校正失敗 |
||||||||||||||
指令示例 | 參見“振鏡控制功能”章節(jié)。 | ||||||||||||||
詳細說明 | / |
03程序展示
九點矯正與25點矯正過程相同,但25點矯正精度更高,可通過九點矯正例程改寫25點矯正。
1.九點矯正程序如下
ZMC_HANDLE handle = NULL; //連接句柄 int rtn = ZAux_OpenEth("192.168.0.11", &handle); //連接控制器 if(CheckError(rtn,"ZAux_OpenEth"))return;//檢查函數(shù)返回 for(int iAxis = 4;iAxis<6;iAxis++) { ????rtn?=?ZAux_Direct_SetAtype(handle,iAxis,21);?//設(shè)置軸為振鏡軸 ????if(CheckError(rtn,"ZAux_Direct_SetAtype"))?return; ????rtn?=?ZAux_Direct_SetUnits(handle,iAxis,500);???//設(shè)置軸脈沖當量 ????if(CheckError(rtn,"ZAux_Direct_SetUnits"))?return; } rtn?=?ZScan_CancelCorrect(handle,0,-1,-1,200,1,1000);??//取消振鏡校正if(CheckError(rtn,"ZScan_CancelCorrect"))?return; double m_dXMeasurePt[9] = {-51.5,0,49.5,-52.9,0,50.1,-51.8,0,49.0}; double?m_dYMeasurePt[9]?=?{-51.5,-51.0,-53.0,0,0,0,51.9,51.5,53.9}; rtn = ZScan_Correct9(handle,0,m_dXMeasurePt,m_dYMeasurePt,0,21,500,-50,-50,50,50,1,1000); //振鏡0 9點校正,校正數(shù)據(jù)存儲在系統(tǒng)數(shù)組TABLE(1000 - 1004+21*21*2) if(CheckError(rtn,"ZScan_CorrectFactor")) return; rtn = ZAux_Close( handle); //關(guān)閉連接,釋放句柄 if(CheckError(rtn,"ZAux_Close")) return; handle = NULL;2.系數(shù)矯正例程如下ZMC_HANDLE handle = NULL; //連接句柄 int rtn = ZAux_OpenEth("192.168.0.11", &handle); //連接控制器 if(CheckError(rtn,"ZAux_OpenEth")) return; //檢查函數(shù)返回 for(int iAxis = 4;iAxis<6;iAxis++) { rtn = ZAux_Direct_SetAtype(handle,iAxis,21); //設(shè)置軸為振鏡軸 if(CheckError(rtn,"ZAux_Direct_SetAtype")) return; rtn = ZAux_Direct_SetUnits(handle,iAxis,500); //設(shè)置軸脈沖當量 if(CheckError(rtn,"ZAux_Direct_SetUnits")) return; } rtn = ZScan_CancelCorrect(handle,0,-1,-1,200,1,1000); //取消振鏡校正if(CheckError(rtn,"ZScan_CancelCorrect")) return; double m_dMaxBox[2] = {131,131}; //最大校正區(qū)域 double m_dCorrectBox[] = {131,131}; //實際校正區(qū)域 double m_dOffset[2] = {0,0}; //偏移量 一般用于紅光偏移 double m_pdFactor[2][4] = {{1,0,0,0},{1,0,0,0}}; //校正系數(shù) 縮放系數(shù)、桶型/枕型畸變系數(shù)、平行四邊形畸變系數(shù)、梯形畸變系數(shù) rtn?=?ZScan_CorrectFactor(handle,0,m_dMaxBox[0],m_dMaxBox[1],m_dCorrectBox[0],m_dCorrectBox[1],m_dOffset[0],m_dOffset[1],&m_pdFactor[0][0],&m_pdFactor[1][0],0,21,1,1,500,1,1000);?//振鏡0系數(shù)校正,校正數(shù)據(jù)存儲在系統(tǒng)數(shù)組TABLE(1000?-?1004+21*21*2) if(CheckError(rtn,"ZScan_CorrectFactor")) return; rtn = ZAux_Close( handle); //關(guān)閉連接,釋放句柄 if(CheckError(rtn,"ZAux_Close")) return; handle = NULL;
04振鏡矯正工具 振鏡矯正工具包含了多種矯正方式,9點矯正、25點矯正、系數(shù)矯正、多點矯正、文件矯正。
參數(shù)設(shè)置界面機械參數(shù):先通過IP地址選擇,連上對應控制器,然后設(shè)置機械參數(shù)選擇激光器類型,設(shè)置好振鏡號,將標刻圖形的XY方向與軟件顯示的一致。
打標參數(shù):
從上至下依次填寫標刻速度、空移速度、軸類型、脈沖當量(運動指令與速度指令的基本單位,需要修改脈沖當量為振鏡運動1mm的脈沖個數(shù),修改過后標刻圖形相較于預定尺寸相差較小就能開始測量矯正了,預校正標刻圖形不完整或圖形比預定尺寸大很多時,將此參數(shù)調(diào)??;反之則將參數(shù)調(diào)大)。
例如:
開關(guān)延時:多點矯正圓中心的點深,調(diào)開關(guān)延時
關(guān)光延時:最外圈不封口的情況調(diào)關(guān)光延時
拐角延時:右邊的線深,調(diào)拐角延時
跳轉(zhuǎn)延時:多點矯正圓點有小尾巴,調(diào)跳轉(zhuǎn)延時
結(jié)束延時:所有的運動結(jié)束后都加結(jié)束延時
激光能量控制:
(1)模擬量DA(0~4095對應0~10V電壓)
(2)PWM(調(diào)機占空比,設(shè)置頻率)
(3)IO組合 注:激光能量的控制參數(shù),需要根據(jù)激光器能量功率的控制類型來進行修改,需參考激光器手冊。
1.9點矯正和25點矯正
設(shè)置矯正參數(shù)的table起始位置:這個地址不要與其他table地址位置沖突,約使用1000個數(shù)據(jù),占用1000個table地址;
紅光游覽:可用來矯正圖形;
預標刻尺寸:面積,標刻預校正圖形使用此參數(shù);
預標刻出圖形后將標刻圖形取出測量:測量兩點之間的距離,將兩點之間的距離參數(shù)填入對應的框內(nèi);
標刻預矯正:根據(jù)參數(shù)設(shè)置和預標刻尺寸開始標刻預矯正圖形;
僅矯正按鈕:只進行振鏡矯正,不標刻;
標刻尺寸:面積,標刻預矯正圖形使用此參數(shù);
矯正并標刻:根據(jù)標刻尺寸,開始矯正并標刻圖形;
保存到文件和保存到控制器:保存到文件是保存到電腦本地(保存文件可用于文件矯正和多點矯正),保存到控制器是保存到控制器的flash塊(要確保不同的振鏡軸號間用不同flash塊,不能沖突);
急停:標刻急停。
(1)9點矯正標刻預矯正效果圖
(2)矯正并標刻效果圖
(3)25點矯正同9點矯正相同,只是點數(shù)更多,矯正精度更高。
2.系數(shù)矯正
系數(shù)矯正和9點矯正等差不多,只是多了一個原點偏移和XY的縮放比。
3.多點矯正
(1)矯正大?。和?;
(2)標刻點半徑:標刻圓(點)半徑;
(3)標刻點數(shù)量:可選9*9、17*17、33*33、65*65,目前開發(fā)9*9、17*17,更多點數(shù)矯正請聯(lián)系正運動技術(shù)支持工程師;
(4)填充點間距:同心圓半徑差;
(5)完整圖形:標刻完整圖形(掃描儀可以完整掃描出整張圖片);
(6)左邊/右邊圖形:標刻左/右圖形;(圖形較大時,使用掃描儀無法一次將所有圖形全部掃描,請使用左右分別標刻,分別掃描,導入兩張圖片);
(7)急停:標刻急停;
(8)點處理:
模式:單張圖片、兩張圖片:根據(jù)掃描標刻后的矯正圖紙是否分兩次掃描,或分左右標刻
極性:白背景黑點、黑背景白點
閾值方式:自動、手動閾值:(閾值參數(shù)范圍0~255)黑白照片白色為255,黑色為0,處于低閾值至高閾值之間之間的像素處理為 255,否則為 0,用于處理掃描標刻后的圖像處理
低閾值:0~255
高閾值:0~255 應設(shè)置為大于等于低閾值數(shù)據(jù)
最大面積/最小面積:通過篩選原點面積過濾圖像噪點(雜點)
詳見Zvision幫助
(9)尋入9點矯正文件:導入9點矯正文件(多點矯正需要9點矯正中“保存矯正數(shù)據(jù)到文件”的文件)。
4.文件矯正
功能:導入9/25/多點矯正“保存矯正數(shù)據(jù)到文件”保存的文件,更新參數(shù)至矯正界面、僅矯正或矯正并標刻等。
審核編輯:郭婷
-
控制器
+關(guān)注
關(guān)注
112文章
16105瀏覽量
177081 -
接口
+關(guān)注
關(guān)注
33文章
8448瀏覽量
150724 -
usb
+關(guān)注
關(guān)注
60文章
7877瀏覽量
263722
原文標題:開放式激光振鏡運動控制器:C++振鏡矯正方法與實現(xiàn)
文章出處:【微信號:伺服與運動控制,微信公眾號:伺服與運動控制】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論