Hello everyone,
KR210-R3100-2F
KR C4
KSS 8.6.11
ArcTech Basic 3.6
I'm trying to write 3 subprograms to replace the ARCON, ARCSWI, and ARCOFF commands for ArcTech. Has anyone else done this before? I'm still learning expert programming for KUKA and am consulting the manuals for guidance. I've read and re-read the sections on Subprograms & Functions, but keep getting compilation errors. Below is a short program to test the basic parts of ArcTech.
From one ArcTech command to the next, the variables I want to be able to change are "WP", "WDAT", and the position, so these are the parameters of the 3 subprograms. I've declared the weld data for WDATs 1, 2, and 3 in the DAT file. I've done the same for WP1 and all the position data. However, I'm still getting "Runtime data cannot be used" when I load this project to my controller. Specifically, the errors are on the lines that begin with "TRIGGER WHEN PATH" and "TRIGGER WHEN DISTANCE".
It's my understanding that this error can occur when a variable that was declared in the SRC file of the main program is used in a subprogram. Which is why I'm confused, since all the variables passed by value to the subprogram parameters are declared in the data list.
Below is my SRC file:
DEF KRLArcTest( )
$ADVANCE=3
BAS(#TOOL, 4)
$BASE=$NULLFRAME
$BWDSTART = FALSE
LDAT_ACT = {VEL 0.1,ACC 100,APO_DIST 5,APO_FAC 50.0000,AXIS_VEL 100.000,AXIS_ACC 100.000,ORI_TYP #VAR,CIRC_TYP #BASE,JERK_FAC 50.0000,GEAR_JERK 100.000,EXAX_IGN 0,CB {AUX_PT {ORI #CONSIDER,E1 #CONSIDER,E2 #CONSIDER,E3 #CONSIDER,E4 #CONSIDER,E5 #CONSIDER,E6 #CONSIDER},TARGET_PT {ORI #INTERPOLATE,E1 #INTERPOLATE,E2 #INTERPOLATE,E3 #INTERPOLATE,E4 #INTERPOLATE,E5 #INTERPOLATE,E6 #INTERPOLATE}}}
FDAT_ACT = {TOOL_NO 4,BASE_NO 0,IPO_FRAME #BASE,POINT2[] " "}
;pos 1, ARCON with job 1
ARCSTART(WP1, WDAT1, P1)
;pos 2, move to new point at 0.01 m/s while keeping previous job
$VEL.CP=0.01
LIN P2 C_Dis C_Dis
;pos 3, ARCSWI to job 2
ARCCHANGE(WP1, WDAT2, P3)
;pos 4, ARCSWI to job 3
ARCCHANGE(WP1, WDAT3, P4)
;pos 5, ARCOFF
ARCSTOP(WP1, WDAT3, P5)
$VEL.CP=0.25
$VEL_APPL.CP=0.1
EscapeHome()
END
DEF ARCSTART(WP :IN, WDAT :IN, POINT :IN)
DECL stArcDat_T WP, WDAT
E6POS POINT
BAS(#CP_PARAMS, 0.1)
SET_CD_PARAMS (0)
TRIGGER WHEN DISTANCE = 1 DELAY = ArcGetDelay(#PreDefinition, WDAT) DO ArcMainNG(#PreDefinition, WDAT, WP) PRIO = -1
TRIGGER WHEN PATH = ArcGetPath(#OnTheFlyArcOn, WDAT) DELAY = ArcGetDelay(#GasPreflow, WDAT) DO ArcMainNG(#GasPreflow, WDAT, WP) PRIO = -1
TRIGGER WHEN PATH = ArcGetPath(#OnTheFlyArcOn, WDAT) DELAY = ArcGetDelay(#ArcPreOn, WDAT) DO ArcMainNG(#ArcOnMoveStd, WDAT, WP) PRIO = -1
ArcMainNG(#ArcOnBeforeMoveStd, WDAT, WP)
LIN POINT
ArcMainNG(#ArcOnAfterMoveStd, WDAT, WP)
END
DEF ARCCHANGE(WP :IN, WDAT :IN, POINT :IN)
DECL stArcDat_T WP, WDAT
E6POS POINT
BAS(#CP_PARAMS, gArcBasVelDefinition)
SET_CD_PARAMS (0)
TRIGGER WHEN DISTANCE = 1 DELAY = 0 DO ArcMainNG(#ArcSwiMoveStd, WDAT, WP) PRIO = -1
ArcMainNG(#ArcSwiBeforeMoveStd, WDAT, WP)
LIN POINT C_Dis C_Dis
ArcMainNG(#ArcSwiAfterMoveStd, WDAT, WP)
END
DEF ARCSTOP(WP :IN, WDAT :IN, POINT :IN)
DECL stArcDat_T WP, WDAT
E6POS POINT
BAS(#CP_PARAMS, gArcBasVelDefinition)
SET_CD_PARAMS (0)
TRIGGER WHEN PATH = ArcGetPath(#ArcOffBefore, WDAT) DELAY = 0 DO ArcMainNG(#ArcOffBeforeOffStd, WDAT, WP) PRIO = -1
TRIGGER WHEN PATH = ArcGetPath(#ArcOffBefore2, WDAT) DELAY = 0 DO ArcMainNG(#ArcOffBeforeOffStd2, WDAT, WP) PRIO = -1
TRIGGER WHEN PATH = ArcGetPath(#OnTheFlyArcOff, WDAT) DELAY = 0 DO ArcMainNG(#ArcOffMoveStd, WDAT, WP) PRIO = -1
ArcMainNG(#ArcOffBeforeMoveStd, WDAT, WP)
LIN POINT
ArcMainNG(#ArcOffAfterMoveStd, WDAT, WP)
END
Display More
And my data list:
DEFDAT KRLArcTest PUBLIC
;WDATs
DECL stArcDat_T WDAT1={WdatId[] "WDAT1",Info {Version 306020371,WId 1,WName[] "Fronius TPSi job mode"},Strike {JobModeId[] "Job mode",StartTime 0.0,PreFlowTime 0.0,Channel1 0.0,Channel2 0.0,Channel3 0.0,Channel4 0.0,Channel5 0.0,Channel6 0.0,Channel7 0.0,Channel8 0.0,PurgeTime 0.0},Weld {JobModeId[] "Job mode",ParamSetId[] "Set1",Velocity 0.01000000,Channel1 1.00000,Channel2 0.0,Channel3 0.0,Channel4 0.0,Channel5 0.0,Channel6 0.0,Channel7 0.0,Channel8 0.0},Weave {Pattern #None,Length 4.00000,Amplitude 2.00000,Angle 0.0,Frequency 2.00000,LeftSideDelay 0.0,RightSideDelay 0.0},Crater {JobModeId[] "Job mode",ParamSetId[] "Set2",CraterTime 0.0,PostflowTime 0.0,Channel1 1.00000,Channel2 0.0,Channel3 0.0,Channel4 0.0,Channel5 0.0,Channel6 0.0,Channel7 0.0,Channel8 0.0,BurnBackTime 0.0}}
DECL stArcDat_T WDAT2={WdatId[] "WDAT2",Info {Version 306020371,WId 1,WName[] "Fronius TPSi job mode"},Strike {JobModeId[] "Job mode",StartTime 0.0,PreFlowTime 0.0,Channel1 0.0,Channel2 0.0,Channel3 0.0,Channel4 0.0,Channel5 0.0,Channel6 0.0,Channel7 0.0,Channel8 0.0,PurgeTime 0.0},Weld {JobModeId[] "Job mode",ParamSetId[] "Set1",Velocity 0.01000000,Channel1 2.00000,Channel2 0.0,Channel3 0.0,Channel4 0.0,Channel5 0.0,Channel6 0.0,Channel7 0.0,Channel8 0.0},Weave {Pattern #None,Length 4.00000,Amplitude 2.00000,Angle 0.0,Frequency 2.00000,LeftSideDelay 0.0,RightSideDelay 0.0},Crater {JobModeId[] "Job mode",ParamSetId[] "Set2",CraterTime 0.0,PostflowTime 0.0,Channel1 2.00000,Channel2 0.0,Channel3 0.0,Channel4 0.0,Channel5 0.0,Channel6 0.0,Channel7 0.0,Channel8 0.0,BurnBackTime 0.0}}
DECL stArcDat_T WDAT3={WdatId[] "WDAT3",Info {Version 306020371,WId 1,WName[] "Fronius TPSi job mode"},Strike {JobModeId[] "Job mode",StartTime 0.0,PreFlowTime 0.0,Channel1 0.0,Channel2 0.0,Channel3 0.0,Channel4 0.0,Channel5 0.0,Channel6 0.0,Channel7 0.0,Channel8 0.0,PurgeTime 0.0},Weld {JobModeId[] "Job mode",ParamSetId[] "Set1",Velocity 0.01000000,Channel1 3.00000,Channel2 0.0,Channel3 0.0,Channel4 0.0,Channel5 0.0,Channel6 0.0,Channel7 0.0,Channel8 0.0},Weave {Pattern #None,Length 4.00000,Amplitude 2.00000,Angle 0.0,Frequency 2.00000,LeftSideDelay 0.0,RightSideDelay 0.0},Crater {JobModeId[] "Job mode",ParamSetId[] "Set2",CraterTime 0.0,PostflowTime 0.0,Channel1 3.00000,Channel2 0.0,Channel3 0.0,Channel4 0.0,Channel5 0.0,Channel6 0.0,Channel7 0.0,Channel8 0.0,BurnBackTime 0.0}}
;WP1
DECL stArcDat_T WP1={WdatId[] "WP1",Info {Version 306020371},Strike {SeamName[] " ",PartName[] " ",SeamNumber 1,PartNumber 1,DesiredLength 0.0,LengthTolNeg 0.0,LengthTolPos 0.0,LengthCtrlActive FALSE},Advanced {BitCodedRobotMark 0}}
;Positions
DECL E6POS P1={X 1894.2, Y -92.3, Z 799.1, A 172.1, B -0.3, C -179.8}
DECL E6POS P2={X 1955.8, Y -88.7, Z 798.6, A 172.1, B -0.3, C -179.8}
DECL E6POS P3={X 2007.3, Y -54.8, Z 798.2, A 172.1, B -0.3, C -179.8}
DECL E6POS P4={X 2041.0, Y -12.0, Z 798.0, A 172.1, B -0.3, C -179.8}
DECL E6POS P5={X 1997.0, Y 8.5, Z 797.5, A 172.1, B -0.3, C -179.8}
ENDDAT
Display More