簡介:1.WZBoxDef定義一個(gè)箱體形狀的World Zone 用途: WZBoxDef(World Zone箱體定義)用來定義一個(gè)直立箱體形狀的World Zone,該箱體的所有邊都和World坐標(biāo)系的坐標(biāo)軸平行。 基本范例: 該指令的基本范例說明如下: 例1 VAR shapedata volume; CONST pos corner1……
1.WZBoxDef—定義一個(gè)箱體形狀的World Zone
用途:
WZBoxDef(World Zone箱體定義)用來定義一個(gè)直立箱體形狀的World Zone,該箱體的所有邊都和World坐標(biāo)系的坐標(biāo)軸平行。
基本范例:
該指令的基本范例說明如下:
例1 VAR shapedata volume;
CONST pos corner1:=[200, 100, 100];
CONST pos corner2 :=[600, 400, 400];
WZBoxDef \Inside, volume, corner1, corner2;
定義一個(gè)直立的箱體,該箱體的所有邊都和World坐標(biāo)系的軸平行,該箱體由兩個(gè)對角點(diǎn)corner1和corner2定義。
項(xiàng)目:
WZBoxDef [\Inside] | [\Outside] Shape LowPoint HighPoint
[\Inside]:
數(shù)據(jù)類型:switch
定義箱體內(nèi)部的體積
[\OutSide]:
數(shù)據(jù)類型:switch
定義箱體外部的體積(反體積)。
必須指定\Inside和\Outside兩個(gè)項(xiàng)目中的一個(gè)。
Shape:
數(shù)據(jù)類型:shapedata
定義的體積的存儲(chǔ)的變量(系統(tǒng)的私有(private)數(shù)據(jù))。
LowPoint:
數(shù)據(jù)類型:pos
定義箱體的一個(gè)較低的角點(diǎn)的位置(x, y, z)以毫米為單位。
HighPoint:
數(shù)據(jù)類型:pos
定義箱體的另一個(gè)相對的角點(diǎn)的位置(x, y, z)以毫米為單位。
程序執(zhí)行:
箱體的定義存儲(chǔ)在shapedata類型(Shape項(xiàng)目)的變量中,用于將來在WZLimSup和WZDOSet指令中使用。
限制:
LowPoint和HighPoint的位置必須是有效的相對角點(diǎn)(x,y和z的坐標(biāo)值都不相同)。如果用機(jī)器人來指出LowPoint和HighPoint,工作對象(wobj0)必須激活(在robtarget中使用trans組件,即p1.trans作為項(xiàng)目)。
語法:
WZBoxDef
[[‘\’Inside] | [‘\’Outside]’,’
[LowPoint’:=’]<pos類型的表達(dá)式(IN)>’,’
[Shape’:=’]<shapedata類型的變量(VAR)>’,’
[HighPoint’:=’]<pos類型的表達(dá)式(IN)>’;’
2.WZCylDef—定義一個(gè)圓柱形的World Zone
用途:
WZCylDef(World Zone圓柱定義)用來定義一個(gè)圓柱形狀的World Zone,該圓柱的軸線平行于World坐標(biāo)系的z軸。
基本范例:
該指令的基本范例說明如下:
例1
VAR shapedata volume;
CONST pos C2:= [300, 200, 200];
CONST num R2:= 100;
CONST num H2:=200;
…
WZCylDef \Inside, volume, C2, R2, H2;
定義一個(gè)圓柱,底面圓心為C2,半徑R2,高度H2。
項(xiàng)目:
WZCylDef [\Inside] | [\Outside] Shape CenterPoint Radius Height
[\Inside]:
數(shù)據(jù)類型:switch
定義圓柱內(nèi)部的體積。
[\Outside]:
數(shù)據(jù)類型:switch
定義圓柱外部的體積(反體積)。
必須指定兩個(gè)項(xiàng)目\Inside和\Outside中的一個(gè)。
Shape:
數(shù)據(jù)類型:shapedata
用來存儲(chǔ)定義的體積的變量(系統(tǒng)的私有(private)數(shù)據(jù))。
CentrePoint:
數(shù)據(jù)類型:pos
定義圓柱的一個(gè)底面圓的圓心位置(x,y,z),單位是毫米。
Radius:(半徑)
數(shù)據(jù)類型:num
圓柱的半徑,單位是毫米。
Height:
數(shù)據(jù)類型:num
圓柱的高度,單位是毫米。如果是正的(+z方向),CentrePoint項(xiàng)目是圓柱較低底面的圓心(如以上例子)。Height如果是負(fù)的(-z方向),CentrePoint項(xiàng)目是圓柱上底面的圓心。
程序執(zhí)行:
圓柱的定義存儲(chǔ)在shapedata類型的變量中(項(xiàng)目Shape),將來在WZLimSup或者WZDOSet指令中使用。
限制:
如果用機(jī)器人指出CentrePoint,工作對象wobj0必須被激活(使用robtarget中的trans組件,即p1.trans作為項(xiàng)目。
語法:
WZCylDef
[‘\’Inside] | [‘\’Outside]’,’
[Shape’:=’]<shapedata類型的變量(VAR)>’,’
[CentrePoint’:=’]<pos類型的表達(dá)式(IN)>’,’
[Radius’:=’]<num類型的表達(dá)式(IN)>’,’
[Height’:=’]<num類型的表達(dá)式(IN)>’;’
1.1.WZDisable—解除臨時(shí)World Zone監(jiān)視
用途:
WZDisable(解除World Zone)用來解除對臨時(shí)World Zone的監(jiān)視,該監(jiān)視原先用來停止運(yùn)動(dòng)或者設(shè)置一個(gè)輸出。
基本范例:
該指令的基本范例說明如下:
例1VAR wztemporary wzone;
…
PROC …
WZLimSup \Temp, wzone, volume;
MoveL p_pick, v500, z40, tool1;
WZDisable wzone;
MoveL p_place, v200, z30, tool1;
ENDPROC
當(dāng)移動(dòng)到p_pick的時(shí)候,機(jī)器人TCP的位置被檢測到,這樣機(jī)器人將不能夠進(jìn)入指定的體積wzone內(nèi)部。當(dāng)移動(dòng)到p_place的時(shí)候,該監(jiān)視沒有執(zhí)行。
項(xiàng)目:
WZDisable WorldZone
WorldZone:
數(shù)據(jù)類型:wztemporary
Wztemporary類型的變量或者恒量,包含要解除的WorldZone的標(biāo)識符。
程序執(zhí)行:
臨時(shí)WorldZone被解除。也就是說對機(jī)器人TCP在相應(yīng)體積空間內(nèi)的監(jiān)視被臨時(shí)停止。它可以通過WZEnable指令被再次激活。
限制:
只有臨時(shí)WorldZone可以被解除。一個(gè)靜態(tài)的WorldZone總是激活的。
語法:
WZDisable
[WorldZone’:=’]<wztemporaty類型的變量或者恒量(INOUT)>’;’
1.2.WZDOSet—激活WorldZone來設(shè)置數(shù)字輸出
用途:
WZDOSet(WorldZone數(shù)字輸出設(shè)置)用來定義動(dòng)作并且激活一個(gè)WorldZone來監(jiān)視機(jī)器人運(yùn)動(dòng)。
在該指令執(zhí)行以后,當(dāng)機(jī)器人的TCP或機(jī)器人/外部軸(關(guān)節(jié)中的區(qū)域)在定義的WorldZone內(nèi)部或者接近WorldZone時(shí),一個(gè)數(shù)字輸出信號被設(shè)為一個(gè)特定的數(shù)值。
基本范例:
該指令的基本范例說明如下:
例1VAR wztemporary service;
PROC zone_output( )
VAR shapedata volume;
CONST pos p_service:= [500, 500, 700];
…
WZSphDef \Inside, volume, p_service, 50;
WZDOSet \Temp, service \Inside, volume, do_service, 1;
ENDPROC
在應(yīng)用程序中定義臨時(shí)WorldZone service,當(dāng)機(jī)器人TCP在程序執(zhí)行過程中或者點(diǎn)動(dòng)過程中進(jìn)入定義的球體時(shí),設(shè)定信號do_service。
項(xiàng)目:
WZDOSet [\Temp] | [\Stat] WorldZone [\Inside] | [\Before] Shape Signal SetValue
[\Temp]:
臨時(shí)的
數(shù)據(jù)類型:switch
要定義的WorldZone是一個(gè)臨時(shí)的WorldZone。
[\Stat]:
靜態(tài)的
數(shù)據(jù)類型:switch
要定義的WorldZone是一個(gè)靜態(tài)的WorldZone。
必須指定[\Temp]和[\Stat]兩個(gè)項(xiàng)目中的一個(gè)。
WorldZone:
數(shù)據(jù)類型:wztemporary或者wzstationary
可以根據(jù)WorldZone的特性(數(shù)字?jǐn)?shù)值)進(jìn)行更新的變量或者恒量。
如果使用可選項(xiàng)目\Temp,數(shù)據(jù)類型必須是wztemporary。如果使用了\Stat,數(shù)據(jù)類型必須是wzstationary。
[\Inside]:
數(shù)據(jù)類型:switch
當(dāng)機(jī)器人的TCP或者某一個(gè)軸進(jìn)入定義的體積空間內(nèi)的時(shí)候,將設(shè)定數(shù)字輸出信號。
[\Before]:
數(shù)據(jù)類型:switch
當(dāng)機(jī)器人的TCP或者某一個(gè)軸進(jìn)入定義的體積空間之前(馬上就要進(jìn)入空間),將設(shè)定數(shù)字輸出信號。
兩個(gè)項(xiàng)目[\Inside]和[\Before]必須選定一個(gè)。
Shape:
數(shù)據(jù)類型:shapedata
定義WorldZone空間的變量。
Signal:
數(shù)據(jù)類型:signaldo
將要改變的數(shù)字輸出信號的名稱。
如果使用了靜態(tài)WorldZone,信號必須寫保護(hù),防止用戶進(jìn)入(RAPID,F(xiàn)P示教器)。在系統(tǒng)參數(shù)或者指定的軸上設(shè)定用戶進(jìn)入等級。
SetValue:
數(shù)據(jù)類型:dionum
當(dāng)機(jī)器人TCP進(jìn)入體積空間或者恰好在進(jìn)入之前,期望的信號輸出的數(shù)值(1或者0)。
在機(jī)器人TCP在外面或者正好在空間外面,信號輸出為相反的數(shù)值。
程序執(zhí)行:
定義的WorldZone被激活。從這時(shí)開始,機(jī)器人TCP位置(或者機(jī)器人/外部軸位置)將被監(jiān)視,當(dāng)機(jī)器人TCP位置(或者機(jī)器人/外部軸位置)在空間內(nèi)(\Inside)或者接近空間的邊界(\Before),將被設(shè)置輸出。
如果和WZDOSet同時(shí)使用了WZHomeJointDef或者WZLimJointDef指令,只有在帶空間監(jiān)視的所有激活的軸即將進(jìn)入或者已經(jīng)進(jìn)入關(guān)節(jié)空間時(shí),才能夠設(shè)置數(shù)字輸出信號。
更多范例:
有關(guān)該指令如何使用的更多范例說明如下:
例1VAR wztemporary home;
VAR wztemporary service;
PERS wztemporary equip1:=[0];
PROC main( )
…
! 定義所有臨時(shí)的WorldZone
Zone_output;
…
! equip1在機(jī)器人工作區(qū)域
WZEnable equip1;
…
! equip1在機(jī)器人工作區(qū)域之外
WZDisable equip1;
…
! 不再使用equip1
WZFree equip1;
…
ENDPROC
PROC zone_output( )
VAR shapedata volume;
CONST pos p_home:=[800, 0, 800];
CONST pos p_service:=[800, 800, 800];
CONST pos p_equip1:=[-800,-800, 0];
…
WZSphDef \Inside, volume, p_home, 50;
WZDOSet \Temp, home \Inside, volume, do_home, 1;
WZSphDef |Inside, volume, p_service, 50;
WZDOSet \Temp, service \Inside, volume, do_service, 1;
WZCylDef \Inside, volume, p_equip1, 300, 1000;
WZLimSup \Temp, equip1, volume;
! equip1不在機(jī)器人工作區(qū)域。
WZDisable equip1;
ENDPROC
在應(yīng)用程序中定義臨時(shí)WorldZone home和service, 當(dāng)機(jī)器人在程序執(zhí)行或者點(diǎn)動(dòng)過程中分別進(jìn)入球體home或者service時(shí),這兩個(gè)WorldZone用來設(shè)定信號do_home和do_service。
同時(shí),定義一個(gè)臨時(shí)WorldZone quip1,equip1只有在機(jī)器人程序中、當(dāng)equip1在機(jī)器人工作區(qū)域以內(nèi)的時(shí)候才會(huì)被激活。這時(shí)候,無論在程序執(zhí)行或者手動(dòng)的時(shí)候,機(jī)器人在進(jìn)入equip1區(qū)域之前停止。通過使用恒量equip1的數(shù)值,equip1可以從其它程序任務(wù)中使能或者解除。
限制:
WorldZone不能通過使用項(xiàng)目WorldZone中的相同的變量重復(fù)定義。
在RAPID程序中,靜態(tài)的WorldZone不能被解除并再次激活,或者進(jìn)行擦除。
在RAPID程序中,臨時(shí)的WorldZone可以被解除(WZDisable),再次激活(WZEnable)或者擦除(WZFree)。
語法:
WZDOSet
[[‘\’Temp] | [‘\’Stat]’,’]
[WorldZone’:=’]<wztemporary類型的變量或者恒量(INOUT)>
[‘\’Inside] | [‘\’Before] ‘,’
[Shape’:=’]<shapedata類型的變量(VAR)>’,’
[Signal’:=’]<signaldo類型的變量(VAR)>’,’
[SetValue’:=’]<dionum類型的表達(dá)式(IN)>’;’
1.3.WZEnable—激活臨時(shí)WorldZone監(jiān)視
用途:
WZEnable(WorldZone使能)用來重新激活對臨時(shí)WorldZone的監(jiān)視,該WorldZone之前定義用來停止運(yùn)動(dòng)或者設(shè)定輸出。
基本范例:
該指令的基本范例說明如下:
例1VAR wztemporary wzone;
…
PROC …
WZLimSup \Temp, wzone, volume;
MoveL p_pick, v500, z40, tool1;
WZDisable wzone;
MoveL p_place, v200, z30, tool1;
WZEnable wzone;
MoveL p_home, v200, z30, tool1;
ENDPROC
當(dāng)往p_pick移動(dòng)的時(shí)候,檢測到機(jī)器人TCP的位置,這樣它就不能進(jìn)入特定的空間wzone。當(dāng)進(jìn)入p_place的時(shí)候沒有進(jìn)行這個(gè)監(jiān)視,但是在移動(dòng)到p_home的時(shí)候重新激活。
項(xiàng)目:
WZEnable WorldZone
WorldZone:
數(shù)據(jù)類型:wztemporary
wztemporary類型的變量或者恒量,包含要激活的WorldZone的標(biāo)識符。
程序執(zhí)行:
臨時(shí)WorldZone被再次激活。注意,當(dāng)創(chuàng)建WorldZone的時(shí)候,它是自動(dòng)激活的。如果被WZDisable指令解除后,它只是需要重新激活。
限制:
只有臨時(shí)的WorldZone可以被解除或者再激活,靜態(tài)的WorldZone總是激活的。
語法:
WZEnable
[WorldZone’:=’]<wztemporary類型的變量或者恒量(INOUT)>’;’
1.4.WZFree—擦除臨時(shí)WorldZone監(jiān)視
用途:
WZFree(WorldZone釋放)用來擦除臨時(shí)WorldZone的定義,之前定義用來停止運(yùn)動(dòng)或者設(shè)定輸出的。
基本范例:
該指令的基本范例說明如下:
例1VAR wztemporary wzone;
…
PROC …
WZLimSup \Temp, wzone, volume;
MoveL p_pick, v500, z40, tool1;
WZDisable wzone;
MoveL p_Place, v200, z30, tool1;
WZEnable wzone;
MoveL p_home, v200, z30, tool1;
WZFree wzone;
ENDPROC
當(dāng)往p_pick移動(dòng)的時(shí)候,檢測到機(jī)器人TCP的位置,所以它不能夠進(jìn)入指定的wzone空間。當(dāng)往p_place移動(dòng)的時(shí)候,該監(jiān)視沒有執(zhí)行,但是在往p_home移動(dòng)之前重新激活該監(jiān)視。到達(dá)p_home之后,WorldZone的定義被擦除。
項(xiàng)目:
WZFree WorldZone
WorldZone:
數(shù)據(jù)類型:wztemporary
wztemporary類型的變量或者恒量,包含要擦除的world zone的標(biāo)識符。
程序執(zhí)行:
臨時(shí)world zone首先被解除,然后它的定義被擦除。一旦擦除,臨時(shí)world zone不能被重新激活也不能被解除。
限制:
只有臨時(shí)world zone可以被解除、重新激活或者擦除,靜態(tài)world zone通常都是激活的。
語法:
WZFree [WorldZone’:=’]<wztemporary類型的變量或者恒量(INOUT)>’;’
1.5.WZHomeJointDef—定義關(guān)節(jié)home位的WorldZone
用途:
WZHomeJointDef(World Zone home關(guān)節(jié)定義)用來為機(jī)器人和外部軸在關(guān)節(jié)坐標(biāo)中定義一個(gè)world zone,用來作為一個(gè)Home或者服務(wù)位置。
基本范例:
該指令的基本范例說明如下:
例1VAR wzstationary home;
…
PROC power_on( )
VAR shapedata joint_space;
CONST jointtarget home_pos := [ [ 0, 0, 0, 0, 0, -45], [0, 9E9, 9E9, 9E9, 9E9, 9E9] ];
CONST jointtarget delta_pos := [ [2, 2, 2, 2, 2, 2], [5, 9E9, 9E9, 9E9, 9E9, 9E9] ];
…
WZHomeJointDef \Stat, home \Inside, joint_space, do_home, 1;
ENDPROC
定義并激活一個(gè)靜態(tài)world zone home,當(dāng)所有機(jī)器人軸和外部軸extax.eax_a在程序執(zhí)行或者點(diǎn)動(dòng)過程中處于關(guān)節(jié)位置home_pos(每一個(gè)軸在+/-delta_pos范圍內(nèi)),home把信號do_home設(shè)為1。Shapedata類型的數(shù)據(jù)變量joint_space用來從指令WZHomeJointDef指令傳送到WZDOSet指令。
項(xiàng)目:
WZHomeJointDef [\Inside] | [\Outside] Shape MiddleJointVal DeltaJointVal
[\Inside]:
數(shù)據(jù)類型:switch
定義MiddleJointVal +/- DeltaJointVal范圍內(nèi)的關(guān)節(jié)空間。
[\Outside]:
數(shù)據(jù)類型:switch
定義MiddleJointVal +/- DeltaJointVal范圍外的關(guān)節(jié)空間(反關(guān)節(jié)空間)。
Shape:
數(shù)據(jù)類型:shapedata
存儲(chǔ)定義的關(guān)鍵空間的變量(系統(tǒng)的私有數(shù)據(jù)private)。
MiddleJointVal:
數(shù)據(jù)類型:jointtarget
關(guān)節(jié)坐標(biāo)系中即將定義的關(guān)節(jié)空間的中心位置。為每一個(gè)機(jī)器人軸和外部軸指定(對于旋轉(zhuǎn)軸來說單位是度數(shù),對于線形軸來說單位是毫米)。在絕對關(guān)節(jié)中指定(對于外部軸來說,不是在偏移坐標(biāo)系EoffsSet-EoffsOn中)。對于某些軸來說9E9就是說軸不應(yīng)該去理會(huì)。在編程中,不激活的外部軸也會(huì)給出9E9。
DeltaJointVal:
數(shù)據(jù)類型:jointtarget
在關(guān)節(jié)坐標(biāo)系中,從關(guān)節(jié)空間的中心位置算起的+/-偏移位置。對于每一個(gè)要管理的軸來說,該數(shù)值必須大于0。
下圖說明旋轉(zhuǎn)軸的關(guān)節(jié)空間的定義。
下圖說明了線性軸的關(guān)節(jié)空間的定義。
程序執(zhí)行:
關(guān)節(jié)空間的定義存儲(chǔ)在shapedata類型的變量中(項(xiàng)目Shape),以后在WZLimSup或者WZDOSet指令中使用。
如果和WZHomeJointDef指令一起還使用了WZDOSet,當(dāng)所有帶關(guān)節(jié)空間監(jiān)視的、激活的軸即將進(jìn)入或者已經(jīng)進(jìn)入關(guān)節(jié)空間的時(shí)候,才能設(shè)置數(shù)字輸出信號。
如果和關(guān)節(jié)空間以外WZHomeJointDef(項(xiàng)目\Outside)指令一起還使用了WZLimSup,當(dāng)任何一個(gè)帶關(guān)節(jié)空間監(jiān)視的、激活的軸到達(dá)關(guān)節(jié)空間時(shí),機(jī)器人立即停止。
如果和關(guān)節(jié)空間內(nèi)WZHomeJointDef(項(xiàng)目\Inside)指令一起還使用了WZLimSup,當(dāng)最后一個(gè)帶關(guān)節(jié)空間監(jiān)視的、激活的軸到達(dá)關(guān)節(jié)空間時(shí),機(jī)器人立即停止。這就是說,一個(gè)或者幾個(gè)軸,但不是所有監(jiān)視的、激活的軸可以同時(shí)位于關(guān)節(jié)空間內(nèi)。
當(dāng)執(zhí)行ActUnit或者DeactUnit指令來激活或者解除機(jī)械單元的時(shí)候,HOME位或者工作區(qū)域限制位的管理狀態(tài)將被更新。
限制:
只有激活的機(jī)械單元和他的激活的軸在world zone激活的時(shí)間段內(nèi)
3.shapedata—World Zone 形狀數(shù)據(jù)
用途:
Shapedata用來描述World Zone的幾何形狀。
描述:
World Zone可以定義為四個(gè)不同的幾何形狀:
l 直立的箱體,所有的邊都平行于world坐標(biāo)系,由WZBoxDef指令定義。
l 一個(gè)球體,由WZSphDef指令定義。
l 一個(gè)圓柱體,平行于world坐標(biāo)系的z軸,由WZCylDef指令定義。
l 機(jī)器人和/或外部軸的關(guān)節(jié)的一個(gè)空間區(qū)域,由指令WZHomeJointDef或者WZLimJointDef定義。
World Zone的幾何形狀由預(yù)覽指令中的一個(gè)定義,World Zone的動(dòng)作由指令WZLimSup和WZDOSet定義。
基本范例:
該數(shù)據(jù)類型的基本范例說明如下:
例1 VAR wzstationary pole;
VAR wzstationary conveyor;
…
PROC …
VAR shapedata volume;
…
WZBoxDef \Inside, volume, p_corner1, p_corner2;
WZLimSup \Stat, conveyor, volume;
WZCylDef \Inside, volume, p_center, 200, 2500;
WZLimSup \Stat, pole, volume;
ENDPROC
定義了一個(gè)箱體形狀的conveyor,并且該區(qū)域的監(jiān)視已經(jīng)激活。一個(gè)圓柱形狀的pole也已經(jīng)定義,此區(qū)域的管理也已經(jīng)激活。如果機(jī)器人到達(dá)以上區(qū)域中的一個(gè),運(yùn)動(dòng)將被停止。
特征:
Shapedata是一個(gè)非數(shù)值的數(shù)據(jù)類型。
文章來源,
工業(yè)機(jī)器人維修官網(wǎng):etongyue.com