! System module with basic predefined system data
!************************************************
! System data tool0, wobj0 and load0
! Do not translate or delete tool0, wobj0, load0
PERS tooldata tool0 := [TRUE, [[0, 0, 0], [1, 0, 0, 0]],
[0.001, [0, 0, 0.001],[1, 0, 0, 0], 0, 0, 0]];
PERS wobjdata wobj0 := [FALSE, TRUE, "
-
!# ------ Tasks
!# -----------------------------------------------
PERS tasks ROB1_ROB2{2} := [["T_ROB1"],["T_ROB2"]];
!# -----------------------------------------------
!# ------ World zones
!# -----------------------------------------------
CONST num R2_1:=5;
PERS pos C2_1:=[-1380,360,1480];
VAR wzstationary kub_Home:=[0];
VAR shapedata box_Home;
LOCAL VAR num radius;
LOCAL VAR num halfdist;
LOCAL VAR num differ;
LOCAL VAR num helpdist;
LOCAL VAR num temp_x;
LOCAL VAR num temp_y;
LOCAL VAR num x{20};
LOCAL VAR num y{20};
LOCAL VAR robtarget actpos;
LOCAL VAR num sidelength:=0;
LOCAL VAR pos curr_xyz;
TASK PERS tooldata trainingtool02:=[TRUE,[[-188.061,-36.1053,191.488],[0.756635,0.183058,-0.580586,0.238566]],[4,[-36,0,90],[1,0,0,0],0,0,0]];
!***************************************
!Procedure: JetOff
!Description: Deactivates waterjet-beam
!
PROC JetOff()
Reset do_HPWaterR2;
WaitTime nTimeCl;
ENDPROC
!*************************************
!Procedure: JetOn
!Description: Activates waterjet-beam
!
PROC JetOn()
Set do_HPWaterR2;
WaitTime nTimeOp;
ENDPROC
PROC CutL(
\\switch On |switch Off,
robtarget pPosition,
speeddata vSpeed,
zonedata zZone,
PERS tooldata tTool,
PERS wobjdata obWobj)
VAR bool bWaterOn:=FALSE;
IF Present(On) THEN
!Jet Open
TriggIO trStart,nTimeOp\\Time\\DOp:=do_HPWaterR2,1;
TriggL pPosition,vSpeed,trStart,zZone,tTool\\WObj:=obWobj;
ELSEIF Present(Off) THEN
!Jet Close
TriggIO trStop,nTimeCl\\Time\\DOp:=do_HPWaterR2,0;
TriggL pPosition,vSpeed,trStop,zZone,tTool\\WObj:=obWobj;
ENDIF
ENDPROC
PROC Speed()
!Zone assignments
zX:=[FALSE,1,50,50,5,50,5];
!TCP Speed assignments
vAirFast.v_tcp:=5000;
vAirSlow.v_tcp:=1500;
vContourFast.v_tcp:=600;
vContourSlow.v_tcp:=300;
vCutFast.v_tcp:=400;
vCutMedium.v_tcp:=150;
vCutSlow.v_tcp:=80;
vOrientMedium.v_tcp:=60;
vOrientSlow.v_tcp:=40;
!ORI Speed assignments
vAirFast.v_ori:=1000;
vAirSlow.v_ori:=500;
vContourFast.v_ori:=500;
vContourSlow.v_ori:=100;
vCutFast.v_ori:=500;
vCutMedium.v_ori:=100;
vCutSlow.v_ori:=50;
vOrientMedium.v_ori:=40;
vOrientSlow.v_ori:=20;
ENDPROC
PROC CircleHole(
bool bRelTool,
robtarget pPosition,
num nRadius_mm,
speeddata vSpeed,
PERS tooldata tTool,
PERS wobjdata obWobj)
TriggIO trStart,nTimeOp\\Time\\DOp:=do_HPWaterR2,1;
TriggIO trStop,nTimeCl\\Time\\DOp:=do_HPWaterR2,0;
IF bRelTool THEN
!Circleprogram with RELTOOL
!The cut will be 90deg towards the surface
TriggL pPosition,vStart,trStart,z0_1,tTool\\WObj:=obWobj;
MoveC RelTool(pPosition,-nRadius_mm/2,nRadius_mm/2,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,-nRadius_mm,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,z1,tTool\\WObj:=obWobj;
MoveC RelTool(pPosition,0,-nRadius_mm,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,nRadius_mm,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,z1,tTool\\WObj:=
obWobj;
MoveC RelTool(pPosition,0,nRadius_mm,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,-nRadius_mm,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,z1,tTool\\WObj:=obWobj;
TriggC RelTool(pPosition,-nRadius_mm/2,-nRadius_mm/2,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,0,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,trStop,z0_1,tTool\\WObj:=obWobj;
ELSE
!Circleprogram
!The cut will be 90deg towards active WorkObject
TriggL pPosition,vStart,trStart,z0_1,tTool\\WObj:=obWobj;
MoveC Offs(pPosition,-nRadius_mm/2,nRadius_mm/2,0),Offs(pPosition,-nRadius_mm,0,0),vSpeed,z1,tTool\\WObj:=obWobj;
MoveC Offs(pPosition,0,-nRadius_mm,0),Offs(pPosition,nRadius_mm,0,0),vSpeed,z1,tTool\\WObj:=obWobj;
MoveC Offs(pPosition,0,nRadius_mm,0),Offs(pPosition,-nRadius_mm,0,0),vSpeed,z1,tTool\\WObj:=obWobj;
TriggC Offs(pPosition,-nRadius_mm/2,-nRadius_mm/2,0),Offs(pPosition,0,0,0),vSpeed,trStop,z1,tTool\\WObj:=obWobj;
TriggC Offs(pPosition,0,nRadius_mm,0),Offs(pPosition,-nRadius_mm,0,0),vSpeed,trStop,z0_1,tTool\\WObj:=obWobj;
ENDIF
ENDPROC
! **************************************
! * R+S Technik GmbH (Robotics) *
! **************************************
! Version: 2.1
! Date: 30/08/2007
! Author: Michael Grosskopf
! Procedure: BigCirc
! Parameters: as below
! Details: This routine performs a
! circle, relative to tool
! or relative to workobject
! depending on value of
! bRelTool (boolean).
! The trim starts on
! the circular trimline in
! Orient.: X-direction
! **************************************
PROC BIGCIRC(
bool bRelTool,
robtarget pPosition,
num nDiam_mm,
speeddata vSpeed,
PERS wobjdata obWobj)
radius:=nDiam_mm/2;
IF bRelTool THEN
pPosition:=CRobT(\\Tool:=tJet35\\WObj:=wobj0);
! CIRCLEPROGRAM WITH RELTOOL
! TRIM WILL BE PERFORMED 90?
! TOWARDS WATERBEAM
MoveL RelTool(pPosition,2,0,0\\Rx:=0\\Ry:=0\\Rz:=0),v10,fine,tJet35\\WObj:=obWobj;
Set do_HPWaterR1;
MoveL pPosition,v10,z1,tJet35\\WObj:=obWobj;
MoveC RelTool(pPosition,radius,-radius,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,nDiam_mm,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,z1,tJet35\\WObj:=obWobj;
MoveC RelTool(pPosition,radius,radius,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,(1-Cos(10))*radius,Sin(10)*radius,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,z1,tJet35\\WObj:=obWobj;
MoveC RelTool(pPosition,0,0,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,(1-Cos(10))*radius,-Sin(10)*radius,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,fine,tJet35\\WObj:=obWobj;
Reset do_HPWaterR1;
WaitTime 0.2;
ELSE
pPosition:=CRobT(\\Tool:=tJet35\\WObj:=obWobj);
! CIRCLEPROGRAM
! TRIM WILL BE PERFORMED PARALLEL
! TO ACTIVE WORKOBJECT
MoveL Offs(pPosition,2,0,0),v10,fine,tJet35\\WObj:=obWobj;
Set do_HPWaterR1;
MoveL pPosition,v10,z1,tJet35\\WObj:=obWobj;
MoveC Offs(pPosition,radius,-radius,0),Offs(pPosition,nDiam_mm,0,0),vSpeed,z1,tJet35\\WObj:=obWobj;
MoveC Offs(pP
osition,radius,radius,0),Offs(pPosition,(1-Cos(10))*radius,Sin(10)*radius,0),vSpeed,z1,tJet35\\WObj:=obWobj;
MoveC Offs(pPosition,0,0,0),Offs(pPosition,(1-Cos(10))*radius,-Sin(10)*radius,0),vSpeed,fine,tJet35\\WObj:=obWobj;
Reset do_HPWaterR1;
WaitTime 0.2;
ENDIF
BACKWARD
ENDPROC ! ************************************** ! * R+S Technik GmbH (Robotics) * ! ************************************** ! Version: 3.3 ! Date: 30/08/2007 ! Author: Michael Grosskopf ! Procedure: Ellipse ! Parameters: as arguments ! Details: This routine performs an ! ellipse, relative to tool ! or relative to workobject ! depending on value of ! bRelTool (boolean). ! The macro starts in the ! center, in X-direction. ! ************************************** PROC Ellipse( bool bRelTool, robtarget pPosition, num rad1_mm, num rad2_mm, num len_mm, speeddata vSpeed, zonedata zZone, PERS wobjdata obWobj) pPosition:=CRobT(\\Tool:=tJet35\\WObj:=obWobj); halfdist:=len_mm/2-rad1_mm; differ:=rad2_mm-rad1_mm; ! -- using good old Pythagoras helpdist:=Sqrt(differ*differ-halfdist*halfdist); temp_x:=halfdist/differ*rad1_mm; temp_y:=helpdist/differ*rad1_mm; IF bRelTool THEN pPosition:=CRobT(\\Tool:=tJet35\\WObj:=wobj0); Set do_HPWaterR1; MoveL RelTool(pPosition,-(halfdist+temp_x),temp_y,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=obWobj; MoveC RelTool(pPosition,-len_mm/2,0,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,-(halfdist+temp_x),-temp_y,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=obWobj; MoveC RelTool(pPosition,0,helpdist-rad2_mm,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,halfdist+temp_x,-temp_y,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=obWobj; MoveC RelTool(pPosition,len_mm/2,0,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,halfdist+temp_x,temp_y,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=obWobj; MoveC RelTool(pPosition,0,rad2_mm-helpdist,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,-(halfdist+temp_x),temp_y,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=obWobj; MoveC RelTool(pPosition,-len_mm/2,0,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,-(halfdist+temp_x),-temp_y,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,fine,tJet35\\WObj:=obWobj; Reset do_HPWaterR1; WaitTime 0.2; ELSE pPosition:=CRobT(\\Tool:=tJet35\\WObj:=obWobj); Set do_HPWaterR1; MoveL Offs(pPosition,-(halfdist+temp_x),temp_y,0),vSpeed,zZone,tJet35\\WObj:=obWobj; MoveC Offs(pPosition,-len_mm/2,0,0),Offs(pPosition,-(halfdist+temp_x),-temp_y,0),vSpeed,zZone,tJet35\\WObj:=obWobj; MoveC Offs(pPosition,0,helpdist-rad2_mm,0),Offs(pPosition,halfdist+temp_x,-temp_y,0),vSpeed,zZone,tJet35\\WObj:=obWobj; MoveC Offs(pPosition,len_mm/2,0,0),Offs(pPosition,halfdist+temp_x,temp_y,0),vSpeed,zZone,tJet35\\WObj:=obWobj; MoveC Offs(pPosition,0,rad2_mm-helpdist,0),Offs(pPosition,-(halfdist+temp_x),t emp_y,0),vSpeed,zZone,tJet35\\WObj:=obWobj; MoveC Offs(pPosition,-len_mm/2,0,0),Offs(pPosition,-(halfdist+temp_x),-temp_y,0),vSpeed,fine,tJet35\\WObj:=obWobj; Reset do_HPWaterR1; WaitTime 0.2; ENDIF ENDPROC ! ************************************** ! * R+S Technik GmbH (Robotics) * ! ************************************** ! Version: 6.3 ! Date: 15/04/2006 ! Author: Michael Grosskopf ! Procedure: Square with rayons ! Parameters: as arguments ! Details: This routine performs a ! square, relative to tool ! or relative to workobject ! depending on value of ! bRelTool (boolean). ! The macro starts in the ! middle of the A_side. ! axis is in X-direction. ! With setting rad_mm:=0 a ! sharp-edged square will ! be performed. ! ************************************** PROC RDSQUARE( bool bRelTool, robtarget pPosition, num rad_mm, num A_side_mm, num B_side_mm, speeddata vSpeed, zonedata zZone, PERS tooldata tTool, PERS wobjdata obWobj) x{1}:=A_side_mm/2-rad_mm; y{1}:=0; x{2}:=A_side_mm/2-(1-Sin(45))*rad_mm; y{2}:=(1-Sin(45))*rad_mm; x{3}:=A_side_mm/2; y{3}:=rad_mm; x{4}:=A_side_mm/2; y{4}:=B_side_mm-rad_mm; x{5}:=x{2}; y{5}:=B_side_mm-(1-Sin(45))*rad_mm; x{6}:=x{1}; y{6}:=B_side_mm; x{7}:=-x{6}; y{7}:=y{6}; x{8}:=-x{5}; y{8}:=y{5}; x{9}:=-x{4}; y{9}:=y{4}; x{10}:=-x{3}; y{10}:=y{3}; x{11}:=-x{2}; y{11}:=y{2}; x{12}:=-x{1}; y{12}:=0; IF bRelTool THEN ! SQUARE PROGRAM ! with tool-offset pPosition:=CRobT(\\Tool:=tJet35\\WObj:=wobj0); Set do_HPWaterR1; IF rad_mm=0 THEN ! SQUARE PROGRAM with sharp corners MoveL RelTool(pPosition,A_side_mm/2,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,fine,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,A_side_mm/2,B_side_mm,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,fine,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,-A_side_mm/2,B_side_mm,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,-A_side_mm/2,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,fine,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,A_side_mm/4,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,fine,tJet35\\WObj:=wobj0; ELSE ! SQUARE WITH ROUND CORNERS MoveL RelTool(pPosition,x{1},y{1},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveC RelTool(pPosition,x{2},y{2},0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,x{3},y{3},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,x{4},y{4},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveC RelTool(pPosition,x{5},y{5},0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,x{6},y{6},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,x{7},y{7},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveC RelTool(pPosition,x{8},y{8},0\\Rx:=0\\Ry :=0\\Rz:=0),RelTool(pPosition,x{9},y{9},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,x{10},y{10},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveC RelTool(pPosition,x{11},y{11},0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,x{12},y{12},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,A_side_mm/4,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,fine,tJet35\\WObj:=wobj0; ENDIF Reset do_HPWaterR1; WaitTime 0.2; ELSE ! SQUARE PROGRAM ! TRIM WILL BE PERFORMED IN THE ! ACTIVE WORKOBJECT pPosition:=CRobT(\\Tool:=tJet35\\WObj:=obWobj); Set do_HPWaterR1; IF rad_mm=0 THEN ! Square with sharp edges MoveL Offs(pPosition,A_side_mm/2,0,0),vSpeed,fine,tJet35\\WObj:=obWobj; MoveL Offs(pPosition,A_side_mm/2,B_side_mm,0),vSpeed,fine,tJet35\\WObj:=obWobj; MoveL Offs(pPosition,-A_side_mm/2,B_side_mm,0),vSpeed,fine,tJet35\\WObj:=obWobj; MoveL Offs(pPosition,-A_side_mm/2,0,0),vSpeed,fine,tJet35\\WObj:=obWobj; MoveL Offs(pPosition,A_side_mm/4,0,0),vSpeed,fine,tJet35\\WObj:=obWobj; ELSE ! SQUARE WITH ROUND CORNERS MoveL Offs(pPosition,x{1},y{1},0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveC Offs(pPosition,x{2},y{2},0),Offs(pPosition,x{3},y{3},0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL Offs(pPosition,x{4},y{4},0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveC Offs(pPosition,x{5},y{5},0),Offs(pPosition,x{6},y{6},0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL Offs(pPosition,x{7},y{7},0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveC Offs(pPosition,x{8},y{8},0),Offs(pPosition,x{9},y{9},0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL Offs(pPosition,x{10},y{10},0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveC Offs(pPosition,x{11},y{11},0),Offs(pPosition,x{12},y{12},0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL Offs(pPosition,A_side_mm/4,0,0),vSpeed,fine,tJet35\\WObj:=wobj0; ENDIF Reset do_HPWaterR1; WaitTime 0.2; ENDIF ENDPROC PROC SQUPHASE( bool bRelTool, robtarget pPosition, num phase_mm, num A_side_mm, num B_side_mm, speeddata vSpeed, PERS wobjdata obWobj) x{1}:=A_side_mm/2-phase_mm; y{1}:=0; x{2}:=A_side_mm/2; y{2}:=phase_mm; x{3}:=A_side_mm/2; y{3}:=B_side_mm-phase_mm; x{4}:=x{1}; y{4}:=B_side_mm; x{5}:=-x{4}; y{5}:=B_side_mm; x{6}:=-x{3}; y{6}:=y{3}; x{7}:=-x{2}; y{7}:=y{2}; x{8}:=-x{1}; y{8}:=y{1}; x{9}:=x{1}-2; y{9}:=y{1}; IF bRelTool THEN ! SQUARE PROGRAM ! WITH TOOL-OFFSET pPosition:=CRobT(\\Tool:=tJet35\\WObj:=wobj0); Set do_HPWaterR1; MoveL RelTool(pPosition,x{1},y{1},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,fine,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,x{2},y{2},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,fine,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,x{3},y{3},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,fine,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,x{4},y{4},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,fine,tJet35\\WObj:=wobj0; MoveL RelTool(pPositio n,x{5},y{5},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,fine,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,x{6},y{6},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,fine,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,x{7},y{7},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,fine,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,x{8},y{8},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,fine,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,x{9},y{9},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,fine,tJet35\\WObj:=wobj0; Reset do_HPWaterR1; WaitTime 0.2; ELSE ! SQUARE PROGRAM ! TRIM WILL BE PERFORMED IN THE ! ACTIVE WORKOBJECT pPosition:=CRobT(\\Tool:=tJet35\\WObj:=obWobj); Set do_HPWaterR1; MoveL Offs(pPosition,x{1},y{1},0),vSpeed,fine,tJet35\\WObj:=obWobj; MoveL Offs(pPosition,x{2},y{2},0),vSpeed,fine,tJet35\\WObj:=obWobj; MoveL Offs(pPosition,x{3},y{3},0),vSpeed,fine,tJet35\\WObj:=obWobj; MoveL Offs(pPosition,x{4},y{4},0),vSpeed,fine,tJet35\\WObj:=obWobj; MoveL Offs(pPosition,x{5},y{5},0),vSpeed,fine,tJet35\\WObj:=obWobj; MoveL Offs(pPosition,x{6},y{6},0),vSpeed,fine,tJet35\\WObj:=obWobj; MoveL Offs(pPosition,x{7},y{7},0),vSpeed,fine,tJet35\\WObj:=obWobj; MoveL Offs(pPosition,x{8},y{8},0),vSpeed,fine,tJet35\\WObj:=obWobj; MoveL Offs(pPosition,x{9},y{9},0),vSpeed,fine,tJet35\\WObj:=obWobj; Reset do_HPWaterR1; WaitTime 0.2; ENDIF ENDPROC PROC Rectangle( speeddata vCutMedium, num Base, num High, num Approx, num Rotation) VAR robtarget C_RectRel:=[[100,200,300],[1,0,0,0],[1,2,-3,0],[230,-10.8862,0.34,-120,0,0.23]]; VAR zonedata Z_Ret; VAR num alfa; alfa:=Rotation; Z_Ret.pzone_tcp:=Approx; !This macro create a rettangle parallel at the work object wobj0 C_RectRel:=CRobT(\\Tool:=tJet35\\WObj:=wobj0); MoveL RelTool(C_RectRel,0,0,0),vCutMedium,fine,tJet35; JetOn; MoveL RelTool(C_RectRel,(-Base/2)*Sin(alfa),(Base/2)*Cos(alfa),0),vCutMedium,z1,tJet35; MoveL RelTool(C_RectRel,((High/2)*Cos(alfa))-((Base/2)*Sin(alfa)),((High/2)*Sin(alfa))+((Base/2)*Cos(alfa)),0),vCutMedium,Z_Ret,tJet35; MoveL RelTool(C_RectRel,((High/2)*Cos(alfa))+((Base/2)*Sin(alfa)),((High/2)*Sin(alfa))-((Base/2)*Cos(alfa)),0),vCutMedium,Z_Ret,tJet35; MoveL RelTool(C_RectRel,((-High/2)*Cos(alfa))+((Base/2)*Sin(alfa)),((-High/2)*Sin(alfa))-((Base/2)*Cos(alfa)),0),vCutMedium,Z_Ret,tJet35; MoveL RelTool(C_RectRel,((-High/2)*Cos(alfa))-((Base/2)*Sin(alfa)),((-High/2)*Sin(alfa))+((Base/2)*Cos(alfa)),0),vCutMedium,Z_Ret,tJet35; MoveL RelTool(C_RectRel,(-Base/2)*Sin(alfa),(Base/2)*Cos(alfa),0),vCutMedium,fine,tJet35; JetOff; MoveL RelTool(C_RectRel,0,0,0),vCutMedium,fine,tJet35; ENDPROC PROC Triangle( speeddata vCutMedium, num Base, num High, num Approx1, num Approx2, num Approx3, num Rotation) VAR robtarget C_RectRel:=[[100,200,300],[1,0,0,0],[1,2,-3,0],[230,-10.8862,0.34,-120,0,0.23]]; VAR zonedata Z_Ret1; VAR zonedata Z_Ret2; VAR zonedata Z_Ret3; VAR num alfa; alfa:=Rotation; Z_Ret1.pzone_t _tcp:=Approx1; Z_Ret2.pzone_tcp:=Approx2; Z_Ret3.pzone_tcp:=Approx3; !This macro create a rettangle parallel at the work object wobj0 C_RectRel:=CRobT(\\Tool:=tJet35\\WObj:=wobj0); MoveL RelTool(C_RectRel,0,0,0),vCutMedium,fine,tJet35; JetOn; MoveL RelTool(C_RectRel,((High/2)*Cos(alfa)),(-High/2)*Sin(alfa),0),vCutMedium,z1,tJet35; MoveL RelTool(C_RectRel,((High/2)*Cos(alfa))+((Base/2)*Sin(alfa)),(-(High/2)*Sin(alfa))+((Base/2)*Cos(alfa)),0),vCutMedium,Z_Ret1,tJet35; MoveL RelTool(C_RectRel,(-High/2)*cos(alfa),(High/2)*sin(alfa),0),vCutMedium,Z_Ret2,tJet35; MoveL RelTool(C_RectRel,((High/2)*Cos(alfa))+((-Base/2)*Sin(alfa)),(-(High/2)*Sin(alfa))+((-Base/2)*Cos(alfa)),0),vCutMedium,Z_Ret3,tJet35; MoveL RelTool(C_RectRel,((High/2)*Cos(alfa)),(-High/2)*Sin(alfa),0),vCutMedium,fine,tJet35; JetOff; ENDPROC PROC Eye( speeddata vCutMedium, num Base, num High, num Cord, num Approx, num Rotation) VAR robtarget C_RectRel:=[[100,200,300],[1,0,0,0],[1,2,-3,0],[230,-10.8862,0.34,-120,0,0.23]]; VAR zonedata Z_Ret; VAR num alfa; alfa:=Rotation; Z_Ret.pzone_tcp:=Approx; !This macro create a rettangle parallel at the work object wobj0 C_RectRel:=CRobT(\\Tool:=tJet35\\WObj:=wobj0); !0 MoveL RelTool(C_RectRel,0,0,0),vCutMedium,fine,tJet35; JetOn; MoveL RelTool(C_RectRel,(High/2)*Cos(alfa),(High/2)*Sin(alfa),0),vCutMedium,fine,tJet35; MoveL RelTool(C_RectRel,((High/2)*Cos(alfa))-((Base/2)*Sin(alfa)),((High/2)*Sin(alfa))+((Base/2)*Cos(alfa)),0),vCutMedium,Z_Ret,tJet35; MoveC RelTool(C_RectRel,((-Base/2)-Cord)*Sin(alfa),((Base/2)+Cord)*Cos(alfa),0),RelTool(C_RectRel,((-High/2)*Cos(alfa))-((Base/2)*Sin(alfa)),((-High/2)*Sin(alfa))+((Base/2)*Cos(alfa)),0),vCutMedium,Z_Ret,tJet35; MoveL RelTool(C_RectRel,((-High/2)*Cos(alfa))+((Base/2)*Sin(alfa)),((-High/2)*Sin(alfa))-((Base/2)*Cos(alfa)),0),vCutMedium,Z_Ret,tJet35; MoveC RelTool(C_RectRel,(((Base/2)+Cord)*Sin(alfa)),((-(Base/2)-Cord)*Cos(alfa)),0),RelTool(C_RectRel,((High/2)*Cos(alfa))+((Base/2)*Sin(alfa)),((High/2)*Sin(alfa))-((Base/2)*Cos(alfa)),0),vCutMedium,Z_Ret,tJet35; MoveL RelTool(C_RectRel,(High/2)*Cos(alfa),(High/2)*Sin(alfa),0),vCutMedium,fine,tJet35; JetOff; ENDPROC PROC SquareHole( bool bRelTool, robtarget pPosition, num A_side_mm, num B_side_mm, speeddata vSpeed, zonedata zZone, PERS tooldata tTool, PERS wobjdata obWobj) VAR num nStartpos:=0; TriggIO trStart,nTimeOp\\Time\\DOp:=do_HPWaterR2,1; TriggIO trStop,nTimeCl\\Time\\DOp:=do_HPWaterR2,0; IF A_side_mm>=B_side_mm THEN nStartpos:=B_side_mm; ELSE nStartpos:=A_side_mm; ENDIF IF bRelTool THEN !Squareprogram made with RelTool-function !The cut will be 90deg towards active tool TriggL RelTool(pPosition,-1,nStartpos/2,0\\Rx:=0\\Ry:=0\\Rz:=0),vStart,trStart,z1,tTool\\WObj:=obWobj; MoveC RelTool(pPosition,-nStartpos/4-1,nStartpos/4,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,-1,0 ,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,z1,tTool\\WObj:=obWobj; MoveL RelTool(pPosition,A_side_mm/2,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tTool\\WObj:=obWobj; MoveL RelTool(pPosition,A_side_mm/2,B_side_mm,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tTool\\WObj:=obWobj; MoveL RelTool(pPosition,-A_side_mm/2,B_side_mm,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tTool\\WObj:=obWobj; MoveL RelTool(pPosition,-A_side_mm/2,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tTool\\WObj:=obWobj; MoveL RelTool(pPosition,1,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,z1,tTool\\WObj:=obWobj; TriggC RelTool(pPosition,nStartpos/4+1,nStartpos/4,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,1,nStartpos/2,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,trStop,z1,tTool\\WObj:=obWobj; ELSE !Squareprogram !The cut will be 90deg towards active workobject TriggL Offs(pPosition,-1,nStartpos/2,0),vStart,trStart,z1,tTool\\WObj:=obWobj; MoveC Offs(pPosition,-nStartpos/4-1,nStartpos/4,0),Offs(pPosition,-1,0,0),vSpeed,z1,tTool\\WObj:=obWobj; MoveL Offs(pPosition,A_side_mm/2,0,0),vSpeed,zZone,tTool\\WObj:=obWobj; MoveL Offs(pPosition,A_side_mm/2,B_side_mm,0),vSpeed,zZone,tTool\\WObj:=obWobj; MoveL Offs(pPosition,-A_side_mm/2,B_side_mm,0),vSpeed,zZone,tTool\\WObj:=obWobj; MoveL Offs(pPosition,-A_side_mm/2,0,0),vSpeed,zZone,tTool\\WObj:=obWobj; MoveL Offs(pPosition,1,0,0),vSpeed,z1,tTool\\WObj:=obWobj; TriggC Offs(pPosition,nStartpos/4+1,nStartpos/4,0),Offs(pPosition,1,nStartpos/2,0),vSpeed,trStop,z1,tTool\\WObj:=obWobj; ENDIF ENDPROC ! ************************************** ! * R+S Technik GmbH (Robotics) * ! ************************************** ! Version: 4.10 ! Date: 30/08/2007 ! Author: Michael Grosskopf ! Procedure: RdSlot ! Parameters: see arguments ! Details: This routine performs a ! slot, relative to tool ! or relative to workobject ! depending on value of ! bRelTool (boolean). ! The macro starts in the ! center, in X-direction ! ************************************** PROC RdSlot( bool bRelTool, robtarget pPosition, num len_mm, num wid_mm, speeddata vSpeed, zonedata zZone, PERS wobjdata obWobj) IF bRelTool THEN pPosition:=CRobT(\\Tool:=tJet35\\WObj:=wobj0); ! SLOT PROGRAM MADE WITH ! RELTOOL-FUNCTION Set do_HPWaterR1; MoveL RelTool(pPosition,wid_mm/2,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=obWobj; MoveL RelTool(pPosition,wid_mm/2,(len_mm-wid_mm)/2,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=obWobj; MoveC RelTool(pPosition,0,len_mm/2,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,-wid_mm*0.5,(len_mm-wid_mm)/2,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=obWobj; MoveL RelTool(pPosition,-wid_mm*0.5,-(len_mm-wid_mm)*0.5,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=obWobj; MoveC RelTool(pPosition,0,-len_mm*0.5,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,wid_mm*0.5,-(len_mm-wid_mm)*0.5,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpe ed,zZone,tJet35\\WObj:=obWobj; MoveL RelTool(pPosition,wid_mm/2,(len_mm-wid_mm)/2,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,fine,tJet35\\WObj:=obWobj; Reset do_HPWaterR1; WaitTime 0.2; ELSE ! SLOTPROGRAM ! THE TRIM WILL BE PROCESSED IN ! ACTIVATED WORKOBJECT ! pPosition:=CRobT(\\Tool:=tJet35\\WObj:=obWobj); ! Set do_HPWaterR1; ! MoveL Offs(pPosition,wid_mm/2,0,0),vSpeed,zZone,tJet35\\WObj:=obWobj; MoveL Offs(pPosition,wid_mm/2,(len_mm-wid_mm)/2,0),vSpeed,zZone,tJet35\\WObj:=obWobj; MoveC Offs(pPosition,0,len_mm/2,0),Offs(pPosition,-wid_mm/2,(len_mm-wid_mm)*0.5,0),v10,zZone,tJet35\\WObj:=obWobj; MoveL Offs(pPosition,-wid_mm*0.5,-(len_mm-wid_mm)*0.5,0),vSpeed,zZone,tJet35\\WObj:=obWobj; MoveC Offs(pPosition,0,-len_mm*0.5,0),Offs(pPosition,wid_mm/2,-(len_mm-wid_mm)*0.5,0),v10,zZone,tJet35\\WObj:=obWobj; MoveL Offs(pPosition,wid_mm/2,(len_mm-wid_mm)*0.5,0),vSpeed,fine,tJet35\\WObj:=obWobj; Reset do_HPWaterR1; WaitTime 0.2; ENDIF ENDPROC PROC OblongHole( bool bRelTool, robtarget pPosition, num nRadius_mm, num nLength_mm, speeddata vSpeed, PERS tooldata tTool, PERS wobjdata obWobj) VAR num nLengthTot:=0; VAR num nLengthHalf:=0; TriggIO trStart,nTimeOp\\Time\\DOp:=do_HPWaterR2,1; TriggIO trStop,nTimeCl\\Time\\DOp:=do_HPWaterR2,0; nLengthHalf:=nLength_mm/2; nLengthTot:=nLengthHalf+nRadius_mm; IF bRelTool THEN !Oblongprogram made with RelTool-function !The cut will be 90deg towards active tool TriggL RelTool(pPosition,-1,nRadius_mm,0\\Rx:=0\\Ry:=0\\Rz:=0),vStart,trStart,z1,tTool\\WObj:=obWobj; MoveC RelTool(pPosition,-nRadius_mm/2-1,nRadius_mm/2,0\\Ry:=0\\Rz:=0),RelTool(pPosition,-1,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,z1,tTool\\WObj:=obWobj; MoveL RelTool(pPosition,nLengthHalf,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,z1,tTool\\WObj:=obWobj; MoveC RelTool(pPosition,nLengthTot,nRadius_mm,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,nLengthHalf,nRadius_mm*2,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,z1,tTool\\WObj:=obWobj; MoveL RelTool(pPosition,-nLengthHalf,nRadius_mm*2,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,z1,tTool\\WObj:=obWobj; MoveC RelTool(pPosition,-nLengthTot,nRadius_mm,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,-nLengthHalf,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,z1,tTool\\WObj:=obWobj; MoveL RelTool(pPosition,1,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,z1,tTool\\WObj:=obWobj; TriggC RelTool(pPosition,nRadius_mm/2+1,nRadius_mm/2,0\\Rx:=0\\Ry:=0\\Rz:=0),RelTool(pPosition,1,nRadius_mm,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,trStop,z1,tTool\\WObj:=obWobj; ELSE !Oblongprogram !The cut will be 90deg towards active workobject TriggL Offs(pPosition,-1,nRadius_mm,0),vStart,trStart,z1,tTool\\WObj:=obWobj; MoveC Offs(pPosition,-nRadius_mm/2-1,nRadius_mm/2,0),Offs(pPosition,-1,0,0),vSpeed,z1,tTool\\WObj:=obWobj; MoveL Offs(pPosition,nLengthHalf,0,0),vSpeed,z1,tTool\\WObj:=obWobj; MoveC Offs(pPosition,nLengthTot,nRadius_mm,0),Offs(pPosition,nLengthHalf,nRadius_mm*2,0),vSpeed,z1,tTool\\WObj:=obW obj; MoveL Offs(pPosition,-nLengthHalf,nRadius_mm*2,0),vSpeed,z1,tTool\\WObj:=obWobj; MoveC Offs(pPosition,-nLengthTot,nRadius_mm,0),Offs(pPosition,-nLengthHalf,0,0),vSpeed,z1,tTool\\WObj:=obWobj; MoveL Offs(pPosition,1,0,0),vSpeed,z1,tTool\\WObj:=obWobj; TriggC Offs(pPosition,nRadius_mm/2+1,nRadius_mm/2,0),Offs(pPosition,1,nRadius_mm,0),vSpeed,trStop,z1,tTool\\WObj:=obWobj; ENDIF ENDPROC PROC hexagon(bool bRelTool, robtarget pPosition, num sidelength, speeddata vSpeed, zonedata zZone, PERS tooldata tTool, PERS wobjdata obWobj) !x{0}:=0; !y{0}:=0; x{1}:=sidelength/2*sqrt(3); y{1}:=sidelength/(-2); x{2}:=x{1}*2; y{2}:=0; x{3}:=x{2}; y{3}:=sidelength; x{4}:=x{1}; y{4}:=(y{1}-sidelength)*(-1); x{5}:=0; y{5}:=sidelength; !pPosition:=CRobT \\Tool:=tJet35\\WObj:=obWobj; pPosition:=CRobT(\\Tool:=tJet35\\WObj:=obWobj); Set do_HPWaterR1; IF bRelTool THEN ! SQUARE PROGRAM ! with tool-offset !pPosition:=CRobT(\\Tool:=tJet35\\WObj:=wobj0); Set do_HPWaterR1; MoveL RelTool(pPosition,x{1},y{1},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,x{2},y{2},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,x{3},y{3},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,x{4},y{4},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,x{5},y{5},0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL RelTool(pPosition,0,0,0\\Rx:=0\\Ry:=0\\Rz:=0),vSpeed,zZone,tJet35\\WObj:=wobj0; ELSE ! SQUARE PROGRAM ! TRIM WILL BE PERFORMED IN THE ! ACTIVE WORKOBJECT MoveL Offs(pPosition,x{1},y{1},0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL Offs(pPosition,x{2},y{2},0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL Offs(pPosition,x{3},y{3},0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL Offs(pPosition,x{4},y{4},0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL Offs(pPosition,x{5},y{5},0),vSpeed,zZone,tJet35\\WObj:=wobj0; MoveL Offs(pPosition,0,0,0),vSpeed,zZone,tJet35\\WObj:=wobj0; ENDIF Reset do_HPWaterR1; WaitTime 0.2; ENDPROC ! ************************************** ! * R+S Technik GmbH (Robotics) * ! ************************************** ! Version: 1.3 ! Date: 07/08/2007 ! Author: Michael Grosskopf ! Procedure: GOHOME ! Parameters: none ! Details: This routine sends the ! robot back from any ! position. ! CAUTION: DO NOT RUN IN "AUTO" ! ************************************** PROC GO_HOME() IF OpMode()<>OP_MAN_PROG EXIT; actpos:=CRobT(\\Tool:=tJet35\\WObj:=wobj0); MoveL RelTool(actpos,0,0,-50\\Rx:=0\\Ry:=0\\Rz:=0), v200, fine, tJet35\\WObj:=wobj0; curr_xyz:=CPos(\\Tool:=tJet35\\WObj:=wobj0); !IF curr_xyz.y>0 THEN !MoveJ SafeLeft,v50,z100,tJet35\\WObj:=FRONT_R; !ELSE !MoveJ SafRight,v50,z100,tJet35\\WObj:=FRONT_L; !ENDIF MoveJ pH omeOut, v5000, z100, tJet35\\WObj:=wobj0; MoveL pHome, v1000, fine, tJet35\\WObj:=wobj0; EXIT; ENDPROC PROC R2_ActZones() !Home inside C2_1:=pHome.trans; WZSphDef\\Inside,box_Home,C2_1,R2_1; WZDOSet\\Stat,kub_Home\\Inside,box_Home,sdo_WZHomeR2,1; ENDPROC PROC CollZone2_Off() Set doCoSetR2_2; ENDPROC PROC CollZone1_Off() Set doCoSetR2_1; ENDPROC PROC CollZone2_On() IF DOutput(do_HPWaterR2)=1 AND DInput(diCoCheckR2_2)=0 THEN Reset do_HPWaterR2; WaitDI diCoCheckR2_2,1; Set do_HPWaterR2; ELSEIF diCoCheckR2_2=0 THEN WaitDI diCoCheckR2_2,1; ENDIF Reset doCoSetR2_2; ENDPROC PROC CollZone1_On() IF DOutput(do_HPWaterR2)=1 AND DInput(diCoCheckR2_1)=0 THEN Reset do_HPWaterR2; WaitDI diCoCheckR2_1,1; Set do_HPWaterR2; ELSEIF diCoCheckR2_1=0 THEN WaitDI diCoCheckR2_1,1; ENDIF Reset doCoSetR2_1; ENDPROC PROC movtoolframe(num alpha,num beta,num gamma) ! This pocedure to be called to correct the angles of a tool-coordinate-system ! The toolname has to be set according to the tool yo are modifying. trainingtool02.tframe.rot := OrientZYX(gamma,beta,alpha); ENDPROC !*************************************** ! SETTING AND MOVING OF A TEMPORARY ! COORDINATE-SYSTEM !*************************************** PROC MOVFRAME( num alpha, num beta, num gamma) ! PROCEDURE TO BE CALLED AFTER ! MOVING WITH A "FINE" MOTION ! WILL MOVE AND ROTATE "TEMPOBJ" ! TAKE NOTICE THAT THE ORDER OF ! ROTATION INSTRUCTIONS IS: ! 1. ANGLE AROUND Z-AXIS, ! 2. ANGLE AROUND Y-AXIS, ! 3. ANGLE AROUND X-AXIS, !*************************************** ! DEFINITION OF THE XYZ-POSITION BY: !*************************************** actpos:=CRobT(\\Tool:=tJet35\\WObj:=wobj0); ! ! MOVE THE WORKOBJECT "TEMPOBJ" ! TO THE NEW POSITION: ! tempworkobj.oframe.trans:=actpos.trans; !*************************************** ! ROTATE THE WORKOBJECT "TEMPOBJ" TO ! THE ANGELS ACCORDING TO THE ! ARGUMENTS IN THE PROCESS-CALL !*************************************** tempworkobj.oframe.rot:=OrientZYX(gamma,beta,alpha); ! ENDPROC ENDMODULE MODULE user (SYSMODULE) ! Predefined user data !********************* ! Declaration of numeric registers reg1...reg5 VAR num reg1 := 0; VAR num reg2 := 0; VAR num reg3 := 0; VAR num reg4 := 0; VAR num reg5 := 0; ! Declaration of stopwatch clock1 VAR clock clock1; ! Template for declaration of workobject wobj1 !TASK PERS wobjdata wobj1 := [FALSE, TRUE, "