robtarget型的內(nèi)置功能程序:Offs和CRobt
時(shí)間:2021-06-11 16:53
來(lái)源:
Offs功能程序的編程應(yīng)用
Offs是一個(gè)robtarget型的內(nèi)置功能程序,其作用是對(duì)一個(gè)robtarget型的機(jī)器人位置數(shù)據(jù)進(jìn)行偏移,并返回偏移后的robtarget型數(shù)據(jù)值。offs的語(yǔ)法格式為:Offs (Point ,XOffset ,YOffset ,ZOffset)
point:偏移基準(zhǔn)點(diǎn),robtarget型數(shù)據(jù);
XOffset:工件坐標(biāo)系中X方向的位移,num型數(shù)據(jù);
YOffset:工件坐標(biāo)系中Y方向的位移,num型數(shù)據(jù);
ZOffset:工件坐標(biāo)系中Z方向的位移,num型數(shù)據(jù);
智通工業(yè)機(jī)器人培訓(xùn)專家下面以一些示例來(lái)介紹offs功能程序。
例1:MoveL Offs(p10,0,0,50), v1000, fine, tool0WObj:=wobj1;
在工件坐標(biāo)系wobj1下,將機(jī)械人tool0的TCP移動(dòng)至p10點(diǎn)往Z軸方向偏移50mm的位置處。
例2:p20 := Offs(p10,50,0,0);
將P10往X軸方向偏移50mm后的位置數(shù)據(jù)值賦給p20。
Offs是一個(gè)非常實(shí)用的功能程序,合理使用Offs,能夠大大減少一個(gè)程序中需要示教的點(diǎn)位。例如,在圖10-8中,目標(biāo)點(diǎn)p1、p2、p3、p4是矩形的四個(gè)頂點(diǎn),相對(duì)位置關(guān)系固定,現(xiàn)需要編寫程序使tool1的TCP沿圖中的矩形軌跡運(yùn)動(dòng)。下文的程序1和程序2都能夠完成任務(wù)要求,但程序1需要示教4個(gè)目標(biāo)點(diǎn),程序2由于使用了offs功能程序僅
需要示教1個(gè)目標(biāo)點(diǎn)。
圖10-8
程序1:
MoveL p1, v1000, fine, tool1WObj:=wobj1;
MoveL p2, v1000, fine, tool1WObj:=wobj1;
MoveL p3, v1000, fine, tool1WObj:=wobj1;
MoveL p4, v1000, fine, tool1WObj:=wobj1;
MoveL p1, v1000, fine, tool1WObj:=wobj1;
程序2:
MoveL p1, v1000, fine, tool1WObj:=wobj1;
MoveL Offs(p1,200,0,0), v1000, fine, tool1WObj:=wobj1;
MoveL Offs(p1,200,160,0), v1000, fine, tool1WObj:=wobj1;
MoveL Offs(p1,0,160,0), v1000, fine, tool1WObj:=wobj1;
MoveL p1, v1000, fine, tool1WObj:=wobj1;
CRobt功能程序的編程應(yīng)用
CRobt是一個(gè)robtarget型的內(nèi)置功能程序,其作用是讀取機(jī)器人當(dāng)前的位置數(shù)據(jù),并返回一個(gè)robtarget型數(shù)據(jù)值,包含機(jī)器人當(dāng)前TCP的X、Y、Z值,姿態(tài)q1~q4,軸配置等數(shù)據(jù)。CRobt的語(yǔ)法格式為:CRobT ([Tool] [WObj])
[Tool]:指定用于計(jì)算的工具,tooldata型數(shù)據(jù),如果不指定則使用當(dāng)前工具;
[WObj]:指定用于計(jì)算的工件坐標(biāo)系,wobjdata型數(shù)據(jù),如果不指定則使用當(dāng)前工件坐標(biāo)系;
對(duì)于多任務(wù)的控制系統(tǒng),還有用于指定讀取機(jī)器人位置數(shù)據(jù)的任務(wù)的可選變量[TaskRef]、[TaskName],在此不再介紹。下面以一些示例來(lái)介紹CRobt功能程序。
例1:VAR robtarget p1;
MoveL *, v500, fine, tool1;
p1 := CRobT(Tool:=tool1 WObj:=wobj0);
讀取機(jī)器人當(dāng)前的位置數(shù)據(jù),并存儲(chǔ)于p1中,tool1、wobj0用于計(jì)算位置。需要注意的是為保證讀取數(shù)據(jù)的準(zhǔn)確性,讀取機(jī)器人位置前機(jī)器人應(yīng)是靜止的,所以前一條運(yùn)動(dòng)指令應(yīng)當(dāng)使用轉(zhuǎn)彎半徑Fine。
例2:MoveL *, v500, Fine, tool1;
MoveL Offs(CRobT(),0,0,50), v1000, Fine, tool0;
從當(dāng)前位置*處,往坐標(biāo)系的的Z軸方向,線性偏移50mm,使用當(dāng)前激活的工具和工件坐標(biāo)進(jìn)行位置計(jì)算。
創(chuàng)建用戶自定義功能程序
ABB機(jī)器人控制系統(tǒng)內(nèi)置的功能程序非常多,對(duì)于其他內(nèi)置功能程序東莞工業(yè)機(jī)器人培訓(xùn)老師就不再給大家逐一介紹,想了解其他內(nèi)置功能程序的作用與用法,請(qǐng)查閱ABB官方提供的技術(shù)參考手冊(cè)《RAPID指令、函數(shù)和數(shù)據(jù)類型》。除了系統(tǒng)內(nèi)置的功能程序外,用戶還可以自行聲明、編寫功能程序。下文展示了一個(gè)用戶自定義的功能程序,程序的作用是比較兩個(gè)num型數(shù)據(jù)的大小,并返回?cái)?shù)值較大的那個(gè)程序數(shù)據(jù),若兩數(shù)相等則返回0。
FUNC num which_bigger(INOUT num num1,INOUT num num2)
IF num1 > num2 THEN
RETURN num1;
ELSEIF num2 > num1 THEN
RETURN num2;
ELSE
RETURN 0;
ENDIF
ENDFUNC
東莞工業(yè)機(jī)器人培訓(xùn)專家在下面以聲明上述用戶自定義功能程序which_bigger為例,講解在程序編輯器界面如何聲明用戶自定義功能程序。聲明的步驟是:1單擊【例行程序】—2單擊【文件】—3單擊【新建例行程序】—4輸入名稱“which_bigger”—5類型選擇為“功能”—6單擊參數(shù)后面的“...”—7單擊【添加】—8單擊【添加參數(shù)】—9輸入?yún)?shù)名“num1” —10單擊【確定】—11參數(shù)數(shù)據(jù)類型設(shè)定為num—12參數(shù)模式設(shè)定為輸入輸出(Inout)—13單擊【添加】—14單擊【添加參數(shù)】—15輸入?yún)?shù)名“num2” —16單擊【確定】—17參數(shù)數(shù)據(jù)類型設(shè)定為num—18參數(shù)模式設(shè)定為Inout—19單擊【確定】—20單擊【確定】。詳細(xì)的操作步驟圖示見(jiàn)圖10-9~圖10-19:
圖10-9 圖10-10
圖10-11 圖10-12
圖10-13 圖10-14
圖10-15 圖10-16
圖10-17 圖10-18
圖10-19
完成功能程序的聲明后,就可以對(duì)功能程序進(jìn)行編寫,操作方法與例行程序的操作方法相同。完成功能程序的編寫,就可以調(diào)用自定義的功能程序,調(diào)用方法與內(nèi)置功能程序的調(diào)用方法相同。