EPSON Robotersteuerung SRC – 300/320 Rev. 2 EM971R502F EPSON ROBOTERSTEUERUNG SRC – 300/320 Bedienungshandbuch EPSON Deutschland GmbH Industrial Robots-Division SEIKO EPSON CORPORATION i GARANTIE Die Roboter und die dazugehörigen Optionen werden erst nach strengsten Qualitätskontrollen, Tests und Prüfungen gemäß unserer hohen Leistungsstandards an unsere Kunden ausgeliefert. Treten bei normalem Betrieb, innerhalb von 12 Monaten nach Lieferung, Störungen auf, wird eine kostenfreie Reparatur garantiert. Davon ausgenommen sind jedoch die folgenden Fälle: 1. Schäden oder Fehlfunktionen, verursacht durch falsche Bedienung. 2. Schäden oder Fehlfunktionen, verursacht durch Demontagen. 3. Schäden oder Fehlfunktionen, verursacht durch unerlaubte Modifikationen oder Reparaturen. 4. Schäden oder Fehlfunktionen, die durch extreme, roboterunabhängige Ursachen entstanden sind, wie z.B. Brand- oder Wasserschäden. Die Garantie beginnt ab Auslieferung, also ab Lager Düsseldorf. Die vorliegenden Garantiebestimmungen gelten jedoch nicht in allen Ländern in vollem Umfang. Zusätzliche Informationen zum Haftungsumfang erhalten Sie bei Ihrem SEIKO EPSON Partner, bei dem Sie das Robotersystem erworben haben. ii SERVICE CENTER Bei Reparaturen, Inspektionen oder Justageeinstellungen nehmen Sie bitte Kontakt zum nächsten Roboter Service Center auf. Halten Sie folgende Informationen bereit: • Roboter Typ, • Seriennummer, • M.Code, • Software Version und • eine Beschreibung des Roboterproblems. EPSON Deutschland GmbH Industrial Robots-Division Zülpicher Straße 6 D-40549 Düsseldorf Tel: 0211 5603-204 Fax: 0211 5603-319 SERVICE CENTER USA Seiko Instruments Inc USA Factory Automation Division 2990 West Lomita Blvd Torrance, CA 90505 Tel: (310) 517-7842 Fax: (310) 517-8158 HERSTELLER SEIKO EPSON CORPORATION Robots & FA. Systems Department TEL: Okaya Plant No. 2 1-16-15, Daiei-cho 81-266-23-0020 81-266-24-2001 FAX: 81-266-24-2017 Okaya-shi, Nagano-ken, 394 Japan iii Sicherheitshinweis Vor Inbetriebnahme der Robotersteuerung lesen Sie bitte die folgenden Sicherheitshinweise aus diesem und allen weiteren Handbüchern. Das Kapitel „Sicherheit“ in diesem Handbuch erklärt minimale Sicherheitsvorkehrungen, die ein Bediener beachten muß, wenn er den Roboter einrichten und benutzen will. Bitte lesen Sie das Handbuch genau bevor Sie mit den Einstellungen beginnen und führen Sie die entsprechenden Sicherheitsvorkehrungen durch. Bewahren Sie diese Handbücher anschließend an einem für alle Betreiber zugänglichen Ort auf. G WARNUNG • Betreiben Sie den Roboter erst nach vollständiger Installation auf einer dafür konstruierten Grundplatte mit allen erforderlichen Sicherheitsabschrankungen, etc. Eine Inbetriebnahme auf der Transportpalette, auch zu Testzwecken, ist nicht zulässig und extrem gefährlich! • Stellen Sie sicher, daß beim An- oder Abklemmen von Kabelverbindungen zwischen der Eingabekonsole und der Steuerung der Netzschalter des Gerätes ausgeschaltet und verriegelt ist. Nichtbeachtung führt zu elektrischen, wie auch mechanischen Fehlfunktionen. • Stellen Sie während des Normalbetriebes sicher, daß nur unterwiesene Personen Zugriff auf die Eingabekonsole erhalten. Falsche Handhabung oder Bedienung kann zu Fehlfunktionen, Zerstörungen oder gefährlichen Unfällen führen • Der Aufenthalt im Gefahrenbereich des Roboters ist nicht zulässig! • Benutzen Sie ausschließlich Originalzubehörteile. Dies gilt besonders für alle sicherheitsrelevanten Teile, wie Programmierkabel, Programmiersoftware und optional benutzte Handbediengeräte. • Vor Inbetriebnahme des Roboters ist die Funktion aller NOT-AUS-Systeme und des E.STOP CANCELTasters zu prüfen. Dieser Taster dient zur kurzzeitigen Überbrückung des NOT-AUS-Schalters der TEACH-Schnittstelle. Durch Betätigung dieses Tasters ist es möglich, während des Roborterbetriebes das SPEL-Editor-Kabel gegen den Dummystecker auszutauschen, ohne daß die Steuerung in den NOT-AUSStatus umschaltet. Benutzen Sie den Roboter nicht, wenn die E. STOP CANCEL LED leuchtet, nachdem alle NOT-AUS-Schalter entriegelt und die NOT-AUS-Meldung zurückgesetzt wurde und somit kein NOTAUS-Signal an der Steuerung anliegt. Benutzen Sie den Roboter ebenfalls nicht, wenn die LED nicht leuchtet, während Sie den E. STOP CANCEL-Taster drücken. Dieses Signal bedeutet, daß eine Fehlfunktion im NOT-AUS-Kreis der vorderen (TEACH) Schnittstelle vorliegt. iv VORWORT Dieses Handbuch spezifiziert die grundlegenden Einzelheiten, die zur korrekten Bedienung der Steuerung benötigt werden. Bitte arbeiten Sie das Handbuch, wie auch die folgenden Handbücher ründlich durch, bevor Sie die Komponenten benutzen. HANDBÜCHER 1. Manipulator-Handbuch Handbuch zum Manipulator. Dieses Handbuch liegt Ihnen vor. Hier wird die Installation und der Anschluß von Peripheriegeräten erläutert. 2. Handbuch zur Robotersteuerung Handbuch zur Steuerung des Roboters. Dieses Handbuch liegt Ihnen vor. Hier werden Installation, Schaltereinstellungen, und der Anschluß an Peripheriegeräte beschrieben. 3. Referenzhandbuch Handbuch, in dem die Befehle der Roboterprogrammiersprache SPEL III beschrieben werden. 4. Wartungshandbuch Das Handbuch beschreibt das Verfahren zur Wartung des Roboters. Hier werden bspw. Methoden zur Problembehebung, Reparaturanleitungen, etc. beschrieben. 5. Handbuch zur Bedieneinheit (optional) Handbuch zur Bedieneinheit. Hier wird die Bedienung beschrieben. 6. Handbuch zum Programmentwicklungs- Tool In diesem Handbuch zur Programmentwicklung werden die Befehle der Entwicklungsumgebung und –methoden des SPEL Editor (optional) oder SPEL für Windows (optional) beschrieben. Wir bieten zwei Arten von Software: den SPEL Editor für MS-DOS und SPEL für Windows für Microsoft Windows. Ferner bieten wir als Option zum SPEL für Windows: Vision Guide, das integrierte Roboter Vision System (Bildverarbeitungssystem), an. 7. Handbuch zum Handprogrammiergerät Hier werden die Anwendungsmöglichkeiten des Handprogrammiergerätes (Teaching Pendant) erläutert, etc. v Eingabeformate der Befehle Formatierungsregeln für die Eingabebefehle Einfache Zeichenfolge: Geben Sie die Zeichenfolge wie dargestellt ein. Beispiel: MOTOR EIN [ ] (eckige Klammern): Benutzen Sie dies zur Dateneingabe Beispiel: EIN [Ausgabe Bitnummer] | | (vertikale Striche): Benutzen Sie dies zur Eingabe der Einstellungsmöglichkeiten Beispiel: MOTOR |EIN| |AUS| { } (Klammern): Benutzen Sie dies zur Eingabe nicht benötigter Einstellungen (Schalter etc.). Die Funktion variiert je nachdem, ob die Einstellung genutzt wird oder nicht. Beispiel: DIR {/W} { }n (Klammern + n): Benutzen Sie dies um einzugeben, daß die in den Klammern stehenden Werte n-Mal wiederholt werden sollen (geben Sie eine Zahl für n ein). Geben Sie nur „n“ ein, heißt das, daß die Werte wiederholt werden können. ~ (Tilde): Hiermit zeigen Sie, daß ein Befehl noch in die nächste Zeile weiterführt oder daß er noch zur vorhergehenden Zeile gehört. Für „SPEL für Windows“-Benutzer Wir empfehlen nicht, „SPEL für Windows“ für Windows mit dem „SPEL-Editor“ einzusetzen. Benutzen Sie „SPEL für Windows“ mit dem „SPEL-Editor“, schlagen Sie unter „7. Benutzung des Handprogrammiergeräts und des SPEL-Editors“ im „SPEL für Windows“ Handbuch nach. vi Alle Rechte vorbehalten. Kein Teil dieses Handbuchs darf in irgendeiner Form (Druck, Fotokopie, Mikrofilm oder ein anderes Verfahren) ohne die schriftliche Genehmigung der SEIKO EPSON Corporation reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden. Im Hinblick auf die Nutzung der im Handbuch enthaltenen Informationen wird keinerlei Patenthaftung übernommen. Das Handbuch wurde mit der gebotenen Sorgfalt erarbeitet, SEIKO EPSON übernimmt jedoch keinerlei Patenthaftung für etwaige Fehler oder Auslassungen. Außerdem wird keine Haftung übernommen für Schäden, die sich durch Verwendung der im Handbuch enthaltenen Informationen ergeben. Weder SEIKO EPSON Corporation noch ihre Tochtergesellschaften haften gegenüber dem Käufer dieses Produkts oder Dritter für Schäden, Verluste, Kosten oder Ausgaben, die von dem Käufer oder Dritten aufgrund von Unfall, Mißbrauch des Produkts oder unerlaubter Änderungen, Reparaturen oder Neuerungen verursacht wurden. SEIKO EPSON haftet nicht für Schäden oder Störungen, die sich durch Einsatz von Optionen oder Fremdzubehör ergeben, die keine original EPSON-Produkte sind, oder keine ausdrückliche Zulassung der Firma SEIKO EPSON als „EPSON Approved Products“ haben. Warenzeichen Copyright © 1999 by EPSON Deutschland GmbH, Düsseldorf. vii Inhaltsverzeichnis Sicherheit.................................................................................................................... 5 1. Grundfunktionen .............................................................................................................6 1.1 Niedrige und hohe Spannung.............................................................................................................. 6 1.2 Sicherheitsabschrankungen................................................................................................................. 7 1.3 NOT-AUS........................................................................................................................................... 8 1.4 Zustimmtaster (nur für SRC-320)........................................................................................................ 8 2. Sicherheitshinweise ........................................................................................................9 2.1 Allgemeines........................................................................................................................................ 9 2.2 Allgemeine Konstruktionsanforderungen .......................................................................................... 10 Einführung ................................................................................................................ 11 1. Vorbereitung .................................................................................................................12 1.1 Komponenten des Roboters ............................................................................................................... 12 Optionen............................................................................................................................................. 12 1.2 Vorsichtsmaßnahmen bei der Installation.......................................................................................... 13 Überprüfen des M. CODE und der Kabellänge.................................................................................... 13 Transportsicherung ............................................................................................................................. 13 1.3 Programmiereinheit .......................................................................................................................... 13 Vorbereitungen zum Gebrauch der Programmiereinheit...................................................................... 13 1.4 Modi................................................................................................................................................. 14 Steuerungsmodi .................................................................................................................................. 14 TEACH-Modus................................................................................................................................... 14 AUTO-Modus ..................................................................................................................................... 16 1.5 Fehlermeldung.................................................................................................................................. 17 LCD Kontrollanzeige der Steuerung ................................................................................................... 17 Ausgabe an OPU-300 und REMOTE1-Steckverbindung ..................................................................... 18 Ausgabe an Programmiereinheit ......................................................................................................... 18 2. Grundlegende Bedienung.............................................................................................19 2.1 Ablaufplan........................................................................................................................................ 19 2.2 Überprüfung des Startzustandes ........................................................................................................ 20 2.3 Einstellen der Datensicherung........................................................................................................... 21 Initialisierung des Bewegungsbereiches............................................................................................... 21 2.4 Einschalten der Motorspannungszufuhr ............................................................................................ 22 Der Betriebszustand des Motors .......................................................................................................... 22 2.5 Kalibrierung ..................................................................................................................................... 23 2.6 Einstellen der Home-(Standby-)Position............................................................................................ 24 Definieren der Home-(Standby-)Position............................................................................................. 24 Armbewegungsreihenfolge bei Einstellung der Home-(Standby-)Position............................................ 24 2.7 Teaching und Programmieren ........................................................................................................... 25 Teaching............................................................................................................................................. 25 Beispiele für Einrichtmethoden ........................................................................................................... 26 Beispielprogrammierung..................................................................................................................... 28 2.8 Ausführen eines Programms ............................................................................................................. 29 Kompilieren........................................................................................................................................ 29 Ausführen des Programms mit dem PC............................................................................................... 29 Ausführen des Programms mit der Bedieneinheit................................................................................ 30 Ausführen des Programms über REMOTE3 ........................................................................................ 30 2.9 Auswahl des Programms zum Ändern von Zeilen ............................................................................. 31 Auswahl des Programms per REMOTE-Eingang ................................................................................ 31 Verwendung des CHAIN-Befehls........................................................................................................ 32 2.10 Handhabung von Dateien ................................................................................................................ 32 3. JOG-Betrieb..................................................................................................................33 3.1 Das verwendete Koordinatensystem im JOG-Verfahren .................................................................... 33 JOG-Verfahren im Basis-Koordinatensystem ...................................................................................... 34 JOG-Verfahren im Tool-Koordinatensystem ....................................................................................... 35 JOG-Verfahren im Joint-Koordinatensystem ....................................................................................... 35 3.2 JOG-Bewegung................................................................................................................................. 36 Grundlagen ............................................................................................................... 37 1. Bewegungsgeschwindigkeit..........................................................................................38 1.1 Beschleunigungs-/Verzögerungsgeschwindigkeit .............................................................................. 38 1.2 Hochgeschwindigkeit im Teach-Modus............................................................................................. 39 Blockierung durch die Sicherheitsabschrankung ................................................................................. 39 Blockierung durch den POWER-(LP)-Befehl ...................................................................................... 39 Blockierung durch den TSPEED-Befehl.............................................................................................. 40 1.3 Beschleunigungs-/Verzögerungssteuerung der 3. Achse mit dem JUMP-Befehl ................................ 41 1.4 Transport von Objekten, die das Nominalgewicht überschreiten........................................................ 42 2. Programmierung ...........................................................................................................43 2.1 Grundlegende Bestandteile eines Programms .................................................................................... 43 Funktionsname ................................................................................................................................... 44 Kommentare ....................................................................................................................................... 44 Mehrfachanweisung............................................................................................................................ 44 Sprungmarken .................................................................................................................................... 45 2.2 Konstanten........................................................................................................................................ 46 Numerische Konstanten ...................................................................................................................... 46 Zeichenketten...................................................................................................................................... 46 2.3 Variablen.......................................................................................................................................... 47 Spezifische Anzahl von Variablen....................................................................................................... 47 Numerische Variablen......................................................................................................................... 47 Zeichenketten-Variablen ..................................................................................................................... 48 Bereichsvariablen................................................................................................................................ 49 Auflisten der Variablennamen............................................................................................................. 49 Backup-Variablen ............................................................................................................................... 50 Hinweis zur Verwendung von Variablen ............................................................................................. 51 2.4 Operationen ...................................................................................................................................... 52 Mathematische Operationen................................................................................................................ 52 Logische Operatoren ........................................................................................................................... 52 Relationale Operatoren........................................................................................................................ 53 Zeichenketten-Operatoren ................................................................................................................... 53 Rangfolge der Operatoren ................................................................................................................... 53 Operationen mit ganzen und reellen Zahlen ........................................................................................ 53 Rückgabewerte.................................................................................................................................... 54 Fälle, in denen Operationen und Funktionen benutzt werden können .................................................. 54 2.5 Steueranweisungen des Programms................................................................................................... 55 FOR...NEXT....................................................................................................................................... 55 GOTO................................................................................................................................................. 55 IF THEN ELSE................................................................................................................................... 55 GOSUB...RETURN............................................................................................................................. 56 GOTO, FOR...NEXT, GOSUB...RETURN, IF...THEN...ELSE ........................................................... 56 CALL ................................................................................................................................................. 57 * ZEROFLG(0)................................................................................................................................... 57 SELECT...CASE...SEND.................................................................................................................... 57 WHILE[Bedingung]...WEND ............................................................................................................. 58 TRAP.................................................................................................................................................. 58 NESTING........................................................................................................................................... 59 2.6 Pseudobefehl..................................................................................................................................... 60 3. Dateien .........................................................................................................................61 3.1 Haupt- und Dateispeicher.................................................................................................................. 61 Speicherbereich im Hauptspeicher....................................................................................................... 61 Bereich zur Programmausführung....................................................................................................... 62 Dateispeicher ...................................................................................................................................... 62 3.2 Dateinamen ...................................................................................................................................... 63 Die Bestandteile eines Dateinamens .................................................................................................... 63 Erzeugen eines Dateinamens............................................................................................................... 63 2 Erweiterung ........................................................................................................................................ 63 Spezielle Dateinamen.......................................................................................................................... 64 3.3 Dateien, die während der Ausführung geladen werden...................................................................... 64 4. Verzeichnis ...................................................................................................................65 4.1 Verzeichnis....................................................................................................................................... 65 Hauptverzeichnis ................................................................................................................................ 65 Unterverzeichnis ................................................................................................................................. 65 Erzeugen eines Unterverzeichnisses .................................................................................................... 65 Löschen eines Unterverzeichnisses...................................................................................................... 66 Baumstrukturierte Verzeichnisse......................................................................................................... 66 Stammverzeichnis (Mutterverzeichnis), Unterverzeichnis (Kinderverzeichnis) ................................... 66 Aktuelles Verzeichnis ......................................................................................................................... 66 Festlegen eines Pfades......................................................................................................................... 67 Umgebungsvariablen........................................................................................................................... 68 Anwendungen ........................................................................................................... 69 1. Multitasking...................................................................................................................70 1.1 Was ist Multitasking ......................................................................................................................... 70 Vorteile des Multitaskings................................................................................................................... 70 Multitasking in SPEL III..................................................................................................................... 71 Tasks während der Ausführung des WAIT-Befehls, des INPUT-Befehls und des Bewegungs-Befehls . 72 WAIT-Befehl und IF-Satz................................................................................................................... 72 Zeitprogrammierung für den Wechsel der Tasks ................................................................................. 73 1.2 Ineinandergreifen von Tasks ............................................................................................................. 74 Störungen der Steuerung..................................................................................................................... 74 Nur ein Gerät wird von Vielfach-Tasks benutzt................................................................................... 75 2. Programmiertechniken........................................................................................................................ 77 2.1 Schreiben eines umfangreichen Programms (Effizienter Einsatz von CHAIN/LINK) ........................ 77 Einsatzmöglichkeiten des CHAIN-Befehls .......................................................................................... 77 Einsatzmöglichkeiten des CHAIN-Befehls .......................................................................................... 78 2.2 Bewegung zu mehreren gleichweit voneinander entfernten Punkten.................................................. 79 Definieren von Paletten....................................................................................................................... 79 Positionsbestimmung innerhalb der Palette ......................................................................................... 80 2.3 Techniken zum Verkürzen der Zykluszeit ......................................................................................... 81 Benutzen einer Bogenbewegung.......................................................................................................... 81 Freies Einstellen des Zeitverhaltens bei Abschluß der Positionierung .................................................. 81 Parallele Prozesse................................................................................................................................ 81 Bedingter Stop während der Bewegung............................................................................................... 82 Montageanwendung mit langsamer Geschwindigkeit .......................................................................... 82 Vereinigte Befehle .............................................................................................................................. 82 2.4 Benutzen von Positionsdaten............................................................................................................. 83 3. Fehlerbeseitigung (Debuggen) .....................................................................................84 3.1 Fehlerbeseitigung im Multitasking.................................................................................................... 84 Komfortable Befehle zur Fehlerbeseitigung......................................................................................... 84 XQT-Befehl ........................................................................................................................................ 84 TSTAT-Befehl .................................................................................................................................... 84 TON/TOFF-Befehl.............................................................................................................................. 85 PRINT-Befehl ..................................................................................................................................... 85 4. Stapelverarbeitung .......................................................................................................86 4.1 Befehle zur Stapelverarbeitung.......................................................................................................... 86 4.2 Stapeldatei ........................................................................................................................................ 88 Herstellen einer Stapeldatei................................................................................................................. 88 5. Automatische Programmausführung bei Einschalten der Spannungsversorgung ........89 5.1 Die AUTO.BAT-Datei ...................................................................................................................... 89 5.2 Das IPL-Programm ........................................................................................................................... 89 6. Systemkonfigurationsdatei............................................................................................90 6.1 CNFG.SYS-Datei.............................................................................................................................. 90 6.2 Editieren von Dateien ....................................................................................................................... 91 3 7. RS-232C.......................................................................................................................93 7.1 Übersicht über die RS-323C.............................................................................................................. 93 Konfiguration ..................................................................................................................................... 93 Konfiguration für SPEL III ................................................................................................................. 93 Computerkonfiguration ....................................................................................................................... 96 TTY Protokoll und XON/XOFF Steuerung ......................................................................................... 97 BASIC-Protokoll................................................................................................................................. 98 Übertragungssteuerung per CS-Pin ................................................................................................... 100 RS-232C Schnittstelle ....................................................................................................................... 101 7.2 Die Kommunikation zwischen den Robotern................................................................................... 104 Konfigurationseinstellungen ............................................................................................................. 104 Kommunikationsbezogene Befehle.................................................................................................... 104 Spezielle Anwendungsmethoden für kommunikationsbezogene Befehle............................................ 104 7.3 Kommunikation zwischen Robotern und Anwendereinrichtungen................................................... 109 Datenformat...................................................................................................................................... 109 Programm für die Kommunikation mit dem Anwendereinrichtung ................................................... 111 7.4 Die Kommunikation zwischen Hauptrechner und Roboter............................................................... 114 Die Konsole ...................................................................................................................................... 114 Robotersteuerungsprogramm............................................................................................................. 115 7.5 Erweiterte Funktionen..................................................................................................................... 126 SPEL III: Erweiterte Funktionsaufrufe .............................................................................................. 126 ASCII-Codetabelle ............................................................................................................................ 128 7.6 Übertragungsfehler ......................................................................................................................... 129 Übertragungsfehlercodes ................................................................................................................... 129 4 SICHERHEIT 5 1. Grundfunktionen In diesem Kapitel erklären wir die Hauptsicherheitsfunktionen unserer Roboter. Diese Erklärungen beinhalten das Grundwissen, das benötigt wird um ein Robotersystem einzurichten. Die Erklärungen in diesem Kapitel sind einfach und kurz gehalten, um Ihnen einen Überblick über die Sicherheit zu verschaffen. Bitte nutzen Sie für Details das Handbuch zur Steuerung und andere relevante Handbücher und richten Sie ein Sicherheitssystem ein, nachdem Sie die Merkmale unserer Roboter wirklich verstanden haben. 1.1 Niedrige und hohe Spannung Der Roboter hat zwei Motorspannungsmodi: Low Power (LP)- und High Power (HP)-Modus (niedrige und hohe Spannung. Im LP-Modus ist die Geschwindigkeit der Bewegung und die des Drehmoments des Motors verringert. Umgekehrt kann der Motor im HP-Modus in der programmierten Geschwindigkeit und mit einem bestimmten Drehmoment betrieben werden. Die Möglichkeit der geringen Geschwindigkeit wurde geschaffen, damit es möglich ist Gefahren vorzubeugen, falls der Roboter aus irgendeinem Grund Fehlfunktionen aufweist. Das reduzierte Drehmoment wurde geschaffen, um einen Bediener, wenn er von dem Roboter getroffen werden sollte, vor ernsthaften Verletzungen zu schützen. Jeder Roboter hat seine eigenen, vorgegebenen, maximalen Werte für verringerte Geschwindigkeit und reduziertes Drehmoment. Benutzer können diese Werte nicht verändern. Aus Gründen der Sicherheit ist die Anfangseinstellung der Roboter immer der LP-Modus. Der Roboter geht nicht zur Hochspannungseinstellung über, bis der spezielle Befehl dazu eingegeben wurde. Die Motorspannungseinstellungen werden gespeichert. Trotzdem schaltet die Motorsteuerung sofort in einen Niedrigspannungsstatus, der identisch zum LP-Modus ist, wenn die Sicherheitsabschrankung geöffnet wird.(Die Motorspannung geht in den HP-Modus zurück, sobald die Sicherheitsabschrankung wieder geschlossen ist.) Der Roboter wird ebenfalls automatisch in den Niedrigspanungsmodus zurückversetzt, wenn der Bedienungsmodus (TEACH/AUTO) geändert oder die Steuerung zurückgesetzt wird. LP-Modus HP-Modus Sicherheitsabschrankung offen Niedrige Spannung Niedrige Spannung Sicherheitsabschrankung geöffnet Niedrige Spannung Hohe Spannung Viele Schutz- und Überwachungskreisläufe in der Steuerung verhindern, daß der Roboter außer Kontrolle gerät und die verringerte Geschwindigkeit und das reduzierte Drehmoment überschreitet, sogar wenn nur ein einziger Fehler im LP-Modus auftritt. 6 1.2 Sicherheitsabschrankungen Der REMOTE1-Anschluß der Steuerung hat einen Eingangsstromkreis der mit dem Schließmechanismus der Sicherheitsabschrankung verbunden ist. Der Eingang der Sicherheitsabschrankung arbeitet wie folgt: Im AUTO-Modus: Sicherheitsabschrankung geschlossen: Automatischer Betrieb ist möglich Sicherheitsabschrankung geöffnet: Der Roboter stoppt sofort und geht in den LP-Modus über. Der Roboter kann nicht neu gestartet werden bis die Sicherheitsabschrankung wieder geschlossen ist und ein START-Signal eingegeben wird. Im TEACH-Modus: Sicherheitsabschrankung geschlossen: Der Roboter kann selbst im HP-Modus ein Programm verifizieren. Sicherheitsabschrankung geöffnet: Der Roboter hält sofort, kann aber danach nur im LP-Modus für den TEACH-Betrieb genutzt werden. Schlagen Sie auch (6) – e) im Abschnitt 2.3 des Handbuchs und „4. REMOTE1“ des Steuerungshandbuches nach. Nur für SRC-320 Der Schaltkreis der Sicherheitsabschrankung ist dual-redundant. Eine offene Sicherheitsabschrankung wird immer als Fehler erkannt, auch wenn nur einer der Schaltkreise ausfällt. Falls ein Ausfall erfolgt, wird ein Fehler angezeigt. Deshalb empfehlen wir dringend eine dual-redundante Verdrahtung für die Sicherheitstürschaltkreise. Wenn von dem Schaltkreis der Sicherheitsabschrankung eine offene Sicherheitsabschrankung entdeckt wird, wird das Signal geschlossen. Selbst, wenn danach die Sicherheitsabschrankung geschlossen wird, wird sie nicht als geschlossen erkannt, bis das Freigabesignal eingegeben wird. Diese Sicherheitsmaßnahme wurde eingeführt, damit eine Verwechslung der Zustände der Sicherheitsabschrankung vermieden wird. Eine Verwechslung könnte auftreten, wenn z.B. Bediener und Roboter Zustände der Sicherheitsabschrankung unterschiedlich erkennen, bspw. der Bediener glaubt die Türe ist offen während der Roboter einen geschlossenen Zustand wahrnimmt. (z.B.: Dies könnte passieren, wenn Falscheinstellungen unterschiedliche Zustände der Sicherheitsabschrankung und des Öffners bewirken, oder wenn die Türe geschlossen wird, obwohl der Bediener sie nicht schließen wollte, etc.) 7 1.3 NOT-AUS Die Robotersteuerung ist mit NOT-AUS Eingaben ausgestattet. Wenn der im Normalfall geschlossene NOT-AUS-Schalter gedrückt wird, wird die Spannungszufuhr zum Motor unterbrochen und der Roboter wird mittels einer Bremse angehalten. Der Bewegungsbereich des Roboters vor dem Stop und der genaue Punkt an dem der Roboter nach einem NOT-AUS hält können nicht spezifiziert werden. In den meisten Fällen wird der Roboter nicht über den Aufnahmepunkt, der vor dem Einsatz des NOT-AUS Schalters spezifiziert wurde, hinausgehen; eine Überschreitung dieses Punktes ist aber möglich. Dies ist abhängig von dem Gewicht der Ladung des Roboters und seiner Bewegungsgeschwindigkeit. Deshalb muß zusätzliche Ausstattung in einer entsprechenden Entfernung zum Roboter installiert werden. Ein NOT-AUS Ausgangsterminal, das mit dem NOT-AUS des Roboters verbunden ist, ist optional erhältlich. Bediener können es benutzen, um weitere Komponenten zu steuern. 1.4 Zustimmtaster (nur für SRC-320) Ein Zustimmtaster wurde für Personen eingerichtet, die innerhalb der Sicherheitsabschrankung arbeiten. Im TEACH-Modus arbeitet der Roboter nur, wenn der Taster gedrückt wird und hält an, wenn der Taster losgelassen wird. Die Roboterbetrieb kann nicht durch einfaches Drücken des Tasters wieder begonnen werden. Der Zustimmtaster ist an der Seite des Handprogrammiergerätes TP-320 angebracht. Um den Roboter mit dem Handprogrammiergerät zu betreiben, muß der Zustimmtaster ununterbrochen gedrückt werden, egal ob die Sicherheitsabschrankung geöffnet oder geschlossen ist. Um von außerhalb der Sicherheitsabschrankung ein Programm zu entwickeln wird ein PC benutzt. Die Software zur Unterstützung der Programmierung (SPEL Editor, SPEL für Windows) hat eine TeachFunktion. Verbinden Sie ein PC-Kabel, das mit einem Zustimmtaster ausgestattet ist (optional erhältlich), wenn Sie diese Funktion benutzen. Verwenden Sie den PC niemals innerhalb der Sicherheitsabschrankung, wenn das PC-Kabel nicht mit einem Zustimmtaster ausgestattet ist,. 8 2. Sicherheitshinweise 2.1 Allgemeines Dieses Kapitel beschreibt die grundlegenden Vorsichtsmaßnahmen, die getroffen werden müssen, um den gefahrlosen Betrieb des Roboters und des Robotersystems sicherzustellen. Bitte lesen Sie das Kapitel sorgfältig und denken Sie zuerst an die Sicherheit, wenn Sie den Roboter betreiben. Spezielle Toleranzwerte, Nutzungsbedingungen und andere Punkte, die zur Sicherheit notwendig sind werden im Steuerungs- und Manipulatorhandbuch erläutert. Die hier behandelten Punkte basieren auf ISO 10218 (Manipulator-Industrieroboter – Sicherheit), aber die Sicherheitsmaßstäbe sind genauer geworden und einige Zusätze sind erfolgt. Einige der Sicherheitsstandards von Robotern und Robotersystemen sind unten aufgelistet. Bitte führen Sie nicht nur die in diesem Kapitel aufgeführten, sondern alle relevanten Sicherheitsmaßnahmen durch. (Beachten Sie: dies ist nur ein Teil der benötigten Sicherheitsstandards). EN775 Europäischer Standard; Manipulator-Industrierobotor – Sicherheit ANSI/RIA R15.06 Amerikanischer nationaler Standard; Industrieroboter und Robotersysteme – Sicherheitsanforderungen. IEC204-1 (EN60204-1) Maschinensicherheit – Elektrische Ausstattung der Maschinen Teil1. Spezifikationen für generelle Anforderungen EN292-1, -2 Sicherheit der Maschinen – Basiskonzepte, allgemeine Konstruktionsvorschriften x Teil1. Basisterminologie, Methoden x Teil2. Technische Richtlinien und Spezifikationen EN418 NOT-AUS Zubehör, funktionale Aspekte – Konstruktionsvorschriften prEN953 Allgemeine Anforderungen an Entwurf und Konstruktion von Sicherheitsabschrankungen 9 2.2 Allgemeine Konstruktionsanforderungen Die Roboter und die dazugehörigen Optionen werden vom Hersteller/Lieferanten entsprechend der Vorgaben in diesem und dem nächsten Abschnitt entworfen und konstruiert. (1) Sicherheit bei Fehlern Die Roboter und die dazugehörigen Optionen werden so geplant, konstruiert und implementiert, daß sich ein vorhersehbarer Fehler einer einzelnen Komponente nicht auf andere Bestandteile auswirkt. Sollte ein Fehler auftreten wird das System in einem sicheren Zustand verlassen. (2) elektrische Einrichtungen Die Installation der elektrischen Einrichtungen wird gemäß IEC204-1 [(EN60204-1): Maschinensicherheit – Elektrische Ausstattung der Maschinen Teil1. Spezifikationen für generelle Anforderungen] vorgenommen. (3) Spannungszufuhr Die Einrichtung der Spannungszufuhr und der Erdung wird gemäß den Spezifikationen im Handbuch zur Steuerung vorgenommen. (4) Isolierung der Stromquellen Jedes Robotersystem verfügt über Apparate zum Isolieren seiner Stromquellen. Diese Apparate sind so angebracht, daß niemand einer Gefahr ausgesetzt wird und sie verfügen über die Fähigkeit einer Verriegelung. (5) Umgebungsbedingungen Die Umgebungsbedingungen werden gemäß den Spezifikationen im Handbuch zur Steuerung vorgenommen. 10 EINFÜHRUNG 11 1. Vorbereitung 1.1 Komponenten des Roboters Die Hauptbestandteile unserer Roboter finden Sie in der folgenden Abbildung: G HINWEIS Alle Komponenten außer der Steuerung und dem Manipulator sind optional erhältlich. Optionen SPEL Editor Programmentwicklungs-Tool unter MS-DOS. SPEL für Windows Programmentwicklungs-Tool unter MS-Windows. Bedieneinheit (OPU-300) Eine multifunktionale Bedieneinheit für unsere Roboter mit einer großen LCD-Anzeige. Handprogrammiergerät (TP-320/TP-320J) Die Programmierung kann mit Hilfe des Handprogrammiergeräts erfolgen. 12 1.2 Vorsichtsmaßnahmen bei der Installation Lesen Sie zuerst die Abschnitte über die Vorsichtsmaßnahmen in den Steuerungs- und ManipulatorHandbüchern. Einige ergänzende Vorsichtsmaßnahmen werden nachfolgend aufgeführt: Überprüfen des M. CODE und der Kabellänge Jede Steuerung ist auf einen bestimmten Manipulator eingestellt und angepaßt. Es kann daher zu Maschinenschäden oder anderen Problemen kommen, wenn ein falscher Steuerungstyp angeschlossen ist. Prüfen Sie daher vor der Installation, daß der M.CODE der Steuerung mit dem M.CODE des Manipulators übereinstimmt. Den M.CODE finden Sie auf dem gelben Aufkleber auf der Rückseite des Manipulators, wie auch auf der Rückseite der Steuerung. Stellen Sie sicher, daß die Länge des Stromversorgungskabels, wie auch des Signalkabels mit der angegebenen Länge auf dem gelben Aufkleber übereinstimmt. G VORSICHT ! Prüfen Sie vor der Installation, daß der M.CODE der Steuerung mit dem M.CODE des Manipulators übereinstimmt. M. CODE Aufkleber Transportsicherung Der Roboterarm wird mit einer speziellen Transportsicherung ausgeliefert. Entfernen Sie diese Transportsicherung solange nicht, bis der Manipulator auf seinem Sockel befestigt ist. Stellen Sie sicher, daß die Transportsicherung entfernt wurde, bevor Sie die Spannungszufuhr einschalten. Weitere Informationen zur Transportsicherung finden Sie im Manipulator-Handbuch. 1.3 Programmiereinheit Die Programmiereinheit wird zum Einrichten von Punkten und Erzeugen von Programmen verwendet, und um den Roboter zu betreiben. Im allgemeinen wird dafür ein Computer mit der Programmiersoftware (SPEL Editor oder SPEL für Windows) verwendet. Vorbereitungen zum Gebrauch der Programmiereinheit Die Vorbereitungen zur Nutzung der Programmiereinheit werden in Kapitel „1.3 Vorbereitungen“ im SPEL Editor Handbuch oder „Setup“ im SPEL für Windows Handbuch erklärt. 13 1.4 Modi Steuerungsmodi Die Programmiereinheit verfügt über zwei Modi: TEACH-(Einricht-)-Modus und AUTO-Modus. Bevor Sie den Roboter starten, müssen Sie auswählen, in welchem Modus er betrieben werden soll. Beachten Sie, daß das Betriebsverfahren von dem ausgewählten Modus abhängig ist. Es gibt zwei Methoden, zwischen den Modi zu wechseln: (a) Modusschalter an der Bedieneinheit Stellen Sie den Modusschalter auf den gewünschten Modus. (b) Signalsendung zum REMOTE2-Stecker (wenn die Bedieneinheit nicht verwendet wird) Senden Sie ein Modussignal, daß dem gewünschten Modus entspricht, an den Pin auf dem REMOTE2-Stecker. Weitere Informationen zur Modusumschaltung finden Sie im Handbuch zur Steuerung in dem Kapitel „Benutzung ohne Bedieneinheit“. Die Funktionsweisen der beiden Modi werden nachfolgend beschrieben: TEACH-Modus Dieser Modus wird zum Einrichten, Programmieren und Debuggen verwendet, wenn die Steuerung mit einem Programmiergerät, z.B. einem Personal Computer oder Handprogrammiergerät, verbunden ist. Unabhängig welches Programmiergerät angeschlossen ist, arbeitet der Modus durch Senden von Befehlen an die TEACH-Schnittstelle des Roboters. PC-seitig wird das TEACH-Kabel an die RS-232C Schnittstelle angeschlossen. Bitte konfigurieren Sie zur Benutzung der TEACH-Schnittstelle die RS-232C-Schnittstelle Ihres Personal Computers wie folgt: 9600 bps, 8 Bit, Even, 2 Stop Bits Die Konsole im TEACH-Modus Das Gerät, das die Befehle an den Roboter sendet, wird Konsole genannt. Im TEACH-Modus ist die Konsole dem Gerät zugewiesen, das an der TEACH-Schnittstelle auf der Vorderseite der Steuerung angeschlossen ist. Außerdem können Sie den Personal Computer an die RS-232C-Schnittstelle (#20), auf der Rückseite der Steuerung, anschließen. (Nur für SPEL für Windows.) G HINWEIS Die RS-232C-Schnittstelle (#21) kann nicht die Konsole sein. Warnung 14 In dem Fall, daß der SSW3-1 des Softwareschalters auf ON steht, muß der PC an die RS-232C-Schnittstelle (#20) angeschlossen werden. Wenn der PC an der TEACH-Schnittstelle angeschlossen ist, funktioniert der Taster <Handprogrammiergerät> in SPEL für Windows nicht. • TEACH-Schnittstelle Das ist die Standardeinstellung. Das Handprogrammiergerät oder der PC ist an der TEACHSchnittstelle auf der Vorderseite der Steuerung angeschlossen. • RS-232C-Schnittstelle (#20) Das Handprogrammiergerät kann an die TEACH-Schnittstelle auf der Vorderseite der Steuerung angeschlossen werden, und gleichzeitig können Sie den PC mit SPEL für Windows an die RS-232CSchnittstelle (#20) auf der Rückseite der Steuerung anschließen. Durch Wechseln der Konsole können Sie die Einrichtarbeiten vornehmen und parallel Programme erstellen oder debuggen, ohne das Kabel zu wechseln. Diese Funktion wird nur von SPEL für Windows und dem Handprogrammiergerät TP-320/TP-320J unterstützt. Wenn Sie die RS-232C-Schnittstelle (#20) benutzen, stellen Sie vorher den Softwareschalter SSW3-1 auf ON. Wenn Sie die Spannungszufuhr für die Steuerung einschalten, nachdem Sie den Softwareschalter umgestellt haben, ist die RS-232C-Schnittstelle (#20) die Konsole. Sie können die Konsole wie folgt ändern: 1. Wenn Sie die Konsole von Handprogrammiergerät auf PC umstellen wollen, drücken Sie den Freigabe-Schalter auf dem Handprogrammiergerät. 2. Wenn Sie die Konsole von PC auf Handprogrammiergerät umstellen wollen, benutzen Sie den Taster <Handprogrammiergerät> in dem Menü <Robotersteuerung> in SPEL für Windows. Führen Sie keine Einrichtungen aus, wenn der PC an der RS-232C-Schnittstelle (#20) angeschlossen ist, da der NOT-AUS-Schalter nicht als solcher funktioniert, wenn ein PC-Kabel an der RS-232C-Schnittstelle (#20) angeschlossen ist. Daher ist es sehr gefährlich, den Roboter in diesem Zustand zu bewegen. Warnung Wenn Sie ein Programm debuggen, während der PC an die RS-232CSchnittstelle (#20) angeschlossen ist und der Roboter sich bewegt, ist es zwingend notwendig, das Handprogrammiergerät oder die Bedieneinheit OPU300 in der Hand zu halten, um ggf. den NOT-AUS-Schalter drücken zu können. Das Handprogrammiergerät oder die Bedieneinheit müssen dafür an der TEACH-Schnittstelle angeschlossen sein. Der Spannungsversorgungszustand des Motors im TEACH-Modus Im TEACH-Modus ist es möglich, daß derjenige, der den TEACH-Vorgang ausführt, nahe an den Roboter herankommt. Der Roboter wird normalerweise im TEACH-Modus im LOW-POWER-Status betrieben, um die Sicherheit des Bedieners zu gewährleisten. Um den Roboter im TEACH-Modus im HIGH-POWER-Status betreiben zu können, muß die Sicherheitsabschrankung geschlossen und der LOW-POWER-Status durch Eingeben des Befehls LP OFF ausgeschaltet werden. Auch wenn der Befehl LP OFF eingegeben wurde, aber die Sicherheitsabschrankung geöffnet ist, ändert sich der Spannungsversorgungszustand des Motors nicht. Der Spannungsversorgungszustand des Motors ändert sich auch dann nicht, wenn die Sicherheitsabschrankung geschlossen ist, aber der Befehl LP OFF nicht eingegeben wurde. Der Roboter kann im TEACH-Modus mit niedriger Geschwindigkeit betrieben werden, auch wenn die Sicherheitsabschrankung geöffnet ist, um das Einrichten zu ermöglichen. 15 AUTO-Modus Dieser Modus wird zum Betrieb der Roboter verwendet. Die Befehle zum Starten oder Unterbrechen eines Programms können mit Hilfe der Bedieneinheit OPU-300, der REMOTE3 Steckverbindung oder der RS-232C Schnittstelle an den Roboter gesendet werden. Die Konsole im AUTO-Modus Das Gerät, das die Befehle an den Roboter sendet, wird Konsole genannt und wird mit Hilfe des Befehls „CONSOLE“ festgelegt. Es gibt drei verschiedene Möglichkeiten, die Konsole im AUTO-Modus zu spezifizieren. • Unter Verwendung der OPU-300 (REMOTE2) als Konsole: Dieses Gerät ist mit einem Druckknopf zum Starten und Unterbrechen von Programmen ausgerüstet. Außerdem verfügt es über eine Anzeige zum Darstellen der Menüs und Fehlermeldungen. • Unter Verwendung der REMOTE3 als Konsole: Roboter können mit Hilfe der REMOTE3 über einen Sequencer oder eine herkömmliche Bedieneinheit gesteuert werden (So kann der Roboter gestartet, angehalten, unterbrochen oder kalibriert werden.) • Unter Verwendung von S.NET (RS-232C #20, #21): Die RS-232C stellt eine Kommunikationsschnittstelle bereit, um Befehle von einem Computer an den Roboter zu senden. Sie ermöglicht außerdem das Senden verschiedener Daten (Daten zur Produktionssteuerung, etc.) vom Roboter an den Computer, damit der Computer diese Daten bearbeiten kann. Nähere Informationen erhalten Sie in Kapitel 7.4. Der Spannungsversorgungszustand des Motors im AUTO-Modus Im AUTO-Modus ist es unmöglich, den Roboter mit geöffneter Sicherheitsabschrankung zu betreiben, da dies bedeuten würde, daß sich jemand in der Nähe des Roboters aufhält. Wenn Sie versuchen, den Roboter mit geöffneter Sicherheitsabschrankung zu betreiben, wechselt der Roboter sofort in den Pausezustand und kann nicht mehr betrieben werden. Um den Pausezustand wieder aufzuheben, müssen Sie die Sicherheitsabschrankung schließen und ein Startsignal senden. Weitere Informationen über den Spannungsversorgungszustand des Motors im AUTO-Modus erhalten Sie in der Übergangstabelle des Handbuches zur Steuerung. Die Spannungsversorgungszustände des Motors im AUTO-Modus sind bei den Steuerungen SRC-300 und SRC-320 unterschiedlich. 16 1.5 Fehlermeldung Wenn in der Robotersteuerung ein Fehler auftritt, erscheint eine entsprechende Fehlermeldung (wie nachfolgend dargestellt). Gleichzeitig erscheint eine Fehlermeldung an der OPU-300 und der Programmiereinheit (PC). LCD Kontrollanzeige der Steuerung 1. 7-Segment Anzeige Die oben dargestellten Inhalte werden alternativ angezeigt. Die Fehler- und die Achsnummern werden mit einem Bindestrich (-) dargestellt. 2. andere Anzeigen NOT-AUS FEHLER S.ERR SICHERHEITSABSCHRANKUNG Leuchtet auf, wenn ein NOT-AUS-Zustand auftritt. Die LED leuchtet solange auf, bis der Roboter zurückgesetzt wird, auch wenn die Ursache des NOT-AUS beseitigt wurde. Leuchtet auf, wenn ein Fehler auftritt. Leuchtet nicht bei einem NOT-AUS oder Systemfehler. Leuchtet auf, wenn die Haupt-CPU aufgrund eines Hardwarefehlers nicht funktioniert. In diesem Fall wird der Fehler nicht oder nicht korrekt in der 7-Segment Anzeige dargestellt. Leuchtet auf, wenn die Sicherheitsabschrankung geöffnet ist. 17 Ausgabe an OPU-300 und REMOTE1-Steckverbindung 1. LCD (OPU-300) Wenn ein Fehler auftritt, werden Fehler-, Zeilen- und Tasknummer sowie die Fehlerbeschreibung angezeigt. 2. Ausgabe an OPU-300 LCD und REMOTE1 NOT-AUS Leuchtet auf, wenn ein NOT-AUS-Zustand auftritt. Leuchtet auf, wenn ein Fehler auftritt. Leuchtet nicht bei einem NOT-AUS FEHLER oder Systemfehler. Leuchtet auf, wenn die Haupt-CPU aufgrund eines Hardwarefehlers nicht S.ERR funktioniert. In diesem Fall wird der Fehler nicht oder nicht korrekt in der 7-Segment Anzeige dargestellt. SICHERHEITSABLeuchtet auf, wenn die Sicherheitsabschrankung geöffnet ist. SCHRANKUNG Ausgabe an Programmiereinheit Wenn ein Fehler aufgrund eines eingegebenen Befehls auftritt, wird die Meldung wie folgt ausgegeben: Wenn ein Fehler auftritt, während ein Programm abläuft, wird die Meldung wie folgt ausgegeben: 18 2. Grundlegende Bedienung In diesem Kapitel beschreiben wir die grundlegenden Vorgehensweisen zum Betrieb des Roboters und geben Beispiele zum Einrichten und Programmieren des Roboters. 2.1 Ablaufplan Die grundlegende Vorgehensweise zum Betrieb des Roboters ist in folgendem Ablaufplan dargestellt: Jeder einzelne Ablaufschritt wird nachfolgend beschrieben. 19 2.2 Überprüfung des Startzustandes (1) Stellen Sie sicher, daß die Transportsicherung des Armes entfernt wurde. (2) Schalten Sie die Spannungsversorgung der Steuerung ein. Stellen Sie sicher, daß auf den LED-Anzeigen auf der Vorderseite der Steuerung oder der Bedieneinheit keine ungewöhnliche Meldungen angezeigt werden. Der korrekte Startzustand ist folgender: * Die Zeilennummer/Status auf der Kontrollanzeige ist „0“. (3) Bei Verwendung eines Manipulators vom Typ BNA oder BNA-CL kann der Fehler 119 auftreten, wenn die Spannungszufuhr eingeschaltet wird. Das bedeutet, daß die Positionsdaten beim Ab- und Einschaltvorgang voneinander abweichen. G HINWEIS Wenn Sie den Arm manuell bewegt haben, nachdem die Spannungszufuhr ausgeschaltet, oder die Spannungszufuhr während des Betriebes unterbrochen wurde, ist dies kein Problem. Führen Sie den RESET-Befehl aus, um die Maschine zurückzusetzen. Wenn der Roboterarm mit Peripheriegeräten o. ä. kollidiert oder wenn es nach dem Austausch des Motors oder des Untersetzungsgetriebes zu einem Zusammenstoß mit anderen Geräten, etc. kommt, müssen die Achsen neu kalibriert werden. Weitere Informationen über das Kalibrieren entnehmen Sie bitte dem Kapitel 3.12 „Kalibrierung“. • Die LED-Anzeigen auf der Steuerung und der OPU-300 müssen wie folgt aufleuchten: LEDs E.STOP Steuerung S.ERR EIN/AUS Zustand Leuchtet nicht SICHERHEITSABSCHRANKUNG Blinkt MODUS-Anzeige (TEACH/AUTO) Eine Lampe leuchtet RESET Leuchtet MOTOR POWER NOT-AUS FEHLER OPU-300 SYSTEM FEHLER Leuchtet nicht PAUSE START SICHERHEITSABSCHRANKUNG HOME (4) 20 Blinkt Wenn Sie die Spannungszufuhr einschalten und der Startzustand weicht von den oben genannten Möglichkeiten ab, beseitigen Sie die Fehlerursache. 2.3 Einstellen der Datensicherung G HINWEIS Die Steuerung enthält wichtige Systemdaten. Stellen Sie sicher, daß es von den Originalsystemdaten eine Sicherungskopie gibt. Wie Sie die verschiedenen Systemdaten sichern: • SPEL Editor: Führen Sie im Befehlsmodus den Befehl MKVER aus. • SPEL für Windows: Führen Sie den Befehl [Tools]-[Wartung] aus, und klicken Sie auf die Schaltfläche MKVER im Menü „Wartung“. Durch o.g. Schritte werden die verschiedenen Einstellungsdaten im internen Dateispeicher der Steuerung als Datei gespeichert. Der Befehl SETVER kann genutzt werden, um die im Dateispeicher gespeicherten Daten zurückzusetzen. Zusätzlich können die im Dateispeicher gespeicherten Daten auf eine Diskette gespeichert werden. Weitere Informationen zu den Befehlen erhalten Sie in den Handbüchern zum SPEL Editor und SPEL für Windows. Das Gerät, das Programmiereinheit genannt wird, wird verwendet, um Punkte einzurichten und Programme zur Bedienung des Roboters zu erstellen. Im Normalfall wird zum Programmieren ein PC verwendet. Initialisierung des Bewegungsbereiches Der Bewegungsbereich wird mit Hilfe des Befehls RANGE eingestellt. Der Bewegungsbereich kann weder durch Ausschalten der Spannungszufuhr noch durch die Ausführung des Befehls VERINIT geändert werden. Wenn Sie die Standardwerte wiederherstellen wollen, müssen Sie die gespeicherten Originaldaten wieder einladen. Der Befehl RANGE ist ein wichtiger Befehl, um den Roboter gefahrlos zu bewegen. Weitere Informationen erhalten Sie im Kapitel 8.3 des Manipulator-Handbuches. 21 2.4 Einschalten der Motorspannungszufuhr Der Motor wird nicht alleine durch Einschalten der Spannungszufuhr in Betrieb gesetzt. Um ihn zu betreiben, ist es wichtig, daß er eingeschaltet ist. Um ihn einzuschalten, befolgen Sie eine der folgenden Methoden: (a) Von der Programmiereinheit: • • SPEL Editor: SPEL für Windows: Führen Sie im Befehlsmodus den Befehl MOTOR ON aus. Führen Sie den Befehl [Tools]-[Robotersteuerung] aus, und klicken Sie auf die Schaltfläche MOTOR ON im Menü „Robotersteuerung“. (b) Von der Bedieneinheit OPU-300 (Weitere Informationen erhalten Sie im Handbuch zur Bedieneinheit.) (c) Von dem Handprogrammiergerät TP-320/TP-320J (Weitere Informationen erhalten Sie im entsprechenden Handbuch.) (d) Anlegen des Power-On-Signals an die REMOTE3-Schnittstelle (Siehe Handbuch zur Steuerung.) (e) Führen Sie den Befehl MOTOR ON im Programm aus. Der Betriebszustand des Motors Der Betriebszustand des Motors wird wie nachfolgend dargestellt umgeschaltet: 22 2.5 Kalibrierung Die Kalibrierung muß nach dem Einschalten der Motoren ausgeführt werden, es sei denn, es handelt sich um Manipulatoren vom Typ BNA oder BNA-CL. Um sie auszuführen, befolgen Sie eine der folgenden Methoden: (a) Von der Programmiereinheit: • • SPEL Editor: SPEL für Windows: Führen Sie im Befehlsmodus den Befehl MCAL aus. Führen Sie den Befehl [Tools]-[Robotersteuerung] aus, und klicken Sie auf die Schaltfläche MCAL im Menü „Robotersteuerung“. (b) Von der Bedieneinheit OPU-300 (Weitere Informationen erhalten Sie im Handbuch zur Bedieneinheit.) (c) Von dem Handprogrammiergerät TP-320/TP-320J (Weitere Informationen erhalten Sie im entsprechenden Handbuch.) (d) Anlegen des MCAL-Signals an die REMOTE3-Schnittstelle als E/A-1.(Siehe Handbuch zur Steuerung.) (e) Führen Sie den Befehl MCAL im Programm aus. Wenn Sie den Befehl MCAL ausführen, während sich der Arm in der Nähe der Begrenzung des Bewegungsbereiches befindet, ist es u.U. möglich, daß der Arm den Bewegungsbereich überschreitet. Eine Kalibrierung ist dann nicht möglich. Sollte dies dennoch passieren, führen Sie den Befehl MOTOR OFF aus, schalten Sie die Steuerung aus, und bewegen Sie danach den Arm per Hand in die Mitte des Bewegungsbereiches zurück. Starten Sie dann den Ablauf erneut. (Siehe auch Kap. 9.1 „Kalibrierung“ im Manipulatorhandbuch.) 23 2.6 Einstellen der Home-(Standby-)Position Die Ursprungsposition kann auf eine optionale Position eingestellt werden. Der Arm wird mit Hilfe des Befehls HOME bewegt. Stellen Sie die Home-(Standby-)Position, falls notwendig, ein. Mit Hilfe des Befehls HOME in SPEL III Ver. 3. bewegen Sie den Roboter in die Home-(Standby-) Position. Bitte beachten Sie, daß bei Auslieferung des Systems keine Home-(Standby-)Position definiert ist. Wenn Sie also den HOME Befehl ausführen, ohne zuvor die Home-(Standby-)Position zu definieren, erscheint der Fehler 143. Die HOME LCD an der OPU-300 und der HOME-Ausgang an REMOTE2 leuchten, während der HOME-Befehl ausgeführt wird. Definieren der Home-(Standby-)Position Die Definition der Home-(Standby-)Position wird ausgeführt, indem Sie die Pulswerte der Position, die Sie als Home-(Standby-)Position festlegen möchten, mit Hilfe des Befehls HOMESET eingeben. Weitere Informationen über das Verhältnis Bewegungsbereich und Pulsbereiche erhalten Sie in Kap. 8 „Der Bewegungsbereich und die Roboterkoordinaten“ im Manipulatorhandbuch. • SPEL Editor: (a) <Beispiel> (b) Wenn Sie den Pulswert für die zu definierende Homeposition kennen, geben Sie den entsprechenden Pulswert mit Hilfe des Befehls HOMESET ein. HOMESET 0,0,0,0 Wenn der Pulswert nicht bekannt ist, können Sie ihn mit Hilfe der PLS Funktion einfach definieren. Gehen Sie wie folgt vor: 1 Führen Sie den Befehl SFREE aus. 2 Bewegen Sie den Arm manuell zu der Position, die Sie als Homeposition definieren wollen. 3 Geben Sie folgenden Befehl ein: HOMESET PLS(1),PLS(2),PLS(3),PLS(4) • SPEL für Windows: Führen Sie den Befehl [Project]-[Roboterpaprameter] aus, und geben Sie den Pulswert der Homeposition über das [HOMESET]-Bedienfeld im Menü „Roboterparameter“ ein. Armbewegungsreihenfolge bei Einstellung der Home-(Standby-)Position Der Befehl HORDR definiert die Reihenfolge der Achsenbewegung bei Ausführung des HOME-Befehls. Bei Auslieferung des Systems sind die HORDR-Werte wie folgt eingestellt. Nachdem die 3. Achse in Home-(Standby-)Position neu positioniert wurde, werden alle anderen Achsen gleichzeitig positioniert. <Standardwert> HORDR &B0010, &B1101,0,0 Wenn die Standard-Positionierungsreihenfolge für Ihre Anwendung unzureichend ist, können Sie die Werte mit Hilfe des Befehls HORDR ändern. • SPEL Editor: Geben Sie die Werte mit Hilfe des Befehls HORDR ein. • SPEL für Windows: Geben Sie die Werte im Menü [Project] im Dialogfenster [Robot Parameters] mit Hilfe des [HORDR]-Bedienfeldes ein. 24 2.7 Teaching und Programmieren Teaching Um einen Roboter zu betreiben, ist es wichtig, eine Zielposition einzurichten. Dieser Vorgang wird „Teaching“ („Einrichten“) genannt. Es gibt drei verschiedene Einrichtmethoden: REMOTE Teaching Teaching per JOG Tasten. Detaillierte Informationen erhalten Sie in Kapitel 3. Direktes Teaching Teaching mittels Positionierung des Roboterarms direkt durch den Anwender. Detaillierte Informationen erhalten Sie auf der nächsten Seite. MDI Teaching (Manuelle Dateneingabe) Teaching durch Eingabe numerischer Positionsdaten. Detaillierte Informationen erhalten Sie im Abschnitt über den Befehl „Pn=Positionsdefinition“ im SPEL III Referenzhandbuch. Für das Teaching wird ein PC oder ein Handprogrammiergerät (TP-320/TP-320J) verwendet. Wenn Sie ein Handprogrammiergerät einsetzen, erhalten Sie weiterführende Informationen im Handbuch über das Handprogrammiergerät. Wenn Sie einen PC mit SPEL Editor einsetzen, erhalten Sie weiterführende Informationen im Kapitel 6 des SPEL Editor-Handbuches. Wenn Sie einen PC mit SPEL für Windows einsetzen, erhalten Sie weiterführende Informationen im Abschnitt [JOG und Teach] des [TOOLS]-Menüs des SPEL für Windows-Handbuches. 25 Beispiele für Einrichtmethoden 1. Direktes Teaching Mit Hilfe des Befehls SFREE werden die Motoren ausgeschaltet, und der Arm kann per Hand bewegt werden. Bewegen Sie die Arme in eine Zielposition, und speichern Sie diese. Schalten Sie dann mit Hilfe des Befehls SLOCK die Motorspannung ein. • 26 Mit SPEL Editor: 1 Schalten Sie die Steuerung ein, und führen Sie den Befehl MOTOR ON im Programmiermodus des SPEL Editors aus. >MOTOR ON 2 Führen Sie den Befehl MCAL im Programmiermodus des SPEL Editors aus. (Überspringen Sie diesen Schritt, wenn Sie einen Roboter vom Typ BNA oder BNA-CL einsetzen.) >MCAL 3 Führen Sie den Befehl SFREE aus. Alle Achsen werden freigeschaltet. >SFREE 4 Bewegen Sie die Arme per Hand in die gewünschten Positionen. Wenn die 3. Achse mit einer elektromagnetischen Bremse ausgestattet ist, bewirkt das Ausschalten des Motors, daß die Bremse greift und die 3. Achse gesperrt ist. Um die 3. Achse bewegen zu können, halten Sie den Bremsfreigabetaster gedrückt. 5 Richten Sie die aktuelle Position als P1 ein. >P1=P* 6 Bewegen Sie die Arme per Hand in die nächsten gewünschten Positionen. 7 Richten Sie die aktuelle Position als P2 ein. >P2=P* 8 Durch obige Schritte haben Sie die Positionen eingerichtet. Schalten Sie die Motoren mit SLOCK wieder ein. >SLOCK 9 Bewegen Sie den Roboter zur Überprüfung mit Hilfe von JUMP zu P1. Stellen Sie vorher sicher, daß sich kein Hindernis in der Nähe der Zielposition befindet. >JUMP P1 10 Bewegen Sie den Roboter mit Hilfe von JUMP zu P2. >JUMP P2 • Mit SPEL für Windows: 1 Schalten Sie die Steuerung und die Motoren ein. Wenn Sie den Befehl [Tools][Robotersteuerungs-Bedienfeld] ausführen, wird das Robotersteuerungs-Bedienfeld angezeigt. Wählen Sie den Manipulator als Punktgerät. Klicken Sie auf die Schaltfläche <MOTOR ON>. Eine Meldung erscheint. Folgen Sie den dargestellten Anweisungen. 2 Klicken Sie auf die Schaltfläche <MCAL>. Wenn die Kalibrierung beendet ist, klicken Sie auf die Schaltfläche <Schließen>. (Überspringen Sie diesen Schritt, wenn Sie einen Roboter vom Typ BNA oder BNA-CL einsetzen.) 3 Wenn Sie den Befehl [Tools]-[Jog und Teach] ausführen, wird das [Jog und Teach]- Menü angezeigt. Schalten Sie die Motoren aller Achsen mit Hilfe der [Achsen frei]-Schaltfläche aus. 4 Bewegen Sie die Arme per Hand in die gewünschten Positionen. Wenn die 3. Achse mit einer elektromagnetischen Bremse ausgestattet ist, bewirkt das Ausschalten des Motors, daß die Bremse greift und die 3. Achse gesperrt ist. Um die 3. Achse bewegen zu können, halten Sie den Bremsfreigabetaster gedrückt. 5 Richten Sie die aktuelle Position als P1 ein. Klicken Sie auf die Schaltfläche <Punktschieber rechts> und ändern Sie die aktuelle Position in P1. Klicken Sie auf die Schaltfläche <TEACH P1>. 6 Bewegen Sie die Arme per Hand in die nächsten gewünschten Positionen. 7 Richten Sie die aktuelle Position als P2 ein. Klicken Sie auf die Schaltfläche <Punktschieber rechts> und ändern Sie die aktuelle Position in P2. Klicken Sie auf die Schaltfläche <TEACH P2>. 8 Durch obige Schritte haben Sie die Positionen eingerichtet. Schalten Sie die Motoren mit Hilfe der [Achsen frei]-Schaltfläche wieder ein. 9 Bewegen Sie den Roboter zur Überprüfung mit Hilfe von JUMP zu P1. Stellen Sie vorher sicher, daß sich kein Hindernis in der Nähe der Zielposition befindet. Tragen Sie 1 im Textfeld [Punkt #:] ein, und klicken Sie auf die Schaltfläche <JUMP P1>. 10 Tragen Sie 2 im Textfeld [Punkt #:] ein, und klicken Sie auf die Schaltfläche <JUMP P2>. Klicken Sie auf die Schaltfläche <Schließen>, und verlassen Sie das [Jog und Teach]Menü. 27 Beispielprogrammierung Erstellen Sie ein einfaches Programm, das die Positionsdaten verwendet, die Sie eingerichtet haben. Es handelt sich hierbei um ein kurzes Programm, das jedoch den Roboter veranlaßt, zwischen Punkt 1 (P1) und Punkt 2 (P2) hin- und herzuverfahren. Sollten Sie mehr als zwei Punkte eingerichtet haben, geben Sie diese nach Zeile 30 ein. Geben Sie folgendes ein: 10 FUNCTION MAIN 20 JUMP P1 30 JUMP P2 40 GOTO 20 50 FEND • Mit SPEL Editor: 1 Geben Sie das oben dargestellte Programm im Programmiermodus ein. Geben Sie zusätzlich am Ende jeder Zeile [Return] (Enter) ein. 2 Um sicherzustellen, daß jede Zeile eingegeben wurde, können Sie das Programm mit dem Befehl LIST anzeigen lassen. >LIST 10 FUNCTION MAIN 20 JUMP P1 30 JUMP P2 40 GOTO 20 50 FEND • Mit SPEL für Windows: 1 Erzeugen Sie ein neues Projekt. Führen Sie den Befehl [Project]-[Neu] aus. Geben Sie den Namen des Projekts in der Eingabezeile [New Project Name] ein. Z. B.: FIRSTAPP. Klicken Sie dann auf <OK>. 2 28 Geben Sie das oben dargestellte Programm im Fenster [MAIN.PRG] ein. 2.8 Ausführen eines Programms Kompilieren Ein Programm, wie dieses, welches wir gerade erstellt haben, nennt man „Quellprogramm“. Das Programm, das von der Steuerung ausgeführt wird, heißt „Objektprogramm“. Es unterscheidet sich vom Quellprogramm. Das Quellprogramm muß in ein Objektprogramm geändert werden. Diesen Vorgang nennt man kompilieren. Wenn der Kompiliervorgang beendet ist, kann das Programm per PC und Bedieneinheit ausgeführt werden. • Mit SPEL Editor: Führen Sie den Befehl COM im Programmiermodus aus. >COM COMPILE END • Mit SPEL für Windows: Führen Sie den Befehl [Project]-[Build] aus. Das Fenster [Project Build Status] erscheint, und die einzelnen Kompilierprozeduren werden angezeigt. (Das erzeugte Programm wird zur Steuerung übertragen und kompiliert.) Ausführen des Programms mit dem PC Führen Sie das Programm aus. • Mit SPEL Editor: Führen Sie den Befehl XQT im Programmiermodus aus. >XQT • Mit SPEL für Windows: Wenn Sie den Befehl [Run]-[Start], ausführen wird das Fenster [Run] angezeigt. Klicken Sie dann auf die Schaltfläche <Start maingrp: MAIN>, wird das Programm ausgeführt. Um die Ausführung zu beenden, klicken Sie auf die Schaltfläche <Stop all> im [Run]Fenster. 29 Ausführen des Programms mit der Bedieneinheit 1 Stellen Sie den Bedienmodus der Steuerung auf AUTO. Stellen Sie hierzu den Modusauswahlschalter der Bedieneinheit in die Position AUTO. 2 Schließen Sie die Sicherheitsabschrankung. 3 Drücken Sie den START-Schalter auf der Bedieneinheit. 4 Um das Programm anzuhalten, drücken Sie zuerst den PAUSE-Schalter auf der Bedieneinheit (temporärer Halt) und dann den RESET-Schalter. Die LEDs auf jedem Schalter zeigen folgende Zustände an: LED Zustand RESET Programm ist beendet. (Wenn der Schalter während eines Pausezustandes gedrückt wurde.) PAUSE Kurzfristige Programmunterbrechung. START Ausführung des Programms. (Nach einer kurzfristigen Programmunterbrechung.) Ausführen des Programms über REMOTE3 Sie können die E/A-1-Schnittstelle als REMOTE 3-Schnittstelle verwenden. So können Sie diese Schnittstelle (als Haupt-REMOTE) im AUTO-Modus anstelle der Bedieneinheit OPU-300/OPU-320 verwenden. Auf diese Art können verschiedene Bedienmöglichkeiten genutzt werden. Wenn Sie die E/A-1 an der Rückseite der Steuerung als REMOTE3 benutzen wollen, müssen Sie folgende Schritte ausführen: 1 Stellen Sie Bit 1 des Softwareschalters SS1 auf EIN. 2 Stellen Sie das notwendige Bit als REMOTE3 vom Eingang/Ausgang der E/A-1 ein. *Das Einrichten des Softwareschalters und der REMOTE3 werden über den SPEL Editor bzw. SPEL für Windows vorgenommen. Weitere Informationen erhalten Sie in den entsprechenden Handbüchern. 3 Schalten Sie die Spannungszufuhr der Steuerung aus und sofort wieder ein. 4 Geben Sie ein START-Signal über die REMOTE3 ein, und führen Sie das Programm aus. Um das Programm anzuhalten, geben Sie zuerst ein PAUSE-Signal (temporärer Halt) und dann das RESET-Signal ein. * Die Pinbelegung und Zeitliniendiagramme entnehmen Sie bitte dem Kapitel 7 „E/AREMOTE-Einstellungen (REMOTE 3)“ des Handbuches über die Steuerung. 30 2.9 Auswahl des Programms zum Ändern von Zeilen Wenn Sie Zeilen eines Programms ändern wollen, müssen Sie das ganze Programm ändern. D. h., die entsprechenden ausführbaren Dateien (Objektdatei und Symboldatei) müssen ausgewählt werden. Wie Sie das entsprechende Programm, das Sie ändern wollen, auswählen können, wird nachfolgend beschrieben. Auswahl des Programms per REMOTE-Eingang Das entsprechende Programm muß im Dateispeicher vorhanden sein, um es auswählen und ändern zu können. 1) Übertragen Sie eine ausführbare Datei in den Dateispeicher. Sichern Sie ein Quellprogramm und eine Punktdatei mit Hilfe des Befehls DSAVE in den Dateispeicher, und führen Sie dann den Befehl COMPILE aus, um ein Objektprogramm und eine Symboldatei zu erzeugen. <Beispiel> >DSAVE“01TEST“ >COMPILE“01TEST“ COMPILE END > Wenn die ersten zwei Zeichen des Programmnamens Zahlen sind, ist dies die „Programmnummer“. Die Programmnummer wird zur Auswahl des Programms verwendet. Z. B. mit Hilfe der Pfeiltasten é ê (OPU-300) oder durch Eingabe dieser Nummer über die REMOTE3. 2) Bringen Sie die ausführbare Datei in den Hauptspeicher. Die Methoden hierfür werden nachfolgend beschrieben: • Bei Verwendung der OPU-300: Die ausführbaren Dateien werden mit Hilfe des Dateiauswahlmenüs 1 oder 2 ausgewählt. Es ist möglich, alle im Dateiauswahlmenü ausgewählten ausführbaren Dateien in den Hauptspeicher zu übertragen. Weitere Informationen entnehmen Sie bitte dem Handbuch über die Bedieneinheit OPU-300. • Bei Verwendung der REMOTE3: Die ausführbaren Dateien werden mit Hilfe der Programmnummern ausgewählt. Es sind zwei verschiedene Wege zur Eingabe der Programmnummern möglich: die Binärmethode und die Auf/Ab-Zähl-Methode. Die Binärmethode ist leichter zu steuern. Es ist mit dieser Methode jedoch nur möglich, max. 15 Dateien (Programmnummer 01 bis 15) auszuwählen. Wenn es notwendig sein sollte, mehr als 15 Dateien auszuwählen, verwenden Sie bitte die Auf/Ab-Zähl-Methode. Wenn START nach Einrichten des Eingangssignals der Programmnummer eingegeben wird, werden die ausführbaren Dateien in den Hauptspeicher übertragen und das Programm wird gestartet. Weitere Informationen erhalten Sie im Handbuch über die Steuerung in Kapitel 7.4 „Zeitliniendiagramme (Zeittabellen)“ im Abschnitt „Zeitliniendarstellung bei Programmausführung“. 31 Verwendung des CHAIN-Befehls Auch mit Hilfe des Befehls CHAIN können Sie Objektprogramme ändern. Sie können diesen Befehl nicht verwenden, wenn Sie mit Hilfe des REMOTE-Eingangs Programmnummern festlegen. Der CHAIN-Befehl wurde zum Ändern von Daten während der Programmausführung entworfen. Der CHAIN-Befehl kann das laufende Programm durch ein im Dateispeicher ausgewähltes Programm ersetzen. Weitere Informationen erhalten Sie im Kapitel 2.1 „Erzeugen eines umfangreichen Programms“. 2.10 Handhabung von Dateien • Mit SPEL Editor: Das erzeugte Programm und die Positionsdaten werden im Hauptspeicher der Steuerung gespeichert. Es ist immer nur möglich, eine Programmnummer und auch nur eine Nummer für die Positionsdatengruppe im Hauptspeicher zu halten. Daher müssen Sie bei dem Erzeugen eines neuen Programmes und der Positionsdaten beides aus dem Hauptspeicher in den Dateispeicher übertragen. (Siehe auch Kapitel 3.4 „Sichern und Laden von Dateien“ im SPEL Editor-Handbuch.) Lesen Sie bitte die Informationen zu den nachfolgend aufgeführten Befehlen, wenn Sie den SPEL Editor verwenden: DSAVE Speichert das Quellprogramm und die Positionsdatendateien vom Haupt- in den Dateispeicher. DLOAD Lädt ausgewählte Dateien in den Hauptspeicher. DIR, FILES Zeigt die Informationen über die Dateien des Dateispeichers an. COPY Kopiert eine Datei KILL, DEL Löscht Dateien • Mit SPEL für Windows: Bei Verwendung von SPEL für Windows werden alle Programm- und Positionsdatendateien im PC gespeichert. Weitere Information erhalten Sie im SPEL für Windows Handbuch. 32 3. JOG-Betrieb Beim REMOTE Teaching wird der Manipulator in die gewünschte Position verfahren, indem die JOGTaste des PCs und des Handprogrammiergerätes gedrückt werden, ist die gewünschte Position erreicht, wird diese eingerichtet. Das Verfahren der verschiedenen Achsen mit der JOG-Taste wird „JOGVerfahren“ genannt. Im JOG-Verfahren können Sie die Richtung, in der sich der Manipulator und die Methode, wie er sich bewegen soll, ändern. Dazu stellen Sie „benutzte Koordinaten im JOG-Verfahren“ oder „JOGVerfahrmethode“ ein, während Sie die JOG-Taste gedrückt halten. Wählen Sie die besten Einstellungen für Ihre Anwendung, um ein wirkungsvolles Einrichten zu gewährleisten. Wenn Sie ein TP-320/TP-320J verwenden, erhalten Sie weitere Informationen zum Einrichten in Kapitel 4 in diesem Handbuch. 3.1 Das verwendete Koordinatensystem im JOG-Verfahren Entscheiden Sie bitte, welches der Koordinatensysteme Sie beim JOG-Verfahren verwenden wollen. Die Verfahrrichtung der Achsen ist abhängig vom gewählten Koordinatensystem. Koordinatensystem Beschreibung BASE Basis-Koordinatensystem. Das JOG-Verfahren wird gemäß der Basiskoordinaten des Manipulators (BASE0) ausgeführt. Da dies das Koordinatensystem ist, das fest im Manipulator eingerichtet ist, können Sie die Richtung jeder Koordinatenachse auf einen Blick sehen. TOOL Tool-Koordinatensystem. Wählen Sie ein Koordinatensystem, das mit dem ToolKoordinatensystem übereinstimmt, wenn angenommen wird, daß das Werkzeug (Tool) am Ende des Greifer befestigt ist. Die Richtung jeder Koordinatenachse ist abhängig von der Rotation des Greifers. JOINT Joint-Koordinatensystem. Ausführen des JOG-Verfahrens für jedes Manipulatorgelenk. Weitere Informationen zur Auswahl der Koordinatensysteme erhalten Sie im SPEL Editor Handbuch in Kapitel 6 und im SPEL für Windows Handbuch in Kapitel 3. Erläuterungen zu jedem Koordinatensystem finden Sie auf den nächsten Seiten. 33 JOG-Verfahren im Basis-Koordinatensystem Wenn das Basis-Koordinatensystem ausgewählt ist, kann die Verfahrrichtung jeder Achse entsprechend des Basis-Koordinatensystems des Manipulators (BASE0) ausgeführt werden. Innerhalb des Basis-Koordinatensystems bewegt sich der Manipulator gemäß des Koordinatensystems, das fest im Manipulator eingerichtet ist. So bleibt immer eine feste Beziehung zwischen der JOGRichtung jeder Achse und der Ausrichtung des Manipulatorsockels erhalten. Da es so einfacher ist, die JOG-Richtung auf einen Blick zu erkennen, ist dies das am häufigsten eingesetzte Koordinatensystem. Verschiedene Manipulatortypen haben verschiedene Basis-Koordinatensysteme. Weitere Informationen über das verwendete Basis-Koordinatensystem erhalten Sie in dem Handbuch über Ihren Manipulator. Allgemein sieht das Koordinatensystem wie folgt aus: JOG-Verfahren im Basis-Koordinatensystem G HINWEIS 34 Bitte überprüfen Sie das Koordinatensystem, wenn das Basis-Koordinatensystem durch Ausführung der Befehle BASE0 oder LOCAL 0 verändert worden ist. JOG-Verfahren im Tool-Koordinatensystem G HINWEIS Wenn Sie das Tool-Koordinatensystem ausgewählt haben, wird die Richtung jeder Bewegung, die durch die JOG-Taste ausgeführt wird, festgelegt durch die Ausrichtung des Greifers. Auch wenn der Greifer rotiert, wird das JOG-Verfahren durch feste Koordinaten für die Ausrichtung des Greifers ausgeführt. Es kann daher für Düsen oder ähnliches, mit gleicher Richtung, eingesetzt werden. Der Ursprungspunkt des Tool-Koordinatensystems kann auch auf einen Punkt, der sich nicht im Mittelpunkt der 4. Achse (rotierende Achse) befindet, eingestellt werden. Der Ursprungspunkt des ToolKoordinatensystems wird mit dem TLSET-Befehl mittig auf das Werkzeug eingestellt. JOG-Verfahren im Tool-Koordinatensystem G HINWEIS Weitere Informationen über das Tool-Koordinatensystem erhalten Sie in dem SPEL III Referenzhandbuch in den jeweiligen Abschnitten über die Befehle TOOL und TLSET. JOG-Verfahren im Joint-Koordinatensystem Wenn Sie das Joint-Koordinatensystem ausgewählt haben, entspricht jede JOG-Taste jedem Manipulatorgelenk. JOG-Verfahren im Joint-Koordinatensystem 35 3.2 JOG-Bewegung Die Strecke der JOG-Bewegung kann verändert werden. Wir empfehlen, daß Sie zuerst den großen Wert einstellen und den Arm nahezu in Zielposition bringen und dann den Arm bewegen, so daß Sie den kleinen Wert nach und nach einstellen können, bis Sie die genaue Zielposition erreicht haben. Die Einheit für die Strecke der JOG-Bewegung ist abhängig von dem eingesetzten Koordinatensystem für das JOG-Verfahren. 1. Achse 2. Achse 3. Achse 4. Achse (X/J1) (Y/J2) (Z/J3) (U/J4) Basis-Koordinatensystem mm mm mm Grad Tool-Koordinatensystem mm mm mm Grad Joint-Systemeinheit (direkt aktive Achse) mm mm mm - Joint-Systemeinheit (rotierende Achse) Grad Grad Grad Grad Weitere Informationen zur Stecke des JOG-Verfahrens erhalten Sie im SPEL Editor Handbuch in Kapitel 6 und im SPEL für Windows Handbuch in den Kapiteln 3 und 8. G HINWEIS Wenn Sie den SPEL Editor und das Handprogrammiergerät TP-320/TP-320J zusammen einsetzen, lesen Sie bitte vorher das Kapitel 4 im Handbuch des Handprogrammiergeräts TP-320/TP-320J. Beachten Sie bitte, daß die Strecke des JOG-Verfahrens, die mit dem SPEL Editor eingestellt wurde, in den Wert geändert wird, der mit dem Handprogrammiergerät eingegeben worden ist. Wenn Sie SPEL für Windows und das Handprogrammiergerät TP-320/TP-320J zusammen einsetzen, lesen Sie bitte vorher das Kapitel 7 im SPEL für Windows Handbuch. Wenn Sie die JOG-TASTE ununterbrochen gedrückt halten, kann der Arm hinter den Bewegungsbereich gelangen. Dann wird ein NOT-AUS ausgelöst und der Motor angehalten. Sollte dies passieren, ergreifen Sie bitte die folgenden Maßnahmen: 36 1 Bringen Sie den Arm per Hand zurück in den Bewegungsbereich. 2 Drücken Sie die RESET-Taste, um den Fehler zu löschen. 3 Führen Sie den Befehl MOTOR ON aus. Dies schaltet den Motor ein und bringt den Roboter zurück in die Grundstellung. GRUNDLAGEN 37 1. Bewegungsgeschwindigkeit 1.1 Beschleunigungs-/Verzögerungsgeschwindigkeit Wenn Sie den Befehl für das Bewegen des Roboters eingeben, verändert sich die Bewegung, wie unten dargestellt: Die Geschwindigkeitskurve wird durch die Geschwindigkeit und die Beschleunigungs/Verzögerungseinstellung bestimmt. Befehle, die sich auf die Geschwindigkeit beziehen, werden abhängig vom Bewegungsbefehl in zwei Kategorien aufgeteilt: Geschwindigkeit Beschleunigung/Verzögerung SPEED ACCEL (%) (%) SPEED ACCELS (mm/s) (mm/s2) Entsprechende Bewegungsbefehle JUMP GO PTP Bewegung PASS MOVE ARC CP Bewegung CVMOVE * Einheit der Geschwindigkeit und Beschleunigung/Verzögerung in Klammern (). PTP-Befehle (Punkt-zu-Punkt) werden häufig für pick-and-place-Anwendungen eingesetzt. Bei dieser Art von Anwendung ist höchstmögliche Bewegung zur Zielposition erforderlich. Daher ist die Geschwindigkeitseinstellung in mm/s nicht so wichtig. Im Fall der horizontal ausgerichteten Roboter (SCARA) weichen die zulässige maximale Geschwindigkeit und die Beschleunigung/Verzögerung auf Grund der Bewegungspositionen innerhalb des Bewegungsbereiches voneinander ab. Die SPEED und ACCEL Werte werden daher in Prozent angegeben, während die maximal zulässige Geschwindigkeit mechanisch gesehen als 100 angenommen wird. CP-Befehle (Kontinuierliche Wege) werden oft für Verpackungsanwendungen eingesetzt. Verpackungsanwendungen benötigen eine konstante Geschwindigkeitsbewegung ohne Bezug auf die aktuelle oder Zielposition. Die SPEED und ACCELS Werte werden daher in mm/s und mm/s2 angegeben. Weitere Informationen über die Befehle SPEED, SPEEDS, ACCEL und ACCELS erhalten Sie im SPEL III Referenzhandbuch. 38 1.2 Hochgeschwindigkeit im Teach-Modus Wenn die Steuerung zum Programmieren oder Einrichten auf den Teach-Modus eingestellt ist, schaltet der Roboter in der Regel in den LP-Modus (Low Power-Modus). Dieser Modus reduziert die Motorleistung. Der Roboter schaltet aus Sicherheitsgründen automatisch in den „Low Power“-Modus und arbeitet in einer kontrollierten, langsameren Geschwindigkeit, wenn er sich im TEACH-Modus befindet. Es wurden daher die folgenden drei Blockaden eingebaut, und erst wenn diese drei Blockaden ausgeschaltet werden, ist es möglich, die programmierte Anwendung mit einer höheren Geschwindigkeit wieder aufzunehmen. • Blockierung durch die Sicherheitsabschrankung • Blockierung durch den POWER-(LP)-Befehl • Blockierung durch den TSPEED-Befehl Blockierung durch die Sicherheitsabschrankung Ist die Sicherheitsabschrankung geöffnet (mit anderen Worten, wenn der Eingang REMOTE1 der Sicherheitsabschrankung freigeschaltet ist), bleibt der Roboter im Low Power-Modus. Solange die Sicherheitsabschrankung geöffnet bleibt, arbeitet der Roboter nur in der Geschwindigkeit, die durch die Einstellungen festgesetzt oder mit Hilfe des Befehls TSPEED eingegeben wurde. Bevor der Roboter in seiner programmierten Geschwindigkeit weiter arbeiten kann, muß die Sicherheitsabschrankung geschlossen werden. Weiter Informationen entnehmen Sie bitte den Kapiteln 1.4 in der Einleitung und 4 im Handbuch über die Steuerung. Blockierung durch den POWER-(LP)-Befehl Wenn der Befehl POWER LOW (LP ON) ausgeführt wird, schaltet der Roboter in den Low PowerModus. Damit der Roboter wieder in seiner programmierten Geschwindigkeit arbeiten kann, muß der Befehl POWER HIGH (LP OFF) eingegeben werden. Wenn der Roboter vom AUTO in den TEACH-Modus geschaltet wird, schaltet er automatisch in den Low Power-Modus. Auch wenn dann die Sicherheitsabschrankung geschlossen wird, bleibt er im Low Power-Modus und arbeitet mit der eingestellten Geschwindigkeit, die abhängig vom Robotermodell variiert. Aus Sicherheitsgründen wird der Low Power-Modus im Teach-Modus immer eingeschaltet, d.h. bei folgenden Operationen wird der Motor-Power-Modus standardmäßig auf LOW gesetzt. Dabei werden die Einstellungen für die Geschwindigkeit und die Beschleunigung auf die Standardwerte zurückgesetzt (initialisiert). Informationen zu diesen Standardwerten erhalten Sie in den Spezifikationen der Manipulatoren, da diese modellabhängig sind. 39 Unter folgenden Umständen wird in den Low Power-Modus geschaltet: • Wenn ein Fehler auftritt, der nur durch RESET oder Aus- und Einschalten der Spannungszufuhr rückgängig gemacht werden kann. • Wenn vom Auto- in den Teach-Modus geschaltet wird. • Wenn der STOP-Taster oder die Tastenkombination Ctrl + C gedrückt wird. • Wenn der Befehl MOTOR ON ausgeführt wird. Blockierung durch den TSPEED-Befehl Wie bereits vorher erwähnt, kann der Roboter im TEACH-Modus mit niedriger Geschwindigkeit betrieben werden, auch wenn die Sicherheitsabschrankung geöffnet ist, um das Einrichten zu ermöglichen. So ist es möglich, daß derjenige, der den TEACH-Vorgang ausführt, nahe an den Roboter herankommt. Der Roboter wird normalerweise im TEACH-Modus im LOW-POWER-Status betrieben, um die Sicherheit des Bedieners zu gewährleisten. Der Befehl TSPEED (TSPEEDS) wird verwendet, um die Geschwindigkeit im Teach-Modus, die mit dem Befehl SPEED (SPEEDS) eingegeben wurde, nochmals zu reduzieren. Diese Geschwindigkeit wird, auch wenn die Spannungszufuhr der Steuerung ausgeschaltet wird, im Speicher behalten. 40 1.3 Beschleunigungs-/Verzögerungssteuerung der 3. Achse mit dem JUMP-Befehl Die grundlegende Bewegung des JUMP-Befehls wird nachfolgend dargestellt: Die Geschwindigkeit und die Beschleunigung/Verzögerung wirken sich auf alle oben dargestellten Bewegungen aus. Da die Beschleunigung/Verzögerung der Bewegungsgeschwindigkeit der 3. Achse wichtig ist für pick-and-place-Anwendungen, müssen Sie die geeignetste Geschwindigkeit einstellen. Z. B., wenn der Roboter einen Gegenstand an der aktuellen Position aufnimmt und ihn an der Zielposition absetzt, soll die Beschleunigung und die horizontale Bewegung der 3. Achse schnell und das Plazieren, also die Verzögerung, langsam vonstatten gehen. Damit diese Anwendung zufriedenstellend ausgeführt werden kann, lassen sich die Beschleunigung/Verzögerung und die Geschwindigkeit bei der horizontalen Bewegung einzeln einstellen. Die Bewegungsgeschwindigkeit der 3. Achse läßt sich durch drei Parameter des Befehls SPEED einstellen. SPEED [A],[B],[C] Format: A: Spezifikationswert der Geschwindigkeit B: Aufwärtsgeschwindigkeit der 3. Achse C: Abwärtsgeschwindigkeit der 3. Achse Die Beschleunigungs-/Verzögerungsgeschwindigkeit der 3. Achse läßt sich durch sechs Parameter des Befehls ACCEL einstellen. ACCEL [A],[B],[C],[D],[E],[F] Format: A: Spezifikationswert der Beschleunigungsgeschwindigkeit B: Spezifikationswert der Verzögerungsgeschwindigkeit C: Erhöhen der Beschleunigungsgeschwindigkeit der 3. Achse D: Erhöhen der Verzögerungsgeschwindigkeit der 3. Achse E: Verringern der Beschleunigungsgeschwindigkeit der 3. Achse F: Verringern der Verzögerungsgeschwindigkeit der 3. Achse <Beispiel> 1000 FUNCTION MAIN 1010 SPEED 100,80,20 1020 ACCEL 100,100,100,100,80,20 M 2000 JUMP P1 M 3000 FEND 41 1.4 Transport von Objekten, die das Nominalgewicht überschreiten Die Geschwindigkeit und die Einstellungen für Verzögerung und Beschleunigung variieren in Abhängigkeit von der am Ende des Greifers angebrachten Last. Um geeignete Werte für die Geschwindigkeit, Verzögerung und Beschleunigung einzustellen, sollten Sie zuerst das Gewicht der zu transportierenden Objekte messen und es dann mit Hilfe des WEIGHTBefehls eingeben. Die einzugebende Last (Greifergewicht) setzt sich zusammen aus dem Gewicht des Greifers und des zu transportierenden Objekts. WEIGHT [Greifergewicht],[Armlänge] Format: Die Armlänge ist die Strecke vom Rotationsmittelpunkt der 2. Achse zur Mitte des Schwerpunkts des Greifers (inkl. zu transportierendes Objekt). Handelt es sich bei der Mitte des Schwerpunkts um den Mittelpunkt der 3. Achse, muß es nicht extra eingegeben werden. Es muß aber angegeben werden, wenn es sich bei dem eingesetzten Roboter nicht um ein horizontal ausgerichtetes Modell handelt. Wird der WEIGHT-Befehl ausgeführt, errechnet die Steuerung für das eingegebene Gewicht die maximale Geschwindigkeit und die ausführbaren Werte für Verzögerung und Beschleunigung. Wenn mit Hilfe des Befehls SPEED oder ACCEL ein Wert von 100 eingegeben worden ist, wird dieser Wert unter Umständen eingehalten, wenn die Berechnung der Steuerung ergibt, daß es kein mechanisches Hindernis gibt. G HINWEIS Weitere Informationen, wie Sie im Hinblick auf das Greifergewicht den Wert für den WEIGHT-Befehl richtig einstellen, erhalten Sie in Kapitel 5 im Manipulatorhandbuch. Die Verwendung des WEIGHT-Befehls wird im SPEL III Handbuch erläutert. Warnung 42 Transporte von Objekten, die das Nominalgewicht, bei standardmäßig eingestellten Werten von Last, Geschwindigkeit und Verzögerung/Beschleunigung, weit überschreiten, können nicht nur einen Fehler wegen Überlastung, sondern auch Unfälle hervorrufen. 2. Programmierung 2.1 Grundlegende Bestandteile eines Programms Die Grundeinheit eines Programms wird „Zeile“ genannt, und eine Anzahl von Zeilen macht ein Programm aus. Die Zeilen selbst bestehen aus Zeilennummern und Anweisungen. Ein Programm beginnt immer mit der 1. Zeile „FUNCTION MAIN“ und endet mit der letzten Zeile „FEND“. 10 FUNCTION MAIN <Beispiel> M 1000 FEND Alles, was von FUNCTION bis FEND steht, wird eine Funktion genannt. Nach Eingabe von FUNCTION ist ein Name, im Beispiel MAIN, erforderlich. SPEL III verfügt über 16 multi-tasking Ressourcen. Multi-tasking bezieht sich auf Prozesse, in denen einzelne Tasks gleichzeitig oder der Reihe nach ausgeführt werden. Ein multi-tasking Programm wird beschrieben durch eine Fortsetzung der Funktion. Die Stellen, an denen verschiedene Funktionen ausgeführt werden, werden Tasks genannt, und die Steuerung verfügt über 16 dieser Tasks (Nr. 1-16). Die maximale Anzahl von Funktionsnummern in einem Programm kann 69 betragen. Die Task kann ausgeführt und wenn notwendig angehalten werden. Weitere Informationen erhalten Sie im Kapitel „Multi-tasking“ in diesem Handbuch. Die allererste Funktion in einem Programm ist die Hauptfunktion und wird immer als Task 1 ausgeführt. Alle anderen Funktionen müssen eine Funktionsnummer enthalten, die mit Hilfe des XQTBefehls in der Hauptfunktion festgelegt werden müssen. 10 20 30 M 980 990 1000 M 1980 1990 2000 M 3000 FUNCTION Function 1 XQT !2, Function 2 XQT !5, Function 3 678 <Beispiel> Hauptfunktion FEND ‘-----------------FUNCTION Function 2 FEND ‘-----------------FUNCTION Function 3 FEND 43 Funktionsname Im Folgenden werden die Beschränkungen bei der Verwendung von Funktionsnamen aufgeführt: • Als verwendbare Zeichen sind alle alphanumerischen Zeichen und Unterstriche ( _ ) zugelassen. • Der Funktionsname darf aus max. acht Zeichen bestehen. • Das erste Zeichen muß ein Buchstabe (außer P) sein. • Reservierte Worte (z. B. Befehle, Anweisungen und Funktionen) dürfen nicht verwendet werden. Auch wenn Sie reservierte Worte durch Unterstriche oder Zahlen ergänzen oder verändern, werden sie trotzdem als reservierte Worte erkannt. Kommentare Um ein Programm verständlicher zu machen, können Sie, wenn notwendig, Kommentare einfügen. Das Symbol, das einen Kommentar einleitet ist das Apostroph ‘ . Alle Zeichen, die auf ein Apostroph folgen, werden als Kommentar berücksichtigt. Bei Ausführung des Programms werden alle Kommentare, die auf ein Apostroph folgen, außer Acht gelassen. 64748 Als Kommentar können Sie jedes Zeichen benutzen, allerdings darf der Kommentar, einschließlich Zeilennummer, Anweisung und Text, 79 Zeichen nicht überschreiten. <Beispiel> 10 FUNCTION MAIN 20 ‘ ************************ 30 ‘ * HANDLER-1 * Kommentarzeilen 40 ‘ *programmiert von SATO * 50 ‘ ************************ 60 ‘ GOSUB 1000 ←GOSUB wird nicht ausgeführt! 70 SPEED 100 ;ACCEL 50,100 80 JUMP P10 ;ON 1 ;WAIT 0,2 ‘Nimmt ←Kommentar Objekt von Einzug1 auf. Mehrfachanweisung Wird das Semikolon (;) benutzt, können mehrere Befehle in eine Zeile geschrieben werden. Dies wird Mehrfachanweisung genannt. Mit Hilfe der Mehrfachanweisungen können Programme leichter gelesen werden, und die Programmgröße wird verringert. Auch ist die Ausführzeit geringer. Werden jedoch unwichtige Mehrfachanweisungen eingegeben, kann das Programm unübersichtlich und schwer verständlich werden. <Beispiel> 100 JUMP P7 ; ON 1 ; WAIT 0,2 110 JUMP P17 ; OFF 1 ; WAIT 0,2 44 Sprungmarken Wenn Sie die Programmausführungsreihenfolge mit Hilfe von GOTO, GOSUB oder IF...THEN...ELSE ändern, wird das Programm gemäß der festgelegten Zeilennummern ausgeführt. Die Zeilennummer ist nur eine Nummer und hat keinerlei weitere Bedeutung. Wenn Sie ein Wort benutzen können, um eine Bewegung anzuzeigen, ist dies für den Programmierer und den Benutzer viel angenehmer. In SPEL III können Sie eine Sprungmarke anstatt nur einer Zeilennummer für die GOTO, GOSUB oder IF...THEN...ELSE Anweisungen verwenden. <Beispiel> 10 FUNCTION MAIN ← 20 LOOP: ←Sprungmarke 30 JUMP P1 40 JUMP P2 50 GOTO LOOP ←Verzweigung mit Hilfe der Sprungmarke 60 FEND0 Im Beispiel ist die Zeile 20 mit der Sprungmarke „LOOP“ versehen. Erst der Doppelpunkt (:) hinter LOOP zeigt an, daß es sich tatsächlich um eine Sprungmarke handelt. Im Folgenden werden die Beschränkungen bei der Verwendung von Sprungmarken aufgeführt: • Als verwendbare Zeichen sind alle alphanumerischen Zeichen und Unterstriche ( _ ) außer dem Doppelpunkt (:) zugelassen. • Die Sprungmarke darf aus max. acht Zeichen bestehen. • Das erste Zeichen muß ein Buchstabe (außer P) sein. • Groß- und Kleinschreibung ist egal. Es gibt eine spezielle Funktion, um Zeilennummern automatisch neu zu vergeben (renumber), so daß die festgelegten Zeilennummern für GOTO, GOSUB, oder IF...THEN...ELSE automatisch geändert werden. Das Programm ist leichter zu verstehen, wenn die Sprungmarken so definiert werden. 45 2.2 Konstanten Konstanten sind aktuelle Werte, die SPEL III während der Ausführung benutzt. Es gibt zwei verschiedene Arten von Konstanten: Zeichenketten (oder Zeichen) und numerische Konstanten. Numerische Konstanten Numerische Konstanten können ganze oder reelle Zahlen sein. Es ist wichtig, ein Minuszeichen (-) vor eine negative Zahl zu stellen, aber vor positiven Zahlen wird kein Pluszeichen (+) gesetzt. Ganze Zahlen Ganze Zahlen haben kein Dezimalkomma. Sie sind in dem folgenden Bereich zulässig: -32768 bis 32768. Es gibt die folgenden Beschreibungen für ganze Zahlen: • Dezimalformat Der Wert wird in Dezimalzahlen (0-9) ausgedrückt. • Hexadezimalformat Der Wert wird in Hexadezimalzahlen (0-F) mit dem Präfix „&H“ ausgedrückt. Die entsprechenden Werte für Hexadezimal- und Dezimalzahlen finden Sie in der folgenden Tabelle: Hexadezimal Dezimal <Beispiel> Hexadezimal &H25 &H3F • 0-9 A B C D E F 0-9 10 11 12 13 14 15 Dezimal 2 x 161 + 5 = 37 3 x 161 + 15 = 63 Binärformat Der Wert wird in Binärzahlen (0 und 1) mit dem Präfix „&B“ ausgedrückt. <Beispiel> Binär Dezimal &B1111 23 + 22 + 21 +20 = 15 &B101 22 + 20 = 5 Reelle Zahlen Diese Werte enthalten Dezimalkommas, liegen innerhalb des Bereiches der ganzen Zahlen und werden in exponentieller Form ausgedrückt. Zeichenketten Zeichenketten werden immer in Anführungszeichen (“) eingeschlossen. Sie können aus einzelnen Zeichen, Zeichenfolgen und Zahlen bestehen. Besteht die Zeichenfolge nur aus zwei Anführungszeichen (““), hat die Zeichenfolge eine „Nulllänge“ und wird als Leerzeichen interpretiert. <Beispiel> >PRINT “HALLO“ HALLO >PRINT HALLO“ 123 ←Hier wird das Wort HALLO durch einen Wert ersetzt, da das Wort nicht in Anführungszeichen gesetzt wurde. 46 2.3 Variablen Variablen werden als vorübergehende Ersatzdaten verwendet. Es gibt viele verschiedene Arten von Variablen, daher muß vor dem Benutzen einer Variable eine Variablendefinition eingegeben werden. Der Wert, durch den die Variable ersetzt wird, muß vom selben Typ sein wie die Variable selbst. Die Werte der Variablen werden solange beibehalten, bis das Objektgebiet überschrieben oder gelöscht wird (Ausschalten der Spannungszufuhr, Überschreiben durch ein Programm, etc.). Sie werden immer dann gelöscht, wenn der COM-Befehl oder eine andere ausführbare Datei ausgeführt wird. Um Variablenwerte zu speichern, müssen Sie Backup-Variablen, wie unten beschrieben, verwenden. Spezifische Anzahl von Variablen Die spezifische Anzahl von Variablen kann durch die folgende Gleichung bestimmt werden: Spezifische Anzahl von Variablen = 448 – (Anzahl der Funktionen) Dies ergibt sich daraus, daß die Variablen- und die Funktionsnamen in dem selben Bereich (Symboltabelle) verwaltet werden z.B.: In einem Programm mit nur einem Task können Sie bis zu 447 Variablen definieren. Sie müssen jedoch beachten, daß die Anzahl der Bereichsvariablen in Abhängigkeit von deren Größe variiert. (Wenn große Bereiche benutzt werden, können weniger Variablen verwendet werden!) Für andere als Bereichsvariablen (numerische Variablen oder Zeichenkettenvariablen) hat die Variablengröße keinen Einfluß auf die Anzahl der Variablen. Die Anzahl dieser Variablen kann durch andere Faktoren beeinflußt werden. Der Bereich, in den Variablenwerte gespeichert werden, entspricht dem Objektbereich zum Speichern ausführbarer Programme. Dementsprechend kann, wenn ein großes Programm verwendet wird, der Bereich zum Speichern der Variablen besetzt sein. In diesen Fällen tritt während des Kompilierens ein Fehler auf. Um das Problem zu beheben, müssen Sie entweder die Programmgröße verkleinern oder die Anzahl der verwendeten Variablen verringern. Numerische Variablen 1. Verschiedene numerische Variablen (siehe nächste Tabelle) Beschreibung BYTE verfügbarer Wert/Gültige Ziffer 1 -128 bis 127 2 -32768 bis 32767 LONG 4 -2147483648 bis 2147483647* REAL 4 7 Ziffern DOUBLE 8 14 Ziffern Ganze Zahlen INTEGER Reelle Zahlen Bytes Wenn Sie eine Variable definieren, müssen Sie zuerst die Definition und dann den Namen eingeben. Wenn verschiedene Variablen vom gleichen Typ definiert werden sollen, benutzen Sie bitte ein Komma “,“, um verschiedene Variablennamen zu vergeben (siehe Beispiel). Die Variablendefinition für einen Typ muß in einer Zeile erfolgen. Um einen weiteren Typ zu definieren, benutzen Sie bitte eine weitere Zeile. [Variablendefinition] [Name]{,[Name]}n Format: * Bei dem PRINT-Befehl ist der verfügbare Wert für LONG Variablen wie folgt eingeschränkt: von –9999999 bis 9999999. Der dargestellte Wert ist eingeschränkt, aber der interne Wert wird innerhalb des oben dargestellten Bereiches berechnet und ist gültig. 47 2. Variablennamen Variablennamen unterliegen den folgenden Beschränkungen: • Als verwendbare Zeichen sind alle alphanumerischen Zeichen und Unterstriche ( _ ) außer dem Doppelpunkt (:) zugelassen. • Der Variablenname darf aus max. acht Zeichen bestehen. • Das erste Zeichen muß ein Buchstabe (außer P) sein. • Groß- und Kleinschreibung ist egal. • Reservierte Worte (z. B. Befehle, Anweisungen und Funktionen) dürfen nicht verwendet werden. Auch wenn Sie reservierte Worte durch Unterstriche oder Zahlen ergänzen oder verändern, werden sie trotzdem als reservierte Worte erkannt. 3. Bei reellen Variablen wird der Wert durch Ziffern dargestellt. Zeichenketten-Variablen Zeichenketten-Variablen werden mit Hilfe der Anweisung STRING definiert. STRING [Zeichenkettenname]{,[Zeichenkettenname]}n Funktion: Zeichenkettennamen werden mit einem Dollarzeichen “$“ als letztem Buchstaben gekennzeichnet, um sie von numerischen Variablen unterscheiden zu können. Zeichenkettennamen unterliegen den folgenden Beschränkungen: 48 • Als verwendbare Zeichen sind alle alphanumerischen Zeichen und Unterstriche ( _ ) außer dem Doppelpunkt (:) zugelassen. • Der Zeichenkettenname darf aus max. acht Zeichen (einschließlich des $-Zeichens) bestehen. • Das erste Zeichen muß ein Buchstabe (außer P) sein. • Groß- und Kleinschreibung ist egal. • Reservierte Worte (z. B. Befehle, Anweisungen und Funktionen) dürfen nicht verwendet werden. Auch wenn Sie reservierte Worte durch Unterstriche oder Zahlen ergänzen oder verändern, werden sie trotzdem als reservierte Worte erkannt. Bereichsvariablen Eine Bereichsvariable ist eine Gruppe oder Tabelle, die sich auf einen Namen bezieht. Sowohl numerische wie auch Zeichenketten-Variablen können als Bereichsvariablen verwendet werden. Bei der Definition einer Bereichsvariablen geben Sie den Namen einschließlich der Größe in Klammern () ein. Die Größe kann in bis zu 3 Dimensionen definiert werden. Wenn verschiedene Variablen vom gleichen Typ definiert werden sollen, benutzen Sie bitte ein Komma “,“, um verschiedene Variablennamen zu vergeben. [Variablendefinition] [Name](a,b,c) Format: a,b,c: Bereichsgröße jeder Dimension Ganze Zahl von 0 bis 254 a*b*c 32767 <Beispiel> INTEGER A(10) BYTE B(8,5) LONG C(10,10,5) eindimensionaler Bereich zweidimensionaler Bereich dreidimensionaler Bereich Eine Variablentabelle der Bereichsvariablen B(8,5) wird , wie unten dargestellt, erzeugt. Die Zahlen in Klammern () werden Subskriptionen genannt. Es ist wichtig, jede Subskription einzeln anzugeben, wenn einzelne individuelle Variablen benutzt werden. B(0,0) B(1,0) B(2,0) B(3,0) B(4,0) B(5,0) B(6,0) B(7,0) B(8,0) B(0,1) B(1,1) B(2,1) B(3,1) B(4,1) B(5,1) B(6,1) B(7,1) B(8,1) B(0,2) B(1,2) B(2,2) B(3,2) B(4,2) B(5,2) B(6,2) B(7,2) B(8,2) B(0,3) B(1,3) B(2,3) B(3,3) B(4,3) B(5,3) B(6,3) B(7,3) B(8,3) B(0,4) B(1,4) B(2,4) B(3,4) B(4,4) B(5,4) B(6,4) B(7,4) B(8,4) B(0,5) B(1,5) B(2,5) B(3,5) B(4,5) B(5,5) B(6,5) B(7,5) B(8,5) Auflisten der Variablennamen Wenn Sie neue Variablennamen definieren, müssen Sie unter Umständen vorher wissen, welche Namen bereits vergeben sind. Variablennamen und Typen werden aufgelistet (ausschließlich BackupVariablennamen) durch Ausführen des Befehls VARIABLE. VARIABLE {-A} Format: Wird dem Befehl ein –A hinzugefügt, werden auch die Namen der Funktionen angezeigt. Diese Funktion zeigt nur die Variablennamen, die in der Symboltabelle gespeichert sind. Sie müssen daher Ihr Quellprogramm zuerst kompilieren. 49 Backup-Variablen Gewöhnlich wird, wenn das Programm kompiliert ist, eine Symboltabelle erzeugt. Wenn dann das Programm abläuft, werden die Werte der Variablen in dieser Tabelle gespeichert. Wird das Programm jedoch erneut kompiliert oder wird ein anderes Programm gestartet, werden diese Werte gelöscht. Auch wenn die Spannungszufuhr ausgeschaltet wird, gehen diese Werte verloren. Wenn Sie den Wert einer Variablen speichern wollen, müssen Sie die SYS-Anweisung benutzen, um die Variable als Backup-Variable einzutragen, bevor Sie verwendet wird. Als Backup-Variable wird sie nicht in der Symboltabelle gespeichert, sondern im Hauptspeicher des Backup-Variablen-Bereichs. Dieser Speicherbereich ist durch eine Batterie gesichert und wird nicht von Kompilier- oder Ausführvorgängen beeinflußt. Backup-Variablen sind hilfreich, wenn Sie z.B. eine Anwendung fortsetzen möchten, die Sie tags zuvor beendet haben oder Variablen in verschiedenen Programmen benutzen möchten. 1. Anzahl spezifizierbarer Backup-Variablen Der Standardwert für die Anzahl spezifizierbarer Backup-Variablen ist 10. Benutzen Sie den Befehl LIBSIZE, um den Maximumwert auf bis zu 1.000 einzustellen. Bedenken Sie, daß ein großer Wert viel Platz im Objektbereich benötigt, dadurch den Platz zum Speichern des Programmes verkleinert und so eine Ausführung großer Programme nicht möglich ist. Es wird daher geraten, den Bereich der Backup-Variablen so klein wie möglich zu halten. Weitere Informationen entnehmen Sie bitte dem SPEL III Referenzhandbuch. 2. Speicherprogramm für Backup-Variablen Die Symboltabelle, in der normale Variablen gespeichert werden, gehört zum Objektprogramm. Im Gegensatz dazu wird die Speichertabelle der Backup-Variablen vom eigentlichen Programm getrennt. Im Allgemeinen werden also die Speicherprogramme für Backup-Variablen separat von den anderen Programmen erzeugt. <Beispiel> 10 FUNCTION B_UP 20 ‘SYS BYTE HELLO ;HELLO=0 ‘bereits gespeicherte Backup-Variable 30 SYS INTEGER V(50) 40 SYS STRING ERR_M$(10) 50 FEND Wird versucht ein Variablenname zu speichern, der bereits existiert, wird ein Fehler (ZweifachDefinition einer Variablen) ausgegeben. Verwenden Sie einen Kommentarhinweis, wie in Zeile 20, wenn die Variable bereits vorhanden ist. 3. Speichern von Backup-Variablen Mit einem normalen Compiler wird die Registrierung der Variablen während des Kompilierens vollzogen. Im Gegensatz dazu muß beim Einsatz von SPEL III das Programm ausgeführt werden, damit die Variablen gespeichert werden können. Beim Einsatz von Variablen ist es wichtig, den Variablennamen und den Speicherplatz zu haben, um den Variablenwert zu speichern. Nach dem Kompilieren ist nur der Variablenname gespeichert, aber nicht der Speicher, in dem er sich befindet. Der Speicher wird erst gesichert, wenn das Programm abläuft. Wird nach dem Kompilieren versucht, eine Variable zu benutzen, tritt ein Fehler auf. Stellen Sie sicher, daß zuerst das Programm abläuft, bevor Variablen verwendet werden. <Beispiel> 10 FUNCTION V_EX 20 SYS INTEGER A ;A=1 30 SYS INTEGER B ;B=10 ‘speichert A und B als Backup-Variablen 40 PRINT A,B 50 FEND Kompilieren Sie das Programm, und führen Sie es aus. 50 4. Auflisten der Backup-Variablen Alle gespeicherten Backup-Variablen und Typen werden mit Hilfe des Befehls LIBRARY aufgelistet. LIBRARY Format: 5. Löschen von Backup-Variablen Um alle gespeicherten Backup-Variablen zu löschen benutzen Sie den Befehl CLRLIB. CLRLIB Format: Es ist nicht möglich, nur einige der gespeicherten Variablen zu löschen. Wenn nur einige Variablen gelöscht werden sollen, löschen Sie bitte zuerst alle Variablen, und lassen Sie dann nur die, die Sie benötigen, neu registrieren. Hinweis zur Verwendung von Variablen 1. Variablendefinition • Im Allgemeinen wird die Variablendefinition am Anfang des Programms vorgenommen. Wird eine Variable benutzt, bevor sie registriert ist, wird sie als reelle Variable (REAL) registriert und, wenn danach die Variablendefinition durchgeführt wird ein Fehler verursacht (Zweifach-Definition von Variablen). Es ist auch nicht möglich, eine Variable zu verwenden, bevor sie registriert ist. Auch wenn es eine reelle Variable ist, muß sie angemeldet sein. • Wenn Sie prüfen wollen, ob eine undefinierte Variable vorhanden ist, kompilieren Sie Ihr Programm mit dem Befehl COM–V. Ist eine undefinierte Variable vorhanden, erscheint der Fehler 2. • Die Anweisung zur Variablendefinition muß am Zeilenanfang stehen. Die Variablendefinition für einen Typ muß in einer Zeile erfolgen. Um einen weiteren Typ zu definieren, benutzen Sie bitte eine weitere Zeile. <Beispiel> 50 BYTE S_1,S_2 ;S_1=0 ;S_2=0 ;INTEGER E-1 ;E_1=1 ‘nicht erlaubt! 50 BYTE S_1,S_2 ;S_1=0 ;S_2=0 60 INTEGER E-1 ;E_1=1 2. Fälle, in denen die Variablen vorher definiert sein müssen richtig! • Wenn eine Variable als Parameter für Positionsdaten benutzt wird. • Wenn eine Variable in einem Parallel-Prozeß benutzt wird. <Beispiel> Definieren Sie die Variablen OFSET, HAND_DU vorher! 3. Fälle, in denen Variablen nicht verwendet werden können • Für die Ortskoordinate von Positionsdaten. • Für Tasknummern und für die Nummer der RS-232C-Schnittstelle. <Beispiel für falsche Verwendung von Variablen> P0=P1/LNO HALT !TK nicht erlaubt! PRINT #RS,5 RESET #RAIOC 4. Fälle, in denen eine Zeichenkettenbereichsvariable nicht verwendet werden kann • Für Dateinamen bei CURVE-, CVMOV-Befehlen. 51 2.4 Operationen Mathematische Operationen Die Mathematik wird für Operationen von numerischen Werten benutzt. Die mathematischen Operatoren sind wie nachfolgend aufgeführt: Operator Operation Ausdruck Mathematisches Zeichen + Addition A+B + Subtraktion A-B * Multiplikation A*B x / Division A/B ÷ MOD Module Mathematik A MOD B (MOD kann nur für ganze Zahlen benutzt werden.) Logische Operatoren Die logischen Operatoren können für ganze Zahlen benutzt werden. Das Ergebnis ist auch eine ganze Zahl. Der numerische Wert wird innerhalb der Steuerung durch eine binäre Ziffer ausgedrückt. Die Operation wird in dieser Reihenfolge ausgeführt. Das heißt, daß jedes Bit des Ergebnisses von den entsprechenden Bits in den zwei Operanden bestimmt wird. Jede Operation ist unten aufgeführt, es werden die numerischen Werte A und B benutzt. 52 1. AND (Konjunktion) Format: A AND B BIT von A 0 0 1 1 BIT von B 0 1 0 1 Ergebnis 0 0 0 1 2. OR (Disjunktion) Format: A OR B BIT von A 0 0 1 1 BIT von B 0 1 0 1 Ergebnis 0 1 1 1 3. XOR (ausschließliches OR) Format: A XOR B BIT von A 0 0 1 1 BIT von B 0 1 0 1 Ergebnis 0 1 1 0 4. NOT (logische Ergänzung) Format: NOT A BIT von A 0 1 Ergebnis 1 0 5. Beispiel: Im Falle von A=1, B=0, C=1 A AND B OR C = 1 A AND B XOR C = 1 NOT A) AND C = 0 Relationale Operatoren Operator = <> oder >< > < >= oder => <= oder =< Ausdruck A=B A<>B A>B A<B A>=B A<=B Beschreibung A und B sind gleich. A und B sind nicht gleich. A ist größer als B. A ist kleiner als B. A ist größer oder gleich B. A ist kleiner oder gleich B. Zeichenketten-Operatoren Operator Beschreibung + Verkettung der Zeichenkette = Wahr, wenn alle Eigenschaften der Zeichenkette dieselben sind. <> Wahr, wenn mindestens eine Eigenschaft unterschiedlich ist. <Beispiel> >PRINT “HE“ + “LLO“ HELLO Rangfolge der Operatoren Es gibt eine Rangfolge für die Operatoren. Wird mehr als ein Operator benutzt, wird die Operation nach dieser Rangfolge ausgeführt. Operatoren, die in Klammern stehen, werden zuerst ausgeführt. Operationen mit gleichem Rang werden von links nach rechts ausgeführt. Die Rangfolge der Operationen ist wie folgt:: (1) ( ) (2) *, /, MOD (3) +, (4) AND, OR, XOR, NOT (5) =, >, <, >=, <> Die Operationen werden nach dieser Rangfolge ausgeführt, das Benutzen von Klammern erleichtert das Lesen des Programms. Operationen mit ganzen und reellen Zahlen SPEL III unterscheidet Operationen mit ganzen Zahlen von denen mit reellen Zahlen, dadurch wird die Operation schneller. In Übereinstimmung mit dem Operandentyp unterscheiden sich die Operationsmethode und das Resultat wie folgt: Operandentyp Alles ganze Zahlen Alles reelle Zahlen Ganze und reelle Zahlen Ergebnis ganze Zahl Reelle Zahl Für die oben genannten Operationen beachten Sie folgende Punkte. (1) Bei der Division von ganzen Zahlen wird das Ergebnis auf eine ganze Zahl gerundet. (2) Wenn das Ergebnis einer ganzzahligen Operation außerhalb des Bereichs der ganzen Zahlen (32768 bis 32767) liegt, wird ein Fehler angezeigt. 53 (3) Wenn eine reelle Zahl einer Ganzzahlvariablen zugewiesen wird, wird die zehnte Stelle gerundet. 1 2 3 Operation mit ganzen Zahlen >PRINT 3/2 1 >PRINT TAN(1/2) 0 <PRINT 1000*1000 !!ERROR 21 20 INTEGER A 30 A=TAN(1,0/2) >PRINT A 1 Operation mit reellen Zahlen >PRINT 3,0/2 1.5 >PRINT TAN(1,0/2) .5463025 >PRINT 1000,0*1000 1000000 Rückgabewerte Die Typen der Werte werden von der Funktion wie folgt zurückgegeben: Typ Reelle Zahl Funktionsname SIN( ) ATAN( ) CX( ) COS( ) ATAN2( ) CY( ) CZ( ) TAN( ) AGL( ) SQA( ) TMR( ) VAL( ) CU( ) IN( ) ZEROFLG(0) INBCD( ) NOT( ) MYTASK CTR( ) (0) TIME( ) LOF( ) JS(0) SW($ ) LSHIFT( ) DSW( ) LEN( ) IN($ ) RSHIFT( ) STAT( ) ASC( ) INT( ) ABS( ) ganze Zahl (2 Byte) SW( ) OPORT( ) ganze Zahl (4 Byte) PLS( ) Argument SGN( ) Fälle, in denen Operationen und Funktionen benutzt werden können Grundsätzlich ist es unmöglich, Operationen und Funktionen im Parameterteil jedes Befehls zu benutzen. In so einem Fall weisen Sie das Ergebnis der Operation oder der Funktion einer Variablen zu, und benutzen Sie den Variablennamen für den Parameter. Der folgende Zustandsbefehl kann die logische Operation durchführen. IF...THEN...ELSE, SELECT...SEND, WHILE...WEND, SENSE, TILL, WAIT, PRINT <Beispiel> P0=P1:ZCZ(P0) 54 → A=CZ(P0);P0=P1:ZA 2.5 Steueranweisungen des Programms SPEL III verfügt über folgende Steueranweisungen. Für Details sehen Sie bitte im Handbuch nach. FOR...NEXT GOTO IF...THEN...ELSE GOSUB...RETURN CALL SELECT...CASE...SEND WHILE...WEND TRAP (Führt eine Reihe von Anweisungen in einer bestimmten Zeit aus.) (Geht zur gewünschten Anweisung über) (Führt Anweisungen auf der Grundlage von spezifizierten Konditionen aus) (Verzweigt zum Unterprogramm, führt es aus und verläßt es wieder) (Ruft ein Unterprogramm auf) (Spezifiziert die Verzweigungsvorschrift und die entsprechende Verzweigungsanweisungssequenz) (Führt eine Reihe von Anweisungen aus, während der festgelegte Zustand erhalten bleibt) (Definiert einen Unterbrechungsprozeß) FOR...NEXT Führt eine Reihe von Anweisungen von FOR bis NEXT in einer bestimmten Zeit aus. GOTO GOTO geht zur spezifizierten Zeile oder zur Sprungmarke. <Beispiel> 10 20 30 40 50 60 70 FUNCTION MAIN LOOP: FOR I=1 TO 4 JUMP PI NEXT I GOTO LOOP FEND ‘Markiert Zeile 20 als “LOOP“ ‘Geht zu Zeile 20, die als LOOP markiert ist IF THEN ELSE IF (Bedingung) THEN (Anweisung 1) ELSE (Anweisung 2) Wenn die (Bedingung) wahr ist, wird die (Anweisung 1) ausgeführt, und wenn sie nicht wahr ist, wird die (Anweisung 2) ausgeführt. <Beispiel> Wiederholt die Sprungbewegung zwischen P1 und P2, und zwischen P1 und P3 abwechselnd. 10 20 30 40 50 60 70 FUNCTION MAIN I=1 IF I=1 THEN JUMP P2 ELSE JUMP P3 JUMP PI I=0-I GOTO 30 FEND 55 GOSUB...RETURN Wenn ein GOSUB-Befehl gefunden wird, verzweigt er zur definierten Zeilennummer oder zur Sprungmarke. Wenn ein RETURN-Befehl ausgeführt wird, lenkt er die Programmausführung zu der Zeile um, die dem GOSUB-Befehl folgt. <Beispiel> Wiederholt die Bewegung 3-mal zwischen P1 und P2, P2 und P3, P3 und P4 und P4 und P1. Die Wiederholbewegung wird als Unterprogramm programmiert. 10 20 30 40 50 60 70 80 90 100 1000 1010 1020 1030 1040 1050 FUNCTION MAIN I=1;J=2 GOSUB I_J I=2;J=3 GOSUB I_J I=3;J=4 GOSUB I_J I=4;J=1 GOSUB I_J END I_J: ‘Sprungmarke des Unterverzeichnisses FOR LOOP=1 TO 3 JUMP PI;JUMP PJ NEXT RETURN FEND GOTO, FOR...NEXT, GOSUB...RETURN, IF...THEN...ELSE <Beispiel> Die Bewegungsgeschwindigkeit wird jedesmal erhöht, wenn zur nächsten Position übergegangen wird. Wenn die Geschwindigkeit „100“ erreicht, wird sie auf „10“ verringert. Die 3. Achse bewegt sich an jeder Position 3-mal auf und ab. 10 20 30 40 50 60 70 80 90 100 200 210 220 230 240 250 300 310 56 FUNCTION MAIN SPEED 10;A=10 FOR I=1 TO 4 JUMP PI GOSUB H_L A=A+10 IF A>100 THEN A=10 SPEED A NEXT I GOTO 30 ‘ H_L: FOR J=1 TO 3 JUMP PI NEXT J RETURN ‘ FEND CALL CALL ruft eine Funktion, die durch FUNCTION..FEND definiert wird, als Unterprogramm auf. <Beispiel> 100 FUNCTION MAIN 110 OFF $0 120 XQT !2 SUB 200 M CALL ERROR 300 305 310 M FEND ‘ FUNCTION SUB 350 M CALL ERROR 400 405 410 420 490 500 ‘E/A-Speicher für ausschließliche Steuerung M FEND ‘ FUNCTION ERROR ON $0; IF ZEROFLG(0)=1 THEN WAIT SW($0)=0; GOTO 420 M OFF $0 FEND * ZEROFLG(0) Gibt Werte aus dem E/A-Speicher zurück, die vor dem letzten Ein- oder Ausschalten dort vorhanden waren. SELECT...CASE...SEND SELECT[Formel] CASE [Punkt1];[Anweisung1] CASE [Punkt2];[Anweisung2] SEND Entspricht einer der CASE-Punkte dem Ergebnis der SELECT-Formel, wird die CASE-Anweisung ausgeführt. <Beispiel> 110 FUNCTION MAIN 120 INTEGER I 130 FOR I=0 TO 10 140 SELECT I 150 CASE 0; OFF1; ON2; JUMP P1 160 CASE 3; ON1; OFF2 170 JUMP P2; MOVE P3; ON3 180 CASE 7; ON4 190 DEFAULT; ON7 200 SEND 210 NEXT 220 FEND 57 WHILE[Bedingung]...WEND Ist die WHILE-Bedingung wahr, wird die Anweisung zwischen WHILE und WEND ausgeführt. Danach wird die WHILE-Bedingung nochmals überprüft. <Beispiel> 100 FUNCTION MAIN 120 WHILE I<60 300 310 M I=I+2 WEND TRAP Wenn die Eingabebedingung zufriedenstellend ist, wird der Unterbrechungsprozeß, der durch GOTO, GOSUB oder CALL definiert ist, ausgeführt. <Beispiel 1> Anwenderdefinierter Fehlerprozeß 100 FUNCTION MAIN 110 TRAP 1 SW(0)=1 ‘Definiert TRAP GOTO ERROR M 500 510 520 ERROR: ON 3 ‘LED leuchtet PRINT #20,“Error is issued.“ 530 FEND <Beispiel 2> Anwendung wie Multi-tasking 100 FUNCTION MAIN 110 TRAP ERROR CALL MSGOUT M 500 700 710 720 58 FEND FUNCTION MSGOUT PRINT #20,ERRMSG$ (ERR(0)) FEND NESTING Die NESTING-Funktion kann für einige Anweisungen benutzt werden. Es wird in diesem Punkt anhand GOSUB als Beispiel erklärt. GOSUB verzweigt das Programm zu der definierten Zeilennummer (oder der Sprungmarke), führt das Unterprogramm aus und lenkt danach die Programmausführung zu der Zeile um, die dem GOSUBBefehl folgt. Verwendet man eine weitere GOSUB...RETURN-Anweisung innerhalb des Unterprogramms, können Sie ein weiteres Unterprogramm ausführen. Dies wird NESTING (Verschachteln) genannt. • Verschachtelung: Die Verschachtelungen beim NESTING werden als „Schritte“ beschrieben. Das obere Beispiel hat „2 Schritte“. Es gibt Einschränkungen bei der Anzahl der Verschachtelungen, die jedoch abhängig von der verwendeten Anweisung variieren. In diesem Handbuch wird die Anzahl der Verschachtelungen auf 10 beschränkt. • Die folgenden Befehle erlauben Verschachtelungen #include CALL FOR...NEXT GOSUB...RETURN SELECT...SEND WHILE...WEND. 59 2.6 Pseudobefehl Der Pseudobefehl wird verwendet, um das Editieren und Kompilieren im ersten Schritt des Kompilierens einfacher zu gestalten. Das Benutzen des Pseudobefehls ermöglicht das Ersetzen von Bezeichnern im Programm, die Installation anderer Dateien oder das Kompilieren von Programmteilen. Als erster Buchstabe des Pseudobefehls muß das #-Zeichen stehen, und die weiteren Buchstaben des Befehls müssen in Kleinschreibung folgen. Folgende Pseudobefehle werden von SPEL III zur Verfügung gestellt. #define #include #ifdef #ifndef #endif Der Pseudobefehl muß sofort nach der Zeilennummer beschrieben werden. Nach dem Pseudobefehl muß mindestens ein Leerzeichen stehen, bevor andere Buchstaben folgen. Die Position des Pseudobefehls kann irgendwo im Programm sein. Auch wenn der Pseudobefehl in der Mitte des Programms steht, gilt er für das ganze Programm. <Beispiel> 1000 FUNCTION MAIN 1010 #define LED1 8 1020 #define LED2 9 1030 #define LED3 10 2000 2010 M ON LED1; WAIT 1; OFF LED1 ON LED2; ON LED3 M 3000 FEND Die Beschreibungen und Beispiele für die einzelnen Pseudobefehle erhalten Sie im SPEL III Referenzhandbuch. 60 3. Dateien Dateien sind Ansammlungen von Daten. Erzeugte Programme oder für die Einrichtung relevante Positionsdaten werden als Dateien behandelt. Die Steuerung beinhaltet einen Hauptspeicher als Arbeitsbereich zum Erzeugen und Ausführen von Programmen sowie einen Dateispeicher zum Speichern der Dateien. Dieses Kapitel beschreibt, wie die Dateien in diesen beiden Speichern behandelt werden. 3.1 Haupt- und Dateispeicher Die Größe des Hauptspeichers für die Bereiche des Quellprogramms, der Positionsdaten und der Backup-Variablen läßt sich mit Befehlen zum Ändern der Größe verändern. Hauptspeicher Nr. 1 Nr. 2 Nr. 3 Befehl zur Größenänderung Quellprogramm 64 KB 64 KB 128 KB Positionsdaten 200 Punkte, 5,5 KB PNTSIZE Backup-Variablen 10 Variablen, 0,5 KB LIBSIZE Objektbereich 97 KB 97 KB 233 KB Dateispeicher 100 KB 1100 KB 900 KB PRGSIZE kann mit den oberen Befehlen geändert werden. Nr. 1: Standardeinstellung Nr. 2: mit zusätzlichem RAM und DIP-Schalter SD2-1 auf ON (auf der MPU-Platine der Steuerung) Nr. 3: mit zusätzlichem RAM und DIP-Schaltern SD2-1 und SD2-2 auf ON (auf der MPU-Platine der Steuerung) Speicherbereich im Hauptspeicher Der Hauptspeicher ist ein Bereich, der die Bewegung des Roboters bewirkt und ist in die folgenden fünf Bereiche unterteilt: (1) Quellprogrammbereich Das Quellprogramm wird hier gespeichert. Um es ausführen zu können, muß es in ein Objektprogramm kompiliert werden. (2) Positionsdatenbereich Die Positionsdaten, die durch das Einrichten erzeugt werden, werden hier gespeichert. Die bestehenden Positionsdaten werden als die notwendigen Positionsdaten für die Programmausführung benötigt. (3) Bereich der Backup-Variablen Das ist der Bereich zum Speichern der Backup-Variablen-Speichertabelle. (4) Symbolbereich Das ist der Bereich zum Speichern der Speichertabelle der Funktions- und Variablennamen. Wenn das Quellprogramm kompiliert wird, werden die Funktions- und Variablennamen automatisch hier gespeichert. (5) Objektbereich Das ist der Bereich, in dem das aktuelle ausführbare Programm gespeichert wird. 61 Bereich zur Programmausführung Wenn ein Programm abläuft, werden Daten aus jedem Hauptspeicherbereich, mit Ausnahme des Quellprogrammbereichs benutzt. Diese Daten müssen verbunden werden, damit sie zu der Roboteroperation passen. Stellen Sie sicher, daß sich die Daten aufeinander beziehen, bevor Sie ein Programm ausführen. Hauptspeicher Quellprogrammbereich Bereich der Backup-Variablen Symbolbereich Objektbereich 64748 Positionsdatenbereich Ausführbare Daten Dateispeicher Der Dateispeicher ist der Speicher, in dem alle Arten von Dateien gespeichert werden können. Die Anzahl der speicherbaren Dateien ist nachfolgend aufgeführt: 62 Dateispeicher Größe Anzahl Dateien Nr. 1 100 KB 64 Nr. 2 1,1 MB 192 Nr. 3 900 KB 192 Nr. 1: Standardeinstellung Nr. 2: mit zusätzlichem RAM und DIP-Schalter SD2-1 auf ON (auf der MPU-Platine der Steuerung) Nr. 3: mit zusätzlichem RAM und DIP-Schaltern SD2-1 und SD2-2 auf ON (auf der MPU-Platine der Steuerung) 3.2 Dateinamen Für jede Datei muß ein Dateiname vergeben werden. Um mit der Datei arbeiten zu können, muß ein Dateiname festgelegt werden. Die Bestandteile eines Dateinamens Der Dateiname setzt sich zusammen aus dem Dateinamen, der Erweiterung und dem Punkt “.“. Der Dateiname und die Erweiterung werden durch den Punkt getrennt. Es handelt sich um verschiedene Dateien, wenn zwar die Dateinamen identisch sind, sich aber die Erweiterungen unterscheiden. Erzeugen eines Dateinamens Wenn ein Quellprogramm und Positionsdaten gespeichert werden sollen, die sich im Hauptspeicher befinden, muß ein Name vergeben werden. Dateinamen unterliegen den folgenden Beschränkungen: • • Der Name darf aus max. acht Zeichen bestehen. Verwendbare Zeichen: - Alphabet (A bis Z, a bis z) - Zahlen (0 bis 9) - Symbole (! # $ % & ( ) - ^ @ ~ { } _) Erweiterung Die Erweiterung zeigt den Dateityp auf. Im Allgemeinen muß der Anwender die Erweiterung nicht selbst vergeben, da die Steuerung die Erweiterung automatisch vergibt. Es handelt sich um verschiedene Dateien, wenn zwar die Dateinamen identisch sind, sich aber die Erweiterungen unterscheiden. Die Dateitypen sind wie folgt festgelegt: Erweiterung PRG OBJ SYM PNT CRV BAT Datei Quellprogrammdatei Objektdatei Symboldatei Positionsdatendatei Frei Kurven-Datei Stapeldatei SYS Systemumgebungsdatei Dateityp Erzeugtes Programm Ausführbares Zwischencodeprogramm Variablen- und Funktionnamenspeichertyp Positionsdatendatei Freie Kurvendaten, die der CURVE-Befehl verwendet. Datei, die Befehle beinhaltet, die automatisch ausgeführt werden sollen. Datei, die alle Daten der Systemumgebung speichert. 63 Wenn Sie eine Textdatei mit einem PC oder mit Hilfe der Befehle WOPEN und VSAVE editieren wollen, legen Sie selbst die Erweiterung fest. In diesen Fällen dürfen Sie nicht die oben erwähnten Erweiterungen benutzen. Erweiterungen unterliegen den folgenden Beschränkungen: • • • Die Erweiterung muß aus drei Zeichen bestehen. Verwendbare Zeichen: - Alphabet (A bis Z, a bis z) - Zahlen (0 bis 9) - Symbole (! # $ % & ( ) - ^ @ ~ { } _) Dateinamen müssen immer angegeben werden. Im Gegensatz dazu können Erweiterungen weggelassen werden. Wenn Sie die Erweiterung weglassen, müssen Sie auch den Punkt weglassen. Spezielle Dateinamen Die Dateien mit den folgend aufgeführten Dateinamen werden bei Einschalten der Spannungszufuhr automatisch ausgeführt. Diese Dateien bzw. Dateinamen dürfen zu keinem anderen Zweck verwendet werden. AUTO.BAT, IPL.OBJ und CNFG.SYS 3.3 Dateien, die während der Ausführung geladen werden Wenn Sie ein Programm ausführen, werden die folgenden drei Dateien vom Haupt- in den Dateispeicher geladen. Wenn jedoch nur eine von den drei Dateien fehlen sollte, tritt ein Fehler auf. Bitte beachten Sie, daß das Quellprogramm nicht geladen wird. Quellprogramm TEST.PRG (TEST.PNT) TEST.PNT (TEST.SYM) (TEST.OBJ) ← 678 Dateispeicher 678 Hauptspeicher TEST.SYM TEST.OBJ Wenn erst einmal die für die Ausführung notwendigen Dateien in den Hauptspeicher geladen sind, kann das Programm durch Eingeben des Befehls XQT (ohne Eingeben des Dateinamens) oder durch Drücken des Starttasters auf der Bedieneinheit (ohne Auswahl der Datei) gestartet werden. 64 4. Verzeichnis 4.1 Verzeichnis Wird eine Datei im Dateispeicher abgelegt, wird zusätzlich zu dem Dateinamen und der Erweiterung die Dateigröße und das Datum, an dem die Datei erzeugt wurde, im Verzeichnis abgespeichert. Um die Dateien zu verwalten, sortiert und registriert das Verzeichnis die Dateien in verschiedene Gruppen. Beachten Sie, daß das Verzeichnis ein Ort ist, wo die Dateien gespeichert werden und, daß sich Verzeichnis und Datei unterscheiden. Es gibt zwei verschiedene Arten von Verzeichnissen: das „Haupt- oder Wurzelverzeichnis“ und „Unterverzeichnisse“. Hauptverzeichnis Das Grundverzeichnis, das automatisch erstellt wird, wenn der Dateispeicher formatiert wird, heißt Hauptverzeichnis. Es wird durch einen umgekehrten Schrägstrich “\“ ausgedrückt. Dieses Symbol kann nicht verändert werden. Es ist auch nicht möglich, das Hauptverzeichnis zu löschen. Unterverzeichnis Wenn viele verschiedene Dateien und/oder Dateitypen im Hauptverzeichnis stehen, wird die Dateiverwaltung umständlich, und ein falscher Gebrauch von Dateien wird möglich. Die Größe des Hauptverzeichnisses ist vorher festgelegt. Die Anzahl von Dateien ist daher limitiert. Um eine Gruppe von Dateien leichter handhaben zu können, können Verzeichnisse angelegt und gelöscht werden. Diese Verzeichnisse nennt man Unterverzeichnisse. Die Anzahl von Dateien, die in ein Unterverzeichnis geschrieben werden können, ist abhängig von der Größe des Dateispeichers. Erzeugen eines Unterverzeichnisses Das Unterverzeichnis wird, genau wie eine Datei, mit einem Namen versehen. Ein Unterverzeichnis wird mit Hilfe der Befehle MKDIR oder MD (Make Directory) erzeugt. Namen der Unterverzeichnisse unterliegen den folgenden Beschränkungen: • • Der Verzeichnisname darf aus max. acht Zeichen bestehen. Verwendbare Zeichen: - Alphabet (A bis Z, a bis z) - Zahlen (0 bis 9) - Symbole (! # $ % & ( ) - ^ @ ~ { } _) <Beispiel> >MKDIR DATA Erzeugen eines Unterverzeichnisses DATA im Hauptverzeichnis >MKDIR \DATA\TEXT Erzeugen eines Unterverzeichnisses TEXT im Unterverzeichnis DATA im Hauptverzeichnis, wobei das Verzeichnis DATA bereits besteht. Sie erreichen das gleiche durch Wechseln vom Haupt- in das Unterverzeichnis DATA: >CHDIR DATA Wechseln des Verzeichnisses >MD TEXT Erzeugen eines Unterverzeichnisses TEXT Es ist nicht möglich, mehr als zwei Verzeichnisse gleichzeitig zu erzeugen. Erzeugen Sie Verzeichnisse immer nacheinander. 65 Löschen eines Unterverzeichnisses Ein Unterverzeichnis wird mit Hilfe der Befehle RMDIR oder RD (Remove Directory) gelöscht. Es ist nicht möglich, ein Unterverzeichnis zu löschen, in dem sich Dateien oder andere Unterverzeichnisse befinden. <Beispiel> >RD DATA Löschen des Unterverzeichnisses DATA. Überzeugen Sie sich vorher, daß das Verzeichnis keine weiteren Daten mehr enthält. <Beispiel> >RD \DATA\TEXT Löschen des Unterverzeichnisses TEXT im Unterverzeichnis DATA. Überzeugen Sie sich vorher, daß das Verzeichnis TEXT keine weiteren Daten mehr enthält. Sie erreichen das gleiche durch Wechseln vom Haupt- in das Unterverzeichnis DATA: >CD DATA Wechseln des Verzeichnisses >RD TEXT Löschen des Unterverzeichnisses TEXT Baumstrukturierte Verzeichnisse Wenn Sie verschiedene Unterverzeichnisse erzeugen, wird eine Hierarchie angelegt. Sie wird Verzeichnishierarchie genannt. Wenn das Verzeichnis ausgelesen wird, sieht es aus wie die Verzweigungen eines Baumes und wird daher auch baumstrukturiertes Verzeichnis genannt. []: stellt die Verzeichnisnamen in obiger Abbildung dar. Stammverzeichnis (Mutterverzeichnis), Unterverzeichnis (Kinderverzeichnis) In der Verzeichnishierarchie wird das Verzeichnis, das auf der höchsten Ebene ist, Stammverzeichnis, und die, die unterhalb dieser Ebene sind, Unterverzeichnisse genannt. In der oben gezeigten Verzeichnishierarchie ist das Hauptverzeichnis das Stammverzeichnis des Verzeichnisses TEXT und das Verzeichnis DATA ist das Unterverzeichnis. Das Verhältnis ist relativ. Das Verzeichnis TEXT ist das Stammverzeichnis des Verzeichnisses DATA, aber auch das Unterverzeichnis vom Hauptverzeichnis. Ein Punkt [.] weist auf ein aktuell bestehendes Verzeichnis hin. Zwei Punkte [..] weisen auf sein Stammverzeichnis. Diese Punkte werden gewöhnlich verwendet, wenn Pfad- oder Dateinamen mit Hilfe des Befehls DIR angezeigt werden sollen. Aktuelles Verzeichnis Das aktuelle Verzeichnis ist immer das gegenwärtig ausgewählte Verzeichnis. Ist ein Verzeichnis nicht spezifiziert, startet SPEL II den Suchvorgang vom aktuellen Verzeichnis aus. Wenn Sie SPEL III starten, ist immer das Hauptverzeichnis des Dateispeichers das aktuelle Verzeichnis. Zum Verzeichniswechsel benutzen Sie die Befehle CHDIR oder CD (Change Directory). Beim Einschalten der Spannungszufuhr ist immer das Hauptverzeichnis das aktuelle Verzeichnis. 66 Festlegen eines Pfades Wenn Sie mit Hilfe eines Befehlsparameters zu einem anderen Verzeichnis wechseln oder ein Verzeichnis festlegen wollen, kann dies nicht sauber ausgeführt werden, wenn Sie nur das Verzeichnis festlegen. Das Verzeichnis muß basierend auf dem Haupt- und dem aktuellen Verzeichnis festgelegt werden. Die Anweisung zum Ordnen und Trennen der Verzeichnisse durch den umgekehrten Schrägstrich “\“ wird Pfadname genannt. Es gibt zwei verschiedene Arten von Pfadnamen: absolute und relative. Der absolute Pfadname spezifiziert das Verzeichnis vom Hauptverzeichnis aus, und der relative Pfadname spezifiziert das Verzeichnis vom aktuellen Verzeichnis aus. • Absoluter Pfadname Ein absoluter Pfadname zeigt, wie man vom Hauptverzeichnis den Weg in das gewünschte Verzeichnis findet. Dabei muß am Anfang des Pfadnamens der umgekehrte Schrägstrich “\“ stehen. Der Startpunkt für den absoluten Pfadnamen ist immer das Hauptverzeichnis. <Beispiel> Wenn das aktuelle Verzeichnis DATA1 ist, spezifizieren Sie das Verzeichnis DATA2. Der umgekehrte Schrägstrich “\“ wird sowohl zum Trennen von Verzeichnissen als auch für das Hauptverzeichnis genutzt. Im Falle eines absoluten Pfadnamens steht der umgekehrte Schrägstrich “\“ am Anfang immer für das Hauptverzeichnis. Der Pfad zum Auffinden von Verzeichnissen bei absoluten Pfadnamen ist immer der folgende: Hauptverzeichnis (Startpunkt) → Unterverzeichnis (TEST) → Unterverzeichnis (DATA2) • Relativer Pfadname Ein relativer Pfadname zeigt, wie man vom aktuellen Verzeichnis den Weg in das gewünschte Verzeichnis findet. Der Startpunkt für den relativen Pfadnamen ist immer das aktuelle Verzeichnis. D.h., der Pfadname variiert abhängig vom Namen des aktuellen Verzeichnisses. Wenn Sie zwei Punkte (..) in einem Pfadnamen verwenden, heißt das, daß man sich eine Ebene in der Baumstruktur nach oben bewegt. <Beispiel> Der Beispielausdruck des absoluten Pfadnamens entspricht dem folgenden relativen Pfandnamen: Bei relativen Pfadnamen stellen die umgekehrten Schrägstriche “\“ die Unterscheidungen zwischen verschiedenen Verzeichnissen dar. Die ersten beiden Punkte verweisen auf das Stammverzeichnis. Also ist das Verzeichnis TEST das Stammverzeichnis von DATA2. Die folgenden beiden Punkte verweisen auf das Stamm- oder das Hauptverzeichnis. Der Pfad zum Auffinden von Verzeichnissen bei relativen Pfadnamen ist der folgende: aktuelles Verzeichnis 1 (DATA 1 als Startpunkt) → Stammverzeichnis (TEXT) → Stammverzeichnis (Hauptverzeichnis) → Unterverzeichnis (TEST) → Unterverzeichnis (DATA2) 67 Umgebungsvariablen Es ist möglich, für die Befehle COM und PLI optionale Parameter einzustellen. Wenn Sie viele Unterverzeichnisse eingerichtet haben, müssen Sie den Pfadnamen zu der Datei, die Sie aufrufen wollen, eingeben. Es sei denn, die Datei befindet sich im aktuellen Verzeichnis. Sie können vorher die Verzeichnisumgebung einer Datei festlegen, wenn Sie diese häufig ausführen . Um solch eine Ausführungsumgebung festzulegen, benutzen Sie den Befehl SETENV zum Festlegen einer Umgebungsvariablen. Folgende Umgebungsvariablen sind möglich: COM Setzt den optionalen Parameter (-V, -L) des COM-Befehls PLI Setzt den optionalen Parameter (/W) des PLI-Befehls XQT Legen Sie den Pfadnamen für die Datei fest, die durch den Befehl XQT “Dateiname“ ausgeführt werden soll. Wird der Pfadname nicht festgelegt, wird die Datei, ausgehend vom aktuellen Verzeichnis, gesucht. PATH Legen Sie den Pfadnamen (Verzeichnis), der zum Ausführen der Stapeldatei benötigt wird, fest. Wird der Pfadname nicht festgelegt, kann die Datei nicht ausgeführt werden. Der [Pfadname] auf der rechten Seite von XQT und PATH kann wiederholt in derselben Zeile auftauchen. Trennen Sie sie mit Hilfe des Semikolons “;“. Die max. Anzahl der Zeichen pro Zeile ist 79. Sie können PATH auch ohne den Befehl SETENV spezifizieren. Weitere Informationen erhalten Sie im SPEL III Referenzhandbuch. <Beispiel für Umgebungsvariablen> >SETENV COM=-V >SETENV PLI=/W >SETENV PATH=\;\BIN >SETENV XQT=\ >SETENV COM=-V PLI=/W PATH=\;\BIN XQT=\ >PATH >PATH=\;\BIN >PATH=\ >PATH >PATH=\ G HINWEIS Zeigt den aktuellen Pfad zum Ausführen von Stapeldateien Legt den Pfad zum Ausführen von Stapeldateien fest Zeigt den aktuellen Pfad Selbst wenn die PATH- und XQT-Umgebungsvariable bereits festgelegt wurde, wird nicht nach ihr gesucht, wenn ein Verzeichnis mit Dateiname spezifiziert ist. <Beispiel > XQT=\BIN;\TEST 1. 2. 68 Spezifiziert die Kompilierbedingungen Spezifiziert das Anzeigeformat für PLIST Legt den Pfad zum Ausführen von Stapeldateien fest Legt den Pfad zum Ausführen von Dateien fest Zeigt die aktuellen Einstellungen an Beim Ausführen von XQT „TMP“ (TMP ist der Dateiname), wird zuerst nach „TMP“ gesucht, dann nach „\BIN\TMP“ und dann nach “\TEST\TMP“. Beim Ausführen von XQT “¥TMP“ wird nur nach „\TMP“ gesucht. ANWENDUNGEN 69 1. Multitasking 1.1 Was ist Multitasking Wenn eine Reihe von Befehlen, die ausgeführt werden sollen, durch Verarbeitungsfunktionen in kleinere Einheiten aufgeteilt wird, wird jede dieser Verarbeitungsfunktionen „Task“ genannt. „Multitasking“ verweist auf einen Verarbeitungstyp, in dem mehrere Tasks gleichzeitig oder der Reihe nach ausgeführt werden. Es gibt zwei Wege, Multitasking zu erreichen. Der eine ist der „Multiprozeß“, ein Verarbeitungsmodus, in dem zwei oder mehr verbundene Verarbeitungsfunktionen einen oder mehrere Verarbeitungen in Übereinstimmung ausführen. Der andere ist der „Time-Sharing“-Modus, in dem eine einzelne Verarbeitungseinheit zwei oder mehr Tasks Zeit für die Ausführung zuweist, so daß es den Anschein hat, als würden sie gleichzeitig ausgeführt. Unsere Steuerung arbeiten nach dem Time-Sharing-Modus. Vorteile des Multitaskings Ein Multitasking-System hat die folgenden Vorteile: • verkürzte Taktzeiten Ein-Task-Systeme führen immer nur einen Task aus, wohingegen Multitasking-Systeme immer mehrere Tasks gleichzeitig ausführen. Das bedeutet, mehr Arbeit wird gleichzeitig ausgeführt und somit die Taktzeit (Arbeitszeit) wesentlich verkürzt. • Produktivität Zusätzlich zur verkürzten Arbeitszeit kann man mit Multitasking Peripheriegeräte gleichzeitig steuern. Das bedeutet, daß die ganze Arbeit effizienter ist und die Produktivität erhöht wird. • einfache Wartung Durch das Aufteilen des Programms in einzelne Tasks werden die Überprüfung und die Wartung des Programmes wesentlich vereinfacht. • Erweiterbarkeit Erweiterungen des Programms lassen sich durch das Hinzufügen neuer Tasks einfach vollziehen. 70 Multitasking in SPEL III Die Steuerungen SRC-300/310A/320 können jeweils 16 Tasks mit Hilfe des Time-Sharing-Modus übereinstimmend ausführen. Jeder Task darf max. 2 ms dauern. Die Tasks werden durch die Systemsteuerung alle 2 ms weitergeschaltet. SPEL III verbindet FEND und FUNCTION in einem Task. Der XQT-Befehl des TEACH-Modus und der START-Schalter des AUTO-Modus führen FUNCTION...FEND am Anfang des Programms als Task 1 aus, und danach werden die Tasks in Übereinstimmung mit den XQT-Befehlen des Programms gestartet. <Beispiel> 1000 FUNCTION MAIN 1010 XQT !2,TASK2 1020 XQT !3,Task3 1030 XQT !4,Task4 1040 XQT !5,Task5 ‘Task 1 ‘Start von Task 2 ‘Start von Task 3 ‘Start von Task 4 ‘Start von Task 5 M 1500 2000 FEND FUNCTION Task2 ‘Task 2 M 2500 3000 FEND FUNCTION TASK3 ‘Task 3 M 3500 4000 FEND FUNCTION TASK4 ‘Task 4 M 4500 5000 FEND FUNCTION TASK5 ‘Task 5 M 5500 FEND 71 Tasks während der Ausführung des WAIT-Befehls, des INPUT-Befehls und des Bewegungs-Befehls Die Tasks, die Befehle wie den WAIT-Befehl, den WAIT SW( )-Befehl, den INPUT-Befehl und Operationsbefehle (JUMP etc.) ausführen, werden zeitweise eingeschaltet und von der Gruppe der sofort auszuführenden Tasks getrennt. Diese Anordnung wird benutzt, da die Zuweisung einer bestimmten Ausführungszeit zu Tasks, deren einzige Aufgabe das Warten ist, nur zu einer abnehmenden Effizienz des CPU beitragen würde. Für diese Tasks überwacht das System die Übereinstimmung der Eingangskonditionen, den Dateneingang oder die Komplettierung der Bewegung, und wenn die vorausgesetzten Konditionen getroffen werden, führt das System Sie vorrangig zu den anderen Tasks aus. Danach werden sie wieder zeitweise für die Ausführung aktiviert. <Beispiel> Task 3 führt den WAIT-Befehl aus. <Beispiel> Task 2 Eingangsschnittstelle wechselt WAIT-Befehl und IF-Satz Basierend auf dem oben angegebenen haben die folgenden zwei Programme unterschiedliche Bedeutungen: 72 Liste 1 1000 FUNCTION TASK Liste 2 1000 FUNCTION TASK M 1200 WAIT SW(1) = 1 M 1200 IF SW(1) = 0 THEN GOTO 1200 M 1300 FEND M 1300 FEND Beide warten darauf, daß sich Eingang 1 ändert. Liste 1 ist von der zeitweisen Aktivierung der Tasks ausgeschlossen, und Liste 2 wiederholt die Auswertung der Gleichung SW (1) = 0 für einen Zeitraum von 2 Sekunden, nachdem eine bestimmte Zeit verstrichen ist. Gibt es Vielfach-Tasks wie in Liste 2, wird der größte Teil der Verarbeitungszeit der CPU auf die Auswertung der Bedingungsausdrücke verwendet. Weiterhin wird, wenn z.B. 16 Tasks ausgeführt werden sollen, einer alle 32 ms ausgeführt. In manchen Fällen ist es möglich, daß Liste 2 nicht auf Signale, die kürzer als 30 ms sind, reagiert. Zeitprogrammierung für den Wechsel der Tasks Der Wechsel der Tasks erfolgt an einer willkürlichen Position nach 2 ms. Die Werte der Variablen im folgenden Programm sind nicht garantiert: <Beispiel> 1000 FUNCTION MAIN M 1200 IF A = 1 THEN... 1210 IF A = 2 THEN... M 1400 FEND 2000 FUNCTION TASK2 M 2100 A=1 M 2200 FEND 3000 FUNCTION TASK3 M 3100 A = 2 M 3200 FEND Werden Daten der Vielfach-Tasks in asynchroner Weise in eine Variable geschrieben, werden die Tasks aktiviert, während 2100 A = 1 ausgeführt wird (z.B. direkt nachdem Daten auf ein von vier Bytes geschrieben wurden), und dann wird 3100 A = 2 ausgeführt. Außerdem, wenn die Tasks wieder aktiviert werden und die Kontinuität von 2100 A = 1 ausgeführt wird, nimmt die Variable A einen Wert an, der äußerst unvorhersehbar ist. Überdies wird der Wert der Variablen A während der Ausführung des Teils, der auf THEN folgt, neu geschrieben, was den Bedingungsausdruck von IF bedeutungslos macht. 73 1.2 Ineinandergreifen von Tasks Störungen der Steuerung Beim Multitasking wird die Weiterverarbeitung gewöhnlich durchgeführt, während gegenseitige Störungen der Tasks vermieden werden und der fortschreitende Zustand der anderen Tasks gemeinsam geprüft wird. Dieser Vorgang wird Ineinandergreifen der Tasks genannt. Um dieses Ineinandergreifen sicherzustellen, macht SPEL III Gebrauch von dem E/A-Speicher. Der E/A-Speicher ist eine Gruppe von 512 Kennzeichen „Flags“ (1-Bit-Variablen), die von 0 bis 511 numeriert sind. Es wird mit den Befehlen On $n/OFF $n, IN ($m)/OUT $m, und d gearbeitet. <Beispiel> 1000 FUNCTION TASK1 M 1100 LOOP1: 1110 ON $0 M 1200 WAIT SW($1) = 1; OFF $1 ‘Befehl für Task 2, die Verarbeitung zu beginnen. ‘Warten Sie auf den Hinweis, daß der Verarbeitungsprozeß von Task 2 abgeschlossen ist. ‘Von hier an wird die Störung des Geräts von Task 2 gesteuert. M 1300 GOTO LOOP1 1310 FEND 2000 FUNCTION TASK2 M 2100 LOOP2: 2110 WAIT SW($0) = 1; OFF $0 M 2300 ON $1 M 2400 GOTO LOOP2 2410 FEND 74 ‘Warten Sie auf einen Befehl, die Verarbeitung zu beginnen. ‘Von hier an wird die Störung des Geräts von Task 1 gesteuert. ‘Hinweis: Verarbeitungsprozeß ist abgeschlossen. Nur ein Gerät wird von Vielfach-Tasks benutzt Die Datenausgabe an das einzig verfügbare Gerät (Anzeige für OPU-300, RS-232C,etc.) sollte im Wesentlichen den ausgewählten Tasks zugewiesen werden. Wenn das nicht vorhanden ist, muß ein sinnvolles Schema erdacht werden, um gleichzeitige Datenausgaben an eine einzige Vorrichtung zu vermeiden. Solch ein Schema wird als ausschließliche Steuerung bezeichnet. <Beispiel 1> Nr. 0(null) des E/A-Speichers wird der Gebrauch/Nichtgebrauch der Datenausgabegeräte zugewiesen. 1000 FUNCTION TASK1 1010 XQT !2,TASK2 1020 WAIT SW($0) = 0 1030 ON $0 1040 PRINT “1234567890“ 1050 PRINT “1234567890“ 1060 PRINT “1234567890“ 1070 OFF $0 1080 GOTO 1020 1090 FEND 2000 FUNCTION TASK2 2010 WAIT SW($0) = 0 2020 ON $0 2030 PRINT “abcdefg“ 2040 PRINT “abcdefg“ 2050 PRINT “abcdefg“ 2060 OFF $0 2070 GOTO 2010 2080 FEND > abcdefg 1234567890 abcdefg abcdefg 1234567890 75 Im <Beispiel 1>-Programm, wenn der Task sofort nach WAIT SW ($0) = 0 aktiviert wird, wird eine Zeichenkette von einem anderen Task durch Unterbrechung in die Mitte der Datenausgabe der drei Zeichenketten geliefert. Um dies zu vermeiden, stellt SPEL III die ZEROFLG (0)-Funktion bereit. <Beispiel 2> 1000 FUNCTION TASK1 1010 XQT !2,TASK2 1020 ON $0 1030 IF ZEROFLG(0) = 1 THEN WAIT SW($0) = 0; GOTO 1020 1040 PRINT “1234567890“ 1050 PRINT “1234567890“ 1060 PRINT “1234567890“ 1070 OFF $0 1080 GOTO 1020 1090 FEND 2000 FUNCTION TASK2 2010 ON $0 2020 IF ZEROFLG(0) = 1 THEN WAIT SW($0) = 0; GOTO 2010 2030 PRINT “abcdefg“ 2040 PRINT “abcdefg“ 2050 PRINT “abcdefg“ 2060 OFF $0 2070 GOTO 2010 2080 FEND > 1234567890 1234567890 1234567890 abcdefg abcdefg abcdefg 1234567890 1234567890 1234567890 Die ZEROFLG(0)-Funktion gibt den n-th-Status des E/A-Speichers zurück, der existiert, bevor das sofort vorangehende ON (OFF) $n ausgeführt wird. 76 2. Programmiertechniken 2.1 Schreiben eines umfangreichen Programms (Effizienter Einsatz von CHAIN/LINK) Ein kleines Programm beinhaltet normalerweise eine einzige Datei. Wird das Programm größer, können die nachfolgend aufgeführten Probleme entstehen: • Paßt nicht in die Programmbereiche. • Kann nicht mit dem Editor bearbeitet werden. • Benötigt viel Zeit zum Kompilieren. • Benötigt viel Zeit zum Anzeigen mit Hilfe des Befehls LIST. • Alle Variablen und Sprungmarken müssen unterschiedliche Namen haben. (Es ist lästig, angemessene Namen zu finden.) Die Befehle CHAIN und LINK stehen zur Verfügung, um mit diesen Problemen fertig zu werden. Der erste Befehl wird verwendet, um zwischen Einrichtungsarten zu wechseln. Der zweite wird in allen anderen Fällen verwendet. Es gibt kein eindeutiges Kriterium zur Verwendung der Befehle CHAIN und LINK. Es bleibt dem Programmierer frei überlassen, mit Ausnahme der Fälle, in denen spezielle Umstände den Einsatz der Befehle erforderlich machen, wenn z.B. ein Programm nicht in den Programmbereich paßt. Als allgemeine Regel läßt sich sagen, daß es ratsam ist, die Befehle CHAIN und LINK bei Programmen einzusetzen, die mehr als 3.000 Zeilen beinhalten (Wenn eine Zeilennummer jeder zehnten Zeile, ausgehend von 10 bis zu 32.767, zugewiesen wird, ist die Grenze bei 3276 Zeilen.) Einsatzmöglichkeiten des CHAIN-Befehls Angenommen, ein Programm, in dem verschiedene Arten von ICs per DIP-Schalter festgelegt werden sollen, stellt einen Fall dar, in dem klar abgegrenzte Routinen ausgeführt werden sollen. Funktion (IC), die geändert werden soll, wird ausgewählt durch Eingang IN(0) und verzweigt zur Verfahrensroutine. Jede Routine ist unabhängig von den anderen und teilt sich nie die gleichen Unterprogramme. IN(0)= 1 :PLCC 2 :DIP 3 :SOP <Beispiel 1> 100 IF IN(0)=1 THEN GOTO PLCC 110 IF IN(0)=2 THEN GOTO DIP 120 IF IN(0)=3 THEN GOTO SOP ‘PLCC Auswahl ‘DIP Auswahl ‘SOP Auswahl M 3000 PLCC: M 3900 GOTO PLCC 4000 DIP: M 4900 GOTO DIP 5000 SOP: M 5900 GOTO SOP 77 <Beispiel 2> (Einsatz von CHAIN) 100 IF IN(0)=1 THEN CHAIN “PLCC“ 110 IF IN(0)=2 THEN CHAIN “DIP“ 120 IF IN(0)=3 THEN CHAIN “SOP“ Datei: PLCC.PRG 1000 FUNCTION MAIN 1010 PLCC: ‘PLCC Auswahl ‘DIP Auswahl ‘SOP Auswahl M 1900 GOTO PLCC 2000 FEND Datei: DIP.PRG 1000 FUNCTION MAIN 1010 DIP: M 1900 GOTO DIP 2000 FEND Datei: SOP.PRG 1000 FUNCTION MAIN 1010 SOP: M 1900 GOTO SOP 2000 FEND Wie im obigen Beispiel dargestellt, können Programme für individuelle Einrichtungsarten einzeln entwickelt werden. Dies bietet eine gute Debugging-Leistung und erzielt so kürzere Entwicklungszeiten. Darüber hinaus kann, wenn z.B. ein Programm durch Auswahl der REMOTE3 und nicht per OPU-300, aktiviert wird, auch der CHAIN-Befehl verwendet werden. Einsatzmöglichkeiten des CHAIN-Befehls Der LINK-Befehl kann unter den folgenden Bedingungen eingesetzt werden: • Ein Programm ist zu groß, um in den Programmbereich zu passen. • Ein Programm ist zu groß, um mit dem Editor bearbeitet zu werden. • Lokale Variablen sollen verwendet werden. • Die Programmierarbeit wird unter mehreren Personen aufgeteilt. • Das Programm soll aus mehreren wiederverwendbaren Modulen bestehen. • Das Kompilieren soll verkürzt werden. • Für Variablen und Sprungmarken sollen gleiche Namen verwendet werden, wobei die Dateien unterschiedlich sind. In allen obigen Fällen wird der Einsatz des Befehls LINK empfohlen. Sie sollten sich jedoch darüber im Klaren sein, daß eine Verwendung des LINK-Befehls die folgenden Nachteile mit sich bringen kann: 78 • Um Variablen zu teilen, sind zusätzliche Prozeduren (z.B. ENTRY/EXTERN) notwendig. • Die Anzahl der Prozeduren erhöht sich. Zusätzlich zum Kompilieren muß der LINK-Befehl ausgeführt werden, und wenn es nur eine Fehlanpassung (z.B. keine Übereinstimmung zwischen ENTRY und EXTERN) gibt, müssen alle Prozeduren mit dem Kompilieren neu begonnen werden. • Mehrere Dateien müssen zur selben Zeit bearbeitet werden. 2.2 Bewegung zu mehreren gleichweit voneinander entfernten Punkten Der Befehl PALET wird, wie unten dargestellt, für Bewegungen zu mehreren gleichweit voneinander entfernten Punkten eingesetzt. Definieren von Paletten Format: PALETn Pa,Pb,Pc [Anzahl der 1. Abschnitte],[Anzahl der 2. Abschnitte] n: Anzahl Paletten (0 bis 15) a, b ,c: Anzahl Punkte (0 bis 99) [Anzahl der 1. Abschnitte]: Anzahl der Abschnitte zwischen Pa und Pb [Anzahl der 2. Abschnitte]: Anzahl der Abschnitte zwischen Pa und Pc <Beispiel> PALET1, P1,P2,P3,5,3 Wenn die Eingaben wie im Beispiel vorgenommen werden, werden die Palette und die Anzahl der Punkte eingestellt, wie unten dargestellt. * Die Ecke der Palette, die durch drei Punkte gestaltet wird, muß bei „Pa“ liegen. * Wenn die drei Standardpunkte keinen rechten Winkel ergeben, wird die Palette deformiert. * Die Z-Koordinaten werden durch drei gleichweit voneinander entfernte Punkte in einer Ebene geformt. Einzeilige Palette Für eine einzeilige Palette wird das Einrichten an den zwei Punkten an beiden Enden vorgenommen und wird daher, wie folgt, definiert: Format: PALETn P1,P2,P1 [Anzahl der Abschnitte],1 <Beispiel> PALET1, P1,P2,P1,5,1 79 Positionsbestimmung innerhalb der Palette Vor der Programmausführung geben Sie direkt den Befehl JUMP ein und bewegen den Roboter zu jedem Punkt innerhalb der Palette und bestimmen so die richtige Position. Wenn Sie eine Zeichnung der Palette angelegt haben, erleichtert dies die Überprüfung der Bewegung zu jedem Punkt. Bestimmen Sie die Position innerhalb der Palette wie folgt: Format: PALETn (C) n: Anzahl Paletten (0 bis 15) C= Anzahl der Gitter G HINWEIS Wenn die Palette nicht definiert ist, tritt ein Fehler auf. Stellen Sie die drei Punkte ein, bevor Sie das Programm ausführen. <Beispiel> Wechsel von Palette 1 zu Palette 2 10 FUNCTION MAIN 20 PALET1 P1,P2,P3,3,5 30 PALET2 P11,P12,P13,5,3 40 FOR I=1 TO 15 50 JUMP PALET1(I) 60 ON 1 ; WAIT 0,5 70 JUMP PALET2(I) 80 OFF 1 ; WAIT 0,5 90 NEXT I 100 FEND Die Nummern der E/A-Ausgangsschnittstellen zum Bedienen des Greifers und die Anzahl der Palettenabschnitte sollten individuell eingestellt werden. 80 2.3 Techniken zum Verkürzen der Zykluszeit SPEL III stellt mehrere Befehle bereit, um die Zykluszeit zu verkürzen. Es gibt vier Methoden, die Zykluszeit zu verringern: • Bewegen zum höchstmöglichen Punkt • Ausführen übereinstimmender Prozeduren • Beseitigen überflüssiger Bewegungen • Beseitigen überflüssiger Positionen Benutzen einer Bogenbewegung Eine horizontale Bewegung wird während einer vertikalen Bewegung mit Hilfe des Befehls JUMP ausgeführt. Die Form der Bewegung kann frei gewählt werden: Vertikal ansteigende Strecke (a: mm) Vertikale Abwärtsbewegung (b: mm) Horizontale Bewegungshöhe (z: mm) Befehle: JUMP, ARCH, LIMZ Freies Einstellen des Zeitverhaltens bei Abschluß der Positionierung Definiert den Wert für den Bewegungsendpunkt und führt den nachfolgenden Befehl vor dem Zielpunkt aus. Die endgültige Position der Bewegung ändert sich nicht, auch wenn der Befehl FINE verwendet wird. Lediglich das Timing für das Ausführen des nächsten Befehls wird erhöht. Wählen Sie den besten Wert für Ihr System: ca. 500 bis 1000 Pulse für normale und 100 Pulse für Montageprozeduren. Befehl: FINE Parallele Prozesse Während der Anwendungen können anstelle Ihrer Auswahl die Ein- und Ausgaben der E/A und RS232C ausgeführt werden. <Beispiel> • • Öffnen und Schließen des Greifers während der pick-and-place-Anwendung (siehe Abbildung) Ein- und Ausschalten der Düse für Schreibvorgänge Befehl: !...! 81 Bedingter Stop während der Bewegung Wenn die Eingabebedingungen während der Bewegung eingerichtet sind, verlangsamt der Roboter sofort und hält an. Im Beispiel zeigen wir, daß der Stop auftritt, wenn die Bedingung „kein Werkstück“ während der pick-and-place-Anwendung anliegt. Wenn der Stop durch die Abwesenheit des Werkstücks auftritt, wird eine überflüssige Bewegung durch wiederholtes Versuchen verhindert. Befehle: <Beispiel> JUMP, SENSE, TILL JUMP mit TILL-Bedingung Montageanwendung mit langsamer Geschwindigkeit Wenn es während der Montage notwendig ist zu verlangsamen, sieht man oft Programmierungen mit JUMP- und GO-Befehlen, wie in Beispiel 1. Wird jedoch die Positionierung auf einmal durchgeführt, ist ein Einzel-Bewegungs-Befehl nicht passend, auch wenn FINE angewendet wird. <Beispiel 1> JUMP PN GO Pm In diesem Fall ist es sinnvoller, die Zykluszeit mit geschickter Verwendung des Befehls ACCEL zu verkürzen, bevor der JUMP-Befehl angewendet wird. <Beispiel 2> ACCEL 100,100, 100,100, 100,10 ;JUMP Pm Vereinigte Befehle Fünf Beispiele sind oben angegeben. Die vereinigten Befehle sind unten aufgeführt. Weitere Informationen erhalten Sie im SPEL III Referenzhandbuch. 82 • Bewegen mit größtmöglicher Geschwindigkeit: SPEED, SPEEDS, ACCEL, ACCELS, WEIGHT • Ausführen übereinstimmender Prozeduren !...! (Parallelprozeß), Multitasking • Beseitigen überflüssiger Bewegungen ARCH, LIMZ, SENSE, TILL • Beseitigen überflüssiger Positionen PASS, FINE, CMOVE, CARC 2.4 Benutzen von Positionsdaten Wenn Sie zwischen Positionsdaten umschalten müssen, weil ein Einzelprogramm zwei oder mehr Werkstücke bearbeitet, ist es sinnvoll, die werkstückspezifischen Daten in den Positionsdaten zu speichern. Es ist z.B. sinnvoll, wenn sich zwei verschiedene Arten von Werkstücken in der Anzahl von Werkstücken, die in einer Einzelpalette behandelt werden können, unterscheiden, oder wenn die Bearbeitungsgeschwindigkeit in Abhängigkeit von dem zu bearbeitenden Werkstück variiert. Um Koordinatenwerte von den Punktdaten zu erhalten, benutzen Sie die Funktionen CX(Pn), CY(Pn), CZ(Pn) und CU(Pn). <Beispiel> Geben Sie die Anzahl der Werkstücke als X von Punkt Nr. 190 der 1. Werkstück-Punktdatei ein (z.B.: 01WORK.PNT). Geben Sie außerdem die Bearbeitungsgeschwindigkeit in X, Y, Z und U von Nr. 191 ein. M P190=10,0,0,01 P191=100,100,20,50 Wie für Werkstück 1 geben Sie die Anzahl der Werkstücke als X von Punkt Nr. 190 der 2. WerkstückPunktdatei ein (z.B.: 02WORK.PNT). Geben Sie außerdem die Bearbeitungsgeschwindigkeit in X, Y, Z und U von Nr. 191 ein. M P190=12,0,0,01 P191=80,80,20,50 Sie erreichen die Daten in dem Programm wie folgt: M 1100 COUNT = CX(P190) 1110 SPD1 = CX(P191);ACL1 = CY(P191) Erreichen der Anzahl von Werkstücken, die von P190 in eine Palette geladen werden soll. Erreichen der Geschwindigkeit und Beschleunigung/Verzögerungswerte von P191. 1120 SPD2 = CZ(P191);SPD3 = CU(P191) M 1200 SPEED SPD1; ACCEL ACL1,ACL1 M 1500 FOR I = 1 TO COUNT 1510 JUMP PALET1(I) M 1590 NEXT M 1700 SPEED SPD2 1710 GO P10 1720 SPEED SPD1 M 1900 SPEED SPD3 1910 GO P11 1920 SPEED SPD1 M 83 3. Fehlerbeseitigung (Debuggen) 3.1 Fehlerbeseitigung im Multitasking Komfortable Befehle zur Fehlerbeseitigung SPEL II verfügt über viele Befehle, die bei der Fehlerbeseitigung in Multitasking-Programmen hilfreich sind. Diese Befehle werden im Befehlsmodus des SPEL Editors oder im Monitorfenster von SPEL for Windows ausgeführt. • XQT: Taskausführung • TSTAT: Anzeige des Taskstatus • TON/TOFF: Anzeige der ausgeführten Zeilennummer an der Steuerung und dem PC. • PRINT: Anzeige von Zeichenketten, Variablen, E/A, Speicher E/A. XQT-Befehl Der XQT-Befehl führt ein Programm aus. Wenn der Befehl per PC eingegeben wird, wird FUNCTION...FEND am Anfang des Programms als Task 1 ausgeführt. Der XQT-Befehl ist abgeschlossen, wenn Task 1 beendet ist. Daher kann der nächste Befehl erst dann eingegeben werden, wenn dieser Befehl beendet ist. Mit dem XQT-Befehl können Sie die Tasknummer des auszuführenden Programms, die FUNCTION und die Zeilennummer festlegen. Sie können einen Teil des Programms durch Eingabe der Zeilennummer ausführen lassen, um z. B. Einzelheiten zu überprüfen. Sie können auch den Befehl TSTAT verwenden (siehe unten) wenn Sie den Task festlegen. <Beispiel 1> >XQT !2,MAIN Start der FUNCTION MAIN als Task 2 > Es ist möglich, Befehle einzugeben, während das Programm abläuft. <Beispiel 2> >XQT !2,MAIN,2100-2200 Ausführen der Zeilen 2100 bis 2200 der FUNCTION MAIN. > TSTAT-Befehl Wenn der TSTAT-Befehl ausgeführt wird, wird der Status der Tasks 1 bis 16 angezeigt. Mit diesem Befehl können Sie die Ausführungsmodi aller Tasks anzeigen lassen. Im Befehlsmodus des SPEL Editors können Sie die Tasknummern von 2 bis 16 mit Hilfe des Befehls XQT festlegen und das Programm ausführen. <Beispiel> >XQT !2,MAIN >TSAT Task 1 Status QUIT Zeile 0 Task 9 Status QUIT Zeile 0 84 2 QUIT 100 10 QUIT 0 3 QUIT 250 11 QUIT 0 4 QUIT 0 12 QUIT 0 5 QUIT 0 13 QUIT 0 6 QUIT 0 14 QUIT 0 7 QUIT 0 15 QUIT 0 8 QUIT 0 16 QUIT 0 Zeigt die letzte Zeilennummer, die vor dem Status jeder Task, QUITE, RUN, HALT und TSTAT ausgeführt wurde. In SPEL für Windows können Sie den Status jedes Tasks im Fenster [Task Manager] überprüfen. Weitere Informationen erhalten Sie im SPEL für Windows Handbuch. TON/TOFF-Befehl Sie können die Programmreihenfolge ab der gegenwärtig ausgeführten Zeilennummer herausfinden. Es gibt eine LED an der Vorderseite der Steuerung, die die Zeilennummer anzeigt. Im Normalfall wird die Zeilennummer der Task 1 hier angezeigt. Wenn Sie den TON-Befehl anwenden, können Sie die Zeilennummern für andere als Task 1 anzeigen lassen. <Beispiel> >XQT !2,MAIN [1010] [1020] Zeigt die Zeilennummer, die ausgeführt wird. M PRINT-Befehl Die einfachste Technik zur Fehlerbehebung ist die Anzeige der Zeichenketten in der Mitte des Programms und deren Überprüfung. PRINT ist ein Befehl zum Anzeigen von Zeichenketten, Variablenwerte, Funktionswerte, etc. an der Programmiereinheit. <Beispiel> 1000 FUNCTION MAIN 1010 XQT !2,TASK2 1020 PRINT “Start Task2“ M 1200 1210 A = A + B + C PRINT “A = “,A M Folgendes wird angezeigt, wenn Sie das Programm ausführen: Start Task2 A = 100 85 4. Stapelverarbeitung In MS-DOS gibt es eine Verarbeitungsmöglichkeit, die „Stapelverarbeitung“ genannt wird. Diese Stapelverarbeitung führt automatisch Befehle und Anweisungen in der angegebenen Reihenfolge aus. Die Datei, die die auszuführenden Befehle enthält heißt Stapelverarbeitungs- oder Stapeldatei. SPEL III bietet die Verwendung von Stapeldateien wie MS-DOS. SPEL III Befehle und Anweisungen können in der Stapeldatei beschrieben werden. Die Dateierweiterung der Stapeldatei muß BAT sein. Durch diese Erweiterung wird sofort erkannt, daß es sich um eine Stapeldatei handelt, und die Befehle und Anweisungen, die in ihr enthalten sind, werden automatisch ausgeführt. Beim Ausführen der Stapelverarbeitung geben Sie den Namen der Stapeldatei wie einen Befehl ein. Zur Ausführung der Datei ist es jedoch nicht erforderlich, die Erweiterung (.BAT) mit einzugeben. Zum Bearbeiten der Stapeldatei kann der Befehl EDIT benutzt werden. Weitere Informationen zum EDITBefehl erhalten Sie im SPEL III Referenzhandbuch. 4.1 Befehle zur Stapelverarbeitung In SPEL III gibt es einen Befehl „ECHO“, mit dem die Anzeige der Befehle und Meldungen während der Stapelverarbeitung gesteuert werden kann. Er hat folgendes Format: Format: ECHO ON ECHO OFF ECHO [Meldung] Im Allgemeinen werden die festgelegten Befehle an der Konsole angezeigt. Der Befehl ECHO steuert diese Anzeige. Wenn der Befehl, der ausgeführt wird, angezeigt werden soll, geben Sie „ECHO ON“ ein, soll er nicht angezeigt werden, geben Sie „ECHO OFF“ ein. Im Normalfall ist die Anzeige im „ECHO ON“-Status. D.h., auch wenn Sie ECHO OFF eingeben, ändert sich der Status nach Ausführung der Stapeldatei automatisch in ECHO ON. Wird „ECHO [Meldung]“ eingegeben, wird die Meldung an der Konsole dargestellt. Auch wenn ein ECHO OFF-Zustand definiert ist und die Meldung angezeigt werden kann, ist es sinnvoll, die Meldung über den ausgeführten Befehl als Verzeichnis des ausgeführten Befehls angeben zu lassen. In [message] können alle Eigenschaften außer dem Steuerungscode (character codes 00H zu 1FH) verwendet werden. Im Falle der MS DOS-Anwendung, wenn der ECHO-Befehl ohne ON, OFF und [message] eingegeben ist, wird der aktuelle ECHO-Status zugeordnet. SPEL III bietet diese Funktion jedoch nicht an. Wenn Sie hier nur ECHO eingeben, werden die Leerzeichen deshalb als Meldung verstanden, und eine Zeile wird gewechselt. <Beispiel> Dateiname „ECHO.BAT“. 10 ECHO OFF 20 ECHO MESSAGE1 30 ECHO 40 ECHO ON 50 ECHO MESSAGE2 Wenn Sie das Beispielprogramm ausführen, wird das Ergebnis wie folgt aussehen: >ECHO MESSAGE1 `Meldung wird angezeigt `Veränderung der Zeile durch den Befehl ECHO MESSAGE2 86 `Meldung wird angezeigt Was den SPEL III-Befehl „ECHO“ von dem unter MS-DOS unterscheidet, ist, daß im ECHO ON-Status die ECHO-Anzeige nicht erscheint. Zum Beispiel in dem oben dargestellten Beispiel: Wenn dieselbe Stapeldatei unter MS-DOS läuft, werden die Ergebnisse wie folgt aussehen: >ECHO ECHO OFF MESSAGE1 `1) ECHO <OFF> `2) ECHO MESSAGE2 `3) MESSAGE2 1. Bevor Sie ECHO OFF ausgeführt haben, war der ECHO ON-Status eingestellt. Also wird dieser Status angezeigt. 2. Der gegenwärtige Einstellungsstatus von ECHO wird angezeigt. 3. Anzeige gemäß des ECHO ON-Status. (Die Zeichenkette von ECHO ON wird nicht angezeigt, solange der ECHO OFF-Status eingestellt ist.) Weitere Informationen zur Stapelverarbeitung und zur Anzeige der Stapeldateien erhalten Sie im MSDOS-Handbuch. 87 4.2 Stapeldatei Es gibt viele Befehle wie z.B. den COMMAND-Befehl, die nicht unter SPEL III ausgeführt werden können. Wenn diese Befehle aber in einer Stapeldatei beschrieben werden, dann können diese Befehle ausgeführt werden. Herstellen einer Stapeldatei Wenn Sie eine Stapeldatei editieren, dann müssen Sie zuerst den EDIT-Modus eingeben bei gleichzeitiger Spezifizierung des EDIT-Befehls. Siehe dazu das Kapitel 6.2 „Editieren von Dateien“ in diesem Teil des Handbuches. Die Stapeldatei wird mit der Erweiterung BAT versehen. Eine Datei kann nicht mit demselben Wort wie ein SPEL-Befehl bezeichnet werden, da der Befehl Vorrang hat. Direkt wirksame Befehle können in einer Stapeldatei definiert werden. Solche Befehle werden in einer bestimmten Reihenfolge ausgeführt. Sie können während der Arbeit mit einer Stapeldatei keine anderen Stapeldateien aufrufen. 88 5. Automatische Programmausführung bei Einschalten der Spannungsversorgung Es ist möglich, die Programmausführung automatisch zu starten, wenn die Spannungsversorgung eingeschaltet wird. Diese automatische Ausführung kann erreicht werden durch das Erstellen einer „AUTO.BAT“-Datei oder einer „IPL.OBJ“-Datei in dem Wurzelverzeichnis der aktuellen Steuerung. 5.1 Die AUTO.BAT-Datei Erstellen Sie diese Datei auf demselben Weg wie eine gewöhnliche Stapeldatei mit dem EDIT-Befehl. Aufgrund der Benennung dieser Datei mit „AUTO.BAT“ sind Sie in der Lage, die Befehle, die in der Datei gespeichert sind, automatisch auszuführen. (Zu Details des EDIT-Befehls siehe auch Kapitel 6.2 „Editieren von Dateien“.) <Beispiel> Ein Beispiel, die ausführbare Datei „MAINGRP“ automatisch nach dem Drehen des Reglers auszuführen >EDIT AUTO.BAT New file >10 XQT „MAINGRP“ >END Edit End...file save > Diese Stapeldatei kann unabhängig vom Startmodus ausgeführt werden. 5.2 Das IPL-Programm Beim Erstellen der Datei mit der Erweiterung IPL, kann XQT“IPL“ ausgeführt werden, wenn die Spannungsversorgung eingeschaltet ist. Der Start-Modus muß jedoch auf AUTO-Modus eingestellt sein. 89 6. Systemkonfigurationsdatei 6.1 CNFG.SYS-Datei Um den Computer effizient zu nutzen müssen Sie Systeminformationen in Übereinstimmung mit der Hardware und dem genutzten Programm definieren. Diese Informationen werden in der „CNFG.SYS“Datei beschrieben. Daneben wird in dieser Datei die Systemumgebung spezifiziert. Die Anforderungen, die in SPEL III definiert werden können sind die Kapazität des Fehlerhistorienspeichers, die Kapazität der Zeilenhistorie jedes Tasks und die maximale Anzahl der Benutzertasks. Wenn die „CNFG.SYS“-Datei nicht existiert, werden Standardwerte für die Systemkonfiguration angenommen. Die „CNFG.SYS“-Datei muß im Stammverzeichnis registriert werden. Selbst wenn die „CNFG.SYS“Datei in einem anderen Verzeichnis existiert wird sie nicht beachtet werden. TASK=k Spezifiziert die verfügbare Anzahl der Benutzertasks in k. k: Ganze Zahl zwischen 1 und 16 ERRBUF=m Speichert die Fehlerhistorie bis m. m: Ganze Zahl zwischen 1 und 20 LINBUF=n [ angenommener Standardwert:16] [angenommener Standardwert:20] Speichert die Zeilenhistorie jedes Tasks bis n. n: Ganze Zahl zwischen 1 und 512 [angenommener Standardwert:10] Wie bei den oben angegebenen Anforderungen wird der Systemspeicherbereich der Speicherkapazität in Byte wie unten angegeben zugewiesen. Benötigter Speicher [Einheit: Byte] Benutzertask (Spezifizierte Anzahl) x (ungefähr 1600) ERRBUF (Spezifizierte Anzahl) x 8 LINBUF (Spezifizierte Anzahl) x 6 x (Anzahl der durch TASK spezifizierten Tasks) Der Systemspeicherbereich wird benutzt, um den benötigten RAM zu sichern, der für die laufenden Tasks benötigt wird. Daher kann es sein, daß, wenn der „ERRBUF“ oder „LINBUF“ zu groß eingestellt sind, die Tasks nicht laufen. Achten Sie darauf, nicht mehr Platz als notwendig zu spezifizieren. Stellen Sie außerdem sicher, daß „TASK=k“ in der CNFG.SYS-Datei vor der Zeile „LINEBUF=n“ steht. Ist dies nicht der Fall, wird der für LINBUF gesicherte Bereich der für 16 Tasks sein. 90 6.2 Editieren von Dateien SPEL III bietet für das Bearbeiten von Textdateien ist (ausgenommen Programmdateien) den EDITBefehl an. Das Format des EDIT-Befehls ist wie folgt; Format: EDIT [Pfadname][Dateiname] Wenn Sie den EDIT-Befehl benutzen, wird in den Editmodus gewechselt und die Dateien können bearbeitet werden. Um eine Datei zu editieren, erstellen Sie Zeilen mit Zeilennummern, genau wie ein Programm erstellt wird. Es ist nicht notwendig, „FUNCTION (Funktionsname)“ und „FEND“ zu beschreiben. Im Editmodus ist es möglich, die unten aufgelisteten Befehle zu benutzen. LIST, RENUM, DELETE(DEL), NEW, FREE, COPY, RENAME(REN), CHDIR(CD), RMDIR(RD), MKDIR(MD), RENDIR, DIR, QUIT, END Wenn Sie in den Editiermodus wechseln, geben Sie den Pfad- und den Dateinamen an. Dann, wenn der Dateiname im Verzeichnis existiert, wird die Datei gelesen. END of input file Die oben gezeigte Meldung erscheint. Existiert der spezifizierte Dateiname nicht, NEW FILE erscheint die oben dargestellte Meldung. Das Editieren ist dann ist möglich. Um den Editiermodus wieder zu verlassen, können Sie den QUIT-Befehl benutzen (Ende ohne speichern)oder END (es wird gespeichert und dann beendet). Die folgenden Meldungen werden in den jeweiligen Fällen erscheinen. >QUIT Edit End... >END Edit End...file save > Die Programmeditierungsbereiche für den Editiermodus und für das Roboterprogramm sind unterschiedlich. Daher wird das Programm im Roboterprogrammierbereich nicht durch das Editieren einer Datei im Editiermodus behindert. EDIT-Befehle löschen Zeilennummern, wenn sie Daten speichern, und wenn sie Dateien lesen, werden die Zeilennummern wie 10, 20, 30....hinzugefügt. Daher weichen die Zeilennummern vor und nach dem Speichern voneinander ab. 91 <Beispiel> >EDIT CNFG.SYS New file >10 TASK=8 >20 ERRBUF=20 >30 LINBUF=256 >END Edit End...file save > G HINWEIS Wenn die Palette nicht definiert ist, tritt ein Fehler auf. Stellen Sie die drei Punkte ein, bevor Sie das Programm ausführen. Die Zeichenanzahl in einer Zeile ist bis zu 79, einschließlich der Zeilennummer, zulässig. Achten Sie darauf, daß die Anzahl der gelesenen Zeichen (Zeilennummern nicht eingeschlossen) 74 ist, alles darüber hinaus wird abgeschnitten. Die maximale Dateigröße, die editiert werden kann, ist 6 Kbyte. 92 7. RS-232C 7.1 Übersicht über die RS-323C Die Robotersteuerungen SRC-300/310A/320 haben eine RS-232C-Schnittstelle als Standardschnittstelle, und die Kommunikation wird durch die SPEL III Roboterprogrammiersprache unterstützt. Die RS232C-Schnittstelle kann für die folgenden Kommunikationsarten genutzt werden. • Kommunikationseingang für SPEL-Editor oder SPEL für Windows • Kommunikation zwischen Robotern • Kommunikation mit Benutzereinrichtungen • Kommunikation mit einem Hauptrechner Konfiguration Weil SPEL III asynchrone Kommunikation benutzt, müssen die verschiedenen Kommunikationseinstellungen (wie der Kommunikationsmodus, Protokoll und Baudrate) unter allen Kommunikationseinrichtungen dieselben sein. Diese Gruppe von Einstellungen wird „Konfiguration“ genannt. Kommunikationsmodus Der Kommunikationsmodus beinhaltet Datenbit-, Paritäts- und Stop-Bit-Einstellungen, die für die Übertragung von Daten per RS-232C-Schnittstelle gemacht sind. Protokoll Das Protokoll ist die Folge, in der die Daten zwischen den Kommunikationsstationen transferiert werden. SPEL III unterstützt „BASIC Protokoll“ und „TTY Protokoll“-Einstellungen. Das „BASIC Protokoll“ wird empfohlen, um die Zuverlässigkeit der Kommunikationsdaten zu sichern. Konfiguration für SPEL III Die SPEL III-Konfiguration kann über die folgenden Befehle eingestellt werden. Format: CONFIG #[port no.],[mode no.],[protocol no.],[timeout period],[baud rate no.] Schnittstellennummer 20 oder 21 (ganze Zahl zwischen 20 und 23 für erweiterte : Eingänge) Modusnummer. Ganze Zahl zwischen 0 und 47 Protokollnummer. Ganze Zahl zwischen 0 und 19 Baudratenummer. Ganze Zahl zwischen 0 und 7 Die folgenden Werte sind als Anfangswerte für den RS-232C-Eingang der Steuerung eingestellt. Dieselben Werte werden auch bei der Ausführung des VERINIT-Befehls eingestellt. Modusnummer: 2 (7 Bits, gerade Parität, 1 Stop Bit) Protokollnummer: 1 (BASIC Protokoll, zweite Station) Timeoutzeitspanne: 3 (3 Sekunden Timeoutzeitspanne) Baudratennummer: 0 (9.600 bps) 93 Schnittstellennummer Dies ist die Schnittstellennummer der RS-232C, die auf der Rückseite der Steuerung angebracht ist. Modusnummer Modusnummer 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Zeichenbits Parität Stop Bits 7 7 7 7 8 8 8 8 7 7 7 7 7 8 8 8 8 8 - EVEN ODD EVEN ODD NONE NONE EVEN ODD EVEN – ODD – NONE NONE NONE EVEN EVEN ODD ODD NONE - 2 2 1 1 2 1 1 1 1,5 1,5 2 1 1,5 2 1,5 2 1,5 1,5 - Modusnummer 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 Zeichenbits Parität 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 - EVEN EVEN EVEN ODD ODD ODD NONE NONE NONE EVEN EVEN EVEN ODD ODD ODD NONE NONE NONE - Stop Bits 2 1,5 1 2 1,5 1 2 1,5 1 2 1,5 1 2 1,5 1 2 1,5 1 - Zeichenbits Dies ist die Anzahl der Bits, die benutzt wird, um Textzeichen während der Datenübermittlung darzustellen. Parität Das Paritätsbit wird benutzt, um die Zuverlässigkeit der Datenkommunikation zu sichern. EVEN: ODD: NONE: Ein Paritätsbit wird hinzugefügt, so daß die Gesamtzahl von 1 in der Bit-Zeichenfolge eine gerade Zahl wird. Ein Paritätsbit wird hinzugefügt, so daß die Gesamtzahl von 1 in der Bit-Zeichenfolge eine ungerade Zahl wird. Es wird kein Paritätsbit hinzugefügt. Stopbits Das Stopbit zeigt das Ende der Datenübermittlung an. Tatsächlich zeigt es einen Bitzeitwert an, d.h. „1,5 Stopbits“ bedeutet die benötigte Zeit zur Übertragung von 1,5 Bits. 94 Protokollnummer Protokollnummer 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 G HINWEIS Protokoll TTY BASIC BASIC TTY TTY TTY TTY TTY BASIC2 BASIC2 TTY BASIC BASIC TTY TTY TTY TTY TTY BASIC2 BASIC2 Station 2 1 2 1 2 1 2 1 Funktionskontrolle des Speichers None XON/XOFF XON/XOFF XON/XOFF None None CS CS CS CS&XON/XOFF CS&XON/XOFF CS&XON/XOFF CS CS CS CS Terminator CR CR CR-LF LF CR-LF LF CR CR CR-LF LF CR-LF LF - Protokollnummern von 10 bis 19 sind in der Version 3.2 und früher von SPEL III nicht möglich. Timeoutzeitspanne Beim Verwenden des BASIC-Protokolls tritt ein Kommunikationsfehler (Error Code 31) auf, wenn die Daten nicht in der spezifizierten Zeitspanne empfangen werden. Diese spezifizierte Zeitspanne wird „Timeoutzeitspanne“ genannt. Baudratennummer Nr. der Baudrate Baudrate (bps) 0 9600 1 4800 2 2400 3 1200 4 600 5 300 6 19200 7 38400 95 Computerkonfiguration Der Computer, der über eine RS-232C-Schnittstelle angeschlossen ist muß dieselbe Kommunikationskonfiguration haben, wie die Robotersteuerung. Die Methode zur Einstellung der Konfiguration variiert abhängig vom verwendeten Computer. Prüfen Sie die Handbücher des verbundenen Computers und sein Betriebsystem wie z.B. MS-DOS (*1), führen Sie dann die selben Konfigurationseinstellungen am Computer und an der Steuerung durch. <Beispiel> Computer: IBM PC (oder kompatibel) Betriebssystem: MS-DOS Der Gerätetreiber von MS-DOS muß möglicherweise installiert werden, um eine Kommunikation über die RS-232C zu ermöglichen. Installieren Sie den Treiber, indem Sie folgende Zeile in die CONFIG.SYS-Datei schreiben: DEVICE=ANSI.SYS RS-232C-Kommunikation ist jetzt mit Nutzung der Diskette möglich, auf der das Gerät, wie oben gezeigt, installiert wurde. Sie müssen allerdings immer noch die Kommunikationkonfiguration einstellen, bevor Sie die RS-232C-Kommunikationen ausführen können. Stellen Sie sicher, daß die Konfigurationseinstellungen von Computer und Steuerung identisch sind. Wenn Sie zum Beispiel die Anfangssteuerungseinstellungen benutzen, stellen Sie die folgenden Konfigurationen an der DOS-Aufforderung des Computers auf.(A>). A>MODE COM1 : 9600, E, 8, 2 (*1) 96 MS-DOS ist ein eingetragener Markenname der Microsoft Corporation. TTY Protokoll und XON/XOFF Steuerung TTY Protokoll Das TTY-Protokoll wird wie „kein Protokoll“ behandelt, da es ein Protokoll ist, das einfach nur die Daten sendet, ohne zu überprüfen, ob der Empfänger bereit ist oder nicht. TTY fügt den Daten CR(&HOD) als Terminator zu. Wenn Übertragungsfehler oder andere Probleme auftreten, ist es unmöglich, die übermittelten Daten wiederzufinden, so daß man sehr vorsichtig bei der Benutzung von TTY sein muß. Statt dessen empfehlen wir das BASIC-Protokoll zu benutzen, da es die Überprüfung des Bereit-Status und die Fehlerfindung wie die Paritätsprüfung bereitstellt, die hilft, eine zuverlässige Kommunikation sicherzustellen. Details des BASIC-Protokolls werden auf der nächsten Seite beschrieben. XON/XOFF Steuerung Unter Verwendung des TTY-Protokolls, gibt es einen Überlauf des Empfangsspeichers, wenn die Datenverarbeitung an der Eingangsseite nicht reibungslos funktioniert. Die XON/XOFF-Steuerung ist eine Kontrollfunktion, die einen solchen Überlauf verhindert. Ablaufdiagramm der XON/XOFF-Steuerung 97 BASIC-Protokoll BASIC-Protokoll Die folgenden Regeln wurden für das BASIC-Protokoll erstellt, um eine größere Zuverlässigkeit zu erreichen. • Bevor die sendende Seite Daten übertragen kann, muß bestätigt werden, daß die empfangende Seite bereit ist, die Daten zu empfangen. • Ein Paritätsbit wird den zu übermittelnden Daten hinzugefügt. Die empfangende Seite nutzt das Paritätsbit, um nach Übertragungsfehlern zu suchen und der sendende Seite zu melden, wenn ein Fehler entdeckt wurde. Diese grundlegenden Regeln werden die „Übertragungssteuerung“ genannt. Das BASIC-Protokoll benutzt folgende Codes, um die Übertragungssteuerung zu implementieren. Bezeichnung Code Name STX &H02 Start des Textes ETX &H03 Ende des Textes EOT &H04 Ende der Übertragung ENQ &H05 Untersuchung ACK &H06 Bestätigung NAK &H15 Negative Bestätigung Ablaufdiagramm des BASIC Protokoll (*1) BCC: Steht für „Block Check Character“. Dieser Code wird benutzt, um Übertragungsfehler zu finden, die vom horizontalen Paritätswert des Textes und des ETX-Codes bestimmt werden (ein Wert, der den Text und den ETX-Code einschließt und wie ein ausschließliches OR berechnet wird). 98 <Beispiel> Wenn der Text „RUN“ gesendet wird (&H52,&H55,&H4E) BBC = (R) XOR (U) XOR (N) XOR (ETX) = (&H52) XOR (&H55) XOR (&H4E) XOR (&H03) = &H4A R 0101 0010 U 0101 0101 N 0100 1110 XOR)ETX 0000 0011 BCC= 0100 1010=&H4A BASIC2 Protokoll Der einzige Unterschied im BASIC2 Protokoll ist, daß nachdem die sendende Seite eine ACK-Code von der empfangenden Seite erhält, um einen normalen Empfang zu bestätigen, sendet die sendende Seite einen EOT-Code. Ablaufdiagramm des BASIC2-Protokolls Station (Kollision gesendeter Daten) Wenn zwei Leute gleichzeitig eine Konversation zur gleichen Zeit beginnen, ist es für keinen von beiden möglich, eine Nachricht zu übermitteln. Einer muß aufhören zu reden und dem anderen erlauben, zu sprechen. Genauso kann es bei der Nutzung vom BASIC Protokoll passieren, daß beide Seiten eine Datenübermittlung zur selben Zeit beginnen. In diesem Fall kollidieren die beiden zu übermittelnden Datensätze miteinander. Um genau zu sein, werden zwei ENQ-Codes zur selben Zeit gesendet, und diese beiden kollidieren miteinander. Um solche Kollisionen zu vermeiden, wird den beiden Stationen entweder der „erste-Station-Status“ oder der „zweite-Station-Status“ zugewiesen. Wenn eine Kollision erfolgt, sendet die „erste Station“ zuerst die Daten noch einmal. Die „zweite Station“ hält die versuchte Datenübermittlung im Pausenzustand, bis sie die Übertragung der ersten Station erhält und sendet dann die Daten erneut. 99 Übertragungssteuerung per CS-Pin Wie schon zuvor erwähnt, tritt ein Überlauf des Datenspeichers ein, wenn die Datenverarbeitung an der Eingangsseite nicht reibungslos funktioniert. Die XON/XOFF-Steuerung des TTY Protokoll stellt eine Methode dar, um einen solchen Überlauf durch Kontrolle des „Speicher beschäftigt“-Zustands zu verhindern. Dies wird durch Übertragen und Empfangen von Softwarecodes (DC1 und DC3) ermöglicht. Der CS-Pin stellt eine Hardwaremethode bereit, die den „Speicher beschäftigt“-Zustand steuert. Der CS-Pin wird der RS-232C-Schnittstelle Pinnummer 5 zugeordnet, das das Eingabesignal, das den „frei zur Sendung“-Status bestätigt, kontrolliert. Wird der CS-Eingang auf „L“ eingestellt, können die Daten, für die die Übertragung ermöglicht wurde, ausgegeben werden. Ist der Eingang auf „H“ gestellt, wird die Übertragung unterdrückt (nicht möglich). Im Normalfall speisen die Steuerung und das andere angeschlossene Zubehör ihre RS-Ausgabe (Pinnummer 4, die immer auf „L“ gestellt ist) direkt in ihren CS-Pin, wenn die CS-Steuerung nicht benutzt wird, so daß die Übertragung durchgehend möglich ist (siehe in der Beschreibung unten). Wenn Sie die CS-Steuerung benutzen, ist der CS-Ausgang des verbundenen Zubehörs mit dem CS-Pin der Steuerung verbunden. Dieser Ausgang ist auf „L“ gestellt , um eine Übertragung zu ermöglichen und auf „H“, um die Übertragung nicht zu unterdrücken. G HINWEIS Für die Protokollnummern 0-9 kann der CS-Pin nicht zur Übertragungssteuerung genutzt werden: Sogar wenn der CS-Eingang auf „H“ gestellt ist, kann es die Übertragung nicht steuern. G HINWEIS Eine Übertragungssteuerung durch den CS (frei zur Sendung) Pin ist im SPEL III Version 3.2 oder früheren Versionen nicht möglich. RS Steuerung Der RS-Ausgang ist immer auf „L“ gestellt, ungeachtet davon, ob er genutzt wird oder nicht. Daher ist es nicht möglich, die Steuerung Übertragungen zum verbundenen Zubehör der empfangenden Seite steuern zu lassen. Wenn Sie das TTY-Protokoll ohne die XON/XOFF Steuerung benutzen, beachten Sie, daß ein Datenstau auftreten kann, wenn Sie eine große Datenmenge vom angeschlossenen Zubehör zur Steuerung senden wollen. Anmerkung: CS Übertragung, wenn Sie das BASIC Protokoll benutzen Die Robotersteuerung benutzt einen seriellen Sonderchip, um RS-323C Kommunikationen zu steuern. Dieser Chip empfängt Anweisungen von der CPU und sendet Daten zum angeschlossenen Zubehör in Übereinstimmung mit dem Kommunikationsprotokoll, und transferiert die Daten zur CPU. So reduziert der serielle Chip die Arbeitslast des CPU während des Kommunikationssteuerungsbetriebs. Eine Übertragungssteuerung per CS-Signal kann mit dem seriellen Chip durchgeführt werden. In diesem Fall sendet das BASIC Protokoll aber, wie unten beschrieben, zwei ENQ-Codes. Wenn der CPU einen ENQ-Code sendet, während das CS-Signal auf H eingestellt ist, wird der ENQCode vom seriellen Chip empfangen, kann aber nicht zum angeschlossenen Zubehör gesendet werden und wird statt dessen intern gespeichert. Die CPU erkennt dann, daß keine Antwort vom verbundenen Zubehör erhalten wurde und nach einer spezifizierten TimeoutZeitspanne, sendet sie erneut einen ENQ-Code. Hat der serielle Chip einmal einen ENQ-Code erhalten (den er nicht senden kann), bleibt er im Standby-Status bis der ENQ-Code gesendet werden kann. Wenn das CS-Signal auf L eingestellt ist, werden zwei ENQ-Codes, die von der CPU gesendet wurden, vom seriellen Chip zum angeschlossenen Zubehör gesendet. 100 RS-232C Schnittstelle Die RS-323C Signalzeilen sind unten aufgeführt. Pinnummer (D-Sub 9) Pinnnummer (D-Sub 25) Bezeichnung E/A Signalname 1 8 CD Eingang Trägerkennung 2 3 RD Eingang Datenempfang 3 2 SD Ausgang Datensendung 4 20 ER Ausgang Zubehör bereit 5 7 SG - Signalerde 6 - - - - 7 4 RS Ausgang Sendungsanfrage 8 5 CS Eingang Frei für Sendung 9 - - - 6 DR - 1 FG - - Eingang Datensatz bereit - Erde FG (Erde) Erde für Wartungszwecke und zur Sicherheit. SD (Datensendung) Dies ist eine serielle Datensignalkette, die Daten an die empfangende Seite sendet. RD (Datenempfang) Dies ist eine serielle Datensignalzeile, die Daten von der sendenden Seite empfängt. RS (Sendungsanfrage) Wenn der Ausgang auf „L“ gestellt ist, funktioniert die RS-Steuerung nicht. Wird das CS-Signal nicht für die Datenübertragung benutzt, ist der RS Ausgang der Eingang zum CS-Pin. CS (Frei zur Sendung) Dieses Signal liefert eine Meldung, daß die Übertragung möglich ist. Wird das CS-Signal zur Übertragungssteuerung genutzt, ist die Übertragung möglich, wenn das Signal auf „L“ gestellt ist, und wird unterdrückt, wenn das Signal auf „H“ steht. ER (Zubehör bereit) Diese Signal informiert das Zubehör, daß die Übertragung möglich ist. Es ist auf ON (L) gestellt, wenn die Robotersteuerung hochgefahren wird. Wenn Sie MS-DOS benutzen, wird es auf ON gestellt, wenn der RS-323C-Treiber installiert ist. DR (Datensatz bereit) Das Signal wird auf ON gestellt, wenn das verbundene Zubehör bereit ist zur Datenübertragung. CD (Trägerkennung) Das Signal wird auf ON gestellt, wenn der Fernsteuerungsträger normal empfangen wird. 101 • Anfertigung von sich kreuzenden Kabeln Die RS-323C Schnittstelle ist ein Standard, der zur Verbindung von DTEs und DCEs(*1) entwickelt wurde. Die RS-323C-Schnittstelle wird für die serielle Kommunikation zwischen verschiedenen Arten von Zubehör benutzt. Natürlich benutzen unterschiedliche Einrichtungen die Signalketten unterschiedlich, und deshalb ist eine unterschiedliche Verdrahtung erforderlich. (*1) DTE steht für Data Terminal Equipment, wie z.B. Computer. DCE steht für Data Circuit Terminating Equipment, wie z.B. Modems. Verdrahten Sie die Kabel gemäß der folgenden Verdrahtungspläne. <Plan 1: CS-Steuerung wird nicht verwendet> (*2) Die Anwendereinrichtung in dem oberen Plan bezieht sich auf Einrichtungen (wie PCs oder Anzeigesysteme), die die RS-323C Schnittstelle benutzen. <Plan 2: CS-Steuerung wird verwendet> Im zweiten Verdrahtungsplan benutzt der CS-Eingang auf der Steuerungsseite den RS-Ausgang der Anwendereinrichtung, aber die Verdrahtung kann geändert werden, so daß sie zur Steuerungsmethode der Anwendereinrichtung paßt. Da die Steuerung die RS-Steuerung nicht ausführt, kann die Steuerung nicht zur Übertragungssteuerung von der Anwendereinrichtung genutzt werden 102 • Herstellung von Steckanschlüssen an Kabeln Das Abschirmen sollte wie folgt behandelt werden. 1.) Nach dem Entfernen der Abschirmung befestigen Sie einen Kabelbinder an dem Kabel. 2.) Befestigen Sie die Kappe auf dem Steckanschluß. 103 7.2 Die Kommunikation zwischen den Robotern Wenn ein System hergestellt wird, welches verschiedene Roboter einschließt, dann wird eine Art ineinandergreifender Mechanismus benötigt, um die Datenübertragung oder andere Abläufe zwischen zwei oder mehr Robotern zu gewährleisten. Die Verbindung der Roboter über die RS-232C-Schnittstelle ermöglicht, daß Roboter-Tätigkeiten über das Anwenderprogramm spezifiziert und ausgeführt werden können. Konfigurationseinstellungen G HINWEIS Wenn Sie die RS-232C-Schnittstelle für die Kommunikation nutzen, muß dieselbe Konfiguration an beiden Kommunikationsstationen eingestellt sein. Verwenden Sie den CONFIG-Befehl (beschrieben in dem Kapitel 7.1), um die Konfiguration einzustellen. Stellen Sie sicher, daß eine Station als Primärstation und die andere als Sekundärstation eingestellt ist, wenn Sie das BASIC-Protokoll verwenden, um eine Kollision während der Datenübertragung zu vermeiden. Kommunikationsbezogene Befehle Verwenden Sie kommunikationsbezogene Befehle, die von SPEL III unterstützt werden, um die Kommunikation zwischen den Robotern einzustellen und um sie ausführen zu können. Diese SPEL IIIunterstützten Befehle sind wie folgt. PRINT # Datenausgabe an die serielle Schnittstelle. INPUT # Dateneingabe von der seriellen Schnittstelle. LINE INPUT # Fügen Sie eine Zeile Eingangsdaten von der seriellen Schnittstelle als eine Zeichenkettenvariable ein. CONFIG Stellen Sie die Konfiguration der RS-232C-Schnittstelle ein. LOF( ) Sorgt für die Rückgabe der Zeilenanzahl der erhaltenen Daten im RS-232CSpeicher. CONSOLE Konsolenspezifizierung, wenn der S.NET-Modus eingestellt ist. STAT( ) Ermöglicht die Wiederherstellung des Status‘ der Steuerung, die über die RS232C-Schnittstelle angeschlossen ist. Spezielle Anwendungsmethoden für kommunikationsbezogene Befehle Dieser Abschnitt beschreibt vier typische kommunikationsbezogene Befehle. • Datenübertragung • Überprüfung der Dateneingabe • Lesestatus • Ineinandergreifen der Roboter Alle vier Befehle werden unter folgenden Umständen wirksam. Roboter A RS-232C-Schnittstelle #20 104 ←→ Roboter B RS-232C-Schnittstelle #20 • Datenübertragung Verwenden Sie die PRINT- und INPUT-Befehle für die Übertragung von numerischen Daten zwischen den Robotern. <Beispiel 1> Das Ausgabebit (1 oder 2) von Roboter A ist auf ON eingestellt, gemäß dem numerischen Wert (1 oder 2), der von Roboter B gesendet wurde. Roboter A 100 INPUT #20,A 110 IF A=1 THEN ON1 120 IF A=2 THEN ON2 Roboter B 100 PRINT #20,A <Beschreibung> Roboter A erhält Daten von Roboter B, und das Ausgabebit von Roboter A ist gemäß dem erhaltenen Datenwert auf ON eingestellt. Wenn Roboter A den INPUT-Befehl ausführt, bevor er Daten von Roboter B erhalten hat, wird Roboter A mit der Ausführung des INPUT-Befehls warten, bis er die Daten von Roboter B erhält. Alternativ kann Roboter B den PRINT-Befehl verwenden, um Daten zu senden, bevor Roboter A seine Dateneingabe beginnt. • Wenn Sie das BASIC-Protokoll verwenden, können bis zu 20 Datenmeldungen im voraus gesendet werden. Wenn Roboter B mehr als 20 Meldungen im voraus sendet, wartet er mit der Ausführung des PRINT-Befehls, bis Roboter A die Meldungen über den INPUT-Befehl angenommen hat. • Wenn Sie die XON/XOFF-Steuerung mit einem TTY-Protokoll verwenden, können bis zu 20 Meldungen plus 80 Datenbytes im voraus gesendet werden. Wird diese Menge jedoch überschritten, wartet Roboter B im PRINT-Befehl, bis Roboter A die Meldungen über den INPUT-Befehl angenommen hat. • Wenn Sie nicht die XON/XOFF-Steuerung mit dem TTY-Protokoll verwenden, kann dann ein Überlauf auftreten, wenn mehr als 20 Meldungen plus 120 Datenbytes erhalten werden. • Wenn Sie die PRINT- und INPUT-Befehle verwenden, muß die Anzahl der PRINTAusführungen dieselbe sein wie die der INPUT-Ausführungen. Die Anzahl der numerischen Datenketten, die vom PRINT-Befehl bearbeitet wird, muß ebenfalls dieselbe sein wie die Anzahl, die durch den INPUT-Befehl bearbeitet wird. Stimmt die Anzahl der Datenketten nicht überein, tritt ein Fehler auf (Fehler 30). 105 • Überprüfung der Dateneingabe Wenn der INPUT-Befehl ausgeführt wird, wartet der Roboter solange mit der Ausführung des INPUTBefehls, bis die Daten empfangen wurden. Das ist jedoch nicht besonders effizient, um das Programm zu implementieren. Eine effizientere Methode ist die Verwendung der LOF( )-Funktion, um die Menge der erhaltenen Daten zurückzusenden. <Beispiel 2> Verwenden Sie die LOF( )-Funktion, um zu überprüfen, ob die Daten von Roboter B zu Roboter A gesendet wurden oder nicht. Wurden die Daten gesendet, führt der Roboter den INPUT-Befehl aus, um die Daten einzugeben. Wurden die Daten nicht gesendet, führt der Roboter andere Arbeiten aus. 100 110 200 Roboter A IF LOF(20) =0 THEN GOSUB 200 ELSE GOSUB 1000 GOTO 100 Roboter B 100 PRINT #20,A ′PROGRAM1 M 900 RETURN M 1000 INPUT #20,A M 1100 RETURN <Beschreibung> Bevor der INPUT-Befehl ausgeführt wird, verwendet Roboter A die LOF( )-Funktion, um die empfangenen Daten zu überprüfen. Wurden die Daten empfangen, führt der Roboter den INPUT-Befehl mit den eingefügten Daten als Variable A in der Zeile 1000 aus. Nach Zeile 1000 wird das Programm ausgeführt. Wurden die Daten nicht empfangen, führt Roboter A das Unterprogramm ab Zeile 200 aus und kehrt dann zu Zeile 100 zurück. 106 • Lesestatus Werden Operationen von zwei oder mehr Robotern ausgeführt, kann die Programmierung der Tätigkeiten eines Roboters erfordern, daß er in der Lage ist, die Tätigkeiten der anderen Roboter zu kontrollieren. In diesem Fall können Sie die STAT( )-Funktion verwenden, um den Status der anderen Roboter, die über die RS-232C-Schnittstelle angeschlossen sind, zu überprüfen. Bei der Ausführung der STAT( )-Funktion, wird die Statusinformation des Zielroboters als 3-Byte-Daten empfangen. Verwenden Sie den AND-Befehl, um die Statusbits in den Daten zu verbergen und die Information herauszuziehen. Bit 0 bis15 16 17 18 19 bis 23 Steuerungsstatus, wenn der Bit-Status auf ON eingestellt ist Status der E/A-Speicherbits 0 bis 15 ist ON Status der Startausgabe von REMOTE2 ist ACTIVE Status der Pausenausgabe von REMOTE2 ist ACTIVE Status der Fehlerausgabe von REMOTE2 ist ACTIVE Undefiniert <Beispiel 3-1> Stellen Sie eine bedingte Verzweigung basierend auf der Status-Bit-Information des anderen Roboters ein (E/A-Speicherbit 7). Roboter A 100 A=STAT(20) AND &H80 110 IF A<>0 THEN GOTO 1000 100 Roboter B IF SW(3) =1 THEN ON $7 ELSE OFF $7 M 1000 ′PROGRAM1 <Beschreibung> Nachdem Roboter A die Statusinformation von Roboter B erhalten hat, geben Sie den AND-Befehl ein, um die Statusbits zu verbergen und den Status des E/A-Speicherbits 7 zu überprüfen. Wenn das E/ASpeicherbit 7 von Roboter B auf ON eingestellt ist, führen Sie das Programm beginnend in Zeile 1000 aus. Alternativ kann der Status der Eingabe der Bit-Nummer 3 von Roboter B genutzt werden, um den E/A-Speicherstatus auf ON oder OFF einzustellen. <Beispiel 3-2> Stellen Sie eine bedingte Verzweigung ein, die auf der Status-Bit-Information (Fehlerausgabe) des anderen Roboters basiert. Roboter A 100 A=STAT(20) AND &H40000 110 IF A<>0 THEN GOTO 1000 M 1000 ’ERR1 Roboter B M M M <Beschreibung> Roboter A überprüft die Fehlerausgabe von Roboter B. Wenn ein Fehler bei Roboter B aufgetreten ist, führen Sie ab Zeile 1000 das beschriebene Fehlerverarbeitende Programm aus. 107 • Sperre zwischen den Roboter Teilen sich zwei oder mehr Roboter dieselben Positionsdaten, wird eine Sperre benötigt, um Kollisionen zwischen den Roboterarmen zu vermeiden. Der E/A-Speicher kann genutzt werden, um solch eine Sperre einzurichten. <Beispiel 4> Roboter A und Roboter B teilen sich den Punkt P1. Beide können arbeiten, wenn die folgende Sperre verwendet wird. Roboter A 100 FUNCTION ROBOT1 110 HOME 120 130 140 150 160 170 ON #20, $2 WAIT SW($1) =1 OFF $1 JUMP P1; JUMP P2 GOTO 120 FEND 100 110 120 130 140 Roboter B FUNCTION ROBOT2 HOME WAIT SW($2) =1 OFF $2 JUMP P1; JUMP P3 150 ON #20, $1 160 GOTO 120 170 FEND Hinweis: P1 ist der Positionierungspunkt, der von Roboter A und Roboter B geteilt wird. P2 und P3 sind Positionierungspunkte innerhalb der Sicherheitszone, um Kollisionen der Roboterarme vorzubeugen. <Beschreibung> Roboter A’s E/A-Speicherbit 1 und Roboter B’s E/A-Speicherbit 2 werden als Markierung für die Sperre genutzt. Hat Roboter A die Zeile 120 erreicht und der E/A-Speicher von Roboter B wurde auf ON eingestellt (was den Betrieb von Roboter B ermöglicht), dann wartet Roboter A an der Zeile 130, bis sein eigener E/A-Speicher auf ON eingestellt wurde. Nachdem Roboter B seine Tätigkeit an dem gemeinsamen Positionierungspunkt (P1) abgeschlossen hat, springt er zum Positionierungspunkt P3, der sich in der Sicherheitszone befindet. Dann wird der E/A-Speicher von Roboter A auf ON eingestellt (was den Betrieb von Roboter A ermöglicht). Somit kann eine Sperre unter Verwendung von „ON #m, $n“ oder „OFF #m, $n“ eingerichtet werden, um den E/A-Speicher des anderen Roboters zu verändern. 108 7.3 Kommunikation zwischen Robotern und Anwendereinrichtungen Jedes System, das einen Roboter verwendet, benötigt möglicherweise die Übertragung numerischer oder Textdaten zwischen der Anwendereinrichtung (z.B. Computer, visuelle Systeme, etc., die eine RS-232CSchnittstelle benutzen) und dem Roboter. In diesem Punkt wird beschrieben, wie das Senden und Empfangen von Daten funktioniert. Datenformat Der ASCII-Code ist das Datenformat, welches für die Übertragung der Daten verwendet wird. <Beispiel 1> Der ASCII-Code für „8“ ist „&H38“ und für „+“ „&H2B“. Der empfangene ASCII-Code wird direkt als Zeichenkette genommen, so daß diesem Format keine besondere Beachtung geschenkt werden muß. Es ist jedoch wichtig das Ausdrucksformat und die wichtigen Ziffern beim Senden oder Empfangen von numerischen Daten zu beachten. Darüber hinaus muß die sendende Seite numerische Daten senden, die sich innerhalb eines von der empfangenden Seite festgelegten Bereichs befinden. Das Roboter-Ausgabeformat für zu sendende Daten und das EingabeFormat für zu empfangende Daten sind beide vordefiniert. Sie müssen daher sicherstellen, daß sich die zu übermittelnden Daten im Definitionsbereich befinden. <Beispiel 2> Sendende Seite Empfangende Seite Zeichendatenübertragung A → &H41 → &H41 →A Übertragung numerischer Daten -12,345E-1 → ASCII-Daten → ASCII-Daten →? Während der Übertragung numerischer Daten konvertiert die sendende Seite die numerischen in ASCIIDaten und sendet dann die Daten an die empfangende Seite. Die empfangende Seite muß dann die Daten wieder in numerische Daten konvertieren. Wenn jedoch die empfangende Seite ASCII-Daten empfängt, die nicht genau den konvertierten numerischen Daten entsprechen, können die resultierenden numerischen Daten von den ursprünglich gesendeten abweichen. Nachfolgend finden Sie die Ein- und Ausgabeformate der Robotoren: - Eingabeformat: Siehe Eingabeformat beim Senden von der Anwendereinrichtung zum Roboter - Ausgabeformat: Siehe Ausgabeformat beim Senden vom Roboter zur Anwendereinrichtung 109 • Eingabeformat Numerische Ausdrücke Die folgenden Anzahlen von Zeichen können genutzt werden. Formale Zahlen: 7 Ziffern Bezeichnende Zahlen: 6 Ziffern Die folgenden Ausdrucksformate werden unterstützt. <Beispiel> Eingabeformat +123,12 0,12345E1 -97,156E-1 -97 0,1267 Eingabedaten 123,12 1,2345 -9,7156 -97 0,1267 Datenausdrücke Die Zahlen, die in einer Zeile der Eingabedaten enthalten sind, werden als Variablen gemäß den folgenden Regeln gehandhabt. Abgesehen von „±“ werden alle Zeichen und Leerzeichen, die auf eine Zahl folgen, ignoriert. Wenn zwei oder mehr Zahlenwerte vorhanden sind, muß wenigstens ein Begrenzer(*1) zwischen jedem Paar der Zahlenwerte eingefügt werden. Wenn ein Zeichen (wie beispielsweise ein Buchstabe) auf eine Zahl folgt, werden alle Daten bis zum nächsten Begrenzer ignoriert. Wird „E“ als Vertreter verwendet, wird es als eine Zahl angesehen. (*1) Leerzeichen oder Kommata können als Begrenzer verwendet werden. <Beispiel 2> Eingabedaten DV-123,56E-3 +123,45E-3 -97,45 A0=95,62 A1=87,654 • Erkannter Zahlenwert -123,56 x 10-3 123,45 x 10-3 und –97,45 0 und 1 Ausgabeformat Die Robotersteuerung drückt numerische Ausgabedaten nach den folgenden Regeln aus. Ganze Zahlenwerte werden als ganz ausgegeben. Ein Leerzeichen wird für positive Werte eingefügt. Reale Zahlenwerte werden als reale Zahlen ausgegeben. Aber wenn die Anzahl der Ziffern zu groß ist, wird der ausgegebene Datenausdruck wie folgt normalisiert (wenn die formale Zahl 7 Ziffern überschreitet). ± , Ε± Wurden verschiedene Zahlenwertreihen ausgegeben, wird ein Leerzeichen zwischen jeder Zahlenwertreihe eingefügt 110 Programm für die Kommunikation mit dem Anwendereinrichtung • Kommunikation mit dem TTY-Protokoll Die Kommunikation mit dem TTY-Protokoll ist eine Methode, bei der ein CR-Code (&H0D) als Terminator zu den Daten hinzugefügt wird (wie bereits in Kapitel 7.1 beschrieben). <Beispiel> Inhalt der Übertragung Senden von „8“ und „7“ Senden von „12“ Senden von „-1,3“ G HINWEIS • Darstellung der gesendeten Daten (&H38) (&H20) (&H37) (&H0D) (&H31) (&H32) (&H0D) (&H2D) (&H31) (&H2E) (&H33) (&H0D) Bei der Kommunikation mit dem TTY-Protokoll gibt es keine Fehlerkorrekturmethode für Probleme wie z.B. Übertragungsfehler. Deshalb sollte statt dessen das BASIC-Protokoll verwendet werden, wann immer es möglich ist. Kommunikation mittels des BASIC-Protokolls Die Kommunikation mittels des BASIC-Protokolls ist eine verläßlichere Kommunikationsmethode, die einen Ermittlungscode (ENQ) und Kontrollzeichen (STX, ETX und BCC) zur Datenübertragung hinzufügt (siehe auch Kapitel 7.1). Die beiden unten gezeigten Ablaufdiagramme beschreiben ein Roboterkommunikationsprogramm, daß das BASIC-Protokoll nutzt. Kreieren Sie ein auf diesen Ablaufdiagrammen basierendes Programm, wenn Sie numerische Daten zwischen den Robotern übertragen wollen. Ablaufdiagramm 1: Um Daten mit Hilfe des BASIC-Protokolls zu senden 111 Nachdem ein ENQ-Code gesendet wurde, wartet die sendende Seite auf die Rückgabe eines ACK-Codes. Wird der ACK-Code nicht innerhalb einer bestimmten Zeitspanne zurückgesendet, tritt ein Timeoutfehler auf. Wird jedoch ein ACK-Code zurückgegeben, dann schickt die sendende Seite eine Datenkette, die von STX- und ETX-Codes umgeben ist und von einem BCC-Code ergänzt wird. Schließlich akzeptiert die sendende Seite den ACK-Code und beendet die Übertragung (normaler Abschluß). Wird der ACK-Code jedoch nicht zurückgeschickt, versucht die sendende Seite dreimal, die von STX- und ETX-Codes umgebenden Daten zu übermitteln. Wenn, nachdem ein ENQ-Code gesendet wurde, ein ENQ- anstatt eines ACK-Codes zurückgegeben wurde, ereignet sich ein Übertragungsfehler. In diesem Fall überträgt die sendende Seite einen NAKCode. Handelt es sich um eine Primärstation, wird nach dem Empfang des NAK-Codes erneut ein ENQCode gesendet. Handelt es sich jedoch um eine Sekundärstation, erhält sie von der Primärstation alle übertragenen Daten und sendet dann einen weiteren ENQ-Code. Ablaufdiagramm 2: Um Daten mit Hilfe des BASIC-Protokolls zu erhalten Die empfangende Seite wartet auf einen ENQ-Code. Erhält sie ihn, sendet sie einen ACK. Dann erhält die empfangende Seite Daten, die von STX- und ETX-Codes umgeben sind und verwendet den BCCPrüfsummen-Code für die Fehlerkontrolle. Wurden keine Fehler gefunden, sendet diese Seite einen ACK-Code und beendet die Tätigkeit. Weist der BCC-Prüfsummen-Code auf einen Fehler hin, überträgt sie einen NAK-Code und wartet auf eine weitere, von STX- und ETX-Codes umgebende Datenkette, die gesendet werden soll. Werden in einer bestimmten Zeitspanne keine Daten gesendet, tritt ein Timeoutfehler auf. Wenn der ETX-Code nicht empfangen wurde, tritt der Timeoutfehler oder der Speicherüberlauffehler auf. 112 Beispiel für ein BASIC-Programm Das folgende ist ein Kommunikationsprogramm, das in der BASIC-Programmiersprache geschrieben wurde und das BASIC-Protokoll verwendet. Um Daten zu senden, stellt dieses Programm die Datenübertragung auf die Zeichenkette „SEND$“ ein und ruft ein Übertragungsunterprogramm auf, das in der Zeile 2000 startet. Um Daten zu empfangen, ruft dieses Programm ein Empfangsunterprogramm auf, das in der Zeile 3000 beginnt und die empfangenen Daten auf die Zeichenkette „RCVCHR$“ einstellt. <Beispiel für ein in BASIC geschriebenes Kommunikationsprogramm> 113 7.4 Die Kommunikation zwischen Hauptrechner und Roboter Bei der Konfiguration eines Systems, das einen oder mehr Roboter einschließt, kann es sein, daß der Roboter nicht nur mit der Anwendereinrichtung kommunizieren können muß (z.B. Übertragung numerischer Daten), sondern auch mit einem Computer, der als Hauptrechner fungiert und dadurch Tätigkeiten des Roboters (wie die folgenden) steuert. • Aktivierung und Abschalten des Roboters • Programmübertragung • Lesen des Roboterstatus‘, etc. Dieses Kapitel beschreibt, wie ein Programm hergestellt wird, daß den Computer befähigt, als Hauptrechner zu funktionieren. Die Konsole Um den Computer zu befähigen, als Hauptrechner zu funktionieren, muß der Computer als Konsole (Haupteinrichtung für die Ein- und Ausgabe) im AUTO-Modus spezifiziert werden. In diesem Fall bedeutet „Konsole“ einfach die Einrichtung, um den Roboter zu steuern. Weitere Informationen erhalten Sie in Kapitel 1.4 „Modus“ in der Einführung zur Konsole. G HINWEIS Der Hauptrechner sollte über die RS-232C-Schnittstelle Nr. 20 oder 21 der Steuerung angeschlossen sein. Dazu müssen Sie die Schnittstelle mit dem PC als Konsole anschließen. Die bedingten Erweiterungen der RS-232C-Schnittstelle (Schnittstellen Nr. 22 und 23) können nicht für die Konsole verwendet werden. Das Folgende ist ein Beispielablauf, um die RS-232C-Schnittstelle (Nr. 20 oder 21) als Konsole zuzuweisen. <Beispiel> Zuweisungsablauf für die RS-232C-Schnittstelle Nr. 20 als eine Konsole 1. Verwenden Sie den SPEL-Editor oder SPEL für Windows, um die Konfiguration der RS-232CSchnittstelle für die Konsole einzurichten. >CONFIG #20,2,1,3,0 2. ′Der Wert nach #20 ist abhängig vom PC. Spezifizieren Sie die Konsole für den AUTO-Modus. >CONSOLE #20 3. Verbinden Sie den Hauptrechner mit der RS-232C-Schnittstelle Nr.20, stellen Sie den Betriebsmodus der Steuerung auf AUTO ein. Dann ist die Konsole der RS-232C-Schnittstelle Nr. 20 zugewiesen. In diesem Fall wird der Modus als S.NET bezeichnet. 4. Führen Sie die Einrichtung nicht aus, wenn der PC an die RS-232C-Schnittstellen Nr. 20 oder 21 angeschlossen ist, weil der Notschalter in diesem Fall nicht als Notschalter funktioniert. Unter diesen Umständen ist es gefährlich, den Roboter zu bewegen. Warnung 114 Während des Debuggens eines Programms mit dem PC, der mit der RS-232CSchnittstelle Nr. 20 oder 21 verbunden ist, wenn Sie den Roboter bewegen, ist es erforderlich, das Handprogrammiergerät (TP-320/TP-320J) oder die OPU-300, welche an die TEACH-Schnittstelle angeschlossen sind, in der Hand zu halten, um im Notfall den NOT-AUS-Schalter drücken zu können. Der Unterschied zwischen S.NET und dem TEACH-Modus Es gibt keine Unterschiede zwischen dem S.NET-Modus und dem TEACH-Modus, solange der Roboter durch Befehle vom PC gesteuert wird. Wurde jedoch der S.Net-Modus für den AUTO-Modus bestimmt, unterscheiden sich Merkmale, die die Sicherheit betreffen wie z.B. Spannungszustand, Pausenzustand und Sicherheitsabschrankung. Im S.NET-Modus kann das Programm nicht mit geöffneter Sicherheitsabschrankung ausgeführt werden. Die Eingabe von PAUSE ausgehend von REMOTE ist gültig. (Siehe auch die folgende Tabelle.) TEACH-Modus S.NET Eingang Sicherheitsabschrankung Der Roboter kann im Low-Power-Modus betrieben werden. PAUSE-Status NOT-AUS-Schalter des PC-Kabels Möglich Nicht möglich Eingabe von PAUSE von der OPU300 aus Nicht möglich Möglich Eingabe von PAUSE von REMOTE Nicht möglich aus Möglich Robotersteuerungsprogramm Soll ein Roboter über einen Hauptrechner kontrolliert werden, so muß ein Kommunikationsprogramm erstellt werden, um die Datenübertragung zwischen Hauptrechner und Roboter zu ermöglichen. Folgende 8 Punkte beschreiben diese Art eines Roboterkontrollprogramms. • Zurücksetzen • Grundablauf • Steuerungscodes • Ablauf der LIST-, PLIST- und DIR-Befehle • Ablauf der SAVE- und MERGE-Befehle • Schnellspeicherung mit SAVE • LOAD-Ablauf • Zufuhr per JOG-Verfahren • Zurücksetzen Senden Sie folgenden RESET-Code, um die Steuerung zurückzusetzen. (SOH) (DC3) = (&H01) (&H13) Diese Methode funktioniert unabhängig vom aktuellen Zustand der Steuerung. Die Steuerung sendet folgenden Code zurück, nachdem sie zurückgesetzt wurde. (>) = (&H3E) Der RESET-Code sendet sich selbst, ohne andere Kontrollzeichen wie z.B. CR, ENQ, STX oder ETX. Der RESET-Code ist nur dann wirksam, wenn er von der Konsole gesendet wurde. Dieses RESET-Verfahren kann genutzt werden, um die Programmausführung anzuhalten, Ausgabeschnittstellen einzurichten, den E/A-Speicher auf OFF zu stellen und die SPEED- und ACCELEinstellungen zu initialisieren. Dieses Verfahren kann jedoch nicht für Fehlerbehebung und das Löschen des NOT-AUS-Zustands verwendet werden. Führen Sie den RESET-Befehl aus, wenn Fehlerbeseitigung und/oder das Löschen des NOT-AUS-Zustands notwendig ist. (Siehe auch „Grundablauf“ auf der nächsten Seite.) 115 • Grundablauf Um die Funktionen der Steuerung auszuführen (SPEL III-Befehle), muß jeder Befehl im ASCII-Code an die Steuerung gesendet werden. Die Steuerung übersetzt den ASCII-Code, den sie erhält und führt die entsprechenden Befehle aus. Entweder kann TTY (kein Protokoll) oder das BASIC-Protokoll verwendet werden. Letzteres wird jedoch aufgrund seiner höheren Verläßlichkeit empfohlen. Ablaufdiagramm 3 zeigt den Grundablauf, um Steuerungsmeldungen abzustimmen. Zuerst wird ein Befehl über den Computer eingegeben und als ASCII-Code an die Steuerung gesendet. Der Computer wartet dann auf eine Meldung von der Steuerung. Ist die Meldung „>“, wartet die Steuerung auf Eingaben vom Computer. Wenn die Meldung nicht „>“ ist, akzeptiert der Computer die Meldung und wartet auf weitere Eingaben von der Steuerung. Verwenden Sie für die „Befehlsübertragung an die Steuerung“ (siehe Ablaufdiagramm) das Sendeprogramm und für die „Meldungseingabe von der Steuerung“ das Empfangsprogramm. Beide Programme sind in Kapitel 7.3 beschrieben. Ablaufdiagramm 3: Grundablauf, um Kontrollmeldungen zu kommunizieren 116 <Beispiel> Senden des RUN-Befehls an den Roboter TTY-Protokoll (kein Protokoll) BASIC-Protokoll 117 • Steuerungscodes Steuerungscodes werden gesendet, um die Programmausführung zu stoppen und neu zu starten. Die folgenden Steuerungscodes müssen gesendet werden, wenn entweder die „TTY-Protokoll“-Methode oder die „BASIC-Protokoll“-Methode angewandt wird. Pause, Fortsetzung, Ausführung eines Schrittes oder Stop Um ein Programm, das ausgeführt wird, zu steuern, senden Sie bitte jeden der folgenden Steuerungscodes. Steuerungscode (DC3) (ESC) (DC3) (A) (DC3) (space) (DC3) (Q) Beschreibung Programmpause Fortsetzung der Programmausführung nach einer Pause Ausführung eines Schrittes nach einer Pause Stop der Programmausführung nach einer Pause Zustand von Übertragungsanforderung und Übertragungsantwort Der Zustand von Übertragungsanforderung und Übertragungsantwort entspricht der SPEL III-STAT( )Funktion. Verwenden Sie den folgenden Ablauf, um das Senden des Zustandes an die Steuerung anzufordern. 1. Der Hauptrechner sendet DC1 an die Steuerung. 2. Wenn die Steuerung DC1 empfängt, sendet sie an den Hauptrechner den DC2-Code, der durch eine 6-Byte-Hexadezimal-Version der 3-Byte-Zustandsdaten ergänzt wird. Ändern des E/A-Speichers Das Ändern des E/A-Speichers entspricht den SPEL III-Befehlen ON #m, $n und OFF #m, $n. Verwenden Sie den folgenden Ablauf, um den E/A-Speicher der Steuerung zu verändern. Der Hauptrechner sendet DC4 (Daten) an die Steuerung. Die Daten bestehen aus einem Byte, dessen Bits folgende Bedeutung haben. (Daten) = (0A1BBBBB) A: Markierung, um zwischen ON und OFF unterscheiden zu können. ON: A=1 OFF: A = 0 B: entspricht der E/A-Speicherbit-Nummer. Die fünf B-Bits drücken einen Zahlenwert von 0 bis 31 aus. <Beispiel> ON #20, $15 → (DC4)(6FH) OFF #20, $3 → (DC4)(23H) G HINWEIS 118 Sie können nur den Steuerungscode (00H bis 1FH), der in diesem Handbuch beschrieben wurde, und dessen Kombinationen verwenden. • Ablauf von LIST-, PLIST- und DIR-Befehlen Das Ablaufdiagramm 4 zeigt den Ablauf von LIST-, PLIST- und DIR-Befehlen. Die Ausführung dieser Befehle kann zeitweise angehalten oder komplett gestoppt werden. Die zu übertragenden Daten müssen zeilenweise übertragen werden. Mit anderen Worten: Der Hauptrechner verwendet eine HandshakingProzedur, während er mit der Steuerung kommuniziert. Senden Sie folgende Codes, um den Handshaking-Modus einzurichten. (DC3) (ESC) Nach dem Senden dieser Codes, senden Sie einen Befehl wie z.B. LIST. Dann senden Sie ein Leerzeichen. Danach werden Sie eine Zeile des Programms (oder andere Daten) vom Roboter erhalten. Die Einrichtung ist abgeschlossen, wenn die empfangenen Daten „>“ sind. Wenn nicht „>“ erscheint, dann werden die empfangenen Daten auf dem Bildschirm des Hauptrechners angezeigt. Bevor das Leerzeichen gesendet wird, überprüft das Programm die Tasteneingabe. Diese Überprüfung der Tasteneingabe ist für die Steuerungsfunktionen von LIST wichtig (Pause, Fortsetzung, erzwungenes Ende, etc.). Ablaufdiagramm 4: Ablauf der LIST-, PLIST- und DIR-Befehle 119 • Ablauf von SAVE- und MERGE-Befehlen (Programmdownload) Das Ablaufdiagramm 5 zeigt den Ablauf von SAVE- und MERGE-Befehlen. In diesem Ablaufdiagramm wird zuerst der Befehl NEW geschickt. Nachdem der Programmbereich der Steuerung geleert ist, wird das Programm zeilenweise zur Steuerung geschickt. Ist die Programmübertragung abgeschlossen, wird die Übertragung der Positionsdaten gestartet. Wird die Übertragung der Befehle NEW und CLEAR ausgelassen oder unterdrückt, wird der Befehl MERGE ausgeführt. Diese Übertragungen können das TTY- oder das BASIC-Protokoll verwenden. Ablaufdiagramm 5: Ablauf des Befehls SAVE 120 • Schnellspeicherung mit SAVE Während der Speichervorgänge, wenn eine Zeile an die Steuerung gesendet wird, prüft die Steuerung die Zeilennummer des Programms und muß dann den Programmspeicherbereich nach einem freien Platz für diese Zeile durchsuchen, damit sie dort gespeichert werden kann. Dies ist ein zeitraubender Vorgang. Die Schnellspeicherung erhöht die Geschwindigkeit des Programmdownload durch Sicherstellen, daß Programme in der Reihenfolge ihrer Zeilennummern gesendet werden. Das Ablaufdiagramm 5 zeigt den Ablauf der Schnellspeicherung. In diesem Ablaufdiagramm wird zuerst der Befehl SSV_ gefolgt von einer Programmzeile geschickt. Der unterstrichene Teil (_) entspricht dem ASCII-Code „&H5F“. Wenn das komplette Programm übertragen wurde, wird der Befehl _END geschickt. Danach werden die Positionsdaten zeilenweise gesendet. Ablaufdiagramm 6: Ablauf der Schnellspeicherung 121 • Ablauf des LOAD-Befehls Das Ablaufdiagramm 7 zeigt den Ladevorgang. Der LIST-Befehl wird an die Steuerung geschickt, worauf die Steuerung das Programm zeilenweise erhält und das Programm im Programmspeicherbereich gespeichert wird. Das empfangene Programm wird im Programmspeicherbereich des Hauptrechners gespeichert. Dann wird der Befehl PLIST zum Roboter gesendet und die Positionsdaten werden genauso bearbeitet, wie die Programmdaten. Ablaufdiagramm 7: Ablauf des LOAD-Befehls 122 • Zufuhr per JOG-Verfahren Der Hauptrechner kann zum Programmieren des Roboters benutzt werden, um „JOG-Zufuhr“Bewegungen zu verrichten. JOG-Zufuhr-Bewegungen sind Bewegungen zu einer definierten Position, die per Fernsteuerung, z.B. über die PC-Tastatur, ausgeführt werden können. Daher ist dies eine wichtige Einrichtfunktion. Die JOG-Methode ist wie folgt. Die gleiche JOG-Methode wird im SPEL Editor verwendet. Es gibt zwei verschiedene JOG-Verfahren:1. der Bewegungsmodus und 2. der Koordinatensystemmodus. Verwenden Sie beide Methoden in Kombination. Bewegungsmodus StpJog (Step Jog) CntJog (Continuous Jog) schrittweise Zufuhr Endloszufuhr Koordinatensystemmodus BASE Bewegung gemäß des Basiskoordinatensystems der Roboters JOINT Bewegung definiert für jedes Gelenk TOOL Bewegung gemäß den TOOL-Koordinaten Weitere Informationen zum JOG-Zufuhrverfahren erhalten Sie in Kapitel 6 im SPEL Editor Handbuch. Schrittweise Zufuhr (StpJog-Modus) Sowohl das TTY- wie auch das BASIC-Protokoll können hierfür verwendet werden. Der Schrittabstand kann durch Ausführen des SEL-Befehls festgelegt werden. Sie müssen jedoch beachten, daß sowohl der Schrittabstand, wie auch die Schrittrichtung in Abhängigkeit vom verwendeten Koordinatensystem variieren. Basiskoordinatensystem Code PIJ 0 NIJ 0 P2J 0 N2J 0 P3J 0 N3J 0 P4J 0 N4J 0 (*1) Beschreibung Positive Richtung entlang der X-Achse des Roboterkoordinatensystems Negative Richtung entlang der X-Achse des Roboterkoordinatensystems Positive Richtung entlang der Y-Achse des Roboterkoordinatensystems Negative Richtung entlang der Y-Achse des Roboterkoordinatensystems Positive Richtung entlang der 3. Achse Negative Richtung entlang der 3. Achse Positive Richtung entlang der 4. Achse Negative Richtung entlang der 4. Achse vorheriger Code (*1) PSX NGX PSY NGY PSZ NGZ PSU NGU Der vorheriger Code ist der Code, der mit den Steuerungen der Serie 42 verwendet wird. 123 JOINT-Koordinatensystem Code PIJ 1 NIJ 1 P2J 1 N2J 1 P3J 1 N3J 1 P4J 1 N4J 1 Beschreibung Positive Richtung entlang der 1.Achse Negative Richtung entlang der 1. Achse Positive Richtung entlang der 2. Achse d Negative Richtung entlang der 2. Achse Positive Richtung entlang der 3. Achse Negative Richtung entlang der 3. Achse Positive Richtung entlang der 4. Achse Negative Richtung entlang der 4. Achse TOOL-Koordinatensystem Code PIJ 2 NIJ 2 P2J 2 N2J 2 P3J 2 N3J 2 P4J 2 N4J 2 Beschreibung Positive Richtung entlang der X-Achse des TOOL-Koordinatensystems Negative Richtung entlang der X-Achse des TOOL-Koordinatensystems Positive Richtung entlang der Y-Achse des TOOL-Koordinatensystems Negative Richtung entlang der Y-Achse des TOOL-Koordinatensystems Positive Richtung entlang der 3. Achse Negative Richtung entlang der 3. Achse Rotation in positiver Richtung entlang der U-Achse und zentriert auf den Ursprung des TOOL-Koordinatensystems Rotation in negativer Richtung entlang der U-Achse und zentriert auf den Ursprung des TOOL-Koordinatensystems Endloszufuhr (CntJog-Modus) Für ununterbrochene JOG-Zufuhrvorgänge. Ablaufcodes werden ohne Verwendung eines Protokolls direkt gesendet. Auch hier werden zwei verschiedene Modi verwendet: Code Endlos-JOG-Startcode JOG-Richtungscode2 JOG-Koordinatensystem BASE JOINT TOOL 124 Beschreibung Code, der gesendet wird, um die Endloszufuhr zu starten. Code, der die Richtung der JOG-Zufuhr bestimmt. Code DC3+‘0‘ DC3+‘1‘ DC3+‘2‘ Die JOG-Richtungcode werden unten aufgeführt: Bit 7 X/Y-JOG-Richtungen 0 Bit 0 0 1 SP -Y +Y -X Bit 7 Z/U-JOG-Richtungen 0 +X Bit 0 1 0 SP -U +U -Z +Z - Stellen Sie das Bit, das Sie für die Einstellung der Richtung benötigen, auf 1. - SP steht für „Speed“ (Geschwindigkeit). Ein Bitwert von 1 kennzeichnet eine hohe Geschwindigkeit. Sie setzen den Bitwert auf 1, indem Sie auf die [Shift]-Taste drücken. <Beispiel> Drücken von „+X“ und „-Y“ sendet den Code „&H29“. Wenn die Endloszufuhr ausgeführt wird, senden Sie zuerst den entsprechenden Startcode und sofort danach den Richtungscode. Behalten Sie das Senden des Richtungscodes bei, um eine ununterbrochene Zufuhr zu ermöglichen. JOG-Verfahren enden, wenn der nächste Richtungscode nicht innerhalb von 20 ms gesendet wird. Wenn das JOG-Verfahren einmal beendet ist, muß ein neuer Startcode eingegeben werden, um das JOG-Verfahren erneut zu starten. A: Startcode für das Endlosverfahren B: Richtungscode 125 7.5 Erweiterte Funktionen SPEL III: Erweiterte Funktionsaufrufe Zusätzlich zu den Funktionen, die sich auf die RS232C beziehen, gibt es auch einige erweiterte Funktionen. • Format der erweiterten Funktionen Format: EX_CALL (l,m,n) l: Funktionscode m: Parameter 1 n: Parameter 2 Funktionscode 2: Terminatorausgang ON/OFF Dies steuert die Terminatorausgang, wenn das Kommunikationsprotokoll der RS-232C das TTYProtokoll ist. Eingabeparameter: l (Funktionscode): 2 m (Nummer der Schnittstelle): 20 bis 23 n (Kontrollmarkierung): Ist n=0: Terminatorausgang Ist n=1: kein Terminatorausgang Rückgabewert Fehlercode (im Normalfall 0) G HINWEIS 100 110 120 Diese Einstellung kann nicht gesichert werden. Ein Zurücksetzen hat das Wiederherstellen der Standardeinstellung (Terminatorausgang) zur Folge. Stellen Sie daher sicher, daß Sie diesen Befehl in Ihrem Programm integriert haben. B=EX_CALL(2,20,11) PRINT #20,123 INPUT #20,A Format: Keine Ausgabe an Terminator (#20) Eingang der numerischen Werte von #20 INKEY$(n) n: 20 oder 21 (Nummer der Schnittstelle) Diese Funktion gibt ein Zeichen der Dateneingabe der RS-232C-Schnittstelle zurück. Ein Wert CHR$(0) wird zurückgegeben, wenn ein Timeout auftritt (Die Timeout-Zeitspanne beträgt ca. zwei Sekunden.) G HINWEIS 126 Diese Funktion arbeitet nicht korrekt, solange sich die definierte Schnittstelle nicht im RAW-Modus befindet. • erweiterte Funktionsbefehle Format: SETRAW #n n: 20 oder 21 (Nummer der Schnittstelle) G HINWEIS Mit diesem Befehl stellen Sie für die definierte Schnittstelle den RAW-Modus ein. RAW-Modus Bei Verwendung des TTY-Protokolls werden Terminatoren nicht per PRINT-Befehl den Datenausgängen hinzugefügt. Auch der INPUT-Befehl kann nicht für Dateneingänge genutzt werden, anstatt dessen wird die Funktion INKEY$( ) genutzt, um ein Zeichen zurückzugeben. Format: COOKED #n n: 20 oder 21 (Nummer der Schnittstelle) G HINWEIS Mit diesem Befehl stellen Sie für die definierte Schnittstelle den COOKED-Modus ein. COOKED-Modus Bei Verwendung des TTY-Protokolls werden Terminatoren per PRINT-Befehl den Datenausgängen hinzugefügt. Der INPUT-Befehl kann für Dateneingänge genutzt werden. Dies ist die Standardeinstellung. 127 ASCII-Codetabelle 128 7.6 Übertragungsfehler Übertragungsfehlercodes Die unten aufgeführten Fehlernummern zeigen die folgenden Übertragungsfehler auf: Fehlernummer Beschreibung 30 Anzahl der empfangenen Daten und die der Variablen des INPUT-Befehls sind nicht identisch. 31 Es ist nicht möglich eine Kommunikation mit dem Gerät, das über die RS232C- oder die TEACH-Schnittstelle angeschlossen ist, herzustellen. 33 Daten ohne Terminator über die RS232C- Schnittstelle empfangen und Speicherüberlauf. 34 Parity-, Überlauf- oder Ordnungsfehler in der RS232C-Schnittstellenkommunikation. 36 Eingabe über RS232C übersteigt 80 Zeichen. Ursachen und Fehlerbeseitigung Fehler 31 Tritt auf, wenn die Spannungszufuhr ausgeschaltet ist oder wenn die Konfiguration nicht korrekt eingestellt ist. Fehler 30 bis 36 Wird gewöhnlich durch einen Programmeingabefehler verursacht. Fehler 33 Tritt auf, wenn eine große Menge von Daten übertragen wird. Fehler 34 Tritt auf, wenn die Übertragung von Störungen beeinflußt wird. Beseitigen Sie die Ursache der Störung (zu langes oder geknicktes Kabel oder störungserzeugendes Gerät in der Nähe) und starten Sie dann die Übertragung erneut. Wenn ein Übertragungsfehler auftritt, sollten Sie anhand des Flußdiagramms auf der nächsten Seite alle Schritte überprüfen und so die Fehlerursache nachvollziehen und beseitigen. 129 Ablaufdiagramm: Überprüfung von Kommunikationsfehlern 130