72
Anwendungshandbuch Bewegungsfunktionen und Ereignisse Steuerungssoftware IRC5 RobotWare 5.0

3HAC18152-3 RevB de Library

Embed Size (px)

DESCRIPTION

Technology

Citation preview

Page 1: 3HAC18152-3 RevB de Library

Anwendungshandbuch

Bewegungsfunktionen und Ereignisse

Steuerungssoftware IRC5RobotWare 5.0

Page 2: 3HAC18152-3 RevB de Library
Page 3: 3HAC18152-3 RevB de Library

Anwendungshandbuch

Bewegungsfunktionen und Ereignisse RobotWare 5.0

Dokumentnr: 3HAC 18152-3

Revision: B

Page 4: 3HAC18152-3 RevB de Library

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

Page 5: 3HAC18152-3 RevB de Library

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

Page 6: 3HAC18152-3 RevB de Library

Inhaltsverzeichnis

4

Page 7: 3HAC18152-3 RevB de Library

Ü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

Page 8: 3HAC18152-3 RevB de Library

Ü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

Page 9: 3HAC18152-3 RevB de Library

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

Page 10: 3HAC18152-3 RevB de Library

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

Page 11: 3HAC18152-3 RevB de Library

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

Page 12: 3HAC18152-3 RevB de Library

Sicherheit

10 3HAC 18152-3 Revision: B

Page 13: 3HAC18152-3 RevB de Library

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

Page 14: 3HAC18152-3 RevB de Library

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

Page 15: 3HAC18152-3 RevB de Library

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

Page 16: 3HAC18152-3 RevB de Library

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

Page 17: 3HAC18152-3 RevB de Library

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

Page 18: 3HAC18152-3 RevB de Library

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

Page 19: 3HAC18152-3 RevB de Library

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

Page 20: 3HAC18152-3 RevB de Library

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

Page 21: 3HAC18152-3 RevB de Library

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

Page 22: 3HAC18152-3 RevB de Library

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

Page 23: 3HAC18152-3 RevB de Library

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

Page 24: 3HAC18152-3 RevB de Library

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

Page 25: 3HAC18152-3 RevB de Library

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

Page 26: 3HAC18152-3 RevB de Library

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

Page 27: 3HAC18152-3 RevB de Library

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

Page 28: 3HAC18152-3 RevB de Library

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

Page 29: 3HAC18152-3 RevB de Library

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

Page 30: 3HAC18152-3 RevB de Library

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

Page 31: 3HAC18152-3 RevB de Library

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

Page 32: 3HAC18152-3 RevB de Library

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

Page 33: 3HAC18152-3 RevB de Library

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

Page 34: 3HAC18152-3 RevB de Library

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

Page 35: 3HAC18152-3 RevB de Library

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

Page 36: 3HAC18152-3 RevB de Library

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

Page 37: 3HAC18152-3 RevB de Library

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

Page 38: 3HAC18152-3 RevB de Library

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

Page 39: 3HAC18152-3 RevB de Library

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

Page 40: 3HAC18152-3 RevB de Library

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

Page 41: 3HAC18152-3 RevB de Library

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

Page 42: 3HAC18152-3 RevB de Library

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

Page 43: 3HAC18152-3 RevB de Library

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

Page 44: 3HAC18152-3 RevB de Library

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

Page 45: 3HAC18152-3 RevB de Library

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

Page 46: 3HAC18152-3 RevB de Library

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

Page 47: 3HAC18152-3 RevB de Library

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

Page 48: 3HAC18152-3 RevB de Library

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

Page 49: 3HAC18152-3 RevB de Library

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

Page 50: 3HAC18152-3 RevB de Library

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

Page 51: 3HAC18152-3 RevB de Library

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

Page 52: 3HAC18152-3 RevB de Library

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

Page 53: 3HAC18152-3 RevB de Library

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

Page 54: 3HAC18152-3 RevB de Library

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

Page 55: 3HAC18152-3 RevB de Library

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

Page 56: 3HAC18152-3 RevB de Library

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

Page 57: 3HAC18152-3 RevB de Library

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

Page 58: 3HAC18152-3 RevB de Library

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

Page 59: 3HAC18152-3 RevB de Library

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

Page 60: 3HAC18152-3 RevB de Library

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

Page 61: 3HAC18152-3 RevB de Library

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

Page 62: 3HAC18152-3 RevB de Library

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

Page 63: 3HAC18152-3 RevB de Library

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

Page 64: 3HAC18152-3 RevB de Library

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

Page 65: 3HAC18152-3 RevB de Library

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

Page 66: 3HAC18152-3 RevB de Library

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

Page 67: 3HAC18152-3 RevB de Library

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

Page 68: 3HAC18152-3 RevB de Library

5 Path Offset5.4. Codebeispiel

66 3HAC 18152-3 Revision: B

Page 69: 3HAC18152-3 RevB de Library

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

Page 70: 3HAC18152-3 RevB de Library

Index

WZDisable 15WZDOSet 15WZEnable 15WZFree 15WZHomeJointDef 14WZLimJointDef 14WZLimSup 15WZSphDef 14wzstationary 13wztemporary 13

ZZonen 11zurücksetzen 31Zurücksetzen der Achse 28

68

Page 71: 3HAC18152-3 RevB de Library
Page 72: 3HAC18152-3 RevB de Library

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