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