ABB机器人安全区World Zone
2017-06-09
World Zone:
最多可以在机器人的工作区域内定义10个不同的体积空间。他们可以用来:
l 指出机器人的TCP是工作区域中的一个明确的部分。
l 限制机器人的工作区域,阻止和工具的碰撞。
l 创建一个由两个机器人公用的区域,该区域在同一时间内只能由一个机器人使用。
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];
! 定义所有临时的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;
! equip1不在机器人工作区域。
WZDisable equip1;
,定义一个临时WorldZone quip1,equip1只有在机器人程序中、当equip1在机器人工作区域以内的时候才会被激活。这时候,无论在程序执行或者手动的时候,机器人在进入equip1区域之前停止。通过用恒量equip1的数值,equip1可以从其它程序任务中使能或者解除。
限制:
WorldZone不能通过使用项目WorldZone中的相同的变量重复定义。
在RAPID程序中,静态的WorldZone不能被解除并再次激活,或者进行擦除。
在RAPID程序中,临时的WorldZone可以被解除(WZDisable),再次激活(WZEnable)或者擦除(WZFree)。
[‘\’Inside] | [‘\’Before] ‘,’
WZEnable Wor
wztemporary类型的变量或者恒量,包含要激活的WorldZone的标识符。
WZFree(WorldZone释放)用来擦除临时WorldZone的定义,之前定义用来停止运动或者设定输出的。
MoveL p_Place, v200, z30, tool1;
当往p_pick移动的时候,检测到机器人TCP的位置,所以它不能够进入指定的wzone空间。当往p_place移动的时候,该监视没有执行,但是在往p_home移动之前重新激活该监视。到达p_home之后,WorldZone的定义被擦除。
WorldZone:
程序执行:
临时world zone首先被解除,然后它的定义被擦除。一旦擦除,临时world zone不能被重新激活也不能被解除。
限制:
只有临时world zone可以被解除、重新激活或者擦除,静态world zone通常都是激活的。
语法:
Zone home关节定义)用来为机器人和外部轴在关节坐标中定义一个world zone,用来作为一个Home或者服务位置。
基本范例:
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范围内的关节空间。
数据类型:switch
定义MiddleJointVal +/- DeltaJointVal范围外的关节空间(反关节空间)。
数据类型:jointtarget
在关节坐标系中,从关节空间的中心位置算起的+/-偏移位置。对于每一个要管理的轴来说,该数值必须大于0。
程序执行:
关节空间的定义存储在shapedata类型的变量中(项目Shape),以后在WZLimSup或者WZDOSet指令中使用。
如果和WZHomeJointDef指令一起还使用了WZDOSet,当所有带关节空间监视的、激活的轴即将进入或者已经进入关节空间的时候,才能设置数字输出信号。
如果和关节空间以外WZHomeJointDef(项目\Outside)指令一起还使用了WZLimSup,当任何一个带关节空间监视的、激活的轴到达关节空间时,机器人立即停止。
如果和关节空间内WZHomeJointDef(项目\Inside)指令一起还使用了WZLimSup,当最后一个带关节空间监视的、激活的轴到达关节空间时,机器人立即停止。这就是说,一个或者几个轴,但不是所有监视的、激活的轴可以同时位于关节空间内。
当执行ActUnit或者DeactUnit指令来激活或者解除机械单元的时候,HOME位或者工作区域限制位的管理状态将被更新。