3HAC18152-3 RevB de Library
-
Upload
susheel-shukla -
Category
Documents
-
view
140 -
download
0
description
Transcript of 3HAC18152-3 RevB de Library
Anwendungshandbuch
Bewegungsfunktionen und Ereignisse
Steuerungssoftware IRC5RobotWare 5.0
Anwendungshandbuch
Bewegungsfunktionen und Ereignisse RobotWare 5.0
Dokumentnr: 3HAC 18152-3
Revision: B
Die Informationen in diesem Handbuch können ohne vorherige Ankündigung geändert werden und stellen keine Verpflichtung von ABB dar. ABB übernimmt keinerlei Verantwortung für etwaige Fehler, die dieses Handbuch enthalten kann.
Wenn nicht ausdrücklich in vorliegendem Handbuch angegeben, gibt ABB für keine hierin enthaltenen Informationen Garantie oder Gewährleistung für Verluste, Personen- oder Sachschäden, Verwendbarkeit für einen bestimmten Zweck oder Ähnliches.
In keinem Fall kann ABB haftbar gemacht werden für Schäden oder Folgeschäden, die sich aus der Anwendung dieses Dokuments oder der darin beschriebenen Produkte ergeben.
Dieses Handbuch darf weder ganz noch teilweise ohne vorherige schriftliche Genehmigung von ABB vervielfältigt oder kopiert werden, und der Inhalt darf nicht Dritten bekannt gegeben noch zu einem unautorisierten Zweck verwendet werden. Zuwiderhandlungen werden strafrechtlich verfolgt.
Zusätzliche Kopien dieses Handbuchs können zum jeweils aktuellen Preis von ABB bezogen werden.
© Copyright 2004 ABB Alle Rechte vorbehalten.
ABB Automation Technologies AB Robotics
SE-721 68 Västerås Schweden
Inhaltsverzeichnis
Übersicht ..........................................................................................................................................5Produktdokumentation, M2004........................................................................................................7Sicherheit..........................................................................................................................................9
1 World Zones 11
1.1 Übersicht .................................................................................................................................111.2 RAPID-Komponenten ..............................................................................................................131.3 Codebeispiele ...........................................................................................................................16
2 Fixed Position Events 19
2.1 Übersicht .................................................................................................................................192.2 RAPID-Komponenten und Systemparameter ..........................................................................212.3 Codebeispiele ...........................................................................................................................25
3 Independent Axes 27
3.1 Übersicht .................................................................................................................................273.2 Systemparameter ......................................................................................................................293.3 RAPID-Komponenten ..............................................................................................................303.4 Codebeispiele ...........................................................................................................................32
4 Path Recovery 35
4.1 Übersicht ..................................................................................................................................354.2 RAPID-Komponenten ..............................................................................................................364.3 Speichern der aktuellen Bahn...................................................................................................384.4 Bahnaufzeichnung ....................................................................................................................48
5 Path Offset 59
5.1 Übersicht ..................................................................................................................................595.2 RAPID-Komponenten ..............................................................................................................615.3 Zugehörige RAPID-Funktionalität...........................................................................................635.4 Codebeispiel .............................................................................................................................64
Index 67
3
Inhaltsverzeichnis
4
Übersicht
Übersicht
Über dieses Handbuch
Dieses Handbuch erläutert in Grundzügen, wann und wie die folgenden RobotWare-Optionen
verwendet werden:
• World Zones
• Fixed Position Events
• Independent Axes
• Path Recovery
• Path Offset
Verwendung
In diesem Handbuch können Sie nachschlagen, ob sich eine Option für die Lösung eines
Problems eignet. Außerdem beschreibt es, wie eine Option verwendet wird. Ausführliche
Informationen zur Syntax für RAPID-Routinen und dergleichen sind in diesem Handbuch
nicht enthalten. Diese Informationen erhalten Sie im entsprechenden Referenzhandbuch.
Wer sollte dieses Handbuch lesen?
Dieses Handbuch ist in erster Linie für Programmierer gedacht.
Voraussetzungen
Der Leser muss...
• mit Industrierobotern und ihren Grundbegriffen,
• der RAPID-Programmiersprache
• sowie mit Systemparametern und ihrer Konfiguration vertraut sein.
Aufbau der Kapitel
Dieses Handbuch setzt sich aus den folgenden Kapiteln zusammen:
Kapitel Inhalt
1. Beschreibt die Option World Zones.
2. Beschreibt die Option Fixed Position Events.
3. Beschreibt die Option Independent Axes.
5 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
Übersicht
(Forts.)
Referenzen
Revisionen
4. Beschreibt die Option Path Recovery.
5. Beschreibt die Option Path Offset.
Kapitel Inhalt
ReferenzDokumentken-nung
RAPID Referenzhandbuch - RAPID-Überblick 3HAC 16580-3
RAPID-Referenzhandbuch - Instruktionen, Funktionen und Datentypen
3HAC 16581-3
Benutzerhandbuch - IRC5 mit FlexPendant 3HAC 16590-3
Technisches Referenzhandbuch - Systemparameter 3HAC 17076-3
Revision Beschreibung
- Erste Ausgabe
A Geringfügige Korrekturen.
Optionsname Independent Movements wurde in Independent Axes geändert.
Path Recovery wurde Bahnaufzeichnung hinzugefügt.
B Neue Instruktionen für MultiMove-Systeme.
6 3HAC 18152-3 Revision: B
Produktdokumentation, M2004
Produktdokumentation, M2004
Allgemeines
Die Roboterdokumentation kann in mehrere Kategorien unterteilt werden. Die Liste beruht
auf der Informationsart in den Dokumenten, unabhängig davon, ob es sich um
Standardprodukte oder optionale Produkte handelt. Das heißt, dass eine Lieferung von
Roboterprodukten nicht alle aufgeführten Dokumente enthält, sondern nur die passenden für
die gelieferte Ausrüstung.
Jedoch können alle aufgeführten Dokumente bei ABB bestellt werden. Die erwähnten
Dokumente gelten für M2004-Robotersysteme.
Produkthandbücher
Sämtliche Hardware, Roboter und Steuerschränke werden mit einem Produkthandbuch
geliefert, das in zwei Teile gegliedert ist:
Produkthandbuch, Prozeduren
• Sicherheitsinformationen
• Installation und Inbetriebnahme (Beschreibung der mechanischen Installation, der
elektrischen Anschlüsse und des Ladens der Systemsoftware)
• Wartung (Beschreibung aller erforderlichen vorbeugenden Wartungsmaßnahmen
einschließlich Intervallen)
• Reparatur (Beschreibung aller empfohlenen Reparaturvorgänge einschließlich des
Austauschs von Ersatzteilen)
• Zusätzliche Prozeduren, falls vorhanden (Kalibrierung, Stilllegung)
Produkthandbuch, Referenzinformation
• Referenzinformation (Artikelnummern für Dokumentation, auf die im
Produkthandbuch, in Prozeduren, Werkzeuglisten und Sicherheitsstandards verwiesen
wird)
• Teileliste
• Faltblätter oder Explosionszeichnungen
• Schaltpläne
Das als PDF veröffentlichte Produkthandbuch besteht aus nur einer Datei, in der beide Teile
als ein Produkthandbuch enthalten sind.
7 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
Produktdokumentation, M2004
(Forts.)
RobotWare-Handbücher
Die folgenden Handbücher beschreiben die Robotersoftware im Allgemeinen und enthalten
relevante Verweise:
• Überblick über RAPID: Ein Überblick über die RAPID-Programmiersprache
• RAPID-Referenzhandbuch: Beschreibung aller RAPID-Instruktionen
• Technisches Referenzhandbuch - Systemparameter: Beschreibung von
Systemparametern und Konfigurationsabläufen
Anwendungshandbücher
Bestimmte Anwendungen (z. B. Software- oder Hardwareoptionen) werden in
Anwendungshandbüchern beschrieben. Ein Anwendungshandbuch kann eine oder mehrere
Anwendungen beschreiben.
Ein Anwendungshandbuch enthält im Allgemeinen folgende Informationen:
• Zweck der Anwendung (ihre Aufgabe und ihr Nutzen)
• Enthaltenes Material (z. B. Kabel, E/A-Karten, RAPID-Instruktionen,
Systemparameter)
• Bedienungsanleitung für die Anwendung
• Beispiele für die Verwendung der Anwendung
Benutzerhandbücher
Diese Gruppe von Handbüchern richtet sich an die Personen, die direkten Bedienungskontakt
mit dem Roboter haben, z. B. Bediener der Produktionszelle, Programmierer und
Wartungspersonal. Die Gruppe von Handbüchern umfasst:
• Erste Schritte - IRC5 und RobotStudioOnline
• Benutzerhandbuch - IRC5 mit FlexPendant
• Benutzerhandbuch - RobotStudio Online
• Fehlerbehebungshandbuch für Steuerung und Roboter
8 3HAC 18152-3 Revision: B
Sicherheit
Sicherheit
Sicherheit des Personals
Der Roboter ist sehr schwer und übt unabhängig von seiner Geschwindigkeit eine extrem
hohe Kraft aus. Auf eine Pause oder einen längeren Halt der Bewegung kann eine gefährliche,
plötzliche Bewegung folgen. Selbst wenn ein Bewegungsmuster vorgegeben ist, kann ein
externes Signal den Betrieb beeinflussen und eine unvorhergesehene Bewegung auslösen.
Daher ist es wichtig, beim Betreten von abgesicherten Räumen alle Sicherheitsbestimmungen
einzuhalten.
Sicherheitsbestimmungen
Bevor Sie beginnen, mit dem Roboter zu arbeiten, müssen Sie sich unbedingt mit den
Sicherheitsbestimmungen vertraut machen (siehe dazu Benutzerhandbuch - IRC5 mit
FlexPendant).
9 3HAC 18152-3 Revision: B
Sicherheit
10 3HAC 18152-3 Revision: B
1 World Zones1.1. Übersicht
1 World Zones
1.1. Übersicht
Zweck
Mit World Zones (Weltzonen) wird der Roboter angehalten oder ein Ausgangssignal gesetzt,
wenn sich der Roboter in einer speziellen benutzerdefinierten Zone befindet.
Anwendungsbeispiele:
• Die Arbeitsbereiche von zwei Robotern überschneiden sich teilweise. Mit der
Überwachung durch die Option World Zones kann die Kollision zweier Roboter mit
Sicherheit ausgeschlossen werden.
• Im Arbeitsbereich des Roboters befindet sich ein permanentes Hindernis oder eine
temporäre externe Ausrüstung. Um eine Kollision des Roboters mit dieser Ausrüstung
zu verhindern, kann eine verbotene Zone erstellt werden.
• Angabe, dass sich der Roboter an einer Position befindet, an der das Starten der
Programmabarbeitung über eine speicherprogrammierbare Steuerung (SPS) zulässig
ist.
Weltzonen werden während Roboterbewegungen sowohl bei der Programmabarbeitung als
auch bei manuellen Bewegungen überwacht. Wenn der TCP des Roboters die Weltzone
erreicht oder wenn die Achsen die in Achsenkoordinaten definierte Weltzone erreichen, wird
die Bewegung angehalten oder ein digitales Ausgangssignal gesetzt.
WARNUNG!
Aus Sicherheitsgründen darf diese Software nicht zum Schutz von Personal benutzt werden.
Verwenden Sie hierfür Hardware-Schutzausrüstung.
Enthaltene Komponenten
Die RobotWare-Option World Zones ermöglicht Ihnen den Zugriff auf folgende Elemente:
• Instruktionen zum Definieren der Volumenangaben verschiedener Formen
• Instruktionen zum Definieren von Achsenzonen in Koordinaten für Achsen
• Instruktionen zum Definieren und Aktivieren von Weltzonen
11 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
1 World Zones1.1. Übersicht
(Forts.)
Grundlegende Methode
Das ist die allgemeine Methode zum Einrichten von World Zones. Ein ausführlicheres
Beispiel zur Vorgehensweise finden Sie im Codebeispiele auf Seite 16.
1. Deklarieren Sie die Weltzone als stationär oder temporär.
2. Deklarieren Sie die Formvariable.
3. Definieren Sie die Form der Weltzone.
4. Definieren Sie die Weltzone (dass beim Erreichen des Volumens der Roboter angehalten
oder ein Ausgangssignal gesetzt wird).
Einschränkungen
Volumen können nur für den TCP überwacht werden. Jede andere Komponente des Roboters
kann sich unerkannt durch das Volumen bewegen. Um dies zweifelsfrei zu verhindern,
können Sie eine Achsenweltzone überwachen (definiert durch WZLimJointDef oder
WZHomeJointDef).
Variablen vom Typ wzstationary oder wztemporary können nicht neu definiert werden.
Sie können nur einmal definiert werden (mit WZLimSup oder WZDOSet).
12 3HAC 18152-3 Revision: B
1 World Zones1.2. RAPID-Komponenten
1.2. RAPID-Komponenten
Datentypen
Hier erhalten Sie eine kurze Beschreibung jedes Datentyps in World Zones. Weitere
Informationen finden Sie unter dem jeweiligen Datentyp im RAPID-Referenzhandbuch - Teil
2, Funktionen und Datentypen von A-Z.
Datentyp Beschreibung
wztemporary Mit wztemporary wird eine temporäre Weltzone festgelegt. Dieser Datentyp kann an jeder Stelle des RAPID-Programms verwendet werden.
Temporäre Weltzonen können mit RAPID-Instruktionen deaktiviert, erneut aktiviert oder gelöscht werden. Sie werden automatisch gelöscht, wenn ein neues Programm geladen wird oder wenn die Programmabarbeitung in der MAIN-Routine ab dem Beginn gestartet wird.
wzstationary Mit wzstationary wird eine stationäre Weltzone festgelegt. Dieser Datentyp kann nur in einer Ereignisroutine verwendet werden, die mit dem Ereignis STROMVERSORGUNG EIN verknüpft ist. Informationen über das Definieren von Ereignisroutinen erhalten Sie im Benutzerhandbuch - IRC5 mit FlexPendant.
Stationäre Weltzonen sind immer aktiviert und werden durch einen Warmstart (ausschalten und anschließend wieder einschalten oder Systemparameter ändern) erneut aktiviert. Stationäre Weltzonen können nicht über RAPID-Instruktionen deaktiviert, aktiviert oder gelöscht werden.
Stationäre Weltzonen sollten verwendet werden, wenn Sicherheitsbelange berücksichtigt werden müssen.
shapedata Mit shapedata wird die Geometrie einer Weltzone beschrieben.
Weltzonen können als 4 unterschiedliche geometrische Formen definiert werden:
• ein rechteckiges Feld, dessen 4 Seiten parallel zum Welt-Koordinaten-system ausgerichtet sind
• ein Zylinder, der parallel zur Z-Achse des Welt-Koordinatensystems ausgerichtet ist
• eine Kugel
• ein Achsenwinkelbereich für die Roboterachsen und/oder externen Achsen
13 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
1 World Zones1.2. RAPID-Komponenten
(Forts.)
Instruktionen
Hier erhalten Sie eine kurze Beschreibung jeder Instruktion in World Zones. Weitere
Informationen finden Sie unter der jeweiligen Instruktion im RAPID-Referenzhandbuch - Teil
1, Instruktionen von A-Z.
Instruktion Beschreibung
WZBoxDef Mit WZBoxDef wird ein Volumen definiert, das die Form eines Rechtecks aufweist und dessen vier Seiten parallel zu den Achsen des Welt-Koor-dinatensystems ausgerichtet sind. Die Definition wird in einer Variablen vom Typ shapedata gespeichert.
Das Volumen kann auch als Inverse des Rechtecks (das gesamte Volumen ist außerhalb des Rechtecks) definiert werden.
WZCylDef Mit WZCylDef wird ein Volumen definiert, das die Form eines Zylinders aufweist, wobei die Zylinderachse parallel zur Z-Achse des Welt-Koordi-natensystems ausgerichtet ist. Die Definition wird in einer Variablen vom Typ shapedata gespeichert.
Das Volumen kann auch als Inverse des Zylinders (das gesamte Volumen ist außerhalb des Zylinders) definiert werden.
WZSphDef Mit WZSphDef wird ein Volumen mit der Form einer Kugel definiert. Die Definition wird in einer Variablen vom Typ shapedata gespeichert.
Das Volumen kann auch als Inverse der Kugel (das gesamte Volumen ist außerhalb der Kugel) definiert werden.
WZLimJointDef Mit WZLimJointDef werden Achsenkoordinaten für Achsen definiert, mit denen der Arbeitsbereich begrenzt wird. Sowohl für Roboterachsen als auch für externe Achsen können Koordinatengrenzen festgelegt werden.
WZLimJointDef definiert für jede Achse eine obere und eine untere Grenze. Für Rotationsachsen werden die Grenzen in Grad und für lineare Achsen in mm angegeben.
Die Definition wird in einer Variablen vom Typ shapedata gespeichert.
WZHomeJointDef Mit WZHomeJointDef werden Achsenkoordinaten für Achsen definiert, um eine Position im Achsenraum festzulegen. Sowohl für Roboterachsen als auch für externe Achsen können Koordinatengrenzen festgelegt werden.
WZHomeJointDef definiert für jede Achse eine Achsenkoordinate des Mittelpunkts der Zone und die Deltaabweichung der Zone vom Mit-telpunkt. Für Rotationsachsen werden die Koordinaten in Grad und für lineare Achsen in mm angegeben.
Die Definition wird in einer Variablen vom Typ shapedata gespeichert.
14 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
1 World Zones1.2. RAPID-Komponenten
(Forts.)
Funktionen
World Zones enthält keine RAPID-Funktionen.
WZLimSup Mit WZLimSup wird das Anhalten des Roboters mit der Ausgabe einer Fehlermeldung beim Erreichen der Weltzone durch den TCP definiert und aktiviert. Diese Überwachung ist sowohl während der Programma-barbeitung als auch während manuellen Bewegungen aktiviert.
Beim Aufruf von WZLimSup legen Sie fest, ob es sich um eine stationäre Weltzone handelt, die in einer wzstationary-Variablen gespeichert wird, oder um eine temporäre Weltzone, die in einer wztemporary-Variablen gespeichert wird.
WZDOSet Mit WZDOSet wird das Setzen eines digitalen Ausgangssignals beim Erreichen der Weltzone durch den TPC definiert und aktiviert.
Beim Aufruf von WZDOSet legen Sie fest, ob es sich um eine stationäre Weltzone handelt, die in einer wzstationary-Variablen gespeichert wird, oder um eine temporäre Weltzone, die in einer wztemporary-Variablen gespeichert wird.
WZDisable Mit WZDisable wird die Überwachung einer temporären Weltzone deak-tiviert.
WZEnable Mit WZEnable wird die Überwachung einer temporären Weltzone erneut aktiviert.
Weltzonen werden bei der Erstellung automatisch aktiviert. Eine Aktivierung ist nur erforderlich, wenn die Weltzone zuvor mit WZDisable deaktiviert wurde.
WZFree Mit WZFree wird eine temporäre Weltzone deaktiviert und gelöscht.
Instruktion Beschreibung
15 3HAC 18152-3 Revision: B
1 World Zones1.3. Codebeispiele
1.3. Codebeispiele
Erstellen eines geschützten Feldes
Um die Kollision des Roboter-TCP mit stationärer Ausrüstung zu verhindern, richten Sie eine
stationäre Weltzone um die Ausrüstung ein.
Anschließend muss die Routine my_power_on mit dem Ereignis STROMVERSORGUNG
EIN verknüpft werden. Informationen über die Vorgehensweise finden Sie in der
Beschreibung der Definition von Ereignisroutinen im Benutzerhandbuch - IRC5 mit
geografischem Programmiergeät.
xx0300000178
VAR wzstationary obstacle;
PROC my_power_on()
VAR shapedata volume;
CONST pos p1 := [200, 100, 100];
CONST pos p2 := [600, 400, 400];
!Define a box between the corners p1 and p2
WZBoxDef \Inside, volume, p1, p2;
!Define and enable supervision of the box
WZLimSup \Stat, obstacle, volume;
ENDPROC
16 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
1 World Zones1.3. Codebeispiele
(Forts.)
Ausgabe eines Signals, wenn sich der Roboter in Position befindet
Wenn zwei Roboter sich denselben Arbeitsbereich teilen, ist es wichtig zu wissen, wann ein
Roboter die Bewegung des anderen Roboters nicht behindert.
In diesem Beispiel wird eine Grundstellung definiert, in der sich der Roboter in einer sicheren
Position befindet, und es wird ein Ausgangssignal gesetzt, wenn sich der Roboter in der
Grundstellung befindet. Der Roboter befindet sich auf einer Verfahrschiene, die als externe
Achse 1 behandelt wird. Es sind keine weiteren externen Achsen aktiviert.
In der Abbildung stellt der schattierte Bereich die Weltzone dar.
xx0300000206
VAR wztemporary home;
PROC zone_output()
VAR shapedata joint_space;
!Define the home position
CONST jointtarget home_pos := [[0, -20, 0, 0, 0, 0], [0, 9E9,
9E9, 9E9, 9E9, 9E9]];
!Define accepted deviation from the home position
17 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
1 World Zones1.3. Codebeispiele
(Forts.)
CONST jointtarget delta_pos := [[2, 2, 2, 2, 2, 2], [10, 9E9,
9E9, 9E9, 9E9, 9E9]];
!Define the shape of the world zone
WZHomeJointDef \Inside, joint_space, home_pos, delta_pos;
!Define the world zone, setting the
!signal do_home to 1 when in zone
WZDOSet \Temp, home \Inside, joint_space, do_home, 1;
ENDPROC
18 3HAC 18152-3 Revision: B
2 Fixed Position Events2.1. Übersicht
2 Fixed Position Events
2.1. Übersicht
Zweck
Mit Fixed Position Events wird sichergestellt, dass eine Programmroutine ausgeführt wird,
wenn die Position des TCP ordnungsgemäß definiert ist.
Wenn ein Bewegungsinstruktion aufgerufen wird und das Zonenargument auf fine gesetzt
ist, wird immer die nächste Routine ausgeführt, sobald der TCP seine Position erreicht hat.
Wenn ein Bewegungsinstruktion aufgerufen wird und das Zonenargument auf eine Strecke
(z. B z20 gesetzt ist, wird möglicherweise die nächste Routine schon ausgeführt, bevor sich
der TCP nahe an seiner Position befindet. Der Grund hierfür ist, dass zwischen der
Ausführung der RAPID-Instruktionen und den Roboterbewegungen immer eine Verzögerung
vorhanden ist.
Durch den Aufruf der Bewegungsinstruktion mit auf fine gesetztem Zonenargument werden
die Bewegungen verlangsamt. Mit Fixed Position Events kann eine Routine ohne
Verlangsamung der Bewegung ausgeführt werden, wenn sich der TCP an einer angegebenen
Position an einer beliebigen Stelle der TCP-Bahn befindet.
Enthaltene Komponenten
Die RobotWare-Option Fixed Position Events ermöglicht Ihnen den Zugriff auf folgende
Elemente:
• Instruktionen zum Definieren eines Positionsereignisses
• Instruktionen zum Bewegen des Roboters und gleichzeitigen Ausführen des
Positionsereignisses
• Instruktionen zum Bewegen des Roboters und Aufrufen einer Prozedur während des
Weitergebens der Position, ohne zunächst ein Positionsereignis zu definieren
19 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
2 Fixed Position Events2.1. Übersicht
(Forts.)
Grundlegende Methode
Fixed Position Events kann entweder mit einer vereinfachten Instruktion zum Aufrufen einer
Prozedur verwendet oder mit den folgenden allgemeinen Schritten konfiguriert werden.
Ausführlichere Beispiele zur Vorgehensweise finden Sie unter Codebeispiele auf Seite 25.
1. Deklarieren Sie das Positionsereignis.
2. Definieren Sie das Positionsereignis:
• wann (in Bezug auf die Zielposition) es erfolgen soll
• aus welcher Aktion es bestehen soll
3. Rufen Sie eine Bewegungsinstruktion auf, die das Positionsereignis verwendet. Wenn
sich der TCP in der definierten Entfernung von der Position befindet, tritt das Ereignis ein.
20 3HAC 18152-3 Revision: B
2 Fixed Position Events2.2. RAPID-Komponenten und Systemparameter
2.2. RAPID-Komponenten und Systemparameter
Datentypen
Hier erhalten Sie eine kurze Beschreibung jedes Datentyps in Fixed Position Events. Weitere
Informationen finden Sie unter dem jeweiligen Datentyp im RAPID-Referenzhandbuch - Teil
2, Funktionen und Datentypen von A-Z.
Datentyp Beschreibung
triggdata Mit triggdata werden Daten zu einem Positionsereignis gespeichert.
Bei einem Positionsereignis kann es sich um das Setzen eines Ausgangssig-nals oder um das Ausführen einer Interrupt-Routine an einer bestimmten Position auf der Bewegungsbahn des Roboters handeln.
triggdata enthält auch Informationen über den Zeitpunkt der Aktion, die z. B. auf den Zeitpunkt festgelegt werden kann, wenn sich der TCP in einer definierten Entfernung von der Zielposition befindet.
triggdata ist vom Datentyp non-value.
21 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
2 Fixed Position Events2.2. RAPID-Komponenten und Systemparameter
(Forts.)
Instruktionen
Hier erhalten Sie eine kurze Beschreibung jeder Instruktion in Fixed Position Events. Weitere
Informationen finden Sie unter der jeweiligen Instruktion im RAPID-Referenzhandbuch - Teil
1, Instruktionen von A-Z.
Instruktion Beschreibung
TriggIO TriggIO definiert die Einstellung für ein Ausgangssignal und den Zeitpunkt zum Setzen des Signals. Die Definition wird in einer Variablen vom Typ triggdata gespeichert.
Mit TriggIO kann definiert werden, dass das Signal in einer bestimmten Entfernung (in mm) von der Zielposition oder zu einem bestimmten Zeitpunkt vor Erreichen der Zielposition gesetzt wird. Das Signal kann auch in einer bestimmten Entfernung von der Startposition oder zu einem bestimmten Zeitpunkt nach Verlassen der Startposition gesetzt werden.
Durch Festlegen der Entfernung auf 0 (null) wird das Signal gesetzt, wenn sich der TCP in der kürzesten Entfernung von der Zielposition (die Mitte der Zonenbahn) befindet.
TriggEquip TriggEquip wird wie TriggIO ausgeführt, mit dem Unterschied, dass TriggEquip die interne Verzögerung der externen Ausrüstung ausgleichen kann.
Beispielsweise muss das Signal an eine Klebstoffpistole kurz vor dem Her-ausdrücken des Klebstoffs und dem Beginn des Klebevorgangs gesetzt werden.
TriggInt TriggInt definiert, wann eine Interrupt-Routine ausgeführt wird. Die Definition wird in einer Variablen vom Typ triggdata gespeichert.
TriggInt definiert die Entfernung (in mm) von der Zielposition (oder von der Startposition), in der die Interrupt-Routine aufgerufen wird. Durch Festlegen der Entfernung auf 0 (null) erfolgt der Interrupt, wenn sich der TCP in der kürzesten Entfernung von der Zielposition (die Mitte der Zonenbahn) befindet.
22 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
2 Fixed Position Events2.2. RAPID-Komponenten und Systemparameter
(Forts.)
TriggCheckIO TriggCheckIO definiert die Überprüfung eines Eingangs- oder Ausgangs-signals und den Zeitpunkt der Überprüfung. Die Definition wird in einer Variablen vom Typ triggdata gespeichert.
TriggCheckIO definiert eine Überprüfung, bei der ein Eingangs- oder Aus-gangssignal mit einem Wert verglichen wird. Wenn die Überprüfung fehlschlägt, wird eine Interrupt-Routine aufgerufen. Die Roboterbewegung kann optional angehalten werden, wenn das Interrupt-Ereignis erfolgt.
Mit TriggCheckIO kann definiert werden, dass die Überprüfung in einer bestimmten Entfernung (in mm) von der Zielposition oder zu einem bestimmten Zeitpunkt vor Erreichen der Zielposition erfolgt. Die Überprüfung kann auch in einer definierten Entfernung von der Startposition oder zu einem bestimmten Zeitpunkt nach Verlassen der Startposition ausgeführt werden.
Durch Festlegen der Entfernung auf 0 (null) wird die Interrupt-Routine aufgerufen, wenn sich der TCP in der kürzesten Entfernung von der Zielpo-sition (die Mitte der Zonenbahn) befindet.
TriggL TriggL ist wie MoveL eine Bewegungsinstruktion. Mit der TriggL-Instruktion können zusätzlich zur Bewegung Ausgangssignale gesetzt, Interrupt-Routinen ausgeführt und Eingangs- oder Ausgangssignale an festen Positionen überprüft werden.
TriggL führt bis zu 6 Positionsereignisse aus, die als triggdata gespeichert werden. Diese müssen vor Aufruf von TriggL definiert werden.
TriggC TriggC ist wie MoveC eine Bewegungsinstruktion. Mit der TriggC-Instruktion können zusätzlich zur Bewegung Ausgangssignale gesetzt, Interrupt-Routinen ausgeführt und Eingangs- oder Ausgangssignale an festen Positionen überprüft werden.
TriggC führt bis zu 6 Positionsereignisse aus, die als triggdata gespeichert werden. Diese müssen vor Aufruf von TriggC definiert werden.
TriggJ TriggJ ist wie MoveJ eine Bewegungsinstruktion. Mit der TriggJ-Instruktion können zusätzlich zur Bewegung Ausgangssignale gesetzt, Interrupt-Routinen ausgeführt und Eingangs- oder Ausgangssignale an festen Positionen überprüft werden.
TriggJ führt bis zu 6 Positionsereignisse aus, die als triggdata gespeichert werden. Diese müssen vor Aufruf von TriggJ definiert werden.
MoveLSync MoveLSync ist eine lineare Bewegungsinstruktion, die in der Mitte der Zonenbahn eine Prozedur aufruft.
Instruktion Beschreibung
23 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
2 Fixed Position Events2.2. RAPID-Komponenten und Systemparameter
(Forts.)
Funktionen
Fixed Position Events enthält keine RAPID-Funktionen.
Systemparameter
Hier erhalten Sie eine kurze Beschreibung jedes Parameters in Fixed Position Events.
Weitere Informationen finden Sie unter dem jeweiligen Parameter im Technischen
Referenzhandbuch - Systemparameter.
MoveCSync MoveCSync ist eine Kreisbewegungsinstruktion, die in der Mitte der Zonenbahn eine Prozedur aufruft.
MoveJSync MoveJSync ist eine Achsenbewegungsinstruktion, die in der Mitte der Zonenbahn eine Prozedur aufruft.
Instruktion Beschreibung
Parameter Beschreibung
Event Preset Time
TriggEquip nutzt die Verzögerung von ca. 70 ms zwischen der RAPID-Ausführung und der Roboterbewegung. Wenn die Verzögerung der Ausrüstung 70 ms übersteigt, kann die Verzögerung der Roboterbewegung durch Konfigurieren von Event Preset Time erhöht werden.
Event Preset Time gehört zum Typ Motion System in der Parametergruppe Motion.
24 3HAC 18152-3 Revision: B
2 Fixed Position Events2.3. Codebeispiele
2.3. Codebeispiele
Beispiel ohne Fixed Position Events
Ohne Verwendung von Fixed Position Events kann der folgende Code geschrieben werden:
MoveJ p1, vmax, fine, tool1;
MoveL p2, v1000, z20, tool1;
SetDO do1, 1;
MoveL p3, v1000, fine, tool1;
Ergebnis
Der Code gibt an, dass der TCP p2 erreichen muss, bevor do1 gesetzt wird. Da die
Roboterbahn in Bezug auf die Instruktionsausführung eine Verzögerung aufweist, wird do1
gesetzt, wenn sich der TCP an der mit X markierten Position (siehe Abbildung) befindet.
xx0300000151
Beispiel mit TriggIO-Instruktion und TriggL-Instruktion
Das Ausgangssignal kann in einer Entfernung von 30 mm von der Zielposition gesetzt
werden, indem das Positionsereignis definiert und anschließend der Roboter bewegt wird,
während das System das Positionsereignis ausführt.
VAR triggdata do_set;
!Define that do1 shall be set when 30 mm from target
TriggIO do_set, 30 \DOp:=do1, 1;
MoveJ p1, vmax, fine, tool1;
!Move to p2 and let system execute do_set
TriggL p2, v1000, do_set, z20, tool1;
MoveL p3, v1000, fine, tool1;
25 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
2 Fixed Position Events2.3. Codebeispiele
(Forts.)
Ergebnis
Das Signal do1 wird gesetzt, wenn der TCP 30 mm von p2 entfernt ist. do1 ist gesetzt, wenn
sich der TCP an der mit X markierten Position (siehe Abbildung) befindet.
xx0300000158
Beispiel mit MoveLSync-Instruktion
Der Aufruf einer Prozedur, wenn sich die Roboterbahn so nah wie möglich an der
Zielposition befindet, kann mit einem einzigen Instruktionsaufruf erfolgen.
MoveJ p1, vmax, fine, tool1;
!Move to p2 while calling a procedure
MoveLSync p2, v1000, z20, tool1, "proc1";
MoveL p3, v1000, fine, tool1;
Ergebnis
Die Prozedur wird aufgerufen, wenn sich der TCP an der mit X (siehe Abbildung) markierten
Position befindet.
xx0300000165
26 3HAC 18152-3 Revision: B
3 Independent Axes3.1. Übersicht
3 Independent Axes
3.1. Übersicht
Zweck
Mit Independent Axes wird eine Achse unabhängig von anderen Achsen im Robotersystem
bewegt. Anwendungsbeispiele:
• Bewegen einer externen Achse, auf der sich ein Objekt befindet (die z. B. ein Objekt
dreht, während der Roboter das Objekt spritzlackiert).
• Verkürzen der Zyklusdauer durch Ausführen einer Roboteraufgabe, während eine
externe Achse eine andere Roboteraufgabe ausführt.
• Kontinuierliches Drehen von Roboterachse 6 (zum Polieren oder für ähnliche
Aufgaben).
• Zurücksetzen des Messsystems nach mehreren Umdrehungen der Achse in derselben
Richtung. Verkürzt die Zyklusdauer im Vergleich zum physischen Zurückdrehen.
Eine Achse kann sich unabhängig bewegen, wenn sie in den unabhängigen Modus versetzt
wurde. Eine Achse kann in den unabhängigen Modus versetzt und später in den normalen
Modus zurückgesetzt werden.
Enthaltene Komponenten
Die RobotWare-Option Independent Axes ermöglicht Ihnen den Zugriff auf folgende
Elemente:
• Instruktionen zum Festlegen des unabhängigen Modus und zum Angeben der
Bewegung für eine Achse
• eine Instruktion zum Wiederherstellen des normalen Modus und/oder Zurücksetzen
des Messsystems
• Funktionen zum Überprüfen des Status einer unabhängigen Achse
• Systemparameter für die Konfiguration
27 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
3 Independent Axes3.1. Übersicht
(Forts.)
Grundlegende Methode
Dies ist die allgemeine Methode zum unabhängigen Bewegen einer Achse. Ausführlichere
Beispiele zur Vorgehensweise finden Sie unter Codebeispiele auf Seite 32.
1. Rufen Sie eine Instruktion für eine unabhängige Bewegung auf, um die Achse in den
unabhängigen Modus zu versetzen und zu bewegen.
2. Lassen Sie den Roboter während der Bewegung der unabhängigen Achse eine weitere
Instruktion ausführen.
3. Wenn sowohl Roboter als auch unabhängige Achse angehalten wurden, setzen Sie die
unabhängige Achse in den normalen Modus zurück.
Zurücksetzen der Achse
Auch wenn sich eine Achse nicht im unabhängigen Modus befindet, bewegt sie sich
möglicherweise nur in eine Richtung und die Genauigkeit der Bewegung nimmt schließlich
ab. Dann kann das Messsystem mit der Instruktion IndReset zurückgesetzt werden.
Es wird empfohlen, das Messsystem für eine Achse zurückzusetzen, bevor ihr Motor 10.000
Umdrehungen in derselben Richtung ausgeführt hat.
Einschränkungen
Eine mechanische Einheit darf nicht deaktiviert werden, wenn sich eine ihrer Achse im
unabhängigen Modus befindet.
Achsen im unabhängigen Modus können nicht manuell bewegt werden.
Die einzige Roboterachse, die im unabhängigen Modus verwendet werden kann, ist Achse
Nummer 6. Beim IRB2400 und IRB4400 kann die Instruktion IndReset auch für Achse 4
verwendet werden.
28 3HAC 18152-3 Revision: B
3 Independent Axes3.2. Systemparameter
3.2. Systemparameter
Über die Systemparameter
Hier erhalten Sie eine kurze Beschreibung jedes Parameters in Independent Axes. Weitere
Informationen finden Sie unter dem jeweiligen Parameter im Technischen Referenzhandbuch
- Systemparameter.
Arm
Diese Parameter gehören zum Typ Arm in der Parametergruppe Motion.
Transmission
Diese Parameter gehören zum Typ Transmission in der Parametergruppe Motion.
Parameter Beschreibung
Independent Joint Flag, das bestimmt, ob der unabhängige Modus für die Achse zulässig ist.
Independent Upper Joint Bound
Definiert die Obergrenze des Arbeitsbereichs für die Achse beim Betrieb im unabhängigen Modus.
Independent Lower Joint Bound
Definiert die Untergrenze des Arbeitsbereichs für die Achse beim Betrieb im unabhängigen Modus.
Parameter Beschreibung
Transmission Gear High
Independent Axes erfordert eine hohe Auflösung des Übersetzungsverhält-nisses. Dieses wird daher als Transmission Gear High und Transmission Gear Low definiert. Sofern kein kleinerer Wert verwendet werden kann, ist das richtige Übersetzungsverhältnis ausgewählt, wenn Transmission Gear High auf die Anzahl der Zähne auf der Seite der Roboterachse und Trans-mission Gear Lowauf die Anzahl der Zähne auf der Motorseite gesetzt ist.
Transmission Gear Low
Siehe Transmission Gear High.
29 3HAC 18152-3 Revision: B
3 Independent Axes3.3. RAPID-Komponenten
3.3. RAPID-Komponenten
Datentypen
Für Independent Axes sind keine Datentypen vorhanden.
Instruktionen
Hier erhalten Sie eine kurze Beschreibung jeder Instruktion in Independent Axes. Weitere
Informationen finden Sie unter der jeweiligen Instruktion im RAPID-Referenzhandbuch - Teil
1, Instruktionen von A-Z.
Eine Instruktion für eine unabhängige Bewegung wird sofort ausgeführt, auch wenn zu
diesem Zeitpunkt die Achse bewegt wird. Wenn eine neue Instruktion für eine unabhängige
Bewegung vor Abschluss der vorherigen ausgeführt, wird, setzt die neue Instruktion die alte
Instruktion sofort außer Kraft.
Instruktion Beschreibung
IndAMove IndAMove (Independent Absolute position Movement) versetzt eine Achse in den unabhängigen Modus und bewegt die Achse an die angegebene Position.
IndCMove IndCMove (Independent Continuous Movement) versetzt eine Achse in den unabhängigen Modus und bewegt die Achse kontinuierlich mit der angegebenen Geschwindigkeit.
IndDMove IndDMove (Independent Delta position Movement) versetzt eine Achse in den unabhängigen Modus und bewegt die Achse um die angegebene Strecke.
30 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
3 Independent Axes3.3. RAPID-Komponenten
(Forts.)
Funktionen
Hier erhalten Sie eine kurze Beschreibung jeder Funktion in Independent Axes. Weitere
Informationen finden Sie unter der jeweiligen Funktion im RAPID-Referenzhandbuch - Teil
2, Funktionen und Datentypen von A-Z.
IndRMove IndRMove (Independent Relative position Movement) versetzt eine Rota-tionsachse in den unabhängigen Modus und bewegt die Achse innerhalb einer Umdrehung an die angegebene Position.
Da an der Position keine Umdrehungsinformationen vorhanden sind, führt IndRMove niemals mehr als eine Achsenumdrehung aus.
IndReset Mit IndReset wird eine unabhängige Achse in den normalen Modus zurückgesetzt.
Mit IndReset kann das Messsystem für eine Rotationsachse um mehrere Achsenumdrehungen bewegt werden. Die Auflösung der Positionen wird verringert, wenn der Abstand zur logischen Position 0 zunimmt, und das Zurückdrehen der Achse beansprucht mehr Zeit. Durch Bewegen des Messsystems wird die Auflösung beibehalten, ohne die Achse physisch zurückzudrehen.
Beim Aufruf von IndReset dürfen sich unabhängige Achse und Roboter nicht bewegen.
Instruktion Beschreibung
Funktion Beschreibung
IndInpos IndInpos gibt an, ob eine Achse die ausgewählte Position erreicht hat.
IndSpeed IndSpeed gibt an, ob eine Achse die ausgewählte Geschwindigkeit erreicht hat.
31 3HAC 18152-3 Revision: B
3 Independent Axes3.4. Codebeispiele
3.4. Codebeispiele
Verkürzen der Zyklusdauer
Ein Objekt an Station A muss an zwei Stellen geschweißt werden. Die externe Achse für
Station A kann das Objekt in die Position für den zweiten Schweißvorgang drehen, während
der Roboter ein anderes Objekt schweißt. Dies führt zu einer kürzeren Zyklusdauer als bei
einer Vorgehensweise, bei der der Roboter während der Bewegung der externen Achse
wartet.
!Perform first welding in station A
!Call subroutine for welding
weld_stationA_1;
!Move the object in station A, axis 1, with
!independent movement to position 90 degrees
!at the speed 20 degrees/second
IndAMove Station_A,1\ToAbsNum:=90,20;
!Let the robot perform another task while waiting
!Call subroutine for welding
weld_stationB_1;
!Wait until the independent axis is in position
WaitUntil IndInpos(Station_A,1 ) = TRUE;
WaitTime 0,2;
!Perform second welding in station A
!Call subroutine for welding
weld_stationA_2;
32 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
3 Independent Axes3.4. Codebeispiele
(Forts.)
Polieren durch Drehen von Achse 6
Um eine Objekt zu polieren, kann die Roboterachse 6 auf kontinuierliches Drehen eingestellt
werden.
Versetzen Sie Roboterachse 6 in den unabhängigen Modus, und lassen Sie sie kontinuierlich
drehen. Bewegen Sie den Roboter über den zu polierenden Bereich. Halten Sie die Bewegung
für den Roboter und die unabhängige Achse an, bevor Sie wieder in den normalen Modus
wechseln. Nachdem die Achse zahlreiche Umdrehungen ausgeführt hat, setzen Sie das
Messsystem zurück, um die Auflösung beizubehalten.
Beachten Sie, dass der Parameter Independent Joint für rob1_6 auf Yes gesetzt sein muss,
damit dieses Beispiel ordnungsgemäß ausgeführt werden kann.
PROC Polish()
!Change axis 6 of ROB_1 to independent mode and
!rotate it with 180 degrees/second
IndCMove ROB_1, 6, 180;
!Wait until axis 6 is up to speed
WaitUntil IndSpeed(ROB_1,6\InSpeed);
WaitTime 0,2;
!Move robot where you want to polish
MoveL p1,v10, z50, tool1;
MoveL p2,v10, fine, tool1;
!Stop axis 6 and wait until it’s still
IndCMove ROB_1, 6, 0;
WaitUntil IndSpeed(ROB_1,6\ZeroSpeed);
WaitTime 0.2;
!Change axis 6 back to normal mode and
!reset measurement system (close to 0)
IndReset ROB_1, 6 \RefNum:=0 \Short;
ENDPROC
33 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
3 Independent Axes3.4. Codebeispiele
(Forts.)
Zurücksetzen einer Achse
In diesem Beispiel wird gezeigt, wie das Messsystem für Achse 1 in Station A zurückgesetzt
wird. Das Messsystem bewegt sich um mehrere Umdrehungen, bis es nahe Null (± 180°) ist.
IndReset Station_A, 1 \RefNum:=0 \Short;
34 3HAC 18152-3 Revision: B
4 Path Recovery4.1. Übersicht
4 Path Recovery
4.1. Übersicht
Zweck
Mit Path Recovery wird die aktuelle Bewegungsbahn gespeichert, es werden einige
Roboterbewegungen ausgeführt und anschließend wird die unterbrochene Bahn
wiederhergestellt. Dies ist sinnvoll, wenn während der Bahnbewegung ein Fehler oder
Interrupt auftritt. Eine Fehlerbehandlungs- oder Interrupt-Routine kann eine Task ausführen
und anschließend die Bahn wiederherstellen.
Für Anwendungen wie Lichtbogenschweißen und Kleben muss die Arbeit an dem Punkt
fortgesetzt werden, an dem die Arbeit des Roboters unterbrochen wurde. Wenn der Roboter
die Arbeit von vorne beginnt, muss das Werkstück verschrottet werden.
Wenn sich der Roboter in einem Werkstück befindet und ein Prozessfehler auftritt, kann das
direkte Herausbewegen des Roboters eine Kollision verursachen. Mithilfe der
Bahnaufzeichnung kann der Roboter hingegen auf derselben Bahn herausbewegt werden, auf
der er hineinbewegt wurde.
Enthaltene Komponenten
Die RobotWare-Option Path Recovery ermöglicht Ihnen den Zugriff auf folgende Elemente:
• Instruktionen zum Speichern und Wiederherstellen der unterbrochenen
Bewegungsbahn
• Instruktionen zum Unterbrechen und Fortsetzen des koordinierten
Synchronbewegungsmodus auf der Ebene des Fehlers oder Interrupts.
• eine Bahnaufzeichnung mit der Möglichkeit, den TCP auf derselben Bahn von einer
Position fortzubewegen, auf der er zu dieser Position bewegt wurde
Einschränkungen
Mit den Instruktionen StorePath und RestoPath werden nur Bewegungsbahndaten
behandelt. Die Stoppposition muss ebenfalls gespeichert werden.
Bewegungen mithilfe der Bahnaufzeichnung müssen auf Interrupt-Ebene erfolgen, d. h.,
StorePath muss vor PathRecMoveBwd ausgeführt werden.
35 3HAC 18152-3 Revision: B
4 Path Recovery4.2. RAPID-Komponenten
4.2. RAPID-Komponenten
Datentypen
Hier erhalten Sie eine kurze Beschreibung jedes Datentyps in Path Recovery. Weitere
Informationen finden Sie unter dem jeweiligen Datentyp im RAPID-Referenzhandbuch -
Instruktionen, Funktionen und Datentypen.
Instruktionen
Hier erhalten Sie eine kurze Beschreibung jeder Instruktion in Path Recovery. Weitere
Informationen finden Sie unter der jeweiligen Instruktion im RAPID-Referenzhandbuch -
Instruktionen, Funktionen und Datentypen.
Datentyp Beschreibung
pathrecid Mit pathrecid wird ein Stopppunkt für die Bahnaufzeichnung angegeben.
Instruktion Beschreibung
StorePath Mit StorePath wird die Bewegungsbahn gespeichert, die beim Auftreten eines Fehlers oder Interrupts ausgeführt wird.
RestoPath Mit RestoPath wird die von StorePath gespeicherte Bahn wieder-hergestellt.
PathRecStart Mit PathRecStart wird die Aufzeichnung der Roboterbahn gestartet. Die Bahnaufzeichnung speichert während der Abarbeitung des Robot-erprogramms Bahninformationen.
PathRecStop Mit PathRecStop wird die Aufzeichnung der Roboterbahn beendet.
PathRecMoveBwd Mit PathRecMoveBwd wird der Roboter auf einer aufgezeichneten Bahn zurückbewegt.
PathRecMoveFwd Mit PathRecMoveFwd wird der Roboter an die Position zurückbewegt, an der PathRecMoveBwd ausgeführt wurde.
Der Roboter kann auch nur auf einer Teilstrecke nach vorne bewegt werden, indem ein Bezeichner angegeben wird, der während der Rückwärtsbewegung weitergegeben wurde.
36 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.2. RAPID-Komponenten
(Forts.)
Funktionen
Hier erhalten Sie eine kurze Beschreibung jeder Funktion in Path Recovery. Weitere
Informationen finden Sie unter der jeweiligen Funktion im RAPID-Referenzhandbuch -
Instruktionen, Funktionen und Datentypen.
SyncMoveSuspend Mit SyncMoveSuspend wird der Synchronbewegungsmodus unter-brochen und das System in den unabhängigen Bewegungsmodus versetzt.
SyncMoveResume Mit SyncmoveResume werden synchronisierte Bewegungen nach Verlassen des unabhängigen Bewegungsmodus fortgesetzt.
Instruktion Beschreibung
Funktion Beschreibung
PathRecValidBwd Mit PathRecValidBwd wird überprüft, ob die Bahnaufzeichnung aktiviert ist und ob eine aufgezeichnete Rückwärtsbahn verfügbar ist.
PathRecValidFwd Mit PathRecValidFwd wird überprüft, ob die Bahnaufzeichnung für die Vorwärtsbewegung verwendet werden kann. Damit eine Vorwärts-bewegung mit der Bahnaufzeichnung möglich ist, muss die Bah-naufzeichnung zuvor angewiesen worden sein, eine Rückwärtsbewegung auszuführen.
37 3HAC 18152-3 Revision: B
4 Path Recovery4.3. Speichern der aktuellen Bahn
4.3. Speichern der aktuellen Bahn
Warum soll die Bahn gespeichert werden?
Bei der einfachsten Verwendung von Path Recovery wird nur die aktuelle Bahn gespeichert,
um sie nach dem Beheben eines Fehlers oder einer ähnlichen Aktion wiederherstellen zu
können.
Angenommen, während des Lichtbogenschweißens tritt ein Fehler auf. Um den Fehler zu
beheben, muss der Roboter möglicherweise vom Werkstück wegbewegt werden. Wenn der
Fehler behoben wurde, muss der Schweißvorgang an der Stelle fortgesetzt werden, an der er
unterbrochen wurde. Dies geschieht, indem die Bahninformationen und die Position des
Roboters vor dem Entfernen von der Bahn gespeichert werden. Nach der Behebung des
Fehlers kann die Bahn wiederhergestellt und der Schweißvorgang fortgesetzt werden.
Grundlegende Methode
Dies ist die allgemeine Methode zum Speichern der aktuellen Bahn:
1. Zu Beginn der Fehlerbehandlungs- oder Interrrupt-Routine:
A. Halten Sie die Bewegung an.
B. Speichern Sie die Bewegungsbahn.
C. Speichern Sie die Stoppposition.
2. Am Ende der Fehlerbehandlungs- oder Interrrupt-Routine:
A. Bewegen Sie den Roboter zur gespeicherten Stoppposition.
B. Stellen Sie die Bewegungsbahn wieder her.
C. Starten Sie die Bewegung.
38 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.3. Speichern der aktuellen Bahn
(Forts.)
Beispiel:
In diesem Beispiel wird die Verwendung von Path Recovery bei der Fehlerbehandlung
gezeigt. Zunächst werden Bahn und Position gespeichert und der Fehler wird korrigiert.
Anschließend wird der Roboter an die Position zurückbewegt und die Bahn wird
wiederhergestellt.
MoveL p100, v100, z10, gun1;
...
ERROR
IF ERRNO=MY_GUN_ERR THEN
gun_cleaning();
ENDIF
...
PROC gun_cleaning()
VAR robtarget p1;
!Stop the robot movement, if not already stopped.
StopMove;
!Store the movement path and current position
StorePath;
p1 := CRobT(\Tool:=gun1\WObj:=wobj0);
!Correct the error
MoveL pclean, v100, fine, gun1;
...
!Move the robot back to the stored position
MoveL p1, v100, fine, gun1;
!Restore the path and start the movement
RestoPath;
StartMove;
RETRY;
ENDPROC
39 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.3. Speichern der aktuellen Bahn
(Forts.)
Speichern der Bahn in einem MultiMove-System
In einem MultiMove-System können die Roboter nach StorePath mit dem Argument
KeepSync den Synchronbewegungsmodus beibehalten. Die Roboter können jedoch nicht
vom unabhängigen Modus in den Synchronmodus, sondern nur vom Synchronmodus in den
unabhängigen Modus wechseln.
Nachdem ein MultiMove-System mit dem Argument KeepSync eingestellt wurde, kann das
System auf der StorePath-Ebene zwischen Synchronmodus, teilkoordiniertem Modus und
unabhängigem Modus wechseln. Die Änderungen werden mit den Instruktionen
SyncMoveResume und SyncMoveSuspend durchgeführt.
Beispiel „SyncArc“ mit koordinierter synchroner Bewegung
In diesem Beispiel werden die Verwendung von Path Recovery und das Beibehalten des
Synchronmodus bei der Fehlerbehandlung für ein MultiMove-System veranschaulicht. Zwei
Roboter führen Bogenschweißarbeiten an demselben Werkstück aus. Um das Beispiel
einfach und allgemein zu halten, werden anstelle von Schweißinstruktionen
Bewegungsinstruktionen verwendet. Das Werkstück wird von einem Positionierer gedreht.
Weitere Informationen über das Beispiel SyncArc finden Sie im Handbuch MultiMove.
T_ROB1-TaskprogrammMODULE module1
VAR syncident sync1;
VAR syncident sync2;
VAR syncident sync3;
PERS tasks all_tasks{3} := [["T_ROB1"],["T_ROB2"],["T_STN1"]];
PERS wobjdata wobj_stn1 := [ FALSE, FALSE, "STN_1", [ [0, 0, 0],
[1, 0, 0 ,0] ], [ [0, 0, 250], [1, 0, 0, 0] ] ];
TASK PERS tooldata tool1 := ...
CONST robtarget p100 := ...
CONST robtarget p199 := ...
PROC main()
...
SyncMove;
ENDPROC
40 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.3. Speichern der aktuellen Bahn
(Forts.)
PROC SyncMove()
MoveJ p100, v1000, z50, tool1;
WaitSyncTask sync1, all_tasks;
MoveL p101, v500, fine, tool1;
SyncMoveOn sync2, all_tasks;
MoveL p102\ID:=10, v300, z10, tool1 \WObj:=wobj_stn1;
MoveC p103, p104\ID:=20, v300, z10, tool1 \WObj:=wobj_stn1;
MoveL p105\ID:=30, v300, z10, tool1 \WObj:=wobj_stn1;
MoveC p106, p101\ID:=40, v300, fine, tool1 \WObj:=wobj_stn1;
SyncMoveOff sync3;
MoveL p199, v1000, fine, tool1;
UNDO
SyncMoveUndo;
ERROR
IF ERRNO = ERR_PATH_STOP THEN
gun_cleaning();
ENDIF
ENDPROC
PROC gun_cleaning()
VAR robtarget p1;
!Store the movement path and current position
! and keep syncronized mode
StorePath \KeepSync;
p1 := CRobT(\Tool:=tool1 \WObj:=wobj_stn1);
!Correct the error
MoveL pclean1 \ID:=50, v100, fine, tool1 \WObj:=wobj_stn1;
...
!Move the robot back to the stored position
MoveL p1 \ID:=60, v100, fine, tool1 \WObj:=wobj_stn1;
!Restore the path and start the movement
RestoPath;
StartMove;
RETRY;
ENDPROC
41 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.3. Speichern der aktuellen Bahn
(Forts.)
ENDMODULE
T_ROB2-TaskprogrammMODULE module2
VAR syncident sync1;
VAR syncident sync2;
VAR syncident sync3;
PERS tasks all_tasks{3};
PERS wobjdata wobj_stn1;
TASK PERS tooldata tool2 := ...
CONST robtarget p200 := ...
CONST robtarget p299 := ...
PROC main()
...
SyncMove;
ENDPROC
PROC SyncMove()
MoveJ p200, v1000, z50, tool2;
WaitSyncTask sync1, all_tasks;
MoveL p201, v500, fine, tool2;
SyncMoveOn sync2, all_tasks;
MoveL p202\ID:=10, v300, z10, tool2 \WObj:=wobj_stn1;
MoveC p203, p204\ID:=20, v300, z10, tool2 \WObj:=wobj_stn1;
MoveL p205\ID:=30, v300, z10, tool2 \WObj:=wobj_stn1;
MoveC p206, p201\ID:=40, v300, fine, tool2 \WObj:=wobj_stn1;
SyncMoveOff sync3;
MoveL p299, v1000, fine, tool2;
UNDO
SyncMoveUndo;
ERROR
IF ERRNO = ERR_PATH_STOP THEN
gun_cleaning();
ENDIF
ENDPROC
PROC gun_cleaning()
VAR robtarget p2;
42 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.3. Speichern der aktuellen Bahn
(Forts.)
!Store the movement path and current position.
StorePath \KeepSync;
p2 := CRobT(\Tool:=tool2 \WObj:=wobj_stn1);
!Correct the error
MoveL pclean2 \ID:=50, v100, fine, tool2 \WObj:=wobj_stn1;
...
!Move the robot back to the stored position.
MoveL p2 \ID:=60, v100, fine, tool2 \WObj:=wobj_stn1;
!Restore the path and start the movement
RestoPath;
StartMove;
RETRY;
ENDPROC
ENDMODULE
T_STN1-TaskprogrammMODULE module3
VAR syncident sync1;
VAR syncident sync2;
VAR syncident sync3;
PERS tasks all_tasks{3};
CONST jointtarget angle_neg20 :=[ [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9],
[ -20, 9E9, 9E9, 9E9, 9E9, 9E9] ];
...
CONST jointtarget angle_340 :=[ [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9],[
340, 9E9, 9E9, 9E9, 9E9, 9E9] ];
PROC main()
...
SyncMove;
...
ENDPROC
PROC SyncMove()
MoveExtJ angle_neg20, vrot50, fine;
WaitSyncTask sync1, all_tasks;
! Auf Roboter warten
SyncMoveOn sync2, all_tasks;
43 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.3. Speichern der aktuellen Bahn
(Forts.)
MoveExtJ angle_20\ID:=10, vrot100, z10;
MoveExtJ angle_160\ID:=20, vrot100, z10;
MoveExtJ angle_200\ID:=30, vrot100, z10;
MoveExtJ angle_340\ID:=40, vrot100, fine;
SyncMoveOff sync3;
UNDO
SyncMoveUndo;
ERROR
IF ERRNO = ERR_PATH_STOP THEN
gun_cleaning();
ENDIF
ENDPROC
PROC gun_cleaning()
VAR jointtarget resume_angle;
!Store the movement path and current angle.
StorePath \KeepSync;
resume_angle := CJointT();
!Correct the error
MoveExtJ clean_angle \ID:=50, vrot100, fine;
...
!Move the robot back to the stored position.
MoveExtJ resume_angle \ID:=60, vrot100, fine;
!Restore the path and start the movement
RestoPath;
StartMove;
RETRY;
ENDPROC
ENDMODULE
44 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.3. Speichern der aktuellen Bahn
(Forts.)
Unterbrechen und Fortsetzen synchronisierter Bewegungen im Beispiel „SyncArc“
Mit SyncMoveSuspend wird der Synchronbewegungsmodus unterbrochen und das System
in den unabhängigen oder teilkoordinierten Bewegungsmodus versetzt.
SyncMoveResume wird verwendet, um erneut in den Synchronbewegungsmodus zu
wechseln.
Diese Instruktionen können nur verwendet werden, nachdem StorePath\KeepSync
ausgeführt wurde.
T_ROB1PROC gun_cleaning()
VAR robtarget p1;
!Store the movement path and current position
! and keep syncronized mode.
StorePath \KeepSync;
p1 := CRobT(\Tool:=tool1 \WObj:=wobj_stn1);
!Move in synchronized motion mode
MoveL p104 \ID:=50, v100, fine, tool1 \WObj:=wobj_stn1;
SyncMoveSuspend;
!Move in independent mode
MoveL pclean1, v100, fine, tool1;
...
!Move the robot back to the stored position
SyncMoveResume;
MoveL p1 \ID:=60, v100, fine, tool1 \WObj:=wobj_stn1;
!Restore the path and start the movement
RestoPath;
StartMove;
RETRY;
ENDPROC
45 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.3. Speichern der aktuellen Bahn
(Forts.)
T_ROB2PROC gun_cleaning()
VAR robtarget p2;
!Store the movement path and current position.
StorePath \KeepSync;
p2 := CRobT(\Tool:=tool2 \WObj:=wobj_stn1);
!Move in synchronized motion mode
MoveL p104 \ID:=50, v100, fine, tool2 \WObj:=wobj_stn1;
SyncMoveSuspend;
!Move in independent mode
MoveL pclean2 v100, fine, tool2;
...
!Move the robot back to the stored position.
SyncMoveResume;
!Move in synchronized motion mode
MoveL p2 \ID:=60, v100, fine, tool2 \WObj:=wobj_stn1;
!Restore the path and start the movement
RestoPath;
StartMove;
RETRY;
ENDPROC
46 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.3. Speichern der aktuellen Bahn
(Forts.)
T_STN1PROC gun_cleaning()
VAR jointtarget resume_angle;
!Store the movement path and current angle.
StorePath \KeepSync;
resume_angle := CJointT();
!Move in synchronized motion mode
MoveExtJ p1clean_angle \ID:=50, vrot100, fine;
SyncMoveSuspend;
! Move in independent mode
MoveExtJ p2clean_angle,vrot, fine;
...
!Move the robot back to the stored position.
SyncMoveResume;
! Move in synchronized motion mode
MoveExtJ resume_angle \ID:=60, vrot100, fine;
!Restore the path and start the movement
RestoPath;
StartMove;
RETRY;
ENDPROC
47 3HAC 18152-3 Revision: B
4 Path Recovery4.4. Bahnaufzeichnung
4.4. Bahnaufzeichnung
Was ist die Bahnaufzeichnung?
In der Bahnaufzeichnung können mehrere Bewegungsinstruktionen gespeichert werden.
Anschließend kann der Roboter mithilfe dieses Speichers auf derselben Bahn zurückbewegt
werden.
Verwendung der Bahnaufzeichnung
Dies ist die allgemeine Methode für die Verwendung der Bahnaufzeichnung:
1. Starten Sie die Bahnaufzeichnung.
2. Bewegen Sie den Roboter mit regulären Bewegungs- oder Prozessinstruktionen.
3. Speichern Sie die aktuelle Bahn.
4. Bewegen Sie den Roboter auf der aufgezeichneten Bahn zurück.
5. Beheben Sie den Fehler.
6. Bewegen Sie den Roboter auf der aufgezeichneten Bahn vorwärts.
7. Stellen Sie die unterbrochene Bahn wieder her.
Anheben des Werkzeugs
Wenn sich der Roboter auf der eigenen Bahn zurückbewegt, sollten Sie verhindern, dass das
Werkzeug gegen das Werkstück stößt. Bei einem Prozess wie Lichtbogenschweißen sollten
Sie die Berührung mit der Schweißnaht vermeiden.
Mithilfe des Arguments ToolOffs in den Instruktionen PathRecMoveBwd und
PathRecMoveFwd können Sie einen Offset für den TCP einstellen. Dieser Offset wird in
Form von Werkzeug-Koordinaten festgelegt. Das bedeutet, wenn der Offset auf [0,0,10]
gesetzt ist, wird das Werkzeug in einer Entfernung von 10 mm vom Werkstück auf der
aufgezeichneten Bahn zurückbewegt.
xx0400000828
48 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.4. Bahnaufzeichnung
(Forts.)
HINWEIS!
Wenn sich ein MultiMove-System im Synchronmodus befindet und ein Werkzeug angehoben
wird, müssen alle Tasks ToolOffs verwenden.
Wenn Sie jedoch nur ein einziges Werkzeug anheben möchten, legen Sie in den anderen Tasks
ToolOffs=[0,0,0] fest.
Einfaches Beispiel
Wenn zwischen p1 und p4 ein Fehler auftritt, kehrt der Roboter zu p1 zurück, wo der Fehler
behoben werden kann. Nachdem der Fehler behoben wurde, setzt der Roboter den Vorgang
an der Stelle fort, an der der Fehler aufgetreten ist.
Wenn p4 ohne Auftreten eines Fehlers erreicht wurde, wird die Bahnaufzeichnung
ausgeschaltet. Anschließend bewegt sich der Roboter ohne Bahnaufzeichnung von p4 zu p5.
...
VAR pathrecid start_id;
...
MoveL p1, vmax, fine, tool1;
PathRecStart start_id;
MoveL p2, vmax, z50, tool1;
MoveL p3, vmax, z50, tool1;
MoveL p4, vmax, fine, tool1;
PathRecStop \Clear;
MoveL p5, vmax, fine, tool1;
ERROR
StorePath;
PathRecMoveBwd;
! Fix the problem
PathRecMoveFwd;
RestoPath;
StartMove;
RETRY;
ENDIF
...
49 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.4. Bahnaufzeichnung
(Forts.)
Komplexes Beispiel
In diesem Beispiel wird die Bahnaufzeichnung für zwei Zwecke verwendet:
• Wenn ein Fehler auftritt, kann der Bediener den Roboter zu p1 oder zu p2
zurückbewegen. Nachdem der Fehler behoben wurde, wird die unterbrochene
Bewegung fortgesetzt.
• Auch wenn kein Fehler auftritt, wird der Roboter mithilfe der Bahnaufzeichnung von
p4 zu p1 bewegt. Dieses Verfahren empfiehlt sich, wenn sich der Roboter an einer
schmalen Position befindet, an der das Herausbewegen des Roboters schwierig ist.
Beachten Sie, dass ein Zurückbewegen zu p2 nicht möglich ist, wenn ein Fehler während der
ersten Bewegungsinstruktion (zwischen p1 und p2) auftritt. Wenn der Bediener den Roboter
zu p2 zurückbewegen möchte, wird PathRecValidBwd verwendet, um zu bestimmen, ob
dies möglich ist. Bevor der Roboter vorwärts an die Position bewegt wird, an der der Vorgang
unterbrochen wurde, wird mithilfe von PathRecValidFwd bestimmt, ob dies möglich ist,
(wenn der Roboter niemals zurückbewegt wurde, befindet er sich bereits in Position).
...
VAR pathrecid origin_id;
VAR pathrecid corner_id;
VAR num choice;
...
MoveJ p1, vmax, z50, tool1;
PathRecStart origin_id;
MoveJ p2, vmax, z50, tool1;
PathRecStart corner_id;
MoveL p3, vmax, z50, tool1;
MoveL p4, vmax, fine, tool1;
! Use path record to move safely to p1
StorePath;
PathRecMoveBwd \ID:=origin_id
\ToolOffs:=[0,0,10];
RestoPath;
PathRecStop \Clear;
Clear Path;
Start Move;
50 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.4. Bahnaufzeichnung
(Forts.)
ERROR
StorePath;
! Ask operator how far to back up
TPReadFK choice,"Extract to:", stEmpty, stEmpty,
stEmpty, "Origin", "Corner";
IF choice=4 THEN
! Back up to p1
PathRecMoveBwd \ID:=origin_id
\ToolOffs:=[0,0,10];
ELSEIF choice=5 THEN
! Verify that it is possible to back to p2,
IF PathRecValidBwd(\ID:=corner_id) THEN
! Back up to p2
PathRecMoveBwd \ID:=corner_id
\ToolOffs:=[0,0,10];
ENDIF
ENDIF
! Fix the problem
! Verify that there is a path record forward
IF PathRecValidFwd() THEN
! Return to where the path was interrupted
PathRecMoveFwd \ToolOffs:=[0,0,10];
ENDIF
! Restore the path and resume movement
RestoPath;
StartMove;
RETRY;
...
51 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.4. Bahnaufzeichnung
(Forts.)
Fortsetzen der Bahnaufzeichnung
Wenn die Bahnaufzeichnung angehalten wurde, kann sie an derselben Position erneut
gestartet werden, ohne den Ereignisverlauf zu löschen.
Im folgenden Beispiel wird der Roboter mit der PathRecMoveBwd-Instruktion zu p1
zurückbewegt. Dies ist nicht möglich, wenn sich der Roboter beim erneuten Starten der
Bahnaufzeichnung an einer anderen Position als p2 befindet.
Weitere Informationen finden Sie im RAPID-Referenzhandbuch - Teil 1, Instruktionen von A-
Z im Abschnitt über PathRecStop.
...
MoveL p1, vmax, z50, tool1;
PathRecStart id1;
MoveL p2, vmax, z50, tool1;
PathRecStop;
MoveL p3, vmax, z50, tool1;
MoveL p4, vmax, z50, tool1;
MoveL p2, vmax, z50, tool1;
PathRecStart id2;
MoveL p5, vmax, z50, tool1;
StorePath;
PathRecMoveBwd \ID:=id1;
RestoPath;
...
52 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.4. Bahnaufzeichnung
(Forts.)
Beispiel „SyncArc“ mit koordinierter synchroner Bewegung
In diesem Beispiel wird die Verwendung der Bahnaufzeichnung bei der Fehlerbehandlung für
ein MultiMove-System gezeigt.
In diesem Beispiel führen zwei Roboter Bogenschweißarbeiten an demselben Werkstück aus.
Um das Beispiel einfach und allgemein zu halten, werden anstelle von Schweißinstruktionen
Bewegungsinstruktionen verwendet. Das Werkstück wird von einem Positionierer gedreht.
Weitere Informationen über das Beispiel SyncArc finden Sie im Handbuch MultiMove.
T_ROB1-TaskprogrammMODULE module1
VAR syncident sync1;
VAR syncident sync2;
VAR syncident sync3;
PERS tasks all_tasks{3} := [["T_ROB1"],["T_ROB2"],["T_STN1"]];
PERS wobjdata wobj_stn1 := [ FALSE, FALSE, "STN_1",[ [0, 0, 0],
[1, 0, 0 ,0] ], [ [0, 0,250], [1, 0, 0, 0] ] ];
TASK PERS tooldata tool1 := ...
CONST robtarget p100 := ...
CONST robtarget p199 := ...
PROC main()
...
SyncMove;
ENDPROC
53 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.4. Bahnaufzeichnung
(Forts.)
PROC SyncMove()
WaitSyncTask sync1, all_tasks;
MoveJ p100, v1000, z50, tool1;
! Start recording
PathRecStart HomeROB1;
MoveL p101, v500, fine, tool1;
SyncMoveOn sync2, all_tasks;
MoveL p102\ID:=10, v300, z10, tool1 \WObj:=wobj_stn1;
MoveC p103, p104\ID:=20, v300, z10, tool1 \WObj:=wobj_stn1;
MoveL p105\ID:=30, v300, z10, tool1 \WObj:=wobj_stn1;
MoveC p106, p101\ID:=40, v300, fine, tool1 \WObj:=wobj_stn1;
!Stop recording
PathRecStop \Clear;
SyncMoveOff sync3;
MoveL p199, v1000, fine, tool1;
UNDO
SyncMoveUndo;
ERROR
! Weld error in this program task
IF ERRNO = AW_WELD_ERR THEN
gun_cleaning();
ENDIF
ENDPROC
PROC gun_cleaning()
VAR robtarget p1;
!Store the movement path
IF IsSyncMoveOn() THEN
StorePath \KeepSync;
ELSE
StorePath;
ENDIF
!Move this robot backward to p100.
PathRecMoveBwd \ID:=HomeROB1 \ToolOffs:=[0,0,10];
!Correct the error
54 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.4. Bahnaufzeichnung
(Forts.)
MoveJ pclean1 ,v100, fine, tool1;
...
!Move the robot back to p100
MoveJ p100, v100, fine, tool1;
PathRecMoveFwd \ToolOffs:=[0,0,10];
!Restore the path and start the movement
RestoPath;
StartMove;
RETRY;
ENDPROC
ENDMODULE
T_ROB2-TaskprogrammMODULE module2
VAR syncident sync1;
VAR syncident sync2;
VAR syncident sync3;
PERS tasks all_tasks{3};
PERS wobjdata wobj_stn1;
TASK PERS tooldata tool2 := ...
CONST robtarget p200 := ...
CONST robtarget p299 := ...
PROC main()
...
SyncMove;
ENDPROC
PROC SyncMove()
WaitSyncTask sync1, all_tasks;
MoveJ p200, v1000, z50, tool2;
PathRecStart HomeROB2;
MoveL p201, v500, fine, tool2;
SyncMoveOn sync2, all_tasks;
MoveL p202\ID:=10, v300, z10, tool2 \WObj:=wobj_stn1;
MoveC p203, p204\ID:=20, v300, z10, tool2 \WObj:=wobj_stn1;
MoveL p205\ID:=30, v300, z10, tool2 \WObj:=wobj_stn1;
MoveC p206, p201\ID:=40, v300, fine, tool2 \WObj:=wobj_stn1;
55 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.4. Bahnaufzeichnung
(Forts.)
PathRecStop \Clear;
SyncMoveOff sync3;
MoveL p299, v1000, fine, tool2;
UNDO
SyncMoveUndo;
ERROR
IF ERRNO = ERR_PATH_STOP THEN
gun_move_out();
ENDIF
ENDPROC
PROC gun_move_out()
IF IsSyncMoveOn() THEN
StorePath \KeepSync;
ELSE
StorePath;
ENDIF
! Move this robot backward to p201
PathRecMoveBwd \ToolOffs:=[0,0,10];
! Wait for the other gun to get clean
PathRecMoveFwd \ToolOffs:=[0,0,10];
!Restore the path and start the movement
RestoPath;
StartMove;
RETRY;
ENDPROC
ENDMODULE
56 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.4. Bahnaufzeichnung
(Forts.)
T_STN1-TaskprogrammMODULE module3
VAR syncident sync1;
VAR syncident sync2;
VAR syncident sync3;
PERS tasks all_tasks{3};
CONST jointtarget angle_neg20 :=[ [ 9E9, 9E9, 9E9, 9E9, 9E9,
9E9], [ -20, 9E9, 9E9, 9E9, 9E9, 9E9] ];
...
CONST jointtarget angle_340 :=[ [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9],[
340, 9E9, 9E9, 9E9,9E9, 9E9] ];
PROC main()
...
SyncMove;
...
ENDPROC
PROC SyncMove()
WaitSyncTask sync1, all_tasks;
MoveExtJ angle_neg20, vrot50, fine;
PathRecStart HomeSTN1;
SyncMoveOn sync2, all_tasks;
MoveExtJ angle_20\ID:=10, vrot100, z10;
MoveExtJ angle_160\ID:=20, vrot100, z10;
MoveExtJ angle_200\ID:=30, vrot100, z10;
MoveExtJ angle_340\ID:=40, vrot100, fine;
PathRecStop \Clear;
SyncMoveOff sync3;
UNDO
SyncMoveUndo;
ERROR
IF ERRNO = ERR_PATH_STOP THEN
gun_move_out();
ENDIF
ENDPROC
57 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
4 Path Recovery4.4. Bahnaufzeichnung
(Forts.)
PROC gun_move_out()
!Store the movement
IF IsSyncMoveOn() THEN
StorePath \KeepSync;
ELSE
StorePath;
ENDIF
!Move the manipulator backward to angle_neg 20
PathRecMoveBwd \ToolOffs:=[0,0,0];
...
!Wait for the gun to get clean
PathRecMoveFwd \ToolOffs:=[0,0,0];
RestoPath;
StartMove;
RETRY;
ENDPROC
58 3HAC 18152-3 Revision: B
5 Path Offset5.1. Übersicht
5 Path Offset
5.1. Übersicht
Zweck
Mit Path Offset werden Online-Anpassungen der Roboterbahn entsprechend den
Eingangsdaten von Sensoren vorgenommen. Mit der Gruppe der Instruktionen von Path
Offset kann die Roboterbahn mit den Eingangsdaten von Sensoren verglichen und
entsprechend angepasst werden.
Enthaltene Komponenten
Die RobotWare-Option Path Offset ermöglicht Ihnen den Zugriff auf folgende Elemente:
• den Datentyp corrdescr
• die Instruktionen CorrCon, CorrDiscon, CorrClear und CorrWrite
• die Funktion CorrRead
Grundlegende Methode
Das ist die allgemeine Methode zum Einrichten von Path Offset. Ein ausführlicheres Beispiel
zur Vorgehensweise finden Sie im Codebeispiel auf Seite 64.
1. Deklarieren Sie den Korrekturgenerator.
2. Verbinden Sie den Korrekturgenerator.
3. Definieren Sie eine Interrupt-Routine, die den Offset bestimmt und diesen in den
Korrekturgenerator schreibt.
4. Definieren Sie einen Interrupt, um die Interrupt-Routine häufig aufzurufen.
5. Rufen Sie mithilfe der Korrektur eine Bewegungsinstruktion auf. Die Bahn wird
mehrfach korrigiert.
59 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
5 Path Offset5.1. Übersicht
(Forts.)
Einschränkungen
Es ist möglich, mehrere Korrekturgeneratoren gleichzeitig zu verbinden (z. B. einen für
Korrekturen auf der Z-Achse und einen weiteren für Korrekturen auf der Y-Achse). Jedoch
können nicht mehr als 5 Korrekturgeneratoren gleichzeitig verbunden werden.
Nach einem Neustart der Steuerung müssen die Korrekturgeneratoren erneut definiert
werden. Die Definitionen und Verbindungen bleiben nach einem Neustart der Steuerung nicht
erhalten.
Die Instruktionen können nur in Bewegungstasks verwendet werden.
60 3HAC 18152-3 Revision: B
5 Path Offset5.2. RAPID-Komponenten
5.2. RAPID-Komponenten
Datentypen
Hier erhalten Sie eine kurze Beschreibung jedes Datentyps in Path Offset. Weitere
Informationen finden Sie unter dem jeweiligen Datentyp im RAPID-Referenzhandbuch - Teil
2, Funktionen und Datentypen von A-Z.
Instruktionen
Hier erhalten Sie eine kurze Beschreibung jeder Instruktion in Path Offset. Weitere
Informationen finden Sie unter der jeweiligen Instruktion im RAPID-Referenzhandbuch - Teil
1, Instruktionen von A-Z.
Datentyp Beschreibung
corrdescr corrdescr ist ein Korrekturgenerator-Deskriptor, der als Verweis auf den Korrektorgenerator verwendet wird.
Instruktion Beschreibung
CorrCon CorrCon aktiviert die Bahnkorrektur. Durch Aufruf von CorrCon wird eine Verbindung mit einem Korrekturgenerator hergestellt. Nachdem diese Verbindung hergestellt wurde, kann die Bahn kontinuierlich mit neuen Offset-Eingangsdaten (z. B. von einem Sensor) korrigiert werden.
CorrDiscon CorrDiscon deaktiviert die Bahnkorrektur. Durch Aufruf von CorrDiscon wird die Verbindung mit einem Korrekturgenerator getrennt.
CorrClear CorrClear deaktiviert die Bahnkorrektur. Durch Aufruf von CorrClear wird die Verbindung mit allen Korrekturgeneratoren getrennt.
CorrWrite CorrWrite legt die Bahnkorrekturwerte fest. Durch Aufruf von CorrWrite werden die Offset-Werte auf einen Korrekturgenerator gesetzt.
61 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
5 Path Offset5.2. RAPID-Komponenten
(Forts.)
Funktionen
Hier erhalten Sie eine kurze Beschreibung jeder Funktion in Path Offset. Weitere
Informationen finden Sie unter der jeweiligen Funktion im RAPID-Referenzhandbuch - Teil
2, Funktionen und Datentypen von A-Z.
Funktion Beschreibung
CorrRead CorrRead liest die gesamte von einem Korrekturgenerator ausgeführte Korrektur.
62 3HAC 18152-3 Revision: B
5 Path Offset5.3. Zugehörige RAPID-Funktionalität
5.3. Zugehörige RAPID-Funktionalität
Das Argument \Corr
Das optionale Argument \Corr kann für einige Bewegungsinstruktionen festgelegt werden.
Hierdurch werden Bahnkorrekturen während der Ausführung der Bewegungsinstruktion
ermöglicht.
Die folgenden Instruktionen verfügen über das optionale Argument \Corr:
• MoveL
• MoveC
• SearchL
• SearchC
• TriggL (nur wenn die Steuerung über die Option Fixed Position Events verfügt)
• TriggC (nur wenn die Steuerung über die Option Fixed Position Events verfügt)
• CapL (nur wenn die Steuerung über die Option Continuous Application Platform
verfügt)
• CapC (nur wenn die Steuerung über die Option Continuous Application Platform
verfügt)
• ArcL (nur wenn die Steuerung über die Option RobotWare Arc verfügt)
• ArcC (nur wenn die Steuerung über die Option RobotWare Arc verfügt)
Weitere Informationen über diese Instruktionen finden Sie unter der jeweiligen Instruktion im
RAPID-Referenzhandbuch - Teil 1, Instruktionen von A-Z.
Interrupts
Um Programme mithilfe von Path Offset zu erstellen, müssen Sie Interrupts handhaben
können. Weitere Informationen über Interrupts finden Sie im RAPID Referenzhandbuch -
RAPID-Überblick.
63 3HAC 18152-3 Revision: B
5 Path Offset5.4. Codebeispiel
5.4. Codebeispiel
Lineare Bewegung mit Korrektur
Dies ist ein einfaches Beispiel zum Programmieren einer linearen Bahn mit Online-
Bahnkorrektur. Dies erfolgt mithilfe eines Interrupts, der 5 Mal pro Sekunde ausgeführt wird,
und durch den Aufruf einer Interrupt-Routine, mit der die Offset-Korrektur durchgeführt
wird.
ProgrammcodeVAR intnum int_no1;
VAR corrdescr id;
VAR pos sens_val;
PROC PathRoutine()
!Connect to the correction generator
CorrCon id;
!Setup a 5 Hz timer interrupt.
CONNECT int_no1 WITH UpdateCorr;
ITimer\Single, 0.2, int_no1
!Position for start of contour tracking
MoveJ p10,v100,z10,tool1;
!Run MoveL with correction.
MoveL p20,v100,z10,tool1\Corr;
!Remove the correction generator.
CorrDiscon id;
!Remove the timer interrupt.
IDelete int_no1;
ENDPROC
64 3HAC 18152-3 Revision: B
Fortsetzung auf nächster Seite
5 Path Offset5.4. Codebeispiel
(Forts.)
TRAP UpdateCorr
!Call a routine that read the sensor
ReadSensor sens_val.x, sens_val.y, sens_val.z;
!Execute correction
CorrWrite id, sens_val;
!Setup interrupt again
IDelete int_no1;
CONNECT int_no1 WITH UpdateCorr;
ITimer\Single, 0.2, int_no1;
ENDTRAP
65 3HAC 18152-3 Revision: B
5 Path Offset5.4. Codebeispiel
66 3HAC 18152-3 Revision: B
Index
AAchse 27Achse zurücksetzen 28Achsenzonen 11aufgezeichnete Bahn 48
BBahn wiederherstellen 35Bahnaufzeichnung 48Bahnkorrektur 59Bahn-Offset 59
CCorr argument 63CorrClear 61CorrCon 61corrdescr 61CorrDiscon 61CorrRead 62CorrWrite 61
EEvent Preset Time 24externe Achse 27
FFixed Position Events 19
IIndAMove 30IndCMove 30IndDMove 30Independent Axes 27Independent Joint 29Independent Lower Joint Bound 29Independent Upper Joint Bound 29IndInpos 31IndReset 31IndRMove 31IndSpeed 31
KKorrekturgenerator 59
MMesssystem 31
MoveCSync 24MoveJSync 24MoveLSync 23
PPath Recovery 35pathrecid 36PathRecMoveBwd 36PathRecMoveFwd 36PathRecStart 36PathRecStop 36PathRecValidBwd 37PathRecValidFwd 37Positionsereignis 19
RRestoPath 36
SSensor 59shapedata 13stationäre Weltzone 13StorePath 36SyncMoveResume 37SyncMoveSuspend 37
Ttemporäre Weltzone 13Transmission Gear High 29Transmission Gear Low 29TriggC 23TriggCheckIO 23triggdata 21TriggEquip 22TriggInt 22TriggIO 22TriggJ 23TriggL 23
Uunabhängige Bewegung 27
WWeltzonen 11WZBoxDef 14WZCylDef 14
67
Index
WZDisable 15WZDOSet 15WZEnable 15WZFree 15WZHomeJointDef 14WZLimJointDef 14WZLimSup 15WZSphDef 14wzstationary 13wztemporary 13
ZZonen 11zurücksetzen 31Zurücksetzen der Achse 28
68
3HA
C 1
8152
-3, R
evis
ion
B, d
e
ABB Automation Technologies ABRoboticsS-721 68 VÄSTERÅSSWEDENTelephone: +46 (0) 21 344000Telefax: +46 (0) 21 132592