Bedienanleitung Einführung in RAPID - ABB Robotics

Die Seite wird erstellt Dörte Pfeifer
 
WEITER LESEN
Bedienanleitung Einführung in RAPID - ABB Robotics
ABB Robotics

Bedienanleitung
Einführung in RAPID
Trace back information:
Workspace R12-2 version a9
Checked in 2012-09-29
Skribenta version 1184
Bedienanleitung
                     Einführung in RAPID
                                      RobotWare 5

                  Dokumentnr: 3HAC029364-003
                                       Revision: A

© Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
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.
Zusätzliche Kopien dieses Handbuchs können von ABB bezogen werden.
Die ursprüngliche Sprache diese Veröffentlichung ist Englisch. Alle anderen
angebotenen Sprachen wurden aus dem Englischen übersetzt.

              © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
                                     ABB AB
                                Robotics Products
                                SE-721 68 Västerås
                                    Schweden
Inhaltsverzeichnis

Inhaltsverzeichnis
    Überblick über dieses Handbuch ..................................................................................................... 7
    Produktdokumentation, M2004 ........................................................................................................                   9
    Sicherheit .......................................................................................................................................... 11
    Terminologie ..................................................................................................................................... 12

1   Grundlagen von RAPID                                                                                                                                13
    1.1      Über RAPID .....................................................................................................                           13
    1.2      RAPID-Daten ....................................................................................................                           14
             1.2.1 Variablen ...............................................................................................                            14
             1.2.2 Persistente Variablen ...............................................................................                                16
             1.2.3 Konstanten ............................................................................................                              17
             1.2.4 Operatoren ............................................................................................                              18
    1.3      Steuern des Programmablaufs .............................................................................                                  20
             1.3.1 IF THEN ................................................................................................                             20
             1.3.2 Beispiele für logische Bedingungen und IF-Anweisungen ...............................                                                22
             1.3.3 FOR-Schleife ..........................................................................................                              23
             1.3.4 WHILE-Schleife .......................................................................................                               24
    1.4      Regeln und Empfehlungen für RAPID-Syntax .........................................................                                         25
             1.4.1 Allgemeine Regeln für die RAPID-Syntax .....................................................                                         25
             1.4.2 Empfehlungen für RAPID-Code ..................................................................                                       26

2   RAPID-Roboterfunktionalität                                                                                                                         27
    2.1      Bewegungsinstruktionen ....................................................................................                                27
             2.1.1 MoveL-Instruktion ...................................................................................                                27
             2.1.2 Koordinatensysteme ................................................................................                                  30
             2.1.3 Beispiele für MoveL .................................................................................                                31
             2.1.4 Weitere Bewegungsinstruktionen ...............................................................                                       33
             2.1.5 Abarbeitungsverhalten in Verschleifzonen ...................................................                                         34
    2.2      E/A-Signale ......................................................................................................                         36
             2.2.1 E/A-Signale ............................................................................................                             36
    2.3      Benutzerinteraktion ...........................................................................................                            38
             2.3.1 Kommunikation mit dem FlexPendant .........................................................                                          38

3   Struktur                                                                                                                                            41
    3.1      RAPID-Prozedur ............................................................................................... 41
    3.2      Module ............................................................................................................ 43
    3.3      Strukturierter Entwurf ......................................................................................... 45

4   Daten mit mehreren Werten                                                                                                                           49
    4.1      Datenfelder ......................................................................................................                         49
    4.2      Zusammengesetzte Datentypen ...........................................................................                                    50

5   RAPID-Instruktionen und -Funktionen                                                                                                                 53
    5.1      Instruktionen .................................................................................................... 53
    5.2      Funktionen ....................................................................................................... 54

6   Weiterführende Literatur                                                                                                                            55
    6.1      Weitere Informationen ........................................................................................                             55

Index                                                                                                                                                   57

3HAC029364-003 Revision: A                                                                                                                                5
                                       © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
Diese Seite wurde absichtlich leer gelassen
Überblick über dieses Handbuch

Überblick über dieses Handbuch
Über dieses Handbuch
                  Dieses Handbuch bietet eine Einführung in RAPID. Viele Funktionen in RAPID
                  werden nicht behandelt, jedoch werden die wichtigsten Komponenten beschrieben,
                  so dass eine gut verständliche Beschreibung der Programmiersprache geboten
                  wird. Dieses Handbuch macht Sie nicht zu einem versierten RAPID-Programmierer,
                  Sie lernen jedoch das Konzept der Programmierung mit RAPID kennen. Details
                  finden Sie immer in den Referenzhandbüchern.

Verwendung
                     Dieses Handbuch sollte gelesen werden, bevor mit der Programmierung begonnen
                     wird. Es enthält nicht alle Informationen, die Sie benötigen, jedoch müssen Sie mit
                     den meisten Informationen in diesem Handbuch vertraut sein, bevor Sie mit dem
                     Schreiben eines RAPID-Programms beginnen.
                     Das Handbuch ersetzt nicht die Schulungskurse für RAPID, kann sie jedoch
                     ergänzen.

An welche Personen richtet sich dieses Handbuch?
                  Das Handbuch ist für Personen vorgesehen, die noch keine Programmiererfahrung
                  besitzen, z. B. für einen Roboterbediener, der das Programmieren des Roboters
                  erlernen möchte.

Voraussetzungen
                     Zum Lesen dieses Handbuchs sind keine Voraussetzungen erforderlich.

Kapiteleinteilung
                     Dieses Handbuch setzt sich aus den folgenden Kapiteln zusammen:
                     Kapitel                            Inhalt
                     1 RAPID-Grundlagen                 Die Grundlagen des Programmierens. Diese Funktiona-
                                                        lität ist in den meisten höheren Programmiersprachen
                                                        ähnlich.
                     2 RAPID-Roboterfunktionalität      Beschreibt die Funktionalität, die RAPID von anderen
                                                        Programmiersprachen unterscheidet, z. B. Bewegungs-
                                                        instruktionen, E/A-Signale und die Kommunikation mit
                                                        dem FlexPendant.
                     3-Struktur                         Beschreibt die Verfahren zum Erstellen eines Pro-
                                                        gramms. Dieses Kapitel enthält außerdem eine kurze
                                                        Einführung in das Anwenden eines strukturierten Pro-
                                                        grammentwurfs.
                     4 Daten mit mehreren Werten        Beschreibt Datenfelder und komplexe Datentypen.
                     5 RAPID-Instruktionen und -        Hier wird kurz erläutert, worum es sich bei RAPID-Instruk-
                     Funktionen                         tionen und -Funktionen handelt.
                     6 Weiterführende Literatur         Hier erfahren Sie, wo Sie weitere Informationen finden,
                                                        wenn Sie Ihr Studium von RAPID vertiefen möchten.

                                                                              Fortsetzung auf nächster Seite
3HAC029364-003 Revision: A                                                                                       7
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
Überblick über dieses Handbuch

Fortsetzung

Referenzen

                Referenz                                                          Dokumentkennung
                Technisches Referenzhandbuch - RAPID Überblick                    3HAC16580-3
                Technisches Referenzhandbuch - RAPID Instruktionen, Funktionen 3HAC16581-3
                und Datentypen
                Technical reference manual - RAPID kernel                         3HAC16585-1
                Bedienanleitung - IRC5 mit FlexPendant                            3HAC16590-3

Revisionen

                Revision   Beschreibung
                -          Erste Ausgabe
                A          Den Datentyp dnum zu Variablen auf Seite 14 hinzugefügt.

8                                                                          3HAC029364-003 Revision: A
                    © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
Produktdokumentation, M2004

Produktdokumentation, M2004
Kategorien für die Manipulatordokumentation
                    Die Manipulatordokumentation ist in mehrere Kategorien unterteilt. Die Liste beruht
                    auf der Informationsart in den Dokumenten, unabhängig davon, ob es sich um
                    Standardprodukte oder optionale Produkte handelt.
                     Alle Dokumente in der Liste können von ABB als DVD bestellt werden. Die
                     erwähnten Dokumente gelten für M2004-Manipulatorsysteme.

Produkthandbücher
                     Manipulatoren, Steuerungen, DressPack/SpotPack und die meiste andere Hardware
                     werden mit einem Produkthandbuch geliefert, das Folgendes enthält:
                        •    Sicherheitsinformationen.
                        •    Installation und Inbetriebnahme (Beschreibung der mechanischen Installation
                             und der elektrischen Anschlüsse).
                        •    Wartung (Beschreibung aller erforderlichen vorbeugenden
                             Wartungsmaßnahmen einschließlich der entsprechenden Intervalle und der
                             Lebensdauer der Teile).
                        •    Reparatur (Beschreibung aller empfohlenen Reparaturvorgänge,
                             einschließlich des Austauschs von Ersatzteilen).
                        •    Kalibrierung.
                        •    Stilllegung.
                        •    Referenzinformation (Sicherheitsstandards, Einheitenumrechnung,
                             Schraubverbindungen, Werkzeuglisten).
                        •    Ersatzteilliste mit Explosionszeichnungen (oder Referenzen zu separaten
                             Ersatzteillisten).
                        •    Schaltpläne (oder Referenzen zu Schaltplänen).

Technische Referenzhandbücher
                   Die technischen Referenzhandbücher enthalten Referenzinformationen für
                   Robotics-Produkte.
                        •    Technical reference manual - Lubrication in gearboxes: Beschreibung der
                             Typen und Mengen von Schmiermittel für die Manipulatorgetriebe.
                        •    Technisches Referenzhandbuch - RAPID Überblick: Ein Überblick über die
                             RAPID-Programmiersprache.
                        •    Technisches Referenzhandbuch - RAPID Instruktionen, Funktionen und
                             Datentypen: Beschreibung und Syntax aller RAPID-Instruktionen, -Funktionen
                             und -Datentypen.
                        •    Technical reference manual - RAPID kernel: Eine formelle Beschreibung der
                             RAPID-Programmiersprache.
                        •    Technisches Referenzhandbuch - Systemparameter: Beschreibung von
                             Systemparametern und Konfigurationsabläufen.

                                                                            Fortsetzung auf nächster Seite
3HAC029364-003 Revision: A                                                                              9
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
Produktdokumentation, M2004

Fortsetzung

Anwendungshandbücher
                Bestimmte Anwendungen (z. B. Software- oder Hardware-Optionen) werden in
                Anwendungshandbüchern beschrieben. Ein Anwendungshandbuch kann eine
                oder mehrere Anwendungen beschreiben.
                    Ein Anwendungshandbuch enthält im Allgemeinen folgende Informationen:
                      •   Zweck der Anwendung (Aufgabe und Nutzen).
                      •   Enthaltenes Material (z. B. Kabel, E/A-Karten, RAPID-Instruktionen,
                          Systemparameter, DVD mit PC-Software)
                      •   Installieren von enthaltener oder erforderlicher Hardware.
                      •   Bedienungsanleitung für die Anwendung.
                      •   Beispiele für die Verwendung der Anwendung.

Bedienanleitungen
                    In den Bedienanleitungen wird die Handhabung der Produkte in der Praxis
                    beschrieben. Diese Handbücher richten sich an die Personen, die direkten
                    Bedienungskontakt mit dem Produkt haben, also Bediener der Produktionszelle,
                    Programmierer und Wartungsmitarbeiter.
                    Diese Gruppe von Handbüchern umfasst (u. a.):
                      •   Bedienanleitung - Sicherheitsinformationen für Notfälle
                      •   Bedienanleitung - Allgemeine Sicherheitsinformationen
                      •   Bedienanleitung - Erste Schritte - IRC5 und RobotStudio
                      •   Bedienanleitung - Einführung in RAPID
                      •   Bedienanleitung - IRC5 mit FlexPendant
                      •   Bedienanleitung - RobotStudio
                      •   Bedienanleitung - Fehlerbehebung IRC5 für Steuerung und Manipulator.

10                                                                               3HAC029364-003 Revision: A
                          © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
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
                   Vor dem ersten Einsatz des Roboters müssen Sie sich unbedingt mit den
                   Sicherheitsbestimmungen im Handbuch Bedienanleitung - Allgemeine
                   Sicherheitsinformationen vertraut machen.

3HAC029364-003 Revision: A                                                                       11
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
Terminologie

Terminologie
Über die Begriffe
                    Dieses Handbuch wurde generell für Anfänger in Bezug auf Programmierung und
                    Roboter verfasst. Es werden jedoch einige Begriffe verwendet, mit denen
                    möglicherweise nur Personen vertraut sind, die bereits Kenntnisse über
                    Programmierung und/oder Industrieroboter besitzen. Diese Begriffe werden in
                    diesem Terminologiekapitel erläutert.

Begriffe

                    Begriff           Beschreibung
                    FlexPendant       Ein Hand-Terminal zum Steuern eines Robotersystems.
                    Robotersteuerung Die Robotersteuerung ist im Prinzip ein Computer, der den Roboter
                                     steuert.
                    Syntax            Regeln, die bestimmen, wie Code in einer bestimmten Programmier-
                                      sprache geschrieben werden darf. Sie kann als Grammatik der Program-
                                      miersprache betrachtet werden.
                                      Die Syntax einer Programmiersprache ist weitaus genauer geregelt als
                                      die Syntax gewöhnlicher Sprachen. Die menschliche Intelligenz ist in
                                      der Lage, den Sinn des Satzes „Ich schnell laufe“ zu verstehen, auch
                                      wenn die Regeln der Syntax „Ich laufe schnell“ vorschreiben. Computer
                                      hingegen verfügen über keine menschliche Intelligenz und verstehen
                                      ausschließlich Anweisungen, deren Syntax zu 100 Prozent mit den
                                      Regeln übereinstimmt.

12                                                                              3HAC029364-003 Revision: A
                         © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
1 Grundlagen von RAPID
                                                                                     1.1 Über RAPID

1 Grundlagen von RAPID
1.1 Über RAPID

Was ist RAPID?
                     Wenn Sie einen Computer zu einer Aktion veranlassen möchten, ist ein Programm
                     erforderlich. RAPID ist eine Programmiersprache zum Schreiben eines solchen
                     Programms.
                     Die ursprüngliche Sprache von Computern besteht nur aus den Zahlen 0 und 1.
                     Für Menschen ist diese Sprache praktisch nicht verständlich. Daher wurde für
                     Computer eine relativ einfach verständliche Sprache entwickelt – eine höhere
                     Programmiersprache. RAPID ist eine höhere Programmiersprache, die einige
                     englische Wörter (z. B.IF und FOR) enthält, damit sie für Menschen verständlich
                     ist.

Einfaches Beispiel für ein RAPID-Programm
                     Im Folgenden zeigen wir anhand eines einfachen Beispiels, wie ein
                     RAPID-Programm aussehen kann:
                         MODULE MainModule
                           VAR num length;
                           VAR num width;
                           VAR num area;

                           PROC main()
                             length := 10;
                             width := 5;
                             area := length * width;
                             TPWrite "The area of the rectangle is " \Num:=area;
                           END PROC
                         ENDMODULE
                     Dieses Programm berechnet die Fläche eines Rechtecks und gibt auf dem
                     FlexPendant Folgendes aus:
                         The area of the rectangle is 50

3HAC029364-003 Revision: A                                                                        13
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
1 Grundlagen von RAPID
1.2.1 Variablen

1.2 RAPID-Daten

1.2.1 Variablen

Datentypen
                     In RAPID gibt es viele unterschiedliche Datentypen. Vorerst beschäftigen wir uns
                     nur mit den vier allgemeinen Datentypen:
                     Datentyp          Beschreibung
                     num               Bei numerischen Daten kann es sich um ganze Zahlen und um Dezimal-
                                       zahlen handeln, z. B. 10 oder 3,14159.
                     dnum              Numerische Daten mit einer höheren Auflösung als num. Können ganze
                                       Zahlen (für die Bearbeitung großer Werte) und Dezimalzahlen sein (mit
                                       mehr Dezimalstellen). Zum Beispiel 4503599627370496 oder
                                       3,141592653589793.
                     string            Eine Zeichenfolge mit Text, z. B. „Dies ist eine Zeichenfolge“. Sie kann
                                       maximal 80 Zeichen enthalten.
                     bool              Eine boolesche (logische) Variable. Sie kann nur den Wert TRUE oder
                                       FALSE aufweisen.

                     Alle anderen Datentypen basieren auf diesen vier Datentypen. Wenn Sie diese
                     Datentypen kennen und wissen, wie Sie Operationen mit ihnen ausführen und wie
                     sie zu komplexeren Datentypen kombiniert werden können, sind alle Datentypen
                     für Sie leicht zu verstehen.

Merkmale von Variablen
                   Eine Variable enthält einen Datenwert. Wenn das Programm angehalten und neu
                   gestartet wird, bleibt der Wert der Variablen erhalten, doch wenn der
                   Programmzeiger auf main verschoben wird, geht der Datenwert der Variablen
                   verloren.

Deklarieren einer Variablen
                     Beim Deklarieren einer Variablen werden der Name der Variablen und ihr Datentyp
                     definiert. Variablen werden mit dem Schlüsselwort VAR gemäß folgender Syntax
                     definiert:
                         VAR DatentypBezeichner;

Beispiel:
                         VAR    num length;
                         VAR    dnum pi;
                         VAR    string name;
                         VAR    bool finished;

Zuweisen von Werten
                  Einer Variablen wird mit der Instruktion := ein Wert zugewiesen.
                         length := 10;
                         pi := 3.141592653589793;
                         name := "John"
                         finished := TRUE;

Fortsetzung auf nächster Seite
14                                                                                 3HAC029364-003 Revision: A
                            © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
1 Grundlagen von RAPID
                                                                                      1.2.1 Variablen

                                                                                         Fortsetzung

                     Beachten Sie, dass := kein Gleichheitszeichen ist. Das Zeichen bedeutet, dass
                     der Ausdruck auf der rechten Seite an die Variable auf der linken Seite übergeben
                     wird. Links von := darf nur eine Variable stehen.
                     Beispielsweise sind die folgenden Anweisungen ordnungsgemäßer RAPID-Code,
                     der dazu führt, dass reg1 den Wert 3 annimmt:
                         reg1 := 2;
                         reg1 := reg1 + 1;
                     Die Zuweisung kann gemeinsam mit der Variablendeklaration erfolgen:
                         VAR     num length := 10;
                         VAR     dnum pi := 3.141592653589793;
                         VAR     string name := "John";
                         VAR     bool finished := TRUE;

3HAC029364-003 Revision: A                                                                         15
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
1 Grundlagen von RAPID
1.2.2 Persistente Variablen

1.2.2 Persistente Variablen

Was ist eine persistente Variable?
                     Eine persistente Variable weist einen einzigen, jedoch wichtigen Unterschied zu
                     gewöhnlichen Variablen auf. In einer persistenten Variablen wird der Wert
                     gespeichert, der ihr zuletzt zugewiesen wurde, auch wenn das Programm
                     angehalten und ab dem Anfang des Programms neu gestartet wird.

Deklarieren einer persistenten Variablen
                     Persistente Variablen werden mit dem Schlüsselwort PERS deklariert. Bei der
                     Deklaration muss ein Anfangswert zugewiesen werden.
                         PERS num nbr := 1;
                         PERS string string1 := "Hello";

Beispiel:
                     Betrachten Sie das folgende Codebeispiel:
                         PERS num nbr := 1;
                         PROC main()
                           nbr := 2;
                         ENDPROC
                     Bei der Ausführung dieses Programms wird der Anfangswert in 2 geändert. Beim
                     nächsten Ausführen des Programms lautet der Programmcode wie folgt:
                         PERS num nbr := 2;
                         PROC main()
                           nbr := 2;
                         ENDPROC

16                                                                               3HAC029364-003 Revision: A
                          © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
1 Grundlagen von RAPID
                                                                                    1.2.3 Konstanten

1.2.3 Konstanten

Was ist eine Konstante?
                    Eine Konstante enthält wie eine Variable einen Wert. Jedoch wird der Wert immer
                    bei der Deklaration zugewiesen und kann danach nicht mehr geändert werden.
                    Die Konstante kann im Programm auf die gleiche Weise wie eine Variable verwendet
                    werden, mit dem Unterschied, dass der Konstanten kein neuer Wert zugewiesen
                    werden darf.

Konstantendeklaration
                   Konstanten werden mit dem Schlüsselwort CONST deklariert, auf das der Datentyp,
                   der Bezeichner und die Zuweisung eines Wertes folgen.
                         CONST num gravity := 9.81;
                         CONST string greating := "Hello"

Zweck der Verwendung von Konstanten
                  Wenn Sie statt einer Variablen eine Konstante verwenden, können Sie sicherstellen,
                  dass der Wert nicht im Programm geändert wird.
                     Es empfiehlt sich, eine Konstante zu verwenden statt den Wert direkt im Programm
                     zu schreiben, wenn Sie das Programm mit einem anderen Wert für die Konstante
                     aktualisieren müssen. Dann muss die Änderung nur an einer Stelle vorgenommen
                     werden, und Sie können ausschließen, dass ein Vorkommen des Wertes übersehen
                     wurde.

3HAC029364-003 Revision: A                                                                        17
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
1 Grundlagen von RAPID
1.2.4 Operatoren

1.2.4 Operatoren

Numerische Operatoren
                  Mit diesen Operatoren wird der Datentyp num verarbeitet und sie geben den
                  Datentyp num zurück. In den folgenden Beispielen sind die Variablen reg1, reg2
                  und reg3 vom Datentyp num.

                     Operator     Beschreibung              Beispiel:
                     +            Addition                  reg1 := reg2 + reg3;
                     -            Subtraktion               reg1 := reg2 - reg3;
                                  Unäres Minus              reg1 := -reg2;
                     *            Multiplikation            reg1 := reg2 * reg3;
                     /            Division                  reg1 := reg2 / reg3;

Relationale Operatoren
                    Diese Operatoren geben den Datentyp bool zurück.
                     In den Beispielen sind reg1 und reg2 vom Datentyp num und flag1 ist vom
                     Datentyp bool.

                     Operator    Beschreibung               Beispiel:
                     =           gleich                     flag1 := reg1 = reg2;
                                                            flag1 ist TRUE, wenn reg1 gleich reg2 ist.
                     <           kleiner als                flag1 := reg1 < reg2;
                                                            flag1 ist TRUE, wenn reg1 kleiner als reg2 ist.
                     >           größer als                 flag1 := reg1 > reg2;
                                                            flag1 ist TRUE, wenn reg1 größer als reg2 ist.
                     = reg2;
                                                            flag1 ist TRUE, wenn reg1 größer oder gleich
                                                            reg2 ist.
                               ungleich                   flag1 := reg1  reg2;
                                                            flag1 ist TRUE, wenn reg1 ungleich reg2 ist.

                     Logische Operatoren werden häufig gemeinsam mit der Instruktion IF verwendet.
                     Codebeispiele finden Sie unter Beispiele für logische Bedingungen und
                     IF-Anweisungen auf Seite 22.

Fortsetzung auf nächster Seite
18                                                                               3HAC029364-003 Revision: A
                          © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
1 Grundlagen von RAPID
                                                                                          1.2.4 Operatoren

                                                                                                Fortsetzung

Zeichenfolgenoperator

                     Operator        Beschreibung              Beispiel:
                     +               Zeichenfolgenverkettung   VAR string firstname := "John";
                                                               VAR string lastname := "Smith";
                                                               VAR string fullname;
                                                               fullname := firstname + " " +
                                                               lastname;
                                                               Die Variable fullname enthält die Zeichenfolge
                                                               „John Smith“.

3HAC029364-003 Revision: A                                                                                 19
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
1 Grundlagen von RAPID
1.3.1 IF THEN

1.3 Steuern des Programmablaufs

1.3.1 IF THEN

Der Programmablauf
                     Die bisher gezeigten Beispielprogramme wurden sequenziell von oben nach unten
                     abgearbeitet. Bei komplexeren Programmen sollten Sie steuern, welcher
                     Codeabschnitt in welcher Reihenfolge und mit welcher Anzahl von Wiederholungen
                     abgearbeitet wird. Zunächst beschreiben wir, wie Bedingungen konfiguriert werden,
                     die festlegen, ob eine Programmsequenz abgearbeitet wird.

IF
                     Die IF-Instruktion kann verwendet werden, um eine Reihe von Anweisungen nur
                     abzuarbeiten, wenn eine angegebene Bedingung erfüllt ist.
                     Wenn die logische Bedingung in der IF-Anweisung erfüllt ist, wird der
                     Programmcode zwischen den Schlüsselwörtern THEN und ENDIF abgearbeitet.
                     Wenn die Bedingung nicht erfüllt ist, wird der Code nicht abgearbeitet und die
                     Abarbeitung wird nach ENDIF fortgesetzt.

Beispiel:
                     In diesem Beispiel wird die Zeichenfolge string1 auf dem FlexPendant
                     ausgegeben, wenn die Zeichenfolge nicht leer ist. Wenn string1 eine leere
                     Zeichenfolge ist, also keine Zeichen enthält, wird keine Aktion ausgeführt.
                         VAR string string1 := "Hello";

                         IF string1  "" THEN
                           TPWrite string1;
                         ENDIF

ELSE
                     Eine IF-Anweisung kann auch Programmcode enthalten, der ausgeführt werden
                     soll, wenn die Bedingung nicht erfüllt ist.
                     Wenn die logische Bedingung in der IF-Anweisung erfüllt ist, wird der
                     Programmcode zwischen den Schlüsselwörtern THEN und ELSE abgearbeitet.
                     Wenn die Bedingung nicht erfüllt ist, wird der Code zwischen den Schlüsselwörtern
                     ELSE und ENDIF abgearbeitet.

Beispiel:
                     In diesem Beispiel wird die Zeichenfolge string1 auf dem FlexPendant
                     ausgegeben, wenn die Zeichenfolge nicht leer ist. Wenn string1 eine leere
                     Zeichenfolge ist, wird die Zeichenfolge "The string is empty" ausgegeben.
                         VAR string string1 := "Hello";

                         IF string1  "" THEN
                           TPWrite string1;
                         ELSE
                           TPWrite "The string is empty";

Fortsetzung auf nächster Seite
20                                                                               3HAC029364-003 Revision: A
                          © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
1 Grundlagen von RAPID
                                                                                       1.3.1 IF THEN

                                                                                         Fortsetzung

                         ENDIF

ELSEIF
                     Manchmal sind mindestens drei alternative Programmsequenzen vorhanden. Dann
                     können Sie mithilfe von ELSEIF mehrere Alternativen konfigurieren.

Beispiel:
                     In diesem Beispiel wird je nach dem Wert der Variablen time unterschiedlicher
                     Text ausgegeben.
                         VAR num time := 38.7;

                         IF time < 40 THEN
                           TPWrite "Part produced at fast rate";
                         ELSEIF time < 60 THEN
                           TPWrite "Part produced at average rate";
                         ELSE
                           TPWrite "Part produced at slow rate";
                         ENDIF
                     Beachten Sie, dass der erste Text ausgegeben wird, weil die erste Bedingung
                     erfüllt ist. Die beiden anderen Textzeichenfolgen werden nicht ausgegeben (obwohl
                     die Bedingung zutrifft, dass time kleiner als 60 ist).

3HAC029364-003 Revision: A                                                                         21
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
1 Grundlagen von RAPID
1.3.2 Beispiele für logische Bedingungen und IF-Anweisungen

1.3.2 Beispiele für logische Bedingungen und IF-Anweisungen

Beispiel:
                    Verwenden Sie die IF-Anweisung, um zu bestimmen, welcher Text auf dem
                    FlexPendant ausgegeben wird. Ausgabe auf dem FlexPendant, welches Teil am
                    schnellsten gefertigt wird.
                        VAR   string part1 := "Shaft";
                        VAR   num time1;
                        VAR   string part2 := "Pipe";
                        VAR   num time2;

                        PROC main()
                          time1 := 41.8;
                          time2 := 38.7;
                          IF time1 < time2 THEN
                            TPWrite part1 + " is fastest to produce";
                          ELSEIF time1 > time2 THEN
                            TPWrite part2 + " is fastest to produce";
                          ELSE
                            TPWrite part1 + " and " + part2 + " are equally fast to
                                 produce";
                          ENDIF
                        ENDPROC

Beispiel:
                    Wenn für das Fertigen eines Teils mehr als 60 Sekunden benötigt werden, wird
                    auf dem FlexPendant eine Meldung ausgegeben. Wenn die boolesche Variable
                    full_speed den Wert FALSE aufweist, wird der Bediener in der Meldung
                    angewiesen, die Robotergeschwindigkeit zu erhöhen. Wenn full_speed den
                    Wert TRUE aufweist, wird der Bediener in der Meldung aufgefordert, die Ursache
                    für die langsame Fertigung zu ermitteln.
                        VAR num time := 62.3;
                        VAR bool full_speed := TRUE;

                        PROC main()
                          IF time > 60 THEN
                            IF full_speed THEN
                              TPWrite "Examine why the production is slow";
                            ELSE
                              TPWrite "Increase robot speed for faster production";
                            ENDIF
                          ENDIF
                        ENDPROC

22                                                                              3HAC029364-003 Revision: A
                         © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
1 Grundlagen von RAPID
                                                                                    1.3.3 FOR-Schleife

1.3.3 FOR-Schleife

Wiederholen einer Codesequenz
                   Eine weitere Möglichkeit zum Steuern des Programmablaufs ist die mehrfache
                   Wiederholung einer Programmcodesequenz.

Funktionsweise der FOR-Schleife
                   Mit dem folgenden Code wird 5 Mal „Hello“ ausgegeben:
                         FOR i FROM 1 TO 5 DO
                           TPWrite "Hello";
                         ENDFOR
                     Die Syntax der FOR-Anweisung lautet:
                         FOR counter FROM startvalue TO endvalue DO
                           zu wiederholender Programmcode
                         ENDFOR
                     Der Zähler muss nicht deklariert werden. Er fungiert jedoch als numerische Variable
                     in der FOR-Schleife. Bei der ersten Abarbeitung des Codes weist der Zähler den
                     Anfangswert auf. Anschließend wird der Wert des Zählers bei jeder Abarbeitung
                     des Codes um 1 erhöht. Der Code wird zum letzten Mal abgearbeitet, wenn der
                     Zähler gleich dem Endwert ist. Anschließend wird die Abarbeitung mit dem
                     Programmcode nach ENDFOR fortgesetzt.

Verwendung des Zählerwerts
                  Der Wert des Zählers kann in der FOR-Schleife verwendet werden.
                     Beispielsweise kann die Berechnung der Summe aller Zahlen von 1 bis 50
                     (1+2+3+...+49+50) wie folgt programmiert werden:
                         VAR num sum := 0;

                         FOR i FROM 1 TO 50 DO
                           sum := sum + i;
                         ENDFOR
                     Es ist nicht zulässig, dem Zähler in der FOR-Schleife einen Wert zuzuweisen.

3HAC029364-003 Revision: A                                                                           23
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
1 Grundlagen von RAPID
1.3.4 WHILE-Schleife

1.3.4 WHILE-Schleife

Wiederholung unter einer Bedingung
                   Das Wiederholen einer Codesequenz kann mit der bedingten Abarbeitung der
                   Codesequenz kombiniert werden. Mit der WHILE-Schleife setzt das Programm die
                   Wiederholung der Codesequenz fort, solange die Bedingung erfüllt ist.

WHILE-Syntax
                     Die Syntax für die WHILE-Schleife lautet:
                         WHILE condition DO
                           zu wiederholender Programmcode
                         ENDWHILE
                     Wenn die Bedingung von Anfang an nicht erfüllt ist, wird die Codesequenz niemals
                     abgearbeitet. Wenn die Bedingung erfüllt ist, wird die Abarbeitung der Codesequenz
                     solange wiederholt, bis die Bedingung nicht mehr erfüllt ist.

Beispiel:
                     Im folgenden Programmcode werden Zahlen (1+2+3+...) addiert, bis die Summe
                     100 ergibt.
                         VAR num sum := 0;
                         VAR num i := 0;

                         WHILE sum
1 Grundlagen von RAPID
                                                           1.4.1 Allgemeine Regeln für die RAPID-Syntax

1.4 Regeln und Empfehlungen für RAPID-Syntax

1.4.1 Allgemeine Regeln für die RAPID-Syntax

Semikolon
                     Die allgemeine Regel lautet, dass jede Anweisung mit einem Semikolon enden
                     muss.

Beispiele
                     Variablendeklaration:
                          VAR num length;
                     Zuweisen von Werten:
                          area := length * width;
                     Die meisten Instruktionsaufrufe:
                          MoveL p10,v1000,fine,tool0;

Ausnahmen
                     Einige spezielle Instruktionen enden nicht mit einem Semikolon. Stattdessen geben
                     besondere Schlüsselwörter an, wo sie enden.
                     Beispiele für Instruktionen, die nicht mit einem Semikolon enden:
                     Instruktionsschlüsselwort                    Schlüsselwort für das Ende
                     IF                                           ENDIF
                     FOR                                          ENDFOR
                     WHILE                                        ENDWHILE
                     PROC                                         ENDPROC

                     Diese Schlüsselwörter sind zum Erstellen eines gut strukturierten RAPID-Programm
                     von großer Bedeutung. Sie werden weiter unten in diesem Handbuch ausführlich
                     beschrieben.

Kommentare
                     Zeilen, die mit ! beginnen, werden von der Robotersteuerung ignoriert. Verwenden
                     Sie dieses Zeichen, um Kommentare zum Code zu schreiben.

Beispiel:
                          ! Calculate the area of the rectangle
                          area := length * width;

3HAC029364-003 Revision: A                                                                          25
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
1 Grundlagen von RAPID
1.4.2 Empfehlungen für RAPID-Code

1.4.2 Empfehlungen für RAPID-Code

Schlüsselwörter in Großbuchstaben
                    Die Groß-/Kleinschreibung wird in RAPID nicht beachtet, doch wird empfohlen,
                    alle reservierten Wörter (z. B. VAR, PROC) in Großbuchstaben zu schreiben. Eine
                    vollständige Liste der reservierten Wörter finden Sie im Technisches
                    Referenzhandbuch - RAPID Überblick.

Einrückungen
                     Verwenden Sie Einrückungen, um die Verständlichkeit des Programmcodes zu
                     erhöhen. Der gesamte Code innerhalb von PROC (zwischen PROC und ENDPROC)
                     sollte eingerückt sein. Der gesamte Code innerhalb einer IF--, FOR-- oder
                     WHILE-Anweisung sollte zusätzlich eingerückt sein.
                     Beim Programmieren mit dem FlexPendant erfolgt die Einrückung automatisch.

Beispiel:
                         VAR bool repeat;
                         VAR num times;

                         PROC main()
                           repeat := TRUE;
                           times := 3;
                           IF repeat THEN
                             FOR i FROM 1 TO times DO
                               TPWrite "Hello!";
                             ENDFOR
                           ENDIF
                         END PROC
                     Beachten Sie, dass leicht zu erkennen ist, wo die IF-Anweisung beginnt und endet.
                     Wenn mehrere IF-Anweisungen ohne Einrückung vorhanden sind, ist praktisch
                     nicht zu erkennen, welches ENDIF dem jeweiligen IF entspricht.

26                                                                               3HAC029364-003 Revision: A
                          © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
2 RAPID-Roboterfunktionalität
                                                                                    2.1.1 MoveL-Instruktion

2 RAPID-Roboterfunktionalität
2.1 Bewegungsinstruktionen

2.1.1 MoveL-Instruktion

Überblick
                     RAPID bietet den Vorteil, dass diese Sprache nicht nur den Großteil der
                     Funktionalität anderer höherer Programmiersprachen umfasst, sondern speziell
                     für die Steuerung von Robotern entworfen wurde. Vor allem enthält RAPID
                     Instruktionen zum Bewegen des Roboters.

MoveL
                     Eine einfache Bewegungsinstruktion kann wie folgt aussehen:
                           MoveL p10, v1000, fine, tool0;
                     wobei:
                       •     MoveL ist eine Instruktion, mit der der Roboter linear (auf einer Geraden)
                             von seiner aktuellen Position zu der angegebenen Position bewegt wird.
                       •     p10 gibt die Position an, zu der sich der Roboter bewegen soll.
                       •     v1000 gibt an, dass die Geschwindigkeit des Roboters 1000 mm/s betragen
                             soll.
                       •     fine gibt an, dass sich der Roboter genau an die angegebene Position
                             bewegen und auf der Strecke zur nächsten Position keine Ecken schneiden
                             soll.
                       •     tool0 gibt an, dass sich der Montageflansch an der Spitze des Roboters an
                             die angegebene Position bewegen soll.

MoveL-Syntax
                           MoveL ToPoint Speed Zone Tool;

ToPoint
                     Der mit einer Konstanten vom Datentyp robtarget definierte Zielpunkt. Wenn
                     Sie mit dem FlexPendant programmieren, können Sie einen robtarget-Wert
                     zuweisen, indem Sie mit dem Roboter eine Position angeben. Wenn Sie offline
                     programmieren, kann das Berechnen der Koordinaten für eine Position schwierig
                     sein.
                     robtarget wird weiter unten im Abschnitt Zusammengesetzte Datentypen auf
                     Seite 50 ausführlicher erläutert. Vorerst reicht es aus zu wissen, dass x=600,
                     y=-100, z=800 wie folgt deklariert und zugewiesen werden kann:
                           CONST robtarget p10 := [ [600, -100, 800], [1, 0, 0, 0], [0, 0, 0,
                                0], [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ];

                                                                            Fortsetzung auf nächster Seite
3HAC029364-003 Revision: A                                                                                27
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
2 RAPID-Roboterfunktionalität
2.1.1 MoveL-Instruktion

Fortsetzung

Speed
                     Die Bewegungsgeschwindigkeit kann mit einer Konstanten vom Datentyp
                     speeddata definiert werden. Es gibt zahlreiche vordefinierte Werte, beispielsweise
                     die folgenden:
                     Vordefinierte speeddata                Wert
                     v5                                     5 mm/s
                     v100                                   100 mm/s
                     v1000                                  1.000 mm/s
                     vmax                                   Maximale Geschwindigkeit für den Roboter

                     Eine vollständige Liste mit vordefinierten speeddata-Werten finden Sie im
                     Technisches Referenzhandbuch - RAPID Instruktionen, Funktionen und Datentypen,
                     Abschnitt Datentypen und speeddata.
                     Wenn ein vordefinierter Wert verwendet wird, sollte er nicht deklariert oder
                     zugewiesen werden.

Zone
                     Gibt eine Verschleifzone an, die mit einer Konstanten vom Datentyp zonedata
                     definiert wird. Es gibt zahlreiche vordefinierte Werte, beispielsweise die folgenden:
                     Vordefinierte zonedata                 Wert
                     fine                                   Der Roboter verfährt genau zur angegebenen Po-
                                                            sition.
                     z10                                    Die Roboterbahn kann Ecken schneiden, wenn sie
                                                            weniger als 10 mm von ToPoint entfernt ist.
                     z50                                    Die Roboterbahn kann Ecken schneiden, wenn sie
                                                            weniger als 50 mm von ToPoint entfernt ist.

                     Eine vollständige Liste mit vordefinierten zonedata-Werten finden Sie im
                     Technisches Referenzhandbuch - RAPID Instruktionen, Funktionen und Datentypen,
                     Abschnitt Datentypen und zonedata.
                     Wenn ein vordefinierter Wert verwendet wird, sollte er nicht deklariert oder
                     zugewiesen werden.
                     Die folgenden RAPID-Instruktionen führen zu der unten gezeigten Roboterbahn:
                            MoveL p10, v1000, z50, tool0;
                            MoveL p20, v1000, fine, tool0;

Fortsetzung auf nächster Seite
28                                                                                 3HAC029364-003 Revision: A
                            © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
2 RAPID-Roboterfunktionalität
                                                                                    2.1.1 MoveL-Instruktion

                                                                                               Fortsetzung

                     xx0700000358

Tool
                     Gibt das vom Roboter verwendete Werkzeug an, das als persistente Variable vom
                     Datentyp tooldata definiert wird. Wenn eine Schweißpistole, eine Klebepistole
                     oder ein Stift am Roboter montiert ist, wird der ToPoint für die Spitze des
                     betreffenden Werkzeugs programmiert. Dies geschieht automatisch, wenn ein
                     tooldata deklariert und zugewiesen wurde und in der MoveL-Instruktion verwendet
                     wird.
                     tool0 ist ein vordefiniertes Werkzeug, das den Roboter ohne montiertes Werkzeug
                     darstellt. Es sollte nicht deklariert oder zugewiesen werden. Alle anderen Werkzeuge
                     sollten vor der Verwendung deklariert und zugewiesen werden.

3HAC029364-003 Revision: A                                                                              29
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
2 RAPID-Roboterfunktionalität
2.1.2 Koordinatensysteme

2.1.2 Koordinatensysteme

Basis-Koordinatensystem
                   Die Zielposition einer Bewegungsinstruktion wird in Form von Koordinaten in einem
                   Koordinatensystem angegeben. Wenn das Koordinatensystem angegeben wird,
                   ist die Position relativ zum Basis-Koordinatensystem des Roboters. Der Ursprung
                   des Basis-Koordinatensystems ist der Sockel des Roboters.

                     xx0700000397

Angepasste Koordinatensysteme
                  Es kann auch ein anderes Koordinatensystem definiert und in
                  Bewegungsinstruktionen verwendet werden. Das von der Bewegungsinstruktion
                  zu verwendende Koordinatensystem wird mit dem optionalen Argument \WObj
                  angegeben.
                          MoveL p10, v1000, z50, tool0 \WObj:=wobj1;
                     Weitere Informationen über das Definieren eines Koordinatensystems finden Sie
                     im Technisches Referenzhandbuch - RAPID Instruktionen, Funktionen und
                     Datentypen, Abschnitt Datentypen und wobjdata.
                     Weitere Informationen über Koordinatensysteme finden Sie im Technisches
                     Referenzhandbuch - RAPID Überblick, Abschnitt Koordinatensysteme.

30                                                                                 3HAC029364-003 Revision: A
                            © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
2 RAPID-Roboterfunktionalität
                                                                                    2.1.3 Beispiele für MoveL

2.1.3 Beispiele für MoveL

Zeichnen eines Quadrats
                   Ein Roboter hält einen Stift über einem Blatt Papier auf einem Tisch. Der Roboter
                   soll die Spitze des Stifts zum unteren Rand des Blatts bewegen und dann ein
                   Quadrat zeichnen.

                     xx0700000362

                          PERS tooldata tPen := [ TRUE, [[200, 0, 30], [1, 0, 0 ,0]], [0.8,
                               [62, 0, 17], [1, 0, 0, 0], 0, 0, 0]];
                          CONST robtarget p10 := [ [600, -100, 800], [0.707170, 0, 0.707170,
                               0], [0, 0, 0, 0], [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ];
                          CONST robtarget p20 := [ [600, 100, 800], [0.707170, 0, 0.707170,
                               0], [0, 0, 0, 0], [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ];
                          CONST robtarget p30 := [ [800, 100, 800], [0.707170, 0, 0.707170,
                               0], [0, 0, 0, 0], [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ];
                          CONST robtarget p40 := [ [800, -100, 800], [0.707170, 0, 0.707170,
                               0], [0, 0, 0, 0], [ 9E9, 9E9, 9E9, 9E9, 9E9, 9E9] ];

                          PROC main()
                            MoveL p10,      v200,   fine,   tPen;
                            MoveL p20,      v200,   fine,   tPen;
                            MoveL p30,      v200,   fine,   tPen;
                            MoveL p40,      v200,   fine,   tPen;
                            MoveL p10,      v200,   fine,   tPen;
                          ENDPROC

                                                                            Fortsetzung auf nächster Seite
3HAC029364-003 Revision: A                                                                                31
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
2 RAPID-Roboterfunktionalität
2.1.3 Beispiele für MoveL

Fortsetzung

Zeichnen mit Verschleifzonen
                   Es soll dieselbe Form wie im vorherigen Beispiel, doch mit einer Verschleifzone
                   von 20 mm bei p20 und einer Verschleifzone von 50 mm bei p40 gezeichnet werden.

                    xx0700000363

                            VAR tooldata tPen := ...
                            ...
                            VAR robtarget p40 := ...

                            PROC main()
                              MoveL p10,   v200,   fine, tPen;
                              MoveL p20,   v200,   z20, tPen;
                              MoveL p30,   v200,   fine, tPen;
                              MoveL p40,   v200,   z50, tPen;
                              MoveL p10,   v200,   fine, tPen;
                            ENDPROC

32                                                                                 3HAC029364-003 Revision: A
                            © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
2 RAPID-Roboterfunktionalität
                                                                   2.1.4 Weitere Bewegungsinstruktionen

2.1.4 Weitere Bewegungsinstruktionen

Verschiedene Bewegungsinstruktionen
                  RAPID bietet eine Reihe von Bewegungsinstruktionen. Die häufigsten
                  Bewegungsinstruktionen sind MoveL, MoveJ und MoveC.

MoveJ
                     Mit MoveJ wird der Roboter schnell von einem Punkt zu einem anderen bewegt,
                     wenn diese Bewegung nicht auf einer Geraden erfolgen muss.
                     Verwenden Sie MoveJ, um den Roboter auf der kürzesten Strecke an einen Punkt
                     zu bewegen, der sich dicht an der gewünschten Arbeitsposition des Roboters
                     befindet. Eine MoveL-Instruktion kann nicht verwendet werden, wenn sich
                     beispielsweise der Robotersockel zwischen der aktuellen und der programmierten
                     Position befindet oder wenn die Umorientierung des Werkzeugs zu umfangreich
                     ist. In diesen Fällen empfiehlt sich die Verwendung von MoveJ.
                     Die Syntax von MoveJ entspricht der Syntax von MoveL.

Beispiel:
                          MoveJ p10, v1000, fine, tPen;

MoveC
                     MoveC wird verwendet, um den Roboter kreisförmig zu bewegen.

Beispiel:
                          MoveL p10, v500, fine, tPen;
                          MoveC p20, p30, v500, fine, tPen;
                          MoveL p40, v500, fine, tPen;

                     xx0700000364

3HAC029364-003 Revision: A                                                                          33
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
2 RAPID-Roboterfunktionalität
2.1.5 Abarbeitungsverhalten in Verschleifzonen

2.1.5 Abarbeitungsverhalten in Verschleifzonen

Warum erfolgt in Verschleifzonen eine spezielle Abarbeitung?
                    Die Abarbeitung eines Programms erfolgt in der Regel in der Reihenfolge, in der
                    die Anweisungen geschrieben wurden.
                     Im folgenden Beispiel bewegt sich der Roboter zunächst zu p10, berechnet den
                     Wert von reg1 und bewegt sich dann zu p20:
                          MoveL p10, v1000, fine, tool0;
                          reg1 := reg2 + reg3;
                          MoveL p20, v1000, fine, tool0;
                     Betrachten Sie jetzt jedoch dieses Beispiel:
                          MoveL p10, v1000, z50, tool0;
                          reg1 := reg2 + reg3;
                          MoveL p20, v1000, fine, tool0;
                     Wenn die Berechnung von reg1 erst beginnt, wenn sich der Roboter bei p10
                     befindet, muss der Roboter dort anhalten und auf die nächste Bewegungsinstruktion
                     warten. Tatsächlich wird jedoch der Code abgearbeitet, bevor die Roboterbewegung
                     ausgeführt wird. reg1 und die Roboterbahn in der Verschleifzone werden berechnet,
                     bevor der Roboter p10 erreicht.

Auswirkung auf das Programm
                   Häufig wirkt sich der genaue Zeitpunkt der Abarbeitung nicht auf das Programm
                   aus. Es gibt jedoch einige Fälle, in denen das Programm davon betroffen ist.
                     Angenommen, Sie möchten mit einer Sprühpistole eine Linie zwischen p10 und
                     p20 zeichnen und das Programm wie folgt schreiben:
                          MoveL p10, v300, z10, tspray;
                          ! Start spraying
                          SetDO do1, 1;
                          MoveL p20, v300, z10, tspray;
                          ! Stop spraying
                          SetDO do1, 0;
                          MoveL p30, v300, fine, tspray;
                     In diesem Fall sieht das Ergebnis etwa wie folgt aus:

                     xx0700000387

Fortsetzung auf nächster Seite
34                                                                                 3HAC029364-003 Revision: A
                            © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
2 RAPID-Roboterfunktionalität
                                                          2.1.5 Abarbeitungsverhalten in Verschleifzonen

                                                                                            Fortsetzung

Lösung
                     Wenn Sie nicht fine verwenden, sondern in den Verschleifzonen Signale setzen,
                     können Sie das Problem mit speziellen Instruktionen, z. B. MoveLDO, TriggL und
                     DispL, lösen. Weitere Informationen über diese Instruktionen finden Sie im
                     Technisches Referenzhandbuch - RAPID Instruktionen, Funktionen und Datentypen.

Verwenden Sie nach einer Verschleifzone keine Warteinstruktionen oder umfangreiche Berechnungen
                    Die Robotersteuerung kann die Roboterbewegung in Zonenbahnen auch dann
                    berechnen, wenn sich zwischen den Bewegungsinstruktionen weitere Instruktionen
                    befinden. Wenn jedoch nach einer Bewegungsinstruktion mit einer Verschleifzone
                    eine Warteinstruktion vorhanden ist, kann dies vom Roboter nicht abgearbeitet
                    werden. Verwenden Sie in der Bewegungsinstruktion vor einer Warteinstruktion
                    fine.
                     Die Anzahl und Komplexität der Berechnungen, die von der Robotersteuerung
                     zwischen Bewegungsinstruktionen mit Verschleifzonen ausgeführt werden können,
                     ist begrenzt. Dies stellt hauptsächlich ein Problem dar, wenn nach einer
                     Bewegungsinstruktion mit einer Verschleifzone Prozeduren aufgerufen werden.

3HAC029364-003 Revision: A                                                                           35
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
2 RAPID-Roboterfunktionalität
2.2.1 E/A-Signale

2.2 E/A-Signale

2.2.1 E/A-Signale

Signale
                     Signale werden für die Kommunikation mit externe Ausrüstung verwendet, die
                     vom Roboter genutzt wird. Von der externen Ausrüstung werden Eingangssignale
                     gesetzt, mit denen im RAPID-Programm festgelegt werden kann, wann eine Aktion
                     mit dem Roboter ausgeführt wird. Ausgangssignale werden vom RAPID-Programm
                     gesetzt und signalisieren der externen Ausrüstung, dass sie eine Aktion ausführen
                     soll.

Einrichten von Signalen
                    Signale werden in den Systemparametern für das Robotersystem konfiguriert. Es
                    können benutzerdefinierte Namen für die Signale festgelegt werden. Sie sollten
                    nicht im RAPID-Programm deklariert werden.

Digitaler Eingang
                     Ein digitales Eingangssignal kann den Wert 0 oder 1 aufweisen. Das
                     RAPID-Programm kann den Wert des Signals lesen, jedoch nicht setzen.

Beispiel:
                     Wenn das digitale Eingangssignal di1 den Wert 1 aufweist, bewegt sich der
                     Roboter.
                         IF di1 = 1 THEN
                           MoveL p10, v1000, fine, tPen;
                         ENDIF

Digitaler Ausgang
                     Ein digitales Ausgangssignal kann den Wert 0 oder 1 aufweisen. Das
                     RAPID-Programm kann den Wert für ein digitales Ausgangssignal setzen und so
                     die externe Ausrüstung steuern. Der Wert eines digitalen Ausgangssignals wird
                     mit der Instruktion SetDO gesetzt.

Beispiel:
                     Der Roboter besitzt ein digitales Greifwerkzeug, das mit dem digitalen
                     Ausgangssignal do_grip geschlossen werden kann. Der Roboter bewegt sich an
                     die Position des Stifts und schließt den Greifer. Anschließend bewegt sich der
                     Roboter an die Position, an der er zeichnen soll, jetzt mithilfe des Werkzeugs tPen.
                         MoveJ p0, vmax, fine, tGripper;
                         SetDO do_grip, 1;
                         MoveL p10, v1000, fine, tPen;

Fortsetzung auf nächster Seite
36                                                                               3HAC029364-003 Revision: A
                          © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
2 RAPID-Roboterfunktionalität
                                                                                    2.2.1 E/A-Signale

                                                                                         Fortsetzung

Andere Signaltypen
                     Digitale Signale werden häufig eingesetzt und sind einfach zu verwenden. Wenn
                     ein Signal einen anderen Wert als 0 oder 1 aufweisen muss, können analoge
                     Signale und Gruppen digitaler Signale verwendet werden, die über andere Werte
                     verfügen können. Diese Typen von Signalen werden in diesem Handbuch nicht
                     behandelt.

3HAC029364-003 Revision: A                                                                        37
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
2 RAPID-Roboterfunktionalität
2.3.1 Kommunikation mit dem FlexPendant

2.3 Benutzerinteraktion

2.3.1 Kommunikation mit dem FlexPendant

Lese- und Schreibinstruktionen
                    RAPID bietet mehrere Instruktionen für die Ausgabe von Informationen an den
                    Roboterbediener sowie zum Empfangen von Eingaben des Bedieners. In den
                    vorherigen Beispielen war bereits TPWrite enthalten. Hier werden nur die
                    Instruktionen TPWrite, TPReadFK und TPReadNum behandelt.

TPWrite
                     Die Ausgabe einer Meldung an den Bediener kann mit der Instruktion TPWrite
                     erfolgen.
                          TPWrite "Now producing exhaust pipes";

                     xx0700000374

Ausgeben einer Zeichenfolgenvariablen
                    Die auf dem FlexPendant ausgegebene Zeichenfolge kann von einer
                    Zeichenfolgenvariablen stammen, oder es kann sich bei dem ausgegebenen Text
                    um eine Verkettung einer Zeichenfolgenvariablen mit einer anderen Zeichenfolge
                    handeln.
                          VAR string product := "exhaust pipe";
                          ! Write only the product on the FlexPendant
                          TPWrite product;
                          ! Write "Producing" and the product on the FlexPendant
                          TPWrite "Producing " + product;

Ausgeben einer numerischen Variablen
                   Mit dem optionalen Argument \Num kann nach der Zeichenfolge eine numerische
                   Variable hinzugefügt werden.
                          VAR num count := 13;
                          TPWrite "The number of produced units is: " \Num:=count;

Fortsetzung auf nächster Seite
38                                                                                 3HAC029364-003 Revision: A
                            © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
2 RAPID-Roboterfunktionalität
                                                               2.3.1 Kommunikation mit dem FlexPendant

                                                                                              Fortsetzung

TPReadFK
                     Beim Schreiben eines RAPID-Programms, das einen Operator für eine Auswahl
                     erfordert, ist die Instruktion TPReadFK hilfreich. Sie ermöglicht das Anzeigen von
                     bis zu fünf Funktionstasten, und der Bediener kann die Taste auswählen, auf die
                     er tippen möchte. Die Tasten entsprechen den Werten 1 bis 5.
                          VAR num answer;
                          TPReadFK answer, "Select which figure to draw", "Square",
                                "Triangle", stEmpty, stEmpty, stEmpty;
                          IF answer = 1 THEN
                            ! code to draw square
                          ELSEIF answer = 2 THEN
                            ! code to draw triangle
                          ELSE
                            ! do nothing
                          ENDIF

                     xx0700000376

                     Wenn der Benutzer „Square“ auswählt, erhält die numerische Variable answer
                     den Wert 1. Wenn der Benutzer „Triangle“ auswählt, erhält die numerische Variable
                     answer den Wert 2.
                     Es können fünf Funktionstasten angegeben werden. Wenn eine Taste nicht
                     verwendet wird, schreiben Sie statt des Textes für die Taste stEmpty.

TPReadNum
                     Mithilfe von TPReadNum kann der Bediener eine Zahl auf dem FlexPendant
                     ausgeben, statt nur eine Auswahl vorzunehmen.
                          VAR num answer;
                          TPReadNum answer, "How many times shall I draw the figure?";
                                                                            Fortsetzung auf nächster Seite
3HAC029364-003 Revision: A                                                                             39
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
2 RAPID-Roboterfunktionalität
2.3.1 Kommunikation mit dem FlexPendant

Fortsetzung

                        FOR i FROM 1 TO answer DO
                          ! code to draw figure
                        ENDFOR

                   xx0700000378

                   Die numerische Variable answer erhält den vom Bediener eingegebenen Wert.

40                                                                               3HAC029364-003 Revision: A
                          © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
3 Struktur
                                                                                     3.1 RAPID-Prozedur

3 Struktur
3.1 RAPID-Prozedur

Was ist eine Prozedur?
                    In allen bisher betrachteten Beispielen für RAPID-Code wurde nur Code in der
                    Prozedur main abgearbeitet. Die Abarbeitung beginnt automatisch in der Prozedur
                    main. Es können jedoch mehrere Prozeduren vorhanden sein.
                     Eine Prozedur muss mit dem Schlüsselwort PROC vor dem Prozedurnamen, den
                     Prozedurargumenten und dem Programmcode, den die Prozedur ausführen soll,
                     deklariert werden. Eine Prozedur wird aus einer anderen Prozedur aufgerufen (mit
                     Ausnahme der Prozedur main, die automatisch beim Programmstart aufgerufen
                     wird).

Beispiel:
                     Wenn Sie vier Quadrate unterschiedlicher Größe zeichnen möchten, können Sie
                     vier Mal nahezu identischen Programmcode schreiben. Dies führt zu sehr
                     umfangreichem Code und verringert die Verständlichkeit des Programms. Ein
                     weitaus effizienteres Verfahren zum Schreiben dieses Programms besteht darin,
                     eine Prozedur zu schreiben, die das Quadrat zeichnet, und die Prozedur main
                     diese Prozedur vier Mal aufrufen zu lassen.
                         PERS tooldata tPen:= ...
                         CONST robtarget p10:= ...

                         PROC main()
                           ! Call the procedure draw_square
                           draw_square 100;
                           draw_square 200;
                           draw_square 300;
                           draw_square 400;
                         ENDPROC

                         PROC draw_square(num side_size)
                           VAR robtarget p20;
                           VAR robtarget p30;
                           VAR robtarget p40;

                              ! p20 is set to p10 with an offset on the y value
                              p20 := Offs(p10, 0, side_size, 0);
                              p30 := Offs(p10, side_size, side_size, 0);
                              p40 := Offs(p10, side_size, 0, 0);

                           MoveL      p10,   v200,   fine,   tPen;
                           MoveL      p20,   v200,   fine,   tPen;
                           MoveL      p30,   v200,   fine,   tPen;
                           MoveL      p40,   v200,   fine,   tPen;
                           MoveL      p10,   v200,   fine,   tPen;
                         ENDPROC

                                                                            Fortsetzung auf nächster Seite
3HAC029364-003 Revision: A                                                                             41
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
3 Struktur
3.1 RAPID-Prozedur

Fortsetzung

Prozedurargumente
                     Beim Deklarieren einer Prozedur werden alle Argumente innerhalb der Klammern
                     nach dem Prozedurnamen deklariert. Die Deklaration enthält den Datentyp und
                     Namen für jedes Argument. Der Wert des Arguments wird aus dem Prozeduraufruf
                     zugewiesen, und das Argument fungiert als Variable in der Prozedur (das Argument
                     kann nicht außerhalb der Prozedur verwendet werden).
                         PROC main()
                           my_procedure 14, "Hello", TRUE;
                         ENDPROC

                         PROC my_procedure(num nbr_times, string text, bool flag)
                           ...
                         ENDPROC
                     In der oben dargestellten Prozedur my_procedure hat nbr_times den Wert 14,
                     text hat den Wert „Hello“ und flag hat den Wert TRUE.
                     Beim Aufruf der Prozedur ist die Reihenfolge der Argumente wichtig, um dem
                     richtigen Argument den richtigen Wert zuzuweisen. Im Prozeduraufruf werden
                     keine Klammern verwendet.

In der Prozedur deklarierte Variablen
                    In einer Prozedur deklarierte Variablen gelten nur für die betreffende Prozedur.
                    Daher kann im obigen Beispiel p10 in allen Prozeduren dieses Moduls verwendet
                    werden, doch p20, p30 und p40 können nur in der Prozedur draw_square
                    verwendet werden.

42                                                                               3HAC029364-003 Revision: A
                          © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
3 Struktur
                                                                                              3.2 Module

3.2 Module

Module
                     Ein RAPID-Programm kann aus einem oder mehreren Modulen bestehen. Jedes
                     Modul kann eine oder mehrere Prozeduren enthalten.
                     In den kleinen einfachen Programmen in diesem Handbuch wird nur ein Modul
                     verwendet. In einer komplexeren Programmierumgebung können einige
                     Standardprozeduren, die von vielen verschiedenen Programmen verwendet werden,
                     in ein eigenes Modul eingefügt werden.

Beispiel:
                     Das Modul MainModule enthält spezifischen Code für das Programm und gibt an,
                     welche Aktionen der Roboter in diesem Programm ausführen soll. Das Modul
                     figures_module enthält Standardcode, der in jedem Programm verwendet werden
                     kann, mit dem ein Quadrat, Rechteck oder Kreis gezeichnet werden soll.
                         MODULE MainModule
                           ...
                           draw_square;
                           ...
                         ENDMODULE

                         MODULE figures_module
                           PROC draw_square()
                             ...
                           ENDPROC
                           PROC draw_triangle()
                             ...
                           ENDPROC
                           PROC draw_circle()
                             ...
                           ENDPROC
                         ENDMODULE

Programmmodule
                     Ein Programmmodul wird mit der Dateiendung .mod, z. B. figures_module.mod,
                     gespeichert.
                     Für die Robotersteuerung ist es ohne Belang, ob das Programm aus mehreren
                     Modulen besteht. Der einzige Grund für die Verwendung mehrerer Module ist eine
                     bessere Verständlichkeit und einfachere Wiederverwendung des Programms durch
                     Programmierer.
                     In der Robotersteuerung kann nur ein Programm aktiv sein, d. h., nur eines der
                     Module darf die Prozedur main enthalten.

Systemmodule
                     Systemmodule werden mit der Dateiendung .sys, z. B. system_data_module.sys,
                     gespeichert.

                                                                            Fortsetzung auf nächster Seite
3HAC029364-003 Revision: A                                                                             43
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
3 Struktur
3.2 Module

Fortsetzung

              In ein Systemmodul sollten Daten und Prozeduren eingefügt werden, die im System
              erhalten bleiben sollen, auch wenn das Programm geändert wird. Wenn
              beispielsweise eine persistente Variable vom Typ tooldata in einem Systemmodul
              deklariert wird, wird eine Neukalibrierung des Werkzeugs beibehalten, auch wenn
              ein neues Programm geladen wird.

44                                                                       3HAC029364-003 Revision: A
                  © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
3 Struktur
                                                                                    3.3 Strukturierter Entwurf

3.3 Strukturierter Entwurf

Struktur
                     Wenn Sie sich das erste Mal mit einem Problem auseinandersetzen, das Sie mit
                     einem RAPID-Programm lösen möchten, analysieren Sie zunächst das Problem
                     und seine Komponenten. Wenn Sie mit der Programmierung beginnen, ohne
                     zunächst den Entwurf gründlich zu durchdenken, ist das resultierende Programm
                     widersprüchlich. Ein Programm mit einem guten Entwurf ist weniger fehleranfällig
                     und für andere Personen leichter zu verstehen. Die für den Entwurf aufgewendete
                     Zeit wird beim Testen und Pflegen des Programms mehrfach eingespart.

Zerlegen Sie das Problem in einzelne Komponenten
                    Gehen Sie wie folgt vor, um das Problem in einfachere Komponenten zu zerlegen:
                         Aktion
                     1   Bestimmen Sie eine umfangreichere Funktionalität. Unterteilen Sie das Problem in
                         kleinere Bestandteile, die einfacher zu bewältigen sind.
                     2   Erstellen Sie eine Entwurfsstruktur. Zeichnen Sie eine Skizze der Funktionalitäten und
                         ihrer Wechselbeziehungen.
                     3   Überprüfen Sie die einzelnen Blöcke in der Entwurfsstruktur. Kann ein Block in noch
                         kleinere Bestandteile zerlegt werden? Was ist erforderlich, um den Block zu implemen-
                         tieren?

Beispiel:
Problembeschreibung
                   Erstellen Sie ein RAPID-Programm, mit dem Quadrate oder Dreiecke auf ein Blatt
                   Papier gezeichnet werden können. Lassen Sie den Bediener entscheiden, ob ein
                   Quadrat oder Dreieck gezeichnet werden soll. Wenn der Roboter die Form
                   gezeichnet hat, soll der Benutzer erneut dieselbe Auswahl treffen können, bis der
                   Bediener auf die Schaltfläche zum Beenden tippt.
                     Wenn der Roboter 10 Formen auf dasselbe Blatt gezeichnet hat, wird die Meldung
                     ausgegeben, dass das Papier ausgetauscht werden soll, und die Abarbeitung wird
                     erst fortgesetzt, wenn der Bediener auf die Schaltfläche „OK“ getippt hat.
                     Zwischen dem Erstellen der Zeichnungen wird überprüft, ob di1 1 ist. Wenn das
                     Signal nicht den Wert 1 aufweist, wird der Stift zu einem Spitzer bewegt, und do1
                     wird auf 1 gesetzt, um den Spitzer zu starten und den Stift langsam in den Spitzer
                     einzuführen. Normalerweise muss das Werkzeug neu definiert werden, da seine
                     Länge während des Spitzens abnimmt, doch wird dieser Schritt im Beispiel
                     übersprungen.

                                                                            Fortsetzung auf nächster Seite
3HAC029364-003 Revision: A                                                                                   45
                             © Copyright 2007, 2012 ABB. Alle Rechte vorbehalten.
Sie können auch lesen