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:
v5bisv7000: Geschwindigkeit in mm/svmax: Maximale Robotergeschwindigkeitv500: Häufig verwendete mittlere Geschwindigkeit (500 mm/s)
Zonendaten bestimmen den Übergangsradius bei verketteten Bewegungen:
fine: Exakter Stopp am Zielpunkt (kein Überschleifen)z0bisz200: Überschleifradius in mmz10: 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.