KRL Kuka Robot Language für KRC V5.3.5

Slides:



Advertisements
Ähnliche Präsentationen
ALP II: Objektorientierte Programmierung Sommersemester 2006
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
Forschungszentrum caesar
Variablen und Datentypen
Zusammenfassung der Vorwoche
Ausdrücke bezeichnen Elemente eines Datentyps induktive Definition:
10. Grundlagen imperativer Programmiersprachen
Java: Objektorientierte Programmierung
Java: Grundlagen der Sprache
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
ARRAY oder FELD oder VEKTOR
Objekte und Arbeitsspeicher
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Robotik mit LEGO Mindstorms
Statischer Druck (Aufgabe 3) Projektübung Klimamodellierung ( ) – A. Paul.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Variable Feld Vereinbarung Zuweisung Block while-Schleife Bedingte Anweisung (if) Typ.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
Zusammenfassung Vorwoche
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Das erste Programm (Folie 16)
DVG Ablaufsteuerung
Einführung in die Programmierung Anweisungen und Datentypen
Marcus Haller & René Schulze
Grundkonzepte Java - Klassendefinition
So, ein paar Fragen.. Wo sind mehr Bälle? Wo sind mehr Steine?
Einführung in die Programmiersprache C 1
Java programmieren mit JavaKara
Einführung in das Programmieren mit JavaScript Mag. Andreas Starzer weloveIT – EDV Dienstleistungen.
Informatik 1 Übung 2.
Java ohne Kara. Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Debugging in Lua Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Präsentation C Tutorium von Daniel J. Nowak Folie 1 C Tutorium.
FORTRAN 77.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
Informatik I for D-MAVT
Programmierung 1. Einführung Seite 1
Purga - Scriptengine Ein Einblick.
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
MODULA-2.
Starten der Entwicklungsumgebung (IDE)
Datentypen: integer, char, string, boolean
Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
BMEVIEEA100 Grundlagen der Programmierung
PHP: Operatoren und Kontrollstrukturen
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Variablen und Datentypen
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Roboter-Programmierung
By Thorsten Zisler 1 SQL Datenbank Anbindung an den Supervisor.
TRUE und FALSE in C Der Wert 0 steht für FALSE Jeder von 0 verschiedene Wert steht für TRUE FALSE wird als 0 dargestellt TRUE wird als 1 dargestellt.
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Hello World! Javakurs 2013 Arne Kappen
Datentypen: integer, char, string, boolean
Einführung in die Programmierung
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
The Programming Language Pascal
 Präsentation transkript:

KRL Kuka Robot Language für KRC V5.3.5 Referent: Gregor Franz

Übersicht: Allgemeines zu KRL-Programmen Variablen und Vereinbarungen Bewegungsprogrammierung Programmablaufkontrolle Ein-/Ausgabeanweisungen Unterprogramme und Funktionen Datenlisten

1 Allgemeines zu KRL-Programmen 1.1 Aufbau und Struktur von Programmen 1.2 Programme erstellen und editieren 1.3 Ändern von Programmen 1.4 Verstecken von Programmteilen 1.5 Kommentare

1.1 Aufbau und Strukturen von Programmen

1.1.1 Dateienkonzept Jedes Programm besteht aus 2 Dateien. SRC-Datei (*.src) DAT-Datei (*.dat)

DEF PROGRAMMNAME(X1: IN) 1.1.2 Dateinstruktur DEF PROGRAMMNAME(X1: IN) Deklarationen Initialisierungen Anweisungen END Standardmäßig nicht sichtbar im Editor der KUKA HMI-Software

1 Allgemeines zu KRL-Programmen 1.1 Aufbau und Struktur von Programmen 1.2 Programme erstellen und editieren 1.3 Ändern von Programmen 1.4 Verstecken von Programmteilen 1.5 Kommentare

1.2.1 Erstellen eines Programms In der Bedienoberfläche (KUKA HMI Software): Menüleiste -> Datei -> Neu Expert Expert Submit Function Modul und 2 weitere

1.2.2 Programm editieren, kompilieren und binden Mit Softkey „Öffnen“ , unter der Anwahl der Datei, wird der Editor gestartet. Beim Schließen (Softkey „Schließen“) des Editors wird das Programm gespeichert und kompiliert.   Compiler: Fehler? => *.ERR-Datei Binder: => Softkey „Anwählen“ => Fehler? => *.ERR-Datei

1 Allgemeines zu KRL-Programmen 1.1 Aufbau und Struktur von Programmen 1.2 Programme erstellen und editieren 1.3 Ändern von Programmen 1.4 Verstecken von Programmteilen 1.5 Kommentare

1.3 Ändern von Programmen Es gibt zwei Möglichkeiten mit der Kuka HMI Software Programme zu editieren: - Programm-Korrektur-Modus (PROGKOR-Modus) - Editor: => gewöhnlichen Editor

1 Allgemeines zu KRL-Programmen 1.1 Aufbau und Struktur von Programmen 1.2 Programme erstellen und editieren 1.3 Ändern von Programmen 1.4 Verstecken von Programmteilen 1.5 Kommentare

1.4 Verstecken von Programmteilen - Versteckte Programmteile werden ab der Experten Benutzergruppe sichtbar - Versteckte Programmteile heißen „FOLD“ (von Folder = Ordner) - Beschränkung der Informationsmenge (Detailansicht) Code Bsp.: ;FOLD FOLDNAME Code ;ENDFOLD

1 Allgemeines zu KRL-Programmen 1.1 Aufbau und Struktur von Programmen 1.2 Programme erstellen und editieren 1.3 Ändern von Programmen 1.4 Verstecken von Programmteilen 1.5 Kommentare

1.5 Kommentare Code Bsp.: ;Kommentar

Übersicht: Allgemeines zu KRL-Programmen Variablen und Vereinbarungen Bewegungsprogrammierung Programmablaufkontrolle Ein-/Ausgabeanweisungen Unterprogramme und Funktionen Datenlisten

2 Variablen und Vereinbarungen 2.1 Variablen und Namen 2.2 Datenobjekte 2.3 Datenmanipulation 2.4 Systemvariablen und Systemdateien

2.1 Variablen und Namen Namen: maximal 24 Zeichen lang Buchstaben(A-Z), Ziffern (0-9), sowie die Zeichen _ und $ Nicht mit Ziffern beginnen Keine Schlüsselwörter sein Lebensdauer einer Variablen Innerhalb einer SRC-Datei deklariert -> beschränkt auf die Laufzeit des Programms. Innerhalb einer DAT-Datei deklariert -> solange DAT-Datei exsistiert Code Bsp: P1_BIS_P12$ = 10

2 Variablen und Vereinbarungen 2.1 Variablen und Namen 2.2 Datenobjekte 2.3 Datenmanipulation 2.4 Systemvariablen und Systemdateien

2.2.1 Vereinbarungen und Initialisierung von Datenobjekten - DECEL kann für die Datentypen INT, REAL, CHAR, BOOL, POS, E6POS, FRAME, AXIS, E6AXIS entfallen. - Daten vom Typ POS benötigt keine Deklaration (POS=> Standardtyp) Code Bsp.: DECEL INT ANZAHL, NUMMER

2.2.2 Einfache Datentypen REAL: BOOL: CHAR: Zustand2 = FALSE Sclüsselwort INT REAL BOOL CHAR Bedeutung Ganze Zahlen Gleitkommazahlen Zustand 1 Zeichen Wertebereich -231 ... 231-1 1.1E-38...3.4E38 TRUE, FALSE ASCII-Zeichen INT (32Bit): Wertezuweisungen können über Dezimalzahlen (90), Binärzahlen (B1011110) und Hexadezimalzahlen (H5A) gemacht werden. REAL: BOOL: CHAR: Code Bsp. Realzahl1 = -13.156 Realzahl2 = 10 Realzahl3 = 34.65 E-12 Code Bsp. Zustand1 = TRUE Zustand2 = FALSE Code Bsp. Zeichen1 = „G” Zeichen2 = „?“

2.2.3 Felder (Arrays) Code Bsp. DECL INT OTTO[2] … OTTO[1] = 5 Der Indexzähler beginnt immer ab 1 !

2.2.4 Zeichenketten Code Bsp. DECL CHAR NAME[8] … NAME[3] = “G” NAME[] = “ABCDE”

2.2.5 Strukturen Daten-Typerzeugung am Beispiel der Struktur POS: STRUC POS REAL X,Y,Z,A,B,C, INT S,T Punkt-Separator: DECL POS POSITION ... POSITION.X = 34.4   Erlaubt Zugriff auf Strukturvariablen, oder Zugriff über Aggregat: POSITION = {X 34.4, Y –23.5, ... ,T 6} POSITION = {POS : X 230,Y 0.0, ... ,T 5}

Vordefinierte Strukturen In Datei $OPERATE.SRC definiert: STRUC AXIS REAL A1,A2,A3,A4,A5,A6 STRUC E6AXIS REAL A1,A2,A3,A4,A5,A6,E1,E2,E3,E4,E5,E6 STRUC FRAME REAL X,Y,Z,A,B,C STRUC POS REAL X,Y,Z,A,B,C, INT S,T STRUC E6POS REAL X,Y,Z,A,B,C,E1,E2,E3,E4,E5,E6, INT S,T

2.2.6 Aufzähltypen (ENUM) Bsp. Daten-Typerzeugung: ENUM MODE_OP T1,T2,AUT,EX,INVALD Bsp. Variablendeklaration: DECL MODE_OP $MODE_OP Bsp. Initialisierung / Abfragen : $MODE_OP = #T1

2 Variablen und Vereinbarungen 2.1 Variablen und Namen 2.2 Datenobjekte 2.3 Datenmanipulation 2.4 Systemvariablen und Systemdateien

2.3.1.1 Arithmetische Operatoren ` + , - , * , / ` Bsp.: ERGEBNIS = VAR+5*VAR2/4-9 2.3.1.2 Geometrische Operatoren `:` Bsp.: NEUSYS = BASIS:WERKZEUG führt zwischen den Datentypen FRAME und POS eine Frame-Verknüpfung durch. Frame-Verknüpfung stellt eine Transformation von Koordinatensystemen dar. Datentyp des Ergebnisses entspricht immer des rechts stehenden Operanden.

2.3.1.3 Vergleichsoperatoren Beschreibung zulässige Datentypen == gleich INT, REAL, CHAR, ENUM, BOOL <> ungleich > größer INT, REAL, CHAR, ENUM < kleiner >= größer gleich <= kleiner gleich

2.3.1.4 Logische Operatoren Code Bsp. (A>5) AND (B<12) Operator Operandenzahl Beschreibung NOT 1 Invertierung AND 2 logisches UND OR logisches ODER EXOR exklusives ODER Code Bsp. (A>5) AND (B<12)

2.3.1.5 Bit-Operatoren Operator Operandenzahl Beschreibung B_NOT 1 bitweise Invertierung B_AND 2 bitweise UND--Verknüpfung B_OR bitweise ODER--Verknüpfung B_EXOR bitweise exklusive ODER—Verknüpfung

2.3.1.6 Prioritäten von Operatoren NOT B_NOT 2 * / 3 + - 4 AND B_AND 5 EXOR B_EXOR 6 OR B_OR 7 == <> < > >= <=

2.3.2 Standardfunktionen Beschreibung Funktion Wertebereich Argument Wertebereich Ergebnis Betrag ABS(X) -∞...+∞ 0...+∞ Wurzel SQRT(X) Sinus SIN(X) -1...+1 Cosinus COS(X) Tangens TAN(X) -∞...+∞* Arcuscos. ACOS(x) 0°...180° Arcustang. ATAN2(Y,X) -90°...+90° * keine ungeradzahlige Vielfache von 90°, d.h. X ¸ (2k-1)*90°, k Alle Datentypen sind vom Typ REAL

2 Variablen und Vereinbarungen 2.1 Variablen und Namen 2.2 Datenobjekte 2.3 Datenmanipulation 2.4 Systemvariablen und Systemdateien

2.4 Systemvariablen und Systemdateien Alle Systemvariablen beginnen mit $ gefolgt vom Namen. Bsp.: $POS_ACT => aktuelle Roboterposition $BASE => Basiskoordinatensystem $VEL.CP => Bahngeschwindigkeit Und viele weitere hinterlegt in der KRC-Dokumentation => Systemvariablen.pdf Flags ($FLAG[1]bis $FLAG[1024]): Können als globale Merker verwendet werden; Es gibt bis zu 1024 Flags z.B. $FLAG[1] = TRUE => gesetzt

2.4 Systemvariablen und Systemdateien Zyklische Flags ($CYCFLAG[1] ... $CYCFLAG[32]): Hier: $IN[2] und $IN[3] werden zyklisch ausgewertet. Egal wo der Programmlaufzeiger steht, wird die $CYCFLAG[10] beschreiben bzw. verändert. Bei einer Zuweisung einer zyklischen Flag sind zulässig: boolesche Systemvariablen und boolesche Variablen, welche in einer Datenliste deklariert und initialisiert wurden. Unzulässig sind: Funktionen, welche einen booleschen Wert zurückliefern Code Bsp.: $CYCFLAG[10] = $IN[2] AND $IN[3]

2.4 Systemvariablen und Systemdateien Timer: 16 Timervariablen $TIMER[1] ... $TIMER[16] Initialisierung der Timer bei Steuerungshochlauf mit: $TIMER_FLAG[1] bis [16] = FALSE $TIMER_STOP[1] bis [16] = TRUE $TIMER[1] bis [16] = 0 Timervariablen in Millisekunden (ms). Aktualisierung erfolgt alle 12ms. Code Bsp.: Starten des Timers 4: $TIMER_STOP[4] = FALSE Stoppen des Timers 4: $TIMER_STOP[4] = TRUE Setzen des Timers 4: $TIMER[4] = 0

2.4 Systemvariablen und Systemdateien Vordefinierte Datenlisten mit vordefinierten Systemvariablen $MACHINE.DAT $CUSTOM.DAT $CONFIG.DAT $ROBOTER.DAT

Übersicht: Allgemeines zu KRL-Programmen Variablen und Vereinbarungen Bewegungsprogrammierung Programmablaufkontrolle Ein-/Ausgabeanweisungen Unterprogramme und Funktionen Datenlisten

3 Bewegungsprogrammierung 3.1 Verwendung verschiedener Koordinatensysteme 3.2 Punkt-zu-Punkt Bewegungen (PTP) 3.3 Bahnbewegungen (CP-Bewegungen = Continous Path) 3.4 Rechnervorlauf 3.5 Überschleifbewegung 3.6 Teachen von Punkten

3.1 Verwendung verschiedener Koordinatensysteme Systemvariable Status Weltkoordinatensystem $WORLD schreibgeschützt Roboterkoordinatensystem $ROBROOT Werkzeugkoordinatensystem $TOOL beschreibbar Basis(Werkstück-)koordinatensystem $BASE

3 Bewegungsprogrammierung 3.1 Verwendung verschiedener Koordinatensysteme 3.2 Punkt-zu-Punkt Bewegungen (PTP) 3.3 Bahnbewegungen (CP-Bewegungen = Continous Path) 3.4 Rechnervorlauf 3.5 Überschleifbewegung 3.6 Teachen von Punkten

3.2.1 Allgemein (Synchron-PTP) Bedeutung: Nur die führende Achse verfährt mit den programmierten Grenzwerten für Beschleunigung und Geschwindigkeit. $VEL_AXIS[Achsnummer] in Prozent $ACC_AXIS[Achsennummer] in Prozent Bezieht sich auf hinterlegten Höchstwert

3.2.3 Höheres Fahrprofil ($OPT_MODE = #STEP1) Die Geschwindigkeiten werden immer dem maximal zulässigen Momenten angepasst. Die Geschwindigkeits- und Beschleunigungswerte wirken sich unmittelbar auf die maximal zulässigen Beschleunigungsmomente aus.

3.2.3 Bewegungsbefehle PTP {A1 0,A2 90,A3 –90,A4 0,A5 0,A6 30} Absolutbewegung mit Achskoordinaten PTP_REL {A1 35,A3 –45} Realtivbewegung, wobei hier nur Achse 3 und 1 bewegt werden NULLFRAME: $NULLFRAME = {FRAME: X 0,Y 0,Z 0,A 0,B 0,C 0}   S (Status) und T (Turn): Um Eindeutigkeit der Roboterstellung herzustellen.

S (Status) und T (Turn): Wert Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 A6 >= 0° A5 >= 0° A4 >= 0° A3 >= 0° A2 >= 0° A1 >= 0° 1 A6 < 0° A5 < 0 ° A4 < 0° A3 < 0° A2 < 0° A1 < 0° S: Wert Bit 2 Bit 1 Bit 0 0° <= A5 < 180° A5 < -180° A3 < Ф (Ф hängt vom Robotertyp ab) Grundbereich   1 -180° <= A5 < 0° A5 >= 180° A3 >= Ф Überkopfbereich

3 Bewegungsprogrammierung 3.1 Verwendung verschiedener Koordinatensysteme 3.2 Punkt-zu-Punkt Bewegungen (PTP) 3.3 Bahnbewegungen (CP-Bewegungen = Continous Path) 3.4 Rechnervorlauf 3.5 Überschleifbewegung 3.6 Teachen von Punkten

3.3.1 Geschwindigkeiten und Beschleunigung (des TCP)   Variablenname Einheit Funktion Geschwindigkeiten $VEL.CP m/s Bahngeschwindigkeit $VEL.ORI1 °/s Schwenkgeschwindigkeit $VEL.ORI2 Drehgeschwindigkeit Beschleunigungen $ACC.CP m/s² Bahnbeschleunigung $ACC.ORI1 °/s² Schwenkbeschleunigung $ACC.ORI2 Drehbeschleunigung Alle Variablen sind vom Typ REAL

3.3.2 Orientierungsführung (des TCP) Bei Linearbewegung: $ORI_TYPE = #CONSTANT Orientierung im Raum ändert sich nicht $ORI_TYPE = #VAR Orientierung im Raum ändert sich z.B.:   Bei Kreisbewegung (CIRC): $CIRC_TYPE = #BASE Raumbezogene Orientierung $CIRC_TYPE = #VAR Bahnbezogene Orientierung Durch die Standardinitialisierung eines Programms mit BAS(#INITMOV,0) werden die Systemvariablen $ORI_TYPE = #VAR und $CIRC_TYPE = #BASE gesetzt.

3.3.3 Linearbewegung LIN => Absolutbewegung mit kartesischen Koordinaten LIN_REL => Relativbewegung in kartesischen Koordinaten Bei beiden Befehlen sind nur die Datentypen FRAME oder POS zulässig   Der Winkelstatus ‚S’ und ‚T’ des Endpunktes ist immer gleich der des Startpunkts, weil ‚S’ u. ‚T’ ignoriert werden. Somit ist HOME-Fahrt notwendig damit SAK erreicht wird.

3.3.4 Kreisbewegung CIRC => Absolutbewegung mit kartesischen Koordinaten CIRC_REL => Relativbewegung ausgehend von Startposition mit kartesischen Koordinaten. Code Bsp.: CIRC {Hilfspunkt-Koodinaten}, {Zielpunkt-Koordinaten} CA 235.0

3 Bewegungsprogrammierung 3.1 Verwendung verschiedener Koordinatensysteme 3.2 Punkt-zu-Punkt Bewegungen (PTP) 3.3 Bahnbewegungen (CP-Bewegungen = Continous Path) 3.4 Rechnervorlauf 3.5 Überschleifbewegung 3.6 Teachen von Punkten

3.4 Rechnervorlauf Über die Systemvariable $ADVANCE wird der Vorlauf in maximal zuvor abgearbeiteten Bewegungssätzen eingestellt. Der Hauptlaufzeiger eilt diesem nach und ist sichtbar durch den gelben Pfeil dargestellt. Ein automatischer Vorlaufstop kann durch bestimmte Systemvariablen verursacht werden. Der Vorlaufstop kann mit CONTINUE aufgehoben werden, gilt jedoch nur für die folgende Zeile.   z.B. durch WAIT SEC 0

3 Bewegungsprogrammierung 3.1 Verwendung verschiedener Koordinatensysteme 3.2 Punkt-zu-Punkt Bewegungen (PTP) 3.3 Bahnbewegungen (CP-Bewegungen = Continous Path) 3.4 Rechnervorlauf 3.5 Überschleifbewegung 3.6 Teachen von Punkten

3.5 Überschleifbewegung Der Programmierer hat nur Einfluss auf Beginn und Ende des Überschleifens. Der Rechnervorlauf ($ADVANCE =1) muss mindestens auf 1 gesetzt sein und kein automatischer Vorlaufstop sollte zuvor eingelegt werden.

3.5.1 PTP-PTP-Überschleifen In Maschinendaten ist für jede Achse ein Winkel vordefiniert: $APO_DIS_PTP[1] bis [6]=90 Über $APO.CPTP = Prozentsatz lässt sich der Beginn des Überschleifens einstellen. Je größer dieser Prozentsatz, desto mehr wird die Bahn abgerundet.

3.5.2 LIN-LIN-Überschleifen Als Überschleifkontur wird eine Parabelförmige Bahn berechnet. Überschleifbeginn mit: Variable Datentyp Einheit Bedeutung Schlüsselwort $APO.CDIS REAL mm Translatorisches Distanzkriterium C_DIS $APO.CORI ° Orientierungsdistanz C_ORI $APO.CVEL INT % Geschwindigkeitskriterium C_VEL

3.5.3 CIRC-CIRC-Überschleifen und CIRC-LIN-Überschleifen

3 Bewegungsprogrammierung 3.1 Verwendung verschiedener Koordinatensysteme 3.2 Punkt-zu-Punkt Bewegungen (PTP) 3.3 Bahnbewegungen (CP-Bewegungen = Continous Path) 3.4 Rechnervorlauf 3.5 Überschleifbewegung 3.6 Teachen von Punkten

3.6 Teachen von Punkten Codezeile: Code Bsp: PTP ! Handgesteuertes Anfahren Code Bsp: PTP !

Übersicht: Allgemeines zu KRL-Programmen Variablen und Vereinbarungen Bewegungsprogrammierung Programmablaufkontrolle Ein-/Ausgabeanweisungen Unterprogramme und Funktionen Datenlisten

4 Programmablaufkontrolle 4.1 Programmverzweigungen 4.2 Schleifen 4.3 Warteanweisungen 4.4 Anhalten eines Programms

4.1 Programmverzweigungen Sprunganweisungen (GOTO)   Bedingte Verzweigung (IF) Verteiler (SWITCH) Code Bsp.: GOTO MARKE . . . MARKE: Code Bsp.: IF (Ausführbedingung) THEN Anweisung ELSE ENDIF Code Bsp.: SWITCH PROG_NR CASE 1 . . . CASE #NO1 DEFAULT ENDSWITCH

4 Programmablaufkontrolle 4.1 Programmverzweigungen 4.2 Schleifen 4.3 Warteanweisungen 4.4 Anhalten eines Programms

4.2 Schleifen FOR-Schleife WHILE-Schleife REPEAT-Schleife Endlosschleife (LOOP) Schleifenabbruch (EXIT) => beendet Schleife vorzeitig Code Bsp.: FOR Zähler=Start TO Ende STEP Schrittweite Anweisungen ENDFOR Code Bsp.: WHILE (Ausführbedingung ) Anweisungen ENDWHILE Code Bsp.: REPEAT Anweisungen UNTIL (Abbruchbedingung) Code Bsp.: LOOP Anweisungen ENDLOOP

4 Programmablaufkontrolle 4.1 Programmverzweigungen 4.2 Schleifen 4.3 Warteanweisungen 4.4 Anhalten eines Programms

4.3 Warteanweisungen Bedingte Warteanweisung Wartezeiten Code Bsp.: WAIT FOR (Bedingung) Code Bsp.: WAIT SEC Zeit

4 Programmablaufkontrolle 4.1 Programmverzweigungen 4.2 Schleifen 4.3 Warteanweisungen 4.4 Anhalten eines Programms

4.4 Anhalten des Programms HALT => Unterbricht das Programm, führt jedoch die letzte Anweisung aus. BRAKE => Anweisung wird sofort angehalten

Übersicht: Allgemeines zu KRL-Programmen Variablen und Vereinbarungen Bewegungsprogrammierung Programmablaufkontrolle Ein-/Ausgabeanweisungen Unterprogramme und Funktionen Datenlisten

5 Ein-/Ausgabeanweisungen 5.1 Allgemeines 5.2 Binäre Ein-/Ausgänge 5.3 Digitale Ein-/Ausgänge 5.4 Impulsausgänge

5.1 Allgemeines Kuka-Standartsteuerschrank -> Stecker X-11 (MFC-Baugruppe) sind folgende Ein- und Ausgänge: Eingänge 1 ... 16 Ausgänge 1 ... 16 (mit max. 100mA belastbar; 100% Gleichzeitigkeit) Ausgänge 17 ... 20 (mit max. 2A belastbar; 100% Gleichzeitigkeit)   Über die Variablen $IN[Nr] bzw. $OUT[Nr] werden diese angesprochen. Jeder Zugriff auf diese Variablen löst Vorlaufstopp aus.

5 Ein-/Ausgabeanweisungen 5.1 Allgemeines 5.2 Binäre Ein-/Ausgänge 5.3 Digitale Ein-/Ausgänge 5.4 Impulsausgänge

5.2 Binäre Ein-/Ausgänge $OUT[Nr] = TRUE $OUT[Nr] = FALSE Werden Ein-/Ausgänge einzeln angesprochen, so sind diese binäre Ein-/Ausgänge. SIGNAL -> Es ist möglich Ein-/Ausgängen Namen über ‚SIGNAL’ zuzuweisen Code Bsp: BOOL SCHALTER SIGNAL SCHALTER $IN[5] Nun ist der Name des Eingangs 5 = Schalter

5 Ein-/Ausgabeanweisungen 5.1 Allgemeines 5.2 Binäre Ein-/Ausgänge 5.3 Digitale Ein-/Ausgänge 5.4 Impulsausgänge

5.3 Digitale Ein-/Ausgänge Hier wird über den Signalnamen ‘AUS’ ein Digitaler Ausgang von 11Bit ($OUT[10] To $OUT[20]) definiert. Dem Ausgang kann nun ein Wert übermittelt werden: AUS = 35 AUS = `B1000111` AUS = `H23` Code Bsp: SIGNAL AUS $OUT[10] TO $OUT[20]

5 Ein-/Ausgabeanweisungen 5.1 Allgemeines 5.2 Binäre Ein-/Ausgänge 5.3 Digitale Ein-/Ausgänge 5.4 Impulsausgänge

5.4 Impulsausgänge PULSE($OUT[4],TRUE,0.7) -> Ausgang 4 wird 0,7 Sekunden auf TRUE(High) gesetzt.   Impulszeiten zwischen 0,012 und 231 Sekunden sind möglich. Das Raster hat 0,1 Sekunde.

Übersicht: Allgemeines zu KRL-Programmen Variablen und Vereinbarungen Bewegungsprogrammierung Programmablaufkontrolle Ein-/Ausgabeanweisungen Unterprogramme und Funktionen Datenlisten

6 Unterprogramme und Funktionen 6.1 Deklarationen 6.2 Aufruf und Parameterübergabe

6.1 Deklarationen Code Bsp.: DEF UNTERPROG() . . . END Lokale Unterprogramme/ Funktionen => Unterhalb des Hauptprogramms Globale Unterprogramme/ Funktionen => Eigene SRC-Datei Funktionen als Unterprogramm Code Bsp.: DEF UNTERPROG() . . . END Code Bsp.: DEFFCT INT FUNKTION() . . . RETURN(X) ENDFCT

Wichtige Sätze: Alle in der Datenliste (DAT-Datei) des Hauptprogramms deklarierten Variablen sind in den lokalen Unterprogrammen/Funktionen bekannt. Alle im Hauptprogramm (SRC-Datei) deklarierten Variabeln sind nur dem Hauptprogramm bekannt. Ein Hauptprogramm kann nicht auf lokale Unterprogramme oder Funktionen eines anderen Hauptprogramms zugreifen. Der Name von Unterprogrammen/ Funktionen darf 24 Zeichen lang sein.

Unterschied zwischen lokalen und globalen Unterprogrammen:

6 Unterprogramme und Funktionen 6.1 Deklarationen 6.2 Aufruf und Parameterübergabe

6.2 Aufruf und Parameterübergabe Call by value (IN)   Call by value (OUT) Code Bsp.: DEFFCT INT FUNCTION(ZAHL: IN) INT ZAHL ZAHL = ZAHL* ZAHL RETURN(ZAHL) ENDFCT Code Bsp.: DEFFCT INT FUNCTION(ZAHL: OUT) . . . siehe oben . . . ENDFCT

Übersicht: Allgemeines zu KRL-Programmen Variablen und Vereinbarungen Bewegungsprogrammierung Programmablaufkontrolle Ein-/Ausgabeanweisungen Unterprogramme und Funktionen Datenlisten

7 Datenlisten 7.1 Lokale Datenlisten 7.2 Globale Datenlisten

7.1 Lokale Datenlisten Sätze: Die Datenliste ist lokal, obwohl sie eine eigene Datei ist. In einer Datenliste dürfen nur Deklarationen und Initialisierungen stehen. Es kann in einer Zeile deklariert und initialisiert werden. Nach Ausführen des Programms werden veränderte Werte in Datenliste gespeichert.

7.2 Globale Datenlisten Schlüsselwörter IMPORT und PUBLIC:

7 Datenlisten 7.1 Lokale Datenlisten 7.2 Globale Datenlisten

7.2 Globale Datenlisten Schlüsselwörter GLOBAL und PUBLIC:

Vielen Dank für‘s Zuhören! Übersicht: Allgemeines zu KRL-Programmen Variablen und Vereinbarungen Bewegungsprogrammierung Programmablaufkontrolle Ein-/Ausgabeanweisungen Unterprogramme und Funktionen Datenlisten Geschafft! Vielen Dank für‘s Zuhören!