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