最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

abb机器人程序

来源:动视网 责编:小OO 时间:2025-09-23 21:02:47
文档

abb机器人程序

MODULEBASE(SYSMODULE,NOSTEPIN,VIEWONLY)!Systemmodulewithbasicpredefinedsystemdata!************************************************!Systemdatatool0,wobj0andload0!Donottranslateordeletetool0,wobj0,load0PERStooldatatool0:=[TRUE,[[0,0,0],[1,0,0,0]],[0.0
推荐度:
导读MODULEBASE(SYSMODULE,NOSTEPIN,VIEWONLY)!Systemmodulewithbasicpredefinedsystemdata!************************************************!Systemdatatool0,wobj0andload0!Donottranslateordeletetool0,wobj0,load0PERStooldatatool0:=[TRUE,[[0,0,0],[1,0,0,0]],[0.0
MODULE BASE (SYSMODULE, NOSTEPIN, VIEWONLY)

! 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, "

文档

abb机器人程序

MODULEBASE(SYSMODULE,NOSTEPIN,VIEWONLY)!Systemmodulewithbasicpredefinedsystemdata!************************************************!Systemdatatool0,wobj0andload0!Donottranslateordeletetool0,wobj0,load0PERStooldatatool0:=[TRUE,[[0,0,0],[1,0,0,0]],[0.0
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top