Zurück zum Blog
Roboterprogrammierung9 min

ABB RAPID Programmierung: Grundlagen und Best Practices für Einsteiger und Profis

RAPID ist ABBs Robotersprache – ausdrucksstark, strukturiert und in vieler Hinsicht moderner als KRL. Dieser Leitfaden zeigt Ihnen, wie Sie effektiv programmieren.

Einführung in ABB RAPID

RAPID (Robot Application Programming Interactive Design) ist die Programmiersprache des ABB IRC5-Controllers. Im Vergleich zu KUKA KRL ist RAPID deutlich strukturierter und bietet echte Hochsprachenkonstrukte wie rekursive Funktionen, strukturierte Datentypen und Exception Handling. Wer einmal RAPID beherrscht, kann komplexe Roboterprogramme entwickeln, die wartbar, wiederverwendbar und skalierbar sind.

Grundstruktur: Module, Prozeduren und Funktionen

Ein RAPID-Programm besteht aus einem oder mehreren Modulen. Jedes Modul enthält Datendeklarationen und Routinen.

MODULE MainModule
  ! Globale Variablen
  PERS tooldata MyTool := [TRUE, [[0,0,100],[1,0,0,0]], [2,[0,0,50],[1,0,0,0],0,0,0]];
  PERS wobjdata MyWobj := [FALSE, TRUE, "", [[0,0,0],[1,0,0,0]],[[0,0,0],[1,0,0,0]]];

  PROC main()
    ! Hauptprogramm
    InitRobot;
    RunPickPlace;
  ENDPROC

  PROC InitRobot()
    AccSet 80, 80;
    VelSet 80, 1000;
  ENDPROC

ENDMODULE

Drei Arten von Routinen existieren in RAPID:

  • PROC: Prozedur, kein Rückgabewert (wie eine Subroutine)
  • FUNC: Funktion mit Rückgabewert
  • TRAP: Interrupt-Routine, wird durch externe Ereignisse ausgelöst

Wichtige Datentypen

robtarget – Zielposition

Der wichtigste Datentyp in RAPID. Ein robtarget definiert Position und Orientierung des TCP sowie Achskonfiguration und externe Achsen:

CONST robtarget pHome := [[500,0,600],[0.707,0,0.707,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

Die vier Felder: [Translationsvektor], [Quaternion-Orientierung], [Achskonfiguration], [externe Achsen]. 9E9 bedeutet "nicht definiert" für nicht vorhandene externe Achsen.

jointtarget – Achsposition

Für Bewegungen zu definierten Achsstellungen (z.B. Homeposition):

CONST jointtarget jHome := [[0,-30,30,0,90,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

tooldata – Werkzeugdaten

Definiert den Tool Center Point (TCP) und die Masse des Werkzeugs für die Dynamikberechnung:

PERS tooldata tGripper := [TRUE,[[0,0,150],[1,0,0,0]],[3,[0,0,75],[1,0,0,0],0,0,0]];

wobjdata – Werkstückobjekt

Definiert das Koordinatensystem des Werkstücks. Beim Programmieren relativ zu einem Werkstück können Programme bei Tischpositionsänderungen einfach durch Aktualisierung der wobjdata angepasst werden.

Bewegungsinstruktionen

MoveL – Lineare Bewegung

MoveL pTarget, v500, z10, tGripper WObj:=MyWobj;

Parameter: Zielpunkt, Geschwindigkeit (v500 = 500 mm/s), Zone (z10 = 10 mm Übergaberadius), Werkzeug, optional: Werkstückobjekt.

MoveJ – Achsinterpolierte Bewegung

MoveJ pHome, v1000, z50, tGripper;

Schnellste Bewegungsart. Alle Achsen bewegen sich gleichzeitig und erreichen den Zielpunkt gleichzeitig. Nicht für präzise Bahnführung geeignet.

MoveC – Kreisbewegung

MoveC pVia, pEnd, v300, z5, tGripper;

Drei Punkte definieren den Kreisbogen: Startpunkt (aktuelle Position), Via-Punkt, Endpunkt. Achtung: Der TCP muss alle drei Punkte im gleichen Werkzeugkoordinatensystem anfahren.

MoveAbsJ – Absolute Achsbewegung

MoveAbsJ jHome, v500, fine, tGripper;

Bewegt den Roboter zu einer definierten Achsstellung. Unabhängig von TCP und Werkzeugdaten – ideal für Hompositionen und Kalibrierfahrten.

Speed und Zone Daten

Vordefinierte Geschwindigkeitsdaten in RAPID:

  • v5 bis v7000: Geschwindigkeit in mm/s
  • vmax: Maximale Robotergeschwindigkeit
  • v500: Häufig verwendete mittlere Geschwindigkeit (500 mm/s)

Zonendaten bestimmen den Übergangsradius bei verketteten Bewegungen:

  • fine: Exakter Stopp am Zielpunkt (kein Überschleifen)
  • z0 bis z200: Überschleifradius in mm
  • z10: Typische Zone für verkettete Pick&Place-Bewegungen

Fehlerbehandlung mit ERROR-Handler

RAPID bietet elegantes Exception Handling mit ERROR-Handlern:

PROC SafeMove(robtarget pTarget)
  MoveL pTarget, v500, fine, tGripper;
  ERROR
    IF ERRNO = ERR_PATH_STOP THEN
      ! Bewegung wurde unterbrochen, sicher parken
      MoveAbsJ jHome, v200, fine, tGripper;
      TPWrite "Bewegungsfehler aufgetreten, Home angefahren";
      RAISE;  ! Fehler weitergeben
    ENDIF
ENDPROC

Häufige Fehlerkonstanten: ERR_PATH_STOP, ERR_MAXSPEED, ERR_OUTOFREACH, ERR_ROBLIMIT.

Interrupts und TRAP-Routinen

Für zeitkritische Reaktionen auf externe Signale:

VAR intnum iStopSignal;

PROC main()
  CONNECT iStopSignal WITH TrapStop;
  ISignalDI di_EmergencyInput, 1, iStopSignal;
  ! ... Hauptprogramm
ENDPROC

TRAP TrapStop
  StopMove;
  TPWrite "Notstop aktiviert!";
ENDTRAP

FlexPendant und RobotStudio

Das FlexPendant (Bediengerät) ermöglicht das Teach-In von Positionen im Jog-Modus. Best Practice: Verwenden Sie das FlexPendant nur für das Einmessen von Positionen. Die eigentliche Programmlogik sollte in RobotStudio entwickelt werden. RobotStudio bietet Syntaxprüfung, Debugging, Simulation und eine komfortable Entwicklungsumgebung. Geänderte Module können über die RAPID-Dateifreigabe auf den Controller übertragen werden.

Best Practices

  • Positions-Naming: Konsistente Benennung: pPickReady, pPickApproach, pPickGrab
  • Modulstruktur: Ein Modul pro Funktion (Greifer, Kamera, Transport)
  • PERS vs. CONST: Teach-Positionen als PERS (veränderbar per FlexPendant), fixe Parameter als CONST
  • AccSet und VelSet: Immer am Programmanfang definieren, nicht in Schleifen
  • fine vs. Zone: fine nur wo wirklich nötig – es kostet Zeit durch den vollständigen Stopp

Fazit

RAPID ist eine ausgereifte, gut durchdachte Sprache für industrielle Roboterprogrammierung. Wer die grundlegenden Konzepte – Module, Datentypen, Bewegungsinstruktionen, Fehlerbehandlung – beherrscht, kann auch komplexe Applikationen strukturiert entwickeln. RobotStudio als Entwicklungs- und Simulationswerkzeug sollte von Anfang an in den Workflow integriert werden.

Haben Sie ein ähnliches Problem?

Unsere Experten helfen Ihnen schnell und direkt. Kein Callcenter, kein Ticket-System.

Kontakt aufnehmen