TRYPLC
QC26
VENDOR CHEAT SHEET

One pick-and-place, seven robot languages

The same 12-step pick-and-place cycle, written in ABB RAPID, KUKA KRL, FANUC TP, Mitsubishi MELFA BASIC V, Universal Robots URScript, Yaskawa INFORM, and Kawasaki AS. Each row is one logical step — read across to see how every controller expresses it.

Step
ABB
RAPID
KUKA
KRL
FANUC
TP
Mitsubishi
MELFA BASIC V
Universal
URScript
Yaskawa
INFORM
Kawasaki
AS
01
Program header
PROC main()DEF main()/PROG MAIN10 ' Pick and placedef main():NOP.PROGRAM main()
02
Set default speed
! speed via v-tag $VEL.CP = 0.5 ! speed in motion20 Spd 100 # speed in motion! speed in motion SPEED 50 ALWAYS
03
Move joint to home
MoveJ home, v1000, fine, tool0; PTP home J P[1] 100% FINE30 Mov P0 movej(home, a=1.4, v=1.05)MOVJ P000 VJ=50.00 JMOVE home
04
Move linear to pick
MoveL pick, v500, fine, tool0; LIN pick L P[2] 500mm/sec FINE40 Mvs P1 movel(pick, a=1.2, v=0.25)MOVL P001 V=100.0 LMOVE pick
05
Close gripper (DO ON)
SetDO doGrip, 1; $OUT[1] = TRUE DO[1]=ON50 M_Out(1) = 1 set_digital_out(1, True)DOUT OT#(1) ON SIGNAL 1
06
Wait 0.5 s
WaitTime 0.5; WAIT SEC 0.5 WAIT 0.50(sec)60 Dly 0.5 sleep(0.5)TIMER T=0.50 TWAIT 0.5
07
Retract to home
MoveL home, v1000, fine, tool0; LIN home L P[1] 1000mm/sec FINE70 Mvs P0 movel(home, a=1.2, v=0.5)MOVL P000 V=100.0 LMOVE home
08
Move linear to place
MoveL place, v500, fine, tool0; LIN place L P[3] 500mm/sec FINE80 Mvs P2 movel(place, a=1.2, v=0.25)MOVL P002 V=100.0 LMOVE place
09
Open gripper (DO OFF)
ResetDO doGrip; $OUT[1] = FALSE DO[1]=OFF90 M_Out(1) = 0 set_digital_out(1, False)DOUT OT#(1) OFF SIGNAL -1
10
Wait 0.5 s
WaitTime 0.5; WAIT SEC 0.5 WAIT 0.50(sec)100 Dly 0.5 sleep(0.5)TIMER T=0.50 TWAIT 0.5
11
Return to home
MoveJ home, v1000, fine, tool0; PTP home J P[1] 100% FINE110 Mov P0 movej(home, a=1.4, v=1.05)MOVJ P000 VJ=50.00 JMOVE home
12
End of program
ENDPROCEND/END120 EndendEND.END

Full programs, side-by-side

The cheat sheet above is line-aligned. Below is each language as a single, copy-pasteable program.

ABB
RAPID
PROC main()
  ! speed via v-tag
  MoveJ home, v1000, fine, tool0;
  MoveL pick, v500, fine, tool0;
  SetDO doGrip, 1;
  WaitTime 0.5;
  MoveL home, v1000, fine, tool0;
  MoveL place, v500, fine, tool0;
  ResetDO doGrip;
  WaitTime 0.5;
  MoveJ home, v1000, fine, tool0;
ENDPROC
DEF main()
  $VEL.CP = 0.5
  PTP home
  LIN pick
  $OUT[1] = TRUE
  WAIT SEC 0.5
  LIN home
  LIN place
  $OUT[1] = FALSE
  WAIT SEC 0.5
  PTP home
END
/PROG MAIN
  ! speed in motion
  J P[1] 100% FINE
  L P[2] 500mm/sec FINE
  DO[1]=ON
  WAIT 0.50(sec)
  L P[1] 1000mm/sec FINE
  L P[3] 500mm/sec FINE
  DO[1]=OFF
  WAIT 0.50(sec)
  J P[1] 100% FINE
/END
Mitsubishi
MELFA BASIC V
10 ' Pick and place
20 Spd 100
30 Mov P0
40 Mvs P1
50 M_Out(1) = 1
60 Dly 0.5
70 Mvs P0
80 Mvs P2
90 M_Out(1) = 0
100 Dly 0.5
110 Mov P0
120 End
Universal
URScript
def main():
  # speed in motion
  movej(home, a=1.4, v=1.05)
  movel(pick, a=1.2, v=0.25)
  set_digital_out(1, True)
  sleep(0.5)
  movel(home, a=1.2, v=0.5)
  movel(place, a=1.2, v=0.25)
  set_digital_out(1, False)
  sleep(0.5)
  movej(home, a=1.4, v=1.05)
end
Yaskawa
INFORM
NOP
! speed in motion
MOVJ P000 VJ=50.00
MOVL P001 V=100.0
DOUT OT#(1) ON
TIMER T=0.50
MOVL P000 V=100.0
MOVL P002 V=100.0
DOUT OT#(1) OFF
TIMER T=0.50
MOVJ P000 VJ=50.00
END
Kawasaki
AS
.PROGRAM main()
  SPEED 50 ALWAYS
  JMOVE home
  LMOVE pick
  SIGNAL 1
  TWAIT 0.5
  LMOVE home
  LMOVE place
  SIGNAL -1
  TWAIT 0.5
  JMOVE home
.END

Notes

  • FANUC TP encodes speed inside each motion line; ABB RAPID uses a separate v-tag (v500, v1000); KUKA KRL sets a global $VEL.CP before motion.
  • Yaskawa INFORM teaches positions as P000…P002; FANUC TP uses P[1]…P[3]; URScript expects full pose literals like p[x,y,z,rx,ry,rz].
  • Digital outputs differ in syntax but mean the same thing: ABB SetDO, KUKA $OUT[], FANUC DO[], MELFA M_Out(), URScript set_digital_out, Yaskawa DOUT OT#(), Kawasaki SIGNAL n (-n = OFF).
  • MELFA BASIC V requires line numbers; the others do not.