KUKA Programming KRL Examples
This page contains source code for programs written for the KUKA robots in the KRL language, a proprietary scripting language developed by KUKA.
Basic Program that moves robot in a rectangle
;Any line that has a semicolon in front of it is a comment and isn't read by the machine
;Define the name of the program
DEF ExampleProgramName()
;these are some set up variables you don't have to worry about right now
GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
$APO.CDIS = 0.5000
BAS (#INITMOV,0)
BAS (#VEL_PTP,20)
BAS (#ACC_PTP,20)
$advance=5
;Defines the coordinates of the tool attached to the robot, relative to the flange
$TOOL={X 0, Y 0, Z 0, A 0, B 0, C 0}
;Defines the Origin of the base, where all the consequtive commands are relative to
$BASE={X -75, Y -1638, Z 492, A 0, B 0, C 0}
;Set speed in meters/second
$VEL.CP=0.3
;First we must tell the program what the initial axis position should be
PTP {A1 90, A2 -75, A3 100, A4 169, A5 -60, A6 -150, E1 0, E2 180, E3 0, E4 0, E5 0, E6 0}
;Finally, we give it a series of LIN commands to trace out a square in space
;E1 and E2 are the external axis
LIN {X 0, Y 0, Z 400, A 0, B 0, C 180, E1 0, E2 180} C_DIS
LIN {X 0, Y 300, Z 400, A 0, B 0, C 180, E1 0, E2 180} C_DIS
LIN {X 300, Y 300, Z 400, A 0, B 0, C 180, E1 0, E2 180} C_DIS
LIN {X 300, Y 0, Z 400, A 0, B 0, C 180, E1 0, E2 180} C_DIS
LIN {X 0, Y 0, Z 400, A 90, B 0, C 180, E1 0, E2 180} C_DIS
END
Basic For Loop
DEF MAIN_PROG()
DECL INT ROW, COL
ROW = 1
COL = 1
PTP HOME
FOR ROW = 1 TO 3
FOR COL = 1 TO 2
PTP P01
PTP P02
TASK01() ;CALLS SUBPROGRAM
ENDFOR
ENDFOR
;---------------------------------------------
;START OF SUBPROGRAM
DEF TASK01()
PTP P03
PTP P04
END
Interrupts
&ACCESS RVO
&REL 9
&PARAM EDITMASK = *
&PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe
DEF Interrup_TEST( )
INI
PTP HOME Vel= 100 %
LOOP
PTP OverStartFasatura Vel=100 %
INTERRUPT WITH BRAKE DECL 21 WHEN i1_InterruptOn == TRUE DO OnInterrupt()
INTERRUPT ON 21
LIN StartFasatura Vel=2 m/s
LIN EndFasatura Vel=0.5 m/s
INTERRUPT OFF
HALT
ENDLOOP
OnInterrupt()
PTP HOME Vel= 100 %
END
DEF OnInterrupt()
INTERRUPT OFF
HALT
LIN StartFasatura Vel=2 m/s
WAIT SEC 1
INTERRUPT WITH BRAKE DECL 21 WHEN i1_InterruptOn == TRUE DO OnInterrupt()
INTERRUPT ON 21
RESUME
END