Kurzbeschreibung

TwinCAT CNC: Überblick

Programmierung

Die Steuerung verarbeitet Syntax nach DIN 66025 bzw. üblicher Auslegung sowie Sprachelemente gemäß Erweiterungen:

q textorientierte Programmnamen

q umfassende Parameterrechnung (lokale und globale Parameter)

q Zugriff auf steuerungsinterne Daten wie z.B. Positionen, Meßwerte, Werkzeugdaten, Nullpunktwerte, Verschiebungen etc. über Klartextbezeichnung (V.A.name, V.G.name)

q Definition von Klartexten zur Bezeichung freier Parameter im NC-Programm (V.L.name, V.S.name, V.P.name)

q Steuersatzkonstrukte in Anlehnung an die Programmiersprache "C", z.B.

- Bedingte Sprünge : $IF, $ELSEIF, $ELSE, $ENDIF,
$SWITCH, $CASE, $DEFAULT,$ENDSWITCH, $BREAK

- Zählerschleifen : $FOR, $ENDFOR, $CONTINUE, $BREAK

- Schleifen mit Laufbedingung: $WHILE, $ENDWHILE, $CONTINUE, $BREAK

- Schleifen ohne Laufbedingung: $DO, $ENDDO, $CONTINUE, $BREAK

- Sprünge innerhalb einer NC-Programmebene: $GOTO

q Unterscheidung zwischen globalen (von allen Hauptprogrammen erreichbar) und lokalen Unterprogrammen (nur vom zugehörigen Hauptprogramm erreichbar

q Mathematische Ausdrücke, z.B.

- arithmetischen Standardgrundoperationen : + , - , * , / , ** , MOD

- Zahlenfunktionen wie ABS,SQR,SQRT,EXP,LN,DEXP,LOG

- Winkelfunktionen wie SIN,COS,TAN,ASIN,ACOS,ATAN

- Umwandlungsfunktionen wie INT,FRACT,ROUND

q Technologiebefehle mit konfigurierbarer Wirkung jeder Funktion:

- Zusatzfunktionen (M0...M65535)

- Hilfsfunktionen (H0..H65535)

- Spindelfunktionen (S, M3, M4, M5, M19)

- Werkzeugfunktionen (T, D),

q Verarbeitung von Koordinatenschreibweise A, B, C, ..., U, V, W, soweit nicht anderweitig verwendet und/oder Programmierung von Strings (z. B. X_ACHSE, SPINDEL_1 ...)

Die komplette NC-Befehlsübersicht ist im Anhang aufgelistet!


Darstellung der Syntax

Für die Darstellung der Syntax der in dieser Dokumentation beschriebenen NC-Befehle gilt folgende Konvention:

Fett Obligatorische Syntaxelemente des NC-Befehls.

[ ] Optional 1-maliges Auftreten

{ } 0 oder mehrmaliges Auftreten

| Alternative zwischen mehreren Symbolen (oder)

< > Mathematischer Ausdruck (gemäß Kapitel 2.6.1) oder String


Bedeutung der Symbole

Achtung; beschreibt Einschränkungen, warnt vor Fehlern oder zeigt Gefahren an.

Optionale Funktionalität; die Verfügbarkeit dieser Funktionalität ist von der Konfiguration und dem Versionsumfang abhängig.

Programmierbeispiel (komplette NC-Programme oder Programmsequenzen) der beschriebenen Funktionalität bzw. des entsprechenden NC-Befehls.

Wichtiger Hinweis; beschreibt weitere grundlegende Sachverhalte und gibt zusätzliche Informationen.


Zeichen- und Zahlenformate

Mehr:

button Zeichenvorrat und Fileformat

button Zahleneingabe


Zeichenvorrat und Fileformat

Der eingesetzte Decoder verarbeitet NC-Steuerdaten im ASCII-Fileformat. NC-Steuerdaten sind mit einem im Bedienungssystem integrierten Programmiersystem bzw. einem Editor erstellbar.

Die CNC verarbeitet folgende Zeichen:

Zeichen = Buchstabe und/oder

Ziffer und/oder

Sonderzeichen und/oder

Steuerzeichen

Buchstabe | { A B C ... Z a b c ... z }
Ziffern | { 1 2 3 ... 9 0 }
Sonderzeichen | { ! @ # $ % & * - _ = ~ { } ( ) [ ] , ; : " < > / ? }
Steuerzeichen = HT | Horizontaltabulator TAB
SP Zwischenraum | SPACE
CR Wagenrücklauf | CARRIAGE RETURN
LF Zeilenvorschub | LINE FEED


Zahleneingabe

Zahleneingaben erfolgen als Ganz- oder Dezimalzahlen. Dezimalstellen werden grundsätzlich mit einem "." getrennt, wobei führende Nullen weggelassen werden können. Die Eingaben für Längen und Positionswerte erfolgen je nach Konfigurierung und Programmierung in mm oder Inch, die Eingabe von Winkeln in Grad (grd) oder Neugrad (ngrd).

Beispiel:

Werte: [µm] | Eingaben: [mm]
0,1 | 0.0001 oder .0001
1 | 0.001 oder .001
10 | 0.01 oder .01
100 | 0.1 oder .1
1000 | 1.0 oder 1
10000 | 10.0 oder 10
100000 | 100.0 oder 100
1000000 | 1000.0 oder 1000

Der Eingabebereich von Zahlen ist nur durch die interne Zahlendarstellung begrenzt.

Diese Zahlendarstellung erlaubt Verfahrbewegungen im Bereich von 200 m bei einer Auflösung von 0,1 µm!

Bei der Eingabe von Positionsangaben, Vorschüben, etc. können durch Änderung der internen Umrechnungsfaktoren in einem Spezifikationsfile auch andere Einheiten als mm oder inch verwendet werden.


Aufbau von NC-Steuerdaten: NC-Programme

Definitionen zum Verständnis:

NC-Programme sind neben Werkzeugdaten, Nullpunktverschiebungsdaten u.s.w. Bestandteil der NC-Steuerdaten. NC-Programme beschreiben den Ablauf von Bearbeitungsvorgängen.

Trennzeichen sind Zeichen, die erkennen lassen, daß eine Folge von Zeichen abgeschlossen ist. Vom Decoder werden als Trennzeichen das Satzendezeichen, Leerzeichen, Tabulatoren, das Zeichen mit der ASCII-Darstellung /0, das File-Ende-Zeichen oder Kommentare gewertet.

Kommentare enthalten nichtdecodierbare ASCII-Informationen, die zwischen den Zeichen "(" und ")" stehen müssen. Stehen innerhalb eines Kommentares weitere "(", so werden entsprechende ")" erwartet. Das Satzendezeichen und das Fileendezeichen schließen die Kommentare ab.

Mathematische Ausdrücke sind aufgebaut aus Zahlen, Parametern, Operatoren, Funktionen, etc. (siehe Kapitel 2.4.1: "Mathematische Ausdrücke"). Sie werden von einer eingebauten Rechenfunktion ausgewertet.

Beispiele: "100", "100+20", "100+P10", "100+PP10", "100*[2+P3]", "DEXP[2]", "100+SIN[P10+PP20]".

Ein NC-Programm besteht aus:

q Kommentaren,

q Definitionen lokaler Unterprogramme, bestehend aus

 String "%L ", gefolgt von einem Unterprogrammnamen, wobei entweder das Satzendezeichen, das Leerzeichen, ein Tabulator, das Zeichen mit der ASCII-Darstellung /0 oder das File-Ende-Zeichen den Programmnamen abschließt,

 einer Anzahl von NC-Programmsätzen,

 einer Unterprogrammendekennung (M17 oder M29),

q Definition des Hauptprogrammes, bestehend aus

 String "%", gefolgt von einem Hauptprogrammnamen, wobei entweder das Satzendezeichen, das Leerzeichen, ein Tabulator, das Zeichen mit der ASCII-Darstellung /0 oder das File-Ende-Zeichen den Programmnamen abschließt,

 einer Anzahl von NC-Sätzen,

 einer Hauptprogrammendekennung (M02 oder M30).

Wird im File außerhalb von Kommentaren als erstes Zeichen ein solches gefunden, das weder ein Trennzeichen noch ein "%" ist, so wird dieses Zeichen als erstes Zeichen eines namenlosen Hauptprogrammes gewertet. Das bedeutet auch, daß vor "%" keine Satznummern programmiert werden dürfen.


NC-Satzaufbau

Ein NC-Satz besteht aus einer

Satznumerierung (optional), einer

Anzahl von Worten und einer

Satzendekennung.

Die Verwendung von Sonderbefehlen (#<Anweisung>), wie sie in Kapitel 11 beschrieben werden, schließt die Programmierung weiterer Worte im NC-Satz aus (mit Ausnahme der NC-Satz-Nummer).

Jeder Satz beginnt i.a. mit einer Satznummer, bestehend aus einem N-Zeichen gefolgt von einem mathematischen Ausdruck. Dieser Ausdruck wird bei entsprechender Decodereinstellung ganzzahlig gerundet in den Anzeigedaten abgebildet.

Für den Programmablauf ist die Satznummer ohne Bedeutung. Sie muß daher auch nicht in aufsteigender Form programmiert werden.

Beispiel für einen Satzaufbau:

Der DIN 66025 entsprechende NC-Befehle müssen nicht zwingend durch Leerzeichen oder Tabulatoren getrennt werden. Bei der Programmierung von DIN-abweichenden Sprachbefehlen (Steuersatzanweisungen, Sonderfunktionen,...) sind Trennzeichen syntaktisch erforderlich und auch zur Strukturierung eines NC-Programms sinnvoll.

Beispiele für einen NC-Programmaufbau:

ohne | teilweise | vollständige
Nummerierung | Nummerierung | Nummerierung
% 100 | % 100 | % 100
"Satz 1" | N10 "Satz 1" | N10 "Satz 1"
"Satz 1" | "Satz 2" | N20 "Satz 2"
"Satz 1" | N20 "Satz 3" | N30 "Satz 3"
. | "Satz 4" | N40 "Satz 4"
. | . | .
. | . | .
M30 | M30 | N700 M30

Worte sind bezüglich ihrer Bedeutung zu unterscheiden in Worte mit

q geometrischen Informationen (z.B. Positionen),

q technologischen Informationen (z.B. Spindeldrehzahl, Vorschubgeschwindigkeit, Spindelrechtslauf),

q Informationen zur Steuerung des Programmablaufes (sog. Steuersätze wie z.B. Zählschleifen),

q arithmetischen Informationen (z.B. Berechnung einer Größe, Parameterrechnung).

Mehrere Worte können in einem Satz stehen (Ausnahme: Sonderbefehle aus Kapitel 11-Sonderfunktionen), wobei die Reihenfolge der Abarbeitung der Steuerinformation innerhalb des Satzes durch die Steuerung festgelegt ist. Damit können vom Programmierer die einzelnen Wortinformationen eines NC-Satzes in beliebiger Reihenfolge eingegeben werden, ohne daß dies Auswirkungen auf die Bearbeitung hat. Bei Ausnahmen wird in dieser Programmieranleitung speziell darauf hingewiesen.

Die Satzendekennung ist fest vorgegeben und kann ein beliebiges Steuerzeichen sein. Üblicherweise wird das Steuerzeichen "CR" verwendet.

Mehr:

button Ausblenden von Sätzen /"

button Satzspezifische Kommentare


Ausblenden von Sätzen /"

TwinCAT CNC: Überblick

Ausblenden von Sätzen /

Durch Voranstellen des "/"-Zeichens (z.B. /N3412) können gezielt Sätze ausgeblendet werden, d.h. die Steuerung überliest diese Sätze, wenn die Funktion "Satz ausblenden" am Bedienfeld eingeschaltet wurde. Ausblendsätze dienen zur Festlegung optionaler Bearbeitungsschritte wie z.B. Meßschleifen oder Leerschritte innerhalb eines NC-Programmes.


Satzspezifische Kommentare

Erläuternde Kommentare können an fast jeder Stelle eines NC-Programmes, z.B. auch am Programmanfang, eingefügt werden. Kommentare haben keine Auswirkungen auf die Abarbeitung eines NC-Programmes.

Kommentare werden durch eine "(" eingeleitet. Wenn sich der Kommentar bis zum Satzende erstreckt, so reicht zur Abgrenzung die "(". Bei Kommentaren innerhalb eines Satzes ist auch eine entsprechende ")" erforderlich.

Alternativ dazu kann ein Kommentar auch durch ein Semikolon ";" eingeleitet werden. Diese Art von Kommentar erstreckt sich immer bis zum Satzende.

Kommentare können beliebig lang sein, wobei aber die maximale Anzahl von Zeichen pro Satz nicht überschritten werden darf.

Eine Schachtelung von Kommentaren ist möglich.

Programmierbeispiel

% 100 (Kommentar in vollständiger Klammerung)

N200 ... (Kommentar nur mit einleitender Klammer

N300 (Kommentar (Geschachtelter Kommentar))

N500 X10 (Kommentar im Satz) Y20

N700 ... ;Kommentar nach Semikolon

N999 M30

Das Auskommentieren beliebig vieler Programmzeilen (Satzübergreifender Kommentar) ist mit den Sonderbefehlen #COMMENT BEGIN/END möglich, die in Kapitel 11.5 beschrieben werden.


Wortaufbau

Ein Wort besteht aus Adreßbuchstaben, arithmetischen Ausdrücken und Texten <string>. Die Bedeutung der einzelnen Adreßbuchstaben wird in den folgenden Kapiteln beschrieben. Eine Übersicht gibt das Kapitel "Zugeordnete Adreßbuchstaben".

Mehr:

button Mathematische Ausdrücke

button Operationen für Zeichenketten (Strings)

button Zugeordnete Adreßbuchstaben

button Programmbeispiele


Mathematische Ausdrücke

Bestehend aus

q Zahlenwerte werden unterschieden in

ganze Zahlen <int>

 und

Dezimalzahlen <float> .

q Arithmetische Ausdrücke <expr> sind aufgebaut aus

Zahlenwerten,

Operatoren,

Funktionen,

Parametern,

Variablen

und

symbolischen Zeichenketten.

Beispiel: [[sin["MAX_ANZ" * 30.00] + P2] / V.G.SATZ_NR]

Mehr:

button Ganze Zahlen <int>

button Dezimalzahlen <float>

button Arithmetische Ausdrücke <expr>


Ganze Zahlen <int>

Ganze Zahlen werden ohne Dezimalpunkt angegeben. Der intern zulässige Wertebereich entspricht dem von "long integer"-Variablen der Programmiersprache C, d.h. also im Bereich von 2.14*109 bis +2.14*109. Wenn intern mit der Einheit 0.1 µm gerechnet wird, liegt also bei Eingabe von Werten in mm der Zahlenbereich zwischen 2.14*105 und +2.14*105.Dies entspricht einem Verfahrbereich von mehr als 400 Metern. Durch eine interne Begrenzung im Lageregler wird der Verfahrbereich allerdings auf die Hälfte, d.h. auf etwas mehr als 200 Meter beschränkt. Für negative Zahlen wird ein "-" Zeichen vorangestellt, bei positiven Zahlen ist kein Vorzeichen notwendig.


Dezimalzahlen <float>

Dezimalzahlen werden mit Dezimalpunkt oder alternativ auch in der Exponentialschreibweise (auch wissenschaftliche Schreibweise genannt) angegeben. Der Wertebereich entspricht dem von Integer-Zahlen. Wenn intern mit der Einheit 0.1 µm gerechnet wird, werden bei Eingabe von Werten in mm demnach 4 Stellen nach dem Komma berücksichtigt. Für negative Zahlen wird ein "-" Zeichen vorangestellt, bei positiven Zahlen ist kein Vorzeichen notwendig.

Beispiele für Dezimalzahlen:

123.3456 0.6789 .6789 -345.56 +78.987

12E5 +2.5E6 -4E7 -523.6E-3


Arithmetische Ausdrücke <expr>

Bei der Behandlung von arithmetischen Ausdrücken gelten die üblichen Rechenregeln:

 Punkt-vor-Strich - Rechnung

 die Klammer - Regel, wobei eckige Klammern "[ ]" zu verwenden sind

In arithmetischen Ausdrücken werden oft Parameter verwendet; die Schreibweise von Parametern ist :

 P gefolgt von einer ganzen Zahl, z.B. P12 .

Beispiel für einen arithmetischen Ausdruck:

P5 = [[sin[R1*30.00] + P2] / P5]

Symbolische Zeichenketten (Strings) können arithmetischen Ausdrücken und Teilen davon zugewiesen werden.

Eine solche Zeichenkette führt zu dem ersetzenden String, der anstelle der Zeichenkette analysiert wird. Dabei ist auch eine rekursive Behandlung möglich.

Zu ersetzende Zeichenketten müssen in Anführungszeichen eingeschlossen sein. Bei deren Decodierung wird zwischen Groß- und Kleinschreibung unterschieden.

Die Schachtelung von Strings wird durch ein vorangestelltes ´\´-Zeichen vor den begrenzenden Anführungszeichen angezeigt. Es ist darauf zu achten, daß immer komplette Schachtelungsebenen in einem String zusammengefaßt sind, d.h. das Einfügen von ´[´ am Anfang und ´]´ am Ende des Ersatztextes darf sich nicht auf das Ergebnis des mathematischen Ausdrucks auswirken.

Programmierbeispiel

Richtig:

N10 "STRING1" = "COS[\"STRING2\"]"

N20 "STRING2" = "5 * 12"

N30 "STRING3" = "SIN[89.5 + \"STRING1\"]"

N40 X[-2 * "STRING1" + "STRING2" + "STRING3"] (Fahren nach X60)

M30

Falsch:

Nur komplette Schachtelungsebenen dürfen im String

zusammengefaßt werden

N10 "STRING1" = "COS["

N20 "STRING2" = "90]"

N30 "STRING3" = "\"STRING1\" \"STRING2\" "

Die im NC-Programm definierten Zeichenketten sind programmübergreifend gültig.

Die Programmierung symbolischer Zeichenketten außerhalb mathematischer Ausdrücke wird im Kapitel "Symbolische Zeichenketten" beschrieben.

Übersicht über alle verfügbaren Rechenoperationen:

Grundrechenarten:

Addition | + | P1 = P2 + P3 + 0.357
Subtraktion | - | P1 = P2 - 0.031
Multiplikation | * | P1 = P2 * [P3 + 0.5]
Division | / | P1 = P2 * P3 / [P5 + P6]
Exponentenrechnung | ** | P1 = 2**P3 (zwei hoch P3)
Modulorechnung | MOD | P1 = 11 MOD 3 (-> 2)

Zahlenfunktionen:

Absolutwertbildung | ABS [..] | P1 = ABS [P2 - P4]
Quadrieren | SQR [..] | P1 = SQR [P2] + SQR [P3]
Quadratwurzel | SQRT [..] | P1 = SQRT [SQR[P2]+SQR[P3]]
e - Funktion | EXP [..] | P1 = EXP [P2 * P4]
Natürlicher Logarithmus | LN [..] | P1 = LN [P2] + LN [P3]
Zehner - Exponent | DEXP [..] | P1 = DEXP [P2]
Zehner - Logarithmus | LOG [..] | P1 = LOG [P2]

Bei LN, LOG und SQRT muß das Argument immer grösser 0 sein !

Bitoperanden:

UND-Verknüpfung | & | P1 = P2 & P3
ODER-Verknüpfung | | | P1 = P2 | P3
exlusives ODER | ^ | P1 = P2 ^ P3
Komplement | INV[..] | P1 = INV[P2]

Die Operanden können beliebige positive mathematische Ausdrücke oder Zahlen sein. Negative Ausdrücke oder Zahlen sind nicht erlaubt. Gleitkommazahlen werden in ganze Zahlen konvertiert.

Logische Operanden:

UND-Verknüpfung | && / AND | $IF P1 >= P2 && P3 != P4 bzw. $IF P1 >= P2 AND P3 != P4
ODER-Verknüpfung | || / OR | $IF P1 >= P2 || P3 != P4 bzw. $IF P1 >= P2 OR P3 != P4

Vergleichsoperanden:

Bei Schleifenkonstruktionen (Kapitel 10) sind Vergleichsoperationen erforderlich. Es kann wie folgt geprüft werden auf:

Gleichheit | == | $IF P1 == 10
Ungleichheit | != | $IF P1 != 10
größer gleich | >= | $IF P1 >= 10
kleiner gleich | <= | $IF P1 <= 10
kleiner | < | $IF P1 < 10
größer | > | $IF P1 > 10

Mögliche Wahrheitswerte sind:

TRUE | wahr | $IF V.A.MERF.X == TRUE
FALSE | nicht wahr | $WHILE V.G.WZ[2].OK == FALSE

Behandlung der Wahrheitswerte:

Für TRUE wird steuerungsintern der Wert 1 verwendet.

Für FALSE wird steuerungsintern der Wert 0 verwendet.

Winkelfunktionen (Angabe von Winkeln in Grad):

Sinus | SIN [..] | P1 = SIN [P2 * 30 +10]
Kosinus | COS [..] | P1 = COS [P2 * 30 +10]
Tangens | TAN [..] | P1 = TAN [P2 * 30 +10]
Arcus Sinus | ASIN [..] | P1 = ASIN [P2 * 10]
Arcus Kosinus | ACOS [..] | P1 = ACOS [P2 * 10]
Arcus Tangens | ATAN [..] | P1 = ATAN [P2 * 10]
Arcus Tangens mit 2 Argumenten | ATAN2 [y,x] | P1 = ATAN2[100,100] (-> Ergebnis ist 45°)

Bei den Zahlenfunktionen ASIN und ACOS muß das Argument immer zwischen -1 und +1 sein.

Bei der Zahlenfunktion TAN darf das Argument nicht die Werte ... -90, 90, 270 ... Grad annehmen.

Die Zahlenfunktion ATAN2 liefert für x != 0 den Winkel einer Position zur X-Achse im korrekten Quadranten.

Sonderfall: Für ATAN2[0,0] (x = y = 0) ist das Ergebnis immer 0.

Umwandlungsfunktionen:

Integer | INT [..] | schneidet Nachkommastellen ab
Float | FRACT [..] | entfernt ganzzahligen Anteil
Runden | ROUND [..] | rundet auf ganze Zahl

Spezielle Funktionen:

Test der Existenz von Variablen/ Parametern/ M/H-Funktionen | EXIST [ <variable/parameter/ M function/ H function> ] | $IF EXIST[V.P.MY_VAR] == TRUE $IF EXIST[P1] != TRUE $IF EXIST[M55] == TRUE $IF EXIST[H20] == TRUE
Bestimmung der Größe einer Array-Dimension | SIZEOF [<array_name>, <dimension>] oder SIZEOF [<array_name>] (für 1. Dim.) |  | $IF SIZEOF [V.P.MY_ARRAY,2] == 3 P1 = SIZEOF[P10,2]


Operationen für Zeichenketten (Strings)

Übersicht über alle verfügbaren Operationen:

Stringoperationen:

Zusammenfügen von Strings

Mit + werden 2 Strings aneinandergehängt.

V.E.str = "Hello" + " world!"

(-> Ergebnis ist "Hello world!")

+

Linken Teilstring
ermitteln

LEFT liefert den linken Anfangsstring eines Strings. Hole anz Zeichen aus dem String str, basierend auf dem ersten Zeichen.

V.E.str = LEFT["Hello world!", 5]

(-> Ergebnis ist "Hello")

LEFT[str, anz]

Mittleren Teilstring
ermitteln

MID liefert den Teilstring eines Strings. Hole anz Zeichen aus dem String str, beginnend mit dem Zeichen an der Stelle pos.

V.E.str = MID["How are you?", 3, 5]

(-> Ergebnis ist "are")

MID[str, anz, pos]

Rechten Teilstring
ermitteln

RIGHT liefert den rechten Endstring eines Strings. Hole anz Zeichen aus dem String str, basierend auf dem letzten Zeichen.

V.E.str = RIGHT["Hello world! How are you?", 12]

(-> Ergebnis ist "How are you?")

RIGHT [str, anz]

Stringlänge ermitteln

LEN liefert die Länge (Anzahl Zeichen) eines Strings.

P1 = LEN["Hello world! How are you?"]

(-> Ergebnis ist 25)

LEN[str]

Bei FIND[..] wird zwischen Gross- und Kleinbuchstaben unterschieden!

Teilstring suchen

FIND sucht einen String str2 in einem String str1 und liefert als Ergebnis die Position der ersten Übereinstimmung von str2 in str1.

V.E.str1 = "Hello world! How are you?"

V.E.str2 = "How"

P1 = FIND[V.E.str1, V.E.str2]

(-> Ergebnis ist 14)

Ist String str2 in String str1 nicht vorhanden, so liefert FIND als Ergebnis den Wert 0.

V.E.str1 = "Hello world! How are you?"

V.E.str2 = "today"

P1 = FIND[V.E.str1, V.E.str2]

(-> Ergebnis ist 0)

FIND [str1, str2]

Teilstring löschen

DELETE löscht in einem String str eine bestimmte Anzahl Zeichen anz, beginnend mit dem Zeichen an der Stelle pos.

V.E.str = DELETE["Hello world! How are you?", 5, 7]

(-> Ergebnis ist "Hello ! How are you?")

DELETE [str, anz, pos]

Teilstring einfügen

INSERT fügt einen String str2 in einen String str1 ein, beginnend nach dem Zeichen an der Stelle pos.

V.E.str1 = "Hello ! How are you?"

V.E.str2 = "world"

V.E.str = INSERT[V.E.str1, V.E.str2, 6]

(-> Ergebnis ist "Hello world! How are you?")

INSERT [str1, str2, pos]

Teilstring ersetzen

REPLACE ersetzt eine Anzahl Zeichen anz in einem String str1 durch den Teilstring str2, beginnend mit dem Zeichen an der Stelle pos.

V.E.str1 = "What is your name?"

V.E.str2 = "age"

V.E.str = REPLACE[V.E.str1, V.E.str2, 4, 14]

(-> Ergebnis ist "What is your age?")

REPLACE [str1, str2, anz, pos]

Vergleichsoperanden:

Bei Vergleichsoperationen wird zwischen Gross- und Kleinbuchstaben unterschieden!

Gleichheit

V.E.str1 = "Peter"

V.E.str2 = "Peter"

$IF V.E.str1 == V.E.str2

#MSG ["%s ist gleich %s!", V.E.str1, V.E.str2]

$ELSE

#MSG ["Strings sind nicht gleich!"]

$ENDIF

(-> Ergebnis ist "Peter ist gleich Peter")

==

Ungleichheit

V.E.str1 = "Peter"

V.E.str2 = "Steve"

$IF V.E.str1 != V.E.str2

#MSG ["%s ist ungleich %s!", V.E.str1, V.E.str2]

$ELSE

#MSG ["Strings sind gleich!"]

$ENDIF

(-> Ergebnis ist "Peter ist ungleich Steve")

!=

größer

bzw.

größer gleich

V.E.str1 = "Peter"

V.E.str2 = "Peter"

$IF V.E.str1 > V.E.str2

#MSG ["%s ist groesser als %s!", V.E.str1, V.E.str2]

$ELSEIF V.E.str1 >= V.E.str2

#MSG ["%s ist groesser/gleich %s!", V.E.str1, V.E.str2]

$ENDIF

(-> Ergebnis ist "Peter ist groesser/gleich Peter!")

V.E.str1 = "Peter"

V.E.str2 = "Bob"

$IF V.E.str1 > V.E.str2

#MSG ["%s ist groesser als %s!", V.E.str1, V.E.str2]

$ELSEIF V.E.str1 >= V.E.str2

#MSG ["%s ist groesser/gleich %s!", V.E.str1, V.E.str2]

$ENDIF

(-> Ergebnis ist "Peter ist groesser als Bob!")

>

>=

kleiner

bzw.

kleiner gleich

V.E.str1 = "Peter"

V.E.str2 = "Peter"

$IF V.E.str1 < V.E.str2

#MSG ["%s ist kleiner als %s!", V.E.str1, V.E.str2]

$ELSEIF V.E.str1 <= V.E.str2

#MSG ["%s ist kleiner/gleich %s!", V.E.str1, V.E.str2]

$ENDIF

(-> Ergebnis ist "Peter ist kleiner/gleich Peter!")

V.E.str1 = "Bob"

V.E.str2 = "Tim"

$IF V.E.str1 < V.E.str2

#MSG ["%s ist kleiner als %s!", V.E.str1, V.E.str2]

$ELSEIF V.E.str1 <= V.E.str2

#MSG ["%s ist kleiner/gleich %s!", V.E.str1, V.E.str2]

$ENDIF

(-> Ergebnis ist "Bob ist kleiner als Tim!")

<

<=

Konvertierungsfunktionen:

Integer nach String | INT_TO_STR[...] | V.E.str = INT_TO_STR[123]
Real64 nach String | REAL_TO_STR[...] | V.E.str = REAL_TO_STR[12.34]
String nach Integer | STR_TO_INT[...] | V.E.sgn32 = STR_TO_INT["12"]
String nach Real64 | STR_TO_REAL[...] | V.E.real64 = STR_TO_REAL["123.45"]


Zugeordnete Adreßbuchstaben

Im eingesetzten Decoder sind die folgenden Adreßbuchstaben festen Bedeutungen zugeordnet.

Die Technologie betreffende Adreßbuchstaben:

D,d | <int, float, expr> | Werkzeugkorrekturaufruf
E,e | <int, float, expr> | Vorschub am Satzende (nicht verfügbar)
F,f | <int, float, expr> | Vorschub am Satzanfang
H,h | <int, float, expr> | Hilfsfunktion
M,m | <int, float, expr> | Schaltfunktion
S,s | <int, float, expr> | Spindeldrehzahl, Synchronverhältnis etc.
T,t | <int, float, expr> | Werkzeugplatzaufruf

Die Geometrie betreffende Adreßbuchstaben:

G,g | <int, float, expr> | Wegbedingung
I,i | <int, float, expr> | Interpolationsparameter für 1. Bahnachse
J,j | <int, float, expr> | Interpolationsparameter für 2. Bahnachse
K,k | <int, float, expr> | Interpolationsparameter für 3. Bahnachse
R,r | <int, float, expr> | Kreisradius

Den Programmablauf betreffende Adreßbuchstaben:

L,l | <string> | Unterprogrammaufruf, global
LL,ll | <string> | Unterprogrammaufruf, lokal
N,n | <int, float, expr> | Satznummer
O,o | <int, float, expr> | Nicht belegt
$ |  | Kennung für Steuersatzanweisungen
# |  | Kennung für erweiterte Sprachelemente

Die Arithmetik betreffende Adreßbuchstaben:

P,p

<int, float, expr>

Parameter

Variabel und per Kanalparametersatz zuweisbar sind die Adreßbuchstaben zur Bezeichnug der numerischen Achsen. Üblicherweise werden die Buchstaben X, Y, Z zur Bezeichnung der 3 Linearachsen eines kartesischen Raumkoordinatensystems und A, B, C häufig zur Bezeichnung von Rundachsen verwendet (Klein-/Großbuchstaben werden unterschieden). Nach DIN 66025 wird mit U, V, W die zweite Bewegung parallel zum Raumkoordinatensystem angegeben.

Neben dieser einfachen Möglichkeit können Achsbezeichnungen auch aus mehreren Zeichen (Strings) bestehen (X_ACHSE, Y22, ZA3). Zur Unterscheidung des Achsnamens von der Koordinatenangabe ist in diesem Fall das "="-Zeichen zu verwenden, also X1=120.345.

Für die folgenden Kapitel der Programmieranleitung sollen jedoch die erstgenannten und häufig verwendeten Adreßbuchstaben eingesetzt werden.


Programmbeispiele

Zur Verdeutlichung der bis jetzt vorgestellten Sachverhalte soll im Vorgriff auf die noch folgenden Kapitel ein Programmierbeispiel vorgestellt werden.

Folgende Adreßbuchstaben finden Verwendung:

Wegbedingungen:

G00 "Fahre im Eilgang"

G01 "Fahre auf linearer Bahn"

Spindel:

S1000 "Spindeldrehzahl 1000 U/min"

Vorschub:

F5 "Vorschub 5 mm/min"

Numerische Achsen:

X, Y, Z "drei kartesische Achsen"

Maschinenfunktionen:

M03 "Spindelrechtslauf mit progr. Drehz."

M05 "Spindel Halt"

M30 "Programmende"

Programmierbeispiel

% 100

N10 G00 X100 Y100 (Fahre im Eilgang X- und Y-Achse auf)

(Position 100)

N20 Z100 (Fahre im Eilgang Z-Achse auf 100. G00)

(bleibt solange wirksam, bis Abwahl durch)

(eine andere G-Funktion erfolgt.)

N30 G1 Z50 F5 S1000 M3 (Spindelrechtslauf (1000 U/min) und)

(Fahre linear mit Vorschubgeschwindigkeit)

((5 m/min) auf Position Z=50)

N40 Z100 (Fahre mit Vorschubgeschw. auf Z=100)

N50 G0 X200 Y200 Z200 (Fahre im Eilgang auf Pos. X=Y=Z=200)

N50 M5 (Spindel Halt)

N60 M30 (Programmende)


Achsbefehle

Achsbezeichnungen sind konfigurierbar und müssen der konfigurationsspezifischen Beschreibung [1]-27 entnommen werden. Bei deren Decodierung wird Groß- und Kleinschreibung unterschieden.

Als Achsbezeichnungen stehen zur Verfügung:

q Einzelne Adreßbuchstaben: {A, B, C, U, V, W, X, Y, Z, Q}

Nach der Programmierung einer Achsbezeichnung, die nur aus einem Adreßbuchstaben besteht, muß nach dem Positionswert vor dem nächsten Zeichen ein Leerzeichen stehen, um bei einer nachfolgenden Zuweisung durch das Gleichheitszeichen nicht Verwechslungen hervorzurufen.

Beispiel:

Es existieren die Achsbezeichungen "X" und "X50P1" im NC-Kanal und Achse "X" soll auf Position "50" gefahren werden.

X50P1=7 | (FEHLER) | X50P1-Achse fährt auf Position 7.
X50 P1=7 | (RICHTIG) | X-Achse fährt auf Position 50.

q Strings (z. B. X_SCHLITTEN, X1, Y22, Z_ACHSE).

Das erste Zeichen des Strings muß einem der reservierten Adreßbuchstaben (s. o.) entsprechen. Als weitere Zeichen dürfen auch die Ziffern 0-9 verwendet werden. Die Stringlänge der Achsbezeichnung darf die maximal mögliche Länge (fest vorgegeben) nicht überschreiten. In diesem Fall würde eine Fehlermeldung ausgegeben. Um Mehrdeutigkeiten zu vermeiden, muß nach allen Achsbezeichnungen, die mehr als ein Zeichen umfassen, vor der Positionsangabe ein Gleichheitszeichen stehen. Dies ist insbesondere unerläßlich für Achsbezeichnungen, die mit einer der Ziffern 0 9 enden.

X1 = <int, float, expr> | Beispiele:
 | X1 = 100.0
 | Y22 = 0.001
 | X_SCHLITTEN = SIN [30]
 | Z_ACHSEN = SQRT [2]/2

Außerdem gelten folgende Vereinbarungen:

 Jede Achsbezeichnung muß im Kanalparametersatz [1]-27 vorgegeben werden.

 Einer Achsbezeichnung muß immer ein Zahlenwert oder ein Ausdruck folgen:

X <int, float, expr> | Beispiele:
 | X 100.0
 | Y 0.001
 | Z SIN [30]
 | A SQRT [2]/2
 | B 4 * R1/R2

Programmierbeispiel

(Verwendete Achsbezeichnungen)

( Y )

( Y50 )

( Y_ACHSE_SCHL_1 )

( Z7 )

N010 G01 F1500

N020 Y50 = 51 (Achse Y50auf Position 51)

N030 Y52 (Achse Y auf Position 52)

N040 Y50 Z7 = 54 (Achse Y auf Position 50 und)

(Achse Z7 auf Position 54)

N050 Y 70 Z7 = 55 (Achse Y auf Position 70 und)

(Achse Z7 auf Position 55)

N060 Y = 71 Z7 = 56 (Achse Y auf Position 71 und)

(Achse Z7 auf Position 56)

N070 Y[2+3] (Achse Y auf Position 5)

N080 Y50 = [4*3] (Achse Y50 auf Position 12)

N090 Y_ACHSE_SCHL_1 = 23 (Achse Y_ACHSE_SCHL_1 auf Position 23)

N100 Y50 = P1 (Achse Y50 auf Position P1)

N110 M30

In dieser Programmieranleitung sollen die gebräuchlichen Bezeichnungen X, Y, Z für die drei linearen Achsen eines kartesischen Koordinatensystems und A, B für zwei weitere Streckenachsen verwendet werden.


Maßsysteme, Eingabe- und Genauigkeitsbereiche

Die Maßsysteme für die Angaben von Positionswerten, Winkeln und Geschwindigkeiten sind wie folgt vereinbart:

Längen- und Positionsangaben: mm oder Inch,

Lineare Geschwindigkeiten: mm oder Inch pro s oder min,

Winkel: grd oder ngrd,

Winkelgeschwindigkeit: grd oder ngrd pro s oder min.

Darüberhinaus hat der Programmierer die Freiheit, mit Hilfe der Parameterrechnung selbstdefinierte Maßsysteme zu verwenden.

Alle Längenangaben und linearen Geschwindigkeiten werden standardmäßig mit einer Genauigkeit von 0.1 µm berechnet. Der maximale Verfahrbereich, der bei dieser Auflösung eingegeben werden kann, beträgt dann -214m .... +214m. Zahleneingaben bei der Programmierung dürfen demnach den Bereich von 214 000.0000 mm bis +214 000.0000 mm nicht überschreiten Dies gilt nicht für einzelne Elemente (z.B. Parameter) eines arithmetischen Ausdrucks, wenn das Ergebnis des arithmetischen Ausdrucks innerhalb des genannten Bereiches liegt. Es ist zu berücksichtigen, daß dieser Zahlenbereich auch nicht in Verbindung mit Verschiebungen und Korrekturen überschritten werden darf.

Ausnahme: Die Angabe des Kreisradius ist bis maximal 109 mm möglich. Der Endpunkt des Kreisbogens muß aber immer innerhalb des maximalen Verfahrbereiches der Achsen (-2,14 ... +2,14) * 105 mm liegen.

Im Kanalparametersatz ist der Achstyp einzutragen. Handelt es sich um eine rotatorische Achse (Rundachse oder Spindel), so werden Winkel standardmäßig mit einer Auflösung von 0.0001 grd behandelt. Damit ist ein Bereich von n * 360 grd mit n=1190 programmierbar.

Bei einer Auflösung von z. B. 0,0001° sind Winkel in einem Bereich von

(-2,14 ... +2,14) * 105 / 360 = 2 * 594 Umdrehungen möglich.


Koordinatensysteme

Nach der Referenzpunktfahrt befindet sich die Steuerung im Maschinennullpunkt bzw. im Maschinenkoordinatensystem. Erfolgen nun Eingaben aus dem NC-Programm (z. B. X100), so fallen die programmierten Koordinaten (Index p) mit den absoluten Koordinaten (Index a) zusammen:

Verschiebungen entstehen durch die Definition von Werkstück-Koordinatensystemen, die sich vom dem durch die physikalischen Maschinenachsen aufgespannten Koordinatensystem hinsichtlich ihrer Lage im Raum unterscheiden. Hierbei ist zu differenzieren zwischen programmierten, konstanten, translatorischen Verschiebungen in einer Einzelachse und Verschiebungen, die sich aufgrund von kinematischen (z.B. zylindrisch<->kartesisch) oder geometrischen (z.B. WRK, Spiegelung) Transformationen dynamisch ergeben und im allgemeinen auf mehrere Achsen wirken.

Zum Beispiel kann der Nullpunkt durch eine Nullpunktsverschiebung (NPV-G54...G59) vom Maschinennullpunkt M auf einen frei wählbaren Werkstücknullpunkt W bzw. ein Werkstückkoordinatensystem verschoben werden. Die absoluten Koordinaten ergeben sich damit aus der Addition von NPV und programmierten Koordinaten:

Unabhängig von diesen über den Nullpunktsverschiebungsdatensatz festlegbaren NPVs können durch zusätzliche Verschiebungsarten wie z.B. mit G92 X... Y... Z... explizit weitere Verschiebungen im Teileprogramm programmiert werden.

Diese Bezugspunktverschiebung (BPV) addiert sich zu der vorhergehenden NPV auf. Damit lassen sich die absoluten Koordinaten wie folgt bestimmen (Abbildung 3-1):

, | absolute Koordinaten
, | programmierte Koordinaten
, | Nullpunktsverschiebung
, | Bezugspunktverschiebung
M | Maschinennullpunkt
W | Werkstücknullpunkt
B | Bezugspunkt für die Koordinatenangaben
P | Position

Abbildung 3-1: Definition eines Werkstückkoordinatensystems mit NPV und BPV

Durch die Koordinatenanzeige der Bedienoberfläche lassen sich aktive Verschiebungen an einer bleibenden Differenz zwischen den Koordinaten der physikalischen Maschinenachsen (ACS) und den Werkstückkoordinaten (PCS) erkennen. Einige Verschiebungen entstehen jedoch durch Manipulation der Maschinen- und Werkstückkoordinaten gleichermaßen (z.B. WRK, Spiegelung) und führen deshalb nicht zu einer Koordinatendifferenz.

Folgende Tabellen geben im Vorgriff auf die weitere Dokumentation einen Überblick der zusätzlichen Verschiebungsarten. Hierbei gilt:

Aktivierung und Deaktivierung meint den Zeitpunkt, an dem die Verschiebung als Koordinatendifferenz bzw. Koordinatenänderung an der Bedienoberfläche sichtbar wird. Physikalisch wirksam wird eine Verschiebung jedoch grundsätzlich frühestens mit der ersten, auf die Aktivierung bzw. Deaktivierung folgenden Bewegung. Eine Deaktivierung am Programmende führt beispielsweise erst mit der ersten Bewegung des Folgeprogramms zu einer Ausgleichsbewegung.

Programmierbare Verschiebungen (linear, konstant)

Nr. | Bezeichnung | Definition | ACS  PCS Differenz wenn aktiv | Aktivierung | Deaktivierung | Temporäre Unterdrückung
1 | Bezugspunkt- verschiebung | NC-Prg. | Ja | NC-Satz G92 X.. Y.. G90/91 Abhängigkeit beachten | -NC-Satz G92 X0 Y0. -NC-Programmstart | #SUPPRESS OFFSETS #MCS ON
2 | Nullpunkt verschiebung | Liste NC-Prg. | Ja | NC-Satz G54...G59 | -NC-Satz G53 -NC-Programmstart | #SUPPRESS OFFSETS #MCS ON
3 | Platzversatz | Liste | Ja | Programmstart Während Programm nicht änderbar | NC-Programmstart Während Programm nicht änderbar | #SUPPRESS OFFSETS #MCS ON
4 | Werkzeugversatz | Liste NC-Prg. Extern | Ja | NC-Satz D.. | -NC-Satz D0 -NC-Programmstart | #SUPPRESS OFFSETS #MCS ON
5 | Istwertsetzen | NC-Prg. | Ja | NC-Satz #PSET... | -NC-Satz #PRESET... -Programmstart | #SUPPRESS OFFSETS #MCS ON
6 | CS-Verschiebung | NC-Prg. | Ja | NC-Satz #CS ON[vx,vy,vz,... . | -NC-Satz #CS OFF -NC-Programmende | #MCS ON
7 | ACS-Verschiebung | NC-Prg. | Ja | NC-Satz #ACS ON[vx,vy,vz,..  | -NC-Satz #ACS OFF -NC-Programmende | #MCS ON

Verschiebungen, die sich durch geometrische Transformation ergeben (linear, dynamisch)

Nr. | Bezeichnung | Definition | ACS  PCS Differenz wenn aktiv | Aktivierung | Deaktivierung | Temporäre Unterdrückung
8 | CS | NC-Prg. | Ja | NC-Satz #CS ON[..,..,..] | -NC-Satz #CS OFF -NC-Programmende | #MCS ON
9 | ACS | NC-Prg. | Ja | NC-Satz #ACS ON[..,..,..] | -NC-Satz #ACS OFF -NC-Programmende | #MCS ON
10 | Kontur-rotation | NC-Prg. | Nein | NC-Satz #ROTATION ON[ANGLE..] | NC-Satz #ROTATION OFF | Nicht unterdrückbar
11 | Spiegelung | NC-Prg. | Nein | NC-Bewegungssatz nach G21/22/23 | NC-Bewegungssatz nach G20 | Nicht unterdrückbar
12 | Werkzeug-radius-korrektur | NC-Prg. | Nein | NC-Satz G41/42 | NC-Satz G40 | Nicht unterdrückbar
13 | Kinematische Trans-formation | NC-Prg. | Nein | -NC-Satz #TRAFO ON -Programmstart automatik | NC-Satz #TRAFO OFF | #MCS ON

Verschiebungen durch spezielle Funktionen

Nr. | Bezeichnung | Definition | ACS  PCS Differenz wenn aktiv | Aktivierung | Deaktivierung | Temporäre Unterdrückung
14 | Verschiebung durch Handbetrieb mit paralleler. Interpol. | Handrad NC-Prg. | Ja | NC-Satz G201 | NC-Satz G202 | Nicht unterdrückbar
15 | Verschiebung durch Messfahrt | NC-Prg. | Ja | NC-Satz G101 | NC-Satz G102 | #SUPPRESS OFFSETS #MCS ON
16 | Verschiebung nach Referenz- punktfahrt | NC-Prg. | Nein | NC-Satz G74 X.. Y.. Z..  | Nicht möglich | Nicht unterdrückbar

Der Befehl #SUPPRESS OFFSETS wirkt nur innerhalb eines NC-Satzes.

Der Befehl #MCS ON deaktiviert Verschiebungen bis zur Programmierung von #MCS OFF.

Innerhalb jedes (A)CS werden die Verschiebungstypen 1, 2 und 5 lokal gespeichert.

Abbildung 3-2: Übersicht der zusätzlichen Verschiebungen und Koordinatensysteme


Die G-Funktionen

Die sogenannten "G"-Funktionen beschreiben die Art der Vorschubbewegung, Interpolationsart, Vermaßungsart, die zeitliche Beeinflussung und aktivieren bestimmte Betriebszustände. Die Syntax ist

G <expr>

Bei den G-Funktionen sind verschiedene Unterscheidungsmerkmale zu berücksichtigen:

Wirksamkeit: Es gibt G-Funktionen, die nach ihrer Programmierung in ihrer Bedeutung nur für den jeweiligen Satz Gültigkeit besitzen (satzwirksam, nichtmodal) und solche, die nach der erstmaligen Programmierung in ihrer Bedeutung solange gültig sind, bis sie explizit abgewählt werden (haltend wirksam, modal).

Ausschluß: Bestimmte G-Funktionen schließen sich gegenseitig aus. Es kann z.B. nicht gleichzeitig G01 (Geradeninterpolation) und G02 (Kreisinterpolation) angewählt sein. Die in diesen Gruppen zusammengefaßten Funktionen dürfen also nicht in einem NC-Satz programmiert werden:

Eine haltend wirksame Funktion wird automatisch abgewählt, wenn in einem nachfolgenden Satz eine andere Funktion der gleichen Gruppe angewählt wird.

Programmierbeispiel

:

N50 G01 X100 Y200 (Geradeninterpolation wirksam)

N60 G41 X200 Y200 (Geradeninterpolation wirksam)

N50 X300 Y250 (Geradeninterpolation wirksam)

N50 X100 Y50 (Geradeninterpolation wirksam)

N50 G02 X100 Y50 I100 (Kreisinterpolation wirksam)

:

Grundstellung: Beim Einschalten, nach RESET oder am Programmende befindet sich die Steuerung in der Grundstellung. In dieser Grundstellung sind bereits einige G-Funktionen ohne explizite Anwahl wirksam.

Mehr:

button Wegbedingungen

button Beschleunigungsbestimmung (G08/G09/G900/G901)

button Weg-/Zeitbezogene Vorschubinterpolation (G193/G293)

button Ebenenauswahl (G17/G18/G19)

button Spiegeln (G21/G22/G23/G20)

button Spiegelung mit Achsangabe (G351)

button Maßeinheiten (G70/G71)

button Implizite Unterprogrammaufrufe (G80-G89/G800-G819)

button Maßsysteme (G90/G91)

button Genauhalt (G60, G360, G359)

button Polynomüberschleifen (G61, G261, G260)

button Eckenverzögerung

button Werkzeugradiuskorrektur (G40/G41/G42)

button An-/Abwahlverfahren Werkzeugradiuskorrektur (G138/G139/G237/ G238/G239/G05)

button Übergangsauswahl Werkzeugradiuskorrektur (G25/G26)

button Vorschubanpassung Werkzeugradiuskorrektur (G10/G11)

button An-/Abwahl der WRK-Konturausblendung (G140/G141)

button Nullpunktverschiebungen (G53/G54/...G59)

button Mittelpunktsangabe bei Kreisdefinition (G161/G162)

button Radiusprogrammierung (R, G163)

button Mittelpunktskorrektursteuerung (G164/G165)

button Vorsteuerung (G135/G136/G137)

button Gewichtung der Eilganggeschwindigkeit (G129)

button Parametrierung des Beschleunigungsprofils

button Bearbeitungszeit/Vorschubgeschwindigkeit (G93/G94/G95/G194)

button Einfügen von Fasen und Radien (G301/G302)

button Handbetrieb

button Anfordern von Offset-, Soll- und Istwerten

button Getriebeschalten (G112)

button Beeinflussung der Look-Ahead Funktionalität (G115/G116/G117)

button Override (G166)


Wegbedingungen

Mehr:

button Eilgang G00

button Geradeninterpolation G01

button Kreisinterpolation (G02/G03)

button Helikalinterpolation

button Verweilzeit (G04), (#TIME)

button Programmierbare Referenzpunktfahrt (G74)

button Bezugspunktverschiebung (G92)

button Negative Softwareendschalter setzen (G98)

button Positive Softwareendschalter setzen (G99)

button Meßfunktionen


Eilgang G00

G00 Linearinterpolation im Eilgang (modal)

Bei angewähltem G00 wird für die Verfahrgeschwindigkeit die Eilganggeschwindigkeit der Achsen (festgelegt in den Maschinenparametern) zugrunde gelegt. Dabei ergibt sich die Geschwindigkeit der Achsen so, daß mindestens eine Achse mit ihrer Eilganggeschwindigkeit bewegt wird. Es können beliebige Geraden im kartesischen Raumkoordinatensystem (X, Y, Z) programmiert werden. Alle programmierten Mitschleppachsen werden mit linearer Geschwindigkeit so bewegt, daß der Start und das Ende ihrer Bewegung zeitgleich mit den Hauptachsen erfolgt.

Absolutmaßeingabe:

Nnnnn G00 G90 X120 Y80 U90 (fahre von P1 nach P2)

Kettenmaßeingabe:

Nnnnn G00 G91 X80 Y60 U60 (fahre von P1 nach P2)

Abbildung 4-1: Positionierung im Eilgang

Sonderfall: Richten einer Rundachse mit G00 G90

Wenn eine Rundachse über G00 mit wirksamem G90 programmiert wird (G90 : Absolute Programmierung), so wird die programmierte Zielposition modulo berechnet, d.h. die Rundachse bewegt sich maximal eine halbe Umdrehung.


Geradeninterpolation G01

G01 Linearinterpolation mit programmiertem Vorschub (modal)

Bei angewähltem G01 wird der programmierte Weg mit der unter dem F-Wort (Einheit konfigurierbar, z. B. mm/min) angegebenen Vorschubgeschwindigkeit auf einer Geraden zur Zielposition verfahren. Es können beliebige Geraden im kartesischen Raumkoordinatensystem (X, Y, Z) programmiert werden. Alle programmierten Mitschleppachsen werden mit linearer Geschwindigkeit so bewegt, daß der Start und das Ende ihrer Bewegung zeitgleich mit den Hauptachsen erfolgen.

Absolutmaßeingabe:

Nn G01 G90 X60 Y60 U40 F1000 (fahre von P1 nach P2 Vorschub 1000mm/min)

Nn X120 Y80 U90 (fahre von P2 nach P3 Vorschub 1000mm/min)

Kettenmaßeingabe:

Nn G01 G91 X20 Y40 U10 F1000 (fahre von P1 nach P2 Vorschub 1000mm/min)

Nn X60 Y20 U50 (fahre von P2 nach P3 Vorschub 1000mm/min)

Abbildung 4-2: Geradeninterpolation (G01)


Kreisinterpolation (G02/G03)

TwinCAT CNC: Überblick

Kreisinterpolation (G02/G03 )

G02 Kreisinterpolation im Uhrzeigersinn (CW) (modal)

G03 Kreisinterpolation im Gegenuhrzeigersinn (CCW) (modal)

Bei angewähltem G02 oder G03 wird der programmierte Weg mit der unter dem F-Wort angegebenen Vorschubgeschwindigkeit auf einem Kreis zur Zielposition verfahren. Es können Kreise in den drei Hauptebenen des Raumkoordinatensystems (X-Y, Z-X, Y-Z) gefahren werden. Die Auswahl der Hauptebene erfolgt mit den Funktionen G17, G18, G19 (s. a.Kapitel 4.4: Ebenenauswahl).

Alle programmierten Mitschleppachsen werden mit linearer Geschwindigkeit so bewegt, daß der Start und das Ende ihrer Bewegung zeitgleich mit den Hauptachsen erfolgt.

Abbildung 4-3: Verdeutlichung der Kreisfunktionen G02 und G03

Zur Definition des Kreises wird der Kreisanfangspunkt " [image] " (ist durch den vorhergehenden Satz bestimmt), der Kreisendpunkt " [image] " und der Kreismittelpunkt " [image] " herangezogen. Die Angabe des Kreismittelpunktes erfolgt durch die Interpolationsparameter I, J, K relativ zum Kreisanfangspunkt bei wirksamem G162, absolut bei wirksamem G161.

G162: (Grundeinstellung)

I - relative Lage von Km in X-Richtung

J - relative Lage von Km in Y-Richtung

K - relative Lage von Km in Z-Richtung

G161:

I - absolute Lage von Km in X-Richtung

J - absolute Lage von Km in Y-Richtung

K - absolute Lage von Km in Z-Richtung

Bei einer falschen Definition des Kreismittelpunktes erfolgt eine Fehlermeldung, wenn keine Kreismittelpunktskorrektur eingeschaltet ist (G165). Bei wirksamem G165 wird ein Mittelpunkt so bestimmt, daß ein Kreis gefahren werden kann. Das bedeutet auch, daß bei nicht angegebenen Interpolationsparametern die Kreismittelpunktskorrektur von I ,J ,K = 0 ausgeht. Außerdem sind die Kreismittelpunktskoordinaten "nicht-haltend" wirksam.

Der maximal zulässige Kreisradius beträgt 109 mm. Der Endpunkt des Kreisbogens darf jedoch den maximal zulässigen Verfahrbereich der Achsen von +- 2,14*105 mm nicht überschreiten.

Sind bei aktivem G02/G03 die Interpolationsparameter ohne Kreisendpunkt programmiert, so wird ein Vollkreis gefahren.

Syntaxbeispiel für Ebene G17:

G02 | G03 [X<expr>Y<expr>] I<expr>J<expr> | R<expr>

G02 | G03 Kreisinterpolation CW / CCW

X<expr> Y<expr> Zielpunkt in der Ebene XY

I<expr> J<expr> Lage des Kreismittelpunktes der Interpolation in der Ebene XY (I in X, J in Y), entsprechend G161/G162

R<expr> Radius des zu interpolierenden Kreises (alternativ zu I,J)

Programmierbeispiel

N10 G01 X10 Y10 F1000

N20 G02 X30 Y30 I10 J10 (Halbkreis, Kreisendpunkt X30 Y30)

N30 I10 J10 (Vollkreis)

N40 X50 Y50 (Fehlermeldung, da kein Mittelpunkt oder)
(Radius angegeben wurde)

Syntax entsprechend der angewählten Interpolationsebene:

Ebene | Interpolationsart | Zielpunkt in Ebene | Mittelpunkt /Radius
G17 | G02/G03 | X..Y.. | I..J../R
G18 | G02/G03 | Z..X.. | K..I../R
G19 | G02/G03 | Y..Z.. | J..K../R

Absolutmaßeingabe:

Nnn G90 F1000 (Absolutmaß, Vorschub)

Nnn G17 (Anwahl der X-Y-Ebene)

Nnn G03 G161 X60 Y50 I60 J30 U90 (Kreis: Ka -> Ke und )

(Gerade: P1 -> P2 )

Kettenmaßeingabe:

Nnn G91 F1000 (Kettenmaß, Vorschub )

Nnn G17 (Anwahl X-Y-Ebene )

Nnn G03 G162 X20 Y20 I20 U50 (Kreis: Ka -> Ke und )

(Gerade: P1 -> P2 )

Abbildung 4-4: Beispiel für die Kreisinterpolation

Alternativ dazu können Kreise auch mittels Radiusangabe programmiert werden. Dies ist möglich über G163="Radiuswert" oder aber über den Adreßbuchstaben R"Radiuswert". Auch die Definition über R1="Radiuswert" ist mit gleichem Ergebnis möglich. (s. a. Kap. 4.19  4.21)


Helikalinterpolation

Die Helikalinterpolation ist die Überlagerung einer kreisförmigen Interpolation (Ebene der 1. und 2. Hauptachse) und einer linearen Bewegung in der 3. Hauptachse. Die sich ergebende schraubenförmige Bewegung (Helix) erfolgt mit konstanter Steigung. Die Steigung wird abhängig von der angewählten Ebene über den dritten Parameter der Zirkularinterpolation programmiert.

Syntaxbeispiel für Ebene G17:

G02 | G03X<expr>Y<expr>Z<expr>I<expr>J<expr> | R<expr>K<expr>

G02 | G03 Kreisinterpolation CW / CCW

X<expr> Y<expr> Zielpunkt in der Ebene XY

Z<expr> Zielpunkt auf der Helixachse senkrecht zur Ebene XY

I<expr> J <expr> Lage des Kreismittelpunktes der Interpolation in der Ebene XY
(I in X, J in Y), entsprechend G161/G162.

R<expr> Radius des zu interpolierenden Kreises (alternativ zu I,J)

K<expr> Steigung der Helix in Z (Wert generell ohne Vorzeichen)

Syntax entsprechend der angewählten Interpolationsebene:

Ebene | Interpolations- art | Zielpunkt in Ebene | Zielpunkt auf Helixachse | Mittelpunkt /Radius | Steigung
G17 | G02/G03 | X..Y.. | Z.. | I..J../R | K
G18 | G02/G03 | Z..X.. | Y.. | K..I../R | J
G19 | G02/G03 | Y..Z.. | X.. | J..K../R | I

Es ist nicht erforderlich, die Steigung so anzugeben, daß der programmierte Zielpunkt durch die Helix genau erreicht wird. Der NC-Kern berechnet in solchen Fällen unter Berücksichtigung der festen Positionen von Start- und Zielpunkt eine "korrigierte" Steigung, die der programmierten Steigung am nächsten kommt.

Hierzu wird auf Basis der programmierten Steigung zunächst der Zielpunkt der Helix berechnet. Weicht dieser berechnete Zielpunkt vom programmierten Zielpunkt ab, so ist eine Korrektur erforderlich. Kriterium für die Korrektur ist hierbei in Drehrichtung gesehen der Abstand zwischen programmiertem Zielpunkt und berechnetem Zielpunkt.

Ist der Abstand kleiner oder gleich π(180°), so wird der Zielpunkt der Helix entgegen der Drehrichtung auf den programmierten Zielpunkt verschoben, d.h. die Steigung wird vergrößert.

Ist er größer als π(180°), wird der Zielpunkt der Helix in Drehrichtung auf den programmierten Zielpunkt verschoben, d.h die Steigung wird verringert.

Korrektur der Helixsteigung in Abhängigkeit von der Drehrichtung

Beispiel 1:

Prinzipielle Korrektur einer Helix im Uhrzeigersinn (G02).

Fall 1:

Der mit Hilfe der programmierten Steigung Pprog berechnete Zielpunkt liegt im Bereich von 180° Grad nach dem programmierten Zielpunkt (in Drehrichtung gesehen). Zur Korrektur wird die Steigung Pkorr vergrößert.

Fall 2:

Der mit Hilfe der programmierten Steigung Pprog berechnete Zielpunkt liegt im Bereich von 180° Grad vor dem programmierten Zielpunkt (in Drehrichtung gesehen). Zur Korrektur wird die Steigung Pkorr verringert.

Beispiel 2:

Helikalinterpolation in der Ebene XY im Uhrzeigersinn. Folgende Helix soll gefahren werden:

Startpunkt a: X-10 Y0 Z0

Zielpunkt b: X0 Y-10 Z-20

Helixmittelpunkt I, J: Nullpunkt

Helixsteigung K: variabel

:

N10 G17 G90 X-10 Y0 Z0 F500 G161

N20 G02 X0 Y-10 Z-20 I0 J0 K..

:

Minimale Umdrehung: ¾ à Steigung K=26,66

Steigung K größer oder gleich 26,66:

Die Helix von a nach b wird generell in ¾ Umdrehungen ausgeführt, da die Korrektur auf die maximal mögliche Steigung K = 26,66 begrenzt wird.

Steigung K kleiner als 26,666:

Programmierte Steigung K (in mm) | Helixumdrehungen von a nach b | Korrigierte Steigung K (in mm)
17,5 | ¾ | 26,66
16 | 1¾ | 11,4
15 | 1¾ | 11,4
12,5 | 1¾ | 11,4
10 | 1¾ | 11,4
7,5 | 2¾ | 7,27
5 | 3¾ | 5,33
2,5 | 7¾ | 2,58
2 | 9¾ | 2,05
1 | 19¾ | 1,01

812_end

Mehr:

button Einfache Helikalinterpolation


Einfache Helikalinterpolation

Bei der vereinfachten Helikalprogrammierung wird keine Steigung, sondern nur ein Zielpunkt definiert. Abhängig vom Zielpunkt ergibt sich eine Helikalbewegung mit maximal einer vollständigen Umdrehung.

Syntaxbeispiel für Ebene G17:

G02 | G03X<expr>Y<expr>Z<expr>I<expr>J<expr> | R<expr>

G02 | G03 Kreisinterpolation CW / CCW

X<expr> Y<expr> Zielpunkt in der Ebene XY

Z<expr> Zielpunkt auf der Helixachse senkrecht zur Ebene XY

I<expr> J <expr> Lage des Kreismittelpunktes der Interpolation in der Ebene XY
(I in X, J in Y), entsprechend G161/G162.

R<expr> Radius des zu interpolierenden Kreises (alternativ zu I,J)

Syntax entsprechend der angewählten Interpolationsebene:

Ebene | Interpolations- art | Zielpunkt in Ebene | Zielpunkt auf Helixachse | Mittelpunkt /Radius
G17 | G02/G03 | X..Y.. | Z.. | I..J../R
G18 | G02/G03 | Z..X.. | Y.. | K..I../R
G19 | G02/G03 | Y..Z.. | X.. | J..K../R

Beispiel:

Helikalinterpolation in der Ebene XY im Gegenuhrzeigersinn. Folgende "Helix" soll gefahren werden:

Startpunkt a: X-10 Y0 Z0

Zielpunkt b: Z20

Helixmittelpunkt I, J: Nullpunkt

:

N10 G17 G90 X-10 Y0 Z0 F500 G161

N20 G03 I0 J0 Z20

:


Verweilzeit (G04), (#TIME)

G04 <1.Hauptachse><expr> | <expr> (nicht modal)

G04 Verweilzeit

<1.Hauptachse> <expr> Die Verweilzeit wird mit dem Namen der 1.Hauptachse in Sekunden angegeben, oder alternativ...

<expr> ...als anschließende direkte Angabe der Verweilzeit in Sekunden

Verweilzeiten werden z.B. beim Freischneiden oder evtl. bei Maschinenfunktionen benötigt.

Die Verweilzeit darf nur alleine im NC-Satz programmiert werden (Ausnahme: Satz-Nr).

Programmierbeispiel

N10 G04 X4.13 (4.13 Sekunden warten)

oder

N20 G04 2.13 (2.13 Sekunden warten)

Eine weitere Möglichkeit zur Angabe der Verweilzeit ist mit der erweiterten Funktion #TIME möglich.

#TIME <expr> (nicht modal)

#TIME Klartextbefehl Verweilzeit

<expr> Wert der Verweilzeit in Sekunden

Programmierbeispiel

N10 #TIME 4.13 (4.13 Sekunden warten)


Programmierbare Referenzpunktfahrt (G74)

G74 Referenzpunkt anfahren (nicht modal)

G74 erlaubt die NC-programmgesteuerte Durchführung einer Referenzpunktfahrt (RPF), wobei die zu referenzierenden Achsen und die Reihenfolge, in der die Achsen die Referenzpunktfahrt durchführen sollen, angegeben werden müssen. Die mit den Achsnamen programmierten Werte legen die Reihenfolge der Referenzpunktfahrt fest.

Für Achsen mit dem gleichen Wert wird die Referenzpunktfahrt gleichzeitig angestoßen.

Weitergehende Informationen zum Thema Referenzierung können der Funktionsbeschreibung "Referenzpunktfahrt" [FCT-M1] entnommen werden.

Programmierbeispiel

Sequentielle Beauftragung:

N10 G74 X2 Y3 Z1 Reihenfolge der RPF: Z-> X -> Y

Paralelle Beauftragung:

N10 G74 X1 Y1 Z1 Reihenfolge der RPF: X,Y,Z gleichzeitig


Bezugspunktverschiebung (G92)

G92 Bezugspunktverschiebung (nicht modal)

G92 erlaubt eine programmierbare Bezugspunktverschiebung in den angegebenen Achsen um einen freiprogrammierbaren Wert: additive Nullpunktsverschiebung. Je nach gesetztem G90/G91 wird die aktuell programmierte Bezugspunktverschiebung absolut gesetzt oder zur bisherigen addiert.

"Nicht modal" gilt nur für G92; die Bezugspunktverschiebung selbst gilt natürlich bis zur neuen G92-Programmierung

Programmierbeispiel

N10 G90 (Absolutmaßangabe)

N20 G92 X10 Z30 (Verschiebt programmierte und absolute)

. (Koordinaten um 10 in X, 30 in Z.)

.

.

Nnn G92 X0 Z0 (Rücknahme der Bezugspunktverschiebung)

Änderung der Bezugspunktverschiebung im G91-Modus:

Die Programmierung von :

 N10 G92 X10 Y20
N20 G00 X0 G91

 darf keine Bewegung der X-Achse hervorrufen (entspricht Bewegung relativ um 0). Somit wirkt sich die Bezugspunktverschiebung für eine Achse erst dann aus, wenn die nächste Verfahrinformation absolut (G90) programmiert wird.


Negative Softwareendschalter setzen (G98)

G98 Negative Softwareendschalter setzen (nicht modal)

G98 setzt die negativen Endschalterpositionen in allen programmierten Achsen. Je nach gesetztem G90/ G91 geschieht dies absolut oder additiv zur seitherigen Software-Endschalterposition.

Die Positionen für die negativen Endschalter sind in den achsspezifischen Variablen

V.A.-SWE.X, V.A.-SWE.Y, V.A.-SWE.Z, etc.

abgelegt (s. a. Kap.13.1: Achsspezifische Variablen).

"Nicht modal" gilt nur für G98, die Softwareendschalter selbst sind modal wirksam.

Bei Reset und Maschinen-Hochlauf werden diese Variablen mit Werten vorbelegt [2]-10.

Programmierbeispiel

N10 G90

...

N100 G98 X-1000 Y-2000 Setzt negativen Softwareendschalter
in X auf 1000 und in Y auf 2000


Positive Softwareendschalter setzen (G99)

G99 Positive Softwareendschalter setzen (nicht modal)

G99 setzt die positiven Endschalterpositionen in allen programmierten Achsen. Je nach gesetztem G90/G91 geschieht dies absolut oder additiv zur seitherigen Softwareendschalterposition.

Die Positionen für die positiven Endschalter sind in den achsspezifischen Variablen

V.A.+SWE.X, V.A.+SWE.Y, V.A.+SWE.Z, etc.

abgelegt (s. a. Kap. 13.1: Achsspezifische Variablen).

"Nicht modal" gilt nur für G99, die Softwareendschalter selbst sind modal wirksam.

Bei Reset und Maschinen-Hochlauf werden diese Variablen mit Werten vorbelegt [2]-11.

Programmierbeispiel

N10 G90

...

N100 G99 X+1000 Y+2000 Setzt positiven Softwareendschalter
in X auf +1000 und in Y auf +2000


Meßfunktionen

Nach dem Hochlauf der Steuerung ist der Default-Meßtyp gültig, der in den Kanalparametern [1]-1 angegeben ist. Im NC-Programm kann mit #MEAS MODE jederzeit ein neuer Meßtyp angewählt werden (Kapitel 11.10). Es stehen folgende 7 Meßtypen zur Verfügung:

Messtyp | Bedeutung
1 | Meßfahrt mit mindestens einer Achse, Meßvorschub über F-Wort programmierbar.
2 | Meßfahrt mit genau einer Achse, Meßvorschub wird in der Achsparameterliste [2] -5 festgelegt. Bei fehlendem Meßsignal wird eine Fehlermeldung ausgegeben !
3 | Meßfahrt mit mindestens einer Achse, Meßvorschub über F-Wort programmierbar, wahlweise Weiterfahrt bis zum Zielpunkt.
4 | Meßfahrt nur mit den maximal 3 Hauptachsen, Meßvorschub über F-Wort programmierbar.
5 | Unterbrechbare Meßfahrt mit mindestens einer Achse, Meßvorschub über F-Wort programmierbar.
6 | Unterbrechbare Meßfahrt mit mindestens einer SERCOS-Achse, Meßvorschub über F-Wort programmierbar.
7 | Meßfahrt (G100) mit Fahren auf Festanschlag mit mindestens einer Achse, Meßvorschub über F-Wort programmierbar.

Mehr:

button Messen mit mehreren Achsen (G100) (Typ 1)

button Messen mit einer Achse (G100) (Typ 2)

button Messen mit Fahren bis zum Zielpunkt (G100/G106) (Typ 3)

button Messen mit Hauptachsen (G100) (Typ 4)

button Messen mit Unterbrechung und Sprung (G310) (Typ 5,6)

button Messen mit Fahren auf Festanschlag (G100) (Typ 7)

button Verrechnung des Meßoffsets (G101/G102)

button Das Kantenstoßen (G108)


Messen mit mehreren Achsen (G100) (Typ 1)

G100 <Achsname><expr> { <Achsname><expr> } [F<expr> ] (nicht modal)

G100 Anwahl Meßfahrt

<Achsname> <expr> Zielposition der Meßachse

F<expr> Meßvorschub

Es können beliebige Achsen an der Verfahrbewegung des Meßsatzes teilnehmen. Alle im Meßsatz programmierten Achsen müssen als Meßachse gekennzeichnet sein [2]-1. Das Meßverfahren (Typ 1) muß parametriert sein [1]-1.

Beim Messen wird im Meßsatz das Eintreffen eines Meßsignales registriert. Zwischen dem im NC-Befehl angegebenen Zielpunkt und der Startposition wird linear interpoliert (Wirkung wie bei G01). Die Bahngeschwindigkeit im Meßsatz wird im weiteren als Meßvorschub bezeichnet. An einer Meßfahrt muß mindestens eine Achse beteiligt sein. Der Meßvorschub wird durch das F-Wort angegeben. Der Fahrweg im Meßsatz muß größer als Null sein.

Programmierbeispiel

%G100_Type_1

N10 G00 X0 Y0

N20 G100 X10 Y20 F200 ;X10/Y20 Zielpunkt der Messfahrt

...

Abbildung 4-5: Programmierung der Meßfunktion

Nach der Registrierung des Meßsignals wird angehalten. Der verbleibende Fahrweg des Meßsatzes wird nicht mehr ausgegeben.

Programmierbeispiel

%Messfahrt

N10 G00 X0 Y0 Z0

N20 X5

N30 G100 X10 Y10 F500

N40 G01 X7

N50 M30

Abbildung 4-6 zeigt eine Darstellung der sich ergebenden Bahn:

Abbildung 4-6: Programmierte Bahn


Messen mit einer Achse (G100) (Typ 2)

G100 <Achsname><expr> (nicht modal)

G100 Anwahl Meßfahrt

<Achsname> <expr> Zielposition der Meßachse

Es darf genau eine Achse an der Verfahrbewegung des Meßsatzes teilnehmen. Die im Meßsatz programmierte Achse muß als Meßachse gekennzeichnet sein [2]-1. Das Meßverfahren (Typ 2) muß parametriert sein [1]-1.

Beim Messen wird im Meßsatz das Eintreffen eines Meßsignales registriert. Zwischen dem im NC-Befehl angegebenen Zielpunkt und der Startposition wird linear interpoliert (Wirkung wie bei G01). Die Bahngeschwindigkeit im Meßsatz wird im weiteren als Meßvorschub bezeichnet. An einer Meßfahrt muß genau eine Achse beteiligt sein. Der Meßvorschub wird über [2]-5 angegeben. Der Fahrweg im Meßsatz muß größer als Null sein.

Programmierbeispiel

%G100_Type_2

N10 G00 X0 Y0

N20 G100 X10 ;X10 Zielpunkt der Messfahrt

...

Abbildung 4-7: Programmierung der Meßfunktion

Nach der Registrierung des Meßsignals wird angehalten. Der verbleibende Fahrweg des Meßsatzes wird nicht mehr ausgegeben. Kann innerhalb des Meßsatzes kein Meßsignal aufgenommen werden, wird eine Fehlermeldung ausgegeben.

Programmierbeispiel

%Messfahrt

N10 G00 X0 Y0 Z0

N20 Y5

N30 G100 X10

N40 G01 X7

N50 M30

Abbildung 4-8 zeigt eine Darstellung der sich ergebenden Bahn:

Abbildung 4-8: Programmierte Bahn


Messen mit Fahren bis zum Zielpunkt (G100/G106) (Typ 3)

G100 <Achsname><expr> { <Achsname><expr> } [G106] [F<expr> ] (nicht modal)

G100 Anwahl Meßfahrt

<Achsname> <expr> Zielposition der Meßachse

G106 Fahren bis zum Zielpunkt

F<expr> Meßvorschub

Es können beliebige Achsen an der Verfahrbewegung des Meßsatzes teilnehmen. Alle im Meßsatz programmierten Achsen müssen als Meßachse gekennzeichnet sein [2]-1. Das Meßverfahren (Typ 3) muß parametriert sein [1]-1.

Beim Messen wird im Meßsatz das Eintreffen eines Meßsignales registriert. Zwischen dem im NC-Befehl angegebenen Zielpunkt und der Startposition wird linear interpoliert (Wirkung wie bei G01). Die Bahngeschwindigkeit im Meßsatz wird im weiteren als Meßvorschub bezeichnet. An einer Meßfahrt muß mindestens eine Achse beteiligt sein. Der Meßvorschub wird durch das F-Wort angegeben. Der Fahrweg im Meßsatz muß größer als Null sein.

Programmierbeispiel

%G100_Type_3

N10 G00 X0 Y0

N20 G100 X10 Y20 F200 G106 ;X10/Y20 Zielpunkt der Messfahrt

...

Abbildung 4-9: Programmierung der Meßfunktion

Nach erkanntem Meßsignal wird bei programmiertem G106 bis zum Zielpunkt des Meßsatzes weitergefahren. Ist G106 nicht programmiert, wird nach dem Meßsignal abgebremst und der verbleibende Fahrweg nicht mehr ausgegeben (gleiches Verhalten wie beim Messen Typ1).

Programmierbeispiel

%Messfahrt

N10 G00 X0 Y0 Z0

N20 G01 X5 F500

N30 G100 G106 X10 Y10 ;Nach Meßsignal Fahren bis Zielpunkt

N40 G01 X7

N50 M30

Abbildung 4-10 zeigt eine Darstellung der sich ergebenden Bahn:

Abbildung 4-10: Programmierte Bahn


Messen mit Hauptachsen (G100) (Typ 4)

G100 <Achsname><expr> { <Achsname><expr> } [F<expr> ] (nicht modal)

G100 Anwahl Meßfahrt

<Achsname> <expr> Zielposition der Meßachse

F<expr> Meßvorschub

Es können die drei Hauptachsen an der Verfahrbewegung des Meßsatzes teilnehmen. Alle im Meßsatz programmierten Achsen müssen als Meßachse gekennzeichnet sein [2]-1. Das Meßverfahren (Typ 4) muß parametriert sein [1]-1.

Beim Messen wird im Meßsatz das Eintreffen eines Meßsignales registriert. Zwischen dem im NC-Befehl angegebenen Zielpunkt und der Startposition wird linear interpoliert (Wirkung wie bei G01). Die Bahngeschwindigkeit im Meßsatz wird im weiteren als Meßvorschub bezeichnet. An einer Meßfahrt dürfen maximal die drei Hauptachsen beteiligt sein. Der Meßvorschub wird durch das F-Wort angegeben. Der Fahrweg im Meßsatz muß größer als Null sein.

Programmierbeispiel

%G100_Type_4

N10 G00 X0 Y0

N20 G100 X10 Y20 F200 ;X10/Y20 Zielpunkt der Messfahrt

...

Abbildung 4-11: Programmierung der Meßfunktion

Nach der Registrierung des Meßsignals wird angehalten. Der verbleibende Fahrweg des Meßsatzes wird nicht mehr ausgegeben.

Programmierbeispiel

%Messfahrt

N10 G00 X0 Y0 Z0

N20 X5

N30 G100 X10 Y10 F500

N40 G01 X7

N50 M30

Abbildung 4-12 zeigt eine Darstellung der sich ergebenden Bahn:

Abbildung 4-12: Programmierte Bahn


Messen mit Unterbrechung und Sprung (G310) (Typ 5,6)

G310 [G00 | G01] <Achsname><expr> {<Achsname><expr>} [$GOTO<Label>] (nicht modal)

G310 Unterbrechbarer Satz

G00 | G01 Unterbrechbare Interpolationsarten

<Achsname><expr> Meßachsen mit Zielpositionen

$GOTO<Label> Sprungziel nach unterbrochener Meßfahrt

Es können beliebige Achsen an der Verfahrbewegung des Meßsatzes teilnehmen. Alle im Meßsatz programmierten Achsen müssen als Meßachse gekennzeichnet sein [2]-1. Das Meßverfahren (Typ 5,6) muß parametriert sein [1]-1.

Dieses Meßverfahren bietet die Möglichkeit, eine Bewegung durch ein Meßsignal abzubrechen. Die Verfahrbewegung muß dabei explizit im gleichen Satz programmiert werden. Bei Abbruch der Verfahrbewegung durch das Meßsignal wird zu einem im G310-Satz angegebenen Sprungziel (Label) verzweigt. Wenn das Meßsignal während des Verfahrsatzes nicht auftritt, wird die Ausführung des NC-Programms mit dem nächsten NC-Satz fortgesetzt.

Programmierbeispiel

N10 G00 X0 Y0

N20 G310 G01 F100 X100 Y200 $GOTO[N_LABEL] ;Bei Unterbrechung Sprung

;zu N_LABEL

N30 G01 X200

N40 $GOTO[ENDE]

N50 [N_LABEL] X0 Y0

N60 [ENDE] M30

Nach Unterbrechung der Verfahrbewegung durch ein Meßtastersignal werden die Koordinaten des programmierten Zielpunktes durch die Istpositionen aller im Kanal vorhandenen Meßachsen ersetzt. Anschließend erfolgt der Sprung zum angegebenen Satz.

Wird kein Signal empfangen, so wird bis zum programmierten Zielpunkt gefahren. Danach erfolgt kein Sprung sondern der nächste Satz wird ausgeführt.

Wurde kein Sprungziel programmiert, wird generell der nächste Satz ausgeführt.

Die aktuellen Achspositionen nach einer Unterbrechung der Verfahrbewegung können im NC-Programm über die Variable V.A.MESS[..] gelesen werden.

Die Programmierung von G310 bei aktiver WRK (G41/G42) führt zum Programmabbruch und zur Ausgabe einer Fehlermeldung.

812_end


Messen mit Fahren auf Festanschlag (G100) (Typ 7)

Beim Messen mit Fahren auf Festanschlag muss in den beteiligten Antrieben eine Drehmomentbegrenzung aktiviert und eine eventuell vorhandene antriebsseitige Schleppabstandsüberwachung ausgeschaltet sein.

Die Meßfahrt wird beendet, sobald in einer der an der Messfahrt beteiligten Achsen der Festanschlag erfasst wurde.

Die für das Messen mit Fahren auf Festanschlag notwendigen Einstellungen sowie ein Programmierbeispiel sind in der Funktionsbeschreibung "Messen (C4)" ([FCT-C4]) dargestellt.


Verrechnung des Meßoffsets (G101/G102)

Der Meßoffset ist der in Abbildung 4-13 dargestellte Offset zwischen aufgezeichneter Messposition und der programmierten Zielposition. Er berechnet sich wie folgt:

Messoffset = Messposition - Zielposition

Abbildung 4-13: Meßoffset

G101 <Achsname><expr> { <Achsname><expr> } (nicht modal)

G101 Meßoffset in Verschiebung einrechnen

<Achsname> <expr> Achsspezifischer Faktor, mit dem der Meßoffset eingerechnet wird.

Die Angabe mehrerer Achsen ist auch bei Meßtyp 2 zulässig, wenn zuvor für jede dieser Achsen jeweils eine eigene Meßfahrt durchgeführt wurde.

Für die programmierten Koordinaten wird der aus den Meßwerten ermittelte Meßoffset als weitere Verschiebung zwischen programmierten und absoluten Koordinaten eingerechnet. Es erfolgt eine Fehlermeldung, wenn zuvor keine Meßwerte erfaßt wurden. Die Zahl hinter der Achsbezeichnung stellt den Faktor für die Einrechnung dar.

Die Verschiebung durch den Meßoffset gilt bis zur Abwahl mit G102.

Programmierbeispiel

Rechnet den Meßoffset für X mit Faktor 1 und für Y mit Faktor 7 in die Verschiebung zwischen programmierten und absoluten Koordinaten ein.

N10 G101 X1 Y7

G102 { <Achsname><dummy_expr> } (nicht modal)

G102 Meßoffset aus Verschiebung rückrechnen

<Achsname><dummy_expr> Achse, bei der Meßoffset rausgerechnet wird.

Die mit G100 aufgenommenen Meßwerte und mit G101 als weitere Verschiebungen eingerechneten Meßoffsets werden nach folgender Regel herausgerechnet:

Falls eine oder mehrere Achsen programmiert wurden, werden nur diese Achsen berechnet. Ist keine Achse programmiert worden, so werden alle Verschiebungen herausgerechnet.

Eine Fehlermeldung wird erzeugt, wenn eine Achse programmiert wurde, für die keine Meßverschiebung eingerechnet ist.

Im Unterschied zu G101 hat der Zahlenwert hinter einer Achsangabe bei G102 keine Bedeutung; aus Syntaxgründen ist er jedoch erforderlich. Es wird immer der Offset herausgerechnet, der mit G101 eingerechnet wurde.

Programmierbeispiel

N10 G102 X1 (Nur Offset der X-Achse wird herausgerechnet)

N20 G102 (Offsets aller Achsen werden herausgerechnet)


Das Kantenstoßen (G108)

Die Kantenstoßfunktion wird bei der Holzbearbeitung zum exakten Stoßverleimen von Furnierkanten benötigt. Beim Aufleimen einer Furnierleiste kann die Position des Kantenanfangs von Werkstück zu Werkstück ggf. um einige mm verschieden sein. Somit ist das Abschneiden der Furnierleiste an einer Position ungleich einer NC-Satz-Grenze erforderlich. Es handelt sich hierbei um ein zweidimensionales Problem in der XY-Ebene, wobei lineare und zirkulare Bewegungen erlaubt sind.

Der Beginn der Furnierleiste wird meßtechnisch durch einen vorauseilenden Taster erfaßt (Abbildung 4-14). Die Position für ein exaktes Abschneiden der Furnierleiste muß aus den Meßwerten bestimmt werden.

Es muß folgendes Verhalten erzielt werden:

Nach dem Überfahren des Meßtasters wird im Interpolator ein festgelegter Restweg ausgegeben. Anschließend wird gewartet, bis alle Achsen im Regelfenster sind. Daraufhin wird eine M-Funktion vom Synchronisationstyp MNE_SNS [1]-3 an die SPS-Schnittstelle weitergegeben, die das Abschneiden der Furnierleiste bewirkt. Nach der Quittierung erfolgt die Fortsetzung der Interpolation bis zum programmierten Zielpunkt. Es darf nur eine MNE_SNS-Funktion aktiv sein, d.h. mehrfache Programmierung in einem Satz ist nicht zulässig. Die MNE_SNS-Funktion kann jedoch mit M-Funktionen anderer Synchronisationarten in einem Satz programmiert werden.

Abbildung 4-14: Aufleimen einer Furnierleiste

G108 Kantenstoßen (modal)

Die Anwahl des Kantenstoßen erfolgt über G108 und ist haltend wirksam. Abhängig von der Parametrierung im Kanalparametersatz [1]-28 sind die im Folgenden beschriebenen zwei Verfahren möglich.

Für den Sonderfall, das nur eine CNC Achse bewegt wird, ist G108 auch ohne Hauptachsbewegung zulässig. In diesem Fall darf in einer der Mitschleppachsen gemessen werden.

Mehr:

button Stoßverleimen in einem Bewegungssatz (Verfahren 1)

button Stoßverleimen über mehrere Bewegungssätze (Verfahren 2)

button Programmierung des Restwegs


Stoßverleimen in einem Bewegungssatz (Verfahren 1)

Die Anwahl des Meßvorgangs über G108 ist haltend wirksam bis zur Programmierung einer M-Funktion vom Synchronisationstyp MNE_SNS [1]-3. Bei dieser M-Funktion wird die Meßfahrt gestartet. Das Meßsignal muß in dem Verfahrsatz erfolgen, der zusammen mit dieser M-Funktion programmiert wurde.

Nach erkanntem Meßsignal wird um den Restweg [1]-2 weitergefahren und G108 implizit abgewählt.

Programmierbeispiel

N05 X0 Y0

N10 G108 (Kantenstoßen einschalten)

N20 G01 X90 Y90 F20

N30 M97 G01 X150 Y150 F8 (M97 ist vom Typ MNE_SNS,Meßfahrt starten)

(Nach Meßsignal um den Restweg weiterfahren)

M30

Wird während der Messfahrt kein Messereignis registriert, erfolgt am Satzende die Ausgabe einer Fehlermeldung.


Stoßverleimen über mehrere Bewegungssätze (Verfahren 2)

Oft liegt das Problem vor, das eine Kontur über kurze NC-Sätze (z.B. von einem CAD-System) beschrieben wird. Soll an solchen Konturen mit Kantenstoß gefahren werden, so ergibt sich das Problem, den Stoß genau auf einem Konturelement zu treffen.

Die Aktivierung der Kantenstoßfunktion erfolgt ebenfalls über G108 und ist haltend wirksam. Bei entsprechender Parametrierung im Kanalparametersatz [1]-28 ermöglicht es die erweiterte Funktion, den Kantenstoß erst n Sätze nach der M-Funktion durchzuführen. Die M-Funktion wird ebenfalls sofort ausgegeben, der Ereignistrigger wird jedoch erst zu einem späteren Zeitpunkt gegeben. Nach dem Meßsignal wird der Restweg über weitere nachfolgende m Sätze abgefahren. Der Zeitpunkt, bis zu dem spätestens die Meßfahrt abgeschlossen sein muß, wird explizit durch den NC-Befehl G107 programmiert.

G107 Abwahl satzübergreifendes Kantenstoßen (modal)

Programmierbeispiel

N05 X0 Y0

N10 G108 (Kantenstoßen einschalten)

N20 G01 X90 Y90 F20

N30 M97 G01 X100 Y100 F8 (M97 ist vom Typ MNE_SNS,Meßfahrt starten)

N40 X110 Y110

N50 X120 Y120

N60 X130 Y130

N70 X140 Y140

N80 X150 Y150 (<- letzter Meßfahrtsatz!)

N90 G107 (Ende Messen Kantenstoßen)

N80 G00 X200 Y200

M30

Der Meßvorgang ist auch innerhalb eines Bewegungssatzes möglich. Jedoch bietet Verfahren 1 für diesen Fall eine vereinfachte Programmierung.

Wird während der Messfahrt kein Messereignis registriert, erfolgt bei G107 die Ausgabe einer Fehlermeldung.


Programmierung des Restwegs

V.G.RW Restweg beim Kantenstoßen (Lese- und Schreibzugriff)

Mit der achsgruppenspezifischen Variablen "V.G.RW" kann der Restweg für das Kantenstoßen neu festgelegt werden. Der Restweg ist der noch zu verfahrende Weg nach dem Eintreffen des Meßsignals. Im Grundzustand wird das entsprechende Arbeitsdatum für den Restweg aus dem Kanalparametersatz [1]-2 übernommen.

Programmierbeispiel

N010 G91 G00 X0 Y0 Z10 (Linearinterpolation)

N020 V.G.RW = 5 (Festlegung eines neuen Restwegs)

N030 G108 (Kantenstoßen einschalten)

N040 G01 X10 Y10 F300 (Linearinterpolation)

N050 M97 G01 X30 Y10 F200 (M97 ist vom Typ MNE_SNS,)

(Meßfahrt mit Linearinterpolation,)

(Nach Meßsignal um den Restweg weiterfahren)

Die M-Funktion für das Kantenstoßen muß als Typ MNE_SNS festgelegt sein [1] -3.


Beschleunigungsbestimmung (G08/G09/G900/G901)

Die Beschleunigungsbestimmungen sind nur in Verbindung mit dem linearen Slope wirksam!

G08 Beschleunigung am Satzanfang (modal, Grundzustand)

G09 Verzögerung am Satzende (nicht modal, Wirkung abhängig

von G901/G900)

G901 Verzögerung nach Satzende, kann durch G09
satzweise aufgehoben werden (modal)

G900 Verzögerung am Satzende unabhängig von
G09 modal aktiv (modal)

Werden zwei aufeinanderfolgende NC-Sätze mit unterschiedlichen Vorschubgeschwindigkeiten programmiert, dann erfolgt eine "weiche" Anpassung an der Satzgrenze. Eine Beschleunigung findet entsprechend G08 ausschließlich am Satzanfang statt. Mit G09 wird angegeben, daß eine Verzögerung auf den Vorschub des nächsten Satzes bereits am Ende des aktuellen Satzes erfolgt.

G09 ist die Grundeinstellung beim Programmstart. Um die Grundeinstellung auf Verzögerung erst nach Satzende festzulegen, gibt es die G-Funktion G901. Die inverse G-Funktion G900 dient zum Zurückschalten und entspricht der Grundeinstellung des Kanals.

Beim Übergang von G00 nach G01, G02 oder G03 wirkt grundsätzlich G09, d. h. Verzögerung am Satzende auf die Geschwindigkeit des Folgesatzes.

Abbildung 4-15: Beschleunigung am Satzübergang im Grundzustand (entspr. G08)

Abbildung 4-16: Verzögerung am Satzübergang mit G901 und G900

Abbildung 4-17: Kombination von G09 mit G901 und G900


Weg-/Zeitbezogene Vorschubinterpolation (G193/G293)

Die Wegbezogene Vorschubinterpolation ist nur in Verbindung mit dem linearen Slope oder dem Slopetyp 3 (HSC-Slope) wirksam!

Die Zeitbezogene Vorschubinterpolation ist nur in Verbindung mit dem linearen Slope wirksam!

G193 Wegbezogene Vorschubinterpolation (nicht modal)

G293 Zeitbezogene Vorschubinterpolation (nicht modal)

Bei angewähltem G193/G293 wird die Vorschubgeschwindigkeit zwischen Ausgangs- und programmierter Endgeschwindigkeit linear interpoliert.

Programmierbeispiel

N10 G01 X500 F1000

N20 G193 X900 F400

N30 X1000 F400

Am Satzübergang N10 / N20 wird die wegbezogene Vorschubinterpolation eingeschaltet und linear über den in N20 programmierten Weg auf die Endgeschwindigkeit verzögert.

Abbildung 4-18: Wegbezogene Vorschubinterpolation mit G193

Overrideänderungen werden unter Berücksichtigung der zulässigen Achsdynamik überlagert.

Die Programmierung von G193 mit G293, G08 oder G09 im selben NC-Satz ist nicht erlaubt.

Programmierbeispiel

N10 G01 X500 F1000

N20 G293 X900 F400

N30 X1000 F400

Am Satzübergang N10 / N20 wird die zeitbezogene Vorschubinterpolation eingeschaltet und linear über die Zeit auf die Endgeschwindigkeit verzögert.

Abbildung 4-19: Zeitbezogene Vorschubinterpolation mit G293

Die Programmierung von G293 mit G193, G08 oder G09 im selben NC-Satz ist nicht erlaubt.


Ebenenauswahl (G17/G18/G19)

G17 X-Y  Ebene (modal, Grundzustand)

G18 Z-X  Ebene (modal)

G19 Y-Z Ebene (modal)

Durch Programmierung von G17, G18 oder G19 wird die Ebene festgelegt, in der die Werkzeugradiuskorrektur und die Kreisinterpolation (s.auch Kapitel 4.1.3: "Kreisinterpolation G02/G03") wirksam sein soll.

Abbildung 4-20: Darstellung der Ebenenauswahl

Werkzeugkorrektur:

Es ist zu beachten, daß die eventuell angewählte WRK immer auf die ersten beiden Hauptachsen wirkt.

Kreisinterpolation:

Nach einer Ebenenumschaltung mit G17, G18 oder G19 gilt wieder die Zuordnung nach DIN: X, Y, Z werden I, J, K zugeordnet. Die Syntax entsprechend der angewählten Interpolationsebene zeigt folgende Tabelle:

Ebene | Interpolationsart | Zielpunkt in Ebene | Mittelpunkt /Radius
G17 | G02/G03 | X..Y.. | I..J../R
G18 | G02/G03 | Z..X.. | K..I../R
G19 | G02/G03 | Y..Z.. | J..K../R


Spiegeln (G21/G22/G23/G20)

Für die Spiegelung wird der Begriff "mentale Koordinaten" eingeführt. Vor einer bzw. bei abgewählter Spiegelfunktion fallen programmierte und mentale Koordinaten zusammen. Wird eine Spiegelung durchgeführt, so sind die mentalen Koordinaten die vom Programmierer eingegebenen Werte. Die programmierten Koordinaten hingegen sind gespiegelt, werden also tatsächlich abgefahren.

Als Spiegelfunktionen sind vorhanden (z.B X-Y Ebene):

G21 Spiegeln der programmierten Wege an der Y-Achse (modal)

xm = -xp

ym = yp

G22 Spiegeln der programmierten Wege an der X-Achse (modal)

xm = xp

ym = -yp

G23 Überlagerung von G21 und G22 (modal)

xm = -xp

ym = -yp

G20 Abwahl der Spiegelung (modal)

xm , ym : mentale Koordinaten

xp , yp : programmierte Koordinaten

xa , ya : absolute Koordinaten

Abbildung 4-21: Mentale und programmierte (gespiegelte) Koordinaten mit G21

Konturen, die zu spiegeln sind, sollten in ein Unterprogramm abgelegt werden. Dieses Unterprogramm wird dann nach der Spiegelfunktion aufgerufen. Die Spiegelung ist haltend wirksam.

Wird die Spiegelung bei angewählter Werkzeugradiuskorrektur programmiert, so ändert sich auch die Seite der Korrektur. D.h. bei aktivem G41 wird die Äquidistante zur programmierten Bahn nach der Spiegelung rechts zur Kontur berechnet (G42: WRK rechts der Kontur). Dies gilt auch bei geänderter Verfahrrichtung.

Programmierbeispiel

%L DREIECK (Unterprogramm J

N10 G90 X10 Y20 (Festlegung der zu spiegelnden)

N20 G91 X10 Y-10 ("mentale" Koordinaten)

N30 X-10 Y-10

N40 Y20

N50 M29

%SPIEGELUNG (Hauptprogramm J

N10 G92 G90 X60 Y40 (Bezugspunktverschiebung)

N20 G01 F500 (Gerade mit Vorschub 500)

N30 G21 (Spiegelung an Y-Achse)

N40 LL DREIECK (Aufruf Unterprogramm)

N60 G92 X0 Y0 (Rücknahme der BPV)

N70 M30

Abbildung 4-22: Beispiel für die Spiegelung

Bei der Spiegelung von Kreisen ist folgendes zu beachten:

Es werden generell nur die programmierten Koordinaten gespiegelt (bei einem Vollkreis also nur die Mittelpunktkoordinaten). Nach Anwahl der Spiegelung erfolgt eine Verfahrbewegung direkt auf den gespiegelten Endpunkt. Der Startpunkt der Verfahrbewegung wird nicht gespiegelt.

Folge : Im Verfahrsatz wird nur der Endpunkt, nicht die komplette Verfahrbewegung gespiegelt (Abbildung 4-23).

Auswirkung: Wird als Verfahrsatz ein Vollkreis programmiert und Start-/Endpunkt liegen nicht in 0/0, so ergibt sich durch die Spiegelung der Mittelpunktkoordinaten ein neuer Kreisradius und damit eine geänderte Kontur ( Abbildung 4-24 )!

Abbildung 4-23: Spiegelung des Endpunktes im Verfahrsatz

Abbildung 4-24: Änderung der Kontur bei Spiegelung eines Vollkreises

Betrachtungen im Raum:

Werden die Spiegel-Funktionen in einer anderen als der XY-Ebene angewählt (G18, G19) so ist zu beachten, daß sich bei Zirkularinterpolation eventuell die Drehrichtung in Abhängigkeit von der angewählten Ebene ändert: Außerdem haben die Spiegelungen keinen Einfluß auf die Z-Koordinate, d. h. mentale und programmierte Werte in Z-Richtung sind immer identisch.

Abbildung 4-25: Auswirkungen der Spiegelfunktionen auf die Kreisdrehrichtung in verschiedenen Ebenen


Spiegelung mit Achsangabe (G351)

Für das Spiegeln werden bisher die nach DIN 66025 frei verfügbaren G-Funktionen G20 bis G23 verwendet (Kapitel 4.5). Die nachfolgend beschriebene erweiterte Syntax bietet die Möglichkeit, die Spiegelung einzelner Achsen explizit programmieren zu können.

G351 <Achsname> [ [+] | - ] 1 { <Achsname> [ [+] | - ] 1 } (nicht modal)

G351 Achsspezifische Anwahl der Spiegelung. Die G-Funktion G351 ist nur satzweise gültig, aber die Spiegelung ist für eine mit dieser Funktion programmierten Achse haltend (modal).

<Achsname> Der Koordinatenwert der Achse bestimmt die An- oder Abwahl der Spiegelung einer Achse.

Koordinatenwert -1: Anwahl der Spiegelung

Koordinatenwert 1 oder +1: Abwahl der Spiegelung

Programmierbeispiel

G351 X-1 Y1 Z+1 (Anwahl der Spiegelung der X-Achse und Abwahl der)
(Spiegelung der Y- und Z-Achse)

q Die zu spiegelnden Achsen können an beliebiger Stelle im NC-Satz programmiert werden.

q Zusammen mit G351 muß mindestens eine Achskoordinate programmiert sein.

q Die Funktion G351 muß alleine im NC-Satz programmiert sein. Ausnahme ist die Satznummer N.

q Eine wiederholte An- oder Abwahl der Spiegelung einer Achse ist zulässig. Bei wiederholter Programmierung im gleichen NC-Satz wird jedoch eine Fehlermeldung ausgegeben.

q Wird im Synchronbetrieb für die führende Achse (Masterachse) eine Spiegelung angewählt, so wird nicht automatisch auch für die geschleppte Achse (Slaveachse) die Spiegelung angewählt. Die geschleppte Achse wird aber immer entsprechend den Verfahrbewegungen der führenden Achse mitgeschleppt. Eine zusätzliche Verfahrbewegung infolge einer Spiegelung der Masterachse wirkt sich somit auch auf die Slaveachse aus.

q Bei Programmstart und Reset ist die Spiegelung für alle Achsen abgewählt. Beim Achstausch wird die Spiegelung der getauschten Achse abgewählt.

q Die Spiegelung der ersten oder zweiten Hauptachse beeinflußt die Verfahrrichtung bei Kreisinterpolation und die Werkzeugradiuskorrektur.

q Bei der Programmierung einer Spiegelung mit aktiver Werkzeugradiuskorrektur wird die Anwahlseite (G41 / G42) vom Decoder automatisch gewechselt. Dies ist nur bei Linearsätzen erlaubt. Dieses Verhalten kann vom Steuerungshersteller festgelegt werden.

Abbildung 4-26: Spiegelung der Anwahlseite bei aktiver WRK

q Wird für eine gespiegelte Achse eine Bezugspunktverschiebung programmiert, so werden die Koordinaten zur Bezugspunktverschiebung ebenfalls gespiegelt. Bei An- oder Abwahl der Spiegelung einer Achse wird der Bezugspunktversatz mit gespiegelt.

Abbildung 4-27: Spiegelung der Bezugspunktverschiebung

q Die Koordinaten des Kreismittelpunkts I, J, K werden ebenfalls gespiegelt (siehe Kapitel 4.5)

q Beim Einfügen von Fasen und Radien (G301/G302) wird das I-Wort als Fasenlänge bzw. als Radius eingelesen. Eine Berücksichtigung der Spiegelung ist somit nicht erforderlich.

q Mit G21 bis G23 wird die Spiegelung, unabhängig von der Achsbezeichnung, nur für die ersten beiden Hauptachsen angewählt.

q Mit G20 wird nur die Spiegelung der ersten beiden Hauptachsen abgewählt.

Nachfolgend einige Beispiele für die Verwendung der Funktion G351. Hierbei seien die Achsen X, Y, und Z die 1., 2. und 3.Hauptachse.

Programmierbeispiel

N10 G351 X-1 (Anwahl der Spiegelung für die X-Achse (G21))

N20 G351 Y-1 (Anwahl der Spiegelung für die Y-Achse(G22))

N30 G351 X-1 Y-1 (Anwahl der Spiegelung für die X- und Y-Achse (G23))

N40 G351 X1 Y+1 (Abwahl der Spiegelung für die X- und Y-Achse (G20))

N50 X1 G351 Y-1 Z1 (Anwahl der Spiegelung für die Y-Achse und Abwahl)

(der Spiegelung für die X- und Z-Achse)


Maßeinheiten (G70/G71)

G70 Eingaben in Zoll (modal)

G71 Eingaben metrisch (modal, Grundzustand)

Die Anweisung G70 oder G71 wirkt auf alle Weg- und Koordinatenangaben.

Ausnahme: Schreiben/Lesen von Werkzeugparametern (V.G.WZxx.Pxx.) und Kinematikparametern (V.G.WZxx.KIN_PARAMxx) erfolgt immer direkt ohne Berücksichtigung der Maßeinheit.


Implizite Unterprogrammaufrufe (G80-G89/G800-G819)

TwinCAT CNC: Überblick

Implizite Unterprogrammaufrufe (G80G89/G800-G819)

G80  G89 [ [<Val1>,<Val2>, - ,<Val10>] ] Unterprogrammaufruf (nicht modal)

oder zusätzlich

G800  G819 [ [<Val1>,<Val2>, - ,<Val10>]] Unterprogrammaufruf (nicht modal)

G8x / G8xx Bei der Programmierung von G80G89 bzw. G800-G819 wird implizit ein zugeordnetes globales Unterprogramm aufgerufen bzw. ausgeführt. Die Defaultnamen dieser Unterprogramme können entweder in den Kanalparametern [1]-45/ [1]-46 konfiguriert oder zur Programmlaufzeit über den Befehl #FILENAME definiert werden.

Ist bei Programmierung von G80G89 bzw. G800-G819 kein Programmname hinterlegt, so wird die Fehlermeldung P-ERR-20131 "Unbekannte G-Funktion" erzeugt.

Das globale Unterprogramm wird nur einmal aufgerufen, d.h. ein G80G89 bzw. G800-G819 hat keine modale Wirkung.

<Val1> , - , <Val10> Optional können in einer nachfolgenden Klammerung maximal 10 Übergabeparameter (mathematische Ausdrücke im REAL-Format) in einer festen Reihenfolge zur Versorgung eines Unterprogrammes (Zyklus) aufgeführt werden. Die Parameter sind durch Kommas getrennt. Lücken in der Reihenfolge müssen durch aufeinanderfolgende Kommas ", ," markiert sein.

Im Unterprogramm können die Parameter analog zur Zyklenprogrammierung über @Px-Zugriffe ausgelesen werden. Hierbei besteht eine feste Zuordnung zwischen dem Parameter und dem @Px-Lesezugriff (z.B. @P1 liest Parameterwert 1, @P2 liest Parameterwert 2 usw.). Auch die zusätzliche erweiterte Zyklensyntax mit dem @-Zeichen kann in den auf diese Art aufgerufenen Unterprogrammen genutzt werden. Ob ein Parameter programmiert (gültig) ist, kann im Unterprogramm (Zyklus) über die Variable V.G.@P[i].VALID ermittelt werden.

Ein G80G89 bzw. G800-G819 wird immer als letzte Aktion am Satzende ausgeführt, d.h. sind im gleichen NC-Satz noch Achsbewegungen programmiert, so werden diese immer vor dem Aufruf des globalen Unterprogramms ausgefahren.

Programmierbeispiel

Für G80 soll das globale UP - g80_up_test.nc - aufgerufen werden:

..

N10 #FILENAME[ G80="g80_up_test.nc" ]

Nx ..

N30 G80 Aufruf g80_up_test.nc als globales UP

:

Für G815 soll das globale UP - g815_up_test.nc - aufgerufen werden:

..

N10 #FILENAME[ G815="g815_up_test.nc" ]

Nx ..

N30 G815 Aufruf g815_up_test.nc als globales UP

:

G85 ruft das globale UP - cycle_test.nc - mit Parametern auf:

N10 #FILENAME[ G85="cycle_test.nc" ]

Nx ..

N30 G85 [10,2, ,15,-3, ,5] Aufruf cycle_test.nc als globales UP

:


Maßsysteme (G90/G91)

G90 Absolutmaß (modal, Grundzustand)

G91 Kettenmaß (modal)

Bei der Absolutmaßeingabe (G90) beziehen sich alle Koordinatenangaben auf den Koordinatennullpunkt, d.h. der Zahlenwert eines Verfahrsatzes gibt die Zielposition im Koordinatensystem an.

Bei der Kettenmaßprogrammierung (G91) beziehen sich die Koordinatenangaben auf die Zielposition des vorhergehenden Wegsatzes, d.h. der Zahlenwert eines Wegsatzes gibt den zu fahrenden Weg an.

Mehr:

button Exklusive Programmierung

button Kombinierte Programmierung


Exklusive Programmierung

In der Grundeinstellung darf im NC-Satz immer nur ein Maßsystem angewählt werden. Doppelprogrammierung bzw. Programmierung von G90 und G91 im gleichen NC-Satz ist nicht erlaubt. Die Position von G90/G91 innerhalb des NC-Satzes hat daher keine Bedeutung.

Programmierbeispiel

:

N10 X10 Y10 (Absolutmaßsystem G90 ist angewählt, Grundeinstellung)

N20 G91 X20 Y20 (Abwahl Absolut- und Anwahl Relativprogrammierung)

N30 X30 G90 Y30 (Abwahl Relativ- und Anwahl Absolutprogrammierung)

:

N100 G90 Z30 G90 (Fehlermeldung: Doppelprogrammierung von G90/G91)

N110 G91 X10 G90 Z30 (Fehlermeldung: Doppelprogrammierung von G90/G91)


Kombinierte Programmierung

Über den Kanalparameter [1]-42 kann die exklusive Maßsystemprogrammierung für die Koordinatenangabe von Bahnachsen aufgehoben werden. Dann können in einem NC-Satz gleichzeitig Absolut- und Relativmassangaben programmiert werden. Auch die wiederholte Programmierung von G90 bzw. G91 im gleichen NC-Satz ist zulässig. Die Position von G90/G91 innerhalb des NC-Satzes ist dann von Bedeutung. Das zuletzt programmierte Maßsystem ist für die im NC-Satz folgenden Bahnachspositionen und alle weiteren NC-Sätze bis zum nächsten G90/G91 gültig.

Programmierbeispiel

:

N10 X10 Y10 (Absolutmaßsystem G90 ist angewählt, Grundeinstellung)

N20 G91 X20 G90 Y20 (Relativ für X-Achse, Absolut für Y-Achse)

N30 X30 G91 Y30 Z20 (Absolut für X-Achse, Relativ für Y/Z-Achse)

N30 G90 X30 G91 Y30 G90 Z20 (Absolut für X/Z-Achse, Relativ für Y-Achse)

:

N100 G90 G91 Z30 (Relativ für Z-Achse)

N110 G91 X10 G90 Z30 (Relativ für X-Achse, Absolut für Z-Achse)

G90/G91 hat keinen Einfluss auf die Hilfskoordinaten I, J, K der Kreis- bzw. Helikalinterpolation. Ihr Maßsystem wird ausschließlich durch G161/G162 bestimmt.


Genauhalt (G60, G360, G359)

G60 Genauhalt (nicht modal)

... oder bei Genauhalt über mehrere Sätze:

G360 Anwahl Genauhalt (modal)

G359 Abwahl Genauhalt (modal)

G60/G360 erlauben das genaue Anfahren einer Zielposition innerhalb der Genauhaltgrenzen. Die Vorschubgeschwindigkeit wird bis zum Satzende auf null verringert und der Schleppabstand abgebaut.

Der Genauhalt kann verwendet werden, wenn Ecken exakt zu bearbeiten sind oder wenn bei einer Richtungsumkehr die Zielposition exakt erreicht werden muß. Die Weiterschaltbedingung ist das Erreichen eines parametrierbaren Regelfensters [2]-12.


Polynomüberschleifen (G61, G261, G260)

G61 Polynomüberschleifen (am Satzende) (nicht modal)

... oder bei Polynomüberschleifen über mehrere Sätze:

G261 Anwahl Polynomüberschleifen (am Satzende) (modal)

G260 Abwahl Polynomüberschleifen (modal)

Unter "Polynomüberschleifen" versteht man die krümmungs- und richtungsstetige Verbindung zweier Bewegungssätze. Dazu werden die ursprünglich programmierten Bewegungssätze verkürzt. Zwischen den Sätzen wird eine Überschleifkurve eingefügt. Das Verfahren erlaubt das Überschleifen zwischen den Übergängen Gerade-Gerade, Gerade-Kreis und Kreis-Kreis (Abbildung 4-28). Es ist nicht auf die Ebene beschränkt, sondern erlaubt vielmehr das Überschleifen zwischen beliebig im Raum liegenden Kurven.

Abbildung 4-28: Beispiele für Polynom-Überschleifen

Folgende Überschleifarten stehen zur Verfügung:

q Automatisches Überschleifen mit maximaler Eckabweichung

q Automatisches Überschleifen mit vorgegebener Geschwindigkeit

q Eckabstand-Überschleifen

q Eckabweichung-Überschleifen

q Zwischenpunkt-Überschleifen

Je nach Überschleifart können die charakterisierenden Randbedingungen vorgegeben werden. Die Parameter bleiben so lange gültig, bis der Überschleifvorgang vollständig ausgeführt wurde. Werden die Überschleifparameter zwischen Vorsatz und Nachsatz geändert, so wirkt sich die Änderung erst auf den nächsten Überschleifvorgang aus.

Mehr:

button Begriffsdefinitionen

button Allgemeine Eigenschaften

button Programmierung

button Beispiele

button Überblick der Verfahren

button Anmerkungen


Begriffsdefinitionen

Folgenden Begriffe sollen kurz erläutert werden:

Polynomüberschleifen: Krümmungs- und richtungsstetige Verbindung zweier Bewegungssätze.

Überschleifkurve: Kurve aus zwei Polynomen 4. Ordnung je Achse.

Satzlänge: Die Bahnlänge der dem Bewegungssatz entsprechenden Kurve.

Eckabstand: Abstand des Beginns/des Endes der Überschleifkurve vom programmierten Zielpunkt/Startpunkt eines Bewegungssatzes (siehe folgende Abbildung). Der Eckabstand wird stets auf die halbe Satzlänge begrenzt. Bei einem Zirkularsatz versteht man unter dem Eckabstand die Bogenlänge vom Startpunkt der Überschleifkurve bis zum programmierten Endpunkt des Kreis-bogens.

Abbildung 4-29: Definition des Eckabstands

Vorsatz: Der Bewegungssatz vor der Überschleifkurve

Nachsatz: Der Bewegungssatz nach der Überschleifkurve

Vorabstand: Der Eckabstand des Vorsatzes

Nachabstand: Der Eckabstand des Nachsatzes

Zwischenpunkt: Punkt, an dem die beiden Teilkurven der Überschleifkurve aneinandergrenzen.

Eckabweichung: Der Abstand zwischen dem programmierten Eckpunkt und dem Zwischenpunkt der Überschleifkurve (siehe folgende Abbildung).

Abbildung 4-30: Definition der Eckabweichung

Programmierbeispiel

Vergleich der Programmierung von G61  G261/G260:

%poly_G61 %poly_G261_1 %poly_G261_2

N10 X0 Y0 G01 F1000 N10 X0 Y0 G01 F1000 N10 X0 Y0 G01 F1000

N20 X20 Y100 N20 X20 Y100 N20 X20 Y100

N30 G61 X40 Y100 N30 G261 X40 Y100 N25 G261

N40 G61 X60 Y20 N40 X60 Y20 N30 X40 Y100

N50 G61 X80 Y20 N50 X80 Y20 N40 X60 Y20

N60 G61 X100 Y100 N60 X100 Y100 N50 X80 Y20

N70 X120 Y100 N70 G260 X120 Y100 N60 X100 Y100

N80 X140 Y20 N80 X140 Y20 N70 X120 Y100

N90 X160 Y20 N90 X160 Y20 N75 G260

N100 M30 N100 M30 N80 X140 Y20

N90 X160 Y20

N100 M30


Allgemeine Eigenschaften

Das Verfahren des Polynomüberschleifens berechnet sich nach der geometrischen Bahnkontur der Hauptachsen im Raum. Mit den vorgegebenen Randbedingungen, z.B. Eckabweichung oder prozentuale Bahngeschwindigkeit, ergibt sich eine Position, auf der ursprünglichen Kontur, ab welcher diese verändert bzw. durch eine Überschleifkurve (Polynom) ersetzt werden kann. D.h. der Start- bzw. Endpunkt der Überschleifkurve auf der ursprünglichen Bahnkurve ist somit bekannt.

Aus dem ermittelten Start- und Zielpunkt des gemäss den Randbedingungen ermittelten Polynoms der Hauptachsen lässt sich ebenso die Position der Mitschleppachsen angeben, ab welche ihre ursprüngliche Kontur durch ein Polynom ersetzt werden kann. Bei den Mitschleppachsen wird, ebenso wie bei den Hauptachsen, zwischen den Eckabständen des Vor- und Nachsatzes ein krümmungs- und richtungsstetiges Polynom unter Berücksichtigung der max. Beschleunigung dieser Achse eingefügt. Die evtl. ursprünglich angegebene Eckabweichung bezieht sich jedoch nur auf die Abweichung der Hauptachse im Raum, so dass falls gewünscht für die maximale Abweichung der Mitschleppachsen ein zusätzlicher Grenzwert angegeben werden kann. Ein theoretisches Überschreiten dieser Abweichung durch die Mitschleppachse führt zur Reduktion der Überschleifkurve (Verkleinern des Eckenabstandes).

Das Polynomüberschleifen wird in Abhängigkeit des Übergangs zwischen dem Vor- und Nachsatz automatisch unterdrückt falls:

q ...der Übergang aller Achsen tangential bzw. direkt gespiegelt ist.

q ...der Übergang der Hauptachsen tangential ist und keine maximale Abweichung (Wert = 0) für die Mitschleppachsen angegeben wurde.

q ...nach G61-Programmierung das Programmende ohne Folgesatz erreicht wird. Hier wird zusätzlich eine Warnung ausgegeben.

Mehr:

button Maximaler Eckabstand, verbleibende Mindestsatzlänge

button Relevante Satzlänge

button Abarbeitung von zusätzlichen Sätzen

button Ruck innerhalb des Polynoms

button Geschwindigkeitsverlauf im Überschleifbereich


Maximaler Eckabstand, verbleibende Mindestsatzlänge

Um eine Entartung der Polynome zu verhindern gelten zusätzlich folgende Einschränkungen:

q Der Eckabstand kann maximal 50% der ursprünglichen Satzlänge annehmen. Wurde dieser grösser gewählt, so wird der Abstand des Vor- bzw. Nachsatzes entsprechend begrenzt. Beträgt der Eckabstand am Satzanfang und am Satzende jeweils 50% des ursprünglichen Satzlänge, so entfällt der Satz vollständig.
Bei der Parametrierung des Überschleifens kann die minimal verbleibende Satzlänge zwischen 0% und 100% eingestellt werden. Dies entspricht einem variablen maximalen Eckenabstand von 50% bis 0%. Bei jedem Programmstart ist die minimal verbleibende Satzlänge zunächst auf 0% gesetzt (Satz kann vollständig überschliffen werden). Wird die minimal verbleibende Satzlänge z.B. mit 10% vorgegeben, so können die Eckabstände dieses Satzes maximal (100% - 10%) / 2 = 45% der ursprünglichen Satzlänge annehmen.

q Des weiteren wird bei Zirkularsätzen der maximale Eckabstand (zurückgelegte Strecke auf Kreis) so beschränkt, dass der dadurch überstrichene Winkel 90° nicht überschreitet.


Relevante Satzlänge

Aufgrund der mathematischen Auflösung des Rechners, gegeben durch die Anzahl von signifikanten Stellen einer REAL64-Grösse, ist die miminale Kurvenlänge grundsätzlich begrenzt (derzeit liegt diese Länge bei ca. 15,85 Mikrometer). Bahnsegmente kleiner als diese miminale Kurvenlänge führen zu einer Warnung und Abbruch des Überschleifens am aktuellen Satzübergang.

Darüberhinaus kann die Bahnkontur sehr kleine Ausgleichssätze enthalten, welche durch ein Programmiersystem (CAD/CAM) oder einer Werkzeugradiuskorrektur eingefügt wurden, damit die Bahn auch nach der Korrektur einen stetigen Verlauf beibehält.

Um einen Abbruch des Überschleifens durch diese kurzen Sätzen zu verhindern, kann eine minimale Satzlänge angegeben werden, ab welcher der Nachsatz für das Polynomüberschleifen relevant ist. Sätze, welche kürzer sind, werden bei angewähltem Überschleifen ausgelassen, d.h. es wird in den darauffolgenden Satz überschliffen.

Hierbei kann sowohl eine Grenze für den Raumfahrweg der Hauptachsen wie auch eine Grenze für den Fahrweg der Mitschleppachsen angegeben werden. Erst wenn sowohl der Raumfahrweg der Hauptachse, wie auch der Fahrweg jeder einzelnen Mitschleppachse unterhalb der angegebenen Grenze liegt, wird der Satz ausgelassen. Das Polynomüberschleifen verbindet den vorgehenden und nachfolgenden Satz richtungs- und krümmungsstetig, wobei die Ausgangssätze nicht angrenzend sein müssen (Kontur muss nicht stetig sein).

Wird ein Satz ausgelassen, so werden derzeit die maximale Eckenabweichung der Hauptachsen und Mitschleppachsen nur näherungsweise betrachtet. D.h. es wird angenommen, dass die ausgelassenen Sätze bezüglich der Abweichung des Überschleifens vernachlässigt werden können.

Programmierbeispiel

#CONTOUR MODE [DEV, PATH_DEV 5, RELEVANT_PATH 2]

N03 G01 X0 Y0 Z0 C0 F4

N907090 G04 X0.1

N04 X5 G261

N05 Y1

N09 X10 Y3 G260

N907091 Y0

Abbildung 4-31: Beispiel für das Auslassen eines kurzen Satzes N05 beim Überschleifen

Sonderfall 1: Mehrere kurze Sätze in Folge nach dem Satzübergang

Sind mehrere nacheinanderfolgende Sätze (N20, N30, N40) kleiner als der angegebene Mindestfahrweg, so werden diese ausgelassen, solange der Abstand der Zielposition von der letzten noch relevanten Endposition (N10) kleiner als der angegebene Mindestfahrweg ist. Liegt die Zielposition des ausgelassenen Satzes ausserhalb dieser Hüllkugel, so wird dieser Satz (N40) für die Berechnung der Überschleifkurve herangezogen, auch wenn er selbst kürzer als die angegebene Mindestlänge ist. Hierdurch erhält man selbst bei mehreren in Folge ausgelassenen Sätze eine geringe Abweichung von der Originalkontur.

Abbildung 4-32: Einzelne Sätze (N20, N30 und N40) sind zu kurz, jedoch liegt die Zielposition ausserhalb der Mindestsatzlänge

Sonderfall 2: Mehrere kurze Sätze in Folge nach Satzübergang, letzter Satz sehr kurz

Im Ausnahmefall kann der Satz N40 selbst kürzer als die für das Überschleifen erforderliche Systemmindestlänge (ca. 15 mikrom) sein. In diesem Falle wird die letzte Endposition mit der neuen Zielposition durch einen Linearsatz verbunden. Dieser neue Linearsatz N20´ wird dann für die Berechnung der Überschleifkurven herangezogen.

Abbildung 4-33: Einzelne kurze Sätze (N20, N30 und N40) sind zu kurz, jedoch Summe aller Sätze überschreitet die Mindestsatzlänge

Sonderfall 3: Kurze Sätze vor dem Satzübergang

Sind die Sätze bei Beginn des Überschleifens (vor dem Satzübergang) bereits kürzer als die durch das Verfahren gegebene Mindestlänge, so werden diese Sätze ausgelassen. Die Sätze werden solange ausgelassen, bis der Abstand zwischen letzter gültiger Position und aktueller Zielposition die Mindestsatzlänge überschreitet. Ist dies der Fall, so wird die letzte Endposition und die aktuelle Zielposition durch einen Linearsatz N10 verbunden, welcher dann als Startsatz für das Überschleifen verwendet wird.

Abbildung 4-34: Mehrere Sätze (N10, N20 und N30) sind zu kurz, jedoch überschreitet die Summe aller Sätze die systemgegebene Mindestsatzlänge

Sonderfall 4: Abwahl des Überschleifens oder Ändern der Parametrierung

Wird während des Auslassens von Sätzen das Überschleifen abgewählt oder werden die Randbedingungen für das Überschleifen geändert, so darf das aktuelle Überschleifen nur bis zur Abwahl / Parameteränderung durchgeführt werden. Danach kann das Überschleifen evtl. mit den neuen Parametern fortgesetzt werden.

Abbildung 4-35: Einzelne Sätze (N20, N30 und N40) sind zu kurz, jedoch wurde das Überschleifen bereits ab Satz N20 abgewählt.


Abarbeitung von zusätzlichen Sätzen

Wird zusätzlich zu den Bewegungssätzen an der Satzgrenze (N10  N20) ein Befehl ohne Konturinformation (z.B. quittierungspflichtige M-Funktion mit Ausgabe vor Satz und Synchronisation nach Satz, MVS_SNS) programmiert, so kann dieser wahlweise vor, während oder nach der Überschleifkurve ausgeführt werden.

Beispiel:

N10 X100 G61 M25

N20 Y100

Abbildung 4-36: Synchronisation mit nicht konturrelevanten Aktionen während Über-schleifen

Abbildung 4-37: Synchronisation mit nicht konturrelevanten Aktionen nach Überschleifen

Für die Ausführung dieser Befehle existieren folgende drei Möglichkeiten:

1. direkt nach Vorsatz (N10) und vor dem ersten Überschleifpolynom,

2. zwischen erstem und zweitem Überschleifpolynom,

3. nach zweitem Überschleifpolynom und vor dem Nachsatz (N20).


Ruck innerhalb des Polynoms

Durch die Krümmung des Polynoms ergibt sich ein Ruck quer zur Bahn für die Achsen. Dieser Ruck wird normalerweise mit den maximalen Dynamikparametern der Achse überwacht [2]-16. Ist der Ruck zu gross, so wird die Bahngeschwindigkeit entsprechend reduziert. Bei einzelnen Anwendungsfällen kann diese Geschwindigkeitsreduktion aufgrund des maximalen Rucks nicht gewünscht sein. Das lässt sich durch entsprechende Steuerkommandos im NC-Befehle #CONTOUR MODE spezifisch einstellen. Die Steuerkommandos überschreiben die Voreinstellung der Kanalparameterliste [1]-41 und sind modal bis zum Programmende gültig.

Im nachfolgenden Beispiel wird der Satzübergang von N6 nach N7 durch Polynome überschliffen, bei welchen der Ruck berücksichtig wird. Der Übergang N7 nach N8 wird ebenso überschliffen, jedoch ohne Berücksichtigung des Rucks auf der Bahnkontur.

Programmierbeispiel

%poly_jerk.nc

( Default setting in channel list : check_jerk_on_poly_path

#SET SLOPE PROFIL[1]

#CONTOUR MODE [ DEV, PATH_DEV 4, RELEVANT_PATH 51]

N0003 G1 X0 Y100 Z0 F4

N0004 G261

N0005 G1 G91 X100

N0006 Y-50

N0007 #CONTOUR MODE [CHECK_JERK=1]

N0008 X100

N0009 #CONTOUR MODE [CHECK_JERK=0]

N0010 Y-50

N0009 G260

N0055 M30


Geschwindigkeitsverlauf im Überschleifbereich

Abhängig von der Achsparametrierung und Anwendung kann es erforderlich sein, den Geschwindigkeitverlauf im Überschleifbereich zu beeinflussen. In der Defaulteinstellung wird der Überschleifbereich mit maximal zulässiger Bahngeschwindigkeit durchfahren. Bei stark unterschiedlicher Achsdynamik der beteiligten Achsen kann dies zu einer unzulässig hohen Schwingungsanregung der Maschine führen, da die Bahngeschwindigkeit im Überschleifbereich angepasst wird.

Das Verhalten im Überschleifbereich lässt sich durch entsprechende Steuerkommandos im NC-Befehle #CONTOUR MODE einstellen.

Im nachfolgenden Beispiel wird der Satzübergang von N6 nach N7 durch Polynome überschliffen, bei dem im Überschleifbereich mit maximaler Geschwindigkeit durchfahren wird, d.h. bei unterschiedlicher Achsdynamik erfolgt hier die Geschwindigkeitsanpassung. Der Übergang N9 nach N10 wird ebenso überschliffen, jedoch ohne Geschwindigkeitsanpassung im Überschleifbereich d. h. die Bahngeschwindigkeit ist im Überschleifbereich konstant.

Programmierbeispiel

%poly_const_speed

N0003#SET SLOPE PROFIL[1]

N0004 G1 X0 Y0 Z0 F8000

N0005 #CONTOUR MODE [CONST_VEL=0]

N0006 X100 G61

N0007 Y100

N0008 #CONTOUR MODE [CONST_VEL=1]

N0009 X0 G61

N0010 Y0

N0020 M30


Programmierung

Die einzelnen Optionen werden über den NC-Befehl #CONTOUR MODE vor dem eigentlichen Überschleifen (G61 / G261) parametriert.

Abhängig von der Überschleifart stehen bestimmte Schlüsselworte zur Parametrierung zur Verfügung. Der Befehl besitzt prinzipiell folgende Syntaxelemente:

#CONTOUR MODE[

<Ueberschleifart> PATH_DEV TRACK_DEV VEL PRE_DIST POST_DIST

<1.Hauptachsname> <2.Hauptachsname> <3.Hauptachsname>

RELEVANT_PATH RELEVANT_TRACK REMAIN_PART <action>

CHECK_JERK MAX_ANGLE SYM_DIST ACC_MAX ACC_MIN

RAMP_TIME CONST_VEL ]

<Ueberschleifart> :

AUTO_DEV

Autom. Überschleifen mit max. Eckenabweichung (1.Art)

AUTO_VEL

Autom. Überschleifen mit Geschwindigkeitsreduzierung (2. Art)

DIST

Angabe des Eckenabstands (3. Art)

DEV

Angabe der max. Eckenabweichung (4. Art)

Default nach Programmstart

POS

Angabe des Eckenabstands und des Zwischenpunkts der Überschleifkurve (5. Art)

DIST_SOFT

Überschleifen mit Ruckbegrenzung durch Kontur (6. Art)

<action> : | PRE_ACTION | Aktionen (M/H) ausführen vor der Überschleifkurve
 | INTER_ACTION | Aktionen (M/H) ausführen in der Überschleifkurve
 | POST_ACTION | Aktionen (M/H) ausführen nach der Überschleifkurve

Programmierbeispiel

%TestG61

#CONTOUR MODE [AUTO_DEV PATH_DEV=1.0 RELEVANT_PATH=0 RELEVANT_TRACK=0]

N1 G90 G01 X0 Y0 Z0 A0 C0 F60

N10 G1 G61 X99.999 Y0.001

N20 G1 X100 (-> Warnung 120216, Satz ist zu kurz zum)

(Ueberschleifen, Abbruch Ueberschleifen)

#CONTOUR MODE [AUTO_DEV PATH_DEV=1.0 RELEVANT_PATH=0.1 RELEVANT_TRACK=0]

N2 G90 G01 X0 Y0 Z0 A0 C0 F60

N30 G1 G61 X99.999 Y0.001 (-> keine Warnung 120216)

N40 G1 X100 (Satz wird ausgelassen, Ueberschleifen N30->N3)

#CONTOUR MODE [AUTO_DEV PATH_DEV=1.0 RELEVANT_PATH=0 RELEVANT_TRACK=0]

N3 G90 G01 X0 Y0 Z0 A0 C0 F60

N50 G1 G61 X100

N60 G1 X200 Z00 C-32.667 (tang. Übergang der Hauptachsen)

(Ueberschleifen wird ausgelassen)

#CONTOUR MODE [AUTO_DEV PATH_DEV=1.0 RELEVANT_PATH=0 RELEVANT_DEV=0.1]

N4 G90 G01 X0 Y0 Z0 A0 C0 F60

N70 G1 G61 X100

N80 G1 X200 Z00 C-32.667 (tang. Übergang der Hauptachsen)

(Ueberschleifen wird nicht ausgelassen)

(wegen maximaler MA-Abweichung)

N10000 G1 G61 X300 Z0 (-> Warnung 120206: Programmende beim Warten)

(auf Nachsatz)

N0210 M30

Mehr:

button Automatisches Überschleifen mit max. Eckabweichung (1.Art)

button Automatisches Überschleifen mit vorgeg. Geschwindigkeit (2. Art)

button Eckabstand-Überschleifen (3.Art)

button Eckabweichung-Überschleifen (4.Art)

button Zwischenpunkt-Überschleifen (5.Art)

button Dynamisch optimiertes Überschleifen (6.Art)


Automatisches Überschleifen mit max. Eckabweichung (1.Art)

Der Eckabstand wird aufgrund der an der Bewegung beteiligten Haupt- und Mitschlepp-achsen automatisch bestimmt. Zur Bestimmung eines Schätzwertes für den erforder-lichen Eckabstand werden die in den Kanalparametersätzen angegebene maximale Raumbeschleunigung und die gewünschte (programmierte) Vorschubgeschwindigkeit der Hauptachsen herangezogen.

Der Eckabstand ergibt sich wie folgt:

q Die Überschleifbahn soll möglichst ohne Reduzierung der Geschwindigkeit durch-fahren werden können.

q Die angegebene maximale Eckabweichung e darf nicht überschritten werden (s. a. Eckabweichungsüberschleifen, 4. Art).

Der wesentliche Unterschied zum Eckabweichungsüberschleifen (Art 4) liegt an einer zusätzlichen Betrachtung der aufgrund der Achsdynamik erforderlichen Mindestüberschleiflänge. D.h. benötigt ein Fahren mit konstanter Bahngeschwindigkeit nicht die maximal erlaubte Eckabweichung, so wird die Überschleifkurve entsprechend kleiner gewählt.

Dieses Verfahren eignet sich insbesondere falls:

q in Abhängigkeit der programmierten Geschwindigkeit der Eckabstand angepasst werden darf. D.h. je nach Sollgeschwindigkeit darf die Sollkontur geändert werden.

q keine kinematischen/ kartesischen Transformationen aktiv sind, da aufgrund des Rechenaufwands die Abschätzungen ohne Transformation gemacht werden.

Die Parametrierung für Überschleifen 1. Art erfolgt mit:

#CONTOUR MODE [ AUTO_DEV [PATH_DEV<expr>] [RELEVANT_PATH<expr>]

[RELEVANT_TRACK<expr>]
[TRACK_DEV<expr>]
[REMAIN_PART<expr>]

[<action>] [CHECK_JERK <expr> ] [ MAX_ANGLE <expr> ] [ CONST_VEL <expr> ] ]

AUTO_DEV Überschleifen mit maximaler Eckabweichung

PATH_DEV<expr> Maximale Abweichung von der programmierten Kontur in mm

Defaultwert: 1 mm

RELEVANT_PATH<expr> Minimale Bahnlänge relevanter Nachsätze in mm

Defaultwert: 0 mm

RELEVANT_TRACK<expr> Mindestweg der Mitschlepachsen für relevanter Nachsätze in mm

Defaultwert: 0 mm

TRACK_DEV<expr> Maximale Abweichung der Mitschleppachsen in mm

Defaultwert: 0 mm

REMAIN_PART<expr> Verbleibender Anteil in Prozent [0; 100] des Originalsatzes

Defaultwert: 0 %

<action> Ausführungszeitpunkt zusätzlicher Aktionen (M/H):

Kennungen | Bedeutung
PRE_ACTION | Aktionen vor der Überschleifkurve.
INTER_ACTION | Aktionen in der Überschleifkurve (Default).
POST_ACTION | Aktionen nach der Überschleifkurve.

CHECK_JERK<expr> Überwachung des Rucks, hervorgerufen durch die Krümmung des Polynoms (vgl. [1]-41).

Wert | Bedeutung
0 | Ohne Rucküberwachung (Default).
1 | Rucküberwachung basierend auf der geom. Rampenzeit [2]-16. Evtl. wird hierdurch die Bahngeschwindigkeit reduziert.
2 | Rucküberwachung basierend auf den Rampenzeiten [2]-21..24 des nichtlinearen Geschwindigkeitsprofils.

MAX_ANGLE<expr> Maximaler Konturknickwinkel in Grad für Übergänge zwischen zwei Linearsätzen, bis zu dem überschliffen wird. Falls ein Zirkularsatz am Übergang beteiligt ist, erfolgt keine Auswertung des Knickwinkels.

Defaultwert: 0° (d.h. gesamte Kontur wird überschliffen)

CONST_VEL<expr> Konstante Bahngeschwindigkeit im Überschleifbereich.

Programmierbeispiel

Abbildung 4-38: Automatisches Überschleifen 1. Art


Automatisches Überschleifen mit vorgeg. Geschwindigkeit (2. Art)

Bei dieser Überschleifart wird die Überschleifkurve so dimensioniert, daß die Kurve möglichst mit dem angegebenen Prozentwert vb_proz der programmierten Geschwindigkeit des Vorsatzes durchfahren werden kann. Ist z.B. vb_proz=50%, so wird die Überschleifkurve mit der halben im Vorsatz programmierten Geschwindigkeit durchfahren.

Aufgrund der Krümmung der Kontur und der gegebenen maximalen Beschleunigung der Achse kann dennoch der Fall eintreten, dass die gewünschte Geschwindigkeit nicht erreicht wird.

Für die Betrachtung der Geschwindigkeit wird auch hier von einer einfachen kartesischen Maschinenkinematik ausgegangen. D.h. zusätzliche (kartesische / kinematische) Transformationen werden auch hier nicht berücksichtigt (s. Art 1).

Die Parametrierung für Überschleifen 2. Art erfolgt mit:

#CONTOUR MODE [ AUTO_VEL [VEL<expr>] [RELEVANT_PATH<expr>]

[RELEVANT_TRACK<expr>]
[TRACK_DEV<expr>]
[REMAIN_PART<expr>]

[<action>] [CHECK_JERK <expr> ] [ MAX_ANGLE <expr> ] [ CONST_VEL <expr> ] ]

AUTO_VEL Überschleifen mit Geschwindigkeitsvorgabe

VEL<expr> Prozentuale Geschwindigkeit [0; 100]

Defaultwert: 100 %

RELEVANT_PATH<expr> Minimale Bahnlänge relevanter Nachsätze in mm

Defaultwert: 0 mm

RELEVANT_TRACK<expr> Mindestweg der Mitschleppachsen für relevanter Nachsätze in mm

Defaultwert: 0 mm

TRACK_DEV<expr> Maximale Abweichung der Mitschleppachsen in mm

Defaultwert: 0 mm

REMAIN_PART<expr> Verbleibender Anteil in Prozent [0; 100] des Originalsatzes

Defaultwert: 0 %

<action> Ausführungszeitpunkt zusätzlicher Aktionen (M/H):

Kennungen | Bedeutung
PRE_ACTION | Aktionen vor der Überschleifkurve.
INTER_ACTION | Aktionen in der Überschleifkurve (Default).
POST_ACTION | Aktionen nach der Überschleifkurve.

CHECK_JERK<expr> Überwachung des Rucks, hervorgerufen durch die Krümmung des Polynoms (vgl. [1]-41).

Wert | Bedeutung
0 | Ohne Rucküberwachung (Default).
1 | Rucküberwachung basierend auf der geom. Rampenzeit [2]-16. Evtl. wird hierdurch die Bahngeschwindigkeit reduziert.
2 | Rucküberwachung basierend auf den Rampenzeiten [2]-21..24 des nichtlinearen Geschwindigkeitsprofils.

MAX_ANGLE<expr> Maximaler Konturknickwinkel in Grad für Übergänge zwischen zwei Linearsätzen, bis zu dem überschliffen wird. Falls ein Zirkularsatz am Übergang beteiligt ist, erfolgt keine Auswertung des Knickwinkels.

Defaultwert: 0° (d.h. gesamte Kontur wird überschliffen)

CONST_VEL<expr> Konstante Bahngeschwindigkeit im Überschleifbereich.

Programmierbeispiel

Abbildung 4-39: Automatisches Überschleifen 2. Art


Eckabstand-Überschleifen (3.Art)

Falls der Punkt, ab dem die Originalkontur verlassen werden darf, bekannt ist, kann der Anwender die Eckabstände des Vor- und Nachsatzes, um welche die angrenzenden Bewegungssätze verkürzt werden sollen, direkt angeben.

Die Eckenabsände werden so beschränkt, dass die vorgegebenen minimal verbleibende Satzlänge nicht unterschritten wird.

q Werden die Eckabstände a und b identisch angegeben, so wird bei einer Begrenzung eines Eckenabstands auf den minimal verbleibenen Mindestsatzlänge auch der andere Eckabstand symmetrisch begrenzt.

q Werden die Eckabstände a und b verschieden angegeben, wird bei einer Begrenz-ung nur der entsprechend zu grosse Abstand verkleinert. Dies kann bei ungleichen Satzlängen zu einem Ausholen der Kontur führen, was aber evtl. erwünscht ist.

Die Parametrierung gemäß 3.Art erfolgt mit:

        #CONTOUR MODE [
        DIST

        [PRE_DIST<expr>]
[POST_DIST<expr>]
[RELEVANT_PATH<expr>]

[RELEVANT_TRACK<expr>]
[TRACK_DEV<expr>]
[REMAIN_PART<expr>]

[<action>] [CHECK_JERK <expr> ] [ MAX_ANGLE <expr> ] [ CONST_VEL <expr> ] ]

DIST Überschleifen mit Angabe des Eckenabstands

PRE_DIST<expr> Eckabstand in mm, ab dem von der Originalkontur abgewichen wird.

Defaultwert: 1 mm

POST_DIST<expr> Eckabstand in mm, bei dem auf die Originalkontur zurückgekehrt wird.

Defaultwert: 1 mm

RELEVANT_PATH<expr> Minimale Bahnlänge relevanter Nachsätze in mm

Defaultwert: 0 mm

RELEVANT_TRACK<expr> Mindestweg der Mitschlepachsen für relevanter Nachsätze in mm

Defaultwert: 0 mm

TRACK_DEV<expr> Maximale Abweichung der Mitschleppachsen in mm

Defaultwert: 0 mm

REMAIN_PART<expr> Verbleibender Anteil in Prozent [0; 100] des Originalsatzes

Defaultwert: 0 %

<action> Ausführungszeitpunkt zusätzlicher Aktionen (M/H):

Kennungen | Bedeutung
PRE_ACTION | Aktionen vor der Überschleifkurve.
INTER_ACTION | Aktionen in der Überschleifkurve (Default).
POST_ACTION | Aktionen nach der Überschleifkurve.

CHECK_JERK<expr> Überwachung des Rucks, hervorgerufen durch die Krümmung des Polynoms (vgl. [1]-41).

Wert | Bedeutung
0 | Ohne Rucküberwachung (Default).
1 | Rucküberwachung basierend auf der geom. Rampenzeit [2]-16. Evtl. wird hierdurch die Bahngeschwindigkeit reduziert.
2 | Rucküberwachung basierend auf den Rampenzeiten [2]-21..24 des nichtlinearen Geschwindigkeitsprofils.

MAX_ANGLE<expr> Maximaler Konturknickwinkel in Grad für Übergänge zwischen zwei Linearsätzen, bis zu dem überschliffen wird. Falls ein Zirkularsatz am Übergang beteiligt ist, erfolgt keine Auswertung des Knickwinkels.

Defaultwert: 0° (d.h. gesamte Kontur wird überschliffen)

CONST_VEL<expr> Konstante Bahngeschwindigkeit im Überschleifbereich.

Programmierbeispiel

Abbildung 4-40: Eckabstand-Überschleifen


Eckabweichung-Überschleifen (4.Art)

Die Defaultparametrierung der Überschleifart 4 ist auch die Defaultparametrierung des Polynomüberschleifens nach Programmstart!

Die Eckabstände, um welche die angrenzenden Verfahrsätze verkürzt werden, werden nach rein geometrischen Betrachtungen automatisch so bestimmt, dass eine vom Anwender vorgegebene Eckabweichung nicht überschritten wird.

Die Eckabstände werden gemäss der vorgegebenen verbliebenden minimalen Satzlängejeweils begrenzt, wobei beide Abstände symmetrisch begrenzt werden. Die programmierte Bahngeschwindigkeit hat hier auf die Überschleifkontur im Unterschied zur Überschleifart 1 keinen Einfluss.

Die Parametrierung gemäß 4.Art erfolgt mit:

#CONTOUR MODE [ DEV [PATH_DEV<expr>] [RELEVANT_PATH<expr>]

[RELEVANT_TRACK<expr>]
[TRACK_DEV<expr>]
[REMAIN_PART<expr>]

[<action>] [CHECK_JERK <expr> ] [ MAX_ANGLE <expr> ] [ CONST_VEL <expr> ] ]

DEV Überschleifen mit maximaler Eckabweichung

PATH_DEV<expr> Maximale Abweichung von der programmierten Kontur in mm

Defaultwert: 1 mm

RELEVANT_PATH<expr> Minimale Bahnlänge relevanter Nachsätze in mm

Defaultwert: 0 mm

RELEVANT_TRACK<expr> Mindestweg der Mitschlepachsen für relevanter Nachsätze in mm

Defaultwert: 0 mm

TRACK_DEV<expr> Maximale Abweichung der Mitschleppachsen in mm

Defaultwert: 0 mm

REMAIN_PART<expr> Verbleibender Anteil in Prozent [0; 100] des Originalsatzes

Defaultwert: 0 %

<action> Ausführungszeitpunkt zusätzlicher Aktionen (M/H):

Kennungen | Bedeutung
PRE_ACTION | Aktionen vor der Überschleifkurve.
INTER_ACTION | Aktionen in der Überschleifkurve (Default).
POST_ACTION | Aktionen nach der Überschleifkurve.

CHECK_JERK<expr> Überwachung des Rucks, hervorgerufen durch die Krümmung des Polynoms (vgl. [1]-41).

Wert | Bedeutung
0 | Ohne Rucküberwachung (Default).
1 | Rucküberwachung basierend auf der geom. Rampenzeit [2]-16. Evtl. wird hierdurch die Bahngeschwindigkeit reduziert.
2 | Rucküberwachung basierend auf den Rampenzeiten [2]-21..24 des nichtlinearen Geschwindigkeitsprofils.

MAX_ANGLE<expr> Maximaler Konturknickwinkel in Grad für Übergänge zwischen zwei Linearsätzen, bis zu dem überschliffen wird. Falls ein Zirkularsatz am Übergang beteiligt ist, erfolgt keine Auswertung des Knickwinkels.

Defaultwert: 0° (d.h. gesamte Kontur wird überschliffen)

CONST_VEL<expr> Konstante Bahngeschwindigkeit im Überschleifbereich.

Programmierbeispiel

Abbildung 4-41: Eckabweichung-Überschleifen


Zwischenpunkt-Überschleifen (5.Art)

Der Anwender gibt hier sowohl die Eckabstände als auch einen Zwischenpunkt PZ, an den die beiden Polynomkurven angrenzen, vor (Expertenmodus). Mit diesem Verfahren ist es z.B. möglich, durch Vorgabe des Eckabstandes Null die programmierte Kontur beizubehalten und die Dynamik dennoch voll auszunutzen. D.h. die Eckabstände müssen hier nicht unbedingt symmetrisch sein.

Die Parametrierung gemäß 5.Art erfolgt mit:

#CONTOUR MODE [ POS [PRE_DIST<expr>] [POST_DIST<expr>]

[<1.Hauptachsname><expr>] [<2.Hauptachsname><expr>]

[<3.Hauptachsname><expr>]
[<action>]
[CHECK_JERK<expr>]

[ CONST_VEL <expr> ] ]

POS Überschleifen mit Angabe des Zwischenpunktes

PRE_DIST<expr> Eckabstand in mm, ab dem von der Originalkontur abgewichen wird. Die Angabe von 0 mm ist hier möglich.

Defaultwert: 1 mm

POST_DIST<expr> Eckabstand in mm, bei dem auf die Originalkontur zurückgekehrt wird. Die Angabe von 0 mm ist hier möglich.

Defaultwert: 1 mm

<1.Hauptachsname> <expr> Position des Zwischenpunkts in mm in der ersten Hauptachse

<2.Hauptachsname><expr> Position des Zwischenpunkts in mm in der zweiten Hauptachse

<3.Hauptachsname><expr> Position des Zwischenpunkts in mm in der dritten Hauptachse

<action> Ausführungszeitpunkt zusätzlicher Aktionen (M/H):

Kennungen | Bedeutung
PRE_ACTION | Aktionen vor der Überschleifkurve.
INTER_ACTION | Aktionen während der Überschleifkurve (Default).
POST_ACTION | Aktionen nach der Überschleifkurve.

CHECK_JERK<expr> Überwachung des Rucks, hervorgerufen durch die Krümmung des Polynoms (vgl. [1]-41).

Wert | Bedeutung
0 | Ohne Rucküberwachung (Default).
1 | Rucküberwachung basierend auf der geom. Rampenzeit [2]-16. Evtl. wird hierdurch die Bahngeschwindigkeit reduziert.
2 | Rucküberwachung basierend auf den Rampenzeiten [2]-21..24 des nichtlinearen Geschwindigkeitsprofils.

CONST_VEL<expr> Konstante Bahngeschwindigkeit im Überschleifbereich.

Programmierbeispiel

Abbildung 4-42: Zwischenpunkt-Überschleifen


Dynamisch optimiertes Überschleifen (6.Art)

Die Überschleifarten 1-5 legen die Überschleifkurve durch ein richtungs- und krümmungsstetige Verbindung zweier Bewegungssätze fest. Diese Überschleifkurve führt auf die Achsen bezogen evtl. zu einer Schwankung der Beschleunigung.

Bei der achsbezogenen Betrachtung der möglichen Dynamikdaten (Beschleunigung, Ruck) wird die Überschleifkurve unter einer möglichst gleichmäßigen Beschleunigung (ruckminimal) der beteiligten Achsen bestimmt. Unter Ausnutzung einer maximalen Beschleunigung der Achsen wird zusätzlich die Zeitdauer des Überschleifvorgangs reduziert.

Die Parametrierung gemäß 6.Art erfolgt mit:

#CONTOUR MODE [ DIST_SOFT [PATH_DIST<expr>] [TRACK_DIST<expr>]

[ACC_MAX<expr>]
[ACC_MIN<expr>]
[RAMP_TIME<expr>]

[DIST_WEIGTH<expr>] ]

DIST_SOFT Dynamisch optimiertes Überschleifen

PATH_DIST<expr> Eckabstand zum Vor- und Nachsatz (symmetrisch) in mm bzw. Grad, ab dem von der Originalkontur abgewichen werden darf. Die Angabe bezieht sich auf den Fahrweg der Vorschubachsen.

Defaultwert : 1 mm bzw. 1 °

Überwachung aus: -1 mm bzw. -1 Grad

TRACK_DIST<expr> Eckabstand zum Vor- und Nachsatz in mm bzw. Grad, ab dem die Nicht-Vorschubachsen (Mitschleppachsen) von der Originalkontur abweichen dürfen.

Defaultwert: Wert wird automatisch von PATH_DIST übernommen, solange dieser noch nicht (seit Programmstart) explizit angegeben wurde.

Überwachung aus: -1 mm bzw. -1 Grad

ACC_MAX<expr> Prozentualer Anteil [0; 100] der maximalen Achsbeschleunigung (Maschinendatum), die durch den Konturverlauf genutzt werden darf.

Defaultwert : 100 %

ACC_MIN<expr> Prozentualer Anteil [0; 100] der maximalen Achsbeschleunigung (Maschinendatum), die durch den Konturverlauf genutzt werden soll. Wird hierbei der vorgegebene Eckenabstand (s. SYM_SIST) nicht eingehalten, so wird die Beschleunigung bis zu Maximalwert (ACC_MAX) erhöht.

Defaultwert : 50 %

RAMP_TIME<expr> Prozentuale Gewichtung der Rampenzeit [ 0; 10000].

Defaultwert : 100 %

DIST_WEIGHT<expr> Prozentuale Gewichtung der Eckenabstände im Verhältnis zum vorhergehenden / nachfolgenden Satz [ 0; 100].

Defaultwert : 0 %

Einschränkungen:

q Wird beim Überschleifen ein Zirkularsatz verwendet, so wird die Überschleifkurve auf die konventionelle Art berechnet (ohne dynamische Optimierung, gemäß 3.Art).

q Für die Berechnung wird nur eine Rampenzeit (Maximalwert der vier individuellen Rampenzeiten) verwendet.

q Keine Behandlung von kinematischer Transformationen. In diesem Fall wird ebenso auf die konventionelle Art umgeschaltet (gemäß 3.Art).

Die Gewichtung der Eckenabstände in Abhängigkeit des vorhergehenden bzw. nachfolgenden Satzes durch den Parameter DIST_WEIGHT ergibt in vielen Fällen eine bessere Ausnutzung der zur Verfügung stehenden Satzlänge.

Beim Verfahren des achsbezogenen Überschleifens sind die Eckenabstände des Vor- und Nachsatzes grundsätzlich gleich (symmetrisch). Werden die maximalen Eckenabstände zusätzlich auf den halben Satzfahrweg begrenzt, so ergibt sich bei längeren Fahrwegen aufgrund eines vorhergehenden/ nachfolgenden kurzen Fahrwegs ein geringerer Verschleifbereich und somit eine kleinere Überschleifgeschwindigkeit.

Abbildung 4- 43 : Maximaler Eckenabstand des Satzes N20 unabhängig von den Satzlängen von N10 und N20 (DIST_WEIGHT = 0 %)

Werden die Länge des vorhergehenden und nachfolgenden Satzes für die Ermittlung der maximalen Eckenabstände mit berücksichtigt, so kann der Verschleifbereich erhöht werden.

Abbildung 4- 44 : Maximaler Eckenabstand des Satzes N20 unterteilt im Verhältnis der Satzlängen von N10 und N30 (DIST_WEIGHT = 100 %)

Programmierbeispiel

Vergleich des Überschleifens einer 90° Grad-Ecke mit den Methoden:

q Explizites Einfügen eines Radius (G302):

P1 = 150 (Eckenabstand

P4 = 2000 (Anfahrposition

N10 X-P4 YP4

N20 X0 Y0

N25 G302 IP1

N30 XP4 YP4

N40 M30

q Konventionelles Überschleifen mit Angabe des Eckenabstandes (DIST):

#SET SLOPE PROFIL[1]

P1 = 150 (Eckenabstand

P4 = 2000 (Anfahrposition

#CONTOUR MODE [DIST PRE_DIST=P1 POST_DIST=P1]

N10 X-P4 YP4

N20 X0 Y0 G61

N30 XP4 YP4

N40 M30

q Dynamisch optimiertes Überschleifen (DIST_SOFT):

#SET SLOPE PROFIL[1]

P1 = 150 (Eckenabstand

P4 = 2000 (Anfahrposition

#CONTOUR MODE [DIST_SOFT PATH_DIST=P1 ACC_MAX=100 ACC_MIN=50 RAMP_TIME=100]

N10 X-P4 YP4

N20 X0 Y0 G61

N30 XP4 YP4

N40 M30

Vergleich der drei Arten in der Position der Überschleifkurve:


Beispiele

In nachfolgenden Beispielen soll der Einfluss der unterschiedlichen Ausgabe von M-Funktionen während des Überschleifens aufgezeigt werden.

Programmierbeispiel

N907090 X0 Y0

G91 G01 F6000

N01 #CONTOUR MODE [ DEV PATH_DEV=10 POST_ACTION]

N10 X100 G61 M25 (MVS_SNS)

N20 Y100 F3000

N30 X100 G61 F6000

N40 G04 X2

N50 Y100

N00 X0 Y0

N60 X100 G61

N70 Y100 M26 (MVS_SVS)

N907091 G04 X1

N23 M30

Ausgabe vor der Überschleifkurve:

N01 #CONTOUR MODE [ DEV PATH_DEV=10.0 PRE_ACTION ]

Ausgabe innerhalb der Überschleifkurve:

Textfeld: N40 N01 #CONTOUR MODE [ DEV PATH_DEV=10.0 INTER_ACTION ]

Ausgabe nach der Überschleifkurve:

N01 #CONTOUR MODE [ DEV PATH_DEV=10.0 POST_ACTION ]

Wird die Quittierung der M25 von Satz N10 zeitlich verzögert, so wird zunächst nach der Überschleifkurve angehalten und auf die SPS Quittierung gewartet.

Programmierbeispiel

Ändern des Grenzwinkels während des Überschleifens:

#CONTOUR MODE [DEV PATH_DEV=0.50 RELEVANT_PATH=0.1 TRACK_DEV=2 RELEVANT_TRACK=0.2]

F10000

G261

N5 #CONTOUR MODE [MAX_ANGLE=3]

N10 G01 X0 Y0 Z0 G61

N15 #CONTOUR MODE [MAX_ANGLE=4]

N20 G01 X100 Y0 Z0

N25 #CONTOUR MODE [MAX_ANGLE=5]

N30 G01 X100 Y100 Z0

N35 #CONTOUR MODE [MAX_ANGLE=6]

N40 G01 X0 Y0 Z0 G61

G260

Ergebnis:

Überschleifen des Satzes N<i> findet immer mit dem Grenzwinkel des vorhergehenden Satzes N<i-5> statt.

Programmierbeispiel

Variation der Konturwinkel bei konstantem Grenzwinkel:

#CONTOUR MODE [DEV PATH_DEV=0.50 RELEVANT_PATH=0.1 TRACK_DEV=2 RELEVANT_TRACK=0.2]

#CONTOUR MODE [RELEVANT_TRACK=0.3]

P100 = 50

F10000

#CONTOUR MODE [MAX_ANGLE=73]

N10 G01 X-P100 Y0 Z0 C0 A0

$FOR P123 = 0, 90, 7.5

N2 G01 X0 Y0 Z0 C0 A0 G61

P1 = COS[P123]*P100

P2 = SIN[P123]*P100

NP123 XP1 YP2

N100 G01 X-P100 Y0 Z0 C0 A0

$ENDFOR

$FOR P123 = 270, 370, 7.5

N120 G01 X0 Y0 Z0 C0 A0 G61

P1 = COS[P123]*P100

P2 = SIN[P123]*P100

NP123 XP1 YP2

N400 G01 X-P100 Y0 Z0 C0 A0

$ENDFOR

M30


Überblick der Verfahren

Die folgende Tabelle gibt nochmals einen Überblick über die zur Verfügung stehenden Verfahren und die Art der Bestimmung der Überschleifparameter.

Überschleif-Parameter | Auto-matisches Über schleifen 1 | Auto-matisches Überschleifen 2 | Abstandüberschleifen | Eckabweichung- über-schleifen | Zwischen-punkt- über-schleifen | Dynamisches Überschleifen
Vorabstand/ Nachabstand | auto | auto | durch Anwender | auto | durch Anwender | durch Anwender
Eckabweichung | durch Anwender | nicht parametrierbar | nicht parametrierbar | durch Anwender | nicht parametrierbar | nicht parametrierbar
Zwischenpunkt | auto | auto | auto | auto | durch Anwender | auto

Über nachfolgendes Diagramm kann für einen Anwendungsfall die passende Überschleifart gefunden werden, wobei das Überschleifen immer ein Kompromiss zwischen Abweichung von der Kontur und Fahren ohne Geschwindigkeitsverringerung (krümmungsstetig) darstellt.


Anmerkungen

q Werden nach Programmierung von G61 bzw. G261 (Überschleifen am Satzende) Achsen abgegeben oder geholt, so kann der Überschleifvorgang nicht ausgeführt werden.

Programmierbeispiel

N10 G01 X100 Y0 Z0 F1000

N20 G01 X50 Y50 G61

N30 #PUT AX [Z] ( à Überschleifvorgang wird nicht ausgeführt )

N40 G01 X100

N50 M30

q Der Kurvenverlauf beim Zwischenpunkt-Überschleifen hängt von der Wahl des Zwischenpunkts ab. Auch folgender Kurvenverlauf ist möglich:


Eckenverzögerung

Im Bereich von Innenecken steigt beim Fräsen in Abhängigkeit von der Satzübergangsgeometrie das Zerspanvolumen Vz und die damit zusammenhängende notwendige Spindelleistung an, da das Werkzeug bereits Material der Anschlußkontur abträgt (Abbildung 4-45).

Wird grundsätzlich an der Leistungsgrenze der Spindel gearbeitet, muß die Vorschubgeschwindigkeit im Eckenbereich so reduziert werden, daß die Spindelleistung auch an Innenecken ausreicht. Zur Einhaltung der Leistungsgrenze der Spindel muß daher die Möglichkeit bestehen, aus dem NC-Programm heraus einen Punkt auf der Bahn zu definieren, ab dem die Geschwindigkeit reduziert werden soll. Für diese Eckenverzögerung steht je ein NC-Befehl zur Parametrierung, zur Aktivierung und zur Deaktivierung zur Verfügung.

Abbildung 4-45: Änderung des Zerspanvolumens Vz über der Zeit bei einer Innenecke von 90° bei konstantem Vorschub

Mehr:

button Parametrierung der Eckenverzögerung

button An- und Abwahl der Eckenverzögerung (G12/G13)


Parametrierung der Eckenverzögerung

#SET CORNER PARAM [ <expr_1>, <expr_2>, <expr_3> ] (modal)

<expr_1> Eckenabstand in mm

<expr_2> Einheit des Eckenvorschubes (<expr_3>)

0: Gemäß F-Wort

1: Prozent [%]

<expr_3> Eckenvorschub

Durch die Vorgabe eines Eckenabstandes kann der Punkt im Raum errechnet werden, ab welchem der Bahnvorschub linear über dem Weg reduziert werden soll. Hierbei gilt folgende Festlegung:

Der zu programmierende Eckenabstand bezieht sich auf die korrigierte Bahn, nicht auf die ursprünglich programmierten Zielpunkte.

Der #SET-Befehl muß jeweils in einer eigenen NC-Zeile stehen, d.h. weitere NC-Befehle im selben Satz sind nicht erlaubt.

Die Eckenverzögerung ist nur in Verbindung mit dem linearen Slope [1] -26 wirksam.

Abbildung 4-46: Darstellung des Vorschubes an einer runden Innenkontur


An- und Abwahl der Eckenverzögerung (G12/G13)

G12 Deaktivierung der Eckenverzögerung (modal, Grundzustand)

G13 Aktivierung der Eckenverzögerung (modal)

Bei Programmierung von G13 ohne vorherige Festlegung der Eckenverzögerungs-Parameter erfolgt die Ausgabe einer Fehlermeldung.

Bei gleichzeitiger Programmierung von G12 und G13 in einem NC-Satz erfolgt die Ausgabe einer Fehlermeldung.

Diese G-Funktionen sind haltend wirksam. Der Grundzustand nach Systemhochlauf ist Eckenverzögerung Inaktiv (G12).

Bei angewählter Eckenverzögerung (G13) und Programmende (M30) wird keine Fehlermeldung ausgegeben, allerdings wird vor Programmstart die Grundstellung G12 angewählt.

Bei einem Eckenabstand von 0 wird eine Fehlermeldung ausgegeben.

Programmierbeispiel

N010 G01 G90 X10 Y10 F1000

N015 #SET CORNER PARAM[10, 1, 50] (Eckenabstand 10mm, Eckenvorschub 50%)

N020 G13 (Aktivierung)

N030 X50 (Eckenverzögerung aktiv)

N040 Y50 (Eckenverzögerung aktiv)

N050 G12 (Abwahl)

N060 X30 Y30

N050 M30

Es ist zu beachten, daß die Eckenverzögerung erst im Satz N030 aktiviert wird. Der Satzübergang N010/N030 ist von der Eckenverzögerung nicht betroffen.

Ebenso ist die Eckenverzögerung im Satz N040 noch aktiv, da nicht abgewählt worden ist.

Die Abwahl der Eckenverzögerung muß vor bzw. im NC-Satz programmiert sein, in dem die Eckenverzögerung nicht mehr aktiv sein soll.

812_end


Werkzeugradiuskorrektur (G40/G41/G42)

G40 Abwahl der Werkzeugradiuskorrektur (WRK) (modal, Grundzustand)

G41 Anwahl der WRK links der Kontur (modal)

G42 Anwahl der WRK rechts der Kontur (modal)

Die Werkzeugradiuskorrektur wirkt in der mit G17, G18 oder G19 angewählten Ebene


An-/Abwahlverfahren Werkzeugradiuskorrektur (G138/G139/G237/ G238/G239/G05)

Für die An- und Abwahl der Werkzeugradiuskorrektur stehen fünf Möglichkeiten zur Verfügung:

G138 Direkte An-/Abwahl der WRK (modal)

G139 Indirekte An-/Abwahl der WRK (modal, Grundzustand)

G237 Lotrechte An-/Abwahl der WRK (modal)

G238 Inneneckanwahl der WRK (modal)

G239 Direkte An-/Abwahl der WRK ohne Satz (modal)

G05 Tangentiale An-/Abwahl der WRK (nicht modal)


Übergangsauswahl Werkzeugradiuskorrektur (G25/G26)

G25 Geradenübergang (modal, Grundzustand)

G26 Kreisübergänge (modal)

Bei angewählter Werkzeugradiuskorrektur müssen Außenecken umfahren werden. Dazu fügt die Werkzeugradiuskorrektur sogenannte Übergangssätze ein. Mit G25 und G26 kann zwischen dem Einfügen von Linearsätzen und dem Einfügen von Zirkularsätzen ausgewählt werden.


Vorschubanpassung Werkzeugradiuskorrektur (G10/G11)

G10 Vorschub konstant (modal, Grundstellung)

G11 Vorschub angepaßt (modal)

Bei wirksamem G11 werden von der Werkzeugradiuskorrektur eingefügte Übergangssätze mit höherer Geschwindigkeit abgefahren. Außerdem wirkt dann bei Zirkularsätzen der programmierte Vorschub im Werkzeug-Eingriffspunkt (Abbildung 4-47).

Abbildung 4-47: Anpassung des Vorschubes bei korrigierter Kreisinterpolation


An-/Abwahl der WRK-Konturausblendung (G140/G141)

G140 Abwahl der Konturausblendung (modal, Grundzustand)

G141 Anwahl der Konturausblendung (modal)

Wird vor der Endbearbeitung ein Schruppvorgang mit einem Werkzeug mit großem Durchmesser durchgeführt, so besteht die Gefahr der Konturverletzung, wenn bei einzelnen Konturelementen die Abmessungen kleiner als die der Werkzeuggeometrie sind. Um zusammengehörige Konturobjekte fahren zu können, besteht durch G140/G141 bei aktiver WRK die Möglichkeit, bei erkannten Verletzungen die entsprechenden Konturelemente auszublenden und die darauf folgende Kontur so zu behandeln, daß diese nicht beschädigt wird.

Es wird keine Fehlermeldung ausgegeben wenn bei Programmende die Konturausblendung noch angewählt ist. Bei Programmstart wird die Grundstellung G140 angewählt.

Bei Abwahl der WRK durch G40 bleibt die Konturausblendung weiterhin angewählt und wird bei erneuter Anwahl der WRK wieder aktiv.


Nullpunktverschiebungen (G53/G54/...G59)

Im folgenden wird Nullpunktverschiebung mit NPV abgekürzt.

G53 Abwahl der NPV* (modal, Grundzustand)*

G54 Anwahl 1. NPV (modal)

G55 Anwahl 2. NPV (modal)

G56 Anwahl 3. NPV (modal)

G57 Anwahl 4. NPV (modal)

G58 Anwahl 5. NPV (modal)

G59 Anwahl 6. NPV (modal)

 Die Bedeutung des G53-Datensatzes kann gesteuert werden [3]-1. Abhängig von der Parametrierung bedeutet G53 entweder die Abwahl der NPV oder die Nutzung des G53-Datensatzes als zusätzliche NPV.

Die Defaulteinstellung der automatisch im Grundzustand aktiven NPV ist ebenfalls parametrierbar [3]-2.

Mit G54 ... G59 wird die entsprechende Nullpunktverschiebung aus der Nullpunktverschiebungstabelle gültig. Die Nullpunktverschiebung ist bereits in dem Satz gültig, in dem G53, G54, ... steht. Es finden jedoch ohne Koordinatenangaben keine Verfahrbewegungen statt!

In der Grundstellung (G53) ist keine Nullpunktskorrektur wirksam.

Desweiteren gilt für die Anwahl der Nullpunktverschiebung im G91-Modus folgender Sachverhalt:

Die Programmierung von...

N10 G54 X0 G91

...ruft keine Bewegung der X-Achse hervor,da es sich hierbei um eine Bewegung relativ um Null handelt.

Eine NPV wirkt sich also erst dann aus, wenn die nächste Verfahrinformation absolut programmiert wird (G90)!

812_start

Mehr:

button Zusätzliche Nullpunktverschiebungs-Variablen

button Addition/ Subtraktion von Verschiebungen

button Zugriff auf die aktuelle Nullpunktverschiebung

button Default-Nullpunktverschiebung

button Bildung von Nullpunktverschiebungsgruppen

button Erweiterte Nullpunktverschiebung (G159)

button Nullpunktverschiebungen achsspezifisch freigeben/verriegeln (G160)


Zusätzliche Nullpunktverschiebungs-Variablen

Variable | Bedeutung | lesen | schreiben
V.G.NP[j].ALL | Ansprechen aller Achsen einer Nullpunktverschiebung | ja | ja
V.G.NP_AKT.V[i] | Aktuelle (momentan aktive) Nullpunktverschiebung einer Achse | ja | ja
V.G.NP_AKT.ALL | Ansprechen der aktuellen (momentan aktiven) Nullpunktverschiebungen aller Achsen | ja | ja
V.G.NP_DEFAULT | Im Grundzustand wirksame Nullpunktverschiebung | ja | ja

Der schreibende Zugriff über die Variablen V.G.NP[j] und V.G.NP_DEFAULT ist bis zur nächsten Listeninterpretation (expliziter Auftrag oder Hochlauf) wirksam. Hingegen wirken schreibende Zugriffe über V.G.NP_AKT nur auf die momentan im Speicher des Decoders befindliche Nullpunktverschiebung. Bei wiederholter Anwahl der zuvor über V.G.NP_AKT beschriebenen NPV werden wieder die ursprünglichen Werte aus der Liste wirksam. Soll der Schreibzugriff auf V.G.NP_AKT über die Abwahl hinaus gehalten werden, so muß der aktuelle Datensatz durch Zuweisung über V.G.NP[j].ALL in der Liste abgelegt werden.

Programmierbeispiel

Sichern der momentan aktiven Nullpunktverschiebungswerte:

V.G.NP[12].ALL=V.G.NP_AKT.ALL


Addition/ Subtraktion von Verschiebungen

Die Neubelegung kompletter NPV-Datensätze durch additive Zuweisung bereits vorhandener NPV wird über die Variable V.G.NP[j].ALL ermöglicht. Dabei werden immer die Verschiebungen aller Achsen verrechnet. Erlaubt sind bei der NPV-Zuweisung die Schreibweisen ` += `, ` -= ` und `=`.

Programmierbeispiel 1

G54 (NPV1) wird die Kombination von G55 (NPV2) und G57 (NPV4) zugewiesen:

N10 V.G.NP[1].ALL = V.G.NP[2].ALL + V.G.NP[4].ALL

Programmierbeispiel 2

Die gleiche Operation, jedoch unter zusätzlicher Berücksichtigung von G54:

N10 V.G.NP[1].ALL = V.G.NP[1].ALL + V.G.NP[2].ALL + V.G.NP[4].ALL

oder

N10 V.G.NP[1].ALL += V.G.NP[2].ALL + V.G.NP[4].ALL

Die Verknüpfung von V.G.NP[j].ALL-Variablen mit achsspezifischen V.G.NP[j].V[i]-Variablen oder Konstanten innerhalb einer Zuweisung ist nicht möglich!

Programmierbeispiel

G54 (NPV1) definiert sich durch die Kombination von G55 (NPV2), der X-Verschiebung von G57 (NPV4) und einem Korrekturwert:

FALSCH:

N10 V.G.NP[1].ALL = V.G.NP[2].ALL + V.G.NP[4].V.X + 100

RICHTIG:

Die Zuweisung muß in zwei Schritten erfolgen:

N10 V.G.NP[1].ALL = V.G.NP[2].ALL

N20 V.G.NP[1].V.X = V.G.NP[4].V.X + 100


Zugriff auf die aktuelle Nullpunktverschiebung

Über die Variable V.G.NP_AKT.V[i] erfolgt der Zugriff auf die aktuell aktive NPV im Decoder. Der Bediener muß dabei nicht wissen, welche NPV (d.h. welcher Index) momentan angewählt ist.

Programmierbeispiel

Die aktuelle NPV der X-Achse soll den Wert 200 betragen.

N10 V.G.NP_AKT.V.X = 200

Die aktuelle NPV soll in allen Achsen um die Verschiebungswerte aus G55 (NPV2) erweitert werden.

N10 V.G.NP_AKT.ALL = V.G.NP_AKT.ALL + V.G.NP[2].ALL

oder

N10 V.G.NP_AKT.ALL += V.G.NP[2].ALL

Die Änderung der aktuellen NPV ist nicht programmübergreifend. Durch eine weitere Zuweisung hat der Bediener jedoch die Möglichkeit, seine aktuelle NPV auch in anderen Programmen zu nutzen.

Programmierbeispiel

Die aktuelle NPV soll für spätere Verwendungen in anderen Programmen unter G54 (NPV1) gerettet werden.

N10 V.G.NP[1].ALL = V.G.NP_AKT.ALL


Default-Nullpunktverschiebung

Die nach Programmstart aktive NPV ist parametrierbar [3]-2.

Im NC-Programm hat der Bediener die Möglichkeit, über die Variable V.G.NP_DEFAULT auf den Defaultindex zuzugreifen. Die Änderung gilt programmübergreifend.

Programmierbeispiel

Ab dieser Programmzeile soll G55 (NPV2) die neue Default-NPV sein, d.h. beim folgendem Programmstart ist automatisch G55 aktiv.

:

N100 V.G.NP_DEFAULT = 2

:


Bildung von Nullpunktverschiebungsgruppen

Eine Nullpunktverschiebungsgruppe (NPVG) definiert die Bildungsvorschrift für eine NPV, d.h. sie beschreibt, aus welchen Komponenten sich ein bestimmter NPV-Datensatz zusammensetzt. Die Definition einer NPVG erfolgt im NC-Programm oder durch Vorbelegung im Kanalparametersatz [1]-4 in Verbindung mit einem Symbolstring. Die Verwendung von Symbolstrings ist in Kapitel 15  Symbolische Zeichenketten beschrieben. Um eine NPVG zu aktivieren sind prinzipiell drei Schritte notwendig:

Programmierbeispiel

1. Schritt:

Definition einer NPVG im NC-Programm z.B. unter dem Symbolstring VERSCH_1:

N10 " VERSCH_1 " = " V.G.NP[1].ALL = V.G.NP[2].ALL + V.G.NP[4].ALL "

oder im Kanalparametersatz [1] -4:

makro_def[0].symbol VERSCH_1

makro_def[0].nc_code V.G.NP[1].ALL = V.G.NP[2].ALL + V.G.NP[4].ALL

2. Schritt:

Bildung der NPV (Neubelegung des NPV1-Datensatzes):

N20 " VERSCH_1 "

3. Schritt:

Anwahl der NPV (in diesem Beispiel NPV1, d.h.G54):

N30 G54

812_end


Erweiterte Nullpunktverschiebung (G159)

G159 = <index> (modal)

G159 Erweiterte Nullpunktverschiebung

<index> Listenindex des Nullpunktdatensatzes

Zugriff auf zusätzliche NPV-Datensätze [3]. Der Zugriff auf die G53...G59-Datensätze ist ebenfalls möglich. Die maximale Anzahl der erweiterten NPV ist parametrierbar [6]-6.12.

Programmierbeispiel

G159 = 0 entspricht G53

G159 = 1 entspricht G54

G159 = 2 entspricht G55

G159 = 3 entspricht G56

G159 = 4 entspricht G57

G159 = 5 entspricht G58

G159 = 6 entspricht G59

G159 = 7 Datensatz mit Listenindex 7

:

G159 = 10 Datensatz mit Listenindex 10

:


Nullpunktverschiebungen achsspezifisch freigeben/verriegeln (G160)

G160 = <index> <Achsname><flag> (modal)

G160 Achspezifische Nullpunktverschiebung

<index> Listenindex des Nullpunktdatensatzes

<Achsname><flag> Achse mit Gültigkennung ihrer Nullpunktverschiebung

Kennung | Bedeutung
0 | Nullpunktverschiebung der Achse wird verrechnet.
1 | Nullpunktverschiebung der Achse wird nicht verrechnet.

In jedem Nullpunktdatensatz <index> kann vorab durch Parametrierung [3]-3 festgelegt werden, für welche Achsen <Achsname> der Versatz eingerechnet bzw. nicht eingerechnet werden soll, d.h. einzelne Achsversätze können gezielt verriegelt bzw. freigeschaltet werden.

Diese achsspezifische Gültigkeit einer Nullpunktverschiebung kann im NC-Programm mit G160 verändert werden.

Programmierbeispiel

Vor der Anwahl von G55 (Nullpunktdatensatz mit Index 2) werden die Versätze in der X- und der Z-Achse verriegelt und die von der Y-Achse freigegeben.

:

N10 G160 = 2 X1 Y0 Z1

N20 G55

:

Im nächsten Verfahrsatz werden somit nur die Achsversätze von G55 in die Bewegung eingerechnet, die nicht verriegelt sind (Y-Achse).


Mittelpunktsangabe bei Kreisdefinition (G161/G162)

G161 Kreismittelpunkt absolut (modal)

G162 Kreismittelpunkt relativ (modal, Grundzustand)

Bei wirksamem G162 wird der Mittelpunkt über I, J und K relativ zum Kreisstartpunkt definiert. Bei wirksamem G161 sind I, J und K absolute Angaben im Koordinatensystem des Programmierers.


Radiusprogrammierung (R, G163)

Die Radiusprogrammierung wird erwartet, wenn kein Kreismittelpunkt (mit I, J und/oder K) angegeben wird. Der Wert nach R wird als Radius interpretiert und in den Zeilen mit Kreisprogrammierung automatisch verwendet. Somit wirkt die Radiusangabe selbsthaltend und es kann bei mehreren kreisförmigen Verfahrbewegungen mit gleichem Radius auf die wiederholte Angabe des Radius verzichtet werden.

Der maximal zulässige Kreisradius beträgt 109 mm. Der Endpunkt des Kreisbogens darf jedoch den maximal zulässigen Verfahrbereich der Achsen von +- 2,14*105 mm nicht überschreiten.

Bei positivem Radiuswert wird ein kürzestmöglicher Kreis, bei negativem Radiuswert der größtmögliche Kreis bestimmt (siehe Bild unten).

Bei indizierter Radiusprogrammierung (Voraussetzung hierfür ist, daß das R-Wort nicht für die Parameterprogrammierung verwendet wird, Kap.9  Parameter und Parameterrechnung) ist als Index nur 1 möglich.

Wird die indizierte Radiusprogrammierung auf der Zuweisungsseite verwendet, so darf der Index nicht als mathematischer Ausdruck programmiert werden.

Programmierbeispiel

1.) N10 P2 = 1 3.) N10 R1 = 5 P2 = 1

zulässig: N20 RP2 = 5 unzulässig: N20 P3 = RP2

2.) N10 R1 = 5

zulässig: N20 P2 = R1

Diese Beispiele ergeben jeweils Halbkreise mit Radius 50.

1.)

N10 G90 G01 X0 Y0 F500

N20 G02 X100 R50

N30 G03 X200 R50

2.)

N10 G90 G01 X0 Y0 F500

N20 G02 R=50 (hier noch keine Bewegung)

N30 X100 (Verfahrsatz)

3.)

N10 G90 G01 X0 Y0 F500

N20 R1=50

N30 G02 X100

N40 G03 X200

4.)

N10 G90 G01 X0 Y0 F500

N20 G02 X100 R1=50

N30 G03 X200

Folgende Programmierung ergibt eine Fehlermeldung, da R1 als Radius mit dem Wert 1 interpretiert wird.

N10 G90 G01 X0 Y0 F500

N20 R1=50

N30 G02 X100 R1

Alternativ zur Kreisdefinition mit R"Radiuswert" bzw. R1="Radiuswert" kann eine Kreisradiusvorgabe auch mit folgendem G-Befehl erfolgen:

G163 = <Radius> (modal)

G163 Kreisradiusvorgabe

<Radius> Kreisradiuswert

Die Kreisdefinition über den Radius ist bei angewählter Kreisinterpolation bis zur Neudefinition oder bis zur Abwahl über eine I- und/oder J- und/oder K-Angabe gültig.

Programmierbeispiel

(N10: Bewegung zum Ursprung)

(N20: Halbkreis im Uhrzeigersinn mit Zielwert X100 und unter Vorgabe)
(des Kreisradius durch G163 (Radiusangabe wirkt selbsthaltend))

(N30: Halbkreis gegen den Uhrzeigersinn mit Zielwert X200 und Radius,)
(der in N20 festgelegt wurde und haltend wirksam ist)

%Radiusprogrammierung_G163

N10 G90 G01 X0 Y0 F1000

N20 G02 G163=50 X100

N30 G03 X200

N40 M30

Fallen Start- und Endpunkt des mit "R", "R1" oder "G163" programmierten Kreises zusammen, so wird eine Fehlermeldung ausgegeben. Soll also ein Vollkreis gefahren werden, so muß dieser mit I/J/K programmiert werden.


Mittelpunktskorrektursteuerung (G164/G165)

G164 Mittelpunktskorrektur aus (modal)

G165 Mittelpunktskorrektur ein (modal, Grundzustand)

Bei wirksamem G165 wird ein über I-, J- und K-Angabe programmierter Kreis so korrigiert, daß bei festgelegter Kreisrichtung (G02/G03), festgelegtem Startpunkt (Endpunkt des vorhergehenden Satzes) und festgelegtem Endpunkt (Koordinatenangabe im Kreissatz) ein Kreisbogen interpoliert werden kann. Eventuell wird dabei der mit I, J und K programmierte Mittelpunkt verschoben! Diese Verschiebung ist um so geringer, je exakter der genaue Mittelpunkt angegeben wurde.

Für die Abweichung von programmiertem zu korrigiertem Mittelpunkt werden zwei Grenzwerte [1]-5/-6 überwacht, bei deren Überschreitung eine Fehlermeldung abgesetzt wird:

mittelpkt_diff: Zulässige Abweichung in 10-4 mm

mittelpkt_faktor: Prozentuale Abweichung in 0,1 %

Es wird überprüft, ob die Mittelpunktverschiebung ∆m größer ist, als die absolute Größe "mittelpkt_diff"

∆m > mittelpkt_diff ?

und, ob die Mittelpunktverschiebung ∆m größer ist, als das Produkt von "mittelpkt_faktor/1000" und korrigiertem Radius "radius"

∆m > mittelpkt_faktor/1000 * radius ?

Die obere Grenze ist für ∆m also vom berechneten Radius linear abhängig. Es ergibt sich der in Abbildung 4-48 dargestellte Zusammenhang zwischen Mittelpunktsverschiebung ∆m und berechnetem Radius "radius".

Beispiel:

"mittelpkt_faktor" = 5 bedeutet, daß der Abstand zwischen den programmierten Mittelpunktkoordinaten und den korrigierten Mittelpunktkoordinaten maximal 0,5 % des korrigierten Kreisradius sein darf.

Abbildung 4-48: Zusammenhang zwischen Mittelpunktverschiebung ∆m und berechnetem Radius "radius".

Die programmierten Mittelpunktkoordinaten müssen also in einem Umkreis um den korrigierten Kreismittelpunkt liegen. Der Radius des Umkreises entspricht der zulässigen Mittelpunktverschiebung ∆m, die durch die beiden Parameter "mittelpkt_diff" und "mittelpkt_faktor" eingestellt werden kann (Abbildung 4-49).

Abbildung 4-49: Gebiet der zulässigen programmierten Mittelpunkte

Verfahren zur Korrektur eines programmierten Kreismittelpunktes:

Ein Kreis, der im NC-Programm durch Startpunkt S, Endpunkt E und Mittelpunkt M festgelegt wird, ist geometrisch überbestimmt. Dieses Problem wird dadurch gelöst, daß die Kreismittelpunktskoordinaten und der Kreisradius mit dem im folgenden dargestellten Algorithmus korrigiert werden.

Es werden folgende zweidimensionale Vektoren benötigt:

 absoluter Endvektor (vende)

 relativer (zum Startvektor) Mittelpunktsvektor (rstart)

 absoluter Startvektor (vstart)

Das gewählte Verfahren beruht gemäß Abbildung 4-50 darauf, daß aus den beiden Vektoren, die jeweils vom Mittelpunkt zum Start- bzw. Endpunkt zeigen, betragsmäßig das arithmetische Mittel gebildet wird. Der neue Mittelpunkt ergibt sich dann aus jeweils zwei neu zu bestimmenden Vektoren dieser gemittelten Länge.

Geometrisch bedeutet das, daß der programmierte Mittelpunkt auf einer elliptischen Bahn in den Schnittpunkt der kleinen Ellipsenhalbachse mit der Ellipse verschoben wird. Um aufwendige Fallunterscheidungen (es sind theoretisch zwei Mittelpunkte möglich) zu vermeiden, wurde folgender Algorithmus implementiert:

Durch Bildung des Sehnenvektors des Kreises

v sehne = vende  vstart

und des Ortsvektors zum programmierten Kreismittelpunkt

v mittel = vstart + rstart

erhält man den relativen Vektor vom Kreismittelpunkt zum Kreisendpunkt:

r ende = vende  vmittel

Damit läßt sich der neue Radius bestimmen:

radius = 0.5 * (|rstart| + |rende|)

Durch Projektion (Skalarprodukt) des Startradiusvektors auf den Sehnenvektor erhält man den Punkt, auf dem der Lotvektor zum Mittelpunkt auf der Sehne aufsetzt:

v fusz = (vsehne * rstart) / |vsehne|2

Damit läßt sich nun der Lotvektor zum Mittelpunkt bestimmen:

v lot = rstart  vfusz

Dieser Vektor ist nun auf die Länge der Projektion des neuen Radiusvektors auf den programmierten Sehnenvektor zu normieren:

v lot_neu = vlot * sqrt [radius2  (|0.5 * vsehne|)2] / |vlot|

Der neue relative Radiusvektor ergibt sich nun zu:

r start_neu = 0.5 * vsehne + vlot_neu

Sind zwei Kreise nacheinander abzufahren, wobei der Radius nur für den ersten Kreis programmiert wurde und dabei eine Mittelpunktskorrektur durchgeführt werden muß, so liegt der Berechnung des zweiten Kreises nicht der korrigierte sondern der programmierte Radius des ersten Kreises zugrunde.

Abbildung 4-50: Korrektur des programmierten Kreisradius

Mehr:

button Sonderfunktion Kreisradienausgleich in Verbindung mit G164


Sonderfunktion Kreisradienausgleich in Verbindung mit G164

In bestimmten Situationen kann die Kreismittelpunktskorrekur (G165) zu einer ungünstigen Verschiebung des programmierten Kreismittelpunkts und damit der Lage des Kreises führen. Solche ungünstigen Situationen können auftreten, wenn Kreisstartpunkt und Kreiszielpunkt dicht beieinander liegen und der Kreis fast einem programmierten Vollkreis entspricht. Im nachfolgenden Beispiel ist solch ein Kreis mit Zielpunktangabe mit und ohne Kreismittpunktskorrektur (G165/G164) programmiert. Um den Auflösungsfehler im Postprozessor zu simulieren, ist bei aktiver Kreismittelpunktskorrektur der Kreiszielpunkt um jeweils 0.1μm in x und y Richtung gegenüber dem Startpunkt verschoben programmiert. Der Kreis mit G165 wird um den Startpunkt gedreht und die Position des korrigierten Kreismittelpunktes MK verschiebt sich sehr stark gegenüber dem programmierten Mittelpunkt M.

N10 G00 G90 X0 Y0 Z0

N20 G01 X-50 Y0 F20000

N30 G01 X0

N40 G165 G02 X0.0001 Y0.0001 J200

N50 G01 Y50

M30

N10 G00 X0 Y0 Z0

N20 G01 X-50 Y0 F20000

N30 G01 X0

N40 G164 G02 X0.0 Y0.0 J200

N50 G01 Y50

N60 M30

Abbildung 4- 51 : Kreismittelpunktsverschiebung bei G165

In solchen Fällen kann mit inaktiver Kreismittelpunktskorrektur und Einstellung der Kanalparameter max_radius_diff_circle > 0 und max_proz_radius_diff_circle i. A. ein besseres Ergebnis erzielt werden. Der programmierte Kreismittelpunkt wird durch die Funktion nicht verändert, die Kreisradiendifferenz wird linear über dem Kreiswinkel vom Startradius in den Zielradius überführt.

Wenn die Kreisradienabweichungen in der Grössenordnung der Auflösungsgenauigkeit liegen, sind die Kreisverzerrungen und dynamische Effekte i. A. vernachlässigbar!

Für einen Vollkreis müssen auch hier Kreisstartpunkt und Kreiszielpunkt identisch sein !


Vorsteuerung (G135/G136/G137)

G135 Anwahl der Vorsteuerung (modal)

G136 Angabe der Gewichtung (modal)

G137 Abwahl der Vorsteuerung (modal)

Durch den Einsatz einer Geschwindigkeits- und Beschleunigungsvorsteuerung können die Bahnverzerrungen reduziert werden.

Die achsgruppenspezifische Aktivierung wird mit G135 programmiert. Eine achs-spezifische, prozentuale Gewichtung der berechneten Vorsteuergrößen erfolgt über G136. Sie ist für alle Achsen auf 100% begrenzt.

Mit G137 wird die Vorsteuerung achsgruppenspezifisch ausgeschaltet. Bei Achsen, für die nach der globalen Anwahl mit G135 keine Vorsteuerung erfolgen soll, muß mit G136 als prozentuale Gewichtung 0% angegeben werden. Es ist auch möglich, die Anwahl und Gewichtung der Vorsteuerung in einem Satz einzugeben.

Bei jedem Programmstart wird im Interpolator die Vorsteuerung explizit ausgeschaltet und die Gewichtungsfaktoren werden auf 100% gesetzt.

Wenn die Vorsteuerung während des NC-Programms ein- bzw. ausgeschaltet wird, bleiben die Gewichtungsfaktoren auf dem durch G136 eingestellten Werten bzw., wenn kein G136 programmiert wird, auf 100%.

Programmierbeispiel

G135 (Anwahl der Vorsteuerung: Gewichtung für alle Achsen 100%)

G136 X80 Y95 Z0 (Gewichtung; Hier wird Z-Achse nicht vorgesteuert)


Gewichtung der Eilganggeschwindigkeit (G129)

G129 = <expr> (modal)

G129 Achsgruppenspezifische Eilganggewichtung

<expr> Gewichtung in Prozent für alle Achsen

Mit der Funktionen G129 ist es möglich, die Eilganggeschwindigkeit G00 zu verändern.

Eine Beeinflussung der Vorschubgeschwindigkeit wird erreicht, indem man den entsprechenden Geschwindigkeitskennwert prozentual verändert.

Bei einer Programmierung mit G129 sind alle nicht bzw. noch nicht programmierten Achsen auf 100% eingestellt. Jede weitere Anwahl dieser Funktionen bezieht sich unabhängig von vorhergehenden Programmierungen auf 100%, d.h. die Geometriedatenverarbeitung gewichtet stets den Default-Wert [2]-25 mit dem prozentualen Wert.

Zweimal hintereinander 50% programmiert bedeutet also, daß auf 50% und nicht auf 25% eingestellt wird.

Die Vorschubgewichtung wirkt nur bei Eilgangsätzen (G00). Sie wirkt nicht bei Einzel-achs-Slopes wie z.B. Referenzpunktfahrt, Handbetrieb und unabhängigen Achsen.

Der gewichtete Eilgangwert wird auf den MAX-Wert [2]-17 begrenzt.

Programmierbeispiel

N10 G129 = 70 (Achsgrp.spezifische Eilganggewichtung)

(Eilganggeschwindigkeit aller Achsen auf 70%)

N20 G00 X100 Y150 (Linearinterpolation, Eilgangbewegung mit 70%)

Besonderheit:

N50 G129 = 70 X10 Y20 (Bei G129 können im gleichen Satz auch Achs-)
(positionen programmiert werden!)


Parametrierung des Beschleunigungsprofils

Mehr:

button Beschleunigungsgewichtung (G130/G131)

button Rampenzeitgewichtung (G132/G133/G134)


Beschleunigungsgewichtung (G130/G131)

G130 <Achsname><expr> { <Achsname><expr> } (modal)

G131 = <expr> (modal)

G130 Achsspezifische Beschleunigungsgewichtung

<Achsname><expr> Gewichtung in Prozent für bestimmte Achsen

G131 Achsgruppenspezifische Beschleunigungsgewichtung

<expr> Gewichtung in Prozent für alle Achsen

Mit den Funktionen G130/G131 ist es möglich, die Achsbeschleunigung zu verändern.

Eine Beeinflussung dieser Beschleunigung wird erreicht, indem man die entsprechenden Beschleunigungskennwerte prozentual verändert. Bei ruckbegrenztem Profil sind dies die Achsparameter [2]-28 und [2]-29.

Bei einer Programmierung mit G130/G131 sind alle nicht bzw. noch nicht programmierten Achsen auf 100% eingestellt. Jede weitere Anwahl dieser Funktionen bezieht sich unabhängig von vorhergehenden Programmierungen auf 100%, d.h. die Geometrie-datenverarbeitung gewichtet stets die Default-Werte [2]-8 bzw. [2]-13 mit dem prozen-tualen Wert.

Zweimal hintereinander 50% programmiert bedeutet also, daß auf 50% und nicht auf 25% eingestellt wird. Eine Gewichtung über 100% hinaus ist bis zur Maximalbeschleunigung der Achse [2]-30 möglich.

Die Beschleunigungsgewichtung wirkt nur bei Vorschubsätzen (G01, G02, G03). Sie wirkt nicht bei Einzelachs-Slopes wie z.B. Referenzpunktfahrt, Handbetrieb und unabhängigen Achsen.

Programmierbeispiel

N10 G130 X70 (Achsspezifische Beschleunigungsgewichtung)

(Beschleunigung der X-Achse wird auf 70% begrenzt)

N20 G01 F1000 X100 (Linearinterpolation)

N30 G130 Y60 (Beschleunigung der Y-Achse wird auf 60% begrenzt)

(Beschleunigung der X-Achse bleibt bei 70%)
(eingestellt.)

N40 Y100 (Linearinterpolation)

N50 G131 = 100 (Achsgrp.spezifische Beschleunigungsgewichtung)

(Beschleunigungswerte aller Achsen auf 100%)

Besonderheit:

N50 G131 = 100 X10 Y20 (Bei G131 können im gleichen Satz auch Achs-)
(positionen programmiert werden!)


Rampenzeitgewichtung (G132/G133/G134)

G132 <Achsname><expr> { <Achsname><expr> } (modal)

G133 = <expr> (modal)

G134 = <expr> (modal)

G132 Achsspezifische Rampenzeitgewichtung

<Achsname><expr> Gewichtung in Prozent für bestimmte Achsen

G133 Achsgruppenspezifische Rampenzeitgewichtung

<expr> Gewichtung in Prozent für alle Achsen

G134 Achsgruppenspezifische Gewichtung der geometrischen Rampenzeit

<expr> Gewichtung in Prozent für alle Achsen

Mit den Funktionen G132/G133 ist es möglich, die Rampenzeit der Achsbeschleunigung beim nichtlinearen Slope zu verändern [2]-8. (Beim linearen Slope ist der Beschleunigungsverlauf sprungförmig (siehe Abbildung 11-5).

Mit G134 ist es möglich, die geometrische Rampenzeit beim nichtlinearen Slope zu verändern [2]-16.

Eine Beeinflussung dieser Rampenzeiten wird erreicht, indem man die entsprechenden Defaultrampenzeiten prozentual verändert.

Bei einer Programmierung mit G132/G133/G134 sind alle nicht bzw. noch nicht programmierten Achsen auf 100% eingestellt. Jede weitere Anwahl dieser Funktionen bezieht sich unabhängig von vorhergehenden Programmierungen auf 100%, d.h. die Geometriedatenverarbeitung gewichtet stets die Defaultwerte mit dem prozentualen Wert. Zweimal hintereinander 50% programmiert bedeutet also, daß auf 50% und nicht auf 25% eingestellt wird.

Die Rampenzeitgewichtung wirkt nur bei Vorschubsätzen (G01, G02, G03). Siewirkt nicht bei Einzelachs-Slopes wie z.B. Referenzpunktfahrt, Handbetrieb und unabhängigen Achsen.

Programmierbeispiel

N10 G132 X200 (Achsspezifische Rampenzeitgewichtung)

(Rampenzeit der X-Achse wird um 200% vergrößert.)

N20 G01 F1000 X100 (Linearinterpolation)

N30 G132 Y50 (Rampenzeit der Y-Achse wird um 50% verkleinert)

(Rampenzeit der X-Achse bleibt bei 200%)

N40 Y100 (Linearinterpolation)

N50 G133 = 100 (Achsgrp.spezifische Rampenzeitgewichtung)

(Rampenzeiten aller Achsen auf 100%)

N60 G134 = 50 (Achsgrp.spezifische Rampenzeitgewichtung)

(Geometrische Rampenzeit aller Achsen auf 50%)

Besonderheit:

N50 G133 = 100 X10 Y20 (Bei G133 können im gleichen Satz auch Achs-)
(positionen programmiert werden!)

N60 G134 = 50 X10 Y20 (Bei G134 können im gleichen Satz auch Achs-)
(positionen programmiert werden!)

Abbildung 4-52: Beispiel Rampenzeitgewichtung mit G132/G133

Abbildung 4-53: Beispiel Rampenzeitgewichtung mit G134 bei Zirkularinterpolation


Bearbeitungszeit/Vorschubgeschwindigkeit (G93/G94/G95/G194)

812_start

G93 Angabe der Bearbeitungszeit in Sekunden (modal)

G94 Vorschub in mm/min (modal, Grundzustand)

G95 Vorschub in mm/Umdrehung (modal)

G194 Vorschubberechnung aufgrund gewichteter

maximaler Achsvorschübe (modal)

Mittels der G-Funktionen G93, G94, G95 und G194 kann die Wirkung des F-Wortes wahlweise umgeschaltet werden.

Für G94 gilt allgemein: F-Wort für Rundachsen: [ Grad / min ]

F-Wort für Linearachsen: [ mm / min ]

Mit G194 wird über das F-Wort ein Gewichtungsfaktor in [%] für die maximalen Vorschubgeschwindigkeiten angegeben. Die maximal zulässige Vorschubgeschwindigkeit auf der Bahn ergibt sich dann aus den gewichteten achsspezifischen Werten [2]-17. Mindestens eine Achse fährt dann mit ihrer gewichteten Maximalgeschwindigkeit. Es sind nur Gewichtungswerte kleiner 100% erlaubt.

Programmierbeispiel

N10 G90 F1000 X100 (Vorschub 1000 mm/min (G94 Default))

N20 G194 F90 (Gewichtung 90% auf max. Achsvorschubgeschw.)

Nxx X200 (Vorschub z.B. 9000 mm/min bei vb_max=10000 mm/min)

N80 G94 X50 (Vorschub 1000 mm/min aus N10 gültig)

Nxx X.. Y.. Z.. (Interpolation)

N120 G93 F20 (Bearbeitungszeit 20 s)

Nxx X.. Y.. Z.. (Interpolation)

N160 G94 F1500 X150 (Vorschub 1500 mm/min)

Nxx X.. Y.. Z.. (Interpolation)

N200 M30

812_end


Einfügen von Fasen und Radien (G301/G302)

G301 Einfügen von Fasen (Beide Funktionen sind

einmalig zwischen

G302 Einfügen von Radien zwei Verfahrsätzen wirksam.)

"Eckenrunden" ist das Einfügen eines an zwei Nachbar-Konturelementen tangential übergehenden Kreisbogens mit angegebenem Radius. Unter "Fasen" ist das Einfügen einer Geraden mit gleichem Neigungswinkel zu den Nachbar-Konturelementen zu verstehen.

Zum Eckenrunden wird die Funktion G302, zum Fasen die Funktion G301 zur Verfügung gestellt. Diese Funktionen sind satzweise wirksam und erzeugen genau ein Einfüge-konturelement (Kreisbogen bzw. Gerade). G302- bzw. G301-Sätze dürfen nur zwischen Sätzen mit wirksamer G-Funktion der Gruppe "a", d.h. G00, G01, G02/G03 ohne G05, geschrieben werden. Ein im selben NC-Satz programmiertes I-Wort definiert die Radiusgröße bzw. die Fasenbreite des Einfüge-Elementes. Das I-Wort bleibt gespeichert wirksam, d.h. bei folgendem G302/G301 mit gleichem Radius bzw. gleicher Fasenlänge muß das I-Wort nicht mehr programmiert zu werden. Bei erstmaliger Programmierung von G301/G302 muß im NC-Satz ein I-Wort ungleich Null programmiert werden, sonst wird eine Fehlermeldung erzeugt (Fehler, der zum Abbruch der Decodierung führt).

Wirksamkeit des Vorschubes bei G301/G302:

q Geht G00 (Eilgang) voraus, so wird der Kreisbogen ebenfalls mit maximal möglicher Geschwindigkeit gefahren.

q Geht G01/G02/G03 voraus, so gilt der programmierte Vorschub.

q Im Satz mit G301/G302 darf auch ein Vorschub angegeben werden.

q Bei wirksamem G11 und G41/G42 wird der Vorschub auch angepaßt.

Programmierbeispiel

Fasen: 90 Grad Ecke mit 2 Geraden (für eine Fase 20x45 Grad wird I=20 angegeben)

N100 G00 G91 X100 Y0 F200

N110 G01 Y100

N120 G301 I20

N130 X-60

N140 G00 G90 X0 Y0

Eckenrunden: Rechtecktasche mit Eckenradius 20 mm, 200 mm lang, 100 mm breit.

N100 G00 G42 X0 Y0 F200

N110 G01 G11 X200

N120 G302 I20 F150

N130 Y100 F200

N140 G302 F150

N150 X0 F200

N160 G302 F150

N170 Y0 F200

N180 G302 F150

N190 G10 X40 F200

Die Fase bzw. der Radius wird immer in der Ebene eingefügt, in der der zweite Bewegungssatz programmiert ist.

Beispiel A: Beispiel B:

N100 G18 X20 N100 G18 X20

N110 G19 N110 G301 I5

N120 G301 I5 N120 G19

N130 Y20 Z20 N130 Y20 Z20

Beispiel A und B liefern beide das gleiche Ergebnis, Überschleifen in der Y-Z-Ebene.

Mehr:

button Wirkungsweise der Funktionalität "Einfügen von Fasen"

button Wirkungsweise der Funktionalität "Einfügen von Radien"


Wirkungsweise der Funktionalität "Einfügen von Fasen"

Bei G301 definiert das I-Wort den Abstand zwischen dem Eckpunkt der programmierten Kontur und dem jeweiligen Schnittpunkt der eingefügten Geraden mit den Konturelementen. Ist ein oder sind beide Konturelemente Kreisbögen, so wird dieser Abstand als Sehnenlänge betrachtet.

Ergibt sich durch die angegebene Größe des Einfügeradius bzw. der Fase auf einem oder beiden Konturelementen eine Richtungsumkehr, so erfolgt eine Fehlermeldung.

Abbildung 4-54: Einfügen einer Fase zwischen zwei Geraden

Abbildung 4-55: Einfügen einer Fase zwischen zwei Kreisbögen

Abbildung 4-56: Fehlerfall wegen Richtungsumkehr


Wirkungsweise der Funktionalität "Einfügen von Radien"

Bei G302 definiert das I-Wort den Radius des eingefügten Kreisbogens. Dessen Mittelpunkt ist der Schnittpunkt der beiden Äquidistanten mit dem Abstand I zur programmierten Bahn. Die Lage der Äquidistanten wird so gewählt, daß die programmierte Kontur beim Überschleifen soweit wie möglich erhalten bleibt.

Bei tangentialen Satzübergängen kann in der Regel kein Überschleifradius eingefügt werden.

Abbildung 4-57: Einfügen eines Kreisbogens zwischen zwei Geraden

Abbildung 4-58: Einfügen eines Kreisbogens zwischen zwei Kreisen (Winkel α ≥ 180°)

Abbildung 4-59: Einfügen eines Kreisbogens zwischen zwei Kreisen (Winkel α < 180°)


Handbetrieb

Der Handbetrieb (HB) ermöglicht ein externes Ansteuern einzelner Achsen mit physikalischen Handbetriebselementen (Handrad, Tipptasten, Joystick). Der Bediener kann während laufender Interpolation, d.h. während dem Ablauf des NC-Programms im HB-Modus Achsen mit zusätzlichen Sollwerten beaufschlagen. Folgende Handbetriebsarten stehen zu Verfügung:

q Handradfunktion: beliebiger Weg mit beliebiger Geschwindigkeit.

q Tippbetrieb: beliebiger Weg mit parametrierbarer Geschwindigkeit.

q Jogbetrieb: vorgebbarer Weg mit parametrierbarer Geschwindigkeit.

q Unterbrechbarer
Jogbetrieb: wie Jogbetrieb, jedoch Fahrtunterbrechung möglich.

Diese Handbetriebsarten können von der Bedienoberfläche aus aktiviert werden. Die entsprechenden Parameter wie zum Beispiel Auflösungsstufen, Geschwindigkeiten, Schrittweiten etc. werden durch entsprechende NC-Befehle ("#SET"-Befehle, "G"-Befehle) programmiert.

Die aktuelle Handbetriebsart und die mit einem physikalischen Handbetriebselement bewegte Achse kann jederzeit geändert werden. Ein physikalisches Handbetriebselement kann gleichzeitig mehrere Achsen in verschiedenen Kanälen mit Sollwerten beaufschlagen. Eine Achse kann nur in einer Handbetriebsart und mit einem Betriebselement betrieben werden.

Abbildung 4-60: Der Handbetrieb und seine Möglichkeiten

Mehr:

button An-/Abwahl mit paralleler Interpolation(G201/G202)

button Anwahl ohne parallele Interpolation (G200)

button Verhalten bei Programmende (M02, M30)

button Parametrierung der Betriebsarten

button Vorgabe der Offsetgrenzen

button Beispiel für die Parametrierung einer Achse für den Handbetrieb


An-/Abwahl mit paralleler Interpolation(G201/G202)

Für die programmierten Bahnachsen wird die Schnittstelle zwischen Interpolator und Handbetrieb aktiviert. Spindeln können nicht programmiert werden.

Mit G201 und #ACHSE[...] wird für bestimmte Achsen der Handbetrieb angewählt. Danach ist für diese Achsen der Handbetrieb mit paralleler Interpolation bis zur Abwahl mit G202 aktiv.

G201 #ACHSE [ <Achsname> {, <Achsname> } ] (modal)

Mit G202 und optional #ACHSE[...] wird für alle oder bestimmte Achsen der Handbetrieb abgewählt.

G202 Abwahl des Handbetriebs für alle Achsen (modal, Grundzustand)

... oder für bestimmte Achsen

G202 #ACHSE [ <Achsname> {, <Achsname> } ]

Programmierbeispiel

.....

G00 X100 Y100

G201 #ACHSE[X] (Zustandsübergang der X-Achse in den Handbetrieb)

P1 = 0

$WHILE P1 == 0

(Einrichten der X-Achse im Handbetrieb)

(Programmweiterlauf mit Setzen von P1 auf 1 durch Bedienung)

$ENDWHILE

G202 (Zustandsübergang aller Achsen in Normalbetrieb)

G01 Y200 F500

..

.....


Anwahl ohne parallele Interpolation (G200)

Für die programmierten Bahnachsen wird die interne Handbetriebsschnittstelle des Interpolators aktiviert. Spindeln können nicht programmiert werden.

Der Handbetrieb ohne parallele Interpolation wird mit G200 angewählt.

G200 Handbetrieb für alle Achsen (nicht modal)

... oder für bestimmte Achsen

G200 #ACHSE [ <Achsname> {, <Achsname> } ] (nicht modal)

Bei programmiertem G200 erfolgt die Unterbrechung der Bearbeitung des aktuellen NC-Programms im Interpolator. Die Handbetriebsarten können dann aktiviert, umgeschaltet und deaktiviert werden. Nach Verfahren der Achsen im Handbetrieb kann die Fortsetzung des NC-Programms über die Bedienung durch die Steueranweisung "Bewegung Fortsetzen" an den Interpolator beauftragt werden.

In diesem Betriebsmodus werden die Offsetgrenzen (maximaler Verfahrbereich im Handbetrieb) automatisch auf die Softwareendschalterpositionen gesetzt, so daß der gesamte Bereich zwischen den Softwareendschaltern im Handbetrieb verfahren werden kann. Nach Beenden dieses Handbetriebsmodus sind die vorherigen relativen Offsetgrenzen wieder gültig.

Eine parallele Interpolation der Achsen während dem Handbetrieb ist bei G200 nicht möglich. Nach der Anweisung "Bewegung Fortsetzen" werden alle Achsen und Betriebsarten deaktiviert, so daß kein Handbetrieb mehr möglich ist.

Der Decoder fordert dann alle Offset- und Sollpositionen vom Interpolator an und sendet die aktuellen Sollpositionen an alle Teilnehmer im NC-Kanal.

Wird G200 ohne #ACHSE[...] programmiert, so wirkt dieser Befehl auf alle momentan vorhandenen Bahnachsen.

Programmierbeispiel

.....

.....

G00 X100 Y100

G200 #ACHSE[X] (Handbetrieb ohne parallele Interpolationfür X-Achse)

G01 X200 Y200 F600

G01 Y200 F500

G200 (Handbetrieb ohne parallele Interpolation für alle Achsen)

G01 Y500 Z500

..

.....


Verhalten bei Programmende (M02, M30)

Nach NC-Programmende darf im Handbetrieb kein Verfahren der Achsen möglich sein. Deshalb wird der Befehl "M30" bzw. "M02" so behandelt, als ob zusätzlich "G202" programmiert worden wäre.


Parametrierung der Betriebsarten

Mehr:

button Betriebsart Handradbetrieb

button Betriebsart Tippbetrieb

button Betriebsart Jogbetrieb/ Unterbrechbarer Jogbetrieb


Betriebsart Handradbetrieb

#SET HR [ <resolution> { ,<resolution> } ]<Achsname> (modal)

<resolution> Auflösungsstufen

Max. Anzahl* | Dimension
3 | mm/Handrad-Umdrehung. bzw grd/Handrad-Umdrehung

*Max. Anzahl ist fest vorgegeben (HR_AUFL_MAX)

<Achsname> Zu parametrierende Handbetriebsachse


Betriebsart Tippbetrieb

#SET TIP [ <feed_step> { ,<feed_step> } ] <Achsname> (modal)

<feed_step> Geschwindigkeitstufen

Max. Anzahl* | Dimension
3 | mm/min bzw. grd/min

*Max. Anzahl ist fest vorgegeben (TIPP_GESCHW_MAX)

<Achsname> Zu parametrierende Handbetriebsachse


Betriebsart Jogbetrieb/ Unterbrechbarer Jogbetrieb

#SET JOG [ [ <step_size> , <feed> ] { ,[<step_size>,<feed>] } ]<Achsname> (modal)

<step_size>, <feed> Paarstufen (Schrittweite/ Geschwindigkeit)

Max. Anzahl* | Dimension
3 | mm bzw. grd / mm/min. bzw. grd/min

*Max. Anzahl ist fest vorgegeben (JOG_WEG_GESCHW_MAX)

<Achsname> Zu parametrierende Handbetriebsachse

Die Handradauflösungen, Tipp- und Joggeschwindigkeiten und Jogschrittweiten können auch als mathematische Ausdrücke programmiert werden. Diese "#SET"-Befehle dürfen nur bei aktivem "G202" für die jeweilige Achse programmiert werden.

Die "#SET"-Befehle müssen alleine im NC-Satz stehen.

Programmierbeispiel

.....

G202 #ACHSE[X,Y]

#SET HR [0.1, 0.2, 0.5] X

#SET TIP [1.0, 1.5, 2.0] X

#SET JOG [ [ 0.1, 1.0 ] [ 0.2, 1.5 ] [ 0.5, 2.0 ] ] X

G201 #ACHSE [X, Y]

....


Vorgabe der Offsetgrenzen

#SET OFFSET [ <neg_offset>, <pos_offset> ] <Achsname>

<neg_offset> Negativer Offsetwert. Muß ≤ 0 programmiert werden

<pos_offset> Positiver Offsetwert. Muß ≥ 0 Null programmiert werden

<Achsname> Achse, für die die Offsetgrenzen gelten soll.

Mit diesem Befehl können positive und negative Grenzen für den zulässigen relativen Handbetriebsoffset für die jeweilige Bahnachse festgelegt werden. Achsen, die als rotatorische Moduloachsen oder als Spindel betrieben werden (M3, M4, M5, M19, S...), werden bei diesem Befehl nicht berücksichtigt. Diese Offsetgrenzen gelten für alle Handbetriebsarten. Die Offsetwerte können jederzeit ohne zuvor programmiertes G202 überschrieben werden. Die Offsetwerte können ähnlich den Softwareendschalterpositionen auch über den Parameterdatensatz [2]-6/-7 der Achse vorgegeben werden. Es erfolgt lediglich eine Vorzeichenüberprüfung der programmieren Offsetgrenzen. Weitere Überprüfungen z.B. bzgl. Bereichserweiterungen finden nicht statt.


Beispiel für die Parametrierung einer Achse für den Handbetrieb

Programmierbeispiel

.....

G202 #ACHSE[X,Y]

#SET HR [0.1, 0.2, 0.5] X

#SET TIP [1.0, 1.5, 2.0] X

#SET JOG [ [ 0.1, 1.0 ] [ 0.2, 1.5 ] [ 0.5, 2.0 ] ] X

#SET OFFSET [ -5, 5 ] X

G201 #ACHSE [X]

....

Mit dem Befehl

#SET HR [0.1, 0.2, 0.5] X

werden die Handradauflösungsstufen der X-Achse angegeben. Die Auflösungsstufen sind 0.1, 0.2 und 0.5 mm/Handradumdrehung.

Mit dem Befehl

#SET TIP [1.0, 1.5, 2.0, 5.0] X

werden die Verfahrgeschwindigkeiten für den Tippbetrieb der X-Achse vorgegeben. Die Geschwindigkeitsstufen für den Tippbetrieb sind 1.0, 1.2, 1.5 und 5.0 mm/min.

Mit dem Befehl

#SET JOG [ [ 0.1, 1.0 ] [ 0.2, 1.5 ] [ 0.5, 2.0 ] ] X

wird der Jogbetrieb und der unterbrechbare Jogbetrieb für die X-Achse parametriert. Die Schrittweiten und Geschwindigkeiten werden paarweise nacheinander programmiert:

Stufe 1: Schrittweite 0.1 mm, Geschwindigkeit 1.0 mm/min

Stufe 2: Schrittweite 0.2 mm, Geschwindigkeit 1.5 mm/min

Stufe 3: Schrittweite 0.5 mm, Geschwindigkeit 2.0 mm/min

Mit dem Befehl

#SET OFFSET [ -5, 5 ] X

wird die negative Handbetriebsoffsetgrenze auf  5 mm, die positive Offsetgrenze auf +5 mm gesetzt.

Mit nachfolgenden Befehlen wird für die X-Achse der Handbetrieb aktiviert bzw. deaktiviert. Wird G202 allein programmiert, so wird für alle Achsen der Handbetrieb deaktiviert.

G201 #ACHSE[X]

G202 #ACHSE[X]


Anfordern von Offset-, Soll- und Istwerten

Die im folgenden beschriebenen NC-Befehle lösen Aufträge zur Übernahme von Offset-, Soll- bzw. Istwerten des Interpolators in die Arbeitsdaten des NC-Programminterpreter aus. Auf die Daten kann dann mittels Variablen im NC-Programm zugegriffen werden.

Es können nur Offset-, Soll- und Istwerte von Bahnachsen angefordert werden. Achsen, die als rotatorische Moduloachsen oder als Spindel betrieben werden (M3, M4, M5, M19, S...), werden bei den folgenden Befehlen nicht berücksichtigt.

Die Synchronisierung zwischen NC-Programminterpreter und Interpolator ist bei allen beschriebenen NC-Befehlen gleich. Erst nach Übernahme aller Daten in die Arbeitsdaten des NC-Programminterpreters ist der Auftrag abgeschlossen und die Dekodierung des NC-Programms wird fortgesetzt.

Mehr:

button Anfordern aktueller Offsetwerte und Ablegen in "V.A.SOFFS[ ]"

button Anfordern aktueller Sollpositionen und Ablegen in "V.A.ABS[ ]"

button Anfordern aktueller Istpositionen und Ablegen in "V.A.ABS[ ]"

button Anfordern aktueller Sollpositionen bestimmter Achsen und Ablegen in Variablen oder Parametern


Anfordern aktueller Offsetwerte und Ablegen in "V.A.SOFFS[ ]"

#GET IPO OFFSET

Der Decoder fordert die aktuellen Handbetrieboffsetwerte aller ihr zugeordneten Bahnachsen vom Interpolator an. Nach Bereitstellung der Werte werden diese im Decoder in den Variablen "V.A.SOFFS[...]" abgelegt (s. a. Kap. 13.1) und können so im NC-Programm angesprochen werden. Es erfolgt keine implizite Positionsinitialisierung des NC-Kanals. Die Offsets im Interpolator werden bei diesem Auftrag nicht gelöscht. Die Variablen "V.A.ABS. ..." (s. a. Kap.13.1) werden bei diesem Auftrag nicht aktualisiert.

Dieser Befehl muß alleine im NC-Satz stehen.

Programmierbeispiel

X100

G201

..... Verfahren im Handbetrieb

G202

#GET IPO OFFSET

G01 X[100 + V.A.SOFFS.X] F500 (Positionsinitialisierung des NC-Kanals)

(nach Abwahl Handbetrieb)

.....


Anfordern aktueller Sollpositionen und Ablegen in "V.A.ABS[ ]"

#CHANNEL INIT [CMDPOS]

Ab Version V2.10.1504 ersetzt der Befehl #CHANNEL INIT [CMDPOS] den Befehl #SET DEC LR SOLL. Dieser ist aus Kompatibilitätsgründen weiterhin verfügbar, es wird aber empfohlen, diesen in neuen NC-Programmen nicht mehr zu verwenden.

Der NC-Programminterpreter fordert die aktuellen Sollpositionen aller zugeordneten Bahnachsen beim Interpolator an, legt diese in den Arbeitsdaten ab und initialisiert mit diesen Positionen den NC-Kanal. Auf die aktuellen Sollpositionen in den Arbeitsdaten kann dann mittels Variablenprogrammierung (V.A.ABS...; s. a. Kap. 13.1) zugegriffen werden. Eventuell vorhandene Handbetriebsoffsets im Interpolator werden bei diesem Auftrag automatisch gelöscht. Die Achspositionen entsprechen denjenigen für Offset Null. Die in den Variablen "V.A.SOFFS. ..." abgelegten Werte (s. a. Kap. 13.1) werden bei diesem Auftrag nicht aktualisiert.

Dieser Befehl muß alleine im NC-Satz stehen.

Programmierbeispiel

%channel_init_cmd

X100

G201

..... Verfahren im Handbetrieb

G202

#CHANNEL INIT [CMDPOS]

#MSG ["X-Sollpos:%F",V.A.ABS.X]

.....


Anfordern aktueller Istpositionen und Ablegen in "V.A.ABS[ ]"

#CHANNEL INIT [ ACTPOS { AX<Achsname> |AXNR<expr> } ]

AX <Achsname> Name der Achse, für die der Istwert angefordert wird.

AXNR<expr> Logische Nummer der Achse, für die der Istwert angefordert wird, Positive Ganzzahl.

Der NC-Programminterpreter fordert für alle oder bestimmte Bahnachsen die aktuellen Istpositionen beim Interpolator an, legt diese in den Arbeitsdaten ab und initialisiert mit diesen Positionen den NC-Kanal. Auf die aktuellen Istpositionen in den Arbeitsdaten kann dann mittels Variablenprogrammierung (V.A.ABS...; s. a. Kap. 13.1) zugegriffen werden. Eventuell vorhandene Handbetriebsoffsets im Interpolator werden bei diesem Auftrag automatisch gelöscht. Die Achspositionen entsprechen denjenigen für Offset Null. Die in den Variablen "V.A.SOFFS. ..." abgelegten Werte (s. a. Kap. 13.1) werden bei diesem Auftrag nicht aktualisiert.

Sind keine Achsen programmiert, so werden für alle im Kanal vorhandenen Bahnachsen die Istpositionen angefordert.

Sind Achsen programmiert, so werden nur für diese die Istpositionen angefordert. Für die nicht programmierten Achsen werden die Sollpositionen angefordert.

Durch die Übernahme der Istposition als Sollposition kann sich die Achse bewegen. Eine Übernahme in einer NC-Programmschleife kann zu einem Driften des Antriebes führen.

Dieser Befehl muß alleine im NC-Satz stehen.

Programmierbeispiel

%channel_init_act

G01 F1000 X100 Y200

#CHANNEL INIT [ACTPOS AX=X AX=Y ] (Istwertanforderung mit)

(Achsangabe über Name..)

#CHANNEL INIT [ACTPOS AXNR=1 AXNR=2 ] (..oder über log. Achsnummer..)

#CHANNEL INIT [ACTPOS] (..oder fuer alle Bahnachsen)

#MSG ["Actpos X:%F, Y:%F ",V.A.ABS.X, V.A.ABS.Y]

M30


Anfordern aktueller Sollpositionen bestimmter Achsen und Ablegen in Variablen oder Parametern

#SET IPO SOLLPOS [ V.S. < String> | V.P.<String> | V.L.<String> | P<expr>=<Achsname>

{ ,V.S.<String> | V.P.<String> | V.L.<String> | P<expr>=<Achsname> } ]

Der Decoder fordert vom Interpolator die aktuellen Sollpositionen der angegebenen Bahnachsen an und legt diese in den angegebenen eigendefinierten Variablen (V.S./ V.P./ V.L.) oder Parametern (P...) ab. Es erfolgt keine implizite Positionsinitialisierung des NC-Kanals. Die Handbetrieboffsets im Interpolator der ausgewählten Achsen werden bei diesem Auftrag nicht gelöscht. Die Variablen "V.A.ABS. ..." und "V.A.SOFFS. ..." werden bei diesem Auftrag nicht aktualisiert.

Dieser NC-Befehl muß alleine im NC-Satz stehen.

Programmierbeispiel

.....

G202

#SET IPO SOLLPOS [P1 = X, P2 = Y, V.P.POS1 = Z, V.P.POS2 = C]

G01 XP1 YP2

G01 ZV.P.POS1 CV.P.POS2

.....


Getriebeschalten (G112)

G112 Getriebeschalten (nicht modal)

Mit der Funktion G112 ist es möglich, für einzelne Bahnachsen Getriebestufen zu schalten. G112 steht auch für Spindelachsen zur Verfügung, jedoch sind hier die in Kapitel 14.2.7 beschriebenen Besonderheiten zu beachten.

Bei Achsen, die kein reales Getriebe besitzen, kann diese Funktionalität zum Schalten verschiedener Achsparameter eingesetzt werden. Somit kann z.B. für schwergängige Bearbeitungen die Reglerverstärkung und die Schleppabstandsüberwachung in einem dafür separaten Parametersatz aufeinander abgestimmt und durch die dafür festgelegte "Getriebenummer" im NC-Programm angewählt werden.

G112 darf nicht mit einer Wegbedingung im selben NC-Satz programmiert werden.

Programmierbeispiel

Nnn G112 X4 Y8 (X-Achse: Getriebestufe 4, Y-Achse: Getriebestufe 8)


Beeinflussung der Look-Ahead Funktionalität (G115/G116/G117)

G115 Allgemeine Beeinflussung der Look-Ahead Funktionalität (modal)

G116 Beeinflussung der Berechnung der Satzübergangsgeschwindigkeit (modal)

G117 Rücksetzen der Look-Ahead Funktionalität (modal, Grundzustand)

Überblick über die Funktionalität der Look-Ahead-Funktion

Innerhalb der Look-Ahead-Funktion sind verschiedene Einzelfunktionen realisiert, die die gefahrenen Geschwindigkeiten auf Maximalwerte so begrenzen, dass zulässige Achsgeschwindigkeiten und beschleunigungen immer eingehalten werden können.

Folgende Einzelfunktionen beeinflussen das Geschwindigkeitsprofil:

(1) Berechnung der maximalen Bahngeschwindigkeiten aufgrund der im Kanalparametersatz [1]-26 festgelegten maximalen Achsgeschwindigkeiten der an der Bewegung beteiligten Achsen.

Die Geschwindigkeit auf der programmierten Bahn darf nur so hoch sein, daß jede an der Bewegung beteiligte Achse ihre maximale Achsgeschwindigkeit nicht überschreitet.

(2) Berechnung der maximalen Bahngeschwindigkeiten auf gekrümmten Bahnen auf-grund eines maximalen Sehnenfehlers.

Dazu kann auf jeder gekrümmten Kurve im Punkt der stärksten Krümmung ein Krümmungsradius ermittelt werden. Auf dem dadurch beschriebenen Kreis kann nun wiederum ein Kreisabschnitt definiert werden, dessen Anfangs- und Endpunkt je einem generierten Bahnpunkt entspricht. Unter der Voraussetzung, daß sich das reale mechanische System auf der zugehörigen Sehne bewegen würde, kann die zugehörige Kreisabschnittshöhe als Fehlerkriterium herangezogen werden.

(3) Berechnung der maximalen Bahngeschwindigkeiten auf gekrümmten Bahnen aufgrund der im Kanalparametersatz [1]-26 festgelegten maximalen Achsbeschleunigungen.

Die berechnete maximale Bahngeschwindigkeit aufgrund des Sekantenfehlers kann insbesondere bei kurzer Abtastzeit und kleinen Zirkularbewegungen noch zu hoch sein, so daß die auftretenden Zentripetalbeschleunigungen die zulässigen Achsbeschleunigungen überschreiten würden.

(4) Berechnung der Bahnübergangsgeschwindigkeit aufgrund der Satzübergangsgeometrie unter Berücksichtigung der an der Bewegung beteiligten Achsen und der im Kanalparametersatz [1]-26 festgelegten Grenzwerte

Bei einem Satzübergang wechseln in der Regel die jeweiligen Anteile der einzelnen Achsen an der Gesamtbewegung. Dieser Wechsel der Achsanteile tritt aber nur im ersten Abtastzyklus auf der neuen Bahn auf (bei Linearbewegungen). Wird vorausgesetzt, daß der Übergang ohne generierte Beschleunigung (z.B. vom Slope) erfolgen soll, kann eine Abschätzung der auftretenden Achsbeschleunigungen vorgenommen werden. Damit ist die Berechnung einer maximalen Bahngeschwindigkeit am Satzübergang möglich, bei der die maximalen Achsbeschleunigungen am Übergang nicht überschritten werden.

Allgemeiner Fall:

Normalbetrieb mit Look-Ahead

Nach Programmstart sind sämtliche Funktionalitäten des Look-Ahead eingeschaltet (G117). Damit ist sichergestellt, daß die im Kanalparametersatz angegebenen Parameter [1]-26 wie z.B. maximale Achsgeschwindigkeit und maximale Achsbeschleunigung immer eingehalten werden.

Sonderfall:

Ausschalten von Einzelfunktionen der Look-Ahead-Funktion durch G115

Programmierbeispiel

Nnn G115 = 0 (Ausschalten der Einzelfunktionen (2),(3) und(4))
(der Look-Ahead-Funktion)

In der folgenden Tabelle sind die möglichen Kombinationen der Einzelfunktionen erläutert.

Die entsprechenden an- bzw. abgewählten Funktionen beziehen sich immer auf alle Achsen.

Überblick über erlaubte Identifikationsnummern (ID) im Zusammenhang mit G115:

Einzelfunktion ID | (1) | (2) | (3) | (4)
0 | * |  |  |
2 | * |  |  | *
4 | * | * |  |
6 | * | * |  | *
8 | * |  | * |
10 | * |  | * | *
12 | * | * | * |
14 | * | * | * | *

*

Einzelfunktion aktiv

Einzelfunktion nicht aktiv

Programmierbeispiel

Nnn G115 = 2 (Auschalten der Einzelfunktionen (2) und (3))

Nnn G115 = 12 (Auschalten der Einzelfunktion (4))

Nnn G115 = 14 (Einschalten aller Einzelfunktionen, nach)
(Programmstart, vgl. G117)

Spezialfall:

Beeinflussung der Look-Ahead Funktionalität durch G116, G117

Durch G116 wird die Berechung der Satzübergangsgeschwindigkeit (Einzelfunktion (4)) für einzelne programmierbare Achsen ausgeschaltet. Es erfolgt keine Reduzierung der Satzübergangsgeschwindigkeit (Bahngeschwindigkeit) aufgrund "Ecken" in der Bahn.

Die dynamischen Achsdaten (Achsbeschleunigungen) werden im Normalfall nicht eingehalten.

Programmierbeispiel

N10 G116 X1 Y2 (Keine Reduzierung der Satzübergangs-)
(geschwindigkeit unterschiedlicher Achs-)
(geschwindigkeiten der Achsen X bzw. Y)

N20 G01 G91 X100 Y-100 F1000

N30 X-100

In diesem Beispiel wird der Satzübergang N20/N30 ohne Sollgeschwindigkeitseinbruch gefahren. Die Sollwerte ändern sich am Satzübergang sprungförmig entsprechend den Achsanteilen an der Bahn.

Der Koordinatenwert ist nur aus syntaktischen Gründen erforderlich, ansonsten jedoch nicht relevant.

Durch G117 werden sämtliche Einzelfunktionen der Look-Ahead-Funktion wieder aktiv geschaltet (Defaulteinstellung nach Programmstart).

Programmierbeispiel

Nnn G117 (Einschalten aller Einzelfunktionen (1),(2),(3),(4))
(der Look-Ahead-Funktion)


Override (G166)

G166 Override auf 100 % festsetzen (nicht modal)

Mit der Funktion G166 wird die externe Beeinflussung des Overrides von Bahnachsen ausgeschaltet sowie die Wirkung der programmierten Overridewerte für die Bahn oder eine Achse unterdrückt.


Anwenderspezifische M/H-Funktionen

M/H-Funktionen werden im wesentlichen durch die Programmierung der "Speicherprogrammierbaren Steuerung" (SPS,...) bestimmt. Diese Steuerung erhält über eine Schnittstelle ("Fenster zur SPS") Mitteilung über die programmierten M/H Funktionen im aktuellen NC-Satz. Zusätzlich werden Synchronisationsbedingungen mitgegeben, die die Synchronisation zwischen NC und SPS steuern.

M <expr>

bzw.

H<expr>

M/H-Funktionen können mit allgemeinen mathematischen Ausdrücken programmiert werden. Dies erlaubt insbesondere die Wertzuweisung über Parameter, z.B. MP10. Vor dem Zugriff auf die M/H-Funktion wird der berechnete Zahlenwert gerundet und in eine Ganzzahl gewandelt. Der kleinste zulässige Wert ist 0 (Null). Negative Werte erzeugen eine Fehlermeldung.

Die maximale Anzahl von M/H-Funktionen pro NC-Kanal sowie die maximale Anzahl von M/H-Funktionen pro NC-Satz ist fest vorgegeben.

Mit der EXIST-Funktion (siehe Kapitel 2.6.1.3) kann geprüft werden, ob eine M/H-Funktion überhaupt verfügbar ist.

Programmierbeispiel

Durch die EXIST-Abfrage wird in einem ersten Schritt vor der Verwendung einer anwenderspezifischen M-Funktion zunächst geprüft, ob diese überhaupt in der Kanalparameterliste definiert ist

...

N10 G90 Y0

N20 $IF EXIST[M80] == TRUE

N30 X0 Y0 Z0 M80 (M80 ist verfuegbar)

N40 $ELSE

:

N60 $ENDIF

...

M30

Folgende M-Funktionen haben im NC-Programm eine vordefinierte feste Bedeutung, d.h. sie sind nicht frei verfügbar. Lediglich ihr Synchronisationsmode kann noch vom Anwender selbst belegt werden.

M00 Programmierter Halt

M01 Wahlweiser Halt

M02 Programmende, Stillsetzen der Maschine

M17 Unterprogrammende

M29 Unterprogrammende

M30 Programmende, Stillsetzen der Maschine

Mehr:

button Programmierter Halt (M00)

button Wahlweiser Halt (M01)

button Programmende (M02/M30)

button Unterprogrammende (M17/M29)


Programmierter Halt (M00)

M00 bewirkt eine Unterbrechung des laufenden NC-Programmes, um z.B. eine Messung oder eine Späneentsorgung durchzuführen. Die Bearbeitung wird wieder fortgesetzt, wenn die "Bewegung-Fortsetzen"-Taste gedrückt wird. Steht M00 in einem Satz mit Verfahranweisungen, dann erfolgt die Unterbrechung nach Ausführung dieser Verfahranweisung.


Wahlweiser Halt (M01)

M01 wirkt wie M00, nur muß die Wirksamkeit von M01 am Bedienfeld der Steuerung aktiviert werden.


Programmende (M02/M30)

M02 und M30 sind identisch und bewirken im Haupt- und Unterprogramm das Rücksetzen an den Hauptprogrammanfang und die Rückführung der NC in die Grundstellung.

Zusätzlich ist es durch Konfigurierung möglich, ein Signal an die SPS weiterzugeben. Die SPS verwendet dieses Signal z. B., um einen Werkstückwechselprozeß zu synchronisieren.


Unterprogrammende (M17/M29)

M17 und M29 ist der ordentliche Abschluß eines Unterprogrammes. Siehe hierzu auch Kapitel 8 Unterprogrammtechniken

Durch Konfigurierung ist es möglich, zusätzlich ein Signal an die SPS weiterzugeben.


Achsspezifische M/H-Funktionen

Allgemein werden anwenderspezifische M/H-Funktionen, die in der Standard-DIN-Syntax programmiert werden, kanalspezifisch behandelt und ausgeführt.

Für jede anwenderspezifische M/H Funktion besteht jedoch auch die Möglichkeit durch Vorbelegung in den Kanalparametern [1]-7/-8 eine achsspezifische Behandlung zu erzwingen.

m_default_outp_ax_name[ <m_expr> ] < Achsname>

bzw.

h_default_outp_ax_name[ <h_expr> ] < Achsname>

<m_expr> Nummer einer anwenderspezifischen M-Funktion mit
achsspezifischer Wirkung.

<h_expr> Nummer einer anwenderspezifischen H-Funktion mit
achsspezifischer Wirkung.

<Achsname> Achsbezeichnung der Achse, auf die die M/H-Funktion wirken soll. Hierbei sind Bahnachsen und Spindelachsen zulässig.

Programmierbeispiel

Kanalparametersatz [1] :

:

# Festlegung der achsspezifischen M-Funktionen

# ============================================

m_default_outp_ax_name[20] S2

m_default_outp_ax_name[21] S3

m_default_outp_ax_name[22] Z

:

# Festlegung der achsspezifischen H-Funktionen

# ============================================

h_default_outp_ax_name[10] X

h_default_outp_ax_name[11] Y

h_default_outp_ax_name[12] Z

:

NnS1000 M3 M20 M21 M22 H10 (S und M3 wirken auf die Hauptspindelachse,
M20 wirkt auf die S2-Spindelachse
M21 wirkt auf die S3-Spindelachse und
M22 wirkt auf die Z-Achse
H10 wirkt auf die X-Achse)

:

Wird eine achsspezifische M/H-Funktion in einer spindelspezifischen Klammerung programmiert, so wird die Defaulteinstellung ignoriert und die M/H-Funktion wirkt auf die entsprechende Spindelachse.

Für Bahnachsen besteht darüber hinaus im NC-Programm die Möglichkeit, durch Klammerung bei M/H-Funktionen ebenfalls eine achsspezifische Ausgabe zu erzwingen:

<Achsname>[ M<expr> H<expr> { M<expr> H<expr> } ] { <Achsname>[ ... ] }

<Achsname> Achsbezeichnung der Achse, auf die die M/H-Funktion wirken soll. Hierbei sind nur Bahnachsen zulässig.

M<expr> Anwenderspezifische M-Funktion mit achsspezifischer Wirkung.

H<expr> Anwenderspezifische H-Funktion mit achsspezifischer Wirkung.

Programmierbeispiel

:

N10 S1000 M3 X100 X[M20 H12] Y[H10] (S, M3 wirken auf die Hauptspindel)
(M20, H12 wirken auf die X-Achse)
(H10 wirkt auf die Y-Achse)
:

Der Anwender hat somit die Möglichkeit sehr flexibel seine speziellen M/H-Funktionen durch Programmierung oder Konfigurierung achsspezifisch oder kanalspezifisch auszuführen.

Programmierbeispiel


M/H-Funktionen mit optionaler Zusatzinformation

Bei M/H-Funktionen kann im NC-Programm optional ein Zusatzwert programmiert werden, der über die Technologieschnittstelle mit der M/H-Funktion der SPS zur Verfügung gestellt wird.

Mit Ausnahme der Spindelfunktionen M03, M04, M05 und M19 sowie der Getriebeschaltfunktionen M40-M45 kann zu allen anwenderspezifischen M/H-Funktionen sowie zu den internen M-Funktionen M00, M01, M02, M17, M29 und M30 ein Zusatzwert programmiert werden. Die M/H-Funktionen können hierbei ohne Einschränkungen sowohl in kanal- als auch in achsspezifischer Programmiersyntax verwendet werden.

M <expr> [ =<Additive_expr> ]

bzw.

H<expr> [ =<Additive_expr> ]

M<expr> Anwenderspezifische M-Funktion

H<expr> Anwenderspezifische H-Funktion

< Additive_expr> Optionaler Zusatzwert, der als negative oder positive Ganzzahl direkt oder als allgemeiner mathematischer Ausdruck programmiert wird.

Programmierbeispiele

%m_h_add_fkt

(M-Funktionen mit Zusatzwert)

N10 M52=-345

N20 M12=123 (mit Kanalparameter m_default_outp_ax_name[12] Z)

N30 M10=321 (mit Kanalparameter m_default_outp_ax_name[10] S)

N35 P1 = 567 P2 = 345

N40 X[M54=P1]

N50 S[REV 1000 M03 M63=-789]

N60 M12=123 M10=321 M52=-345 X[M54=567] S[REV 1000 M03 M63=-789]

N70 M63=-789 M52=-P2 M54=567

N80 X[M52=-345 M54=567] Y[M63=-789] S[M05 M63=789 M54=-567] M54 M63

(H-Funktionen mit Zusatzwert)

N110 H5=-345

N120 H6=123 (mit Kanalparameter h_default_outp_ax_name[6] Z)

N130 H9=321 (mit Kanalparameter h_default_outp_ax_name[9] S)

N135 P3 = 567 P4 = -345

N140 X[H7=P3]

N150 S[REV 1500 M04 H8=-789]

N160 H6=123 H9=321 H5=-345 X[H7=567] S[REV 1500 M04 H8=-789]

N170 H8=-789 H5=P4 H7=567

N180 X[H8=-789 H4 H5=-345] Y[H7=567] S[M05 H5=345 H7=567] H3 H8

(Gemischte M/H- Funktionen mit Zusatzwert)

N200 X[M52=-345 H4 H8=-789 M54=567 H5=345] H3=333 M54=444 H7=567 M63

(M/H- Funktionen mit Zusatzwert in achsspezifischer Funktion(INDP))

N05 X[INDP G90 G01 FEED=2000 POS=555 M54=151 H8=-181]

N999 M30=111


Werkzeugplatzanwahl (T-Wort)

T <expr> Werkzeugplatzanwahl (modal)

Der Werkzeugbefehl bestimmt das für den Bearbeitungsabschnitt benötigte Werkzeug. Die Werkzeugnummer wird an die SPS nach außen weitergereicht, die dann in einem Werkzeugmagazin das angewählte Werkzeug für einen Werkzeugwechsel bereitstellt. Es ist zu beachten, daß das T-Wort selbst keinen Einfluß auf die steuerungsinterne Verrechnung der Werkzeuggeometrie (Werkzeugdaten) hat. Hierzu wird das D-Wort verwendet, welches jedoch bei entsprechender Parametrierung [1]-9 automatisch mit dem T-Wort ausgelöst wird.

Das T-Wort initiiert noch keinen Werkzeugwechsel. Dies erfolgt üblicherweise mit der Maschinenfunktion M06.

Die Werkzeugdaten [5], [6]-9.7 werden innerhalb der Werkzeugdatentabelle des Decoders abgelegt [6]-9.1. Daneben besteht alternativ die Möglichkeit, über eine zusätzliche Schnittstelle mit einer vom Anwender bereitgestellten ggf. dezentralen (externen) Werkzeugverwaltung zu kommunizieren und Werkzeugdaten anzuforden. Dieser interne bzw. externe Zugriff auf Werkzeugdaten wird parametriert [1]-10.

Um Wartezeiten aus der Bereitstellung und Übermittlung der Werkzeugdaten zu vermeiden, wird das von außen bereitzustellende Werkzeug üblicherweise einen oder mehrere Bewegungssätze vor der eigentlichen Einrechnung der Werkzeugdaten angefordert [1]-11. Werden mehrere eventuell verschiedene T-Nummern programmiert, bevor die der ersten T-Nummer entsprechende D-Nummer erscheint, so werden alle T-Nummern vor der zuletzt programmierten ignoriert, d. h. die von der externen Werkzeugverwaltung gelieferten Daten werden verworfen, falls die D-Nummer des Werkzeugs nicht mit der letztprogrammierten T-Nummer übereinstimmt.


Geschwindigkeiten (F-, E-)

F <expr> Vorschubgeschw. am Satzanfang (modal)

E <expr> Vorschubgeschw. am Satzende (nicht modal)

Die Funktionalität "Vorschubgeschwindigkeit am Satzende" ist nicht implementiert.

Bei den Interpolationsarten G1, G2, G3, G100, G105 werden die programmierten Bahnen mit der im F-Wort vereinbarten Bahngeschwindigkeit abgefahren (Vorgabe in mm/min, m/min, inch/min, mm/s, inch/s, etc. bei translatorischen Achsen bzw. °/min für Rotationsachsen je nach Konfigurierung). Das F-Wort ist dabei haltend wirksam.

Dem F-Wort können Werte direkt oder per Parameter zugewiesen werden, wobei auch Dezimalzahlen (REAL64-Format) zulässig sind.

Mit dem Befehl "G93" ist es auch möglich, über das F-Wort statt einer Bahngeschwindigkeit eine Bearbeitungszeit vorzugeben. Die Beschreibung befindet sich im Kapitel "G-Funktionen".

Programmierbeispiel

N10 F1000 G01 X200 G90 (Vorschubgeschw. 1000 mm/min)

N20 X300

N30 X350 F800 (Absenken der Vorschubgeschw.)

(von 1000 auf 800 mm/min)

Abbildung 6-1: Vorschubprogrammierung mit dem F-Wort


Die N-Funktion

Mit dem Adressbuchstaben "N" kann die NC-Satznummer programmiert werden. Diese Nummer wird bei entsprechender Konfigurierung sowohl in die Anzeigedaten, als auch in die Fehlermeldungen eingetragen (alternativ dazu kann auch der Offsetwert im File verwendet werden).

N <expr>

Die Satznummer kann mit allgemeinen mathematischen Ausdrücken programmiert werden. Dies erlaubt insbesondere die Wertzuweisung über Parameter, z.B. über den Laufparameter in Programmschleifen. Der berechnete Zahlenwert wird intern automatisch gerundet und in eine Ganzzahl gewandelt.

Programmierbeispiel

N10 G01 X200 F500

N20 $FOR P1=1, 10, 1

N[P1*100] XP1

.

.

N30 $ENDFOR

Für den Programmablauf ist die Satznummer ohne Bedeutung. Sie muß daher auch nicht in aufsteigender Form verwendet werden.


Unterprogrammtechniken

Mehrfach zu wiederholende gleiche Bewegungsfolgen und Funktionsabläufe können als Unterprogramme realisiert werden. Es werden zwei Arten von Unterprogrammen unterschieden:

q lokale Unterprogramme,

q globale Unterprogramme bzw. Zyklen.

Mehrere Unterprogramme (lokal oder global) können ineinander geschachtelt aufgerufen werden, wobei die Anzahl verwendeter Unterprogramme, sowie die Schachtelungstiefe fest vorgegeben sind -6.24.

Die Übergabe von Größen vom Hauptprogramm an das Unterprogramm erfolgt indirekt über P-Parameter bzw. bei Zyklen direkt im Aufruf über spezifische Versorgungsparameter (@P...).

Mehr:

button Lokale Unterprogramme (Aufruf LL <string>)

button Globale Unterprogramme (Aufruf L <string>)

button Parametrierter Unterprogrammaufruf (LL / L V.E. ...)

button Impliziter globaler Unterprogrammaufruf bei Programmstart

button Zyklen als globale Unterprogramme (Aufruf L CYCLE)


Lokale Unterprogramme (Aufruf LL <string>)

Der Aufruf eines lokalen Unterprogramms vom Hauptprogramm aus erfolgt mit

LL <string> (Achtung: Leerzeichen zwischen "LL" und <string> ist zwingend erforderlich).

<string> Name des lokalen Unterprogramms

Lokale Unterprogramme (LUP) stehen zusammen mit dem Hauptprogramm in einem gemeinsamen Datenfile, wobei zuerst alle Unterprogramme vor dem eigentlichen Hauptprogramm aufgeführt sein müssen.

Es ist zu beachten, daß lokale Unterprogramme nur von dem Hauptprogramm im gleichen Datenfile aufgerufen werden können.

Lokale Unterprogramme beginnen mit "%L "und einer Programmbezeichnung. Zwischen "L" und der Programmbezeichnung muß mindestens ein Trennzeichen stehen.

Das Unterprogrammende wird durch die Funktionen M17 oder M29 markiert. Ein Programmabbruch ist mit M02 und M30 möglich. Es wird dann ein Warnhinweis gegeben.

Fehlen diese Programmendekennungen, so beendet "%" (erstes Zeichen des folgenden Hauptprogramms) das Unterprogramm.

Programmierbeispiel

Aufbau eines Datenfiles, bestehend aus NC-Hauptprogramm und lokalen Unterprogrammen:

%L UP1 (1. lokales Unterprogramm)

N1 .....

N2 .....

N9 M17 (M17 kann auch entfallen)

%L UP2 (2. lokales Unterprogramm)

N11 .....

N12 .....

N19 M29 (M29 kann auch entfallen)

%100 (Hauptprogramm)

N100 .....

N105 .....

N200 LL UP1 (Aufruf des 1. LUPs)

.

N250 LL UP2 (Aufruf des 2. LUPs)

.

N300 M30 (Hauptprogrammende)

Vor der Definition eines Programmes sind keine NC-Befehle erlaubt. Hier findet sich eine Ausnahme der Regel, daß die Reihenfolge im NC-Satz für die Programmbearbeitung ohne Bedeutung ist (vgl. Kapitel 2.5).


Globale Unterprogramme (Aufruf L <string>)

Der Aufruf eines globalen Unterprogramms erfolgt mit

L <string> oder L <string>

<string> Name des globalen Unterprogramms

Globale Unterprogramme (GUP) stehen als eigenständige Programmeinheiten in einem separaten Datenfile. Der Aufruf eines globalen Unterprogramms erfolgt nicht über den Unterprogrammnamen, sondern über die Bezeichnung dieses Datenfiles, das wiederum aus lokalen Unterprogrammen und einem Hauptprogramm bestehen kann. Die Angabe eines Namens des globalen Unterprogramms (%<Prog_Name>) ist nur erforderlich, um nach lokalen Unterprogrammen den Beginn des Hauptprogramms (hier als globales Unterprogramm verwendet) anzuzeigen. Sie kann also entfallen, falls keine lokalen Unterprogramme im Datenfile enthalten sind.

Das aufrufende Hauptprogramm ist ebenfalls als eigenständige Programmeinheit auf einem anderen Datenfile abgelegt. Globale Unterprogramme können von allen Hauptprogrammen aufgerufen werden.

Programmierbeispiel

Aufruf von lokalen und globalen Unterprogrammen

%L LUP (lokales Unterprogramm)

N11 .....

N12 .....

.

.

N19 M17 (M17 kann auch entfallen)

%333 (Hauptprogramm)

N100 .....

N105 .....

N110 LL LUP (Aufruf des lokalen Unterprogramms LUP)

.

N200 L GUP_FILE (Aufruf eines globalen Unterprogramms über Name des)

. (Datenfiles, in dem dieses GUP abgelegt ist)

N300 M30

Im nächsten Beispiel kann der Name des globalen Unterprogrammes entfallen, da der Aufruf über den Namen des Datenfiles erfolgt und in diesem Datenfile keine lokalen Unterprogramme enthalten sind.

Programmierbeispiel

Aufbau des Datenfiles GUP_FILE mit globalem Unterprogramm:

(globales Unterprogramm GUP)

N10 .....

.....

N90 M17 (Hier muß ein M17 oder M29 stehen)

Übersicht über Programmdefinition und aufruf:

Hauptprogramm

Definition: | %PROG_NAME oder % PROG_NAME | Die Programmdefinition ist nur dann notwendig, wenn lokale Unterprogramme vorhanden sind
Aufruf: | über die Bedienung durch Angabe des Filenamens |

Globales Unterprogramm

Definition: | wie Hauptprogramm
Aufruf im NC-Programm: | LFILE_NAME oder L FILE_NAME

Lokales Unterprogramm

Definition: | %L PROG_NAME | Trennzeichen zwischen "L" und Programm-definition, da es sich sonst um die Definition eines Hauptprogramms handelt
Aufruf im NC-Programm: | LL PROG_NAME | Trennzeichen zwischen "LL" und Programm-aufruf, da es sich sonst um den Aufruf eines globalen Unterprogramms handelt

Wird im File außerhalb von Kommentaren als erstes Zeichen ein solches gefunden, das weder ein Trennzeichen noch ein "%" ist, so wird dieses Zeichen als erstes Zeichen eines namenlosen Hauptprogrammes gewertet. Das bedeutet auch, daß vor "%" keine Satznummern programmiert werden dürfen.


Parametrierter Unterprogrammaufruf (LL / L V.E. ...)

Anstelle von festen Namen kann der Aufruf von lokalen sowie globalen Unterprogrammen auch über externe Variablen erfolgen. Dies ermöglicht einen von außen parametrierbaren Ablauf des NC-Programms. Die externen Variablen müssen vom Typ String bzw. Stringarray sein (siehe auch Kapitel 13.5).

Der Aufruf eines lokalen Unterprogramms vom Hauptprogramm aus erfolgt mit

LL V.E. ... (Achtung: Leerzeichen zwischen "LL" und V.E. ... zwingend erforderlich).

V.E. ... Über externe Variable parametrierter Name des lokalen Unterprogramms

Der Aufruf eines globalen Unterprogramms erfolgt mit

LV.E.  oder L V.E.

V.E. ... Über externe Variable parametrierter Name des Datenfiles, in dem dieses
globale Unterprogramm abgelegt ist.

Ansonsten gelten die gleichen Programmierregeln wie in den Kapitel 8.1 und 8.2 beschrieben.

Programmierbeispiel 1

Aufruf von Unterprogrammen über externe Variablen vom Typ String

%L TASCHE (lokales Unterprogramm)

N10 .....

.

N99 M17

%MAIN (Hauptprogramm)

N100 .....

N105 .....

N110 LL V.E.LUP (Aufruf des lokalen Unterprogramms über ext.)
(Variable V.E.LUP, die den String TASCHE enthält)

.

N200 L V.E.GUP (Aufruf des globalen Unterprogramms über ext.)
(Variable V.E.GUP, die den String eines Datenfiles)
(enthält)

N300 M30

Programmierbeispiel

Aufruf von Unterprogrammen über externe Variablen vom Typ Stringarray

%L TASCHE_1 (lokales Unterprogramm 1)

N10 .....

.

N99 M17

%L TASCHE_2 (lokales Unterprogramm 2)

N10 .....

.

N99 M17

%L TASCHE_3 (lokales Unterprogramm 3)

N10 .....

.

N99 M17

%MAIN (Hauptprogramm)

N100 .....

N105 $FOR P1 = 1,3,1

N110 LL V.E.LUP[P1] (Aufruf der lokalen Unterprogramme über ext.)
(Variablen V.E.LUP[1], V.E.LUP[2],V.E.LUP[3])
(welche die Strings TASCHE_1, TASCHE_2, TASCHE_3)
(enthalten)

N120 $ENDFOR

.

N205 $FOR P2 = 1,5,1

N210 L V.E.GUP[P2] (Aufruf der globalen Unterprogramme über ext.)
(Variablen V.E.GUP[1], V.E.GUP[2]..., welche die)
(Strings der Datenfiles enthalten)

N220 $ENDFOR

N300 M30


Impliziter globaler Unterprogrammaufruf bei Programmstart

Häufig müssen beim Start unterschiedlicher NC Hauptprogramme immer wiederkehrende gleichbleibende Initialisierungen von Daten durchgeführt werden. Werden diese Initialisierungen in einem globalen Unterprogramm zusammengefaßt, so besteht über den Kanalparameter [1]-44 die Möglichkeit, dieses Programm bei jedem NC Programmstart implizit als erste Aktion ausführen zu lassen [CHAN].

In diesem globalen Unterprogramm kann der volle Funktionsumfang der NC-Programmierung genutzt werden. D.h. es verhält sich genauso wie ein Unterprogrammaufruf mit dem L-Wort im NC Hauptprogramm.

In erster Linie dient dieser Mechanismus zur Initialisierung, Definition und Voreinstellung von Verschiebungen, G-Funktionen, Parameterwerten, Variablen etc.. Konkrete Bearbeitungsvorgänge sollten hier nicht programmiert sein.


Zyklen als globale Unterprogramme (Aufruf L CYCLE)

Zyklen stehen im NC-Kern in der Form globaler Unterprogramme zur Verfügung und ermöglichen spezielle Bearbeitungsvorgänge wie zum Beispiel das Tieflochbohren oder das Taschenfräsen. Die im Zyklus definierte Bearbeitungsaufgabe ist in allgemeiner Form geschrieben. Die Datenversorgung erfolgt beim Zyklusaufruf mit der Belegung der Versorgungsparameter.

Ein Zyklus ist unabhängig von der aktuell gültigen Ebene (G17, G18, G19) und unabhängig von den im NC-Kanal konfigurierten Achsnamen programmiert. Lediglich die Richtung, aus der die Bearbeitung in der aktuellen Ebene durchgeführt werden soll, muß beim Zyklusaufruf angegeben werden. Im Zyklus kann auf eine eigene gekapselte Gruppe von Parametern zugegriffen werden. Diese werden beim Zyklusaufruf mit Werten belegt.

Hierzu steht eine spezielle Syntax zur Verfügung, die durch das @-Zeichen charakterisiert ist. Dieses Zeichen wird in der Zyklenprogrammierung verwendet in Verbindung mit:

@Pxx Versorgungsparameter im Zyklusaufruf und Zyklus

@X, @Y, @Z Hauptachsen im Zyklus

@I, @J, @K Mittelpunktskoordinaten im Zyklus

@S Hauptspindel im Zyklus

Der Zyklusaufruf muss in einem eigenen NC-Satz ohne weitere NC-Befehle programmiert werden. Die Syntax besteht aus einem globalen Unterprogrammaufruf mit zusätzlicher Angabe der zyklusabhängigen Versorgungsparameter.

L CYCLE [ NAME=<cycle_name> [MODAL] @P1=<expr>  @P30=<expr> ]

NAME=<cycle_name> Name des Zyklus (Dateiname)

MODAL Modaler Zyklusaufruf. Nach jedem weiteren NC-Satz im Hauptprogramm, der Bewegungsbefehle enthält, wird der Zyklus erneut implizit ausgeführt.

Die Abwahl der modalen Wirkung erfolgt durch den NC-Befehl #DISABLE MODAL CYCLE.

@P1<expr>... Auflistung der Versorgungsparameter.

... @P30<expr> Es können maximal 30 @Pxx-Parameter vom Typ REAL übergeben werden. Schreib- und Lesezugriffe sind nur innerhalb eines Zyklus erlaubt. Den @Pxx-Parametern können direkt Werte, beliebige Variablen, P-Parameter und mathematische Ausdrücke übergeben werden.

Innerhalb der Klammerung ist keine Reihenfolge bei der Angabe der Schlüsselworte und Versorgungsparameter erforderlich. Bei der Programmierung muss der Anwender lediglich wissen, welche @Pxx-Parameter für den Zyklus belegt werden müssen.

Nicht benötigte Parameter können weggelassen werden. Nicht programmierte @Pxx-Parameter sind beim Aufruf mit 0 (Null) initialisiert. Ob ein Parameter programmiert (gültig) ist, kann im Zyklus über die Variable V.G.@P[i].VALID ermittelt werden. Die Versorgungsparameter bleiben bis zum programmierten Aufruf eines anderen Zyklus erhalten.

Im Zyklusaufruf programmierte, aber im Zyklus selbst nicht verwendete Versorgungsparameter werden ignoriert.

Ein Zyklus ist eine abgeschlossene NC-Programmeinheit mit einer definierten Bearbeitungsaufgabe. Es wird empfohlen, die Schachtelung von Zyklen zu vermeiden, da dabei die Gefahr der Mehrfachbelegung von Versorgungsparametern besteht.

Versionsspezifisch sind in der Defaulteinstellung im laufenden NC-Programm oder im Einzelsatzbetrieb während der Ausführung eines Zyklus in der Anzeige die Bearbeitungszeilen des Zyklus ausgeblendet oder sichtbar. Bei aktiver Ausblendung wird in dieser Zeit nur der Zyklusaufruf angezeigt.

Bei TwinCat-Systemen sind per Default in der Anzeige alle Zykluszeilen sichtbar.

Dieses Verhalten kann über den Kanalparameter [1]-52 geschaltet werden.

Erforderliche Definitionen vor Zyklusaufruf:

· Die vor dem Zyklusaufruf aktiven modalen G-Funktionen, sowie Kreisgeometriedaten und der aktuell aktive Vorschub (F-Wort) bleiben über den Zyklus hinaus erhalten. Dieses Verhalten kann über den Kanalparameter [1]-51 geschaltet werden.

· Modale G-Funktionen, die in Verbindung mit Achsnamen programmiert sind (z.B. G92, G98, G99, G100, G112, G130 ...) werden nicht wieder hergestellt, wenn diese im Zyklus selbst programmiert wurden.

· Die Bearbeitungsebene (G17, G18, G19) sollte vor dem Zyklusaufruf im übergeordneten NC-Programm definiert werden. Die senkrecht auf dieser Ebene stehende Achse ist dann bei Bohrzyklen die Achse, in der die Bohrung ausgeführt wird und bei Fräszyklen die Zustellachse für die Tiefe.

· Auch eventuelle Werkzeuggeometriekorrekturen (z.B. Längenkorrektur) müssen vor Aufruf des Zykluses angewählt werden.

· Die erforderlichen Werte für Vorschub, Spindeldrehzahl und Spindeldrehrichtung sind im übergeordneten NC-Programm festzulegen, es sei denn, entsprechende Versorgungsparameter sind im Zyklus vorhanden.

· Die in den Zyklen programmierten Spindelbefehle beziehen sich stets auf die aktive Hauptspindel des NC-Kanals. Es ist sicherzustellen, dass diese Hauptspindel vor dem Zyklusaufruf definiert wurde.

· Die Startposition für eine entsprechende Bohr- oder Fräsbearbeitung sowie die Orientierung des Werkzeuges sind stets vor dem Zyklusaufruf im übergeordneten NC-Programm anzufahren.

Abwahl eines modalen Zyklus:

Mit nachfolgendem NC-Befehl wird ein modal wirkender Zyklus (Schlüsselwort MODAL im Zyklusaufruf) abgewählt. Der Befehl muss allein im NC-Satz programmiert werden.

#DISABLE MODAL CYCLE

Verfügbare Zyklen

Für die Bearbeitungsaufgaben

· Bohren

· Gewindebohren

· Helikalfräsbohren

· Taschenfräsung

stehen parametrierbare Zyklen zur Verfügung. Nähere Informationen zur Programmierung und Verwendung siehe Funktionsbeschreibung "Zyklen (C21)" ([FCT-C21])

Programmierbeispiel

Am Beispiel eines Zyklusaufrufes zum Bohren (drill.cyc) werden im folgenden die verschiedenen Möglichkeiten der Parameterbelegung dargestellt.

Der Bohrzyklus drill.cyc benötigt folgende Versorgungsparameter:

@P1 -> Position der Rückzugsebene (absolut)

@P2 -> Position der Bearbeitungsebene (absolut)

@P3 -> Sicherheitsabstand (ohne Vorzeichen)

@P4 -> Endbohrtiefe (absolut) oder

@P5 -> Endbohrtiefe relativ zur Bearbeitungsebene (ohne Vorzeichen)

Zyklusaufruf mit konstanten Werten:

..

Nxx L CYCLE [NAME=drill.cyc @P1=110 @P2=100 @P3=4 @P4=40]

..

oder mit Angabe einer relativen Bohrtiefe @P5:

..

Nxx L CYCLE [NAME=drill.cyc @P1=110 @P2=100 @P3=4 @P5=60]

..

Zyklusaufruf mit Variablen:

Die Variablen müssen vor dem Zyklusaufruf definiert und mit Werten belegt werden.

..

#VAR

V.L.RPL = 110

V.L.WPL = 100

V.L.SDST = 4

V.L.DEP = 50

#ENDVAR

Nxx L CYCLE [NAME=drill.cyc @P1= V.L.RPL @P2=V.L.WPL @P3=V.L.SDST @P4=V.P.DEP]

..

Zyklusaufruf mit P-Parametern:

Die Parameter müssen vor dem Zyklusaufruf definiert und mit Werten belegt werden.

..

Nxx P10 = 110

Nxx P11 = 100

Nxx P15 = 4

Nxx P17 = 50

Nxx L CYCLE [NAME=drill.cyc @P1= P10 @P2=P11 @P3=P15 @P4=P17]

..

Zyklusaufruf mit mathematischen Ausdrücken:

..

Nxx P20 = 100

Nxx L CYCLE [NAME=drill.cyc @P1= 10+P20 @P2=2*50 @P3=5-1 @P4=P20/2]

..

Zyklusaufruf mit konstanten Werten, Reihenfolge der Parameter in der Klammerung beliebig:

..

Nxx L CYCLE [@P4=40 NAME=drill.cyc @P2=100 @P3=4 @P1=110]

..

Zyklusaufruf mit konstanten Werten, Zyklus soll modal wirken:

..

Nxx L CYCLE [NAME=drill.cyc @P1=110 @P2=100 @P3=4 @P4=40 MODAL]

..

Beispiel:

%drill_main

N05 T1 D1

N10 M06

N15 X0 Y0 Z0 G0 G90 F200 S300 M3 G53 G17

N20 Z110

N30 X40 Y40 (Bohrposition 1)

N40 L CYCLE [NAME=drill.cyc MODAL @P1=110 @P2=100 @P3=2 @P4=55]

N50 X60 Y60 (Bohrposition 2 und impliziter Zyklusaufruf, da modal)

N60 X100 Y60 (Bohrposition 3 und impliziter Zyklusaufruf, da modal)

N70 X100 Y20 (Bohrposition 4 und impliziter Zyklusaufruf, da modal)

#DISABLE MODAL CYCLE

N80 X0 Y0 M5

N100 M30

Hinweise für das Erstellen von Zyklen

Zyklen müssen so weit wie möglich allgemeingültig und unabhängig von den aktuell im NC-Kanal verwendeten Achsnamen und der Ebenenfestlegung programmiert sein. Zu diesem Zweck besteht im Zyklus die Möglichkeit, für die ersten drei Hauptachsen die ebenenunabhängigen neutralen Achsnamen @X, @Y und @Z zu verwenden. Hierbei bedeutet

@X -> immer die erste Hauptachse

@Y-> immer die zweite Hauptachse

@Z -> immer die dritte Hauptachse

Beispiel: Achsen im Zyklus

Nxx G91 @X=@P1 @Y=@P2 @Z=@P3 F1000 G01

Analog dazu stehen auch bei der Kreisprogrammierung s.g. neutrale Mittelpunktskoordinaten zur Verfügung. Hierbei bedeutet

@I -> immer die Mittelpunktskoordinate in der ersten Hauptachse

@J-> immer die Mittelpunktskoordinate in der zweiten Hauptachse

@K -> immer die Mittelpunktskoordinate in der dritten Hauptachse

Beispiel: Kreis im Zyklus

Nxx G91 G02 @X=@P1 @Y=@P2 @I=@P4 @J=@P5 F1000

Um auch bei der Spindelprogrammierung vom konfigurierten Spindelnamen unabhängig zu sein, kann im Zyklus die Hauptspindel immer mit dem neutralen Spindelnamen @S angesprochen werden.

@S -> immer die Hauptspindel

Beispiel: Spindel im Zyklus

Nxx @S=1000 M3 (Hauptspindel cw mit 1000 U/min)


Parameter und Parameterrechnung

Parameter können in NC-Programmen als Platzhalter für Zahlenwerte verwendet werden. Der Vorteil von Parametern liegt darin, daß der Wert eines Parameters während des Programmablaufes verändert werden kann. Dies erlaubt die Erstellung flexibler NC-Programme.

Konfigurationsabhängig wird entweder das R- oder das P-Wort zur Parameterbezeichnung verwendet [6]-6.44. In den hier beschriebenen Beispielen werden P-Parameter eingesetzt.

Programmierbeispiel

In einem Unterprogramm, z.B. einem Bohrzyklus, werden anstelle von Koordinatenwerten (Bohrtiefe, Bohrvorschub, Verweilzeit usw.) Parameter verwendet. Die Parameter werden dann im jeweils aufrufenden Hauptprogramm mit den endgültigen Werten belegt:

Der Aufruf im Hauptprogramm sieht dann wie folgt aus:

:

N100 P10=20.5 P11=12.6 P12=1.2

N110 L4712

:

Abbildung 9-1: Anwendungsbeispiel zur Parameterrechnung

P <expr> einfacher Parameter

P<expr> Der Parameterindex muß immer größer Null sein, kann jedoch einen beliebigen Wert annehmen. Die maximale Anzahl zu verwendender Parameter im Kanal ist fest vorgegeben [6] -6.19.

Zusätzlich zu einfachen Parametern sind auch Parameter-Arrays (z.B. P100[50]) erlaubt. Die Dimension des Arrays ist fest vorgegeben [6]-6.20 .

P <expr> [ <expr> ] { [<expr>] } Parameterarrays

Bei entsprechender Parametrierung [1]-12 sind die P-Parameter programmübergreifend wirksam.

Parameter können im NC-Programm entweder in einem Deklarationsblock angelegt (und ggf. initialisiert) werden, der mit #VAR beginnt und mit #ENDVAR abgeschlossen wird, oder implizit beim ersten Schreibzugriff. Parameter-Arrays müssen allerdings immer in einem Deklarationsblock angelegt werden. Zur besseren Übersicht kann die Initialisierung eines Parameter-Arrays mit dem \-Zeichen auch über mehrere NC-Zeilen geschrieben werden. Folgende Syntax wird zum Anlegen verwendet:

#VAR Beginn des Deklarationsblockes

:

: Deklarations und Initialisierungsbereich

:

#ENDVAR Ende des Deklarationsblockes

Programmierbeispiel

#VAR

P10[3][6] = [10,11,12,13,14,15, \

20,21,22,23,24,25, \

30,31,32,33,34,35 ]

P20[3][4] = [40,41,42,43, 50,51,52,53, 60,61,62,63]

P100

#ENDVAR

P200 = 10 P201=11

:

Parameter und Parameter-Arrays können im NC-Programm auch wieder gelöscht werden. Hierzu steht der Befehl #DELETE mit folgender Syntax zur Verfügung:

#DELETE P <expr> {,P<expr>}

Programmierbeispiel

#DELETE P10, P20, P100, P200, P201

Desweiteren stehen die SIZEOF- und die EXIST-Funktion zur Verfügung (siehe Kapitel 2.6.1.3), die die Dimensionsgröße von Parameter-Arrays ermitteln und die Existenz von Parametern überprüfen.

Mehr:

button Wertzuweisung von Parametern

button Parameterrechnung

button Zuweisung von Parametern zu Adreßbuchstaben

button Indirekte Parameter

button Externer Zugriff auf Parameter


Wertzuweisung von Parametern

In der Art der Wertzuweisung unterscheidet man interne und externe Parameter. Interne Parameter erhalten ihre Wertzuweisung durch das NC-Programm, z.B. P12=0.12, während externen Parametern steuerungs- oder prozeßabhängige Werte in applikationsabhängigen Programmteilen des Steuerungssystems zugewiesen werden.

Zugewiesen werden können z.B.:

q aktuelle Spindeldrehzahlen,

q Momente in den Antrieben,

q Werte externer Meßvorrichtungen,

q Werte von Wärme- oder Kraftsensoren,

q Tastatureingaben über das Bedienmenü

usw.

Externe Parameter erlauben also die Verarbeitung von Prozeßgrößen im NC-Programm. Sie müssen aber durch die Applikation eingerichtet werden. Ein Beispiel für die Verwendung von externen Parametern ist in Kapitel 9.5 aufgeführt.


Parameterrechnung

Anstelle der direkten Zuweisung von Zahlen können auch verkettete arithmetische Ausdrücke verwendet werden (s. a. Kap. 2.6.1) Bei der Eingabe gelten die bekannten mathematischen Regeln wie

- Punkt-vor-Strich-Rechnung,

- die Klammer-Regel, wobei aber eckige Klammern "[ ]" zu verwenden sind.


Zuweisung von Parametern zu Adreßbuchstaben

Die Syntax bei der Zuweisung von Parametern zu den Achsbezeichnungen ist:

<Achsname>P<expr>

<Achsname> Achsbezeichnung der Achse

P<expr> Zugewiesener Parameter

P<expr> kann auch durch einen mathematische Ausdruck gebildet werden.

Programmierbeispiel

X P1*SIN [P2*30]


Indirekte Parameter

Indirekte Parameter werden in arithmetischen Ausdrücken und bei Zuweisungen wie direkte Parameter verwendet. Abhängig vom Modus [6]-6.44 sind folgende Fälle zu unterscheiden:

Fall 1: Nur das P-Wort ist für Parameter zugelassen

Sowohl die direkte (Pnn) als auch die indirekte Programmierung (PPnn) erfolgt ausschließlich über das P-Wort. Hierbei gilt bei Verwendung von indirekten Parametern:

PPnn zeigt auf den Parameter Pnn.

Bei der Initialisierung eines PPnn wird die Adresse eines Pnn zugewiesen. Auch die Verwendung von PPP... ist möglich.

Beispiel:

Mit P120=10 wird der Wert 10 in den Parameter 120 geladen. Die Anweisung PP120=123.456 ordnet aber diesen Wert dem Parameter zu, dessen Adresse in P120 steht, also P10. Entsprechend führt PP121=SQRT[2.0] zu folgendem Ergebnis:

Abbildung 9-2: Veranschaulichung der Wirkung indirekter P-Parameter

Fall 2: R-Wort als direkter Parameter, P-Wort als indirekter Parameter

Die direkte Programmierung erfolgt über das R-Wort (Rnn), die indirekte über das P-Wort. Die Parametertabelle muß in diesem Modus zuerst über das R-Wort belegt werden, bevor mit dem P-Wort indirekt zugegriffen werden kann. Da das P-Wort ausschließlich indirekt wirkt, muß hier nicht mit PP programmiert werden.

"Pnn" zeigt also der DIN entsprechend auf den Parameter, dessen Index im Feld "nn" der Parametertabelle abgelegt ist.

Beispiel:

Die Verwendung indirekter Parameter erlaubt es, z.B. ganze Felder von Parametern zu belegen:

Programmierbeispiel

Belegung der P-Parameter P20 und P40 mit 50

N110 P1 = 20 P2 = 40

N120 PP1 = 50

N130 PP2 = PP1

Belegung der P-Parameter P15 bis P25 mit 0.0

N110 $FOR P1 = 10,20,1

N120 P[P1 + 5] = 0.0

N130 $ENDFOR

Es ist zu beachten, daß die Schachtelungstiefe bei der indirekten Adressierung von Parametern (PPPP...nn) konfigurationsabhängig ist.


Externer Zugriff auf Parameter

Um von einem parallelen Prozeß aus (z. B. Bedienungsteil, SPS) die Decodierung eines NC-Programmes beeinflussen zu können, kann über eine spezielle Schnittstelle ein externer Zugriff auf P-Parameter durchgeführt werden.

Programmierbeispiel

Von einer SPS aus soll der Programmablauf eines vom Decoder gestarteten NC-Programms beeinflußt werden

%Betriebsart

N000 P101 = 0 (P101 für die Fehlermeldung an die SPS)

N001 P102 = 0 (P102 zur Beeinflussung des Programmablaufs)

N002 $WHILE P102 == 0

N003 $ENDWHILE

N010 $SWITCH P102

N020 $CASE 1

N030 (Handbetrieb)

N040 $BREAK

N050 $CASE 2

N060 (Automatik-Betrieb)

N070 $BREAK

N080 $CASE 3

N090 (Referenzpunktfahrt)

N100 $BREAK

N110 $DEFAULT

N120 P101 = 100 (Fehlerzustand, Meldung an SPS)

N130 $ENDSWITCH

N140 M30

Man wird in den verschiedenen Case-Teilen Unterprogrammaufrufe vorsehen, um den Programmablauf zeitlich zu synchronisieren.

Es ist zu beachten, daß die P-Parameter ggf. als programmübergreifend zu kennzeichnen sind [1]-12, da sonst die externen P-Parameter am Programmanfang bzw. ende gelöscht werden und somit außerhalb eines NC-Programms nicht zur Verfügung stehen.


Anweisungen zur Beeinflussung des NC-Programmablaufes

Die Syntax für Steuersatzanweisungen lautet:

$ <Anweisung>

<Anweisung> Steuersatzstrings gemäß Kapitel 10.1 . Zwischen $ und <Anweisung> sind keine Leerzeichen erlaubt.

Anweisungen zur Beeinflussung des Programmablaufs (Steuersätze) erlauben die Realisierung von:

q Bedingten Sprüngen, um z.B. in Abhängigkeit eines Meßwertes optionale Bearbeitungsschritte auszulösen,

q Zählerschleifen, um mehrfach wiederkehrende Bearbeitungsschritte, z.B. beim Zeilenfräsen oder beim Bohren von Lochkreisen, einfach zu programmieren,

q Schleifen mit Laufbedingung, um mehrfach wiederkehrende Bearbeitungsschritte solange durchlaufen zu lassen, bis eine Abbruchbedingung erfüllt ist. Z.B. soll das Zustellen des Werkzeuges und ein Abspanvorgang solange durchgeführt werden, bis ein bestimmter Koordinatenwert erreicht ist. Schleifen können bei fehlender bzw. nicht erfüllter Laufbedingung als Endlosschleife programmiert werden.

Bei der Verwendung von Steuersätzen gelten die folgenden Regeln:

q In einem NC-Satz darf ausschließlich ein Steuersatz vorhanden sein!

q Steuersatzkonstrukte dürfen geschachtelt werden. Die Schachtelungstiefe ist fest vorgegeben.

q Vor einem Steuersatz darf nur die Satznummer und "/" stehen.

q Im ungültigen Zweig einer Steuersatzanweisung wird auf Syntaxfehler von Satznummern und weiteren (geschachtelten) Steuersatzanweisungen (siehe Beispiele der IF-ELSE-Verzweigung) überprüft.

Programmierbeispiel

Syntaxüberprüfung im ungültigen Zweig:

N10 $IF 0

N20 XY (Hier findet keine Syntaxprüfung statt)

N30 $ENDIF

N10 $IF 0

N20 ...

N30 $IF XY (Syntaxprüfung, da geschachtelte Steuersatzanweisung;)

(Fehlermeldung, da unbekannter Term)

N40 ...

N50 $ENDIF

N60 $ENDIF

N10 $IF 0

NXY (Syntaxprüfung bei Angabe der Satznummer;)

(Fehlermeldung, da unbekannter Term)

N30 $ENDIF

Wegen Ungenauigkeiten bei der Berechnung und internen Darstellung von Parametern können Vergleichsoperationen (siehe Kap. 2.6.1.3) in Steuersatzanweisungen zu einem falschen Ergebnis führen. Deshalb sollte in Zweifelsfällen nicht auf genaue Werte sondern einen Toleranzbereich abgeprüft werden.

Programmierbeispiel

FALSCH:

N10 $FOR P1 = 0, 10, 1

N20 P2 = P2 + 0.01

N30 $ENDFOR

N40 $IF P2 == 0.1 (Wegen Rechenungenauigkeiten kann P2)

N50 ... (ungleich 0.1 sein, sodaß der $ELSE-)

N60 $ELSE (Zweig durchlaufen wird)

N70 G04 X20

N80 $ENDIF

RICHTIG:

N10 $FOR P1 = 0, 10, 1

N20 P2 = P2 + 0.01

N30 $ENDFOR

N40 $IF [P1  0.1] <= .000001 (Überprüfung auf einen für die)

N50 G04 X5 (NC-Fertigung unproblematischen)

N60 $ELSE (Toleranzbereich; $IF-Zweig wird)

N70 ... (durchlaufen)

N80 $ENDIF

Mehr:

button Bedingte Sprünge

button Zählschleifen

button Schleifen mit Laufbedingung

button Beeinflussung von Schleifenabläufen


Bedingte Sprünge

Mehr:

button Die IF - ELSE - Verzweigung

button Der Sprungverteiler

button Die $GOTO-Anweisung


Die IF - ELSE - Verzweigung

TwinCAT CNC: Überblick

Die IF  ELSE  Verzweigung

Für die IF-ELSE-Verzweigung werden folgende Steueranweisungen benutzt:

$IF, $ELSE, $ELSIF, $ENDIF.

Die Verzweigung beginnt immer mit

$IF <expr>

und endet immer mit

$ENDIF

Die Steueranweisungen

$ELSE

und

$ELSEIF

sind optional und dienen dazu, Mehrfachverzweigungen aufzubauen.

Die Bedingung im $IF-Steuersatz wird geprüft, indem der mathematische Ausdruck auf "wahr" bzw. "nicht wahr" geprüft wird (TRUE und FALSE). Um auch dezimale Größen verwenden zu können, gilt die Bedingung als erfüllt (TRUE), wenn..

..der Betragswert des mathematischen Ausdruckes > oder = 0.5 ist.

Programmierbeispiel

N10 ...

N20 $IF P1 Nur wenn |P1| größer oder gleich 0,5 ist, werden die
Anweisungen N30 bis N50 abgearbeitet.

N30 ...

N40

N50

N60 $ENDIF

Aber auch folgendes ist möglich:

N10 ...

N20 $IF P1 >= 0.5 Nur wenn P1 grösser oder gleich 0.5 ist, werden die

Anweisungen N30 bis N50 abgearbeitet

N30 ...

N40

N50

N60 $ENDIF

Oder aber:

N10 ...

N20 $IF P1 > P2 Nur wenn P1 grösser P2 ist, werden die Anweisungen
N30 bis N50 abgearbeitet, ansonsten N70 bis N90

N30 ...

N40 ...

N50 ...

N60 $ELSE

N70 ...

N80 ...

N90 ...

N100 $ENDIF

Die Verwendung von ELSEIF erlaubt:

N10 ...

N20 $IF P1 == 0 Nur wenn P1 gleich 0 ist, werden die Anweisungen N30
bis N50 abgearbeitet, ansonsten wird in der
$ELSEIF-Bedingung geprüft,ob P2 >= 0.5 ist und
entspr. N70 bis N90 bzw. N110 bis N130 abgearbeitet.

N30 ...

N40

N50

N60 $ELSEIF P2>=0.5 Die $ELSEIF  Bedingung dient zum Aufbau
ineinandergeschachtelter Verzweigungen.

N70 ...

N80

N90

N100 $ELSE

N110 ...

N120

N130

N140 $ENDIF

1.) Entsprechend der Programmiersprache C existiert auch hier der Unterschied in der Syntax zwischen

Zuweisung: P5 = 3

und

Vergleich: $IF P5 == 3

2.) Für die Version 2.3 und frühere gilt: Weil bei mathematischen Ausdrücken immer die Folge...

Operator -> Term -> Operator -> Term -> usw.

...erwartet wird, müssen bei Vergleichsoperationen die Ausdrücke geklammert werden, denen ein Minuszeichen vorsteht ("-" wird als Operator interpretiert).

Programmierbeispiel

$IF P1 >= -5 falsch, da Term->Operator->Operator->Term

$IF P1 >= [-5] richtig, da Term->Operator->Term->Operator->Term


Der Sprungverteiler

Der Sprungverteiler erlaubt in Abhängigkeit eines arithmetischen Ausdrucks, verschiedene NC-Programmvarianten abzuarbeiten.

Für den Sprungverteiler werden die Steueranweisungen

$SWITCH, $CASE, $DEFAULT, $ENDSWITCH

verwendet.

Der Sprungverteiler beginnt immer mit:

$SWITCH <expr1>

gefolgt von mehreren

$CASE <expr2>

...

$BREAK

optional gefolgt von:

$DEFAULT

und endet immer mit

$ENDSWITCH

Programmierbeispiel

N100 $SWITCH P1=INT [P1*P2/P3] Wenn das Ergebnis des arithmetischen

Ausdrucks gleich 1 ist, dann werden die

N110 $CASE 1 Sätze nach $CASE 1 abgearbeitet (N120-140)

N120 ...

N130

N140 $BREAK

N150 $CASE P2 Ist das Ergebnis gleich P2, dann werden
die Sätze N160 ..N170 abgearbeitet.

N160 ...

N170 $BREAK

N300 $CASE n

N320 ...

N330 $BREAK

N350 $DEFAULT Der $DEFAULT Satz ist optional und dient
dazu, die NC-Sätze N360-N380 abzuarbeiten

N360 ... , wenn das Ergebnis des $SWITCH Satzes

N370 keinem der $CASE-Fälle entsprochen hat.

N380

N390 $ENDSWITCH

Der Vergleich des Ausdruckes <expr1> und <expr2> wird mit der internen REAL-Darstellung durchgeführt. Dabei werden die beiden Ausdrücke als gleich bewertet, wenn die Betragsdifferenz < 0.001 ist.

Die Ausdrücke <expr1> und <expr2> können auch negative Werte annehmen.


Die $GOTO-Anweisung

TwinCAT CNC: Überblick

Die $GOTO- Anweisung

Diese Funktionalität bietet neben der Unterprogrammtechnik oder der Verwendung von Steuersatzanweisungen ($IF, $FOR...) eine weitere Möglichkeit der Verzweigung in andere Programmteile. Durch das Setzen von Sprungmarken (s.g. Labeln) im NC-Programm kann durch Aufruf des GOTO-Befehls an jede Stelle des NC-Programmes gesprungen werden.

Es gibt zwei Möglichkeiten der Programmierung von Sprunganweisungen:

Expression  Label:

N <expr> : Definition

$GOTO N <expr> | $GOTO N<expr>: Sprungaufruf

String  Label:

[ <string> ] Definition

$GOTO [ <string> ] Sprungaufruf

Eigenschaften:

q Der Aufruf $GOTO kann im NC-Programm vor oder nach der Labeldefinition erfolgen. Die Suche nach einem Label wird vorwärts und rückwärts im Programm durchgeführt.

q Labelaufruf und Definition müssen immer in der gleichen Programmebene stattfinden (programmlokal). Programmsprünge zwischen Hauptprogramm und einem Unter-programm sowie Sprünge zwischen Unterprogrammen sind nicht zulässig (Abbildung 10-1).

q In Haupt-/ und Unterprogrammen können gleiche Label definiert werden.

q Es kann von mehreren Stellen im NC-Programm zum gleichen Label gesprungen werden.

q Eine $IF-Abfrage kann in der gleichen NC-Zeile mit einem $GOTO kombiniert werden. In diesem Fall darf kein zugehöriges $ELSE - $ENDIF programmiert werden.

q Vor und nach dem $GOTO-Befehl dürfen andere NC-Befehle in der gleichen Zeile programmiert werden. Der Sprung erfolgt jedoch erst als letzte Aktion im NC-Satz.

q Sprünge von außen in beliebige Ebenen eines $IF-$ELSE-$ENDIF- Steuersatz-blockes sowie innerhalb und zwischen diesen Ebenen sind möglich. Dann jedoch gilt diese Einsprungebene als gültig (d.h. es wird angenommen, dass die Bedingung wahr ist; siehe Programmierbeispiel).

q Sprünge innerhalb von $WHILE, $FOR, $DO, $REPEAT sind nicht erlaubt.

q Das vollständige Verlassen eines beliebigen Steuersatzkonstruktes mit $GOTO aus jeder Ebene heraus ist immer erlaubt.

q Label in Kommentaren (#COMMENT BEGIN, #COMMENT END) werden nicht erkannt.

q Bei String-Label werden Groß- und Kleinbuchstaben nicht unterschieden.

q Die maximale Anzahl von Expressionlabeln [6]-6.41 und Stringlabeln [6]-6.42 sowie die Stringlabellänge [6]-6.43 sind fest vorgegeben.

Programmierbeispiel

%goto

N05 P1=1

N06 P2=1

N10 G74 X1 Y2 Z3

N11 X0 Y0 Z0

N15 $IF P1==1 $GOTO N40: -> Sprung von außen nach N40 in einen
Steuerblock

N20 X10

N25 Y10

N30 $IF P1==2

N35 X20

N40: $IF P2==1

N45 X30

N50: Y30 $GOTO N65: -> Sprung nach N65 zwischen Steuersatzebenen
(IF-ELSE)

N55 $ELSE

N60 Y40

N65: X40

N70 $ENDIF

N80 Z99

N999 M30

Abbildung 10-1: Schematische Darstellung des Sprungbefehls $GOTO

Programmierbeispiel

N10 G1 XY

N20: X100 (Label Definition N20 J

$IF V.L.dummy_1 <100 $GOTO N20(Sprung zu Label N20 (or N20 J )

$IF V.L.dummy_1 >200

$GOTO [LABEL_1](Sprung zu Label [LABEL_1])

Y20

$ENDIF

[LABEL_1] X0 (Label Definition [LABEL_1])

N30 A0

$FOR V.P.my_var = 0, 4, 1

$IF V.L.dummy_2 <200 $GOTO [CONTINUE](Sprung zu Label [CONTINUE])

$SWITCH V.P.my_var

$CASE 0

V.P.AXE_X=V.P.GROUP[1].position[V.P.my_var]

$BREAK

$CASE 1

V.P.AXE_Y=V.P.GROUP[1].position[V.P.my_var]

$BREAK

$CASE 2

V.P.AXE_Z=V.P.GROUP[1].position[V.P.my_var]

$BREAK

$CASE 3

V.P.AXE_A=V.P.GROUP[1].position[V.P.my_var]

$DEFAULT

$ENDSWITCH

$ENDFOR

[CONTINUE] (Label Definition [CONTINUE])

N1000 ...

...

Mehr:

button Parametrierter Sprungaufruf


Parametrierter Sprungaufruf

Bei der Verwendung des $GOTO-Befehles können die Sprungmarkenziele auch in parametrierter Form programmiert werden. Dies ermöglicht einen von außen beeinflussbaren Ablauf des NC-Programms (z.B. von der PLC).

Beim Sprungaufruf von Expressionlabeln sind zur Darstellung der Satznummer <expr> alle im Rahmen des Sprachumfanges verfügbaren mathematischen Ausdrücke wie z.B. Parameter, lokale und globale Variablen sowie externe Variablen zulässig.

$GOTO N <expr> Sprungaufruf

Der Sprungaufruf von Stringlabeln kann über externe Variablen vom Typ String bzw. Stringarray parametriert werden (siehe auch Kapitel 13.5). Hierbei wird der Name der Sprungmarke in der externen Variablen abgelegt.

$GOTO V.E.  Sprungaufruf

Programmierbeispiel

N10 ...

:

N50 $GOTO NV.E.JUMP_EXPR (Sprung z.B. zu N200 über ext. Variable)
(V.E.JUMP_EXPR, die den Wert 200 enthält)

:

:

N100 $GOTO V.E.JUMP_STR (Sprung z.B. zu [CONTINUE) über ext. Variable)
(V.E.JUMP_STR, die den String CONTINUE enthält)

:

:

N200: ...

:

N500:

:

:

:

[CONTINUE]

:

N

812_end


Zählschleifen

Zählschleifen erlauben das n-malige Abarbeiten von Anweisungen. Die Anzahl der Schleifendurchgänge wird durch eine Zählvariable kontrolliert.

Die Syntax der Zählschleife beginnt mit:

$FOR P <expr> = <expr1>, <expr2>, <expr3>

und endet immer mit:

$ENDFOR

Dabei ist P<expr> die Zählvariable, deren Startwert durch <expr1>, deren Endwert durch <expr2> und das Zählinkrement durch <expr3> festgelegt wird.

Als Zählvariable dürfen nur ganzzahlige Werte verwendet werden.

Bei der Verwendung von Dezimalzahlen kann die Schrittweite i.a. nicht exakt dargestellt werden (Ausnahme: Zweierpotenzen), da sich beim Aufsummieren ein Rundungsfehler akkumuliert. Dies kann dazu führen, daß eine Schleife einmal zu wenig durchlaufen wird.

Anstelle des P-Parameters können auch Variablen ("V.") mit Schreibzugriff oder, falls in der Applikation freigegeben [6]-6.44, auch R-Parameter (siehe Kapitel 9) verwendet werden.

Ist das Zählinkrement negativ, so erfolgt der Schleifenabbruch bei Unterschreitung des Endwertes, ist es positiv, so wird die Schleife bei Überschreitung des Endwertes abgebrochen. Die Programmierung des Zählinkrements 0 führt zu einer Endlosschleife und zur Ausgabe einer Warnung.

Programmierbeispiel

N100 $FOR P1= 10, 100, 2 P1 wird bei Schleifenbeginn mit 10 vorbelegt.
Die Zählschleife wird solange durchlaufen,
bis P1 den Wert 100 überschritten hat, wobei
P1 am Ende jedes Schleifendurchlaufs um 2
erhöht wird.

N110 X SIN [P1 * 5] Innerhalb der Zählschleife kommen die NC-Sätze
bis N130 zur Ausführung.

N120 Y COS [P1 * 5]

N130 ...

N150 $ENDFOR

Programmierbeispiel

Negative Schrittweite:

N100 $FOR P1= 100, 10, -2 P1 wird bei Schleifenbeginn mit 100 vorbelegt.
Die Zählschleife wird solange durchlaufen,bis
N110 X SIN [P1 * 5] P1 den Wert 10 unterschritten hat, wobei P1 am
Ende jedes Schleifendurchlaufs um 2 erniedrigt
wird. Innerhalb der Zählschleife kommen N110

bis N130 zur Ausführung.

N120 Y COS [P1 * 5]

N130 ...

N150 $ENDFOR

N100 $FOR P1= 100, 10, 1 P1 wird bei Schleifenbeginn mit 100 vor- belegt.Die Zählschleife wird solange durch-
laufen,bis P1 den Wert 10 überschritten hat,
N110 X SIN [P1 * 5] also gar nicht. Innerhalb der Zählschleife
kommen N110 bis N130 zur Ausführung.

N120 Y COS [P1 * 5]

N130 ...

N150 $ENDFOR

Endlosschleife:

N100 P2=20

N110 $FOR P1= 100, 10, 0 Endlosschleife

N120 $IF P2 == 50

N130 $BREAK

N140 $ENDIF

N150 $ENDFOR


Schleifen mit Laufbedingung

Mehr:

button Prüfung der Laufbedingung am Schleifenanfang

button Prüfung der Laufbedingung am Schleifenende


Prüfung der Laufbedingung am Schleifenanfang

Die Syntax dieser Schleife beginnt mit:

$WHILE <expr>

und endet immer mit

$ENDWHILE

Zu Beginn jedes Schleifendurchlaufs wird der aufgeführte Parameter überprüft. Die Schleife wird abgebrochen, wenn der Ausdruck <expr> den Wertebereich FALSE (-0.5 < expr < 0.5) annimmt.

Programmierbeispiel

N90 P1 = 100.0

N100 $WHILE P1 > 0.5 P1 > 0.5 wird bei Schleifenbeginn auf FALSE
N110 P1 = P1  1.5 YP1 überprüft. Die Schleife wird so oft durch-
N120 $ENDWHILE laufen, bis P1 die Abbruchbedingung erfüllt.

N130 ...


Prüfung der Laufbedingung am Schleifenende

Es stehen zwei Arten von Schleifen zur Verfügung.

Die Syntax der DO-Schleife beginnt mit:

$DO

und endet immer mit

$ENDDO <expr>

Am Ende jedes Schleifendurchlaufs wird der aufgeführte Parameter überprüft. Die Schleife wird abgebrochen, wenn der Ausdruck <expr> den Wertebereich FALSE (expr < 0.5) annimmt.

Die Syntax der REPEAT-Schleife beginnt mit:

$REPEAT

und endet immer mit

$UNTIL <expr>

Am Ende jedes Schleifendurchlaufs wird der aufgeführte Parameter überprüft. Die Schleife wird abgebrochen, wenn der Ausdruck <expr> den Wertebereich TRUE (expr > 0.5) annimmt.

Im Gegensatz zu $WHILE- und $FOR-Schleifen werden die $DO- und $REPEAT-Schleifen mindestens einmal durchlaufen.

Programmierbeispiele

N10 X0 Y0 Z0

N20 P2=10 P1=0

N30 $DO

N40 P1=P1+1

N50 XP1

N60 $ENDDO P1 <= P2 P1 wird bei Schleifenende auf FALSE überprüft.

Die Schleife wird solange durchlaufen, bis P1

die Bedingung nicht mehr erfüllt.

N99 M30

N10 X0 Y0 Z0

N20 P2=10 P1=0

N30 $REPEAT

N40 P1=P1+1

N50 XP1

N60 $UNTIL P1 > P2 P1 wird bei Schleifenende auf TRUE überprüft.

Die Schleife wird solange durchlaufen, bis P1

die Bedingung erfüllt.

N99 M30


Beeinflussung von Schleifenabläufen

Mehr:

button Die $BREAK-Anweisung

button Die $CONTINUE-Anweisung


Die $BREAK-Anweisung

$BREAK

Nicht immer ist es sinnvoll, eine Schleife mit dem Abbruchkriterium zu verlassen. Das Schlüsselwort $BREAK kann neben der Programmausführung bei den einzelnen $CASE-Marken der $SWITCH-Anweisung (s. a. Kapitel 10.1.2) auch die Abarbeitung einer Schleife abrupt beenden.

Dies ist beispielsweise bei stark verschachtelten Schleifen sinnvoll, wenn die Abarbeitung der innersten Schleife unterbrochen werden soll.

Programmierbeispiel

N10 $WHILE <expr1> Die Schleife wird beendet, wenn

N20 ... expr1 "nicht gültig" oder

N30 expr2 "gültig" ist.

N40 $IF <expr2>

N50 $BREAK

N60 $ENDIF

N70 ...

N80

N90 $ENDWHILE

N100 ...


Die $CONTINUE-Anweisung

$CONTINUE

Im Gegensatz zu $BREAK wird mit der $CONTINUE-Anweisung die Schleife nicht abgebrochen, sondern zum Schleifenanfang verzweigt. Die Ausführung aller nach $CONTINUE stehenden Anweisungen findet also nicht statt.

Programmierbeispiel

N10 $FOR <expr1> Die Anweisungen der Zeilen N70 und N80

N20 ... werden nur dann ausgeführt, wenn

N30 expr2 "nicht gültig" ist.

N40 $IF <expr2>

N50 $CONTINUE

N60 $ENDIF

N70 ...

N80

N90 $ENDFOR

N100 ...


Sonderfunktionen

Die Syntax für Sonderfunktionen lautet:

# <string> <spezifische Zusatzsyntax>

# <string> Sogenannter Klartextbefehl. Zwischen # und <string> sind keine Leer-zeichen erlaubt.

<spezifische Zusatzsyntax> Nachfolgende befehlsspezifische Syntaxelemente, die als weitere Strings direkt oder in einer Klammerung programmiert sind.

Mit Ausnahme der Befehle #ACHSE, #PSET und #PRESET sind jeweils keine weiteren NC-Befehle im Satz erlaubt.

Wenn nicht explizit dargestellt, sind Kommas "," und Gleichheitszeichen "=" in der spezifischen Zusatzsyntax optional und dienen nur der besseren Lesbarkeit des NC-Programms.

Beispiel:

#STRING [A_WERT 10 B_WERT 20] ß à #STRING [A_WERT=10, B_WERT=20]

Mehr:

button Achstauschbefehle

button Verweilzeit-Funktionalität

button NC-Kanal leeren

button Synchronisierung der Decodierung und der Interpolation

button Satzübergreifender Kommentar

button Warten auf Ereignis

button Mindestradius für tangentiale Vorschubanpassung

button Bedingte Interpretierung

button Unterdrückung von Verschiebungen

button Umschalten des Meßtyps

button Istwertverschiebung

button Synchronbetrieb

button Meldungen aus dem NC-Programm

button Ruckbegrenzender Slope

button Akima-Spline-Interpolation

button B-Spline-Interpolation

button Freiformflächenbearbeitung

button Schreiben und Lesen von Antriebsparametern und Kommandos

button Kanalsynchronisation

button Drehung in der Ebene (Konturrotation)

button Automatische Achsnachführung ( C-Achsnachführung)

button Benutzerdefinierte Fehlerausgabe

button Zeitmessung

button Definition von Vorschubachsen

button Anpassung der Bahndynamikgrenzwerte

button Festlegen einer minimalen Satzübergangsgeschwindigkeit

button Schreiben von Maschinendaten

button Definition von Dateinamen

button Wiederherstellen von Achskonfigurationen und Achskopplungen

button Arbeits-/ Schutzraumüberwachung

button Beeinflussung des Vorwärts-/Rückwärtsfahrbetriebes

button Werkzeugwechsel bei aktivem Synchronbetrieb

button Sperren von Programmbereichen für den Satzvorlauf

button Programmierbarer Bahnoverride

button Antriebsunabhängiges Schalten von Antriebsfunktionen


Achstauschbefehle

In diesem Kapitel werden NC-Befehle zum

q Anfordern von Achsen,

q Abgeben von Achsen sowie zur

q Festlegung einer Achskonfiguration beschrieben.

Bei jedem Programmstart wird die im Kanalparametersatz [1]-27 angegebene Achskonfiguration wiederhergestellt. Die Achstauschbefehle sind in der aktuell angewählten Achsgruppe wirksam. In einem NC-Satz sind mehrere Anforderungen und/oder Rückgaben von Achsen möglich. Diese Operationen werden quasi-parallel ausgeführt.

q Das Tauschen von Achsen, für die der Synchron- oder Handbetrieb aktiv ist, ist nicht zulässig.

q Bei aktiver WRK dürfen die ersten beiden Hauptachsen nicht getauscht werden.

q Achstauschbefehle müssen jeweils alleine in einer NC-Zeile stehen.

q Achstauschbefehle gelten nur für Bahn-bzw.Mitschleppachsen. Spindelachsen werden ignoriert. Für das Abgeben/Anfordern von Spindelachsen stehen spezielle Befehle zur Verfügung.

Die bisher zur Verfügung stehenden Achstauschbefehle wurden in ihrer Funktionalität und Wirkunsweise ab Version V2.6 überarbeitet und erweitert. Im Kapitel Standard-Achstauschbefehle wird die bis Version V2.6 verfügbare Standardsyntax beschrieben. Diese kann auch weiterhin verwendet werden.

Im Kapitel Erweiterte Achstauschbefehle wird die neue Syntax beschrieben. Diese ist vollständig abwärtskompatibel zum bisherigen Funktionsumfang, bietet aber durch s.g. Logikschalter und zusätzliche Möglichkeiten der Definition der Achstauschsequenzen eine flexiblere Programmierung.

Mehr:

button Standardsyntax

button Erweiterte Syntax


Standardsyntax

Mehr:

button Anfordern von Achsen

button Abgeben von Achsen

button Definition einer Achskonfiguration


Anfordern von Achsen

Mit folgendem NC-Befehl werden Achsen von der Achsverwaltung angefordert:

#CALL AX [<Modus>] [<Achsname>,<Achsnummer>,<Achsindex> {,<Optionen>} ]

{ [<Achsname>,<Achsnumme>,<Achsindex> {,<Optionen>} ] } (nicht modal)

<Modus> Mit/Ohne Anforderung der Achspositionen vom Interpolator und einer Positionsinitialisierung des NC-Kanals beim Eintauschen von Achsen.

Modus | Eintauschen der Achse im NC-Kanal
 | Default-Einstellung: Mit Anforderung der Sollwerte vom Interpolator und einer Positionsinitialisierung des NC-Kanals.
FAST | Ohne Anforderung der Sollwerte vom Interpolator. Positionsinitialisierung des NC-Kanals.

<Achsname> Für die Achsbezeichnung sind Strings mit den Anfangsbuchstaben A, B, C, Q, U, V, W, X, Y und Z zulässig. Die mehrfache Zuweisung der gleichen Bezeichnung für verschiedene Achsen (Identifikation durch die logische Achsnummer) bewirkt eine Fehlermeldung und den Abbruch des NC-Programms.

<Achsnummer> Die physikalische Zuordnung der Achsen erfolgt über die logische Achsnummer. Zulässig sind mathematische Ausdrücke. Die logische Achsnummer muß in der Achsverwaltung bekannt sein. Bei Anforderung einer unbekannten logischen Achsnummer oder mehrerer gleicher logischer Achsnummern erfolgt eine Fehlermeldung und der Abbruch des NC-Programms.

<Achsindex> Der Achsindex legt den Platz der Achse innerhalb der Achsgruppe des NC-Kanals fest. Er definiert damit die Haupt- und Mitschleppachsen (siehe folgende Tabelle). Zulässig sind mathematische Ausdrücke, deren Ergebnisse im Wertebereich [0 ... Maximale Achsanzahl-1] liegen. Der Achsindex darf noch nicht mit einer Achse belegt sein. Bei Anforderung einer Achse auf einen Index, der von einer anderen Achse belegt ist, erfolgt eine Fehlermeldung und der Abbruch des NC-Programms.

Index | Achskonfiguration
0 | 1. Hauptachse in der Bearbeitungsebene.
1 | 2. Hauptachse in der Bearbeitungsebene.
2 | 3. Hauptachse, i.a. senkrecht zur Bearbeitungsebene.
3 | 1. Mitschleppachse.
...n | (n-2). Mitschleppachse.

Zur Erleichterung der Programmierung ist es möglich, für Mitschleppachsen (nur bei #CALL AX...) die Angabe des Achsindex leer zu lassen. In diesem Fall wird dann automatisch der nächste freie Platz ab Index 3 an diese Mitschleppachse vergeben.

Für Hauptachsen muss der Index immer explizit angegeben werden.

Zu beachten ist jedoch, das für verschiedene Funktionalitäten der Index einer Mitschleppachse eine Bedeutung hat. Zum Beispiel müssen bei der kinematischen Transformation (RTCP) alle Trafo.- Achsen lückenlos nach den Hauptachsen angeordnet werden. In diesen Fällen ist es deshalb notwendig, den Achsindex auch für die Mitschleppachsen explizit zu programmieren.

<Optionen> Versatzmaße werden achsspezifisch gehalten. Es handelt sich dabei um:

q Bezugspunktverschiebung,

q Platzversatz,

q Werkzeugverschiebung,

q Nullpunktverschiebung,

q Meßoffset,

q Sollwertoffset,

q Istwertverschiebung.

Mit den Schlüsselwörtern aus der folgenden Tabelle kann beim Anfordern von Achsen die Übernahme der Versätze gesteuert werden.

Schlüsselwort | Eintauschen der Achse und
 | Keine Übernahme der Versätze (Default)
ALL | Übernahme aller Versätze *
BPV | Übernahme der Bezugspunktverschiebung
PZV | Übernahme des Platzversatzes
WZV | Übernahme der Werkzeugverschiebung *
NPV | Übernahme der Nullpunktverschiebung
MOFFS | Übernahme des Meßoffsets
SOFFS | Übernahme des Sollwert/Handbetriebsoffsets
PSET | Übernahme der Istwertverschiebung

* Die Übernahme von Werkzeugverschiebungen ist bei #CALL AX nur bei abgewähltem Werkzeug sinnvoll. Sobald ein Werkzeug im Kanal bereits aktiv ist oder nach dem Achstausch mit #CALL AX angewählt wird, werden die übernommenen Werkzeugversätze durch die Versätze des aktuellen Werkzeuges ersetzt!

Es wird daher empfohlen, #CALL AX bei abgewähltem Werkzeug durchzuführen!

Bei der Werkzeuganwahl ist zu beachten, dass die Versätze immer gemäß der, in den Werkzeugdaten indizierten Reihenfolge in die Achsen eingerechnet werden.

Programmierbeispiel

%Zero_Offset

N010 X200

N015 V.G.NP_AKT.V.X = 11

N020 #PUT AX [X]

.....

N130 #CALL AX [X,1,0,NPV]

N140 X100 (Endposition Maschinen-X-Achse ist 111)

M30

Wird eine Achse angefordert, die bereits in der Achsgruppe des NC-Kanals vorhanden ist, so wird für diese Achse keine Anforderung ausgelöst.

Beispiel:

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindices bei Programmstart:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2

Programmierbeispiel

%Achstausch1

N10 #CALL AX FAST [X1,7,4] (X1-Achse ohne Sollwerte-Anforderung)

(und Ausgabe des Init.-Funktionssatzes)

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindices nach der Achsanforderungen:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2
 |  | 3
X1 | 7 | 4

Fortsetzung des Programmierbeispiels:

:

N100 #CALL AX [Y1,8,6] [C,9, ] (Y1- und C-Achse anfordern, Achsindex von
C-Achse wird automatisch bestimmt)

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindices nach der zweiten Achsanforderung:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2
C | 9 | 3
X1 | 7 | 4
 |  | 5
Y1 | 8 | 6

Fortsetzung des Programmierbeispiels:

:

N1000 #CALL AX FAST [Z1,13,5,ALL] (Übernahme sämtlicher Versätze)

N1010 #CALL AX [C1,11,7,NPV MOFFS] (Übernahme der Nullpunktver-)

(schiebung und des Meßoffsets)

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindices nach der dritten Achsanforderung:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2
C | 9 | 3
X1 | 7 | 4
Z1 | 13 | 5
Y1 | 8 | 6
C1 | 11 | 7


Abgeben von Achsen

Mit diesem NC-Befehl können Achsen der Achsgruppe des NC-Kanals an die Achsverwaltung zurückgegeben werden. Die Rückgabe nicht bzw. nicht mehr vorhandener Achsen ist zulässig und führt zu keiner Fehlermeldung.

#PUT AX [ <Achsname> {,<Achsname> } ] (nicht modal)

<Achsname> Für die Achsbezeichnungen sind Strings mit den Anfangsbuchstaben A, B, C, Q, U, V, W, X, Y und Z zulässig.

Mit diesem NC-Befehl können alle in der Achsgruppe des NC-Kanals vorhandenen Achsen an die Achsverwaltung zurückgegeben werden.

#PUT AX ALL (nicht modal)

Beispiel:

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindices bei Programmstart:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2

Programmierbeispiel

%Achstausch1

N10 #PUT AX [ X, B] (X-Achse abgeben; B-Achse nicht vorhanden)

(Es wird keine Fehlermeldung ausgegeben)

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindices nach der Achsabgabe:

Achsbezeichnung | logische Achsnummer | Achsindex
 |  | 0
Y | 2 | 1
Z | 3 | 2

Fortsetzung des Programmierbeispiels:

...

N100 #PUT AX ALL (Alle Achsen dieser Gruppe abgeben.)

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindices nach der zweiten Achsabgabe:

Achsbezeichnung | logische Achsnummer | Achsindex
 |  | 0
 |  | 1
 |  | 2


Definition einer Achskonfiguration

Mit diesem NC-Befehl kann eine neue Achskonfiguration festgelegt werden, welche die vorhandene Achskonfiguration ersetzt. Nur genau die Achsen, die im NC-Befehl programmiert sind, bilden also die neue Achskonfiguration im NC-Kanal.

#SET AX [<Modus>] [<Achsname>,<Achsnummer>,<Achsindex> {,<Optionen>} ]

{ [<Achsname>,<Achsnummer>,<Achsindex>{,<Optionen>} ] } (nicht modal)

<Modus> Mit/Ohne Anforderung der Achspositionen vom Interpolator und einer Positionsinitialisierung des NC-Kanals beim Eintauschen von Achsen.

Modus | Eintauschen der Achse im NC-Kanal
 | Default-Einstellung: Mit Anforderung der Sollwerte vom Interpolator und einer Positionsinitialisierung des NC-Kanals
FAST | Ohne Anforderung der Sollwerte vom Interpolator. Positionsinitialisierung des NC-Kanals

<Achsname> Für die Achsbezeichnung sind Strings mit den Anfangsbuchstaben A, B, C, Q, U, V, W, X, Y und Z zulässig. Die mehrfache Zuweisung der gleichen Bezeichnung für verschiedene Achsen (Identifikation durch die logische Achsnummer) bewirkt eine Fehlermeldung und den Abbruch des NC-Programms.

<Achsnummer> Die physikalische Zuordnung der Achsen erfolgt über die logische Achsnummer. Zulässig sind mathematische Ausdrücke. Die logische Achsnummer muß in der Achsverwaltung bekannt sein Bei Anforderung einer unbekannten logischen Achsnummer oder mehrerer gleicher logischer Achsnummern erfolgt eine Fehlermeldung und der Abbruch des NC-Programms.

<Achsindex> Der Achsindex legt den Platz der Achse innerhalb der Achsgruppe des NC-Kanals fest. Er definiert damit die Haupt- und Mitschleppachsen (siehe folgende Tabelle). Zulässig sind mathematische Ausdrücke, deren Ergebnisse im Wertebereich [0 ... Maximale Achsanzahl-1] liegen. Der Achsindex darf noch nicht mit einer Achse belegt sein. Bei Anforderung einer Achse auf einen Index, der von einer anderen Achse belegt ist, erfolgt eine Fehlermeldung und der Abbruch des NC-Programms.

Index | Achskonfiguration
0 | 1. Hauptachse in der Bearbeitungsebene.
1 | 2. Hauptachse in der Bearbeitungsebene.
2 | 3. Hauptachse, i.a. senkrecht zur Bearbeitungsebene.
3 | 1. Mitschleppachse.
...n | (n-2). Mitschleppachse.

<Optionen> Versatzmaße werden achsspezifisch gehalten. Es handelt sich dabei um:

q Bezugspunktverschiebung,

q Platzversatz,

q Werkzeugverschiebung,

q Nullpunktverschiebung,

q Meßoffset,

q Sollwertoffset,

q Istwertverschiebung.

Mit den Schlüsselwörtern aus der folgenden Tabelle kann beim Anfordern von Achsen die Übernahme der Versätze gesteuert werden.

Schlüsselwort | Eintauschen der Achse und
 | keine Übernahme der Versätze (Default)
ALL | Übernahme aller Versätze *
BPV | Übernahme der Bezugspunktverschiebung
PZV | Übernahme des Platzversatzes
WZV | Übernahme der Werkzeugverschiebung *
NPV | Übernahme der Nullpunktverschiebung
MOFFS | Übernahme des Meßoffsets
SOFFS | Übernahme des Sollwert/Handbetriebsoffsets
PSET | Übernahme der Istwertverschiebung

* Bei angewähltem Werkzeug ist bei der Übernahme von Werkzeugverschiebungen bei #SET AX folgendes zu beachten:

· Werden Achsen durch den #SET AX nur vertauscht (interner Achstausch) und ansonsten keine zusätzlichen Achsen abgegeben oder angefordert, so werden alle Versätze (auch die Werkzeugversätze) ebenfalls mitgetauscht und bleiben weiterhin aktiv. Die Angabe von Schlüsselworten zur Übernahme von Versätzen ist ohne Wirkung.
Wird danach ein neues Werkzeug angewählt, so werden die mitgetauschten Versätze durch die Versätze des neuen Werkzeuges ersetzt.

· Sobald durch den #SET AX eine Achsabgabe bzw. Achsanforderung ausgelöst wird (externer Achstausch), werden die Werkzeugversätze erneut in der, in den Werkzeugdaten indizierten Reihenfolge in die Achsen eingerechnet. Eventuell übernommene Werkzeugversätze werden also durch die Versätze des aktuellen Werkzeuges ersetzt! Sollen die ursprünglichen Werkzeugversätze in den entsprechenden Achsen weiterhin gelten, so muß ein neues Werkzeug angewählt werden, bei dem die Versätze an die neue Achsanordnung angepaßt sind.

Es wird daher empfohlen, #SET AX bei abgewähltem Werkzeug durchzuführen und die korrekte Zuordnung von Werkzeugversätzen durch die entsprechende Parametrierung im Datensatz eines neu anzuwählenden Werkzeuges sicherzustellen!

Beispiel:

Index der Werkzeugversätze in den Werkzeugdaten | [0] | [1] | [2] | [3]
Parametrierte Werkzeugversätze z.B. für T1 | 50 | 0 | 70 | 20
Achskonfiguration bei Programmstart | X | Y | Z | ---
Eingerechnete Werkzeugversätze nach Anwahl T1 | 50 | 0 | 70 | ---
"Interner" #SET AX {Z, X, Y}: | Z | X | Y | ---
Werkzeugversätze werden mitgetauscht oder | 70 | 50 | 0 | ---
"Externer" #SET AX {Z, X, Y, B}: | Z | X | Y | B
Werkzeugversätze werden gemäß Werkzeug T1 neu eingerechnet | 50 | 0 | 70 | 20

Beispiel:

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes bei Programmstart:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2

Programmierbeispiel

(Setzen der Achskonfiguration:

(X-Achse bleibt auf ihrem Platz;)

(Y-Achse wird abgegeben;)

(Z-Achse wird nach Index 4 umsortiert;)

(Y1- und Z1-Achse werden angefordert;)

%ACHSTAUSCH1

N10 #SET AX [X,1,0][Y1,4,2][Z1,5,3][Z,3,4]

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindices nach N10:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
 |  | 1
Y1 | 4 | 2
Z1 | 5 | 3
Z | 3 | 4


Erweiterte Syntax

Die Verfügbarkeit dieser Funktionalität ist von der Konfiguration und dem Versionsumfang abhängig.

Die erweiterte Syntax ermöglicht die Programmierung der Achstauschsequenzen über Makrodefinitionen (Kapitel 15) oder externe Variablen vom Typ String (V.E...). Das ist insbesondere bei mehrkanaligen Maschinen und Anlagen sinnvoll, wenn statische Achsgruppen zwischen den Kanälen getauscht werden. Diese Achsgruppen können dann z.B. in Makros abgelegt und in den Achstauschbefehlen verwendet werden.

Weiterhin ermöglicht die erweiterte Syntax durch entsprechendes Setzen von Logikschaltern die interne Behandlung von Konflikten ohne Ausgabe von Fehlermeldungen bzw. Warnings. Die Logikschalter sind zusätzlich optional im Befehl programmierbar. Falls keine zusätzliche Logikauswertung programmiert wird, gilt das Standardverhalten wie bisher, d.h. bei Plausibilitätskonflikten wird die Auswertung der Achstauschsequenzen mit Fehlermeldungen abgebrochen.

Die Logikauswertung ist für alle Achstauschbefehle gleich und prüft sowohl die Plausibilität innerhalb der programmierten Achstauschsequenz als auch die Plausibilität zu bereits im NC-Kanal vorhandenen Achsen.

Insbesondere sind die Logikschalter bei der Nutzung von Achstauschsequenzen sinnvoll, die über Makros oder Stringvariablen definiert sind, da hier eventuell auftretende Überschneidungen und Doppelprogrammierungen intern bereinigt werden können.

Mehr:

button Anfordern von Achsen

button Abgeben von Achsen

button Definition einer Achskonfiguration


Anfordern von Achsen

Mit folgendem NC-Befehl werden Achsen von der Achsverwaltung angefordert:

# AX REQUEST [<Modus>] [NAM, NBR, IDX] [<Achstauschsequenz> {,<Optionen>} ]

{ [<Achstauschsequenz> {,<Optionen>} ] } (nicht modal)

<Modus> Mit/Ohne Anforderung der Achspositionen vom Interpolator und einer Positionsinitialisierung des NC-Kanals beim Eintauschen von Achsen.

Modus | Eintauschen der Achse im NC-Kanal
 | Default-Einstellung: Mit Anforderung der Sollwerte vom Interpolator und einer Positionsinitialisierung des NC-Kanals
FAST | Ohne Anforderung der Sollwerte vom Interpolator. Positionsinitialisierung des NC-Kanals

NAM, NBR, IDX Logikschalter zur Behandlung von Konflikten.

ID | Bedeutung
NAM | Behandlung redundanter Achsnamen
NBR | Behandlung redundanter Achsnummern
IDX | Behandlung redundanter Achsindizes

Die Logikschalter können einzeln oder in Kombination programmiert werden!

<Achstauschsequenz> bestehend aus:

<Achsname> Für die Achsbezeichnung sind Strings mit den Anfangsbuchstaben A, B, C, Q, U, V, W, X, Y und Z zulässig.

Bei Konflikten innerhalb der programmierten Achstauschsequenz:

Redundante Achsnamen à FEHLER, Programmabbruch.

Bei Konflikten zu bereits im NC-Kanal vorhandenen Achsen:

Achsnamen gleich , Achsnummern verschieden à FEHLER, Programmabbruch

Bei gesetztem Logikschalter NAM wird Konflikt wie folgt bereinigt:

Die Achse bekommt den Defaultachsnamen aus ihrer Achsparameterliste [2] -18. Die eindeutige Vergabe der Defaultachsnamen in den Listen ist durch den Anwender sicherzustellen.

<Achsnummer> Die physikalische Zuordnung der Achsen erfolgt über die logische Achsnummer. Zulässig sind mathematische Ausdrücke. Die logische Achsnummer muß in der Achsverwaltung bekannt sein.

Bei Konflikten innerhalb der programmierten Achstauschsequenz:

Redundante Achsnummern à FEHLER, Programmabbruch.

Bei Konflikten zu bereits im NC-Kanal vorhandenen Achsen:

Achsnummer im Kanal bereits vorhanden à WARNING

Bei gesetztem Logikschalter NBR wird Konflikt wie folgt bereinigt:

Die Achsanforderung wird ignoriert, d.h. sie wird nicht ausgeführt!

<Achsindex> Der Achsindex legt den Platz der Achse innerhalb der Achsgruppe des NC-Kanals fest. Er definiert damit die Haupt- und Mitschleppachsen (siehe folgende Tabelle). Zulässig sind mathematische Ausdrücke, deren Ergebnisse im Wertebereich [0 ... Maximale Achsanzahl-1] liegen. Der Achsindex darf noch nicht mit einer Achse belegt sein.

Index | Achskonfiguration
0 | 1. Hauptachse in der Bearbeitungsebene.
1 | 2. Hauptachse in der Bearbeitungsebene.
2 | 3. Hauptachse, i.a. senkrecht zur Bearbeitungsebene.
3 | 1. Mitschleppachse.
...n | (n-2). Mitschleppachse.

Zur Erleichterung der Programmierung ist es möglich, für Mitschleppachsen die Angabe des Achsindex leer zu lassen. In diesem Fall wird dann automatisch der nächste freie Platz ab Index 3 an diese Mitschleppachse vergeben.

Für Hauptachsen muss der Index immer explizit angegeben werden.

Zu beachten ist jedoch, das für verschiedene Funktionalitäten der Index einer Mitschleppachse eine Bedeutung hat. Zum Beispiel müssen bei der kinematischen Transformation (RTCP) alle Trafo.- Achsen lückenlos nach den Hauptachsen angeordnet werden. In diesen Fällen ist es deshalb notwendig, den Achsindex auch für die Mitschleppachsen explizit zu programmieren.

Bei Konflikten innerhalb der programmierten Achstauschsequenz:

Redundante Achsindizes à FEHLER, Programmabbruch.

Bei Konflikten zu bereits im NC-Kanal vorhandenen Achsen:

Achsindex im Kanal bereits belegt, Achsnamen verschieden à FEHLER, Programmabbruch.

Bei gesetztem Logikschalter IDX wird Konflikt wie folgt bereinigt:

Für die Achse wird automatisch der nächste freie Index in der Achskonfiguration des NC-Kanals bestimmt.

<Optionen> Versatzmaße werden achsspezifisch gehalten. Es handelt sich dabei um:

q Bezugspunktverschiebung,

q Platzversatz,

q Werkzeugverschiebung,

q Nullpunktverschiebung,

q Meßoffset,

q Sollwertoffset,

q Istwertverschiebung.

Mit den Schlüsselwörtern aus der folgenden Tabelle kann beim Anfordern von Achsen die Übernahme der Versätze gesteuert werden.

Schlüsselwort | Eintauschen der Achse und
 | keine Übernahme der Versätze (Default)
ALL | Übernahme aller Versätze *
BPV | Übernahme der Bezugspunktverschiebung
PZV | Übernahme des Platzversatzes
WZV | Übernahme der Werkzeugverschiebung *
NPV | Übernahme der Nullpunktverschiebung
MOFFS | Übernahme des Meßoffsets
SOFFS | Übernahme des Sollwert/Handbetriebsoffsets
PSET | Übernahme der Istwertverschiebung

* Die Übernahme von Werkzeugverschiebungen ist bei #AX REQUEST nur bei abgewähltem Werkzeug sinnvoll. Sobald ein Werkzeug im Kanal bereits aktiv ist oder nach dem Achstausch mit #AX REQUESTangewählt wird, werden die übernommenen Werkzeugversätze durch die Versätze des aktuellen Werkzeuges ersetzt!

Es wird daher empfohlen, #AX REQUEST bei abgewähltem Werkzeug durchzuführen!

Bei der Werkzeuganwahl ist zu beachten, dass die Versätze immer gemäß der, in den Werkzeugdaten indizierten Reihenfolge in die Achsen eingerechnet werden.

Beispiel 1:

Anwenden der Standardfunktionalität:

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes bei Programmstart:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2

Programmierbeispiel

%Achstausch1

N10 #AX REQUEST [X1,7,4] (X1-Achse anfordern)

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes nach der Achsanforderung:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2
 |  | 3
X1 | 7 | 4

Fortsetzung des Programmierbeispiels:

:

N100 #AX REQUEST [Y1,8,6] [C,9, ] (Y1- und C-Achse anfordern, C-Achse)

(wird automatisch auf Index 3 gelegt)

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes nach der zweiten Achsanforderung:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2
C | 9 | 3
X1 | 7 | 4
 |  | 5
Y1 | 8 | 6

Fortsetzung des Programmierbeispiels:

:

N1000 #AX REQUEST FAST [Z1,13,5,ALL] (Übernahme sämtlicher Versätze)

N1010 #AX REQUEST [C1,11,7,NPV MOFFS] (Übernahme der Nullpunktver-)

(schiebung und des Meßoffsets)

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes nach der dritten Achsanforderung:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2
C | 9 | 3
X1 | 7 | 4
Z1 | 13 | 5
Y1 | 8 | 6
C1 | 11 | 7

Beispiel 2:

Nutzen der zusätzlichen Syntax (Logikschalter):

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes bei Programmstart im Kanal 1:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes bei Programmstart im Kanal 2:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 7 | 0
Y | 8 | 1
Z | 9 | 2

Programmierbeispiel

In Kanal 1: Anfordern der X- und Y-Achse aus Kanal 2 (Logische Achsnummern 7 und 8).

%Achstausch

N10 #AX REQUEST NAM [X,7,3] [Y,8,4] (X/Y-Achsen anfordern)

Durch den Logikschalter NAM werden die zusätzlichen neuen Achsen X und Y im Kanal 1 mit ihren Defaultnamen aus den Achslisten (z.B. X2 und Y2) belegt.

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes nach den Achsanforderungen:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2
X2 | 7 | 3
Y2 | 8 | 4

Fortsetzung des Programmierbeispiels:

In Kanal 1: Anfordern der Z-Achse aus Kanal 2 (Logische Achsnummer 9).

:

N100 #AX REQUEST NAM IDX [Z,9,2] (Z-Achse anfordern)

Durch die Logikschalter NAM und IDX wird im Kanal 1 die zusätzliche neue Z-Achse mit ihrem Defaultnamen aus der Achsliste (z.B. Z2) auf einen noch freien Index (z.B. Index 5) übernommen.

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes nach der zweiten Achsanforderung:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2
X2 | 7 | 3
Y2 | 8 | 4
Z2 | 9 | 5

Beispiel 3:

Nutzen der zusätzlichen Syntax (Logikschalter und Achstauschsequenz als String):

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes bei Programmstart im Kanal 1:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes bei Programmstart im Kanal 2:

Achsbezeichnung | logische Achsnummer | Achsindex
X_1 | 7 | 0
Y | 8 | 1
Z | 9 | 2
A | 10 | 3
B | 11 | 4

Programmierbeispiel

In Kanal 1: Anfordern der X_1/ Y und B-Achse aus Kanal 2 (Logische Achsnummern 7, 8 und 11). Die Achstauschsequenz ist in einem Makro abgelegt.

%Achstausch

N05 "ACHSEN_KANAL2" = "[X_1,7,0] [Y,8,1] [B,11,2]"

:

N10 #AX REQUEST NAM IDX "ACHSEN_KANAL2" (Achsen anfordern)

Durch die Logikschalter NAM und IDX werden im Kanal 1 die zusätzlichen neuen Achsen korrekt übernommen.

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes nach den Achsanforderungen:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2
X_1 | 7 | 3
Y2 | 8 | 4
B | 11 | 5


Abgeben von Achsen

Mit diesen NC-Befehlen können Achsen der Achsgruppe des NC-Kanals an die Achsverwaltung zurückgegeben werden. Die Rückgabe nicht bzw. nicht mehr vorhandener Achsen ist zulässig und führt zu keiner Fehlermeldung.

#AX RELEASE [ <Achsname> {,<Achsname> } ] (nicht modal)

<Achsname> Achsbezeichnungen der momentan im NC-Kanal vorhandenen Achsen.

Mit dem Logikschalter NBR kann auf die Auswertung von logischen Achsnummern anstatt von Achsnamen umgeschaltet werden (z.B. wenn die Achsnamen zum Zeitpunkt der Abgabe nicht bekannt sind).

#AX RELEASE [NBR] [ <expr> {,<expr> } ] (nicht modal)

<expr> Logische Achsnummer der Achse.

Mit diesem NC-Befehl können alle in der Achsgruppe des

NC-Kanals vorhandenen Achsen an die Achsverwaltung zurückgegeben werden.

#AX RELEASE ALL (nicht modal)

Beispiel:

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes bei Programmstart:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2
A | 4 | 3
B | 5 | 4

Programmierbeispiel

%Achstausch

N10 #AX RELEASE[X, A] (X/A-Achsen abgeben)

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes nach der Achsabgabe:

Achsbezeichnung | logische Achsnummer | Achsindex
Y | 2 | 1
Z | 3 | 2
B | 5 | 4

Fortsetzung des Programmierbeispiels:

...

N100 #AX RELEASE NBR[2] (Y-Achse abgeben)

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes nach der zweiten Achsabgabe:

Achsbezeichnung | logische Achsnummer | Achsindex
Z | 3 | 2
B | 5 | 4

Fortsetzung des Programmierbeispiels:

...

N100 #AX RELEASE ALL (Alle vorhandenen Achsen dieses Kanals abgeben)

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes nach der dritten Achsabgabe:

Achsbezeichnung | logische Achsnummer | Achsindex


Definition einer Achskonfiguration

Mit diesem NC-Befehl kann eine neue Achskonfiguration festgelegt werden, welche die vorhandene Achskonfiguration ersetzt. Nur genau die Achsen, die im NC-Befehl programmiert sind, bilden also die neue Achskonfiguration im NC-Kanal.

# AX DEF <Modus>] [NAM, NBR, IDX] [<Achstauschsequenz> {,<Optionen>} ]

{ [<Achstauschsequenz> {,<Optionen>} ] } (nicht modal)

<Modus> Mit/Ohne Anforderung der Achspositionen vom Interpolator und einer Positionsinitialisierung des NC-Kanals beim Eintauschen von Achsen.

Modus | Eintauschen der Achse im NC-Kanal
 | Default-Einstellung: Mit Anforderung der Sollwerte vom Interpolator und einer Positionsinitialisierung des NC-Kanals
FAST | Ohne Anforderung der Sollwerte vom Interpolator. Positionsinitialisierung des NC-Kanals
OPT_FAST | Optionales Fast. Wirkt nur, wenn auch der schnelle Programmstart beauftragt wurde. Ansonsten werden die Sollwerte immer angefordert.

NAM, NBR, IDX Logikschalter zur Behandlung von Konflikten.

ID | Bedeutung
NAM | Behandlung redundanter Achsnamen
NBR | Behandlung redundanter Achsnummern
IDX | Behandlung redundanter Achsindizes

Die Logikschalter können einzeln oder in Kombination programmiert werden!

<Achstauschsequenz> bestehend aus:

<Achsname> Für die Achsbezeichnung sind Strings mit den Anfangsbuchstaben A, B, C, Q, U, V, W, X, Y und Z zulässig.

Bei Konflikten innerhalb der programmierten Achstauschsequenz:

Redundante Achsnamen à FEHLER, Programmabbruch.

Bei Konflikten zu bereits im NC-Kanal vorhandenen Achsen:

Achsnamen gleich , Achsnummern verschieden à FEHLER, Programmabbruch

Bei gesetztem Logikschalter NAM wird Konflikt wie folgt bereinigt:

Die Achse bekommt den Defaultachsnamen aus ihrer Achsparameterliste [2] -18. Die eindeutige Vergabe der Defaultachsnamen in den Listen ist durch den Anwender sicherzustellen.

<Achsnummer> Die physikalische Zuordnung der Achsen erfolgt über die logische Achsnummer. Zulässig sind mathematische Ausdrücke. Die logische Achsnummer muß in der Achsverwaltung bekannt sein.

Bei Konflikten innerhalb der programmierten Achstauschsequenz:

Redundante Achsnummern à FEHLER, Programmabbruch.

Bei Konflikten zu bereits im NC-Kanal vorhandenen Achsen:

Achsnummer im Kanal bereits vorhanden à WARNING

Bei gesetztem Logikschalter NBR wird Konflikt wie folgt bereinigt:

Die Achsanforderung wird ignoriert, d.h. sie wird nicht ausgeführt!

<Achsindex> Der Achsindex legt den Platz der Achse innerhalb der Achsgruppe des NC-Kanals fest. Er definiert damit die Haupt- und Mitschleppachsen (siehe folgende Tabelle). Zulässig sind mathematische Ausdrücke, deren Ergebnisse im Wertebereich [0 ... Maximale Achsanzahl-1] liegen. Der Achsindex darf noch nicht mit einer Achse belegt sein.

Index | Achskonfiguration
0 | 1. Hauptachse in der Bearbeitungsebene.
1 | 2. Hauptachse in der Bearbeitungsebene.
2 | 3. Hauptachse, i.a. senkrecht zur Bearbeitungsebene.
3 | 1. Mitschleppachse.
...n | (n-2). Mitschleppachse.

Zur Erleichterung der Programmierung ist es möglich, für Mitschleppachsen die Angabe des Achsindex leer zu lassen. In diesem Fall wird dann automatisch der nächste freie Platz ab Index 3 an diese Mitschleppachse vergeben.

Für Hauptachsen muss der Index immer explizit angegeben werden.

Zur Erleichterung der Programmierung ist es möglich, für Mitschleppachsen die Angabe des Achsindex leer zu lassen. In diesem Fall wird dann automatisch der nächste freie Platz ab Index 3 an diese Mitschleppachse vergeben. Zu beachten ist jedoch, das für verschiedene Funktionalitäten der Index einer Mitschleppachse eine Bedeutung hat. Zum Beispiel müssen bei der kinematischen Transformation (RTCP) alle Trafo.- Achsen lückenlos nach den Hauptachsen angeordnet werden. In diesen Fällen ist es deshalb notwendig, den Achsindex auch für die Mitschleppachsen explizit zu programmieren.

Bei Konflikten innerhalb der programmierten Achstauschsequenz:

Redundante Achsindizes à FEHLER, Programmabbruch.

Bei Konflikten zu bereits im NC-Kanal vorhandenen Achsen:

Achsindex im Kanal bereits belegt, Achsnamen verschieden à FEHLER, Programmabbruch.

Bei gesetztem Logikschalter IDX wird Konflikt wie folgt bereinigt:

Für die Achse wird automatisch der nächste freie Index in der Achskonfiguration des NC-Kanals bestimmt.

<Optionen> Versatzmaße werden achsspezifisch gehalten. Es handelt sich dabei um:

q Bezugspunktverschiebung,

q Platzversatz,

q Werkzeugverschiebung,

q Nullpunktverschiebung,

q Meßoffset,

q Sollwertoffset,

q Istwertverschiebung.

Mit den Schlüsselwörtern aus der folgenden Tabelle kann beim Anfordern von Achsen die Übernahme der Versätze gesteuert werden.

Schlüsselwort | Eintauschen der Achse und
 | keine Übernahme der Versätze (Default)
ALL | Übernahme aller Versätze *
BPV | Übernahme der Bezugspunktverschiebung
PZV | Übernahme des Platzversatzes
WZV | Übernahme der Werkzeugverschiebung *
NPV | Übernahme der Nullpunktverschiebung
MOFFS | Übernahme des Meßoffsets
SOFFS | Übernahme des Sollwert/Handbetriebsoffsets
PSET | Übernahme der Istwertverschiebung

* Bei angewähltem Werkzeug ist bei der Übernahme von Werkzeugverschiebungen bei #AX DEF folgendes zu beachten:

· Werden Achsen durch den #AX DEF nur vertauscht (interner Achstausch) und ansonsten keine zusätzlichen Achsen abgegeben oder angefordert, so werden alle Versätze (auch die Werkzeugversätze) ebenfalls mitgetauscht und bleiben weiterhin aktiv. Die Angabe von Schlüsselworten zur Übernahme von Versätzen ist ohne Wirkung.
Wird danach ein neues Werkzeug angewählt, so werden die mitgetauschten Versätze durch die Versätze des neuen Werkzeuges ersetzt.

· Sobald durch den #AX DEF eine Achsabgabe bzw. Achsanforderung ausgelöst wird (externer Achstausch), werden die Werkzeugversätze erneut in der, in den Werkzeugdaten indizierten Reihenfolge in die Achsen eingerechnet. Eventuell übernommene Werkzeugversätze werden also durch die Versätze des aktuellen Werkzeuges ersetzt! Sollen die ursprünglichen Werkzeugversätze in den entsprechenden Achsen weiterhin gelten, so muß ein neues Werkzeug angewählt werden, bei dem die Versätze an die neue Achsanordnung angepaßt sind.

Es wird daher empfohlen, #AX DEF bei abgewähltem Werkzeug durchzuführen und die korrekte Zuordnung von Werkzeugversätzen durch die entsprechende Parametrierung im Datensatz eines neu anzuwählenden Werkzeuges sicherzustellen!

Beispiel:

Index der Werkzeugversätze in den Werkzeugdaten | [0] | [1] | [2] | [3]
Parametrierte Werkzeugversätze z.B. für T1 | 50 | 0 | 70 | 20
Achskonfiguration bei Programmstart | X | Y | Z | ---
Eingerechnete Werkzeugversätze nach Anwahl T1 | 50 | 0 | 70 | ---
"Interner" #AX DEF {Z, X, Y}: | Z | X | Y | ---
Werkzeugversätze werden mitgetauscht oder | 70 | 50 | 0 | ---
"Externer" #AX DEF {Z, X, Y, B}: | Z | X | Y | B
Werkzeugversätze werden wieder gemäß T1 neu eingerechnet | 50 | 0 | 70 | 20

Durch die Angabe von DEFAULT kann die Grundkonfiguration entsprechend der Kanalparameterliste [1]-27 hergestellt werden. Auch die Kombination mit Logikschaltern und zusätzlichen Achsanforderungen ist möglich:

# AX DEF DEFAULT (nicht modal)

oder

# AX DEF DEFAULT [NAM, NBR, IDX] { [<Achstauschsequenz> {,<Optionen>} ] } (nicht modal)

Beispiel:

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes bei Programmstart:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2

Programmierbeispiele

(Setzen der Achskonfiguration)

(X-Achse bleibt auf ihrem Platz; Y-Achse wird abgegeben;)

(Z-Achse wird nach Index 4 umsortiert;(Y1- und Z1-Achse werden)

(angefordert;)

%ACHSTAUSCH

N10 #AX DEF [X,1,0][Y1,4,2][Z1,5,3][Z,3,4]

:

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes nach N10:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
 |  | 1
Y1 | 4 | 2
Z1 | 5 | 3
Z | 3 | 4

Wiederherstellen der Defaultachskonfiguration:

%ACHSTAUSCH

N10 #AX DEF DEFAULT

:

Zuordnung der Achsbezeichnungen, logischen Achsnummern und Achsindizes nach N10:

Achsbezeichnung | logische Achsnummer | Achsindex
X | 1 | 0
Y | 2 | 1
Z | 3 | 2


Verweilzeit-Funktionalität

#TIME <expr> (nicht modal)

Siehe hierzu Kapitel 4.1.5  Verweilzeit (G04), (#TIME).


NC-Kanal leeren

Die Befehle zum Leeren des Kanals können nicht bei aktiver WRK, Polynomüberschleifen sowie aktivem HSC-Modus verwendet werden.

#FLUSH (nicht modal)

Die Anweisung #FLUSH bewirkt, dass alle momentan im NC-Kanal gespeicherten NC-Sätze ausgeführt werden, d.h. die Bufferwirkung des NC-Kanals wird aufgehoben. Der letzte vor dem #FLUSH programmierte Verfahrsatz wird damit sofort ausgeführt.

Am Ende dieser Verfahrbewegung wird generell kurz angehalten, auch wenn der nächste Verfahrsatz im Look-Ahead bereits vorliegt. Die Programmdecodierung läuft jedoch ohne Unterbrechung weiter.

Programmierbeispiel

Wird die Anweisung #FLUSH nicht programmiert, wartet der Look-Ahead mit der Auswertung der Linearbewegung, bis der nächste Verfahrsatz erscheint. Da jedoch anschließend in eine WHILE-Schleife gesprungen wird, kann sich die Ausführung der Verfahrbewegung verzögern. Mit #FLUSH wird deshalb die Bufferwirkung des Look-Ahead aufgehoben, so daß vor dem Sprung in die WHILE-Schleife alle gespeicherten Verfahrsätze ausgeführt werden.

N10 G01 X20

N20 #FLUSH

N30 $WHILE 1

...

Nnn $ENDWHILE

M30

#FLUSH CONTINUE (nicht modal)

Durch den Zusatz CONTINUE kann das Anhalten am Satzende einer Verfahrbewegung vermieden werden. Wenn im Look-Ahead bereits der nächste Verfahrsatz vorliegt, so wird ohne anzuhalten die Bewegung fortgesetzt. Liegt noch kein weiterer Verfahrsatz vor, so wird ebenfalls angehalten.

Programmierbeispiel

Zwischen den Verfahrsätzen N10 und N200 sind nicht bewegungsrelevante NC-Sätze programmiert (z.B. umfangreiche Parameterrechnung, Variablendeklarationen etc.). Im Look-Ahead kann das zur verzögerten Ausführung der Verfahrbewegung und zu einem Anhalten am Ende von N10 führen. Durch #FLUSH CONTINUE kann das vermieden werden. Liegt am Ende von N10 der nächste Bewegungssatz (N200) bereits vor, so wird ohne anzuhalten die Bewegung fortgesetzt.

N10 G01 X200

N20 #FLUSH CONTINUE

N30 P1 = [P2 * P3] + V.E...

...

N200 X250

M30


Synchronisierung der Decodierung und der Interpolation

#FLUSH WAIT (nicht modal)

Im Gegensatz zu #FLUSH wird die Programmdecodierung durch den Befehl #FLUSH WAIT unterbrochen. Danach wird der NC-Kanal geleert. Sobald alle Buffer frei sind und somit der Interpolator synchronisiert ist, wird automatisch die weitere Decodierung des NC-Programmes fortgesetzt.

Programmierbeispiel

Die Decodierung wird im Satz N20 unterbrochen, bis der Interpolator die Position X20 erreicht hat. Danach wird die Decodierung von N30 automatisch fortgesetzt.

N10 G01 X20

N20 #FLUSH WAIT

N30 X40

...

M30


Satzübergreifender Kommentar

#COMMENT BEGIN Beginn des Kommentarblockes

:

: Auskommentierter Bereich. Sämtliche Zeilen
: werden vom NC-Kern ohne Auswertung
: überlesen.

:

#COMMENT END Ende des Kommentarblockes

Beide Befehle müssen jeweils in einer eigenen NC-Zeile stehen, d.h. weitere NC-Befehle im selben Satz sind nicht zulässig. Ausnahme ist zeilenweiser Kommentar, der mit "(" und ")" einzurahmen ist.

Kommentarblöcke können innerhalb oder außerhalb von NC-Programmen definiert werden, sind jedoch auf den aktuellen File beschränkt, da zum einen Aufrufe von und zum anderen Rücksprünge aus globalen Unterprogrammen, die im Kommentar eingeschlossen sind, nicht ausgewertet werden.

Applikationsabhängig kann die Schachtelung von Kommentaren freigeschaltet werden.

Programmierbeispiel

Schachtelung freigeschaltet

:

#COMMENT BEGIN Beginn Kommentarbereich 1

...

#COMMENT BEGIN Beginn Kommentarbereich 2

...

#COMMENT END Ende Kommentarbereich 2

...

#COMMENT END Ende Kommentarbereich 1

:

Schachtelung nicht freigeschaltet

:

#COMMENT BEGIN Beginn Kommentarbereich 1

...

#COMMENT BEGIN Beginn Kommentarbereich 2

...

#COMMENT END Ende Kommentarbereich 1 und 2

:

In folgenden Fällen erzeugt der NC-Kern Fehlermeldungen:

q Filenende wird innerhalb eines Kommentarblocks eingelesen

q #COMMENT END wird ohne ein zuvor programmierts #COMMENT BEGIN eingelesen.

q Nach den Comment-Befehlen sind weitere NC-Befehle im gleichen Satz programmiert.


Warten auf Ereignis

#WAIT FOR <expr> (nicht modal)

Bei diesem Befehl wird die Decodierung des NC-Programms so lange angehalten, bis der arithmetische Ausdruck erfüllt ist (TRUE bzw. >0,5).

Programmierbeispiel

N10 #WAIT FOR V.E.EXT1 == 5 (Die Decodierung des NC-Programms wird an
(dieser Stelle angehalten, bis der Wert der
(externen Variablen 5 ist.)

....

N100 #WAIT FOR V.E.EXT2 (Die Decodierung des NC-Programms wird an
(dieser Stelle angehalten, bis der Wert der
(externen Variablen > 0,5 ist.)

N200 G01 X200 F1000

....


Mindestradius für tangentiale Vorschubanpassung

Dieser Befehl ergänzt die tangentiale Vorschubanpassung, die mit G10/G11 programmiert wird. Der Mindestradius wird bei Zirkularsätzen mit der Kennung für Vorschubanpassung berücksichtigt. Nur wenn der programmierte Zirkularradius größer oder gleich dem Minimalradius ist, wird der Vorschub korrigiert.

#SET TANGFEED RMIN [ <expr> ] (modal)

<expr> Minimaler Konturradius Rmin, bis zu dem der Tangentialvorschub korrigiert wird.

Abbildung 11-1: Programmierung des tangentialen Vorschubes.

q Ein neu programmierter Minimalradius wird mit dem nächsten relevanten Zirkularbewegungssatz berücksichtigt.

q Die Angabe des Minimalradius ist optional. Die tangentiale Vorschubanpassung mit G11 wird auch dann durchgeführt, wenn #SET TANGFEED RMIN nicht programmiert wurde oder der Radius mit Null belegt ist.

Programmierbeispiel

(Kontur mit WRK und tangentialer Vorschubanpassung)

N10 V.G.WZR=5

N20 #SET TANGFEED RMIN [3] (Definiere Minimalradius rmin = 3mm)

N30 G41 G01 X0 Y20 G11 F600 (Anwahl WRK und Vorschubanpassung)

N40 X20 Y20

N50 G03 X40 R10 (Vorschubanpassung)

N60 G01 Y40

N70 G02 X44 R2 (Keine Vorschubanpassung à rprg < rmin)

N80 G01 Y20

N20 #SET TANGFEED RMIN [5] (Definiere neuen Minimalradius rmin = 5mm)

N90 G03 X57 R4 (Keine Vorschubanpassung à rprg < rmin)

N100 G01 Y50

N110 X60 G40 G10 (Abwahl WRK und Vorschubanpassung)

N120 X0 Y0

N999 M30

812_end


Bedingte Interpretierung

Ähnlich einer Precompiler-Anweisung in der Programmiersprache "C" können Teile des NC-Programms in #IF-#ELSE-#ENDIF-Konstrukten zusammengefaßt werden. Die Interpretierung dieser Programmteile kann somit abhängig von einem arithmetischen Ausdruck gesteuert werden.

Die bedingte Interpretierung beginnt immer mit

#IF <expr>

und endet mit

#ENDIF

Die Anweisung

#ELSE

ist optional und dient dazu eine Verzweigung aufzubauen.

Die Bedingung <expr> nach #IF wird geprüft, indem der mathematische Ausdruck auf "wahr" bzw. "nicht wahr" geprüft wird (TRUE und FALSE). Um auch dezimale Größen verwenden zu können, gilt die Bedingung als erfüllt (TRUE), wenn..

..der Betragswert des mathematischen Ausdruckes > oder = 0.5 ist.

Bei der bedingten Interpretierung gelten die folgenden Regeln:

q Vor #IF, #ELSE und #ENDIF darf nur "/" stehen. Satznummern sind nicht erlaubt.

q Bedingte Interpretierungen dürfen geschachtelt werden. Die Schachtelungstiefe ist fest vorgegeben.

q Ungültige Zweige einer bedingten Interpretierung werden nicht auf Syntaxfehler überprüft sondern komplett überlesen.

Programmierbeispiel

#IF V.E.START_VALUE == TRUE

N100 F100

:

#ELSE

N200 F40

:

#ENDIF

N300

:

:

N999 M30


Unterdrückung von Verschiebungen

#SUPPRESS OFFSETS <Achsname><expr> {<Achsname><expr>} (nicht modal)

<Achsname> <expr> Neue Position der Achse ohne Verschiebungen

Wird dieser Befehl in einem Bewegungssatz programmiert, so werden die programmierten Koordinaten unverändert, d.h. ohne Berücksichtigung von aktiven Verschiebungen (NPV, BPV,.., Werkzeugverschiebung), an den NC-Kanal ausgegeben.

Programmierbeispiel

:

N10 G92 X10 Y20 (BPV X10 Y20)

N20 X0 Y0 (Position X=10 Y=20)

N30 #SUPPRESS OFFSETS X0 Y0 (Position X=0 Y=0)

:


Umschalten des Meßtyps

Mit dem folgenden Befehl kann der Meßtyp über das NC-Programm festgelegt werden.

#MEAS MODE [ [<expr>] ] (modal)

<expr> Messtyp gemäß Kapitel 4.1.10 .

Über die Programmierung von #MEAS MODE ohne Parameter wird der Default-Meßtyp angewählt, der in den Kanalparametern [1]-1 angegeben ist.

Programmierbeispiel

N10 #MEAS MODE[3] (Meßtyp 3)

N20 G100 X150 (Meßbewegungssatz)

..

N100 #MEAS MODE (Default-Meßtyp)

..

M30

Mehr:

button Erweiterte Programmierung


Erweiterte Programmierung

Alternativ zum #MEAS MODE Befehl bietet der folgende Befehl die Möglichkeit, noch weitere Messparameter festzulegen. Die gewählten Parametereinstellungen bleiben bis zum Programmende wirksam. Bei einem neuen Programmstart gelten wieder die Default-Einstellungen aus den Konfigurationslisten. Damit die Messparameter einer Achse geändert werden dürfen, muss sie als Messachse gekennzeichnet sein (d.h. der Achsparameter P-AXIS-00118 muss auf 1 gesetzt sein).

#MEAS [DEFAULT] [ [ [TYPE<expr>] [SIMU_OFFSET<expr>] ] | [ {AX<Achsname> |AXNR<expr>}

[SIGNAL<expr>] [EDGE<expr>] [INPUT<expr>] [G107 | G108] ] ] (modal)

TYPE<expr> Neuer Messtyp gemäß Kapitel 4.1.10 . Dieser Messtyp ist bis zu einer erneuten Änderung oder bis Programmende gültig.

SIMU_OFFSET<expr> Dieses Schlüsselwort ist nur speziell bei der Messsimulation im Zusammenhang mit dem Achsparameter [2]-19 (P-AXIS-00112  meas_simu_mode=4) wirksam. Der Wert verschiebt den simulierten Defaultmesspunkt bezogen auf die Bahnbewegung ausgehend von den programmierten Zielpunkten.

Bei Messtyp 2 kann der Defaultmesspunkt in positiver bzw. negativer Richtung durch SIMU_OFFSET verschoben werden. Der eventuell zusätzliche Offset durch den Achsparameter [2]-20 (P-AXIS-00114  mess_offset) wird hierbei nicht berücksichtigt.

TYPE und SIMU_OFFSET dürfen nicht in Kombination mit den anderen Schlüsselwörtern programmiert werden.

AX<Achsname> Name der Messachse

AXNR<expr> Logische Achsnummer der Messachse, positive Ganzzahl

SIGNAL<expr> Name der Messignalquelle, die für die Messung verwendet werden soll.

Gültige Werte | Bedeutung
PLC | Messignal über PLC, siehe P-AXIS-00257
DRIVE | Messignal über Positionslatch im Antrieb, siehe P-AXIS-00116 oder P-AXIS-00269
FIXED_STOP | Messignal durch Fahren auf Festanschlag, siehe P-AXIS-00330

EDGE<expr> Relevante Messflanke s. P-AXIS-00113.

Gültige Werte | Bedeutung
POS | Positive (steigende) Messflanke
NEG | Negative (fallende) Messflanke

INPUT<expr> Nummer des Messeingangs am Antrieb, der für die Messung verwendet werden soll (s. P-AXIS-00295).

Gültige Werte | Bedeutung
1 | 1. Messeingang
2 | 2. Messeingang

G107 Abwahl der Funktionalität Kantenstoßen für diese Achse, d.h. für diese Achse wird beim Kantenstoßen kein Messwert erfasst.

G108 Anwahl der Funktionalität Kantenstoßen für diese Achse. Voraussetzung ist, dass für die Achse in den Achsparametern die Funktionalität Kantenstoßen aktiviert ist (siehe P-AXIS-00098)

DEFAULT Zurücksetzen der über den #MEAS-Befehl geänderten achsbezogenen (AX, AXNR) Parametereinstellungen (SIGNAL, EDGE, INPUT, G107/G108). Es werden wieder die Messeinstellungen aus den Achsparameterlisten wirksam.

Für SERCOS-Antriebe mit Positionslatch im Antrieb (SIGNAL=DRIVE) können Messflanke (EDGE) und Messeingang (INPUT) nicht geändert werden, da dazu ebenfalls Parameteränderungen im Antrieb notwendig sind.

Programmierbeispiele

Anwahl eines anderen Messtyps:

N100 #MEAS [TYPE=2]

Setzen des Messpunkts für die Messimulation bei Messtyp 2:

Bei allen anderen Messtypen ist nur eine Verschiebung in negativer Richtung (entgegen der Bahnbewegung) möglich.

Aktivieren Messen mit Fahren auf Festanschlag für die X- und Y-Achse:

N100 #MEAS [AX=X AX=Y SIGNAL=FIXED_STOP]

Aktivieren Messignal über PLC auf negative Flanke:

N100 #MEAS [AXNR=1 SIGNAL=PLC EDGE=NEG]

Deaktivieren der Kantenstoßfunktionalität für Y- und Z-Achse:

N100 #MEAS [AX=Y AX=Z G107]

Wiederherstellen der Messeinstellungen aus den Achsparametern für alle Bahnachsen:

N100 #MEAS DEFAULT

Wiederherstellen der Messeinstellungen aus den Achsparametern für die X-Achse:

N100 #MEAS DEFAULT [AX=X]


Istwertverschiebung

Die Anwahl der Istwertverschiebung erfolgt über:

#PSET <Achsname><expr> {<Achsname><expr>} (nicht modal)

<Achsname> <expr> Neue Istposition der Achse

Die Istpositionen werden absolut programmiert. Mit diesem Befehl ist keine Verfahrbewegung verbunden.

Achsen, für die kein neuer Istwert programmiert wurde, behalten ihren aktuellen Istwert, d.h. der entsprechende Offset ändert sich für die betreffende Achse nicht.

Der #PSET-Befehl kann beliebig oft wiederholt werden.

Die vom #PSET-Befehl verursachte Verschiebung des Koordinatensystems ist nicht programmübergreifend.

Durch eine Referenzpunktfahrt (G74) wird die vom #PSET-Befehl verursachte Verschiebung des Koordinatensystems aufgehoben.

Mehr:

button Abwahl der Istwertverschiebung


Abwahl der Istwertverschiebung

#PRESET {<Achsname> <dummy_expr>} (nicht modal)

<Achsname><dummy_expr> Istwertverschiebung der Achse wird zurückgesetzt. Der Koordinatenwert ist nur aus syntaktischen Gründen erforderlich, ansonsten jedoch nicht relevant.

Wird #PRESET ohne Achsangabe programmiert, so wird in allen Achsen die Istwertverschiebung aufgehoben.

Bei angewählter WRK, Spiegelung oder Durchmesserprogrammierung darf #PSET oder #PRESET nicht programmiert werden.

("nicht modal" gilt nur für die Befehle #PSET bzw. #PRESET. Die Istwertverschiebung selbst ist natürlich bis zur erneuten An- bzw. Abwahl mit #PRESET gültig.)

Programmierbeispiel

N10 X50 Y10 Z0

N20 #PSET X20 Y20 (Position setzen für X und Y)

N30 X10

N40 #PRESET X10 (X-Position zurücksetzen; Wert 10 nicht relevant)

N50 X30

N60 #PRESET (Alle Achsen zurücksetzen)

N70 M30

Abbildung 11-2 zeigt die Position der x-Achse nach Ausführung des jeweiligen NC-Satzes in Maschinenkoordinaten:

Abbildung 11-2: Positionen der x-Achse in Maschinenkoordinaten / Programmier-koordinaten.

(In diesem Beispiel sind keine anderen Koordinatentransformationen angewählt).


Synchronbetrieb

Mehr:

button Programmierung von Achskopplungen

button Erweiterte Programmierung von Achskopplungen (SOFT-GANTRY")

button An- und Abwahl von Achskopplungen

button Abfrage von Kopplungszustand/ Kopplungsnummer über Variablen


Programmierung von Achskopplungen

Im NC-Programm können Achskopplungen mit folgendem NC-Befehl festgelegt werden.

#SET AX LINK [ <Kopplungsgruppe > , <Slave>=<Master> {,<Slave>=<Master>} ]

oder alternativ

#AX LINK [NBR] [<Kopplungsgruppe>, <Slave>=<Master> {,<Slave>=<Master>} ]

<Kopplungsgruppe> Nummer der Kopplungsgruppe.
1 ... [Max. Anzahl Kopplungsgruppen(1) 1] , Positive Ganzzahl.

<Slave> Achsbezeichnung oder logische Achsnummer der Slaveachse des Kopplungspaares i

<Master> Achsbezeichnung oder logische Achsnummer der Masterachse des Kopplungspaares i

i Max. Anzahl Kopplungspaare (2)

NBR Mit dem Logikschalter NBR wird auf die Auswertung von logischen Achsnummern anstatt von Achsnamen umgeschaltet. Die Achskopplungen müssen dann über die logischen Achsnummern definiert werden. Die Achsen müssen noch nicht im Kanal vorhanden sein. Erst bei der Aktivierung der Kopplungsgruppe wird ihr Vorhandensein geprüft!

Es muß mindestens ein Master-Slave-Kopplungspaar pro Kopplungsgruppe definiert werden.

Allgemeine Handhabung und Wirkungsweise:

q Die Definitionen von Kopplungsgruppen sind programmübergreifend gültig. D.h. sie können in einem nachfolgenden NC-Programm wieder angewählt werden (siehe auch Kapitel 11.12.3).

q Die Kopplungsgruppe mit der Kopplungsnummer "0" kann nicht im NC-Programm definiert werden. Sie wird in den Kanalparameter [1]-13 festgelegt.

q Eine nicht aktive Kopplungsgruppe kann jederzeit geändert werden. Die bisher definierten Kopplungen werden überschrieben.

q Eine aktive Kopplungsgruppe darf nicht geändert werden.

q Rekursive Achskopplungen sind nicht zulässig. Eine Masterachse kann in einer Kopplungsgruppe nicht gleichzeitig Slaveachse sein und umgekehrt. Eine Slaveachse kann in einer anderen Kopplungsgruppe nicht gleichzeitig Masterachse sein und umgekehrt.

q Master- und Slaveachse eines Kopplungspaares dürfen nicht identisch sein.

q Eine Hauptachse darf keine Slaveachse sein.

q Eine Slaveachse kann nur einer Masterachse zugeordnet sein, aber eine Masterachse kann mehrere Slaveachsen besitzen.

q Bei Aktivierung des Synchronbetriebs wird geprüft, ob alle Master- und Slaveachsen in der Achsgruppe des NC-Kanals vorhanden sind.

q Master- und Slaveachsen müssen vom gleichen Achstyp sein und im gleichen Achsmode betrieben werden.

(1) siehe [6] -2.11

(2) siehe [6] -2.12

q Der NC-Befehl zur Programmierung der Kopplungsgruppe muß alleine im NC-Satz stehen.

q Die Nummer der Kopplungsgruppe kann auch über mathematische Ausdrücke programmiert werden. Dabei muß das Ergebnis ein positiver Integerwert sein.

q Eine Nachführachse (#CAXTRACK) darf keine Master- oder Slaveachse sein.

Programmierbeispiel

N10 #SET AX LINK[1, Z2=Z] Z2 wird als Slave an Hauptachse Z gekoppelt

N20 #SET AX LINK[2, Y2=Y, X2=X] Kopplung von Y2 mit Y und X2 mit X

N30 #SET AX LINK[3, X1=X, X2=X, X3=X] Kopplung von X1, X2, X3 als Slaves an die gleiche Masterachse X

...

oder alternativ

N10 #AX LINK[1, Z2=Z]

N20 #AX LINK NBR[2, 8 = 2, 9 = 3] Kopplung über log. Achsnummern


Erweiterte Programmierung von Achskopplungen (SOFT-GANTRY")

TwinCAT CNC: Überblick

Erweiterte Programmierung von Achskopplungen (SOFT-GANTRY)

Die Verfügbarkeit dieser Funktionalität ist von der Konfiguration und dem Versionsumfang abhängig.

Bahnachsen können auch als s.g. Gantryachsen betrieben werden. Im Gegensatz zum normalen Synchronbetrieb sind hierbei zusätzliche Überwachungsmechanismen bzgl. Positionsabweichung aktiv und es gelten spezifische Fehlerreaktionen. Beim mechanischen (auch statischen) Gantrybetrieb sind die Achsen bedingt durch den Maschinenaufbau fest miteinander gekoppelt und durch die Konfiguration der Maschine festgelegt. Ein dynamischer Wechsel der Gantrykopplung ist nach Hochlauf der Steuerung nicht möglich (Abbildung 11-3).

Neben Bahnachsen können auch Spindeln im Synchronbetrieb gefahren werden. Eine genaue Beschreibung ist in Kapitel 14.5 zu finden.

Abbildung 11-3: Mechanischer Gantrybetrieb

Maschinen, die von ihrem Grundaufbau her keinen mechanischen Gantrybetrieb ermöglichen, z.B. Fräsmaschinen mit zwei unabhängigen Schlitten, können durch Programmierung im Gantrybetrieb gefahren werden. Dies ist z.B. dann notwendig, wenn zum Spannen und Bearbeiten großer Werkstücke solche Schlitten miteinander gekoppelt werden müßen (Abbildung 11-4).

Abbildung 11-4: Programmierbarer Gantrybetrieb (Soft-Gantry)

Dazu steht der in Kapitel 11.12.1 beschriebene Befehl #SET AX LINK in einer erweiterten Syntax zur Verfügung:

#SET AX LINK [ <Kopplungsgruppe > , [ <Slave>=<Master>,G [,<limit_1>,limit_2>] ]

{, [ <Slave>=<Master>,G [,<limit_1>,limit_2>] ] } ]

oder alternativ

#AX LINK [NBR] [<Kopplungsgruppe>, [ <Slave>=<Master>,G [,<limit_1>,limit_2>] ]

{, [ <Slave>=<Master>,G [,<limit_1>,limit_2>] ] } ]

<Kopplungsgruppe> Nummer der Kopplungsgruppe
1 ... [Max. Anzahl Kopplungsgruppen(1) 1] , Positive Ganzzahl.

<Slave> Achsbezeichnung oder logische Achsnummer der Slaveachse des Kopplungspaares i

<Master> Achsbezeichnung oder logische Achsnummer der Masterachse des Kopplungspaares i

i Max. Anzahl Kopplungspaare (2)

NBR Mit dem Logikschalter NBR wird auf die Auswertung von logischen Achsnummern anstatt von Achsnamen umgeschaltet. Die Achskopplungen müssen dann über die logischen Achsnummern definiert werden. Die Achsen müssen noch nicht im Kanal vorhanden sein. Erst bei der Aktivierung der Koppelgruppe wird ihr Vorhandensein geprüft!

G Schlüsselwort für "Gantrykopplung"

Bei einer Gantrykopplung dienen die folgenden Werte zur zweistufigen Überwachung der zulässigen Positionsdifferenz der Gantryachsen. Angabe in [mm]. Positive Realzahl:

<limit_1> Erste Überwachungsgrenze. Wird diese Grenze überschritten, wird die Bewegung abgebrochen und die Steuerung geht in den Fehlerzustand. Die Positionsdifferenz wird im Defaultfall während RESET abgebaut. Applikationsspezifisch kann das Verfahren auch abweichend realisiert sein.

<limit_2> Zweite Überwachungsgrenze. Bei Überschreitung dieser Grenze erfolgt die Ausgabe eines nicht RESET-fähigen Fehlers. Die Steuerung muß ausgeschaltet und die Positionsdifferenz manuell behoben werden.

Werden die Überwachungsgrenzen nicht programmiert, so gelten die Defaultwerte aus dem Achsparameterdatensatz [2] -14/-15 der Slaveachse.

(1) siehe [6]-2.11

(2) siehe [6]-2.12

Ergänzungen zur allgemeinen Handhabung und Wirkungsweise:

q Die Gantrykopplung erfolgt genau in den Positionen, in denen die Achsen zum Zeitpunkt der Anwahl (siehe Kapitel 11.12.3) der Kopplung sind. Die Angabe eines Offsets im NC-Befehl ist nicht notwendig, da die Berechnung des Offsets intern im Lageregler über die Sollpositionen erfolgt.

q Bei der Bahnbewegung werden die Dynamikdaten der Slaveachse berücksichtigt.

q Eine bei RESET oder am Programmende noch aktive Kopplung wird aus Sicherheitsgründen implizit beim nächsten Programmstart wiederhergestellt. Dieses Verhalten ist parametrierbar [1]-14, [1]-39.

Programmierbeispiel

:

N10 #SET AX LINK[1, [Y2 = Y1,G,0.01,0.25]] Gantrykopplung von Y1 als
Masterachse und Y2 als Slave-
achse. Erste Grenze ist 10µm,
Zweite Grenze ist 250 µm.

N20 #SET AX LINK[2, [Y2 = Y1,G]] Gantrykopplung von Y1 (Master) und
Y2 (Slave). Es gelten die Über-
wachungsgrenzen des Achsparameter-
datensatzes der Y2-Achse.

N30 #SET AX LINK [3,[Y2 = Y1]] Standardkopplung von Y2 mit Y1.
Kein Gantrybetrieb.

oder alternativ

N10 #AX LINK[1, [Y2 = Y1,G,0.01,0.25]]

N20 #AX LINK NBR[2, [8 = 2,G]] Gantrykopplung über log. Achsnummern

Das parallele Bearbeiten von Werkstücken mit symmetrischer bzw. skalierter Kontur kann ebenfalls durch eine erweiterte Syntax des #SET AX LINK-Befehls programmiert werden. In diesen Modis (Spiegeln bzw. Skalieren) erfolgt keine Überwachung von Positionsdifferenzen.

#SET AX LINK [ <Kopplungsgruppe> , [ <Slave>=<Master>,<zähler>, <nenner>]

{, [ <Slave>=<Master>,<zähler>,<nenner>] } ]

oder alternativ

#AX LINK [NBR] [<Kopplungsgruppe>, [<Slave>=<Master>,<zähler>, <nenner>]

{, [<Slave>=<Master>,<zähler>, <nenner>] } ]

<Kopplungsgruppe> Nummer der Kopplungsgruppe
1 ... [Max. Anzahl Kopplungsgruppen(1) 1] , Positive Ganzzahl.

<Slave> Achsbezeichnung oder logische Achsnummer der Slaveachse des Kopplungspaares i

<Master> Achsbezeichnung oder logische Achsnummer der Masterachse des Kopplungspaares i

i Max. Anzahl Kopplungspaare (2)

NBR Mit dem Logikschalter NBR wird auf die Auswertung von logischen Achsnummern anstatt von Achsnamen umgeschaltet. Die Achskopplungen müssen dann über die logischen Achsnummern definiert werden. Die Achsen müssen noch nicht im Kanal vorhanden sein. Erst bei der Aktivierung der Koppelgruppe wird ihr Vorhandensein geprüft!

<zähler>, <nenner> Ganzzahlen. Dienen zur Berechnung eines Kopplungsfaktors zwischen Master- und Slaveachse.

Für den resultierenden Kopplungsfaktor gilt:

-1 : Spiegelungskopplung.

1 : Standardkopplung; ist äquivalent zur bisherigen Syntax.

0 : Ausgabe einer Fehlermeldung.

Faktoren, die eine reine Skalierung (Faktor ≠ 1) bzw. Skalierungen mit gleichzeitiger Spiegelung (Faktor ≠ -1) bewirken, sind momentan nicht zulässig. Es wird eine Warning ausgegeben und die Kopplung wird als Standardkopplung behandelt. D.h., es sind nur die Kopplungsfaktoren 1 und 1 zulässig (siehe Beispiele).

(1) siehe [6]-2.11

(2) siehe [6]-2.12

Programmierbeispiel

:

N10 #SET AX LINK[1, [Y2 = Y1,1,-1]] Spiegelungskopplung (Faktor 1)

N20 #SET AX LINK[1, [Y2 = Y1,-1,1]] Spiegelungskopplung (Faktor 1)

N30 #SET AX LINK[1, [Y2 = Y1,-2,2]] Spiegelungskopplung (Faktor 1)

N40 #SET AX LINK[1, [Y2 = Y1,1,1]] Standardkopplung

N50 #SET AX LINK[1, [Y2 = Y1,2,2]] Standardkopplung

N60 #SET AX LINK[1, [Y2 = Y1,0,1]] Fehlermeldung, Programmabbruch

N70 #SET AX LINK[1, [Y2 = Y1,1,0]] Fehlermeldung, Programmabbruch

N80 #SET AX LINK[1, [Y2 = Y1,1,2]] Warning (Faktor 0.5), Standardkpl.

N90 #SET AX LINK[1, [Y2 = Y1,2,3]] Warning(Faktor 0.666), Standardkpl.

N100 #SET AX LINK[1, [Y2 = Y1,3,2]] Warning (Faktor 1.5), Standardkpl.

N110 #SET AX LINK[1, [Y2 = Y1,-1,2]] Warning (Faktor 0.5), Standardkpl.

N120 #SET AX LINK[1, [Y2 = Y1,-3,2]] Warning(Faktor 1.5), Standardkpl.

oder alternativ

N40 #AX LINK[1, [Y2 = Y1,1,1]] Standardkopplung

N50 #AX LINK NBR[1, [8 = 2,2,2]] Standardkoppl. über log. Achsnummern


An- und Abwahl von Achskopplungen

Eine Kopplungsgruppe kann mit folgendem NC-Befehl aktiviert werden:

#ENABLE AX LINK [ <Kopplungsgruppe> ]

oder

#ENABLE AX LINK (Kopplungsgruppe 0, definiert in den Kanalparametern)

oder alternativ

#AX LINK ON [ <Kopplungsgruppe> ]

oder

#AX LINK ON (Kopplungsgruppe 0, definiert in den Kanalparametern)

Eine aktive Kopplungsgruppe kann mit folgenden NC-Befehlen deaktiviert werden:

#DISABLE AX LINK [ <Kopplungsgruppe> ]

oder

#DISABLE AX LINK (Abwahl der zuletzt aktivierten Kopplungsgruppe)

oder alternativ

#AX LINK OFF [ <Kopplungsgruppe> ]

oder

#AX LINK OFF (Abwahl der zuletzt aktivierten Kopplungsgruppe)

#AX LINK OFF ALL (Abwahl aller aktiven Kopplungsgruppen)

Handhabung und Wirkungsweise:

q Nach dem Hochlauf ist in der Grundstellung des NC-Kerns keine Kopplungsgruppe aktiv. Die Aktivierung von Achskopplungen beginnt mit der Programmierung im NC-Programm und endet, wenn keine Abwahl erfolgt, mit Programmende (M30, M02). Bei entsprechender Parametrierung [1]-39 können noch aktive Achskopplungen auch über das Programmende hinaus, d.h. programmübergreifend wirksam bleiben.

q Es können mehrere Kopplungsgruppen gleichzeitig aktiviert sein.

q Nicht belegte Kopplungsgruppen können nicht aktiviert werden. Eine Kopplungsgruppe gilt dann als belegt, wenn mindestens eine zulässige Master-Slave-Kopplung definiert wurde.

q Der NC-Befehl muß alleine im NC-Satz stehen.

q Die Nummer der Kopplungsgruppe kann auch über mathematische Ausdrücke programmiert werden.

q Bei An- oder Abwahl des Synchronbetriebs darf die WRK nicht angewählt sein.

q Bei Anwahl des Synchronbetriebs darf der Handbetrieb mit paralleler Interpolation (G201) für die Slaveachsen nicht aktiv sein.

q Bei aktivem Synchronbetrieb können die Slaveachsen im NC-Programm nicht angesprochen werden.

Programmierbeispiel

Verwendete Achsbezeichnungen: Masterachssystem X, Y, Z, C

Slaveachssystem Y_S, Z_S, C_S

(Initialisierungsprogramm)

L UP_INIT_ACHS_KOPPL

(Achsenverkopplung 1 initialisieren)

N10 #SET AX LINK[1, Y_S=Y, Z_S=Z, C_S=C]

(oder #AX LINK[1, Y_S=Y, Z_S=Z, C_S=C]

N20 M17

(Werkzeugwechselprogramm)

L UP_WZ

N30 #DISABLE AX LINK (oder #AX LINK OFF)

(Werkzeugwechselposition anfahren)

N40 G01 G90 Y1000 Z100 C0 Y_S=1000 Z_S=100 C_S=0

(Werkzeugwechsel; T10 enthält bereits alle Werkzeugachsversätze und Werkzeuglänge von Master- und Slavewerkzeug oder diese werden explizit eingerechnet. )

N50 T10 D10

.....................

(Weitere Befehle für physikalischen Werkzeugwechsel)

...................

(Alte Koppelposition anfahren; die Koppelposition kann auch über Parameterprogrammmierung festgelegt und dann vom Unterprogramm verwendet werden.)

N80 G01 G90 X20 Y20 Z40 C50 Y_S=20 Z_S=40 C_S=50

N90 #ENABLE AX LINK[1] (oder #AX LINK ON[1])

N110 M17

(Unterprogramm für Konturbearbeitung)

%L UP1

N150 G01 G91 X10 Y10 Z-20 C90

N160 G02 X20 Y20 I10 J10

N170 LL UP_WZ

N180 G01 G91 X10 Y10 Z-20 C90

N190 G02 X20 Y20 I10 J10

N200 M17

(Hauptprogramm; Ausgangsbed.: Beide Werkzeuge sind eingewechselt.)

(Zunächst beide Achssysteme auf Koppelposition fahren.)

N300 G01 G91 X20 Y20 Z40 C50 Y_S=20 Z_S=40 C_S=50 F300

(Synchronbetrieb starten)

N310 #ENABLE AX LINK[1] (oder #AX LINK ON[1])

N320 LL UP1

........................................

........................................

N400 #DISABLE AX LINK (oder #AX LINK OFF)

N410 M30


Abfrage von Kopplungszustand/ Kopplungsnummer über Variablen

Über Variablen im NC-Programm kann der aktuelle Kopplungszustand und die aktuell bzw. zuletzt aktive Kopplungsgruppe abgefragt werden. Dazu werden folgende achsgruppenspezifischen Variablen neu eingeführt:

Abfrage der aktuellen bzw. zuletzt aktiven Kopplungsgruppe:

V.G.AX_LINK.NR

Abfrage des aktuellen Kopplungszustandes:

V.G.AX_LINK.ACTIVE

Bei diesen Variablen sind nur Lesezugriffe zulässig. Schreiboperationen führen zu einer Fehlermeldung mit Programmabbruch.


Meldungen aus dem NC-Programm

Mit dieser Funktionalität können Meldungen aus dem NC-Programm heraus an beliebige Systemteilnehmer abgesetzt werden. Diese Funktionalität entspricht der von Betriebssystemen her bekannten "printf"-Funktion.

Meldungen im NC-Programm können z.B. zur Anzeige für den Bediener (Beobachter) programmiert werden und ihm Hinweise geben, in welchem Zustand sich der Prozeß oder die Steuerung im Moment befindet. Die Meldungsanzeige kann deshalb wahlweise mit dem aktuellen Bearbeitungszustand synchronisiert werden. D.h., die Anzeige der Meldung erfolgt erst dann, wenn der Interpolator die Stelle im NC-Programm erreicht hat.

Ein Meldungstext kann aus ASCII-Zeichen, Parametern und Variablen zusammengesetzt werden.

Eine Meldung kann nicht zusammen mit anderen NC-Befehlen im gleichen Satz programmiert werden (Ausnahme #ADD).

Verschickt wird die Meldung im ASCII-Format.

Mehr:

button Programmierung einer Meldung

button Programmierung der Meldungsinformation

button Einbeziehung der Funktionalität "Erweiterte Stringdecodierung"

button Schreiben von Meldungen in eine Datei

button Ausgabe von Zusatzinformationen am Satzende


Programmierung einer Meldung

#MSG [<Modus>] [<Empfänger>] ["<Meldungstext>"]

<Modus> Der Modus legt den Zeitpunkt der Meldungsausgabe fest. Soll die Meldung synchron zum Bearbeitungsstand im Interpolator ausgegeben werden, so ist der Modus SYN bzw. SYN_ACK anzugeben. Ohne Modusangabe wird die Meldung direkt nach der Decodierung ausgegeben.

Modus | Ausgabezeitpunkt der Meldung
SYN | Synchron zum Bearbeitungsstand im Interpolator
SYN_ACK | Synchron zum Bearbeitungsstand im Interpolator mit Quittierung durch den Empfänger (z.B. PLC). Der Interpolator setzt erst nach Empfang der Quittierung die Bearbeitung fort.
--- | Direkt nach der Decodierung (Default).

<Empfänger> Der Empfänger der Meldung wird durch seine Kommunikations-Teilnehmer-ID angegeben . Ohne Angabe des Empfängers wird der konfigurierte Standardempfänger[6]verwendet.

Empfänger-ID | Beschreibung
ISG_DIAG_BED | Meldung geht an CNC-Diagnoseoberfläche
HMI | Meldung geht an systemspezifische Bedienoberfläche
PLC | Meldung geht an systemspezifische SPS

<Meldungstext> Der Meldungstext ist in Anführungszeichen "..." einzuschließen.

Programmierbeispiel

#MSG HMI ["Text_1"]

#MSG SYN HMI ["Text_2"]

#MSG ["Text_3"]

#MSG SYN ["Text_4"]

#MSG SYN_ACK ["Text_5"]

Text_1 wird direkt nach der Decodierung und String Text_2 synchron zur Bearbeitung im Interpolator an die systemspezifische Bedienoberfläche verschickt.

Text_3 wird direkt nach der Decodierung und Text_4 synchron zur Bearbeitung im Interpolator an den Standardempfänger verschickt.

Text_5 wird ebenfalls synchron zur Bearbeitung im Interpolator an den Standardempfänger verschickt, die Bearbeitung wird jedoch bis zum Empfang der Quittierung angehalten.

Folgende Formatelemente zur Ausgabe von Zahlenwerten bzw. zur Ausgabe von Strings stehen zur Verfügung:

%d oder %D | Ausgabe von Dezimalzahlen mit Vorzeichen (signed integer)
%u oder %U | Ausgabe von Dezimalzahlen ohne Vorzeichen (unsigned integer)
%f oder %F | Ausgabe von Realzahlen (float)
%s oder %S | Ausgabe von Strings (<String>, Makros, V.E.STRING)

Die Anzahl der Formatzeichen muß mit der Anzahl der nachfolgenden Parameter übereinstimmen.

Programmierbeispiele

Programmierung einer Meldung mit Formatelementen:

#MSG [ "Meldungstext_%d und Meldungstext_2", 1 ]

Gesendeter String: Meldungstext_1 und Meldungstext_2

#MSG [ "Aktueller Messwert: %f", V.A.MESS.X]

Gesendeter String: Aktueller Messwert: 3.4567800000E+001

#MSG [ "Aktueller Zustand: %s", "Schruppen beendet"]

Gesendeter String: Aktueller Zustand: Schruppen beendet

Zur Ausgabe des "%"-Zeichens muß die Steuerfolge "%%" programmiert werden. Für ein Hochkomma muß das "\"-Zeichen vorangestellt werden.

Programmierung einer Meldung mit "%"-Zeichen und Hochkomma:

#MSG [ "Text mit %%-Angabe"]

#MSG [ "Text in Hochkomma: \"TEXT\" "]

Gesendeter String: Text mit %-Angabe und Text in Hochkomma: "TEXT"

Ein Meldungstext kann auch mit Parametern und Variablen angegeben werden.

Programmierung einer Meldung mit Parametern und Variablen:

P10 = 1

V.P.BSP = 2

#MSG SYN ["Text_%D und Text_%D", P10, V.P.BSP]

In diesem Beispiel wird der String Text_1 und Text_2 synchron zur Bearbeitung im Interpolator an den Standardempfänger verschickt.


Programmierung der Meldungsinformation

Benutzerspezifische Informationen und Anzeigeparameter für die Meldungsverarbeitung können mit dem folgenden Befehl programmiert werden. Die Informationen und Parameter werden ebenfalls als ASCII-String verschickt.

#MSG INFO [<Modus>] [<Empfänger>] ["<Meldungsinformation>"]

Im Vergleich zur Meldung, bei der der Meldungsempfänger den ASCII-String in der Regel nur anzuzeigen hat, zeigt die Meldungsinformation an, daß der ASCII-String eine benutzerspezifisch codierte Information darstellt, die der Empfänger weiterzuverarbeiten hat.

Soll die Meldungsinformation synchron zum Bearbeitungsstand im Interpolator an den Empfänger geschickt werden, so ist der Modus SYN anzugeben. Ohne Modusangabe wird die Meldung direkt nach der Decodierung ausgegeben (siehe vorheriges Kapitel ).

Bei der Angabe des Empfängers gelten die gleichen Bedingungen wie beim #MSG-Befehl (siehe vorheriges Kapitel).

Die Meldungsinformation ist in Anführungszeichen "..." einzuschließen. Zur Ausgabe von Zahlenwerten stehen die gleichen Formatelemente wie beim #MSG-Befehl zur Verfügung (siehe vorheriges Kapitel).

Programmierbeispiel

P1 = 20

#MSG INFO ["ROT,%d,FETT",P1]

In diesem Beispiel wird der String ROT,20,FETT als Meldungsinformation an den Standardempfänger verschickt.


Einbeziehung der Funktionalität "Erweiterte Stringdecodierung"

Die Verfügbarkeit dieser Funktionalität ist von der Konfiguration und dem Versionsumfang abhängig.

Zur programmübergreifenden Verwaltung von Meldungen können diese als Stringersatz definiert werden. Dies ist vor allem sinnvoll für Meldungen, die mehrfach oder von mehreren Programmen verwendet werden.

Beispiel eines Stringersatzes einer Meldung in den Kanalparametern [1]:

makro_def[1].symbol Meldung_1

makro_def[1].nc_code #MSG ["Meldungstext"]

Dadurch kann eine Meldung im NC-Programm mit folgendem Aufruf abgesetzt werden:

:

"Meldung_1" (Der String "Meldungstext" wird an den)

(Defaultempfänger für Meldungen geschickt)

:


Schreiben von Meldungen in eine Datei

Mit dem Befehl #MSG SAVE werden Daten aus dem NC-Programm direkt auf einem Speichermedium (z.B. Festplatte) in einer Datei gespeichert. Die Möglichkeiten zum Aufbau des Meldungstextes und der Protokollierung von Daten stimmen hierbei in vollem Umfang mit denen des Befehls #MSG bzw. #MSG INFO überein.

#MSG SAVE [EXCLUSIVE] ["<Meldungstext>"]

Die Angabe eines Modus (SYN) oder eines Empfängers (z.B. HMI) ist nicht notwendig und führt zur Ausgabe einer Fehlermeldung, da die Meldung direkt im NC-Programm nach der Auswertung in die Ausgabedatei geschrieben wird.

Der Meldungstext ist in Anführungszeichen "..." einzuschließen. Bei jedem Aufruf von #MSG SAVE wird der Meldungstext bei bereits bestehender Ausgabedatei an das Dateiende angefügt. Um eine neue Ausgabedatei zu beginnen, sollte der Anwender deshalb vor Programmstart eine bereits vorhandene Datei löschen.

Mit #MSG SAVE ["Meldungstext"] wird der Meldungstext in der Ausgabedatei in der Form

< Zeitstempel > Meldungstext

geschrieben.

Mit #MSG SAVE EXCLUSIVE ["Meldungstext"] wird der Meldungstext in der Ausgabedatei ohne Zeitstempel in der Form

Meldungstext

geschrieben.

Der Dateiname kann zuvor über den NC-Befehl #FILENAME festgelegt werden. Wird von dieser Möglichkeit nicht Gebrauch gemacht, schreibt #MSG SAVE automatisch in eine Datei mit dem Namen message.txt .

Der Pfad zur Ausgabedatei kann in der Hochlaufliste [7]-2 angegeben werden. Ist hier kein Pfad für die Ausgabedatei eingetragen, wird abhängig von der Steuerungsplattform ein Defaultpfad verwendet bzw. die Ausgabedatei im Hauptverzeichnis der NC-Steuerung angelegt.

Programmierbeispiel

:

#FILENAME [MSG="timer.txt"]

:

#TIMER START [ID=10] Zähler 10 starten

#TIMER START SYN [ID11] Zähler 11 (Interp.-Ebene) starten

:

:

#TIMER READ [ID10] Zählerstandablage in V.G.TIMER[10]

#TIMER READ SYN [ID11] Zählerstandablage in V.G.TIMER[11]

#MSG SAVE["T10= %d",V.G.TIMER[10]] Zählerstand in timer.txt ablegen

#MSG SAVE["T11= %d",V.G.TIMER[11]] Zählerstand in timer.txt ablegen

#TIMER STOP [ID10] Zähler 10 wird gestoppt.

#TIMER CLEAR [ID10] Zähler 10 zurücksetzen.

:


Ausgabe von Zusatzinformationen am Satzende

Mit dem Befehl #ADD können im NC-Satz Zusatzinformationen erzeugt werden. Die Möglichkeiten zum Aufbau dieser Zusatzinformationen (Meldungstexte) stimmen hierbei in vollem Umfang mit denen der #MSG-Befehle überein. Im Gegensatz zu den #MSG-Befehlen dürfen jedoch vor #ADD andere NC-Befehle programmiert werden. Somit muß #ADD stets als letzter Befehl am NC-Satzende programmiert sein. Nachfolgende Kommentare sind erlaubt.

#ADD [<Empfänger>] ["<Zusatzinformationen>"]

Die Angabe eines Modus (SYN) ist nicht notwendig und führt zur Ausgabe einer Fehlermeldung, da die Meldung automatisch immer synchron zum Bearbeitungsstand im Interpolator ausgegeben wird.

Bei der Angabe des Empfängers gelten die gleichen Bedingungen wie bei den #MSG-Befehlen.

Die Zusatzinformationen sind in Anführungszeichen "..." einzuschließen.

Programmierbeispiel

%add_block_info

N05 P1=20

N10 G00 X0 Y0 Z0

N15 T1 #ADD["Werkzeug T=%d aktiv", V.G.T_AKT]

N20 G01 F2000 X10 #ADD["X-Position anfahren"] (Kommentar)

N30 YP1 #ADD["Y-position=%d", P1]

N40 Z30 #ADD["Z-position"]

N50 Z33 #ADD["Z-position"] X11 Y22 ->Fehler 21509

N999 M30


Ruckbegrenzender Slope

Der Slope bestimmt die Geschwindigkeit auf der programmierten Bahn unter Einhaltung der vorgegebenen zulässigen Geschwindigkeiten, Beschleunigungen und Rücke [2]-8. Folgende Modi sind verfügbar:

q sprungförmiges Beschleunigungsprofil mit Begrenzung der Beschleunigung ohne Überwachung des Rucks,

q trapezförmiges Beschleunigungsprofil mit Rucküberwachung,

q sinusquadratförmiges Beschleunigungsprofil mit Rucküberwachung.

Je nach Wahl der Slope-Funktion stellt sich der Beschleunigungsverlauf ein:

Abbildung 11-5: Beschleunigung auf der programmierten Bahn

Das Beschleunigungsprofil wird über Beschleunigungen und Rampenzeiten achsspezifisch parametriert [2]-8:

Abbildung 11-6: Parameter des Beschleunigungsprofils

Mehr:

button Wahl des Betriebsmodus


Wahl des Betriebsmodus

#SET SLOPE PROFIL [ [<Profil> [,<t_id>,<a_id>] ] ] (modal)

<Profil> Art des Beschleunigungsprofils

Profil | Bedeutung
0 | sprungförmiges Beschleunigungsprofil (Grundzustand)
1 | trapezförmiges Beschleunigungsprofil
2 | sinusquadratförmiges Beschleunigungsprofil
3 | HSC-Slope, wird empfohlen für die "Erweiterte HSC-Programmierung" *

Die Programmierung von #SET SLOPE PROFIL ohne weitere Angaben stellt den Grundzustand (wie nach Hochlauf) wieder her, d.h. als Default wird der Slopetyp aus dem Kanalparametersatz [1]-26 gesetzt.

* Die Nutzung dieser Funktionalität zur Anwahl des Profiltyps 3 (HSC-Slope) erfordert die Lizenzierung des Erweiterungspaketes "HSC". Sie ist nicht im Umfang der Standardlizenz enthalten.

<t_id> Bestimmt, auf welche Rampenzeiten die Rampenzeitgewichtung (G132/ G133) wirkt. Die Gewichtung wird nur bei trapez- oder sinusquadratförmigem Beschleunigungsprofil eingerechnet.

ID | Bedeutung
0 | Gewichtung der Rampenzeit wirkt auf alle Rampenzeiten (Grundzustand).
1 | Gewichtung der Rampenzeit wirkt auf TR,beschl,zu
2 | Gewichtung der Rampenzeit wirkt auf TR,beschl,ab
3 | Gewichtung der Rampenzeit wirkt auf TR,brems,zu
4 | Gewichtung der Rampenzeit wirkt auf TR,brems,ab

<a_id> Bestimmt, auf welche Beschleunigungen die Beschleunigungsgewichtung (G130/G131) wirkt.

ID | Bedeutung
0 | Gewichtung der Beschleunigung wirkt auf alle Beschleunigungen (Grundzustand).
1 | Gewichtung der Beschleunigung wirkt auf abeschl
2 | Gewichtung der Beschleunigung wirkt auf abrems

Bei sprungförmigem Beschleunigungsprofil gilt abeschl = abrems. Die Gewichtung der Beschleunigung umfaßt generell beide Parameter.

Programmierbeispiel 1

N10 G01 X50 Y10 Z0 F1000 (sprungförmiges Beschl.profil)

N20 #SET SLOPE PROFIL[1] (trapezförmiges Beschl.profil)

N30 X10 Y30

N40 #SET SLOPE PROFIL[2] (sinusquadratförmiges Beschl.profil)

N50 X15

N60 Y50

N70 M30

Auf der programmierten Bahn ergibt sich folgender Geschwindigkeitsverlauf:

Abbildung 11-7: Geschwindigkeitsverlauf auf der programmierten Bahn.

Die verschiedenen Rampenzeiten und Beschleunigungen eines Beschleunigungsprofils können auch gleichzeitig unterschiedlich gewichtet sein. Hierbei muss die Programmierung jeder Gewichtung separat erfolgen.

Im folgenden Beispiel wird das trapezförmige Beschleunigungsprofil einzelner Achsen (X, Y) mit unterschiedlichen Gewichtungen parametriert.

Für alle Achsen gemeinsam (hier X, Y, Z, A) wird dann eine bestimmte Rampenzeit und eine bestimmte Beschleunigung gesetzt.

Programmierbeispiel 2

:

N10 #SET SLOPE PROFIL[1,1,0] (Gewichtung wirkt auf TR,beschl,zu)

N15 G132 X75 Y65 (Rampenzeitgewichtung von TR,beschl,zu der)
(X-Achse auf 75%, Y-Achse auf 65%)

N20 #SET SLOPE PROFIL[1,2,0] (Gewichtung wirkt auf TR,beschl,ab)

N25 G132 X50 Y100 (Rampenzeitgewichtung von TR,beschl,ab der)
(X-Achse auf 50%, Y-Achse auf 100% zu-)
(rueckstellen, da sonst modaler Wert von)
(N15 (65%) weiterhin gilt)

N30 #SET SLOPE PROFIL[1,3,0] (Gewichtung wirkt auf TR,brems,zu)

N35 G132 X25 (Rampenzeitgewichtung von TR,brems,zu der)
(X-Achse auf 25%)

N40 #SET SLOPE PROFIL[1,1,1] (Gewichtung wirkt auf abeschl)

N45 G130 X75 (Beschleunigungsgewichtung von abeschl der)
(X-Achse auf 75%)

N50 #SET SLOPE PROFIL[1,4,0] (Gewichtung wirkt auf TR,brems,ab)

N55 G133 80 (Rampenzeitgewichtung von TR,brems,aballer)
(Achsen auf 80%)

N60 #SET SLOPE PROFIL[1,1,2] (Gewichtung wirkt auf abrems)

N65 G131 66 (Beschleunigungsgewichtung von abremsaller)
(Achsen auf 66%)

:

N.. G01 X.. Y.. F..

:

N.. #SET SLOPE PROFIL[1,0,0] (trapezförmiges Beschl.profil)

N.. G133 100 G131 100 (Rücksetzen der Rampenzeit-/und Beschleu-)
(nigungsgewichtungen aller Achsen auf 100%)
:

N.. G01 X.. Y.. F..

:

N999 M30

Parametrierung der Beschleunigungsprofile der Achsen X, Y, Z, A bis Satz N65:

Profil Achse | TR,beschl,zu | TR,beschl,ab | TR,brems,zu | TR,brems,ab | abeschl | abrems
X | 75% | 50% | 25% | 80% | 75% | 66%
Y | 65% | 100% | 100% | 80% | 100% | 66%
Z | 100% | 100% | 100% | 80% | 100% | 66%
A | 100% | 100% | 100% | 80% | 100% | 66%


Akima-Spline-Interpolation

Die Nutzung dieser Funktionalität erfordert die Lizenzierung des Erweiterungspaketes "Spline". Sie ist nicht im Umfang der Standardlizenz enthalten.

Bei angewählter Spline-Interpolation werden Akima-Splines durch die programmierten Stützstellen gelegt.

Mehr:

button Anwahl des Splinetyps

button Anwahl der Spline-Interpolation

button Abwahl der Spline-Interpolation

button Programmierung der Stützpunkte

button Angabe der Übergangsart

button Definition der Starttangente

button Definition der Zieltangente


Anwahl des Splinetyps

#SET SPLINETYPE AKIMA (modal)

Falls vorhanden, ist dieser Splinetyp der Defaultsplinetyp. Es wird jedoch empfohlen, den Splinetyp immer explizit zu programmieren.

Unmittelbar nach einer Anwahl des Splinetyps ist kein tangentialer Übergang aus dem vorhergehenden Bewegungssatz in die Spline-Kurve möglich.


Anwahl der Spline-Interpolation

#SET SPLINE ON (modal)

Aus Kompatibilitätsgründen ist eine Anwahl der Spline-Interpolation außerdem über G151 möglich.

Die Spline-Interpolation wird im zuletzt gewählten Modus angewählt. Die Spline-Kurve beginnt an der zuletzt programmierten Zielposition. Diese Position ist die erste Stützstelle der Spline-Kurve.

Der Befehl kann im gleichen Satz mit der zweiten Stützstelle der Spline-Kurve stehen oder im Satz davor.


Abwahl der Spline-Interpolation

#SET SPLINE OFF (modal)

Aus Kompatibilitätsgründen ist eine Abwahl der Spline-Interpolation außerdem über G150 möglich.

Steht der Befehl in einem Satz zusammen mit einer Positionsangabe, so ist der entsprechende Punkt bereits nicht mehr Teil der Spline-Kurve.

Die Abwahl darf frühestens nach 3 programmierten Stützpunkten erfolgen bzw. nach 2 Stützpunkten, falls alle Tangenten vorgegeben wurden (tangentialer Übergang an beiden Kurvenenden bzw. explizite Programmierung aller Tangenten).


Programmierung der Stützpunkte

Die Programmierung der Stützstellen erfolgt mit Linearsätzen (G00 und G01), deren Zielpunkte als Stützstellen dienen.


Angabe der Übergangsart

#SET ASPLINE MODE [ <start_übergangsart> , <ziel_übergangsart> ] (modal)

<start_übergangsart> ,

<ziel_übergangsart> Tangentiale Übergangsart zwischen Spline-Kurve und den angrenzenden (Linear- oder Zirkular-)Bewegungssätzen.

Übergangsart | Bedeutung
1 | Tangente der Splinekurve am Übergang ergibt sich automatisch
2 | Tangentialer Übergang in den vorhergehenden bzw. nachfolgenden Satz
3 | Tangente der Splinekurve am Übergang wird durch Anwender explizit vorgegeben

Die Angabe der Übergangsart ist optional. Erfolgt keine Angabe, so wird als Voreinstellung Übergangsart 1 verwendet.

Textfeld: #SET SPLINE ON bzw. G151 #SET ASPLINE MODE [Start, Ziel] Textfeld: #SET SPLINE OFF bzw. G150

Abbildung 11-8: Beispiele für dieKombination der Übergangsarten 1 und 2

Ist die explizite Tangentenvorgabe für einen bestimmten Übergang angewählt (Übergangsart 3) und wird für eine bestimmte Achse keine Tangente programmiert, so wird die Tangente automatisch bestimmt (Übergangsart 1).


Definition der Starttangente

#SET ASPLINE STARTTANG {<Achsname><expr>} (modal)

<Achsname> <expr> Komponenten des Tangentenvektors

Definition der Starttangente. Unter Verwendung der Achsbezeichnungen wird ein Vektor angegeben, dessen Richtung der Tangentenrichtung entspricht  der Vektor braucht also nicht normiert zu sein, es müssen jedoch stets alle Komponenten angegeben werden.

Für Mitschleppachsen wird die Ableitung der Achsposition nach dem Bahnparameter angegeben, was dem Verhältnis der Bewegung der Mitschleppachse zur Bewegung der Hauptachsen entspricht.


Definition der Zieltangente

#SET ASPLINE ZIELTANG {<Achsname><expr>} (modal)

<Achsname> <expr> Komponenten des Tangentenvektors

Definition der Zieltangente; analog zur Definition der Starttangente.

Programmierbeispiel

N10 G01 X20 Y0 F1000 (wird durch nachf. G151 zum ersten)

(Stützpunkt der Spline-Kurve)

N20 #SET ASPLINE MODE[3,1] (Übergangsart mit expliziter Vorgabe)
(derStarttangente und autom. Bestimmung)
(der Zieltangente)

N30 #SET ASPLINE STARTTANG X1 Y1 Z0 (Vorgabe der Starttangente)

N40 G151 (Anwahl der Spline-Interpolation)

N50 G01 X40 Y20

N60 X60

N70 Y0

N80 X80

N90 Y10 (wird durch nachf. G150 zum letzten)

(Stützpunkt der Spline-Kurve)

N100 G150 (Abwahl der Spline  Interpolation)

N110 X70

N120 M30

Das folgende NC-Programm liefert dasselbe Resultat, verwendet jedoch für die An- und Abwahl der Spline-Interpolation die zweite Variante.

N10 G01 X20 Y0 F1000

N20 #SET ASPLINE MODE[3,1] (Übergangsart mit expliziter Vorgabe)
(der Starttangente und autom.)
(Bestimmung der Zieltangente)

N30 #SET ASPLINE STARTTANG X1 Y1 Z0 (Vorgabe der Starttangente)

N40 G151 G01 X40 Y20 (Anwahl der Spline-Interpolation)

N50 X60

N60 Y0

N70 X80

N80 Y10

N90 G150 X70 (Abwahl der Spline  Interpolation)

N100 M30

Achtung: Satz Nr. 80 enthält den Endpunkt des Splines!

Das Programm erzeugt folgende Kontur:

Abbildung 11-9: Bahnverlauf des Beispielprogramms (Numerierung bezieht sich auf das erste Programm-Beispiel

Es ist deutlich zu erkennen, daß der dem Satz N50 entsprechende Kurvenabschnitt an seinem Beginn (der dem Beginn der Spline-Kurve entspricht) die programmierte Steigung 1 aufweist. Die Steigung am Ende des Splines (Ende von Satz N90) ergibt sich automatisch.

Werden Zirkularsätze (G02 bzw. G03) eingefügt, so wird die Spline-Kurve vor dem Zirkularsatz unterbrochen und mit dem Eintreffen des nächsten Linearsatzes automatisch eine neue Spline-Kurve begonnen. Die Übergänge in und vom Zirkularsatz erfolgen tangential.

Die Spline-Kurve wird ebenfalls unterbrochen, wenn ein Linearsatz mit stehenden Hauptachsen und bewegten Mitschleppachsen programmiert wurde. Die Abwahl der Spline-Interpolation erfolgt mit automatischer Tangentenbestimmung am Kurvenende. Die Mitschleppachsen werden so lange linear interpoliert, bis ein Linearsatz mit bewegten Hauptachsen programmiert wird. Ist dies der Fall, erfolgt eine automatische Wiederanwahl der Spline-Interpolation. Der Übergang in die Spline-Kurve erfolgt sowohl für die Hauptachsen als auch für die Mitschleppachsen tangential.

Zwischen den Linearsätzen, welche als Stützpunkte dienen, dürfen auch andere Funktionen (z.B. M-Funktionen) programmiert werden. Die Anzahl dieser Funktionen, die jeweils insgesamt zwischen fünf aufeinanderfolgenden Stützstellen programmiert werden dürfen, ist jedoch konfigurationsabhängig beschränkt.


B-Spline-Interpolation

Die Nutzung dieser Funktionalität erfordert die Lizenzierung des Erweiterungspaketes "Spline". Sie ist nicht im Umfang der Standardlizenz enthalten.

Bei angewählter Spline-Interpolation werden B-Splines für die programmierten Kontrollpunkte erzeugt.

Mehr:

button Anwahl des Splinetyps

button Anwahl der Spline-Interpolation

button Abwahl der Spline-Interpolation

button Programmierung der Kontrollpunkte


Anwahl des Splinetyps

#SET SPLINETYPE BSPLINE (modal)

Falls nur der Splinetyp B-Spline vorhanden ist, so ist dieser automatisch angewählt. Es wird jedoch empfohlen, den Splinetyp immer explizit zu programmieren.


Anwahl der Spline-Interpolation

#SET SPLINE ON (modal)

Aus Kompatibilitätsgründen ist eine Anwahl der Spline-Interpolation außerdem über G151 möglich. Die Kurve beginnt an der zuletzt programmierten Zielposition.


Abwahl der Spline-Interpolation

#SET SPLINE OFF (modal)

Aus Kompatibilitätsgründen ist eine Abwahl der Spline-Interpolation außerdem über G150 möglich.

Steht der Befehl in einem Satz zusammen mit einer Positionsangabe, so ist der entsprechende Punkt bereits nicht mehr Teil der Spline-Kurve.

Die Abwahl darf frühestens nach 4 programmierten Kontrollpunkten erfolgen.


Programmierung der Kontrollpunkte

Die Programmierung der Kontrollpunkte erfolgt mit Linearsätzen (G00 und G01), deren Zielpunkte als Kontrollpunkte dienen.

Es ist zu beachten, daß die Kurve nur am Anfang und am Ende durch die Kontrollpunkte hindurch verläuft.

Programmierbeispiel

N10 #SET SPLINETYPE BSPLINE

N20 G01 X0 Y50 Z0 F10000

N30 #SET SPLINE ON

N40 X3 Y25

N50 X15 Y15

N60 X23 Y12

N70 X25 Y25

N80 X30 Y35

N90 X50 Y37.5

N100 X55 Y32.5

N110 X58 Y12

N120 X70 Y12

N130 X77.5 Y10

N140 X90 Y35

N150 X100 Y37.5

N160 #SET SPLINE OFF

N170 M30

Das Beispielprogramm ergibt folgenden Bahnverlauf:

Abbildung 11-10: Bahnverlauf des Beispielprogramms

Das Bild zeigt deutlich die glättende Eigenschaft der B-Spline-Kurve, besonders bei Satz Nr. N120/N130. Außerdem wird deutlich, daß die Kurve nicht durch die Kontrollpunkte verläuft. Das durch Verbinden der Kontrollpunkte entstehende Polygon ermöglicht jedoch eine Abschätzung des Verlaufs der B-Spline-Kurve.

Es ist beim B-Spline nicht möglich, die Tangenten an den Kurvenenden direkt vorzugeben. Da die B-Spline-Kurve an ihren Enden jedoch die Tangente der entsprechenden Verfahrsätze aufweist, können die Tangenten durch passende Programmierung des ersten und letzten Verfahrsatzes vorgegeben werden.

812_end


Freiformflächenbearbeitung

Typische Freiformflächenprogramme werden durch CAD-Systeme oder über Digitalisierung von Musterwerkstücken erstellt und bestehen in der Regel aus sehr vielen Sätzen mit Satzlängen von 0.01 bis mehreren mm. Im Idealfall wird die programmierte Kontur bei großem Vorschub ohne Geschwindigkeitsschwankungen abgefahren. Der Konturfehler ist auch bei größeren Zykluszeiten minimal. Hinsichtlich einer hohen Oberflächengüte werden Konturfehler unter bestimmten Voraussetzungen toleriert, wenn hierdurch glattere Bahnverläufe entstehen. Das aus diesen Bedingungen resultierende Anforderungsprofil kann wie folgt zusammengefaßt werden:

Randbedingung | Anforderung an die Steuerung
Konturbeschreibung über sehr viele kurze Sätze | Hoher Durchsatz, hohe Verarbeitungs-geschwindigkeit des einzelnen NC-Satzes
Hoher Vorschub ohne Geschwindigkeitsschwankungen | Anpassung der Bahngeschwindigkeit an die Versorgung, schnelle Bereitstellung der Sätze im Interpolator.
Konturfehler minimal | Interpolation möglichst genau auf der programmierten Kontur.
Hohe Oberflächenqualität | Glättung der Stützpunktfolge über Splines bei gleichzeitiger Betrachtung des resultierenden Konturfehlers.

Bei Freiformflächenprogrammen ist die zu verarbeitende Datenmenge aufgrund der geringen Satzlängen meist sehr groß. Andererseits liegen bei größeren Zykluszeiten die Interpolationsstützpunkte so weit auseinander, daß mehrere Sätze übersprungen werden. Es ist daher naheliegend, diese redundanten Sätze zumindest teilweise zu entfernen. Dies ist Aufgabe der Datenreduktion. Die auf diese Weise eingesparte Rechenzeit führt zu einem besseren Datendurchsatz und damit evtl. zu niedrigeren Bearbeitungszeiten.

Mehr:

button Standard HSC-Programmierung

button Erweiterte HSC-Programmierung

button Filterprogrammierung


Standard HSC-Programmierung

#HSC [ON | OFF] [ [OPMODE<expr>] [CONTERROR<expr>] ] (modal)

ON Freiformflächenbearbeitung aktivieren

OFF Freiformflächenbearbeitung deaktivieren

OPMODE <expr> Betriebssmodus setzen:

Gültige Werte | Bedeutung
1 | Einfügen von Übergangspolynomen
2 | Erzeugung von interpolierenden Splinekurven

CONTERROR <expr> Festlegung des maximalen Konturfehlers:

Gültige Werte | Bedeutung
>= 0.0 | Maximale Abweichung " ε ". Gilt nur in Verbindung mit aktivem OPMODE 1! Wird der Parameter im OPMODE 2 gesetzt, so wirkt er erst bei Wechsel in OPMODE 1.

Wird bei einer Aktivierung der Freiformflächenbearbeitung keine Parametrierung vorgenommen, ist folgender Grundzustand gültig:

OPMODE | 1
CONTERROR | 0.1 mm

- Die Parameter können auch in mehreren Schritten angegeben werden. Das heißt, es ist z. B. möglich zunächst den Betriebsmodus ("OPMODE") sowie die Frei-formflächenbearbeitung ("ON") in einem ersten Befehl zu aktivieren und in einem zweiten Befehl dann den maximalen Konturfehler ("CONTERROR") festzulegen.

- Es wird eine Fehlermeldung erzeugt, wenn während aktivierter Freiformflächenbearbeitung der Betriebsmodus geändert werden soll.

Mehr:

button Verfügbare Betriebsmodi

button Zusätzliche Parameter


Verfügbare Betriebsmodi

OPMODE 1: Einfügen von Übergangspolynomen

Im Betriebsmodus 1 werden bei Bewegungssatzübergängen die Sätze gekürzt und Übergangspolynome eingefügt.

Aus dem maximalen Konturfehler CONTERROR ("ε") wird der Eckabstand "a" berechnet, welcher zur Generierung des Übergangspolynoms benötigt wird. Durch das eingefügte Polynom wird der tatsächliche Konturfehler für gewöhnlich kleiner.

OPMODE 2: Erzeugung von Splinekurven für die Freiformflächenbearbeitung

Im Betriebsmodus 2 werden Splinekurven durch die vorgegebenen Eckpunkte erzeugt. Am Anfang von prismatischen Abschnitten wird die Splineerzeugung automatisch abgewählt und ein tangentialer Übergang durchgeführt.

Bei den Satzübergängen im prismatischen Bereich, die nach den zusätzlichen Parametern gemäß Kapitel 11.17.1.2 erkannt werden, wird automatisch in den Betriebsmodus 1 (OPMODE 1) gewechselt, d.h. es werden Übergangspolynome eingesetzt. Bei den eingefügten Splinekurven wird keine Konturabweichung zwischen den Stützpunkten überwacht.

Programmierbeispiel

...

#HSC[OPMODE 1 CONTERROR 0.01] (Betriebsmodus 1)

(Max. Konturfehler <= 0,01 mm)

...

#HSC ON (Anwahl Freiformflächenbearbeitung)

...

#HSC OFF (Abwahl Freiformflächenbearbeitung)

...

#HSC ON (Anwahl Freiformflächenbearbeitung)
(Zuvor angewählte Parameter sind aktiv)

(Betriebsmodus 1
(Max. Konturfehler <= 0,01 mm)

...

#HSC OFF (Abwahl Freiformflächenbearbeitung)

...

#HSC ON [OPMODE 2 CONTERROR 0.002] (Anwahl Freiformflächenbearbeitung)
(mit Betriebsmodus 2)

(Max. Kont.fehler <= 0,002 mm)

...

#HSC[CONTERROR 0.005] (Ändern des max. Kont.fehlers <= 0,005 mm)

...

#HSC OFF (Abwahl Freiformflächenbearbeitung)

Programmierbeispiel

...

#HSC[OPMODE 1 CONTERROR 0.01] (Anwahl Betriebsmodus 1)

(Max. Konturfehler <= 0,01 mm)

#HSC ON (Anwahl Freiformflächenbearbeitung)

...

#HSC[OPMODE 2] (Fehlermeldung!)

(Wechsel des Betriebsmodus während)
(aktiver Freiformflächenbearbeitung)
(nicht erlaubt)


Zusätzliche Parameter

In der Regel sind nur die bereits beschriebenen Parameter erforderlich. Für den Zugriff auf interne Einstellungen bei Betriebsmodus 2 sind noch folgende zusätzliche Parameter verfügbar:

#HSC [ [COS_PHI_MIN<expr>] [FACT_BLOCK_LEN<expr>] ]

HSC-Parameter | Typ | Gültiger Bereich (Default) | Beschreibung
COS_PHI_MIN | Real | -1.0...1.0 (0.7) | Minimaler Wert für cos( ϕ ). Kleinere Werte führen zur Abwahl der Splinekurvenerzeugung.
FACT_BLOCK_LEN | Real | > 0.0 (3.0) | Maximaler Faktor um den die Satzlänge die mittlere Satzlänge* überschreiten darf. Größere Werte führen zur Abwahl der Splinekurvenerzeugung. * Die mittlere Satzlänge ergibt sich aus den Satzlängen der vorhergehenden 5 Bewegungssätzen.


Erweiterte HSC-Programmierung

Die Nutzung dieser Funktionalität erfordert die Lizenzierung des Erweiterungspaketes "HSC". Sie ist nicht im Umfang der Standardlizenz enthalten.

Bei der erweiterten HSC-Programmierung werden B-Splines für die programmierten Kontrollpunkte erzeugt. Es wird empfohlen, für diese Art der HSC-Bearbeitung zuerst über den Befehl #SET SLOPE PROFIL den Profiltyp 3 (HSC-Slope) anzuwählen.

Für die HSC-An/Abwahl sowie für die Parametrierung der B-Splineprogrammierung steht folgender NC-Befehl zur Verfügung:

        #HSC
[ON | OFF]  [ [BSPLINE
[PATH_DEV<expr>]
[TRACK_DEV<expr>]
[MERGE<expr>]

[ AUTO_OFF_PATH <expr> ] [ AUTO_OFF _TRACK <expr> ]

[ AUTO_OFF_G00 <expr> ]

[MAX_PATH_LENGTH<expr>] [MAX_ANGLE<expr>]] ] (modal)

ON Freiformflächenbearbeitung aktivieren

OFF Freiformflächenbearbeitung deaktivieren. Abwahl jederzeit möglich.

BSPLINE Kennwort für die HSC-Bearbeitung mit BSPLINE. Muss immer als erstes Schlüsselwort programmiert sein!

PATH_DEV<expr> Maximale Abweichung des B-Splines von der programmierten Bahnkontur in mm. Wird diese Abweichung überschritten, so wird der Spline automatisch abgewählt. Wird als maximale Abweichung 0 angegeben, so findet keine Überwachung der Bahnabweichung statt.

Defaultwert: 1 mm

TRACK_DEV<expr> Maximale Abweichung der Mitschleppachsen in mm oder Grad. Wird als maximale Abweichung 0 angegeben, so findet keine Überwachung der Mitschleppachsen statt.

Defaultwert: 10 mm oder Grad

MERGE<expr> Zusammenfassen der Sätze. Die max. Abweichung wird entsprechend der Werte aus PATH_DEV und TRACK_DEV bestimmt.

0: Kein Zusammenfassen von Sätzen (Default)

1: Zusammenfassen von Sätzen

AUTO_OFF_PATH<expr> Automatische Satzunterteilung bei Überschreiten der programmierten B-Splineabweichung der Hauptachsen (PATH_DEV).

0: Keine Abwahl bei zu grosser Abweichung (Default), Satz wird unterteilt

1: Abwahl bei zu grosser Abweichung

AUTO_OFF_TRACK<expr> Automatische Satzunterteilung bei Überschreiten der programmierten B-Splineabweichung der Mitschleppachsen (TRACK_DEV)

0: Keine Abwahl bei zu grosser Abweichung (Default), Satz wird unterteilt

1: Abwahl bei zu grosser Abweichung

Weitere optionale Schalter:

AUTO_OFF_G00<expr> Automatische Abwahl der B-Splineinterpolation bei G00-Sätzen

0: Keine implizite Abwahl aufgrund eines Eilgangsatzes (Default)

1: Implizite Abwahl aufgrund eines Eilgangsatzes

MAX_PATH_LENGTH<expr> Maximale Bahnlänge relevanter Sätze in mm. Sind Sätze länger als die angegebene Länge, so wird der B-Spline implizit abgewählt.

Defaultwert: 0 mm (implizite Abwahl aufgrund der Satzlänge findet nicht statt)

MAX_ANGLE<expr> Maximaler Konturknickwinkel in Grad für Übergänge zwischen zwei Linearsätzen bis zu dem ein B-Spline eingefügt wird. Ist der Winkel zwischen den beiden Linearsätzen größer, so erfolgt eine interne Abwahl des B-Splines. Defaultwert: 0° (implizite Abwahl aufgrund des Knickwinkels findet nicht statt)

Die Programmierung der Kontrollpunkte erfolgt mit Linearsätzen (G00 und G01), deren Zielpunkte als Kontrollpunkte dienen. Es ist zu beachten, daß die Kurve nur am Anfang und am Ende sicher durch die Kontrollpunkte hindurch verläuft.

Die Parameter können auch in mehreren Schritten angegeben werden. Das heißt, es ist z. B. möglich, zunächst die maximale Abweichung von der Kontur ("PATH_DEV ") anzugeben und in einem zweiten Befehl dann die maximale Bahnlänge ("MAX_PATH_LENGTH ") und die Anwahl der B-Splineinterpolation ("ON") festzulegen.

Die Parametrierung kann nicht während aktiver B-Splineinterpolation geändert werden.

Programmierbeispiel

Die Splinekurve basiert auf den Kontrollpunkten N40  N155, wobei die Splinekurve nur bei N20 und N150 direkt hindurch verläuft.

N20 G00 X0 Y0 Z0 F10000

N30 #HSC ON [BSPLINE PATH_DEV=0.2 MERGE=1 ...] Parametrierung + Anwahl

N40 X3 Y25

N50 15 Y15

N60 23 Y12

N70 X25 Y25

N80 X30 Y35

N90 X50 Y37.5

N100 X55 Y32.5

N110 X58 Y12

N120 X70 Y12

N130 X77.5 Y10

N140 X90 Y35

N150 X100 Y37.5

N160 #HSC OFF

N170 M30

... oder auch

N20 G00 X0 Y0 Z0 F10000

N25 #HSC [BSPLINE PATH_DEV=0.2 MERGE=1 ...] Parametrierung

N30 #HSC ON Anwahl

N40 X3 Y25

N50 15 Y15

N60 23 Y12

N70 X25 Y25

N80 X30 Y35

N90 X50 Y37.5

N100 X55 Y32.5

N110 X58 Y12

N120 X70 Y12

N130 X77.5 Y10

N140 X90 Y35

N150 X100 Y37.5

N160 #HSC OFF Abwahl

N170 M30


Filterprogrammierung

Um bei der Freiformflächenbearbeitung eine gute Oberflächengüte zu erreichen, muß die Anregung von Maschinenschwingungen so weit wie möglich vermieden werden. HSC-Achsfilter bieten dem Anwender die Möglichkeit, die Achssollwerte für die Antriebe zu glätten und somit Anregungen der Maschine zu minimieren. Dabei entstehen Abweichungen zur programmierten Kontur, die aber durch den Anwender beschränkt werden können. Im Gegensatz zu konventionellen Tiefpassfiltern verzerren HSC-Achsfilter nicht die Kontur, das heißt parallele Bahnen in entgegengesetzten Richtungen sind weiterhin parallel.

Voraussetzung für die Nutzung dieser Funktionalität ist die vollständige und korrekte Parametrierung der achsspezifischen Filterparameter [2] -26.

Beispiel für die Einstellung in den Achslisten:

filter[0].order 0

filter[0].prototype 5 #Typ HSC-Filter

filter[0].type 1

filter[0].fg_f0 20

filter[0].guete 100

filter[0].share_percent 100

Für die Anwahl sowie für die Parametrierung der Filterprogrammierung steht folgender NC-Befehl zur Verfügung:

#FILTER [ON | OFF] [HSC] (modal)

HSC Kennwort für die Auswahl des HSC-Filters.

Programmierbeispiel

N1111 #FILTER ON [HSC]

N10 X0 Y0

N20 X0 Y1

N30 X1 Y1

N50 X1 Y0

N40 X0 Y0

N4001 #FILTER OFF


Schreiben und Lesen von Antriebsparametern und Kommandos

Mehr:

button SERCOS-Parameter

button SERCOS-Kommandos


SERCOS-Parameter

Die folgenden NC-Befehle dienen zur Beschreibung bzw. zum Lesen von SERCOS-Parametern. Zur einfacheren Programmierung wird das original SERCOS-Format [4] verwendet.

Zur korrekten Verarbeitung der Parameter-IDENT-Nummer im Antrieb sind noch weitere Angaben, wie z.B. Achsname bzw logische Achsnummer, Kennungen und ein Attribut erforderlich. Diese werden zusammen mit der IDENT-Nummer im gleichen NC-Befehl programmiert.

Nicht synchron bedeutet die Ausführung des Befehles im Decodierkontext.

Synchron bedeutet die Ausführung des Befehles synchron zur Bearbeitung, d.h. auf Interpolatorebene.

Mehr:

button Nicht synchronisiertes Schreiben

button Nicht synchronisiertes Lesen

button Synchronisiertes Schreiben


Nicht synchronisiertes Schreiben

#IDENT WR [ AX < Achsname> | AXNR <expr> ID < Ident_nr> VAL <expr> TYP <expr>

DEC <expr> <Drive_type>]

AX <Achsname> Name der Sercosachse

AXNR<expr> Logische Achsnummer der Sercosachse, Positive Ganzzahl

ID <Ident_nr> Identnummer im SERCOS-Format, z.B. S-0-0047 oder P-0-0129

VAL<expr> Zu schreibender Wert; Realzahl

TYP<expr> Datentyp des Wertes (2 oder 4 Byte Länge):

Gültige Werte | Bedeutung
2 | 2 Byte Datenlänge
4 | 4 Byte Datenlänge

DEC<expr> Anzahl der Nachkommastellen; Positive Ganzzahl

<Drive_type> Antriebstyp

Gültige ID's | Bedeutung
SERC | Sercos-Antrieb (momentan als einziges zulässig)

Programmierbeispiel

:

#IDENT WR [AX X ID S-0-0104 VAL 655.35 TYP 4 DEC 2 SERC]

#IDENT WR [AXNR 1 ID S-0-0104 VAL 655.35 TYP 4 DEC 2 SERC]

:

Es erfolgt keine Plausibilitätsprüfung bzgl. logischer Achsnummer, Identnummer und den programmierten Attributen Datentyp und Nachkommastellen. Für die richtige Angabe ist ausschließlich der Bediener verantwortlich.


Nicht synchronisiertes Lesen

#IDENT RD [ AX < Achsname> | AXNR <expr> ID < Ident_nr> P = < Variable> TYP <expr>

DEC <expr> <Drive_type>]

AX <Achsname> Name der Sercosachse

AXNR<expr> Logische Achsnummer der Sercosachse, Positive Ganzzahl

ID <Ident_nr> Identnummer im SERCOS-Format, z.B. S-0-0047 oder P-0-0129

<Variable> Variable in die der zu lesende Wert abgelegt wird.
z.B. P-Parameter oder V.P. , V.L. oder V.S.-Variablen.

TYP<expr> Datentyp des Wertes (2 oder 4 Byte Länge):

Gültige Werte | Bedeutung
2 | 2 Byte Datenlänge
4 | 4 Byte Datenlänge

DEC<expr> Anzahl der Nachkommastellen; Positive Ganzzahl

<Drive_type> Antriebstyp

Gültige ID's | Bedeutung
SERC | Sercos-Antrieb (momentan als einziges zulässig)

Programmierbeispiel

:

#IDENT RD [AX X ID S-0-0104 P=P1 TYP 4 DEC 2 SERC] oder

#IDENT RD [AXNR 1 ID S-0-0104 P=V.P.KV_WERT TYP 4 DEC 2 SERC]

:

Es erfolgt keine Plausibilitätsprüfung bzgl. logischer Achsnummer, Identnummer und den programmierten Attributen Datentyp und Nachkommastellen. Für die richtige Angabe ist ausschließlich der Bediener verantwortlich.


Synchronisiertes Schreiben

#IDENT WR SYN [ AX < Achsname> | AXNR <expr> ID < Ident_nr> VAL <expr> TYP <expr>

DEC <expr> <Drive_type> [ NO_WAIT ] ]

AX <Achsname> Name der Sercosachse

AXNR<expr> Logische Achsnummer der Sercosachse, Positive Ganzzahl

ID <Ident_nr> Identnummer im SERCOS-Format, z.B. S-0-0047 oder P-0-0129

VAL<expr> Zu schreibender Wert; Realzahl

TYP<expr> Datentyp des Wertes (2 oder 4 Byte Länge):

Gültige Werte | Bedeutung
2 | 2 Byte Datenlänge
4 | 4 Byte Datenlänge

DEC<expr> Anzahl der Nachkommastellen; Positive Ganzzahl

<Drive_type> Antriebstyp

Gültige ID's | Bedeutung
SERC | Sercos-Antrieb (momentan als einziges zulässig)

NO_WAIT Kein Warten auf erfolgreiches Schreiben des Parameters.

Ohne Angabe dieses Schlüsselwortes wird generell auf die Ausführung des Schreibens des Parameters gewartet.

Programmierbeispiel

:

#IDENT WR SYN [AX=X ID S-0-0104 VAL 655.35 TYP 4 DEC 2 SERC]

#IDENT WR SYN [AXNR=1 ID S-0-0104 VAL 655.35 TYP 4 DEC 2 SERC]

:

#IDENT WR SYN [AX Y ID S-0-0104 VAL655.35 TYP 4 DEC 2 SERC NO_WAIT]

:

Es erfolgt keine Plausibilitätsprüfung bzgl. logischer Achsnummer, Identnummer und den programmierten Attributen Datentyp und Nachkommastellen. Für die richtige Angabe ist ausschließlich der Bediener verantwortlich.


SERCOS-Kommandos

Die folgenden NC-Befehle dienen zum Starten bzw. Warten auf die Ausführung von SERCOS-Kommandos. Zur einfacheren Programmierung wird das original SERCOS-Format [4] verwendet.

Zur korrekten Verarbeitung der Kommando-IDENT-Nummer im Antrieb sind noch weitere Angaben, wie Achsname bzw logische Achsnummer und Kennung erforderlich. Diese werden zusammen mit der IDENT-Nummer im gleichen NC-Befehl programmiert.

Nicht synchron bedeutet die Ausführung des Befehles im Decodierkontext.

Synchron bedeutet die Ausführung des Befehles synchron zur Bearbeitung, d.h. auf Interpolatorebene.

Mehr:

button Nicht synchronisiertes Schreiben

button Synchronisiertes Schreiben

button Nicht synchronisiertes Warten

button Synchronisiertes Warten


Nicht synchronisiertes Schreiben

#COMMAND WR [ AX < Achsname> | AXNR <expr> ID<Ident_nr> <Drive_type>]

AX <Achsname> Name der SERCOS-Achse

AXNR<expr> Logische Achsnummer der Sercosachse, Positive Ganzzahl

ID <Ident_nr> Identnummer des Kommandos im SERCOS-Format,
z.B. S-0-0148 (Antriebsgeführtes Referenzieren)
oder S-0-0170 (Messtasterzyklus)

<Drive_type> Antriebstyp

Gültige ID's | Bedeutung
SERC | SERCOS-Antrieb (momentan als einziges zulässig)

Programmierbeispiel

:

#COMMAND WR [AX=X ID S-0-0148 SERC]

#COMMAND WR [AXNR 1, ID S-0-0148, SERC]

:

Es erfolgt keine Plausibilitätsprüfung bzgl. logischer Achsnummer und Identnummer. Für die richtige Angabe ist ausschließlich der Bediener verantwortlich.


Synchronisiertes Schreiben

#COMMAND WR SYN [ AX < Achsname> | AXNR <expr> ID<Ident_nr> <Drive_type>]

AX <Achsname> Name der SERCOS-Achse

AXNR<expr> Logische Achsnummer der Sercosachse, Positive Ganzzahl

ID <Ident_nr> Identnummer des Kommandos im SERCOS-Format,
z.B. S-0-0148 (Antriebsgeführtes Referenzieren)
oder S-0-0170 (Messtasterzyklus)

<Drive_type> Antriebstyp

Gültige ID's | Bedeutung
SERC | SERCOS-Antrieb (momentan als einziges zulässig)

Programmierbeispiel

:

#COMMAND WR SYN [AX Y, ID S-0-0170, SERC]

#COMMAND WR SYN [AXNR 2 ID S-0-0170 SERC]

:

Es erfolgt keine Plausibilitätsprüfung bzgl. logischer Achsnummer und Identnummer. Für die richtige Angabe ist ausschließlich der Bediener verantwortlich.


Nicht synchronisiertes Warten

#COMMAND WAIT [AX < Achsname> | AXNR <expr> ID<Ident_nr> <Drive_type> ]

AX <Achsname> Name der SERCOS-Achse

Zusätzliche ID | Bedeutung
ALL | Prüfung aller im System vorhandener SERCOS-Achsen

AXNR<expr> Logische Achsnummer der Sercosachse, Positive Ganzzahl

ID <Ident_nr> Identnummer des Kommandos im SERCOS-Format,
z.B. S-0-0148 (Antriebsgeführtes Referenzieren)
oder S-0-0170 (Messtasterzyklus)

Ist keine Identnummer angegeben, so wird auf alle offenen
Kommandos gewartet.

<Drive_type> Antriebstyp

Gültige ID's | Bedeutung
SERC | SERCOS-Antrieb (momentan als einziges zulässig)

Programmierbeispiel

...

#COMMAND WAIT [AX X, ID S-0-0148, SERC]

:

#COMMAND WAIT [AX ALL ID S-0-0148 SERC]

...

Es erfolgt keine Plausibilitätsprüfung bzgl. logischer Achsnummer und Identnummer. Für die richtige Angabe ist ausschließlich der Bediener verantwortlich.


Synchronisiertes Warten

#COMMAND WAIT SYN [AX < Achsname> | AXNR <expr> ID<Ident_nr> <Drive_type> ]

< Achsname > Name der SERCOS-Achse

Zusätzliche ID | Bedeutung
ALL | Prüfung aller im System vorhandener SERCOS-Achsen

AXNR<expr> Logische Achsnummer der Sercosachse, Positive Ganzzahl

ID<Ident_nr> Identnummer des Kommandos im SERCOS-Format,
z.B. S-0-0148 (Antriebsgeführtes Referenzieren)
oder S-0-0170 (Messtasterzyklus).

Ist keine Identnummer angegeben, so wird auf alle offenen
Kommandos gewartet.

<Drive_type> Antriebstyp

Gültige ID's | Bedeutung
SERC | SERCOS-Antrieb (momentan als einziges zulässig)

Programmierbeispiel

...

#COMMAND WAIT SYN [AX=X, ID=S-0-0148, SERC]

:

#COMMAND WAIT SYN [AX ALL, ID S-0-0148, SERC]

...

Es erfolgt keine Plausibilitätsprüfung bzgl. logischer Achsnummer und Identnummer. Für die richtige Angabe ist ausschließlich der Bediener verantwortlich.

Zum Warten auf ein SERCOS-Kommando wird die Bewegung nicht zwangsläufig angehalten. Ist das Kommando am Ende des Bewegungssatzes aber noch nicht beendet, so werden keine weiteren NC-Sätze bearbeitet und somit angehalten.

Programmierbeispiel

Am Ende von Satz N120 wird gewartet bis das Kommando S-0-0148 beendet ist.

..

N100 #COMMAND WR SYN [AX Y ID S-0-0148 SERC]

N110 G01 X1000 F100

N120 #COMMAND WAIT SYN [AX Y ID S-0-0148 SERC]

N130 G01 X2000

...

Mit den (WAIT)-Befehlen können nur Kommandos geprüft werden, welche auch zuvor von der gleichen Ebene (Decodierkontext bzw. synchron zur Bearbeitung auf Interpolatorebene) gestartet wurden. Ein zum Beispiel synchron beauftragtes Kommando (SYN) kann auch nur synchron auf Interpolatorebene geprüft werden.

Programmierbeispiel

Im Satz N110 wird auf Decodierebene kein aktives Kommando S-0-0148 gefunden und somit auch nicht gewartet, obwohl dieses in Wirklichkeit noch aktiv sein könnte. Erst in Satz N120 kann der wirkliche Status des Kommandos auf Interpolatorebene festgestellt werden.

...

N100 #COMMANDWR SYN [AX Y ID S-0-0148 SERC]

N110 #COMMAND WAIT [AX Y ID S-0-0148 SERC]

N120 #COMMANDWAIT SYN [AX Y ID S-0-0148 SERC]

...


Kanalsynchronisation

Beim Betrieb einer mehrkanaligen (besonders bei n > 2) Steuerung können Situationen auftreten, in denen bestimmte Ablaufreihenfolgen zwischen Kanälen zwingend einzuhalten sind.

Abbildung 11-11: Anwendungsbeispiel Zweiständermaschine mit Werkzeugwechsler

Das Beispiel in Abbildung 11-11 zeigt einen solchen Anwendungsfall, bei dem sich zwei Bearbei-tungseinheiten (A und B) einen gemeinsamen Bearbeitungsraum teilen. Ebenso nutzen beide die Ressource Werkzeugwechsler ©. Um bei einem derartigen Maschinenaufbau Kollisionen zu vermeiden, müssen die NC-Programme der verschiedenen Kanäle der Steuerung an bestimmten Stellen miteinander synchronisiert werden. In obigem Fall darf beispielsweise der Ständer A nicht in den Kollisionsraum einfahren, solange sich Ständer B noch darin befindet. Ebenso darf Ständer B nicht den Werkzeugwechsler benutzen, wenn Ständer A gerade darauf zugreift.

Für den Zugriff auf die Ressource Werkzeugwechsler ergibt sich z.B. der in Abbildung 11-12 dargestellte zeitliche Ablauf in den zwei Kanälen der Steuerung.

Abbildung 11-12: Ablauf beim gemeinsamen Zugriff auf eine Ressource

Die erforderliche Synchronisation basiert auf dem Versenden und Warten auf Signale und erfolgt über die nachfolgend beschriebenen NC-Befehle in den NC-Programmen.

Mehr:

button Senden von Signalen

button Löschen von (Broadcast-) Signalen

button Warten auf Signale

button RESET-Behandlung

button Synchronisationsszenarien


Senden von Signalen

Grundsätzlich wird zwischen Broadcast-Signalen ohne Empfängerangabe und nicht Broadcast-Signalen, bei denen explizit ein Kanal als Empänger angegeben ist, unterschieden. Die Signale sind durch eine eindeutige Nummer identifiziert, wobei das Senden von Signalen mit gleichen Signalnummern erlaubt ist.

Bei nicht Broadcast-Signalen wird explizit ein oder mehrere NC-Kanäle als Empfänger angegeben. Werden bei einem Signal mehrere Empfänger angegeben, so wirkt dies wie das mehrfache Senden der gleichen Signale an die einzelnen Kanäle.

Beipiel:

#SIGNAL [ID4711 CH1 CH2 CH3]

wirkt wie

#SIGNAL [ID4711 CH1]

#SIGNAL [ID4711 CH2]

#SIGNAL [ID4711 CH3]

Diese Signale sind nur für ein WAIT des adressierten Empfängers gültig und werden ohne Angabe des Verbrauchszählers (COUNT) bei einem WAIT des Empfängerkanals verbraucht. Wird ein Verbrauchszähler angegeben, so kann die Gültigkeitsdauer entsprechend erhöht werden.

Im Unterschied dazu könnnen Broadcast-Signale durch ein WAIT eines beliebigen Kanals empfangen werden. Wird bei Broadcast-Signalen kein Verbrauchszähler (COUNT) angegeben, so werden diese durch ein WAIT nicht verbraucht. D.h. sie bleiben bis zum expliziten Löschen (s. #SIGNAL REMOVE) bestehen. Wird ein Verbrauchszähler angegeben, so sind, wie bei nicht Broadcast-Signalen, genau soviele WAIT-Anforderungen bis zum Verbrauchen des Signals möglich.

#SIGNAL [<Modus>] [ID<sgn_nr> [COUNT<expr>] { P[<idx>]=<param>} {CH<chan_nr>} ] (non-

modal)

<Modus> Synchronisationsart

Gültige Modi | Bedeutung
--- | Synchronisation auf Decoder-Ebene (Grundeinstellung). Diese Synchronisation ist z.B. erforderlich, wenn auf Parameter oder Variablen synchronisiert werden soll.
SYN | Synchronisation auf Interpolator-Ebene. Diese Synchronisation ist bei Echtzeitanforderungen notwendig, z.B. Synchronisation zweier Bearbeitungseinheiten einer Mehrständermaschine

ID<sgn_nr>Signalnummer, muß systemweit eindeutig sein. Positive Ganzzahl.

COUNT<expr> Verbrauchszähler, definiert wie oft ein Signal mit #WAIT abgerufen werden kann. Positive Ganzzahl.

P[<idx>] = <param> Signalparameter. Die Parameter werden entsprechend dem angegebenen Index ins Parameterarray des Signals eingetragen.

Index | Bedeutung
<idx> | Bereich für die maximal mögliche Parameteranzahl: 0...Max. Anzahl Signalparameter (1)

CH<chan_nr> Kanalnummer:

Gültige Werte | Bedeutung
1...Max. Anzahl Kanäle (2) | Nummer des Kanals für den das Signal bestimmt ist.
--- | Wird keine Kanalnummer angegeben, so wird ein (Broadcast) Signal an alle verfügbaren Signal-empfänger des Systems gesendet.

(1) siehe [6]-6.45

(2) siehe [6]-2.4

Programmierbeispiel

(Signal 812, Synchronisation auf DEC-Ebene, Broadcast)

N500 #SIGNAL [ID812]

(Signal 4711, Synchronisation auf DEC-Ebene, an Kanal 2)

N100 #SIGNAL [ ID4711 CH2 ]

(Signal 4711, Synchronisation auf DEC-Ebene,
fuer 10 #WAIT-Abfragen, Broadcast)

N100 #SIGNAL [ ID4711 COUNT10 ]

(Signal 815, Synchronisation auf Interpolator-Ebene,
zweimal an Kanal 2 und einmal an 3)

N200 #SIGNAL SYN [ ID815 CH2 CH2 CH3 ]

(Signal 911, Synchronisation auf Decoder-Ebene, an Kanal 3)

(1.Signalparameter V.A.MESS.X, 2.Signalparameter P200,
3.Signalparameter 944)

N260 P200 = 924

N300 #SIGNAL [ IDP100 CH3 P[0]=V.A.MESS.X P[1]=P200 P[2]=944 ]


Löschen von (Broadcast-) Signalen

Signale werden i.a. nach dem Verbrauchen durch ein zugeordnetes WAIT gelöscht. Zusätzlich werden normale Signale, d.h. nicht-Broadcast-Signale, implizit bei einem NC-Reset des Empängerkanals gelöscht (s. a. Kapitel Reset-Behandlung). Da Broadcast-Signale ohne Angabe des Verbrauchszählers nicht durch ein WAIT gelöscht werden, müssen diese explizit entfernt werden. Hierzu exisitiert ein zusätzlicher NC-Befehl. Dieser NC-Befehl kann ebenso für das Löschen von normalen Signalen angewandt werden, wobei hier die Identnummer und der adressierter Kanal übereinstimmen müssen.

Wird ein einzelnes Signal zum Löschen angegeben, so wird, falls evtl. mehrere gleiche Signale vorhanden sind, auch nur eines davon entfernt. Dagegen werden bei Angabe eines Signalbereichs [ID; IDMAX] alle Signale, d.h. auch evtl. mehrere gleiche Signalnummern, innerhalb dieses Bereichs entfernt.

#SIGNAL REMOVE [<Modus>] [ID<sgn_nr> |IDMIN<sgn_nr> [IDMAX<sgn_nr>]

{CH<chan_nr>} ] (non-modal)

<Modus> Synchronisationsart

Gültige Modi | Bedeutung
--- | Synchronisation auf Decoder-Ebene (Grundeinstellung). Diese Synchronisation ist z.B. erforderlich, wenn auf Para-meter oder Variablen synchronisiert werden soll.
SYN | Synchronisation auf Interpolator-Ebene. Diese Synchronisation ist bei Echtzeitanforderungen notwendig, z.B. Synchronisation zweier Bearbeitungseinheiten einer Mehrständermaschine

ID<sgn_nr>Nummer des zu löschenden Broadcast-Signals. Positive Ganzzahl

IDMIN<sgn_nr> Erstes zu löschende Broadcast-Signal eines Bereiches.
(Auch alternativ zu ID<sgn_nr>). Positive Ganzzahl

IDMAX<sgn_nr> Letztes zu löschende Broadcast-Signal eines Bereiches. Positive Ganzzahl

CH<chan_nr> Kanalnummer:

Gültige Werte | Bedeutung
1...Max. Anzahl Kanäle (1) | Nummer des Kanals für den das zu löschende Signl bestimmt ist.
--- | Wird keine Kanalnummer angegeben, so wird das entsprechnde Broadcast Signal gelöscht.

(1) siehe [6]-2.4

Programmierbeispiel

(Löschen eines Broadcast-Signals 812, Synchronisation auf DEC-Ebene)

N500 #SIGNAL REMOVE [ID812] oder #SIGNAL REMOVE [IDMIN812]

(Löschen eines Signals 812 an Kanal2, Synchronisation auf DEC-Ebene)

N500 #SIGNAL REMOVE [ID812 CH2]

(Löschen aller Broadcast-Signale innerhalb 812-820,
Synchronisation auf DEC-Ebene)

N500 #SIGNAL REMOVE [IDMIN812 IDMAX820] oder #SIGNAL REMOVE [ID812 IDMAX820]

(Löschen aller Signale 812 an Kanal 1, Synchronisation auf DEC-Ebene)

N500 #SIGNAL REMOVE [ID812 IDMAX812 CH1]

(Löschen eines Broadcast-Signals 813, Synchr. auf Interpolator-Ebene)

N600 #SIGNAL REMOVE SYN [ID813]


Warten auf Signale

Entsprechend dem Versenden von Signalen kann durch den WAIT-Befehl auf ein enstsprechendes SIGNAL gewartet werden. Ein Broadcast-WAIT wartet dabei nur auf ein Broadcast-SIGNAL mit gleicher Signalnummer. Ein auf Decoder-/Interpolator-Ebene synchronisiertes WAIT verbraucht jeweils ein eigenes SIGNAL.

#WAIT [<Modus>] [ID<sgn_nr> { P[<idx>]=<param> } { CH<chan_nr> } [ AHEAD ] ] (non-modal)

<Modus> Synchronisationsart

Gültige Modi | Bedeutung
--- | Synchronisation auf Decoder-Ebene (Grundeinstellung). Diese Synchronisation ist z.B. erforderlich, wenn auf Para-meter oder Variablen synchronisiert werden soll.
SYN | Synchronisation auf Interpolator-Ebene. Diese Synchronisation ist bei Echtzeitanforderungen notwendig, z.B. Synchronisation zweier Bearbeitungseinheiten einer Mehrständermaschine

ID<sgn_nr> Nummer des Signals auf das gewartet wird. Positive Ganzzahl.

P[<idx>] = <param> Signalparameter als Realzahl. Beim Warten auf Signale können auch Parameter durch den Signalsender mit übertragen werden. Die Parameter können dabei auch von unterschiedlichen Kanälen stammen. Sie werden den angegebenen Parametern bzw. Variablen (<param>) zugewiesen.

Index | Bedeutung
<idx> | Bereich für die maximal mögliche Parameteranzahl: 0...Max. Anzahl Signalparameter (1)

Nach vollständiger Quittierung der Wartebedingung (Empfang aller notwendigen Signale) wird geprüft, ob alle programmierten Parameter geschrieben worden sind. Ist dies nicht der Fall, so wird mit einer Fehlermeldung angehalten.

Signalparameter können nur auf Decoder-Ebene ausgewertet werden, d.h. z.B. ein #WAIT SYN[... P[0] = ... ] ist nicht erlaubt.

CH<chan_nr> Kanalnummer:

Gültige Werte | Bedeutung
1...Max. Anzahl Kanäle (2) | Nummer des Kanals von dem ein Signal erwartet wird.
--- | Wird keine Kanalnummer angegeben, so wird auf ein Signal eines beliebigen Teilnehmers gewartet..

AHEAD Kennung für die Ausführung eines fliegenden WAIT. Dient der Minimierung von Wartezeiten aufgrund der Bufferwirkung des Look-Ahead (bis zu 70 Sätze im Voraus). Bei Synchronisation auf Interpolator-Ebene sofortige Ausgabe von WAIT, damit bei der nachfolgenden Prüfung auf Quittierung (SIGNAL) fliegend, d.h. ohne anzuhalten sofort in den nächsten Verfahrsatz gewechselt werden kann.

(1) siehe [6]-6.45

(2) siehe [6]-2.4

Programmierbeispiel

(Wartemarke 4711, Synchronisation auf DEC-Ebene, SIGNAL 4711 von
beliebigem Kanal)

N200 #WAIT [ID4711]

(Wartemarke 815, Synchronisation auf Interpolator-Ebene,
SIGNAL 815 von Kanal 2 und 3)

N100 #WAIT SYN [ID815 CH2 CH3]

(Wartemarke 911, Synchronisation auf Decoder-Ebene, von Kanal 3)

(1.Signalparameter V.P.SIGNAL, 2.Signalparameter P200)

N300 #WAIT [IDP100 P[0]=V.P.SIGNAL P[1]=P200 CH3]

N350 P20 = 10 * V.P.SIGNAL * P200

Programmierbeispiel

Warten auf Signale mit Übernahme von Parametern (in Kanal 3):

%channel1

N10 #SIGNAL [ID 110014 P[0] = 1234 CH3]

N20 M30

%channel2

N10 #SIGNAL [ID 110014 P[1] = 200 CH3]

N20 M30

%channel3

N10 P1 = 1 (Speichert Wert von Kanal 1

N20 P2 = 1 (Speichert Wert von Kanal 2

N30 XP1 YP2

N40 #WAIT [ID 110014 P[0] = P1 P[1] = P2 CH1 CH2]

N50 XP1 YP2

N60 M30


RESET-Behandlung

Beim Reset eines einzelnen Kanals werden die Synchronisationsereignisse des betroffenen Kanals gelöscht, d.h. alle Warteanforderungen (#WAIT), die der betroffene Kanal geschickt hat, und alle nicht Broadcast-Signale (#SIGNAL), die für diesen bestimmt sind.

Broadcast-Signale werden bei einem Reset eines Kanals nicht gelöscht, da diese evtl. noch von Kanälen erwartet werden. Diese müssen explizit (#SIGNAL REMOVE) gelöscht werden.


Synchronisationsszenarien

Synchronisation von zwei Decodern in zwei Kanälen

q Decoder 3 wartet auf Decoder 1, Decoder 1 arbeitet ohne Unterbrechung weiter

Programmierbeispiel

% kanal_1

...

(Signal P100)

(Synchronisation auf DEC-Ebene)

(Synchronisation mit Kanal 3)

(Parameter V.P.SYNC)

V.P.SYNC = 1000

P100 = 814

#SIGNAL [IDP100 P[0]= V.P.SYNC CH3]

...

% kanal_3

...

(Warteanforderung 814)

(Synchronisation auf DEC-Ebene)

(Synchronisation mit Kanal 1)

(Parameter V.P.SIGNAL)

#WAIT [ID814 P[0]= V.P.SIGNAL CH1]

...

Synchronisation zwischen Decoder und Interpolatoren in drei Kanälen

q Interpolator 1 wartet auf Interpolator 2 und Decoder 3,

q Interpolator 2 wartet auf Interpolator 1 und Decoder 3,

q Decoder 3 signalisiert an Interpolator 1 und Interpolator 2.

Programmierbeispiel

% kanal_1

...

(Warteanforderung 968)

(Sync. auf Interp.-Ebene)

(Sync. mit Kanal 2 und 3)

#WAIT SYN [ID968 CH2 CH3]

%kanal_2

...

(Wartenaforderung 968)

(Sync. auf Interp.-Ebene)

(Sync. mit Kanal 3 und 1)

#WAIT SYN [ID968 CH3 CH1]

% kanal_3

...

(Signal 968)

(Sync. auf Decoder-Ebene)

(Sync. mit Kanal 1 und 2)

#SIGNAL [ID968 CH1 CH2]

Synchronisation zwischen Interpolatoren in drei Kanälen

q Bahn 1 wartet auf Bahn 2,

q Bahn 3 wartet auf Bahn 2,

q Bahn 2 signalisiert an Bahn 1 und Bahn 3.

Programmierbeispiel

% kanal_1

...

(Warteanforderung 100)

(Sync. auf Interp.-Ebene)

(Sync. mit Kanal 2)

#WAIT SYN [ID100 CH2]

%kanal_2

...

(Signal 100)

(Sync. auf Interp.-Ebene)

(Sync. mit Kanal 1 und 3)

#SIGNAL SYN [ID100 CH1 CH3]

% kanal_3

...

(Warteanforderung 100)

(Sync. auf Interp.-Ebene)

(Sync. mit Kanal 2)

#WAIT SYN [ID100 CH2]

Synchronisation zwischen Decoder und Interpolator eines Kanals

q Decoder wartet bis Interpolator Position X 250 erreicht hat.

q Bewegungssatz "G01 X370 Z200 F80" ist bereits im NC-Kanal und wird nach Signalisierung abgearbeitet.

q Bewegungssatz "G01 X900" wird erst nach Synchronisation decodiert.

Bei Synchronisationsanforderungen zwischen Decoder und Interpolator kann es zu Zuständen kommen, in denen das NC-Programm nicht weiter decodiert werden kann, da noch keine Quittierung eingetroffen ist. Die Quittierung wird vom Interpolator jedoch auch nicht weggeschickt, da der Signal-Satz den Interpolator aufgrund der Bufferwirkung des NC-Kanals nicht erreicht. Um mögliche Verklemmungen zu vermeiden, ist in solchen Fällen ein #FLUSH vorzusehen, durch den der NC-Kanal leergeräumt wird.

Programmierbeispiel

% kanal_1

G00 X100 Y500

G01 X250 F300

(Signal 88)

(Synchronisation auf Interp.-Ebene)

(Synchronisation mit Kanal 1)

#SIGNAL SYN [ID88 CH1]

(Bearbeitung)

G01 X370 Z200 F80

(Warteanforderung 88)

(Synchronisation auf Decoder-Ebene)

(Synchronisation mit Kanal 1)

#FLUSH

#WAIT [ID88 CH1]

G01 X900

...


Drehung in der Ebene (Konturrotation)

Die Konturrotation wirkt in der Hauptebene ausschliesslich auf die programmierten Achskoordinaten (Kontur) vor allen anderen konturbeeinflussenden Funktionalitäten, d.h. alle Verschiebungen und Spiegelungen werden von der Rotation nicht beeinflusst und können wie bisher benutzt werden (*).

Die Rotation kann auch innerhalb eines bereits gedrehten Koordinatensystems (CS, ACS) angewandt werden.

Ein Ebenenwechsel mit G17/18/19 wählt automatisch eine aktive Konturrotation ab und es wird eine Warning ausgegeben.

#ROTATION ON [ [ [ANGLE <expr> ] [CENTER1<expr>] [CENTER2<expr>] ] ] (modal)

#ROTATION OFF (modal)

ANGLE<expr> Rotationswinkel in Grad (°).

CENTER1<expr> Versatz der ersten Hauptachse zum Drehpunkt im Realformat.

CENTER2<expr> Versatz der zweiten Hauptachse zum Drehpunkt im Realformat.

Abbildung 11-13: Bedeutung der Rotationsparameter in der Hauptebene

Mit nachfolgenden Variablen können die programmierten Rotationsparameter gelesen werden:

V.G.ROT_ACTIVE Liefert den Wert 1, wenn eine Rotation aktiv ist

V.G.ROT_ANGLE Rotationswinkel

V.G.ROT_CENTER1 Versatz der ersten Hauptachse zum Drehpunkt

V.G.ROT_CENTER2 Versatz der zweiten Hauptachse zum Drehpunkt

(*) Unabhängig davon, ob die Verschiebungen (z.B. G54, G92 etc. ) vor oder nach dem ROTATION-Befehl programmiert wurden, wirken diese immer in den Achsrichtungen des Grundkoordinatensystems der Maschine (MKS).

Auch die Werkzeugversätze wirken immer unabhängig von [5] -2 in den Achsrichtungen des MKS.

Programmierbeispiele

%L part

N10 G0 G90 X0 Y0

N30 G1 F5000 Y50

N40 X75

N50 G2 Y-50 R50

N60 G1 X0

N70 Y0

N80 M29

%ang1.nc

N100 G53 G17

N110 LL part

N130 #ROTATION ON [ANGLE 45 CENTER1=10 CENTER2=100]

N140 LL part

N150 G21 (mirroring of X coordinates)

N160 LL part

N170 G18 (warning expected)

N190

M30

Gleiche Kontur wie im vorherigen Programm, jedoch innerhalb #CS von 15°.

%L part

N10 G0 G90 X0 Y0

N30 G1 F5000 Y50

N40 X75

N50 G2 Y-50 R50

N60 G1 X0

N70 Y0

N80 M29

% ang1cs.nc

N99 #CS ON[0,0,0,0,0,-15]

N100 G53 G17

N110 LL part

N130 #ROTATION ON [ANGLE=-45 CENTER1 10 CENTER2 100]

N140 LL part

N150 G21 (mirroring of X coordinates)

N160 LL part

N190 #CS OFF

M30

%L Trajectory0

N10 G54 G90 X0 Y0

N20 G0 X75 Y-50

N30 Y50

N40 X-75

N50 G3 X-75 Y-50 R50

N60 G0 X75

N70 X0 Y0

N80 M29

%ang2.nc

F1000

N100 LL Trajectory0

N200 G92 G90 Y-25

N400 #ROTATION ON [ANGLE 90 CENTER1 75 CENTER2=-50]

N600 LL Trajectory0

N700 G92 G90 Y25

N900 #ROTATION ON [ANGLE=-90 CENTER1 75 CENTER2 50]

N60 LL Trajectory0

N70 M30

%L Trajectory0

N10 G54 G90 X0 Y0

N20 G1 X75 Y-50

N30 Y50

N40 X-75

N50 G3 X-75 Y-50 R50

N60 G1 X75

N70 X0 Y0

N80 M29

%ang3.nc

N10 F4000 G90

N15 #ROTATION ON

N20 LL Trajectory0

N30 G90 G92 Y100

N35 #ROTATION ON [ANGLE 180]

N40 LL Trajectory0

N50 G90 G92 Y-100

N55 #ROTATION ON [ANGLE 180]

N60 LL Trajectory0

N70 M30

%L UPRG1

N1 X0 Y0 Z0

N10 X25

N30 X0

N40 Y25

N50 Y0

N60 X10

N70 Y10

N80 X0 Y0

N90 Y10

N100 X10 Y0

N110 G03 I-5 J5 Y10

N120 G1 X0 Y0

M17

%L UPRG2

N2 X0 Y0 Z0

N10 X25

N20 G02 I0.8

N30 G1 X0

N40 Y25

N45 G02 J0.8

N50 G1 Y0

N120 G1 X0 Y0

M17

%L UPRG3

N3 G1 X0 Y0 Z0

N10 X4 Y4

N20 G02 I1 J1

N30 G1 X0 Y0 Z0

M17

%ang4.nc

N1 G1 X0 Y0 Z0 F1000

N500 G92 X10 Y10

N510 LL UPRG1

N520 #ROTATION ON [ANGLE 0 CENTER1 25 CENTER2 15]

N540 LL UPRG1

N550 G92 X20 Y25

N560 #ROTATION ON [ANGLE 35]

N570 LL UPRG1

N580 G92 X35 Y-10

N590 #ROTATION ON [ANGLE=V.G.ROT_ANGLE-117]

N600 LL UPRG1

N610 #ROTATION ON [CENTER1 0 CENTER2 0]

N620 LL UPRG1

N630 #ROTATION ON [ANGLE=V.G.ROT_ANGLE+117]

N640 LL UPRG1

N650 #ROTATION ON [ANGLE=V.G.ROT_ANGLE+35]

N500 G92 X10 Y10

N510 LL UPRG2

N520 #ROTATION ON [ANGLE 0 CENTER1 25 CENTER2 15]

N540 LL UPRG2

N550 G92 X20 Y25

N560 #ROTATION ON [ANGLE 35]

N570 LL UPRG2

N580 G92 X35 Y-10

N590 #ROTATION ON [ANGLE=V.G.ROT_ANGLE-117]

N600 LL UPRG2

N610 #ROTATION ON [CENTER1 0 CENTER2 0]

N620 LL UPRG2

N630 #ROTATION ON [ANGLE=V.G.ROT_ANGLE+117]

N640 LL UPRG2

N650 #ROTATION ON [ANGLE=V.G.ROT_ANGLE+35]

N500 G92 X10 Y10

N510 LL UPRG3

N520 #ROTATION ON [ANGLE 0 CENTER1 25 CENTER2 15]

N540 LL UPRG3

N550 G92 X20 Y25

N560 #ROTATION ON [ANGLE 35]

N570 LL UPRG3

N580 G92 X35 Y-10

N590 #ROTATION ON [ANGLE=V.G.ROT_ANGLE-117]

N600 LL UPRG3

N610 #ROTATION ON [CENTER1 0 CENTER2 0]

N620 LL UPRG3

N630 #ROTATION ON [ANGLE=V.G.ROT_ANGLE+117]

N640 LL UPRG3

N650 #ROTATION ON [ANGLE=V.G.ROT_ANGLE+35]

M30

Test von relativer und absoluter Programmierung:

%L contour_1

N1 G1 G91 (all positions with G91)

N2 X20

N3 Y20

N4 X20

N5 Y20

N6 X20

N7 Y20

N8 X20

N9 Y20

N10 X20

N11 Y20

N12 X5

N13 Y-3

N14 Y3

N15 X-5

N16 G90 X0

N17 Y0

N18 X5

N19 Y-3

N20 Y0

N21 X0

#MSG SYN["contour_1 finished"]

M17

%L contour_2

N100 G1 (same contour, X with G91, Y with G90)

N101 G91 X20

N102 G90 Y10 (transl. offset in Y is 10)

N103 G91 X20

N104 G90 Y30

N105 G91 X20

N106 G90 Y50

N107 G91 X20

N108 G90 Y70

N109 G91 X20

N110 G90 Y90

N111 G91 X8

N112 G91 Y-4

N113 G91 Y4

N114 G91 X-8

N115 G90 X0

N116 Y0

N117 X8

N118 Y-4

N119 Y0

N119 Y0

N120 X0

#MSG SYN["contour_2 finished"]

M17

%L contour_3

N200 G1 (same contour, Y with G91, X with G90)

N201 G90 X0 (transl. offset in X is 20)

N202 G91 Y20

N203 G90 X20

N204 G91 Y20

N205 G90 X40

N206 G91 Y20

N207 G90 X60

N208 G91 Y20

N209 G90 X80

N210 G91 Y20

N211 G91 X11

N212 G91 Y-5

N213 G91 Y5

N214 G91 X-11

N215 G90 X0

N216 Y0

N217 X11

N218 Y-5

N219 Y0

N220 X0

#MSG SYN["contour_3 finished"]

M17

%L contour_4

N300 G1 G90 (same contour with G90)

N301 X0 (transl. offset in X is 20)

N302 Y10 (transl. offset in Y is 10)

N303 X20

N304 Y30

N305 X40

N306 Y50

N307 X60

N308 Y70

N309 X80

N310 Y90

N111 G91 X14

N312 G91 Y-6

N313 G91 Y6

N314 G91 X-14

N315 G90 X0

N316 Y0

N317 X14

N318 Y-6

N319 Y0

N320 X0

#MSG SYN["contour_4 finished"]

M17

%ang5.nc

N5001 G0 G90 X0 Y0 F5000

N501 #ROTATION ON [ANGLE 0 CENTER1 20 CENTER2 10]

(Note: with angle != 0 the contours are

( not congruent because of difference

( of absolute and incremental movement !)

N502 #ROTATION ON

N503 LL contour_1

N504 #ROTATION OFF

N5002 G0 G90 Y0

N5003 X0

N505 #ROTATION ON

N506 LL contour_2

N507 #ROTATION OFF

N5004 G0 G90 Y0

N5005 X0

N508 #ROTATION ON

N509 LL contour_3

N510 #ROTATION OFF

N5006 G0 G90 Y0

N5007 X0

N511 #ROTATION ON

N512 LL contour_4

N513 #ROTATION OFF

N5005 G0 G90 Y0

N5006 X0

N210 M2

Gültiger Drehwinkel nach Anwahl. Die Verschiebungen für den Drehpunkt dürfen erst mit der ersten absoluten Programmierung (G90) berücksichtigt werden.

%ang6.nc

N10 G90 X0Y0Z0 G1 F200

N20 #ROTATION ON [ANGLE 30 CENTER1 10 CENTER2 10]

N30 X0 Y0

N40 G3 I1 J1 F500

N50 G01 X10

N60 Y10

N70 G90 X0

N80 G90 Y0

N90 X10 Y10

(New rotation parameters.

(Note: Center offset has no effect until an absolute (G90) position

( has been programmed, the angle is effective however.

N100 #ROTATION ON [ANGLE 10 CENTER1 10 CENTER2 0]

N110 G3 I1 J1 F500

N120 G01 G91 X10

N130 G91 Y10

N140 G91 X-10

N150 G91 Y-10

(Make the new center effective by first absolute position:

N200 G90 X0 Y0

N210 G3 I1 J1 F500

N220 G01 X10

N230 Y10

N240 X0

N250 Y0

M30

Transformierung des absolut oder relativ programmierten Kreismittelpunktes:

%ang_cent.nc

N10 F2000 G53

N11 G0 X0 Y0 G90

(---------------------------------------------------------------------)

( 4 times the same circle with different programming of circle center point)

(---------------------------------------------------------------------)

N12 G0 X0 Y0 G90

N13 Y50 N14 X-75 N15 G3 X-75 Y-50 G161 I-75 J0 (absolute center)

N16 G0 X0 Y0 G90

N17 Y50 N18 X-75 N19 G3 X-75 Y-50 G162 I0 J-50 (relative center)

N20 G0 X0 Y0 G90

N28 #ROTATION ON [ANGLE 0 CENTER1 25 CENTER2 75]

(---------------------------------------------------------------------)

( The same with LIN and ANG offset active (ED=0) )

(---------------------------------------------------------------------)

N80 G0 X0 Y0 G90

N90 Y50

N100 X-75

N110 G3 X-75 Y-50 G161 I-75 J0 (absolute center)

N120 G0 X0 Y0 G90

N130 Y50 N140 X-75 N150 G3 X-75 Y-50 G162 I0 J-50 (relative center)

N360 G0 X0 Y0 G90

(---------------------------------------------------------------------)

( The same rotated by 50ø (unnecessary I / J omitted) )

(---------------------------------------------------------------------)

N370 #ROTATION ON [ANGLE 50]

N380 G0 X0 Y0 G90

N390 Y50

N400 X-75

N410 G3 X-75 Y-50 G161 I-75 (J0) (absolute center, not prog. is 0)

N420 G0 X0 Y0 G90

N630 Y50

N640 X-75

N650 G3 X-75 Y-50 G162 I0 J-50 (relative center)

N650 G0 X0 Y0 G90

(---------------------------------------------------------------------)

( The same rotated by 95ø )

(---------------------------------------------------------------------)

N660 #ROTATION ON [ANGLE 95]

N670 G0 X0 Y0 G90

N680 Y50

N690 X-75

N700 G3 X-75 Y-50 G161 I-75 J0 (absolute center)

N710 G0 X0 Y0 G90

N730 Y50 N740 X-75 N750 G3 X-75 Y-50 G162 I0 J-50 (relative center)

N760 G0 X0 Y0 G90

M30


Automatische Achsnachführung ( C-Achsnachführung)

Bearbeitungsvorgänge wie z.B. das Schneiden verschiedener Materialien erfordern das Führen des benutzen Werkzeugs, welches i.a. mit der C-Achse verbunden ist, derart, daß dieses stets tangential zur gefahrenen Bahn ausgerichtet ist.

Dabei ist zu beachten, dass die Tangente nicht an jedem Punkt der Bahn eindeutig ist (Knickstellen). Eine Lösung erfordert daher Strategien zur Behandlung nicht tangentenstetiger Satzübergänge.

Ein typischer Anwendungsfall ist im Technologiebereich der Glasschneidtechnik zu finden. Dort werden mit Hilfe von CNC-Maschinen ebene Konturen mit Hilfe von Schneidwerkzeugen in Form von Hartmetallschneidrädchen bearbeitet. Entsprechend dem programmierten Konturverlauf (geschlossene Kontur, z.B. Ellipse) wird das ebene Werkstück an der Bearbeitungsstelle angeritzt. Die gewünschte Kontur kann dann aus dem Glaswerkstück ausgebrochen werden.

Abbildung 11-14: Nachführen der rotatorischen C-Achse tangential zur x-y-Kontur

Die C-Achse kann auch durch explizite Programmierung tangential zur Bahn geführt werden. Die im folgenden beschriebenen NC-Befehle erleichtern jedoch die Programmierung erheblich.

#CAXTRACK ON [ [ [ANGLIMIT<expr>] [OFFSET<expr>] [OPTALIGN<expr>] ] ] (modal)

#CAXTRACK OFF [ [ANGPOS<expr>] ] (modal)

ANGLIMIT<expr> Grenzwinkel in Grad (°).

Dieser Parameter wird nur bei nicht tangentenstetigen Konturabschnitten berücksichtigt. Tangentenstetige Konturabschnitte entstehen z.B. durch die Überschleiffunktion G61.

Überschreitet der Winkel zwischen den Tangenten an die Kontur beim Satzübergang den Grenzwinkel, so wird die Bahnbewegung angehalten und die Richtbewegung durch einen eingefügten Bewegungssatz mit Eilganggeschwindigkeit durchgeführt. Die eingefügte Bewegung bildet hierbei eine Einheit mit dem folgenden, zweiten Satz. Dies bedeutet insbesondere, daß SPS-Synchronisationsereignisse in Zusammenhang mit der Bewegung (M-Funktionen etc.) nur vor oder hinter dieser Bewegungseinheit möglich sind.

Ist der Übergangswinkel kleiner als der Grenzwinkel, so erfolgt die Richtbewegung sofort mit Beginn des zweiten Satzes wenn die dynamischen Betrachtungen keine Reduktion der Bahngeschwindigkeit erfordern. Im allgemeinen führen die begrenzten Achsbeschleunigungen zu einer niedrigen Vorschubgeschwindigkeit am Satzübergang. Ist dies nicht erwünscht, so kann die Nachführachse von der dynamischen Betrachtung ausgenommen werden. (z.B. G116 C1, siehe Kap. 4.30 )

OFFSET<expr> Winkeloffset in Grad (°).

Dient zur Angabe eines Winkeloffsets um das Werkzeug gegenüber der Tangente an die Kontur zu orientieren.

OPTALIGN<expr> Bei Anwahl wird automatisch optimiert ausgerichtet, wenn der Ausrichtweg grösser als der angebene Winkelwert ist.

Dieser Parameter wird nur bei aktivem automatischen Ausrichten entsprechend P-CHAN-00101 und rotatorischen Linearachsen mit begrenztem Verfahrbereich (keine Moduloachse) berücksichtigt und ist nur während des automatischen Ausrichtvorgangs auf das erste Konturelement wirksam. Nach Anwahl der tangentialen Nachführfunktion mit automatischem Ausrichten liegt die Position der Nachführachse ohne Offset im Bereich von -180..+180 Grad. Über den Parameter kann gesteuert werden, dass die Stellung der Nachführachse vor Anwahl der tangentialen Nachführfunktion beim automatischen Ausrichtvorgang berücksichtigt wird. Die Verwendung der Funktion ist dann sinnvoll, wenn die Nachführachse bereits vor Anwahl des automatischen Ausrichtens näherungsweise die korrekte Position zum ersten Konturelement hat, aber z.B. mit einer Vorverdrehung von +-360 Grad beaufschlagt ist. Überschreitet der intern berechnete Ausrichtwinkelwert den angegebenen Winkelwert, so werden alternative Lösungen für den Ausrichtwinkel untersucht. Der kleinste Ausrichtweg der Lösungen legt dann den Ausrichtwinkel fest. (*)

(*) Bei Moduloachsen erfolgt der automatische Ausrichtvorgang immer auf dem kürzesten Weg.

ANGPOS<expr> Position bei Abwahl in Grad (°).

Während der Abwahl kann die Nachführachse zusätzlich positioniert werden. Die Positionierbewegung erfolgt bei rotatorischen Achsen auf kürzestem Weg.

Die Nachführachse wird in den Kanalparametern festgelegt [1]-34. Die automatische Nachführung der Achse erfolgt vorzeichenrichtig, relativ zur letzten Position entsprechend dem sich ergebenden Konturübergangswinkel.

Abhängig von der Parametrierung [1]-37 erfolgt die Ausrichtung der Nachführachse in die gewünschte Orientierung (i.a. parallel zur Kontur) wie folgt:

q Programmiertes Ausrichten vor Anwahl der automatischen Nachführung. Es erfolgt keine Prüfung der Position. Die aktuelle Winkelstellung wird eingefroren und die Nachführachse wird mit diesem Winkel nachgeführt.

q Automatisches tangentiales Ausrichten der Nachführachse zum ersten programmierten Konturelement bei Anwahl der automatischen Nachführung. Die Aktivierung dieser Funktion ist zwingend erforderlich, wenn Konturabschnitte mit Polynomen (z.B. G261) programmiert sind.

Besitzt die Nachführachse bei Anwahl des Nachführbetriebes bereits die erforderliche Orientierung, so wird bei gesetztem Parameter [1]-40 ohne Anhalten in den ersten relevanten Bewegungssatz übergeschliffen.

Die Nachführung beginnt mit dem Übergang vom ersten zum zweiten relevanten Bewegungssatz nach Aktivierung mit #CAXTRACK ON. Die automatische Achsnachführung arbeitet in der Hauptebene der Zirkularinterpolation (1. + 2.HA). Diese muß vor Aktivierung festgelegt werden (G17 / 18 / 19, #PUT AX / #CALL AX / #SET AX).

Eine Nachführachse darf im Synchronbetrieb weder als Master noch als Slaveachse betrieben werden!

Programmierbeispiel

N10 G00 G90 X0 Y0 Z0 C0

N20 X5 Y5 C45 (Gerade 45° zur x-Achse, C-Achse
(parallel zur Kontur

N20 #CAXTRACK ON [ANGLIMIT 3, OFFSET 0] (Aktivierung der Achsnach-)
(führung,Grenzwinkel 3°,)
(Winkeloffset 0°)

N30 X10 Y10 (Primärer Bewegungssatz, keine
(Nachführung

N40 X20 (Winkel zum Vorhergehenden Satz: -45° >
(Grenzwinkel -> Satz wird eingefügt:
(Endposition von C = 0

N50 M99 X30 (Wenn M-Funktion Synchronisation vor
(Bewegung -> Erst Synch. dann Bewegung C
(auf 0, dann X auf 30.

(Wenn Sync. Nach Satz-> Bewegung C auf 0
(dann X auf 30, dann Sync.

N60 X40 G60 (Übergangswinkel 0°, Genauhalt

N70 X30 (Übergangswinkel 180°, keine Nachführung

N80 Y10 X29.9 (Übergangswinkel 89.427°, neue Position
(C = -89.427° (Rechtsdrehung)

N90 #CAXTRACK OFF (Deaktivierung der Achsnachführung

M30


Benutzerdefinierte Fehlerausgabe

Der NCBefehl #ERROR erlaubt die Ausgabe benutzerdefinierter Fehlermeldungen, die von der übergeordneten Bedienung (GUI ) weiterverarbeitet werden. Zusätzliche Para-meter bieten die Möglichkeit zur genaueren Spezifizierung des Fehlers.

        #ERROR [ [
[ID<expr>]
[RC<expr>]
[MID<expr>]
{PV<I><expr>}
{PM<I><expr>}

{PIV<i><expr>} ] ] (nicht modal)

ID<expr> Fehlernummer:

Gültige Werte | Bedeutung
1...1000 | Der Zahlenwert bestimmt die auszugebende kundenspezifische Fehlernummer.

RC<expr> Fehler(-reaktions-)klasse:

Gültige Werte | Bedeutung
0 | Warning: Kein Übergang in Fehlerzustand. Fortsetzung der Programmbearbeitung. Entspricht der Fehlerklasse ERR_KLASSE_1 des NC-Kerns.
2 | Schwerer Fehler: Übergang in Fehlerzustand. Nur mit NCRESET behebbar. Entspricht der Fehlerklasse ERR_KLASSE_3 des NC-Kerns.
7 | Fataler Anwenderfehler: Übergang in Fehlerzustand. Per NC-RESET behebbar. Entspricht der Fehlerklasse ERR_KLASSE_8 des NC-Kerns.

MID<expr> Mehrfach-ID. Zähler dient als Unterscheidungsmerkmal, wenn in einem NCProgramm mehrmals der #ERRORBefehl mit der gleichen Fehlernummer (ID) verwendet wird. Positive Ganzzahl.

PV<i><expr> Es können maximal 5 (1 <= i <= 5) kundenspezifische Zahlenwerte (PV1...PV5) im Realformat in der Fehlermeldung mit ausgegeben werden.

PM<i><expr> Die maximal 5 (1 <= i <= 5) PM-Parameter (PM1...PM5) dienen dazu, die Bedeutung der PVParameter genauer zu spezifizieren.

Gültige Werte | Bedeutung
0 | IGNORE, Wert ohne Bedeutung
1 | Grenzwert
2 | Aktueller Wert
3 | Fehlerhafter Wert
4 | Erwarteter Wert
5 | Korrigierter Wert
6 | Logische Achsnummer
7 | Antriebstyp
8 | Logische Bedienelementnummer
9 | Zustand
10 | Transition
11 | Sender
12 | Klasse
13 | Instanz
14 | Identifikationsnummer
15 | Status
16 | Ringnummer
17 | Satznummer
17 | Unterer Grenzwert
19 | Oberer Grenzwert
20 | Startwert
21 | Endwert

PIV<i><expr> Die maximal 4 (1 <= i <= 4) PIV-Parameter (PIV1...PIV4) dienen zur Über-mittlung zusätzlicher Informationen im Realformat.

Für nicht programmierte Parameter sind folgende Defaultwerte gültig:

ID | 1
RC | 0
MID | 0
PV1...PV5 | 0.0
PM1 PM5 | 1
PIV1...PIV4 | 0.0

Programmierbeispiel

:

#ERROR Kundenspezifische Default(-Standard-)fehlermeldung (Warning).

:

#ERROR [ID455 RC2 PV1=5 PV2=4.999 PM1=2 PM2=3] Fataler Fehler 455 mit
zusätzlichen Parametern.

:

#ERROR [ID455 RC2 MID2 PV1 5 PV2 4.999 PM1 2 PM2 3] Fataler Fehler 455 (Mehrfachkennung 2)
mit zusätzlichen
Parametern.

:

#ERROR [ID100 RC0 MID10] Warning 100 (Mehrfachkennung 10)

:

#ERROR [ID999 RC7] Systemfehler 999

:


Zeitmessung

Der NC-Befehl #TIMER bietet die Möglichkeit der Zeitmessung im NC-Programm. Die erfasste Zeit wird in der Einheit Millisekunden (ms) dargestellt.

#TIMER <Aktion> [<Modus>] [ID<counter_nr>] (nicht modal)

<Aktion> Bestimmt die Aktion mit dem bezeichneten Zähler (ID).

Aktion | Bedeutung
START | Starten des bezeichneten Zählers (ID).
STOP | Stoppen des bezeichneten Zählers (ID).
READ | Auslesen des bezeichneten Zählers (ID). Der Zählerstand wird gelatcht und in der zugeordneten V.G.TIMER[ID]-Variable in Millisekunden (ms) ab-gelegt.
CLEAR | Rücksetzen des bezeichneten Zählers (ID). Die zugeordnete V.G.TIMER-Variable wird dabei nicht gelöschtsondern bleibt bis zu einer erneuten READ-Aktion des zugehörigen Zählers erhalten.

Mit der Timerfunktion können Zeiten bis maximal 1193 Stunden erfasst werden.

<Modus> Synchronisationsart:

Gültige Modi | Bedeutung
--- | Zeitmessung asynchron zum Interpolator auf Decodier-Ebene (Grundeinstellung). Die Zeitmessung beginnt direkt nach der Decodierung.
SYN | Zeitmessung auf Interpolator-Ebene. Der bezeichnete Zähler wird synchron zu Bearbeitungsvorgängen der NCMaschine gesetzt. Beim synchronen Lesen (<SYN>) im Interpolator wird die Decodierung unterbrochen, bis der Zählerstand auf Decodier-Ebene in die Timervariable übernommen worden ist.

Es wird empfohlen, zur Messung von Programmlaufzeiten die Timer immer mit dem Schlüsselwort SYN zu verwenden.

ID <counter_nr> Zählernummer:

Gültige Werte | Bedeutung
0...127 | Es können maximal 128 Zähler programmiert werden. Pro Timerbefehl kann jedoch immer nur ein Zähler (ID) programmiert werden.

Programmierbeispiel

:

#FILENAME[ MSG="C:\timer.txt" ] Dateiname für Zeitprotokollierung

:

#TIMER START [ID=10] Zähler 10 (Decod.-Ebene) starten

#TIMER START SYN [ID11] Zähler 11 (Interp.-Ebene) starten

:

:

#TIMER READ [ID10] Zählerstandablage in V.G.TIMER[10]

#TIMER READ SYN [ID11] Zählerstandablage in V.G.TIMER[11]

#MSG SAVE["T10 = %d",V.G.TIMER[10]] Zählerstand in Datei protokollieren

#MSG SAVE["T11 = %d",V.G.TIMER[11]] Zählerstand in Datei protokollieren

#TIMER STOP [ID10] Zähler 10 wird gestoppt.

#TIMER CLEAR [ID10] Zähler 10 zurücksetzen.

:

:

#TIMER READ SYN [ID11] Zählerstandablage in V.G.TIMER[11]

#MSG SAVE["T11 = %d",V.G.TIMER[11]] Zählerstand in Datei protokollieren

:

:

#TIMER READ SYN [ID11] Zählerstandablage in V.G.TIMER[11]

#MSG SAVE["T11 = %d",V.G.TIMER[11]] Zählerstand in Datei protokollieren

:

:

#TIMER READ SYN [ID11] Zählerstandablage in V.G.TIMER[11]

#MSG SAVE["T11 = %d",V.G.TIMER[11]] Zählerstand in Datei protokollieren

#TIMER STOP SYN [ID11] Zähler 11 stoppen

#TIMER CLEAR SYN [ID11] Zähler 11 zurücksetzen

:

:

:

#TIMER START [ID=10, ID11] Fehler, nur ein Zähler pro Timerbefehl
erlaubt!

:

:


Definition von Vorschubachsen

Mit #FGROUP wird festgelegt, auf welche Achsen sich der programmierte Vorschub (F-Wort) bezieht. Für die im Befehl #FGROUP programmierten Achsen wird eine Bahn im Raum bestimmt, die mit dem programmierten Vorschub abgefahren wird. Alle anderen Achsen werden wie Mitschleppachsen behandelt, erreichen also gleichzeitig mit den Bahnachsen ihr Ziel.

Eine Bahnachse ist dadurch gekennzeichnet, dass der zu verfahrende Weg beim Vorschub berücksichtigt wird. Dagegen hat der zu verfahrende Weg einer Mitschleppachse auf die Geschwindigkeit auf der Bahn keinen direkten Einfluß.

Wenn keine Vorschubachsen programmiert sind, so ist die in den Kanalparametern [1]-29/30 festgelegte Defaulteinstellung gültig.

#FGROUP [ [<Achsname> {,<Achsname>} ] ] (modal)

<Achsname> Namen der Achsen, die die Vorschubgruppe bilden.

Vorschubachsen sind bei Linearinterpolation beliebig definierbar, bei Zirkularinterpolation und Polynominterpolation ist die Parametrierung eingeschränkt:

q Bei Zirkularinterpolation müssen alle Hauptachsen Vorschubachsen sein oder alle definierten Vorschubachsen müssen Mitschleppachsen sein.

q Bei Polynominterpolation dürfen nur Hauptachsen Vorschubachsen sein.

Programmierbeispiel

N10 #FGROUP [X, Y] (X und Y sind Vorschubachsen)

:

N50 #FGROUP [A] (Mitschleppachse A ist Vorschubachse)

:

N100 #FGROUP (Vorschubachsen gemäß Defaulteinstellung)
: (in den Kanalparametern)

N999 M30

Bei der Bearbeitung von zylindrischen Werkstücken auf einer rotatorischen Werkstückachse soll der real programmierte Vorschub [mm/min] am Eingriffspunkt des Werkzeugs wirksam sein. Dies kann zum einen durch Anwahl einer geeigneten kinematischen Transformation sichergestellt werden (z. B. Mantelflächentransformation) zum anderen durch Verwendung des Befehls #FGROUP ROT[...]. Nach Programmierung dieses Befehls wird der Vorschub der rotatorischen Achse (Grad/min) in Abhängigkeit eines Bezugsradius umgerechnet. Bei Programmierung der rotatorischen Achse alleine oder gemeinsam mit Linearachsen ergibt sich am Bezugradius der geforderte programmierte Vorschub.

#FGROUP ROT [ AX <Achsname> REF <Bezugsradius> ] (modal)

AX<Achsname> Name der Achse, auf die der Bezugsradius wirken soll.

REF< Bezugsradius > Wirksamer Radius der rotatorischen Achse.

Die Abwahl der Vorschubberechnung bezüglich einer Rundachse erfolgt mit:

#FGROUP ROT (modal)

Es wird nicht geprüft ob es sich bei der Achse "AX.." tatsächlich um eine Rundachse handelt !

Die Funktion kann nur bei Vorschubsätzen (G01) und in Verbindung mit G94 verwendet werden !

Diese Funktion wird typischerweise bei der Fräsbearbeitung eingesetzt.

Vorschubanpassungen bei der Drehbearbeitung werden über G95 und G96 programmiert.

Programmierbeispiel

Werkstück mit Bezugradius R=10mm

N05 G00 C0

N10 G01 C180 F1000

(* Drehgeschwindigkeit des Werkstücks 1000 Grad/min *)

(* Vorschub am Umfang des Werkstücks 174.67 mm/min *)

N20 #FGROUP ROT[AX=A REF=10]

N30 G01 C360 F1000

(* Vorschub am Umfang des Werkstücks 1000 mm/min *)

(* Drehgeschwindigkeit des Werkstücks 5727.6 Grad/min *)

:

Nxx #FGROUP ROT (Abwahl)

Mit #FGROUP WAXIS wird unabhängig von der Defaulteinstellung in den Kanalparametern festgelegt, dass automatisch die Achse mit der längsten Fahrzeit (schwächste Achse) als Vorschubachse mit dem programmierten Vorschub (F-Wort) bewegt wird. Alle anderen Achsen werden als Mitschleppachsen behandelt.

#FGROUP WAXIS (modal)

Programmierbeispiel

N10 #FGROUP [X, Y] (X und Y sind Vorschubachsen)

:

N50 #FGROUP WAXIS (Schwächste Achse ist Vorschubachse)

:

N100 #FGROUP [X, Y, Z] (X, Y und Z sind Vorschubachsen)

:

N999 M30


Anpassung der Bahndynamikgrenzwerte

Ab Version V2.10.1507.02 ersetzt der Befehl #VECTOR LIMIT ON/OFF... die Befehle #VECTORACC ON/OFF... und #VECTORVEL ON/OFF... .Diese sind aus Kompatibilitätsgründen weiterhin verfügbar, es wird aber empfohlen, sie in neuen NC-Programmen nicht mehr zu verwenden.

Die maximal zulässige Geschwindigkeit, Beschleunigung und Verzögerung auf der Bahn ergibt sich in Abbhängigkeit von den dynamischen Kenngrößen in den achsspezifischen Parameterlisten und der programmierten Kontur.

Bestimmte Anwendungen (z.B. Hochleistungslaserschneiden, Plasmastrahlschneiden) erfordern zur Gewährleistung optimaler Bearbeitungsergebnisse die Anpassung der dynamischen Kenngrößen auf der Bahn.

Diese Bahngrenzwerte können während der dynamischen Phasen der Bearbeitung durch den nachfolgenden NC-Befehl angepasst werden. Er ermöglicht im NC-Programm die Aktivierung/ Deaktivierung von selbst definierten Grenzwerten bzw. Defaultgrenzwerten.

#VECTOR LIMIT ON [ [ ACC<acc> ] [ DEC<dec> ] [ VEL<vel> ] ] (modal)

oder

#VECTOR LIMIT ON [ [ ACC ] [ DEC ] [ VEL ] ] (modal)

oder

#VECTOR LIMIT ON ALL (modal)

ACC <acc> Grenzwert für Bahnbeschleunigung in mm/min².

DEC <dec> Grenzwert für Bahnverzögerung in mm/min².

Der Parameter DEC ist wirksam, wenn das angewählte Slopeprofil eine getrennte Definition von Beschleunigungs- und Verzögerungsparametern zuläßt (z.B. Slopetyp 1).

VEL <vel> Grenzwert für Geschwindigkeit in mm/min.

Werden die Schlüsselworte ACC, DEC, VEL ohne Grenzwert programmiert oder wird der Befehl #VECTOR LIMIT ON ALL verwendet, gelten die Defaultgrenzwerte aus der Kanalparameterliste [1]-31, [1]-50, [1]-32.

Der Befehl #VECTOR LIMIT OFF ... bewirkt das Umschalten auf die Berechnung der Dynamikbegrenzung durch den Look Ahead. Die Umschaltung kann für bestimmte oder für alle Grenzwerte programmiert werden.

#VECTOR LIMIT OFF [ [ ACC ] [ DEC ] [ VEL ] ] (modal)

oder

#VECTOR LIMIT OFF ALL (modal)

Die Bahndynamikgrenzwerte werden nur verwendet, wenn sie unterhalb der im Look Ahead gültigen Grenzwerte liegen. Sie haben

...keinen Einfluss auf achsspezifische Bewegungen wie z.B. Referenzpunktfahrt, Handbetrieb oder unabhängige Achsen und...

wirken sowohl bei G01 als auch bei G00.

Im Zusammenhang mit dem Kanalparameter [1] -33 muss der Anwender berücksichtigen, dass die Maschine abhängig vom programmierten Grenzwert bei einem Feedhold auch langsamer verzögert.

Die Bahndynamikgrenzwerte bei G00 können auch über eine Gewichtungstabelle mit Fahrwegabhängigkeit in den Kanalparametern [1] -49 beeinflusst werden

Programmierbeispiele

%vec_limit

(Dynamikgrenzwerte mit Wert setzen)

N10 #VECTOR LIMIT ON [ACC=3600000 DEC=4000000 VEL=3000]

N11 #VECTOR LIMIT ON [ACC=3600000 DEC=4000000]

N12 #VECTOR LIMIT ON [ACC=3600000 VEL=3000]

N13 #VECTOR LIMIT ON [ACC=3600000]

N14 #VECTOR LIMIT ON [DEC=4000000 VEL=3000]

N15 #VECTOR LIMIT ON [DEC=4000000]

N16 #VECTOR LIMIT ON [VEL=3000]

(Dynamikgrenzwerte auf Default setzen)

N20 #VECTOR LIMIT ON [ACC DEC VEL]

N21 #VECTOR LIMIT ON [ACC DEC]

N22 #VECTOR LIMIT ON [ACC VEL]

N23 #VECTOR LIMIT ON [ACC]

N24 #VECTOR LIMIT ON [DEC VEL]

N25 #VECTOR LIMIT ON [DEC]

N26 #VECTOR LIMIT ON [VEL]

(Gemischte Belegung der Dynamikgrenzwerte)

N27 #VECTOR LIMIT ON [ACC=3600000 DEC]

N28 #VECTOR LIMIT ON [ACC VEL=3000]

(Alle Dynamikgrenzwerte auf Default setzen)

N30 #VECTOR LIMIT ON ALL (:= #VECTOR LIMIT ON [ACC DEC VEL])

(Dynamikgrenzwerte durch LOOK_AHEAD bestimmen lassen)

N40 #VECTOR LIMIT OFF [ACC DEC VEL]

N41 #VECTOR LIMIT OFF [ACC DEC]

N42 #VECTOR LIMIT OFF [ACC VEL]

N43 #VECTOR LIMIT OFF [ACC]

N44 #VECTOR LIMIT OFF [DEC VEL]

N45 #VECTOR LIMIT OFF [DEC]

N46 #VECTOR LIMIT OFF [VEL]

(Alle Dynamikgrenzwerte durch LOOK_AHEAD bestimmen lassen)

N50 #VECTOR LIMIT OFF ALL (:= #VECTOR LIMIT OFF [ACC DEC VEL])

N999 M30


Festlegen einer minimalen Satzübergangsgeschwindigkeit

An unstetigen Satzübergängen (Konturknicken) wird die Bahngeschwindigkeit soweit reduziert, dass die dabei auftretenden Achsbeschleunigungen die eingestellen Werte in den Achsparametern nicht überschreiten. Aus technologischer Sicht (z.B. beim Brennschneiden) kann diese Geschwindigkeitsabsenkung an Konturknicken unerwünscht sein. In diesem Fall kann über den nachfolgenden Befehl eine Minimalgeschwindigkeit angegeben werden, die an Konturknicken nicht unterschritten werden darf.

Die im Befehl programmierte Minimalgeschwindigkeit wirkt nur bei unstetigen Satzübergängen bei Zirkular und Linearsätzen. Im NC-Programm darf somit kein Überschleifverfahren oder Spline angewählt sein (z.B. G261, #HSC, G151).

#TRANSVELMIN ON [ [<vel>] ] (modal)
#TRANSVELMIN OFF

<vel> Minimale Satzübergangsgeschwindigkeit in mm/min.

Wenn nach #TRANSVELMIN ON kein Grenzwert programmiert ist, wird 0 als minimale Übergangsgeschwindigkeit ausgegeben. Der Befehl #TRANSVELMIN OFF bewirkt das Umschalten auf die freie Berechnung der Geschwindigkeitsbegrenzung durch den Look Ahead.

Die Funktion wirkt bei linearem und nichtlinearem Slope, es darf aber bei nichtlinearem Slope nicht die Ruckbegrenzung an unstetigen Satzübergängen aktiviert sein (Kanalparameter corr_v_trans_jerk=1). In diesem Fall ist die Ruckbegrenzung prior.

Die programmierte Minimalgeschwindigkeit ist nur bis Programmende gültig. Sie wird beim nächsten Programmstart bzw. Reset abgenullt.

Eine Vorbelegung über die Kanalparameterliste ist nicht möglich.


Schreiben von Maschinendaten

Die Verfügbarkeit dieser Funktionalität ist von der Konfiguration und dem Versionsumfang abhängig.

Dieser Befehl ermöglicht die Änderung von achsspezifischen Parametern im NC-Programm. Die neuen Werte sind programmübergreifend gültig. Sie werden durch eine Listenaktualisierung (z.B. Hochlauf) wieder überschrieben.

Eine evtl. aktive Bahninterpolation wird gestoppt, bis der neue Parameterwert übernommen und wirksam ist. Evtl. drehende Spindeln werden nicht angehalten.

#MACHINE DATA [<Modus>] [AX<Name> | AXNR<expr>

<Param_ID><expr> | AXPARAM "<string>" [ WAIT ] ] (modal)

<Modus> Synchronisationsart

Gültige Modi | Bedeutung
--- | Synchronisation auf Decoder-Ebene (Grundeinstellung).
SYN | Synchronisation auf Interpolator-(Echtzeit) Ebene.

AX<Name> Name der Bahnachse oder Spindel, bei der ein Parameter neu geschrieben werden soll.

AXNR<expr> Logische Achsnummer der Bahnachse oder Spindel, bei der ein Parameter neu geschrieben werden soll. Positive Ganzzahl.

Es erfolgt keine Plausibilitätsprüfung bzgl. der logischen Achsnummer. Für die richtige Angabe ist ausschließlich der Bediener verantwortlich.

<Param_ID><expr> Achsparameter in ISG-Schreibweise (P-AXIS-xxxxx) mit neuem Wert in der Einheit der Achsparameterliste [AXIS]. Folgende Achsparameter können über vordefinierte Schlüsselworte (Param_ID) geschrieben werden:

Param_ID | Bedeutung
P-AXIS-00001 | Nichtlineares Geschwindigkeitsprofil: Achsbeschleunigung bei konstanter Geschwindigkeitszunahme
P-AXIS-00002 | Nichtlineares Geschwindigkeitsprofil: Achsbeschleunigung bei konstanter Geschwindigkeitsabnahme
P-AXIS-00004 | Beschleunigung im Eilgang (G00)
P-AXIS-00005 | Lineares Geschwindigkeitsprofil: Beschleunigung der Stufe 1 im Eilgang (G00)
P-AXIS-00006 | Lineares Geschwindigkeitsprofil: Beschleunigung der Stufe 2 im Eilgang (G00)
P-AXIS-00008 | Zulässige Achsdynamik: Maximal zulässige Achsbeschleunigung
P-AXIS-00011 | Lineares Geschwindigkeitsprofil: Beschleunigung der Stufe 1 im Vorschubbetrieb (G01, G02, G03)
P-AXIS-00012 | Lineares Geschwindigkeitsprofil: Beschleunigung der Stufe 2 im Vorschubbetrieb (G01, G02, G03)
P-AXIS-00045 | Minimale Distanz (Sicherheitsabstand) zwischen zwei Kollisionsachsen
P-AXIS-00056 | Maximale Abweichung nach Abwahl Nachführbetrieb
P-AXIS-00075 | Gantrybetrieb: Korrekturgeschwindigkeit zum Ausfahren des statischen Offsets zwischen der Master- und der Slaveachse bei Differenzen der Meßsysteme
P-AXIS-00099 | Verstärkungsfaktor kv für P-Lageregelung
P-AXIS-00103 | Größe der Lose
P-AXIS-00109 | Maximal zulässiger Geschwindigkeitsoverride bei unabhängigen Achsen und bei Spindeln
P-AXIS-00151 | Maximal zulässige Einschwingzeit zur Erreichung des Genauhaltfensters
P-AXIS-00152 | Absolutposition des Referenzpunktes
P-AXIS-00166 | Bleibende Abweichung bei nichtlinearer Schleppabstandsüberwachung
P-AXIS-00167 | Faktor zur Parametrierung der dyn. Schleppabstandsüberwachung
P-AXIS-00168 | Maximaler Schleppabstand
P-AXIS-00169 | Minimaler Schleppabstand
P-AXIS-00172 | Art der Schleppabstandsüberwachung
P-AXIS-00195 | Nichtlineares Geschwindigkeitsprofil: Rampenzeit für Beschleunigungsabbau
P-AXIS-00196 | Nichtlineares Geschwindigkeitsprofil: Rampenzeit für Beschleunigungsaufbau
P-AXIS-00197 | Nichtlineares Geschwindigkeitsprofil: Rampenzeit für Verzögerungsabbau
P-AXIS-00198 | Nichtlineares Geschwindigkeitsprofil: Rampenzeit für Verzögerungsaufbau
P-AXIS-00200 | Nichtlineares Geschwindigkeitsprofil: Rampenzeit im Eilgang (G00)
P-AXIS-00201 | Minimal zulässige Rampenzeit des Antriebs zur Begrenzung des Achsruckes
P-AXIS-00208 | Maximale Geschwindigkeit der Ausgleichsbewegung nach Abwahl des Nach-führbetriebs
P-AXIS-00209 | Eilganggeschwindigkeit G00
P-AXIS-00211 | Lineares Geschwindigkeitsprofil: Umschaltgeschwindigkeit im Eilgang (G00) zwischen Geschwindigkeits-rampe 1 und Geschwindigkeitsrampe 2
P-AXIS-00212 | Zulässige Achsdynamik: Maximal zulässige Achsgeschwindigkeit
P-AXIS-00216 | Minimal zulässige Achsgeschwindigkeit bei Spindeln. Unterhalb dieser Ge-schwindigkeit liefert die Drehzahlüberwachung im Lageregler "Drehzahl null"
P-AXIS-00217 | Faktor zur Berechnung der Istdrehzahl, bei der der Zustand "Drehzahl erreicht" gemeldet wird.
P-AXIS-00218 | Minimale Referenzpunktfahrtgeschwindigkeit
P-AXIS-00219 | Maximale Referenzpunktfahrtgeschwindigkeit
P-AXIS-00221 | Lineares Geschwindigkeitsprofil: Umschaltgeschwindigkeit im Vorschubbetrieb (G01, G02, G03) zwischen Geschwindigkeitsrampe 1 und Geschwindigkeitsrampe 2
P-AXIS-00236 | Größe des Regelfensters für Genauhalt

AXPARAM "<String>" Alternative Schreibweise: Achsparameter mit komplettem Strukturpfad und Wert in der internen Schreibweise der Achsparameterliste [AXIS] (siehe Beispiel). Es können alle Achsparameter geschrieben werden.

WAIT Dieses Schlüsselwort darf nur in Verbindung mit einem synchronisierten Setzen eines Achsparameters verwendet werden (SYN). Bei programmiertem WAIT wird zusätzlich die Programmdecodierung unterbrochen (implizites FLUSH) und gewartet, bis im NC-Kanal der neue Parameterwert übernommen und wirksam ist.

WAIT darf nicht bei konturändernden Funktionen wie z.B aktiver WRK, Polynomüberschleifen oder aktivem HSC-Modus verwendet werden.

Programmierbeispiel

N10 G00 X100 (Positionierung mit V-Eilgang gemäß)
(Defaulteinstellung nach Hochlauf)

N20 #MACHINE DATA SYN [AX=X P-AXIS-00209=80000] (Neue V-Eilgang)

N30 ... (Im weiteren Programmverlauf gilt die neue V-Eilgang).

:

Alternativ mit Achslistenschreibweise:

:

N20 #MACHINE DATA SYN [AX=X AXPARAM= "getriebe[0].vb_eilgang 80000" ]
(Neue V-Eilgang)

:

Für Spindelachse:

N20 #MACHINE DATA SYN [AX=S P-AXIS-00109=1200] (Neuer V-Override)

Setzen eines Softwareendschalters mit Warten im Kanal:

:

N20 #MACHINE DATA SYN [AX=X AXPARAM= "kenngr.swe_pos 15000000" WAIT]


Definition von Dateinamen

Mit diesem Befehl können im NC-Programm Dateinamen definiert werden, die von speziellen NC-Funktionen z.B. zur Anlage einer Ausgabedatei oder zum Aufruf eines NC-Programms verwendet werden.

#FILENAME [ <File_ID>="<Dateiname>" { <File_ID>="<Dateiname>" } ] (modal)

<File_ID> Dateikennung

File_ID | Bedeutung
MSG | Name der Ausgabedatei für #MSG SAVE. Defaultname ist "message.txt".
M6 | Name des globalen Unterprogramms bei implizitem Programmaufruf über M6 im NC-Programm. Der Name ist bis M30 gültig. M6 wird nicht mehr als M-Funktion behandelt! Defaultname wird in [1] -43 gesetzt.
G80  G89 | Namen der globalen Unterprogramme bei impliziten Programmaufrufen über G80  G89 im NC-Programm. Die Namen sind bis M30 gültig. Die Defaultnamen werden in [1] -45 gesetzt.
G800- G819 | Namen der globalen Unterprogramme bei zusätzlichen impliziten Programmaufrufen über G800  G819 im NC-Programm. Die Namen sind bis M30 gültig. Die Defaultnamen werden in [1] -46 gesetzt.

Das Gleichheitszeichen (=) zwischen <File_ID> und <Dateiname> ist optional. Die Dateinamen können jederzeit im NC-Programm mit #FILENAME definiert bzw. geändert werden.

Bei RESET und bei Programmstart werden die Dateinamen auf ihren Defaultnamen zurückgesetzt.

Programmierbeispiele

%example1

N10 #FILENAME[ MSG="prog_flow.txt" ]

N20 $IF V.E.PLC_START_HOME == 1

N30 G74 X1 Y2 Z3

N40 #MSG SAVE["Homing executed"] Ausgabe in prog_flow.txt

N50 $ENDIF

:

Nxx #MSG SAVE["Roughing OK"]

:

Nxx #MSG SAVE["Finishing OK"]

N985 V.E.WP_CNTR = V.E.WP_CNTR+1

N990 #MSG SAVE["Workpiece No. %d OK", V.E.WP_CNTR]

M1000 M30

%example2

N10 #FILENAME[ M6="tool_change.nc" ]

N20 G00 X100 Y100 Z0

N30 M6 Aufruf Werkzeugwechselprogramm tool_change.nc

:

M1000 M30

%example3

N10 #FILENAME[ G80="g80_up_test.nc" ]

N20 G00 X100 Y100 Z50

N30 G80 Aufruf Unterprogramm g80_up_test.nc

:

M1000 M30

%example4

N10 #FILENAME[ G800="g800_up_test.nc" G815="g815_up_test.nc"]

N20 G00 X100 Y100 Z50

N30 G800 Aufruf Unterprogramm g800_up_test.nc

:

N90 G815 Aufruf Unterprogramm g815_up_test.nc

:

M1000 M30


Wiederherstellen von Achskonfigurationen und Achskopplungen

Komplexe mehrkanalige Maschinen, bei denen während der Bearbeitung Achstauschoperationen und synchrone Achsen (Synchronbetrieb) zum Einsatz kommen, werden im Fehlerfall durch einen NC-Reset abgebrochen. Danach sind die NC-Kanäle grundinitialisiert und die zum Zeitpunkt des Abbruchs gültigen Kanalkonfigurationen sind verloren. Um ein Freifahren der Werkzeugachsen zu ermöglichen, muß somit die zum Zeitpunkt des Abbruchs aktive Konfiguration bestehend aus im Kanal vorhandenen Achsen sowie angewählten Achskopplungen wiederhergestellt werden. Dies wird durch die im folgenden beschriebenen NC-Befehle ermöglicht.

Mehr:

button Sichern einer aktuellen Konfiguration

button Laden bzw. Wiederherstellen einer gesicherten Konfiguration

button Löschen einer gesicherten Konfiguration


Sichern einer aktuellen Konfiguration

# SAVE CONFIG [ [ AX ] [ AXLINK ] ] (modal)

AX: Sichern der momentan im Kanal vorhandenen Achskonfiguration.

AXLINK: Sichern der momentan im Kanal angewählten Achskopplungen. Bereits zuvor gesicherte Kopplungen werden gelöscht, wenn AXLINK programmiert wird, obwohl keine Kopplungen aktiv sind.

Der Befehl #SAVE CONFIG findet üblicherweise im NC-Bearbeitungsprogramm immer nach Aktionen Verwendung, welche eine Änderung der Achskonfiguration bzw. die Aktivierung von Achskopplungen bewirken. Also z.B. nach einem Achstauschbefehl oder nach dem Befehl für die Anwahl eines Synchronbetriebes.

Während der Sicherung werden die Konfigurationsdaten vom Decoder durch den NC-Kanal an den Interpolator übermittelt und von diesem dann wieder direkt an den Decoder zurückgeschickt und dort intern gespeichert. Damit liegen die aktuellen Konfigurationsdaten bzgl. Achsen und Achskopplungen im Decoder synchron zur aktuellen Bearbeitung vor.

Programmierbeispiel

%main

N10 X0 Y0 Z0

N15 #AX REQUEST [C,4,5] [B,5,6]

N20 #AX LINK [1, C=X, B=Y]

N25 #AX LINK [2, B=X]

N30 #AX LINK ON [1]

N35 #SAVE CONFIG [AX AXLINK] Sichern der Achskonfiguration X,Y,Z,B,C
und der aktiven Koppelgruppe 1

N.. X.. Y.. Z..

N200 #AX LINK OFF ALL

N210 #AX RELEASE [C]

N220 #SAVE CONFIG [AX] Sichern der neuen Achskonfiguration X,Y,Z,B.
Die bisherige gesicherte Achskonfiguration
aus Satz N35 wird überschrieben!

N.. X.. Y.. Z..

N99 M30

Eine gesicherte Konfiguration bleibt programmübergreifend gespeichert. Sie kann nur durch nachfolgende #SAVE CONFIG  Befehle überschrieben oder durch #CLEAR CONFIG gelöscht werden!


Laden bzw. Wiederherstellen einer gesicherten Konfiguration

#LOAD CONFIG [ [ AX ] [ AXLINK ] ] (modal)

AX: Laden der zuletzt gesicherten Achskonfiguration. Wenn keine gesicherte Achskonfiguration vorhanden ist, erfolgt die Ausgabe einer Fehlermeldung. Im Kanal nicht vorhandene Achsen werden ohne Achsversätze angefordert.

AXLINK: Laden der zuletzt gesicherten aktiven Achskopplungen. Sämtliche Achskopplungen werden zusammengefaßt unter der Koppelgruppe 1 wiederhergestellt und aktiviert. Wenn keine gesicherten Achskopplungen vorhanden sind, erfolgt die Ausgabe einer Fehlermeldung.

Der Befehl #LOAD CONFIG wird sinnvollerweise nach einem NC-RESET im s.g. Freifahrprogramm dazu verwendet, die zuletzt gesicherte Konfiguration wiederherzustellen. Es liegt dabei in der Verantwortung des Maschinenbedieners, dass er im Hauptprogramm mit #SAVE CONFIG jeweils die entsprechenden Konfigurationen gesichert hat und er somit auch korrekt wiederaufsetzt. Sind beide Schlüsselworte gesetzt, so wird unabhängig von deren programmierter Reihenfolge zuerst immer die Achskonfiguration vollständig im NC-Kanal wiederhergestellt (ohne "FAST") und dann der zuletzt gesicherte Synchronbetrieb wieder aktiviert.

Programmierbeispiel

Starten eines Freifahrprogrammes nach Bearbeitungsabbruch und NC-RESET:

%Freifahren

N10 G53

N35 #LOAD CONFIG [AX AXLINK] Wiederherstellen der gesicherten Achs-
konfiguration und der Achskopplungen
unter Koppelgruppe 1

N40 #ECS ON Definition eines Effektor-KS zur Durchführung der
Rückzugsstrategie

N.. X.. Y.. Z..

:

N200 #AX LINK OFF ALL

:

N.. X.. Y.. Z..

N99 M30

Bei der Verwendung von #SAVE CONFIG und #LOAD CONFIG im gleichen NC-Programm wird zu Beginn von #LOAD CONFIG stets ein implizites FLUSH ausgeführt, um im Kanal die Konsistenz der gesicherten Konfigurationen sicherzustellen.

Programmierbeispiel

N..

Nxx #SAVE CONFIG [AX AXLINK]

N..

Nxx #LOAD CONFIG [AX AXLINK] Zuerst implizites FLUSH, dann Wieder-
herstellen der Achskonfiguration,
dann Wiederherstellen der Achskopplungen

N.. X.. Y.. Z..

N99 M30


Löschen einer gesicherten Konfiguration

#CLEAR CONFIG (modal)

Mit #CLEAR CONFIG wird die zuletzt gesicherte Konfiguration komplett gelöscht. Ein direkt nachfolgendes #LOAD CONFIG verursacht die Fehlermeldung "Keine wiederherstellbare Konfiguration vorhanden". D.h. es muss zuerst über #SAVE CONFIG wieder eine Konfiguration gesichert werden, bevor diese mit #LOAD CONFIG restauriert werden kann.

Ein #CLEAR CONFIG ist für den Maschinenbediener immer dann hilfreich, wenn er aus Sicherheitsgründen den Zugriff auf eine eventuell falsche gesicherte Konfiguration in anderen NC-Programmen verhindern möchte.

Programmierbeispiel

Freifahrprogramm abarbeiten und dann die gesicherte Konfiguration löschen:

%Freifahren

N10 G53

N35 #LOAD CONFIG [AX AXLINK] Wiederherstellen der gesicherten Achs-
konfiguration und der Achskopplungen
unter Koppelgruppe 1

N40 #ECS ON Definition eines Effektor-KS zur Durchführung der
Rückzugsstrategie

N.. X.. Y.. Z..

:

N200 #AX LINK OFF ALL

:

N.. X.. Y.. Z..

N.. #CLEAR CONFIG Nach Beenden der Rückzugsbewegung löschen der
gesicherten Konfiguration

N99 M30


Arbeits-/ Schutzraumüberwachung

Durch Kontrollbereiche kann verhindert werden, dass bestimmte Achskonstellationen zu einer Kollision des Werkzeuges mit zu schützenden Teilen führen. Ein Kontrollbereich kann ein Arbeits- oder ein Schutzbereich sein.

Kontrollbereiche können dreidimensional in zylindrischer oder polygonaler Form definiert werden. Die dritte Dimension wird durch konstante Minimal- und Maximalwerte festgelegt. Die Zuordnung der Achsen ist abhängig von der aktuell ausgewählten Arbeitsebene (z.B. G17).

Abbildung 11-15: Definition von 3D Kontrollbereichen (Zylindrisch, Polygonal)

Abbildung 11-16: Beispielapplikation

Aus einem Arbeitsbereich kann nicht herausgefahren und in einen Schutzbereich nicht hineingefahren werden. Die aktuellen Werkzeugdaten werden mit einbezogen, so dass die Werkzeugspitze auf ihre Gültigkeit im Kontrollbereich geprüft werden kann.

Arbeits- oder Schutzbereiche werden im NC Programm definiert, aktiviert und deaktiviert, wobei auch mehrere Kontrollbereiche gleichzeitig aktiv sein können. Kontrollbereiche können im deaktiviertem Zustand auch neu definiert werden.

Die Arbeits-/Schutzraumüberwachung ist möglich bei:

q Linearen Bewegungssätzen

q Zirkularen Bewegungssätzen (gleich welcher Orientierung G17/G18/ G19).

q Kinematischen Transformationen (Überwachung des Werkzeugmittelpunktes).

q Polynomüberschleifen

q Helikalen Bewegungen

Ausgeschlossen sind:

q Kartesische Transformationen ( #(A)CS )

Mehr:

button Definition eines Kontrollbereiches

button Kontrollbereiche an-/abwählen

button Kontrollbereiche löschen


Definition eines Kontrollbereiches

Die Definition eines Arbeits- bzw. Schutzbereichs erfolgt direkt im NC Programm in einer von Klartextbefehlen eingeschlossenen Sequenz von Verfahrbewegungen. Die Verfahrbewegungen sind hierbei immer absolut zu programmieren. Die Kontur des Kontrollbereiches in der Ebene wird entweder über ein durch Linearsätze beliebig gebildetes geschlossenes Polygon (Endpunkt der Satzfolge muss gleich dem Startpunkt sein ) oder einen Vollkreis definiert. Die Ausdehnung in der dritten Dimension sowie weitere Merkmale des Kontrollraumes werden im zugehörigen Klartextbefehl mit festgelegt.

Beginn einer Kontrollbereichsdefinition:

#CONTROL AREA START [ ID <expr> WORK | PROTPOLY | CIRC

MIN_EXCUR <expr> MAX_EXCUR <expr> ] (modal)

ID <expr> Identifikationsnummer des Kontrollbereiches (ID). Die Definition ist über Programmende und RESET hinaus gültig.

WORK Kontrollbereich ist ein Arbeitsraum.

PROT Kontrollbereich ist ein Schutzraum.

POLY Kontrollbereichkontur wird über ein Polygonzug definiert.

CIRC Kontrollbereichkontur wird über einen Vollkreis definiert.

MIN_EXCUR<expr> Begrenzung des Kontrollbereiches in der dritten Dimension in negativer Richtung.

MAX_EXCUR <expr> Begrenzung des Kontrollbereiches in der dritten Dimension in positiver Richtung.

Ende einer Kontrollbereichsdefinition:

#CONTROL AREA END (modal)

Jeder Kontrollbereich muss mit #CONTROL AREA END abgeschlossen werden. Erst danach können weitere Kontrollbereiche definiert werden.

Ein nicht aktiver Überwachungsraum kann durch erneutes Programmieren der gleichen ID überschrieben werden.

Programmierbeispiel

(Definition eines polygonförmigen Arbeitsraumes:

:

N10 #CONTROL AREA START [ID1 WORK POLY MIN_EXCUR=-50 MAX_EXCUR=50]

N20 G01 F1000 G90 X-150 Y75 (Startpunkt)

N30 X-50 Y150

N40 X50 Y150

N50 X150 Y75

N60 X150 Y0

N70 X50 Y0

N80 X50 Y75

N90 X-50 Y75

N100 X-50 Y0

N120 X-150 Y0

N130 X-150 Y75 (Endpunkt identisch mit Startpunkt)

N140 #CONTROL AREA END

:

(Definition eines zylindrischen Schutzraumes:

:

N210 #CONTROL AREA START [ID2 PROT CIRC MIN_EXCUR=-70 MAX_EXCUR=70]

N220 G01 X100 Y0 F10000 (Startpunkt für zylindrischen Schutzraum)

N230 G02 G162 I50 J0

N240 #CONTROL AREA END

:


Kontrollbereiche an-/abwählen

Beim Aktivieren von Arbeitsräumen muss sich der TCP bereits im gültigen Arbeitsraum befinden. Ebenso darf beim Aktivieren eines Schutzraumes der TCP auf der aktuellen Position keine Verletzung hervorrufen.

#CONTROL AREA ON [ALL] | [ ID<expr>] (modal)

ID <expr> Identifikationsnummer des Kontrollbereiches (ID).

ALL Alle derzeit definierten Kontrollbereiche aktivieren.

Programmierbeispiel

#CONTROL AREA ON [ID3] (Aktiviere spezifischen Kontrollbereich)

#CONTROL AREA ON ALL (Aktiviere alle definierten Kontrollbereiche)

#CONTROL AREA OFF [ [ALL] | [ ID<expr>] ] (modal)

ID <expr> Identifikationsnummer des Kontrollbereiches (ID).

ALL Alle derzeit definierten Kontrollbereiche deaktivieren.

Programmierbeispiel

#CONTROL AREA OFF [ID3] (Deaktiviere spezifischen Kontrollbereich)

#CONTROL AREA OFF (Deaktiviere zuletzt angewählten Kontrollbereich)

#CONTROL AREA OFF ALL (Deaktiviere alle aktiven Kontrollbereiche)


Kontrollbereiche löschen

#CONTROL AREA CLEAR [ALL] | [ ID<expr>] (modal)

ID <expr> Identifikationsnummer des Kontrollbereiches (ID).

ALL Alle derzeit definierten Kontrollbereiche löschen.

Programmierbeispiel

#CONTROL AREA CLEAR [ID3] (Lösche spezifischen Kontrollbereich)

#CONTROL AREA CLEAR ALL (Lösche alle definierten Kontrollbereiche)

812_start


Beeinflussung des Vorwärts-/Rückwärtsfahrbetriebes

Die Verfügbarkeit dieser Funktionalität ist von der Konfiguration und dem Versionsumfang abhängig.

Weitere Informationen zu diesen Befehlen und zum Thema Vorwärts-/ Rückwärtsfahren auf der Bahn siehe Funktionsbeschreibung [FCT-C7].

Mehr:

button Ausblenden von Programmsequenzen

button Rückwärtsfahrspeicher löschen


Ausblenden von Programmsequenzen

Im NC-Programm kann durch den Befehl #OPTIONAL EXECUTION eine Sequenz von NC-Sätzen als im Vorwärts-/ Rückwärtsfahrbetrieb nicht ausführbar markiert werden. Dieser markierte Bereich wird dann während aktivem Vorwärts-/Rückwärtsfahren auf Interpolatorebene ausgelassen. Es erfolgt jedoch keine Neuberechnung von Übergangsbedingungen zwischen den Sätzen vor und nach dem ausgelassenen Bereich.

#OPTIONAL EXECUTION ON | OFF (modal)

Um einen diskontinuierlichen Übergang von Weg, Geschwindigkeit und Beschleunigung zwischen diesen Sätzen zu vermeiden, muß der Interpolatorkontext insbesondere im Bezug auf Achspositionen unverändert sein.

Programmierbeispiel

%t_storag.nc

X10 Y0

N10 G91 G00 X10 F1000

N11 #OPTIONAL EXECUTION ON

N12 Z123

N13 S1000 M3

N14 Z-123

N15 M101

N16 #OPTIONAL EXECUTION OFF

N20 G90 G01 X0

N30 G02 I10

N40 G03 J10

M30

Die CNC prüft und überwacht nur den kontinuierlichen Positionsverlauf der Achsen mit oder ohne Ausblenden von Sätzen. Die Einhaltung aller anderen Bedingungen muß vom Anwender gewährleistet sein, da diese von der CNC nicht geprüft werden.

Die Schachtelung von ausgeblendeten Bereichen wird nicht berücksichtigt.

Steht die Ausführung innerhalb eines OPTIONAL EXECUTION-Bereiches und es erfolgt die Anwahl des Vorwärts-/ Rückwärtsfahrbetriebs, so wird das Ausblenden bis zum Erreichen von OPTIONAL EXECUTION OFF verzögert. Das ist notwendig, weil nur komplette Bereiche ausgelassen werden dürfen.


Rückwärtsfahrspeicher löschen

Durch den NC-Befehl #BACKWARD STORAGE CLEAR kann der seitherige Rückwärtsfahrspeicher explizit gelöscht werden. Hierdurch wird sichergestellt, dass nach Überfahren dieser Programmposition angehalten wird.

#BACKWARD STORAGE CLEAR (modal)

Programmierbeispiel

%backward-storage

N000 G01 X0 F10000

N010 X100 Y123

N020 X100

N030 X200 Y10

N040 X300 Y20

N050 #BACKWARD STORAGE CLEAR

N051 #BACKWARD STORAGE CLEAR (test multiple clearing

N052 #BACKWARD STORAGE CLEAR (test multiple clearing

N060 X400 Y-20

N070 X500 Y-3

N060 #BACKWARD STORAGE CLEAR

N080 X444 Y10

N090 X333 Y3

N100 X222 Y10

N110 X111 Y3

N120 X000 Y10

N130 X-111 Y3

N140 #BACKWARD STORAGE CLEAR

N1000 M30

812_end


Werkzeugwechsel bei aktivem Synchronbetrieb

Generell ist die Übernahme neuer Werkzeugdaten (T (mit implizitem D), D bzw. #TOOL DATA) bei aktivem Synchronbetrieb aus Sicherheitsgründen nicht zulässig und wird durch die Fehlermeldung 20169 angezeigt. Diese Verriegelung ist durch den nachfolgenden NC-Befehl schaltbar.

#FREE TOOL CHANGE ON | OFF (modal)

Der NC-Befehl muß spätestens vor dem ersten, im aktivem Synchronbetrieb angewählten Werkzeugwechsel programmiert sein. Die Aufhebung der Verriegelung erfolgt mit dem Schlüsselwort "ON".

Die Reaktivierung der Verriegelung von Synchronbetrieb und Werkzeugwechsel wird mit "OFF" erreicht. Weiterhin wird der NC-Befehl bei RESET und implizit bei Hauptprogrammende abgewählt.

Bei Programmstart ist die Verriegelung von Synchronbetrieb und Werkzeugwechsel aus Kompatibilitäts- und Sicherheitsgründen ebenfalls immer aktiv (Default).

Ist gleichzeitig der Kanalparameter P-CHAN-00100 (move_tool_offsets_directly) aktiv, so wird die Fehlermeldung 20169 weiterhin erzeugt, da das direkte Ausfahren der Werkzeugoffsets in den Slaveachsen bei aktivem Synchronbetrieb sonst zu Maschinenschäden führen könnte. D.h. bei Verwendung von #FREE TOOL CHANGE sollte P-CHAN-00100 deaktiviert sein.

Programmierbeispiel

%TOOL_AXLINK

N05 X0 Y0 Z0 C100 G53 D0

N10 #AX LINK [1,C=X]

N15 #FREE TOOL CHANGE ON

N20 #AX LINK ON [1]

N30 X100 Y50 Z30

N40 D2

N50 X200 Y75 Z40

N60 D1

N65 X300 Y100

N70 #AX LINK OFF [1]

N75 #FREE TOOL CHANGE OFF

N70 X25 Y25 Z25 C25

N80 M30


Sperren von Programmbereichen für den Satzvorlauf

Im NC-Programm können durch den Befehl #BLOCKSEARCH LOCKED/RELEASED beliebige Programmbereiche für den Satzvorlauf gesperrt werden. Liegt die Fortsetzposition des Satzvorlaufes dann in einem dieser gesperrten Bereiche, so wird die Fehlermeldung P-ERR-21399 ausgegeben.

Die Satzvorlaufsperre umfasst auch alle im jeweiligen Bereich aufgerufenen lokalen und globalen Unterprogramme.

Bei einer Schachtelung von gesperrten Bereichen umfaßt die Satzvorlaufsperre den Bereich von der ersten Aktivierung bis zur ersten Deaktivierung (siehe Beispiel 2).

Weitere Informationen zum Satzvorlauf siehe Funktionsbeschreibung [FCT-C6].

#BLOCKSEARCH LOCKED | RELEASED (modal)

Programmierbeispiele

Beispiel 1:

Im Bereich der NC-Sätze N40N100 einschließlich der darin aufgerufenen Unterprogramme darf für den Satzvorlauf keine Fortsetzposition angewählt werden.

%BLOCKSEARCH

N10 X0 Y0 Z0

N20 X10

N30 Y10

N40 #BLOCKSEARCH LOCKED

N50 X20

N60 Y20

N65 L GSP.nc

N70 Z20

N80 X30

N90 Z30

N100 #BLOCKSEARCH RELEASED

N110 Y30

N120 X40

N130 Z40

N999 M30

Beispiel 2:

Bereich der Satzvorlaufsperre bei Schachtelung umfasst N40-N75

%BLOCKSEARCH

N10 X0 Y0 Z0

N20 X10

N30 Y10

N40 #BLOCKSEARCH LOCKED

N50 X20

N55 #BLOCKSEARCH LOCKED

N60 Y20

N65 L GSP.nc

N70 Z20

N75 #BLOCKSEARCH RELEASED

N80 X30

N90 Z30

N100 #BLOCKSEARCH RELEASED

N110 Y30

N120 X40

N130 Z40

N999 M30


Programmierbarer Bahnoverride

Mit dieser Funktion kann der Bahnvorschub im NC-Programm, wenn erforderlich für Vorschub und Eilgangsätze, unterschiedlich beeinflusst werden. Der programmierte Overridewert ist bei Bahnbewegungen wirksam, wenn sich mindestens eine Achse bewegt. Die Wirkungsweise der Echtzeitbeeinflussungen des Vorschubs über die PLC bleibt davon unberührt.

Als weitere Funktion steht auch ein programmierbarer Achsoverride zur Verfügung.

Ist für eine an der Bahnbewegung beteiligten Achse zusätzlich auch ein Achsoverride definiert, so ergibt sich der wirksame Bahnoverride aus der Multiplikation der beiden Overridewerte.

Die Funktion G166 unterdrückt die Wirkung der programmierten Overridewerte.

#OVERRIDE [FEED_FACT<expr>RAPID_FACT<expr>]

FEED_FACT<expr> Overridefaktor für Vorschubsätze [0,1% - 200%].

RAPID_FACT<expr> Overridefaktor für Eilgangsätze [0,1% - 200%].

Programmierbeispiel

%path_override

N10 G00 G90 X0 Y0 Z0

(Bahnoverride G01 122.765%, G00 155.7%)

N20 #OVERRIDE [FEED_FACT=122.765 RAPID_FACT=155.7]

N30 G01 X100 Y100 Z100 F1000 Wirksamer Vorschub=1227.65

(Bahnoverride G01, G00 100%)

N40 #OVERRIDE [FEED_FACT=100 RAPID_FACT=100]

N50 G01 X200 Y200 Z200 F1000 Wirksamer Vorschub=1000

M30


Antriebsunabhängiges Schalten von Antriebsfunktionen

Im Gegensatz zu den SERCOS-spezifischen Befehlen gemäß Kapitel 11.18 ermöglichen die nachfolgenden Befehle das antriebsunabhängige Setzen von Antriebsparametern. Die Parameter können ausschließlich synchron geschrieben werden, d.h. die Ausführung des Befehles erfolgt zum Zeitpunkt der Bearbeitung auf Interpolatorebene. In der Grundeinstellung erfolgt die Ausführung des #DRIVE-Befehls parallel zur weiteren Abarbeitung des NC-Programms, d.h die Programmabarbeitung wird nicht angehalten. Um die Interpolation bis zum erfolgreichen Schalten der Antriebsfunktion anzuhalten, kann der Parameter WAIT benutzt werden.

Zur Prüfung des erfolgreichen Schaltens der Antriebsfunktion zu einem späteren Zeitpunkt kann der Befehl #DRIVE WAIT SYN verwendet werden.

Mehr:

button Synchrones Schreiben

button Synchrones Warten auf Quittierung


Synchrones Schreiben

#DRIVE WR SYN [ AX < Achsname> | AXNR <expr> [ MOTOR<expr> ] [ PARAM_SET<expr> ]

KEY <string> VAL <expr> [ WAIT ] ]

AX <Achsname> Name der (Antriebs-)achse

AXNR<expr> Logische Achsnummer der (Antriebs-)achse, Positive Ganzzahl

MOTOR<expr> Im Antriebsverstärker zu wählende Motornummer bei
Motorumschaltung; Positive Ganzzahl

PARAM_SET<expr> Umzuschaltender Parametersatz im Antriebsverstärker;
Positive Ganzzahl

KEY<string> Kennung der anzusprechenden Funktion gemäß [2]

VAL<expr> Zu übertragender Wert, Negative oder positive Ganzzahl

WAIT Anhalten der Interpolation und Warten auf erfolgreiches Schalten der Antriebsfunktion.

Ohne Angabe dieses Schlüsselwortes kann zur Prüfung des erfolgreichen Schaltens der Antriebsfunktion im weiteren Verlauf des NC-Programms ein #DRIVE WAIT SYN programmiert werden.

Für Spindeln darf während aktivem Endlosdrehen keine Motorumschaltung und keine Parametersatzumschaltung (MOTOR=<expr>, PARAM_SET=<expr>) programmiert werden.


Synchrones Warten auf Quittierung

Mit dem folgenden Befehl wird geprüft, ob vorhergehende #DRIVE WR SYN für eine Achse abgeschlossen sind. Der Interpolator wird angehalten, bis alle #DRIVE WR SYN im Antrieb ausgeführt wurden. Dies gilt sowohl für Bahnachsen als auch für Spindelachsen.

#DRIVE WAIT SYN [ AX < Achsname> | AXNR <expr> SWITCH_OK ]

AX <Achsname> Name der (Antriebs-)achse

AXNR<expr> Logische Achsnummer der (Antriebs-)achse, Positive Ganzzahl

SWITCH_OK Prüfen, ob alle vorhergehenden #DRIVE WR SYN abgeschlossen sind.

Programmierbeispiele

Synchrones Schreiben mit sofortigem Warten auf Quittierung:

%TOOL_AXLINK1

N05 X0 Y0 Z0

N10 #DRIVE WR SYN [AX=X MOTOR=2 PARAM_SET=4 KEY=Drehmomentgrenze VAL=400 WAIT]

N20 X100 Y50 Z30 G01 F3000

N30 X200 Y75 Z40

N65 X300 Y100

N70 X25 Y25 Z25 C25

Nxx

N80 M30

Synchrones Schreiben mit spaeterem Warten auf Quittierung:

%TOOL_AXLINK2

N05 X0 Y0 Z0

N10 #DRIVE WR SYN [AX=X MOTOR=2 PARAM_SET=4 KEY=Drehmomentgrenze VAL=400]

N20 X100 Y50 Z30 G01 F3000

N30 X200 Y75 Z40

N60 #DRIVE WAIT SYN [AX=X SWITCH_OK]

N65 X300 Y100

N70 X25 Y25 Z25 C25

Nxx

N80 M30


Werkzeuggeometriekorrektur

Werkzeuggeometrien werden in Länge, Radius und Achsversatz korrigiert. Die entsprechenden Werkzeuggeometrie-Korrekturdaten müssen zur Verfügung gestellt werden.

Werkzeugkorrekturdaten werden mit dem D-Wort bzw. bei entprechender Parametrierung automatisch mit dem T-Wort [1]-9 ausgewählt:

D <expr> Werkzeugkorrekturanwahl (modal)

<expr> Nummer des Korrekturdatensatzes. Positive Ganzzahl.

Das D-Wort definiert einen Werkzeugdatensatz, der folgende Werte enthält:

- Werkzeuglänge (senkrecht zur Hauptebene)

- Werkzeugradius (in der Hauptebene)

- Achsversatzkoordinaten (in allen Achsrichtungen)

- Maßeinheit der Zahlenangaben (mm/Inch)

- Werkzeug-Gültigkeitskennung

- Werkzeugdynamikdaten

(NUR_812_HMG: MODI 1 entfernen, Beschreibung anpassen!)

Der Zeitpunkt der Wirksamkeit der Werkzeugkorrekturdaten für die Werkzeuglänge (in der Senkrechten zur Hauptebene) und für die Achsversatzkoordinaten (in den Achsrichtungen) wird über den Kanalparameter [1]-36 bestimmt.

Zwei Modi werden hierbei unterschieden:

q Die Ausgleichsbewegung wird direkt mit dem D-Wort ohne Angabe einer Wegbedingung ausgeführt.

q Die Steuerung führt die Ausgleichsbewegung aus Sicherheitsgründen erst mit dem nächsten absoluten Verfahrsatz in der entsprechenden Achse aus (Defaultmodus).

Dabei gilt für die Einrechnung der Werkzeugkorrekturdaten im G91-Modus:

Die Programmierung von...

N10 D16

N20 G00 X0 G91

...darf keine Bewegung der X-Achse hervorrufen (entspricht Bewegung relativ um 0). Somit wirken sich die Werkzeugkorrekturdaten für diese Achse erst dann aus, wenn die nächste Verfahrinformation absolut (G90) programmiert wird.

Für beide Modi gemeinsam gilt: Der Werkzeugradius wird an die Werkzeugradius-korrektur übergeben und beeinflußt hier die Äquidistanten-Berechnung. Die Aus-gleichsbewegung erfolgt hier immer mit einer Wegbedingung.

Die Regeln für die Ausführung der Ausgleichsbewegung gelten entsprechend auch bei der Abwahl der Werkzeugkorrektur:

D00 Werkzeugkorrekturabwahl

Mehr:

button Werkzeuglängenkorrektur (WLK)

button Werkzeugradiuskorrektur (WRK)


Werkzeuglängenkorrektur (WLK)

Im Grundzustand wird die Werkzeuglänge in die dritte Hauptachse eingerechnet. Im folgenden Beispiel wird die Werkzeuglängenkorrektur in Z-Richtung durchgeführt. Bei der Anwahl des Korrekturdatensatzes D16 in Satz N30 erfolgt die Ausgleichsbewegung in Z-Richtung gemeinsam mit dem Verfahrdatensatz in N30.

Programmierbeispiel

N10 G01 F900 G17 (X-Y-Ebene; Längenkorrektur in Z+ (default))

N20 X150 Y10 Z10

N30 D16 Y40 Z15 (Anwahl der Längenkorrektur D16. Die)

. (Ausgleichsbewegung wird durchgeführt.)

.

N100 D20 (Anwahl der Längenkorrektur D20. Die)

. (Ausgleichsbewegung erfolgt erst mit dem)

. (nächsten Verfahrsatz in Z-Richtung.)

.

N200 G0 D0 X0 Y0 Z0 (Abwahl der WLK)

Korrekturdatensatz D0 : Länge = 0 Radius = 0

. D16 : Länge = 5 Radius = 5

.

D20 : Länge = 12,5 Radius = 5

Abbildung 12-1: Beispiel zur Werkzeuglängenkorrektur


Werkzeugradiuskorrektur (WRK)

Die Werkzeugradiuskorrektur (WRK) erlaubt die Programmierung der Werkstückkontur unabhängig von der Geometrie des Werkzeugs. Bei angewählter WRK (G41, G42) wird eine zu dieser programmierten Werkstückkontur äquidistante Werkzeugbahn im Abstand "Werkzeugradius" berechnet.

Die Werkzeugradiuskorrektur wirkt in der mit G17, G18 oder G19 angewählten Ebene. Als Werkzeugkorrekturwerte werden die unter den D-Worten abgelegten Werkzeug-korrektursätze verwendet (s. Kap. 12: "Werkzeuggeometriekorrektur").

Durch Anwahl eines neuen D-Wortes oder Beschreiben der Variablen V.G.WZ_AKT.R kann der Werkzeugradius auch bei aktiver WRK geändert werden. Die Änderung des Werkzeugradius ist nur zusammen mit einem Linearsatz möglich.

Bei Verwendung eines negativen Werkzeugradius wird automatisch die Anwahlseite der WRK gewechselt.

Abbildung 12-2: Wirkungsweise und Begriffe der Werkzeugradiuskorrektur

Übersicht aller WRK-relevanten G-Funktionen:

An-/Abwahl

G40 WRK-Abwahl (modal, Grundzustand)

G41 Anwahl WRK links der Kontur (modal)

G42 Anwahl WRK rechts der Kontur (modal)

Auswahl der An-/Abwahl-Verfahren:

G138 Direkte An-/Abwahl der WRK (modal)

G139 Indirekte An-/Abwahl der WRK (modal, Grundzustand)

G237 Lotrechte An-/Abwahl der WRK (modal)

G238 Inneneckanwahl der WRK (modal)

G239 Direkte An-/Abwahl der WRK ohne Satz (modal)

G05 Tangentiale An-/Abwahl der WRK (nicht modal)

812_start

Ein Wechsel des modalen Anwahlverfahrens zu G238 bei angewählter WRK ist nicht zulässig.

812_end

Auswahl der Außenübergänge:

G25 Geradenübergang (modal, Grundzustand)

G26 Kreisübergänge (modal)

Vorschubanpassung:

G10 Vorschub konstant (modal, Grundstellung)

G11 Vorschub angepaßt (modal)

Konturausblendung:

G140 Abwahl der Konturausblendung (modal, Grundzustand)

G141 Anwahl der Konturausblendung (modal)

Programmierbeispiele

Darstellung der unterschiedlichen Anwahlmöglichkeiten bei Einsatz der Werkzeugradiuskorrektur. Es werden die Befehle der direkten, indirekten und tangentialen An-/Abwahl der WRK (G139/G138/G05) in Kombination mit den WRK-Übergangsarten für Geraden- und Kreisübergang (G25/G26) veranschaulicht.

Die Testprogramme werden mit einem Werkzeugradius von 10mm gefahren.

Beispiel 1 | G138 | G139 | G05
G25 | Bahn 1 | Bahn 2 | Bahn 3

%WZKG25 (Muster Kontur für G25)

N10 G00 G90 T1 D1 X0 Y0 Z0 G17

(Kontur Darstellung)

N15 G01 X20 Y20 F1000

N20 G91

N25 G1 X10

N30 X5 Y-5

N35 Y-5

N40 X-5 Y-3

N45 G01 G90 X0 Y0 F1000

(Bahn 1)

N100 G138 G41 (Direkte Anwahl u. WRK links der Kontur)

N105 G01 X20 Y20 F1000 (Notwendige Ausgleichsbewegung nach G41)

N110 G25 (G25 Geradenübergänge)

N115 G1 G91 X10

N120 X5 Y-5

N125 Y-5

N130 X-5 Y-3

N135 G138 G40 (Direkte Abwahl u. WRK-Abwahl)

N140 G01 G90 X0 Y0 F1000 (Notwendige Ausgleichsbewegung nach G40)

(Bahn 2)

N200 G139 G41 (Indirekte Anwahl u. WRK links der Kontur)

N205 G01 X20 Y20 F1000 (Notwendige Ausgleichsbewegung nach G41)

N210 G25 (G25 Geradenübergänge)

N215 G1 G91 X10

N220 X5 Y-5

N225 Y-5

N230 X-5 Y-3

N235 G139 G40 (Indirekte Abwahl u. WRK-Abwahl)

N240 G01 G90 X0 Y0 F1000 (Notwendige Ausgleichsbewegung nach G40)

(Bahn 3)

N300 G05 G41 (Tangentiale Anwahl u. WRK links der Kontur)

N305 G01 X20 Y20 F1000 (Notwendige Ausgleichsbewegung nach G41)

N310 G25 (G25 Geradenübergänge)

N315 G1 G91X10

N320X5 Y-5

N325 Y-5

N330 X-5 Y-3

N335 G05 G40 (Tangentiale Abwahl u. WRK-Abwahl)

N340 G01 X20 Y20 F1000 (Notwendige Ausgleichsbewegung nach G41)

N999 M30

Beispiel 2 | G138 | G139 | G05
G26 | Bahn 4 | Bahn 5 | Bahn 6

%WZKG26 (Muster Kontur für G26)

N10 G00 G90 T1 D1 X0 Y0 Z0 G17

(Kontur Darstellung)

N15 G01 X20 Y20 F1000

N20 G91

N25 G1 X10

N30 X5 Y-5

N35 Y-5

N40 X-5 Y-3

N45 G01 G90 X0 Y0 F1000

(Bahn 4)

N400 G138 G41 (Direkte Anwahl u. WRK links der Kontur)

N405 G01 X20 Y20 F1000 (Notwendige Ausgleichsbewegung nach G41)

N410 G26 (G26 Kreisübergänge)

N415 G1 G91 X10

N420 X5 Y-5

N425 Y-5

N430 X-5 Y-3

N435 G138 G40 (Direkte Abwahl u. WRK-Abwahl)

N440 G01 G90 X0 Y0 F1000 (Notwendige Ausgleichsbewegung nach G40)

(Bahn 5)

N500 G139 G41 (Indirekte Anwahl u. WRK links der Kontur)

N505 G01 X20 Y20 F1000 (Notwendige Ausgleichsbewegung nach G41)

N510 G26 (G26 Kreisübergänge)

N515 G1 G91 X10

N520 X5 Y-5

N525 Y-5

N530 X-5 Y-3

N535 G139 G40 (Indirekte Abwahl u. WRK-Abwahl)

N540 G01 G90 X0 Y0 F1000 (Notwendige Ausgleichsbewegung nach G40)

(Bahn 6)

N600 G05 G41 (Tangentiale Anwahl u. WRK links der Kontur)

N605 G01 X20 Y20 F1000 (Notwendige Ausgleichsbewegung nach G41)

N610 G26 (G26 Kreisübergänge)

N615 G1 G91X10

N620 X5 Y-5

N625 Y-5

N630 X-5 Y-3

N635 G05 G40 (Tangentiale Abwahl u. WRK-Abwahl)

N640 G01 X20 Y20 F1000 (Notwendige Ausgleichsbewegung nach G41)

N999 M30

Änderung von Werkzeugdaten:

Programmierbeispiel

:

N30 G0 D0 X0 Y0 Z0 G17 (X-Y-Ebene)

N40 G0 D100 X10 Y10 (Anwahl der WLK)

N50 G1 Z0

N60 G0 Z100

N70 G41 (Anwahl der WRK mit Datensatz D100)

N80 G1 Z0

N90 G2 X10 Y10 I-15 (Vollkreis mit Radius 15)

N100 G0 Z100

N110 D2 Z200 (Anderer Korrekturdatensatz, d.h)

(andere Werte für WLK und WRK)

N120 G1 Z0 (Hier erfolgt die Ausgleichs-)

(bewegung der WLK)

N130 G1 X20 Y20 (Ausgleichsbewegung der WRK)

N140 G02 X10 Y10 I-15 (Die WRK wird jetzt mit Datensatz)

(D2 durchgeführt)

N150 G0 Z100

N160 G40 (Abwahl der WRK)

N170 X0

:

Dynamische Änderung des Werkzeugradius:

Eine weitere Möglichkeit, den Werkzeugradius zu ändern, ist über die Zuweisung durch Variablen gegeben (s. a. Kap. 0). Dadurch kann z.B. die Abnutzung von Schleifwerkzeugen während der Verfahrsätze berücksichtigt werden.

Programmierbeispiel

N00 G1 G90 X0 D6 F5

N10 G41 G26 (Anwahl WRK)

N20 X0 Y250 (Startpunkt)

N30 V.P.VERSCHLEISS = 0.010

N100 $FOR V.P.LAUF = 0,100,10 (Schleifzyklus)

N110 X300

N120 Y200

N130 X0

N140 Y250 (Werkzeugradius wird immer kleiner)

N150 V.G.WZ_AKT.R = V.G.WZ_AKT.R  V.P.VERSCHLEISS

N160 $ENDFOR

N200 G40 X300 (Abwahl WRK)

N999 M30

Mehr:

button Direkte/ indirekte Anwahl (G41/G42) der WRK

button Lotrechte An- und Abwahl (G237) der WRK

button Inneneckanwahl (G238) der WRK

button Direkte An-/Abwahl (G239) der WRK ohne Satz

button Generierung von Korrektursätzen

button Verhalten bei Konturwechsel

button Ausfahrsätze bei Abwahl (G40) der WRK

button Tangentiale An- und Abwahl der WRK

button Grenzen der WRK

button Programmierbare Zusatzoptionen


Direkte/ indirekte Anwahl (G41/G42) der WRK

Bei direkt oder indirekt angewählter WRK wird mit dem nachfolgenden Verfahrsatz im NC-Programm in der angewählten Korrektur-Ebene ein Anfahrsatz generiert.

Anfahrsätze können nur bei linearen Verfahrsätzen, d.h. bei den Kontur-kombinationen:

Gerade - Gerade

Gerade - Kreis

Eine Anwahl der WRK bei einer Konturkombination

Kreis - Gerade

Kreis - Kreis

führt zu einer Fehlermeldung.

Bei der WRK-Anwahl kann mit G138 neben der Standardanfahrstrategie (indirekte Anwahl der WRK) eine alternative Anfahrstrategie (direkte Anwahl der WRK) angewählt werden.

Die folgenden Bilder zeigen alle möglichen Anfahrsätze bei den zugelassenen Konturübergängen. Dargestellt sind jeweils zwei NC-Sätze N10 und N20 für die drei relevanten Konturübergangswinkel.

Kombinationstyp 1: 0° < ß ≤ 180° | Kombinationstyp 2: 0° < ß ≤ 180°
Kombinationstyp 1: 180° < β ≤ 270° | Kombinationstyp 2: 180° < ß ≤ 270°
Kombinationstyp 1: 270° < ß ≤ 360° | Kombinationstyp 2: 270° < ß ≤ 360°

Abbildung 12-3: Beispiele für Anfahrsätze bei der indirekten Radiuskorrektur mit Übergangsgeraden

Kombinationstyp 1: 0° < ß ≤ 180° | Kombinationstyp 2: 0° < ß ≤ 180°
Kombinationstyp 1: 180° < ß ≤ 270° | Kombinationstyp 2: 180° < ß ≤ 270°
Kombinationstyp 1: 270° < ß ≤ 360° | Kombinationstyp 2: 270° < ß ≤ 360°

Abbildung 12-4: Beispiele für Anfahrsätze bei der indirekten Radiuskorrektur mit Übergangskreisen

Kombinationstyp 1: 0° < ß ≤ 180° | Kombinationstyp 2: 0° < ß ≤ 180°
Kombinationstyp 1: 180° < ß ≤ 270° | Kombinationstyp 2: 180° < ß ≤ 270°
Kombinationstyp 1: 270° < ß ≤ 360° | Kombinationstyp 2: 270° < ß ≤ 360°

Abbildung 12-5: Beispiele für Anfahrsätze bei der direkten Radiuskorrektur (unabhängig von der Art der Übergänge)


Lotrechte An- und Abwahl (G237) der WRK

Bei Verwendung des lotrechten An- und Abwahlverfahrens gibt es keine Restriktionen bezüglich der Satzfolge, wie sie bei der direkten oder indirekten An-und Abwahl gelten.

Es ist ebenfalls möglich, die WRK für einzelne Sätze zu aktivieren.

Bei der lotrechten Anwahl wird ein Satz eingefügt, der orthogonal zur programmierten Bahn verläuft. Dieser Satz wird vor dem ersten Bewegungssatz ausgegeben und stellt den Abstand (Werkzeugradius) der korrigierten Bahn zur programmierten Bahn her.

Bei Abwahl der WRK mit lotrechtem Verfahren wird nach dem Abwahlsatz ein Satz eingefügt, der orthogonal zur programmierten Bahn verläuft. Dieser Satz macht den hergestellten Abstand zur programmierten Bahn wieder rückgängig.

Programmierbeispiel

%bsp01.nc

N10 G00 X0 Y0 Z0 G17

N20 X10Y10

N30 V.G.WZ_AKT.R=5 (Radius des Werkzeuges)

N40 G237 (lotrechte Anwahl aktiviert)

; Korrigierte Bahn

N50 G42 (Anwahl der WRK rechts)

N60 G03 X60Y60J50F1000

N70 G01 Y100

N80 G03 X10Y150J50

N90 G40 (Abwahl der WRK)

; Darstellung der originalen Kontur

N100 G00 X0Y0

N110 X10Y10

N120 G03 X60Y60J50F1000

N130 G01 Y100

N140 G03 X10Y150J50

N150 G00 X0Y0

N999 M30

Abbildung 12-6: Programmierbeispiel bsp01.nc

Mehr:

button Technologiefunktionen

button Technologiefunktionalität bei Einzelsatz


Technologiefunktionen

Die Platzierung von Technologiefunktionen im NC-Programm ist bei lotrechter An- und Abwahl von besonderer Bedeutung, da diese den Ausgabezeitpunkt bestimmt.

Bei lotrechter Anwahl ist die Anordnung von Anwahlsatz, Technologiefunktion und des ersten Bewegungssatzes ausschlaggebend für den Ausgabezeitpunkt.

Bei lotrechter Abwahl ist die Anordnung von Technologiefunktion und des letzten zu korrigierenden Bewegungssatzes ausschlaggebend für den Ausgabezeitpunkt.

Die nachfolgenden Beispielprogramme mit den zugehörigen Bildern verdeutlichen dies.

Programmierbeispiel

%bsp02.nc

N10 G00 X0 Y0 Z0 G17

N20 F9000

N30 V.G.WZ_AKT.R=5 (Radius des Werkzeuges)

N40 G237 (lotrechte Anwahl aktiviert)

N50 G91 (Programmierung relativ)

N60 G01 X30 Y10

; Korrigierte Bahn

N50 G41 M7 X20 Y70 (Anwahl der WRK links)

N55 M8

N60 G03 X60 I30

N70 G01 X30

N80 X25 Y-20

N85 M9

N90 G40 (Abwahl der WRK)

N100 G90 X200 Y0 (Programmierung absolut)

N110 X0

; Darstellung der originalen Kontur

N200 G91 (Programmierung relativ)

N210 G01 X30 Y10

N220 X20 Y70

N230 G03 X60 I30

N240 G01 X30

N250 X25 Y-20

N260 G90 X200 Y0 (Programmierung absolut)

N270 G00 X0

N999 M30

Die Ausgabe der Technologiefunktion M9 in nachfolgendem Bild erfolgt unmittelbar vor der Ausgabe des erzeugten lotrechten Abwahlsatzes. Die Technologiefunktion muß zwischen dem letzten zu korrigierenden Satz und der lotrechten Abwahl der WRK platziert werden.

Abbildung 12-7: Programmierbeispiel bsp02.nc

Programmierbeispiel

%bsp03.nc

N10 G00 X0 Y0 Z0 G17

N20 F9000

N30 V.G.WZ_AKT.R=5 (Radius des Werkzeuges)

N40 G237 (lotrechte Anwahl aktiviert)

N50 G91 (Programmierung relativ)

N60 G01 X30 Y10

; Korrigierte Bahn

N50 G41 M7 (Anwahl der WRK links)

N55 M8 X20 Y70

N60 M9 G03 X60 I30

N70 G01 X30

N80 X25 Y-20

N90 G40 (Abwahl der WRK)

N100 G90 X200 Y0 (Programmierung absolut)

N110 X0

; Darstellung der originalen Kontur

N200 G91 (Programmierung relativ)

N210 G01 X30 Y10

N220 X20 Y70

N230 G03 X60 I30

N240 G01 X30

N250 X25 Y-20

N260 G90 X200 Y0 (Programmierung absolut)

N270 G00 X0

N999 M30

Die Technologiefunktion M8 wird nach dem erzeugten Anwahlsatz ausgeführt. Für diese Platzierung ist es zwingend erforderlich, dass sie nicht im selben Satz wie die Anwahl der WRK steht, und dass kein Bewegunggssatz zwischen der Anwahl und der Technologiefunktion steht.

Abbildung 12-8: Programmierbeispiel bsp03.nc

Programmierbeispiel

%bsp04.nc

N10 G00 X0 Y0 Z0 G17

N20 F9000

N30 V.G.WZ_AKT.R=5 (Radius des Werkzeuges)

N40 G237 (lotrechte Anwahl aktiviert)

N50 G91 (Programmierung relativ)

N60 G01 X30 Y10

; Korrigierte Bahn

N50 G41 (Anwahl der WRK links)

N51 M7

N52 M8

N53 M8

N55 X20 Y70

N60 G03 X60 I30

N70 G01 X30

N80 X25 Y-20

N90 G40 (Abwahl der WRK)

N100 G90 X200 Y0 (Programmierung absolut)

N110 X0

; Darstellung der originalen Kontur

N200 G91 (Programmierung relativ)

N210 G01 X30 Y10

N220 X20 Y70

N230 G03 X60 I30

N240 G01 X30

N250 X25 Y-20

N260 G90 X200 Y0 (Programmierung absolut)

N270 G00 X0

N999 M30

Abbildung 12-9: Programmierbeispiel bsp04.nc


Technologiefunktionalität bei Einzelsatz

Programmierbeispiel

%bsp05.nc

N10 G00 X0 Y0 Z0 G17

N20 F9000

N30 V.G.WZ_AKT.R=5 (Radius des Werkzeuges)

N40 G237 (lotrechte Anwahl aktiviert)

N60 G01 X10 Y10

; Korrigierte Bahn

N50 G41 M7 (Anwahl der WRK links)

N55 M8 X70 Y30

N60 M7

N90 G40 (Abwahl der WRK)

N100 G90 X100 Y0

N110 X0

; Darstellung der originalen Kontur

N210 G01 X10 Y10

N220 X70 Y30

N240 X100 Y0

N270 G00 X0

N999 M30

Abbildung 12-10: Programmierbeispiel bsp05.nc

812_start


Inneneckanwahl (G238) der WRK

Inneneckanwahl bedeutet, dass die WRK an einem Inneneck einer geschlossenen Kontur angewählt werden soll.

Im Zusammenhang mit der Inneneckwahl werden folgende Bezeichnungen verwendet:

q Anfahrsatz: linearer Bewegungssatz, der vom Punkt der Anwahl ausgeht

q 1.Bewegungssatz: Bewegungssatz, der vom Bewegungsverlauf an den Anfahrsatz anknüpft, es ist auch der 2.Bewegungssatz nach der Anwahl der WRK mit Bewegungsinformationen

q letzter Bewegungssatz: letzter Bewegungssatz vor der Abwahl der WRK mit Bewegungsinformationen

Programmierbeispiel

Bei einer sternförmigen Kontur soll an einem spitzen Inneneck die WRK angewählt werden.

%musterstern.nc

N1 G74 X1Y2Z3

N2 G17 G00 X0Y0Z0 G90

N4 F10000

(Kontur Darstellung)

N100 G01 X0 Y100

N110 X-20 Y20

N120 X-100 Y0

N130 X-20 Y-20

N140 X0 Y-100

N150 X20 Y-20

N160 X100 Y0

N170 X20 Y20

N180 G01 X0 Y100

N200 G00 X0Y0

( Bahndarstellung )

N210 G238 ( Inneneckanwahl aktiviert )

N220 V.G.WZR = 10 ( Werkzeugradius festlegen )

N230 G41 ( Anwahl der WRK links der Kontur)

N240 G01 X0 Y100 ( Anfahrsatz )

N310 X-20 Y20

N320 X-100 Y0

N330 X-20 Y-20

N340 X0 Y-100

N350 X20 Y-20

N360 X100 Y0

N370 X20 Y20

N380 G01 X0 Y100

N390 G40 ( Abwahl der WRK )

N400 G00 X0Y0

N999 M30

Bemerkung:

Der Anwahlbefehl G41erfolgt am Punkt P1, der Punkt P2 ist der Endpunkt des ersten Linearsatz nach G41 und muss gleichzeitig der Zielpunkt des letzten Bewegungssatzes vor G40 sein.

Die äußere (bzw. blaue) Linie zeigt die programmierte Kontur, die innere (bzw. rote) Linie zeigt den Verlauf des Werkzeuges.

Geschlossene Kontur bedeutet, dass der Endpunkt des letzten Bewegungssatzes vor der Abwahl der WRK und der Endpunkt des Linearsatzes nach der Anwahl identisch sind.

Für den Satzübergang zwischen dem letzten und dem ersten Bewegungssatz der Kontur gibt es weder beim Übergangswinkel noch bei den Satzkombinationen Einschränkungen.

Hinweis:

Nach dem programmierten G40 zur Abwahl der WRK erfolgt beim nachfolgenden Bewegungssatz keine Überwachung auf Konturverletzung

Mehr:

button Einschränkungen der Inneneckanwahl


Einschränkungen der Inneneckanwahl

q Die programmierte Kontur muss geschlossen sein.

q Der letzte Bewegungssatz darf kein Vollkreis sein.

q Der erste Bewegungssatz muss ein Linearsatz sein, der erste Bewegungssatz nach der Abwahl der WRK ebenso.

q Der Punkt P1 muss zu allen Elementen der Kontur mindestens den Abstand des Werkzeugradius haben.

q Der erste Bewegungssatz darf kein Konturelement kreuzen, mit Ausnahme des ersten und des letzten Bewegungssatzes.

q Ein Wechsel der Anwahlseite ist im angewählten Zustand nicht zulässig.

q Änderungen am Werkzeugradius sind im angewählten Zustand nicht zulässig.

q Die Anwahlseite der WRK muss von der Position der Anwahl so gewählt werden, dass das Werkzeug die programmierte Kontur nicht kreuzt.

q Der eingeschlossene Winkel des ersten und des zweiten Bewegungssatzes nach der Anwahl darf 180 Grad nicht übersteigen.

Ursache für die Winkeleinschränkung:

Bei obiger Grafik soll die WRK rechts der Kontur angewählt werden, ab einem Übergangswinkel zwischen dem letzten und dem ersten Satz der Kontur von über 180 Grad wird der erste Punkt der äquidistanten Bahn mit der direkten Anwahlmethode bestimmt. Dies ist P3. Die Grafik verdeutlicht, dass die direkte Verbindung P1 zu P3 die in rot gezeichnete Kontur verletzt.

Der in der Grafik mit Startwinkel bezeichnete Winkel darf maximal 180 Grad betragen um die Kontur nicht zu beschädigen.Der alternativ eingezeichnete Anwahlpunkt P1* verhindert diese Konturbeschädigung.

Bei Verletzung einer der Einschränkungen wird ein entsprechender Fehler ausgegeben.

812_end


Direkte An-/Abwahl (G239) der WRK ohne Satz

Bei gesetztem G239 erfolgt die Anfahrbewegung der WRK analog zu G138 (direkt).

Die Abwahl erfolgt bei G40. Hierbei wird die WRK abgewählt, indem die Koordinaten des letzten äquidistanten Punktes als neue aktuelle Position übernommen werden. Ein nachfolgender Bewegungssatz zum Abbau des Werkzeugradius ist nicht erforderlich.

Programmierbeispiel

%G239.nc

N010 G239 G25 (WRK Mode und Übergangsart)

N020 V.G.WZ_AKT.R =10

N030 G0 X0 Y0 Z0 F10000

N040 G41 G01 X10 Y20 (WRK Anwahl)

N050 G1 X50

N060 G1 X60 Y30

N070 G1 X70

N080 G40 (WRK Abwahl)

N090 G0 X70 Y35

N100 G0 X80

N110 M30


Generierung von Korrektursätzen

Die Erzeugung von Korrektursätzen unterliegt keinen Restriktionen bezüglich der NC-Satzfolge, wie sie bei der direkten oder indirekten WRK-Anwahl gelten. Für die Berechnung von Konturübergängen zwischen den programmierten NC-Sätzen wird jeweils der nächste zum gerade aktuellen Satz herangezogen.

Der Konturübergang erfolgt standardmässig auf Geraden (G25)  optional auf Kreisbögen (G26)  mit der Möglichkeit zur Geschwindigkeitsanpassung (G10/G11).

Die folgende Tabelle, sowie die ergänzenden Bilder zeigen alle möglichen Konturübergänge, wobei beide möglichen Übergänge (lineare bzw. zirkulare Zwischensätze) dargestellt werden.

Einfügen von Sätzen durch die WRK LIN: Linearsatz, ZIR: Zirkularsatz G25: Einfügen von Übergangsgeraden G26: Einfügen von Übergangskreisen (2 LIN : Die WRK fügt am Übergang 2 Linearsätze ein).
 | Winkelbereich
 | 0° bis 180° |  | 180° bis 270° |  | 270° bis 360°
progr. Satzfolge | G25 | G26 | G25 | G26 | G25 | G26
LIN-LIN | 0 | 0 | 0 | 1 ZIR | 1 LIN | 1 ZIR
LIN-ZIR / ZIR-LIN | 0 | 0 | 1 LIN | 1 ZIR | 2 LIN | 1 ZIR
ZIR-ZIR | 0 | 0 | 2 LIN | 1 ZIR | 3 LIN | 1 ZIR

Abbildung 12-11: Beispiel für Konturübergang auf Geraden bei Satzfolge Linear- Linear

Abbildung 12-12: Beispiel für Konturübergang auf einem Kreisbogen bei Satzfolge Linear-Linear

Kombinationstyp 1: 0° < ß ≤ 180°, G41 | Kombinationstyp 3: 0° < ß ≤ 180°, G41
Kombinationstyp 2: 0° < ß ≤ 180°, G41 | Kombinationstyp 4: 0° < ß ≤ 180°, G41

Abbildung 12-13: WRK-Übergänge: Kombinationsfälle für 0° < ß ≤ 180 ° (unabhängig von G25 bzw. G26, da keine Korrektursätze eingefügt werden)

Kombinationstyp 1: 180° < β ≤ 270°, G41 | Kombinationstyp 3: 180° < β ≤ 270°, G41
Kombinationstyp 2: 180° < β ≤ 270°, G41 | Kombinationstyp 4: 180° < β ≤ 270°, G41

Abbildung 12-14: WRK-Übergänge: Kombinationsfälle für 180° < ß ≤ 270° mit linearen Zwischensätzen

Kombinationstyp 1: 270° < ß ≤ 360°, G41 | Kombinationstyp 3: 270° < ß ≤ 360°, G41
Kombinationstyp 2: 270° < ß ≤ 360°, G41 | Kombinationstyp 4: 270° < ß ≤ 360°, G41

Abbildung 12-15: WRK-Übergänge: Kombinationsfälle für 270° < ß ≤ 360° mit linearen Zwischensätzen

Kombinationstyp 1: 180° < β ≤ 270° , G41, G26 | Kombinationstyp 3: 180° < β ≤ 270° , G41, G26
Kombinationstyp 2: 180° < β ≤ 270° , G41, G26 | Kombinationstyp 4: 180° < β ≤ 270° , G41, G26

Abbildung 12-16: WRK-Übergänge: Kombinationsfälle für 180° < ß ≤ 270° mit kreisförmigen Zwischensätzen

Kombinationstyp 1: 270° < ß ≤ 360°, G41, G26 | Kombinationstyp 3: 270° < ß ≤ 360°, G41, G26
Kombinationstyp 2: 270° < ß ≤ 360°, G41, G26 | Kombinationstyp 4: 270° < ß ≤ 360°, G41, G26

Abbildung 12-17: WRK-Übergänge: Kombinationsfälle für 270° < ß ≤ 360° mit kreisförmigen Zwischensätzen


Verhalten bei Konturwechsel

Ein direkter Konturwechsel z.B. von G41 nach G42 ist ohne explizite Abwahl (G40) der WRK möglich. Der Konturwechsel entspricht dem einer WRK-Ab- und Anwahl. Der Konturwechsel darf wie bei den Ausfahr- und Anfahrsätzen nur bei linearen NC-Sätzen ausgeführt werden. Direkt vor und nach dem Konturwechsel sind auch Zirkularsätze erlaubt.

Wird beim Konturwechsel ein Zirkularsatz programmiert, so wird eine Warnung ausgegeben und der Zirkularsatz in einen Linearsatz umgewandelt.

Programmierbeispiel

N05 G01 Y10 F100 G41 V.G.WZR=2 (Linearsatz mit WRK-Anwahl links der)

(Kontur )

N10 X20 Y25

N20 X40 G42 (Linearsatz mit WRK-Anwahl rechts der)

(Kontur)

N30 X60 Y10

N40 X0 Y0 G40 (Abwahl der WRK)

N50 M30

Abbildung 12-18: Beispiel eines Anwahlwechsels ohne Abwahl


Ausfahrsätze bei Abwahl (G40) der WRK

Ausfahrsätze sind wie Anfahrsätze nur bei linearen Verfahrsätzen möglich, d.h. bei den Konturübergängen Gerade  Gerade und Kreis  Gerade. Bei der Generierung der Ausfahrsätze sind zwei unterschiedliche Ausfahrstrategien möglich. Die standardseitigen Ausfahrsätze sind im folgenden Bild dargestellt. Die alternative Ausfahrstrategien werden mit G138 angewählt (G138 steht dann gemeinsam mit G40 in einem Satz und sind im darauffolgenden Bild dargestellt.

Kombinationstyp 1: 0° < ß ≤ 180° | Kombinationstyp 2: 0° < ß ≤ 180°
Kombinationstyp 1: 0° < ß ≤ 180° | Kombinationstyp 2: 0° < ß ≤ 180°
Kombinationstyp 1: 0° < ß ≤ 180° | Kombinationstyp 2: 0° < ß ≤ 180°

Abbildung 12-19: Ausfahrsätze der WRK ohne G138

Kombinationstyp 1: 0°<ß ≤ 180° | Kombinationstyp 2: 0°<ß ≤ 180°
Kombinationstyp 1: 180°<ß ≤ 270° | Kombinationstyp 2: 180°<ß ≤ 270°
Kombinationstyp 1: 270°<ß ≤ 360° | Kombinationstyp 2: 270°<ß ≤ 360°

Abbildung 12-20: Ausfahrsätze der WRK mit G138 (alternative Ausfahrstrategie)


Tangentiale An- und Abwahl der WRK

Bei der direkten An-/Abwahl der WRK entsteht i.a. ein Knick in der Bahnkontur bei Bearbeitungsbeginn. Bei Winkeln größer 180° wird zudem die Kontur des auf die Anwahl folgenden und des vor der Abwahl liegenden Satzes verletzt.

Zur Vermeidung dieser Konturverletzungen bei direkter An-/Abwahl, sowie zur Verringerung des auftretenden Ruckes an Knickpunkten auf der Trajektorie, dient das tangentiale Ein- und Ausfahren.

G05 muß in Verbindung mit G40, G41, G42 im gleichen Satz programmiert werden. Daraus wird abgeleitet, ob ein tangentialer Übergang am Anfang oder am Ende der Kontur stattfinden soll.

Vom momentanen Standpunkt aus wird das nächste Konturelement G01, G02,.. tangential im Kreis mit programmiertem Vorschub angefahren; ggf. muß eine Vorschubanpassung mit G10/G11 erfolgen.

G05 in Verbindung mit G41 oder G42 bewirkt ein tangentiales Einfahren am Konturanfang, G05 mit G40 bei aktivem G41/G42 ein tangentiales Ausfahren am Konturende. Damit wird der An-/Abwahlsatz in einen Zirkularsatz umgewandelt.

Die Bewegungssätze, die durch die G05-Funktion bei der An- und Abwahl der WRK ausgelöst werden, sind in Abbildung 12-15 und Abbildung 12-16 verdeutlicht. Insgesamt werden vier Verläufe dargestellt, die sich bei gleicher Programmierung durch unterschiedliche Startpunkte (P1,P1') ergeben.

Tangentiale Anwahl:

Der Anwahlpunkt (AnP) wird wie bei der konventionellen direkten Anwahl berechnet. Anhand der Orientierung des ersten angewählten Satzes und der Lage des Startpunktes wird die Drehrichtung des Zirkularanwahlsatzes festgelegt. Der Kreismittelpunkt (MP) ergibt sich aus dem Schnittpunkt der Mittelsenkrechten vom Startpunkt (P1 bzw. P1') und Anwahlpunkt (AnP) und der Geraden Startpunkt des Anwahlsatzes (P2)  Anwahlpunkt (AnP).

Tangentiale Abwahl:

Der letzte korrigierte Endpunkt (AbP), im folgenden letzter Anwahlpunkt genannt, wird wie bei der konventionellen direkten Abwahl berechnet. Anhand der Orientierung des letzten angewählten Satzes und der Lage des Abwahlpunktes (P4 bzw. P4') wird die Drehrichtung des Zirkularabwahlsatzes festgelegt. Der Kreismittelpunkt ergibt sich aus dem Schnittpunkt der Mittelsenkrechten der Verbindungslinie des letzten Anwahlpunktes (AbP) und des Abwahlpunktes (P4 bzw. P4') und der Geraden letzter Anwahlpunkt (AbP)  letzter vor der Abwahl programmierter Punkt (P3).

Abbildung 12-21: Tangentiale An- und Abwahl der WRK

Abbildung 12-22: Tangentiale An- und Abwahl der WRK


Grenzen der WRK

Für die Berechnung von Zwischensätzen betrachtet die WRK den aktuellen und zwei wietere relevante NC-Sätze. "Relevant" bedeutet hier: Verfahrsätze in der angewählten Hauptebene, in der die Werkzeugradiuskorrektur erfolgt. "Nicht-relevant" wären z.B. Techno-Sätze, Zeitverzögerungen (G04) oder Verfahrbewegungen mit einer Achse senkrecht zur Hauptebene. Wenn innerhalb dieser 3 Sätze ein Zwischensatz errechnet wird, der in entgegengesetzter Richtung der programmierten Kontur verlaufen würde, so wird dadurch eine Konturverletzung erkannt. In Abbildung 12-24 ist dazu ein Beispiel dargestellt.

Wird eine Engstelle durch einen oder mehrere Sätze bewirkt, die weiter als 3 Sätze vom aktuellen Satz entfernt ist, so wird diese Konturverletzung von der WRK nicht erkannt. In Abbildung 12-25 ist dazu ein Beispiel dargestellt.

Abbildung 12-23: Beispiel für erkannte Konturverletzung

Abbildung 12-24: Beispiel für nicht erkannte Konturverletzung

812_start


Programmierbare Zusatzoptionen

Der folgende Befehl ermöglicht die Programmierung zusätzlicher optionaler WRK-Funktionen.

Nach der Anwahl sind die optionalen WRK-Funktionen bis zum Hauptprogrammende bzw. RESET wirksam,- sie können aber jederzeit auch im NC-Programm wieder abgewählt werden.

#TRC [ [ CONV_CIR_TO_LIN<expr> ] [ KERF_MASKING<expr> ] [ REVERSE<expr> ]

[ IGNORE_CONT_DAMAGE<expr>] [ REMOVE_MASKED_BLOCKS <expr> ] ]

[ EXT_ANGLE_BLOCK_INTERSECTION<expr>] ]

CONV_CIR_TO_LIN<expr> Mit diesem Parameter können Zirkularsätze, bei denen der Werkzeugradius größer als der programmierte Radius des Kreiselements ist, direkt in Linearsätze konvertiert werden. Voraussetzung für die Wirksamkeit ist, dass der Konturausblendprozesse aktiv ist (G141).

Wert | Bedeutung
0 | Keine Konvertierung von Zirkularsätzen (Default).
1 | Konvertierung von Zirkularsätzen in Linearsätze.

KERF_MASKING<expr> Mit diesem Parameter wird explizit das Ausblenden von Kerben angewählt.

Wert | Bedeutung
0 | Kerbfunktionalität deaktiviert (Default).
1 | Kerbfunktionalität aktiviert.

Beim Konturausblenden wird diese WRK-Option implizit mit aktiviert bzw. deaktiviert.

Die Funktionsweise des Kerbausblendens basiert auf der Verschiebung eines programmierten Punktes, sobald festgestellt wird, dass mit einem Werkzeug eine Kerbe nicht fahrbar ist.

REVERSE<expr> Dieser Parameter erlaubt das direkte Wechseln (G41<->G42) der Anwahlseite bei reversierenden Bewegungen bei aktiver WRK.

Wert | Bedeutung
0 | Direkter Wechsel der Anwahlseite deaktiviert (Default).
1 | Direkter Wechsel der Anwahlseite aktiviert.

Der Wechsel der Anwahlseite erfolgt stets im Umkehrpunkt. Voraussetzung hierfür sind bei Linearsätzen exakt reversierende Bewegungen.

Bei Zirkularsätzen müssen die Tangenten beider Kreiselemente im Umkehrpunkt identisch und die Kreisrichtungen beider Kreise unterschiedlich sein.

IGNORE_CONT_DAMAGE<expr> Mit diesem Parameter werden explizit Konturverletzungen ignoriert. Voraussetzung für die Wirksamkeit ist, dass der Konturausblendprozess aktiv ist (G141).

Wert | Bedeutung
0 | Kein Ignorieren der Konturverletzungen (Default).
1 | Ignorieren der Konturverletzungen.

REMOVE_MASKED_BLOCKS <expr> Mit diesem Parameter werden erkannte Konturschleifen im Konturausblenden gelöscht. Die beiden Bewegungssätze zur Ermittlung der geschlossenen Schleife werden ebenfalls gelöscht.

Reine Bewegungen von Mitschleppachsen bleiben erhalten, dazu zählt aus Sicht der WRK auch eine Bewegung der 3. Hauptachse.

Der Parameter ist speziell für Konturen mit sehr kurzen Sätzen geeignet.

Voraussetzung für die Wirksamkeit ist, dass die Konturausblendung aktiv ist (G141).

Wert | Bedeutung
0 | Konturschleifen werden nicht gelöscht (Default).
1 | Konturschleifen werden gelöscht.

Die Bewegungssätze in der Konturschleife werden komplett gelöscht. In den Bewegungssätzen erfolgt keine Prüfung, ob zusätzlich Bewegungen in den Mitschleppachsen vorhanden sind.

EXT_ANGLE_BLOCK_INTERSECTION<expr> Mit diesem Parameter kann der Grenzwert für den Übergangswinkel zwischen zwei Bewegungssätzen von 180° auf 181° verändert werden. Dies verhindert die Erzeugung zusätzlicher WRK-Übergangsätze in diesem Winkelbereich.

Der Grenzwert selbst kann nicht modifiziert werden.

Wert | Bedeutung
0 | Grenzwert für den Übergangswinkel ist 180° (Default).
1 | Grenzwert für den Übergangswinkel ist 181°.

Programmierbeispiele

Konvertierung von Zirkularsätzen:

N1000 V.G.WZ_AKT.R=1 (Radius des Werkzeuges)

N2300 G140 (Deaktivieren Konturausblenden)

....

N2450 #TRC [CONV_CIR_TO_LIN=1] (Aktivierung der Option)

N2500 G41 (Anwahl WRK links der Kontur)

...

(Kreiselement mit Radius kleiner des Werkkzeugradius)

N2550 G03 X3557.83 Y-577.61 I0.00 J0.60

(keine unmittelbare Konvertierung zu einem Linearsatz)

...

N3000 G141 (Aktivieren Konturausblenden)

...

(Kreiselement mit Radius kleiner des Werkkzeugradius)

N3550 G03 X3557.83 Y-577.61 I0.00 J0.60

(unmittelbare Konvertierung zu einem Linearsatz)

...

N3600 G40 (Abwahl der WRK)

Direkter Wechsel der Anwahlseite:

...

N090 G90

N100 #TRC[REVERSE=1]

N110 G00 X0 Y0

N120 G01 X100 Y100

N130 G41 G01 X150 (Anwahl der WRK links der Kontur)

N140 G01 X250

N150 G01 Y200 (Umkehrpunkt)

N160 G42 (Wechsel der Anwahlseite, jetzt rechts der Kontur)

N170 G01 X100

N180 G01 X100 Y150

N160 G40 G01 X0

N170 G01 Y0

...


Variablen und Variablenrechnung

Unter Variablen sind hier zum einen interne Daten des Decoders mit einer festen Namenszuweisung zu verstehen, zum anderen selbst zu definierende Variablen, deren Bezeichnung im wesentlichen frei wählbar ist. Mit Ausnahme der externen Variablen (V.E...) ist deren Gültigkeit und Verwendbarkeit ausschließlich auf den jeweiligen NC-Kanal begrenzt.

Die allgemeine Syntax lautet:

V. < NAME_1>. < NAME_2>. < NAME_3>.{<NAME_n>.}

V . zeigt den Variablenzugriff an

<NAME_1> . Bestimmt die globale Datenbezeichnung:

"A." steht für achsspezifische Variablen,

"SPDL." steht für spindelspezifische Variablen,

"G." steht für achsübergreifende, global gültige Variablen,

"E." steht für externe Variablen,

"P." steht für eigendefinierte, nicht programmübergreifende Variablen,

"L." steht für eigendefinierte, nicht programmübergreifende, lokale
Variablen,

"S." steht für eigendefinierte, programmübergreifende Variablen.

<NAME_2> . gibt den Datennamen an

<NAME_3> . gibt z.B. den Index, wenn mehrere gleiche Daten zu unterscheiden sind.

Programmierung der Achskennung

Die letzte Kennung der achsspezifischen und einiger gruppenspezifischen Variablen stellt die Achskennung dar. Dabei sind die Bezeichnungen

".X" bzw. "[0]",

".Y" bzw. "[1]",

".Z" bzw. "[2]"

jeweils wahlweise zu verwenden, wenn im Kanalparametersatz der Achse mit dem Index 0 der Name X, der Achse mit dem Index 1 der Name Y und der Achse mit dem Index 2 der Name Z zugewiesen ist.

Beispiel: Absoluter Wert der X-Achse:

V.A.ABS.X oder V.A.ABS[0]

Analog sind bei spindelspezifischen Variablen die Spindelnamen bzw. entsprechenden Indizes gemäß dem Kanalparametersatz zu verwenden.

".S" bzw. "[0]",

".S2" bzw. "[1]", usw.

Beispiel: Logische Achsnummer der S-Spindel:

V.SPDL.LOG_AX_NR.S oder V.SPDL.LOG_AX_NR[0]

Programmierbeispiel

Die Zeilen N20/N30 bewirken jeweils eine Geradeninterpolation in X-Richtung um den Wert der Variablen V.A.BZP.Y, also der Bezugspunktverschiebung in Y-Richtung.

N10 G92 X0 Y40 Z0 (Bezugspunktverschiebung)

N20 G91 G01 F1000 XV.A.BZP.Y

N30 XV.A.BZP[1] (hier: Achsindex 1 == Y )

N40 M30

Von allen Variablen kann der Inhalt gelesen werden, einigen kann auch ein Wert zugewiesen werden. Die Zugriffsart ist für jede Variable fest vorgegeben; im allgemeinen ist nur ein lesender Zugriff zugelassen, da bei den meisten Variablen ein schreibender Zugriff nicht sinnvoll ist.

Programmierbeispiel

Hier wird dem 2. Nullpunktverschiebungsvektor für die Achse mit dem Index 1 der Wert 100 zugewiesen:

N10 V.G.NP[2].V[1] = 100

...

Mit der EXIST-Funktion (siehe Kapitel 2.6.1.3) kann geprüft werden, ob eine Variable überhaupt verfügbar ist.

Programmierbeispiele

Durch die EXIST-Abfrage auf eine achspezifische Variable wird geprüft, ob eine bestimmte Achse überhaupt im NC-Kanal vorhanden ist:

...

N10 G90 Y0

N20 $IF EXIST[V.A.LOG_AX_NR.X] == TRUE

N30 X-10 (X-Achse ist im Kanal, Position 10 anfahren)

N40 $ELSE

N50 #CALL AX [X,1,0] (X-Achse nicht im Kanal, zuerst anfordern)

N60 $ENDIF

...

M30

Vor dem Zugriff auf eine externe Variable wird zunächst geprüft, ob überhaupt zugegriffen werden kann:

...

N10 G90 Y0

N20 $IF EXIST[V.E.POS_1] == TRUE

N30 XV.E.POS_1 (Fahre X-Achse auf Position POS_1)

N40 $ELSE

N50 #MSG ["V.E.POS_1 nicht vorhanden!"] (Meldung ausgeben und anhalten)

N55 M0

N60 $ENDIF

...

M30

Mehr:

button Achsspezifische Variablen (V.A.)

button Spindelspezifische Variablen (V.SPDL.)

button Globale Variablen (V.G.)

button Eigendefinierte Variablen

button Externe Variablen (V.E.)


Achsspezifische Variablen (V.A.)

Die Kennung für achsspezifische Variablen ist "V.A. ...".

V.A.-Variablen können für Linear- und Rundachsen, jedoch nicht für Spindeln, programmiert werden.

V.A.<var_name> | Bedeutung |  | Datentyp |  | Einheit der Ein/ Ausgabe | Erlaubter Zugriff L esen / Schreiben
MENT.X | Mentale Koordinate des vorhergehenden NC-Satzes (siehe Kapitel Spiegeln G20-G23) |  | Real |  | [mm] [Inch] | L
PROG.X | Programmierte Koordinate des vorhergehenden NC-Satzes. Bei aktiver Konturrotation (#ROTATION) liefert die Variable den auf die Maschinenachsen abgebildeten Koordinatenwert. |  | Real |  | [mm] [Inch] | L
ABS.X | Absolute Koordinate des vorhergehenden NC-Satzes bzw. aktuelle absolute Koordinate nach NC-Befehl #CHANNEL INIT jeweils im momentan aktiven Koordinatensystem |  | Real |  | [mm] [Inch] | L
ACT_POS.X | Aktuelle Achsposition im momentanen Koordinatensystem ohne Verschiebungen. |  | Real |  | [mm] [Inch] | L
-SWE.X | Aktuell wirksamer negativer Softwareendschalter |  | Real |  | [mm] [Inch] | L
+SWE.X | Aktuell wirksamer positiver Softwareendschalter |  | Real |  | [mm] [Inch] | L
-SWE_MDS.X | Konfigurierter negativer Softwareendschalter (gemäß Maschinenparameter [2] -10) |  | Real |  | [mm] [Inch] | L
+SWE_MDS.X | Konfigurierter positiver Softwareendschalter (gemäß Maschinenparameter [2]-11) |  | Real |  | [mm] [Inch] | L
REF.X | Position Referenzpunkt (wird erst nach erfolgter RPF belegt) |  | Real |  | [mm] [Inch] | L
BZP.X | Bezugspunktverschiebung |  | Real |  | [mm] [Inch] | L
PZV.X | Platzversatz |  | Real |  | [mm] [Inch] | L
MESS.X | Gibt nach erfolgter Meßfahrt die achsspezifische Meßkoordinate (Messwert) an, dabei sind alle Verschiebungen eingerechnet (siehe Programmierbeispiel). |  | Real |  | [mm] [Inch] | L
MOFFS.X | Meßoffset |  | Real |  | [mm] [Inch] | L
MERF.X | Meßfahrt erfolgt? Wenn ja, dann 1 |  | Boolean |  | 0 , 1 | L
MEIN.X | Eingerechneter Meßoffset |  | Real |  | [mm] [Inch] | L
RERF.X | Referenzpunktfahrt erfolgt? Wenn ja, dann 1 |  | Boolean |  | 0 , 1 | L
SOFFS.X | Verfahrweg während Handbetrieb. Nur sinnvoll in Verbindung mit NC-Befehl #GET IPO OFFSET. |  | Real |  | [mm] [Inch] | L
MODE.X | Aktueller Achsmode |  | Integer |  | - | L
MODULO_VALUE.X | Modulobereich |  | Real |  | [Grad] | L
LOG_AX_NR.X | Logische Achsnummer einer Achse |  | Integer |  | - | L
AX_LIST_NAME.X | Konfigurierter Achsname (gem. Masch.parameter [2]-18) |  | String |  | - | L
MIRROR.X | Spiegelstatus der Achse (1: keine Spiegelung -1: Spiegelung) | Integer |  | - |  | L
WCS.X MCS.X | Umrechnung zwischen Maschinenkoordinaten(MCS) und Werkstückkoordinaten (WCS).Nur sinnvoll in Verbindung mit den NC-Befehlen #WCS TO MCS und #MCS TO WCS | Real |  | [mm] [Inch] |  | L/S

Bei Verwendung von Strings zur Achsbezeichnung (z. B. X_SCHLITTEN, s. a. Kap. 3.1) sind diese Achsnamen zur Kennzeichnung der Variablen zu verwenden.

Beispiel: V.A.MENT.X_SCHLITTEN

Programmierbeispiel

Der letzte Satz bewirkt Positionieren in X auf 148 (= 98 + 50) und in Y auf 2

N10 G90 G92 X50

N20 G100 X100 (Meßfahrt, 2mm vor Ziel erfolgt der Meßinterrupt)

N30 G90 G92 X0

N40 XV.A.MESS.X YV.A.MOFFS.X


Spindelspezifische Variablen (V.SPDL.)

Die Kennung für spindelspezifische Variablen ist "V.SPDL. ...".

V.SPDL.<var_name> | Bedeutung | Datentyp | Einheit der Ein/ Ausgabe | Erlaubter Zugriff L esen / Schreiben
LOG_AX_NR.S | Logische Achsnummer der Spindel | Integer | - | L
PLC_CONTROL.S | Ist Spindel eine PLC-Spindel? Wenn ja, dann 1 | Boolean | 0 , 1 | L
NBR_IN_CHANNEL | Anzahl der im NC-Kanal verfügbaren Spindeln | Integer | - | L
M_FCT_FREE | Wie ist die Klassifizierung der M-Funktion M3, M4, M5, M19? Festlegung explizit als Spindel-M-Funktionen: 0 Frei verfügbar für andere Technofunktionen: 1 Achtung: Schreibzugriff bewirkt bleibende Änderung in internen Kanalparameterdaten (P-CHAN-00098) | Boolean | 0 , 1 | L/S

Programmierbeispiel

Vor der Programmierung einer Spindel wird zunächst geprüft, ob diese überhaupt im Kanal bekannt ist:

...

N10 G90 Y0

N20 $IF EXIST[V.SPDL.LOG_AX_NR.S] == TRUE

N30 M3 S1000 (Spindel S mit Drehzahl 1000 U/min.)

N40 $ELSE

N50 #MSG ["Spindel S nicht vorhanden!"] (Meldung ausgeben und anhalten)

N55 M0

N60 $ENDIF

...

M30


Globale Variablen (V.G.)

Die Kennung für achsübergreifende, im Kanal global gültige Variablen ist "V.G. ...".

Für die in manchen V.G-Variablen programmierbare achsspezifische Kennung können wahlweise folgende Schreibweisen verwendet werden (z.B.: Achsversatz für Werkzeug-Nr. j in X-Richtung):

1. V.G.WZ[j].V.X oder

2. V.G.WZ[j].V[0]

V.G.<var_name> | Bedeutung | Datentyp | Einheit der Ein/ Ausgabe | Erlaubter Zugriff L esen / Schreiben
PROG_NR | Nummer des Programms, wenn der Programmname eine Zahl ist | Integer | - | L
SATZ_NR | Die zuletzt programmierte NC-Satz-Nummer | Integer | - | L
PROG_SA | Lokal-Satzart, wenn im NC-Satz keine Änderung mehr folgt | Integer | - | L
MASS_MM | Wenn Maßeinheit [mm], dann 0 | Boolean | 0 , 1 | L
MASS_360 | Wenn Maßeinheit [GRAD], dann 0 | Boolean | 0 , 1 | L
I | I-Koordinate der Kreisprogrammierung. Bei aktiver Mittelpunktskorrektur (G165) Zugriff auf korrigierten Wert | Real | [mm] [Inch] | L
J | J-Koordinate der Kreisprogrammierung. Bei aktiver Mittelpunktskorrektur (G165) Zugriff auf korrigierten Wert | Real | [mm] [Inch] | L
K | K-Koordinate der Kreisprogrammierung. Bei aktiver Mittelpunktskorrektur (G165) Zugriff auf korrigierten Wert | Real | [mm] [Inch] | L
R | Der bei der Kreisinterpolation gefahrene Radius | Real | [mm] [Inch] | L
FEEDRATE | Der zuletzt programmierte Vorschub (F-Wort) | Real | [mm/min], [m/min], [Inch/min] | L
MERR[i] | Korrektur-Offset des Kreismittelpunktes | Real | [mm] [Inch] | L

Die WZ[j]-Variablen ermöglichen den lesenden Zugriff auf die Daten eines beliebigen Werkzeuges. Sie sind sowohl bei einer externen Werkzeugverwaltung (transparenter Zugriff) als auch bei Verwendung einer internen Werkzeugtabelle verfügbar (j entspricht dabei der Werkzeugnummer bzw. dem Index des Werkzeuges aus der Werkzeugliste).

WZ[j].R | Radius des Werkzeuges | Real | [mm] [Inch] | L
WZ[j].L | Länge des Werkzeuges | Real | [mm] [Inch] | L
WZ[j].P[i] | Parameter des Werkzeuges | Real | - | L
WZ[j].V[i] | Achsversaetze des Werkzeuges | Real | [mm] [Inch] | L
WZ[j].ME | Maßeinheit der Werkzeugdaten; wenn [mm], dann 0 | Boolean | 0 , 1 | L
WZ[j].OK | Gültigkennung des Werkzeuges; wenn gültig, dann 1 | Boolean | 0 , 1 | L
WZ[j].SPDL_AX_NR | Logische Achsnummer der zugeordneten Spindel | Integer | - | L
WZ[j].KIN_PARAM[i] | Kinematikparameter des Werkzeuges in interner Einheit | Real | [0.1 µm], [10-4 Grad] | L
WZ[j].KIN_ID | Kinematik-ID des Werkzeuges | Integer | - | L
WZ[j].TYPE | Werkzeugtyp (0: Fräs-WZ 1: Dreh-WZ 2: Schleif-WZ) | Integer | - | L
WZ[j].SRK_ID | Schneidenlage bei einem Drehwerkzeug | Integer | - | L
WZ[j].S_MIN_SPEED | Minimale Drehgeschwindigkeit (WZ-Dynamikdaten) | Real | [U/min] | L
WZ[j].S_MAX_SPEED | Maximale Drehgeschwindigkeit (WZ-Dynamikdaten) | Real | [U/min] | L
WZ[j].S_MAX_ACC | Maximale Beschleunigung (WZ-Dynamikdaten) | Real | [Grad/s2] | L
WZ[j].SISTER_VALID | Gültigkennung des Schwesterwerkzeuges (TOOL-ID) | Boolean | 0 , 1 | L
WZ[j].SISTER | Nummer des gültigen Schwesterwerkzeuges | Integer | - | L
WZ[j].VARIANT_VALID | Gültigkennung des Variantwerkzeuges (TOOL-ID) | Boolean | 0 , 1 | L
WZ[j].VARIANT | Nummer des gültigen Variantwerkzeuges | Integer | - | L

Die "WZ_AKT"-Variablen sowie "T_AKT" und "D_AKT" ermöglichen den Zugriff auf Daten des aktuell angewählten Werkzeuges. Sie sind sowohl bei einer externen Werkzeugverwaltung als auch bei Ver-wendung einer internen Werkzeugtabelle verfügbar.

T_AKT | Nummer des angewählten Werkzeuges | Integer | - | L
D_AKT | Nummer des angewählten Werkzeugdatensatzes | Integer | - | L

Ein Schreibzugriff bewirkt die temporäre Änderung der Daten des Werkzeuges, solange dieses angewählt ist. Die geänderten Daten sind mit der Anwahl eines neuen Werkzeuges (Dxx) oder bei Werkzeugabwahl (D0) verloren!

Ausnahme:

Bei einer externen Werkzeugverwaltung werden die s.g. zusätzlichen Werkzeugparameter (V.G.WZ_AKT.P[i]) mit der Anwahl eines neuen Werkzeuges oder bei Werkzeugabwahl [1] -38 übernommen und gesichert.

WZ_AKT.R | Radius des angewählten Werkzeuges | Real | [mm] [Inch] | L/S
WZ_AKT.L | Länge des angewählten Werkzeuges | Real | [mm] [Inch] | L/S
WZ_AKT.P[i] | Parameter des angewählten Werkzeuges | Real | - | L/S
WZ_AKT.V[i] | Achsversatz des angewählten Werkzeuges | Real | [mm] [Inch] | L/S
WZ_AKT.ME | Maßeinheit des angewählten Werkzeuges; wenn [mm], dann 0 | Boolean | 0 , 1 | L
WZ_AKT.OK | Gültigkennung des angewählten Werkzeuges; wenn gültig, dann 1 | Boolean | 0 , 1 | L
WZ_AKT.SPDL_AX_NR | Logische Achsnummer der zugeordneten Spindel | Integer | - | L
WZ_AKT.KIN_PARAM[i] | Kinematikparameter des angewählten Werkzeuges. Hinweis zum Schreibzugriff: Wert muß in internen Einheiten programmiert sein! | Real | [0.1 µm], [10-4 Grad] | L/S
WZ_AKT.KIN_ID | Kinematik-ID des angewählten Werkzeuges | Integer | - | L
WZ_AKT.TYPE | Werkzeugtyp des angewählten Werkzeuges (0: Fräs-WZ 1: Dreh-WZ 2: Schleif-WZ) | Integer | - | L
WZ_AKT.SRK_ID | Schneidenlage des angewählten Drehwerkzeuges | Integer | - | L
WZ_AKT.S_MIN_SPEED | Minimale Drehgeschwindigkeit (WZ-Dynamikdaten) | Real | [U/min] | L
WZ_AKT.S_MAX_SPEED | Maximale Drehgeschwindigkeit (WZ-Dynamikdaten) | Real | [U/min] | L
WZ_AKT.S_MAX_ACC | Maximale Beschleunigung (WZ-Dynamikdaten) | Real | [Grad/s2] | L
WZ_AKT.SISTER_VALID | Gültigkennung des Schwesterwerkzeuges (TOOL-ID) | Boolean | 0 , 1 | L
WZ_AKT.SISTER | Nummer des gültigen Schwesterwerkzeuges | Integer | - | L
WZ_AKT.VARIANT_VALID | Gültigkennung des Variantwerkzeuges (TOOL-ID) | Boolean | 0 , 1 | L
WZ_AKT.VARIANT | Nummer des gültigen Variantwerkzeuges | Integer | - | L
WZ_AKT.WEAR_RADIUS | Radiusverschleiß bei Radiuskompensation (OTC) | Real | [mm] [Inch] | L
WZ_AKT.WEAR[i] | Verschleiß in Achse <i> bei Längenkompensation (OTC) | Real | [mm] [Inch] | L
WZ_AKT.WEAR_CONST | Verschleißkonstante (OTC) | Real | [0.1 µm/m] | L/S

Alternativ zu V.G.WZ_AKT.P[i] kann mit der Variable V.G.WZ_INFO[i] ebenfalls auf die zusätzlichen Werkzeugparameter zugegriffen werden. Sie ist nur bei einer externen Werkzeugverwaltung verfügbar:

WZ_INFO[i]

Parameter des angewählten Werkzeugs

Real

-

L

WZR | Radius des angewählten Werkzeuges (Alte Syntax) | Real | [mm] [Inch] | L/S
WZL | Länge des angewählten Werkzeuges (Alte Syntax) | Real | [mm] [Inch] | L/S

NP[j].V[i]

Nullpunktverschiebung einer Achse.
Achtung: Schreibzugriff bewirkt bleibende Änderung in internen Nullpunktdaten!

Real

[mm] [Inch]

L/S

812_start

NP[j].ALL | Ansprechen aller Achsen einer Nullpunktverschiebung. Achtung: Schreibzugriff bewirkt bleibende Änderung in internen Nullpunktdaten! | Real | [mm] [Inch] | L/S
NP_AKT.V[i] | Aktuelle (momentan aktive) Nullpunktverschiebung einer Achse | Real | [mm] [Inch] | L/S
NP_AKT.ALL | Ansprechen der aktuellen (momentan aktiven) Nullpunktverschiebungen aller Achsen | Real | [mm] [Inch] | L/S
NP_AKT.IDX | Index der aktuellen (momentan aktiven) Nullpunktverschiebungsgruppe (z.B 0 bei G53, 1 bei G54...) | Integer | - | L
NP_DEFAULT | Index der im Grundzustand wirksamen Nullpunktverschiebungsgruppe nach Hochlauf | Integer | - | L/S
CNC_RELEASE | Buildnummer der CNC-Version [ bis V260] | Integer | - | L

812_end

CNC_CHANNEL | Kanalnummer | Integer | - | L
IPO_COUNT | Systemzeitzähler | Integer | - | L
CS_ACTIVE | CS (#CS...) aktiv? Wenn aktiv, dann TRUE | Boolean | 0 , 1 | L
CS_COUNT | Anzahl aktiver (verketteter) CS | Integer | - | L
ACS_ACTIVE | ACS (#ACS...) aktiv? Wenn aktiv, dann TRUE | Boolean | 0 , 1 | L
ACS_COUNT | Anzahl aktiver (verketteter) ACS | Integer | - | L
TOOL_COMP | Aktive Werkzeugkorrektur (1: RTCP 2: TLC 3: 2.5D ) | Integer | - | L
AKT_PLATZ | Aktueller Platzversatzindex | Integer | - | L

AX_LINK.NR | Aktuelle bzw. zuletzt aktive Koppelgruppennummer | Integer | - | L
AX_LINK.ACTIVE | Achskopplung (#AX LINK...) aktiv? Wenn aktiv, dann 1 | Boolean | 0 , 1 | L

ROT_ACTIVE | Konturrotation (#ROTATION...) aktiv? Wenn aktiv, dann 1 | Boolean | 0 , 1 | L
ROT_ANGLE | Winkel der Konturrotation | Real | [Grad] | L
ROT_CENTER1 | Versatz 1. Hauptachse zum Drehpunkt bei Konturrotation | Real | [mm] [Inch] | L
ROT_CENTER2 | Versatz 2. Hauptachse zum Drehpunkt bei Konturrotation | Real | [mm] [Inch] | L

TIMER[i] | Zählerstand des Timers mit der Nummer i | Integer | [ms] | L
RANDOM | Liefert zufälligen Zahlenwert im Bereich von 0.0 bis 1.0 | Real | - | L
PROG_ABS | Maßsystem, 0: G91 aktiv 1: G90 aktiv | Boolean | 0 , 1 | L
KIN[j].PARAM[i] | Kinematikparameter einer bestimmten Kinematik [j] Hinweis zum Schreibzugriff: Wert muß in internen Einheiten programmiert sein! Achtung: Schreibzugriff bewirkt bleibende Änderung in internen Kanalparameterdaten! | Real | [0.1 µm], [10-4 Grad] | L/S

CNC_RELEASE

Buildnummer der CNC-Version

Integer

-

L

CNC_VERSION.MAJOR | Majorversion der CNC [ab V263.1501] (z.B. 2 bei V263.1501.00) | Integer | - | L
CNC_VERSION.MINOR | Minorversion der CNC [ab V263.1501] (z.B. 63 bei V263.1501.00) | Integer | - | L
CNC_VERSION.BUILD | Buildnummer der CNC-Version [ab V263.1501] (z.B. 1501 bei V263.1501.00) | Integer | - | L
CNC_VERSION.PATCH | Patchnummer der CNC-Version [ab V263.1501] (z.B. 00 bei V263.1501.00) | Integer | - | L

MIRROR_ACTIVE

Spiegelung (G351 X... oder G21, G22, G23) aktiv?
Wenn aktiv, dann 1

Boolean

0 , 1

L

WCS_POSLIMIT_1

WCS_POSLIMIT_2

WCS_POSLIMIT_3

Bewegungsgrenzen in den Hauptachsen im WCS.

Nur sinnvoll in Verbindung mit dem NC-Befehl #GET WCS POSLIMIT

REAL

[mm] [Inch]

L

FILE_OFFSET | Dateiposition des Beginns des NC-Satzes, in dem V.G.FILE_OFFSET programmiert ist | Integer | - | L
FILE_NAME | Dateiname des momentan aktiven NC-Programms | String | - | L
PROG_NAME | Name (%...) des momentan aktiven Haupt- bzw. Unterprogramms (lokal/global) | String | - | L
PATH_NR | Logische Pfadnummer des momentan aktiven NC-Haupt- bzw. globalen Unterprogramms gemäß der Hochlauffliste (P-STUP-00019) | Integer | - | L

TRAFO_ACTIVE | Kinematische Transformation (#TRAFO...) aktiv? Wenn aktiv, dann 1 | Boolean | 0 , 1 | L
HSC_ACTIVE | Freiformflächenbearbeitung (#HSC...) bzw. Splineinterpolation (#SET SPLINE... oder G151) aktiv? Wenn aktiv, dann 1 | Boolean | 0 , 1 | L
TRC_ACTIVE | Werkzeugradiuskorrektur (G41, G42) aktiv? Wenn aktiv, dann 1 | Boolean | 0 , 1 | L
MCS_ACTIVE | Temporärer Übergang in das Maschinenkoordinatensystem (#MCS...) aktiv? Wenn aktiv, dann 1 | Boolean | 0 , 1 | L
BLOCK_SEARCH_ACTIVE | Satzvorlauf aktiv? Wenn aktiv, dann 1 | Boolean | 0 , 1 | L
CONT_MODE_ACTIVE | Polynomüberschleifen (G261) aktiv? Wenn aktiv, dann liefert Variable den Wert der aktuellen Überschleifart: 1 bei Überschleifart 1 (AUTO_DEV) 2 bei Überschleifart 2 (AUTO_VEL) 3 bei Überschleifart 3 (DIST) 4 bei Überschleifart 4 (DEV) 5 bei Überschleifart 5 (POS) 6 bei Überschleifart 6 (DIST_SOFT) 0 bei G260 | Integer | - | L

Die nachfolgenden Variablen ermöglichen den Zugriff auf Daten der in den Kanalparametern definierten M/H-Funktionen.

Stimmen die Synchronisationsart der M/H-Funktion und der Schreibzugriff (S) auf die Vorausgabewerte nicht überein, so wird implizit die Synchronisationsart mit angepaßt.

Die Änderungen bleiben bis zum nächsten Hochlauf erhalten!

Stimmen die Synchronisationsart der M/H-Funktion und der Lesezugriff (L) auf die Vorausgabewerte nicht überein, so wird eine Fehlermeldung ausgegeben.

M_FCT[i].SYNCH | Synchronisationsart einer in den Kanalparametern [1] -3 definierten M-Funktion <i> | Integer | - | L/S
M_FCT[i].PRE_OUTP_PATH | Vorausgabeweg m_pre_output einer in den Kanalparametern [1] -47 definierten M-Funktion <i> vom Typ MEP_SVS | Real | [mm] [Inch] | L/S
M_FCT[i].PRE_OUTP_TIME | Vorausgabezeit m_pre_output einer in den Kanalparametern [1]-47 definierten M-Funktion <i> vom Typ MET_SVS | Real | [s] | L/S

H_FCT[i].SYNCH | Synchronisationsart einer in den Kanalparametern [1]-3 definierten H-Funktion <i> | Integer | - | L/S
H_FCT[i].PRE_OUTP_PATH | Vorausgabeweg h_pre_output einer in den Kanalparametern [1]-47 definierten H-Funktion <i> vom Typ MEP_SVS | Real | [mm] [Inch] | L/S
H_FCT[i].PRE_OUTP_TIME | Vorausgabezeit h_pre_output einer in den Kanalparametern [1] -47 definierten H-Funktion <i> vom Typ MET_SVS | Real | [s] | L/S

Die "V.G.SPEED_LIMIT" Variablen ermöglichen den Zugriff auf die in den Kanalparametern vorbelegten Parameter für den Geschwindigkeits-Look-Ahead [1]-48.

Beim Schreibzugriff wird die geänderte Parametrierung an den Kanal ausgegeben. Eine eventuell aktive Bewegung wird unterbrochen!

Stimmen die Einheit der Abstandsparameter und der Schreibzugriff (S) auf diese Werte nicht überein, so wird implizit die Einheit mit angepaßt.

Die Änderungen bleiben bis Programmende oder Reset erhalten! Nach Programmstart gelten wieder die Einstellungen der Kanalparameter.

Stimmen die Einheit der Abstandsparameter und der Lesezugriff (L) auf diese Werte nicht überein, so wird eine Fehlermeldung ausgegeben.

SPEED_LIMIT.ENABLE | An-/Abwahl des Geschwindigkeits-Look-Ahead (0: Abwahl 1: Anwahl) | Boolean | 0 , 1 | L/S
SPEED_LIMIT.VEL_LIMIT | Definition Geschwindigkeitsgrenzwert | Integer | [%] | L/S
SPEED_LIMIT.TIME | Festlegung der Einheit der Abstände zur und von der "Ecke" (0: Weg 1: Zeit) | Boolean | 0 , 1 | L/S
SPEED_LIMIT.DIST_TO_CORNER | Wegabstand zur "Ecke" | Real | [mm] [Inch] | L/S
SPEED_LIMIT.DIST_FROM_CORNER | Wegabstand von der "Ecke" | Real | [mm] [Inch] | L/S
SPEED_LIMIT.TIME_TO_CORNER | Zeitabstand zur "Ecke" | Real | [s] | L/S
SPEED_LIMIT.TIME_FROM_CORNER | Zeitabstand von der "Ecke" | Real | [s] | L/S
SPEED_LIMIT.OVERRIDE_WEIGHT | Gewichtung des Geschwindigkeitsgrenzwertes (0: keine Gewichtung 1: Gewichtung über Override) | Boolean | 0 , 1 | L/S

@P[i].VALID

Ist Übergabeparameter im Zyklusaufruf bzw. Unterprogrammaufruf mit G8xx programmiert?

0: Parameter nicht programmiert

1: Parameter ist programmiert

Der Index <i> enthält die Nummer des Parameters, der auf Gültigkeit geprüft werden soll. (z.B. 1 bei @P1 bzw. bei Abfrage des ersten Parameters bei Aufruf über G8xx).

Hinweis zum Lesezugriff:

Die Variable kann nur innerhalb eines Zyklus oder in Unterprogrammen G8xx mit Parameterübergabe verwendet werden!

Boolean

0 , 1

L

TIME_STAMP

Aktueller Zeitstempel <Datum Zeit> :

(z.B. 16.06.2011 13:08:10:000) [ab Build 1507.02]

String

-

L


Eigendefinierte Variablen

Eigendefinierte Variablen werden im NC-Haupt- oder Unterprogramm nach dem Programmname in einem Deklarationsblock angelegt (und ggf. initialisiert), der mit #VAR beginnt und mit #ENDVAR abgeschlossen wird.

Aus Gründen der Kompatibilität zu älteren Versionen dürfen V.P- und V.S-Variablen auch außerhalb eines Deklarationsblocks angelegt werden. Das Anlegen erfolgt dann implizit beim ersten Schreibzugriff auf die Variable. Dies gilt allerdings nicht für V.L.-Variablen und Variablen-Arrays, die immer in einem Deklarationsblock angelegt werden müssen. Zur besseren Übersicht kann die Initialisierung eines Variablen-Arrays mit dem \-Zeichen auch über mehrere NC-Zeilen geschrieben werden. Folgende Syntax wird zum Anlegen verwendet:

#VAR Beginn des Deklarationsblockes

:

: Deklarations und Initialisierungsbereich

:

#ENDVAR Ende des Deklarationsblockes

Programmierbeispiel

%prog_name

:

#VAR

V.P.ARRAY_1[3][6] = [10,11,12,13,14,15, \

20,21,22,23,24,25, \

30,31,32,33,34,35 ]

V.L.MY_ARRAY[3][6] = [10,11,12,13,14,15, 20,21,22,23,24,25, 30,31,32,33,34,35]

V.P.VAR_1

V.L.VAR_1

V.S.VAR_1

#ENDVAR

Eigendefinierte Variablen und Variablen-Arrays können im NC-Programm auch wieder gelöscht werden. Hierzu steht der Befehl #DELETE mit folgender Syntax zur Verfügung.

#DELETE V. <name> {,V.<name>}

Programmierbeispiel

#DELETE V.P.ARRAY_1, V.L.MY_ARRAY, V.P.VAR_1, V.L.VAR_1, V.S.VAR_1

Desweiteren stehen die SIZEOF- und die EXIST-Funktion zur Verfügung (siehe Kapitel 2.6.1.3) die die Dimensionsgröße von Variablenarrays ermitteln und die Existenz von eigendefinierten Variablen überprüfen.

Programmierbeispiel

Durch die EXIST-Abfrage auf eine eigendefinierte V.S.-Arrayvariable (einen beliebigen gültigen Index) wird geprüft, ob diese Variable z.B. bereits in einem vorhergehenden NC-Programm angelegt wurde oder noch definiert werden muss:

...

N10 $IF EXIST[V.S.EXAMPLE[0]] == TRUE

N20 V.S.EXAMPLE[2] = 10 (V.S-Variable[2] mit einem Wert belegen)

N30 $ELSE

N40 #VAR

N50 V.S.EXAMPLE[5] = [1,2,3,4,5 ]

N60 #ENDVAR

N60 $ENDIF

...

M30

Mehr:

button Global, nicht (Haupt-) programmübergreifend (V.P.)

button Global, (Haupt-) programmübergreifend (V.S.)

button Lokal, nicht programmübergreifend (V.L.)


Global, nicht (Haupt-) programmübergreifend (V.P.)

Mit der Kennung "V.P. ..." ist es möglich, eigene Variablen zu definieren, die nach dem Anlegen in der aktuellen Programmebene und in allen weiteren Programmebenen bekannt sind (global), aber nicht über das Hauptprogrammende hinweg gültig sind.

V.P. <FREE_DEF> globale, nicht programmübergreifende Variable

<FREE_DEF> Willkürlich gewählter Name, der aus beliebigen Zeichen (außer Leerzeichen, Tabulatoren, Kommentaren, Vergleichsoperatoren, mathematischen Operatoren, eckigen Klammern) bestehen kann.

Programmierbeispiel

Hier wird die Variable V.P.VAR_5 angelegt und mit dem Wert 20 initialisiert. Danach wird eine Geradeninterpolation in X-Richtung mit dem Wert der Variable, also 20, durchgeführt.

:

#VAR

V.P.VAR_5

#ENDVAR

:

N10 V.P.VAR_5 = 20

N20 XV.P.VAR_5

:

oder

:

#VAR

V.P.VAR_5 = 20

#ENDVAR

:

N20 XV.P.VAR_5

:

Die maximale Anzahl eigendefinierter, nicht programmübergreifender Variablen ist fest vorgegeben [6]-6-21. Beim Programmstart werden sämtliche Namen und Werte von V.P.-Variablen gelöscht.


Global, (Haupt-) programmübergreifend (V.S.)

Mit der Kennung "V.S. ..." ist es möglich, eigene Variablen zu definieren, die in allen Programmebenen und allen nachfolgenden (Haupt-) NC-Programmen noch unter dem gleichen Namen und mit den zuletzt belegten Werten bestehen. Die Werte dieser Variablen können nur durch Überschreiben verändert werden, die Namen dieser Variablen können nur durch einen Neustart der Steuerung gelöscht werden.

V.S. <FREE_DEF> globale, programmübergreifende Variable

<FREE_DEF> Willkürlich gewählter Name, der aus beliebigen Zeichen (außer Leerzeichen, Tabulatoren, Kommentaren, Vergleichsoperatoren, mathematischen Operatoren, eckigen Klammern) bestehen kann.

Programmierbeispiel

Hier wird die Arrayvariable V.S.VAR[5] angelegt und anschließend initialisiert. Danach wird eine Geradeninterpolation in X-Richtung mit dem Wert der Variablen V.S.VAR[4], also 20, durchgeführt.

:

#VAR

V.S.VAR[5] = [5,10,10,15,20]

#ENDVAR

:

N20 XV.S.VAR[4]

:

Die maximale Anzahl eigendefinierter, programmübergreifender Variablen ist fest vorgegeben [6]-6.22.


Lokal, nicht programmübergreifend (V.L.)

Mit der Kennung "V.L. ..." ist es möglich, eigene Variablen zu definieren, die nur lokal in der aktuellen Programmebene oder in direkt aufgerufenen Unterprogrammebenen gültig sind. Sie werden bei Verlassen der Programmebene, in der sie angelegt wurden, gelöscht.

V.L. <FREE_DEF> lokale, nicht programmübergreifende Variable

<FREE_DEF> Willkürlich gewählter Name, der aus beliebigen Zeichen (außer Leerzeichen, Tabulatoren, Kommentaren, Vergleichsoperatoren, mathematischen Operatoren, eckigen Klammern) bestehen kann.

Programmierbeispiel

Hier wird die Variable V.L.LOC_VAR angelegt und mit dem Wert 10 initialisiert. Danach wird eine Geradeninterpolation in X-Richtung mit dem Wert der Variable, also 10, durchgeführt.

:

#VAR

V.L.LOC_VAR

#ENDVAR

:

N10 V.L.LOC_VAR = 10

N20 XV.L.LOC_VAR

:

oder

:

#VAR

V.L.LOC_VAR = 10

#ENDVAR

:

N20 XV.L.LOC_VAR

:

Die maximale Anzahl eigendefinierter, nicht programmübergreifender Variablen ist fest vorgegeben [6]-6.23. Beim Programmstart werden sämtliche Namen und Werte von V.L.-Variablen gelöscht.


Externe Variablen (V.E.)

Mit dem Befehl "V.E. ..." kann im NC-Programm auf externe Adressen geschrieben und/oder von externen Adressen gelesen werden. Dies wird durch die direkte, speichergekoppelte Kommunikation zwischen dem NC-Kanal und externen Teilnehmern, typischerweise SPS, ermöglicht.

Der Zugriff vom NC-Kanal aus kann synchron durch den Interpolator, oder asynchron durch den Decoder durchgeführt werden.

Die Initialisierung der externen Variablen erfolgt während des Hochlaufs [8].

Programmierbeispiel

N100 $IF V.E.EXT1 >= 100 (Entsprechend dem Wert von V.E.EXT1)

(wird in die verschiedenen Fälle)

(verzweigt.)

N110 G01 X100 Y100 F1000

N120 $ELSE

N130 G01 X100 YV.E.EXT1 F1000 (Geradeninterpolation in Y-Richtung)

(mit dem Wert von V.E.EXT1)

N140 ENDIF

N150 V.E.EXT1 = V.A.ABS.X (Der externen Variablen wird die)

(absolute X-Koordinate zugewiesen)

N160 G01 XV.E.EXT2 (Geradeninterpolation in X-Richtung)

(mit dem Wert von V.E.EXT2)


Spindelprogrammierung

Die Spindelprogrammierung erfolgt gemäß der in ISO bzw. ISO + Erweiterungen festgelegten konventionellen Standardsyntax. Dies ist insbesondere aus Kompatibilitäts-gründen und wegen bestimmter Standardfunktionalitäten wie Drehen, Gewindebohren, Getriebeschalten etc. erforderlich.

Um den Anforderungen neuer Maschinenkonzepte und Fertigungstechnologien bzgl. einer flexiblen Spindelprogrammierung gerecht zu werden, besteht für jede im Kanal vorhandene Spindel zusätzlich die Möglichkeit einer achsspezifischen Programmierung. Durch diese Syntax können in Multispindelsystemen in einem NC-Satz gleichzeitig mehrere Spindeln unabhängig voneinander angesprochen werden [1]-20, [6]-8.8. Dabei ist zu beachten, daß immer nur eine Spindel, die s.g. Hauptspindel sowohl in der Standardsyntax als auch in der spindelspezifischen Syntax programmiert werden kann. Alle weiteren Spindeln können nur über die spindelspezifische Syntax angesprochen werden (Kapitel 14.3).

Die Definition der Spindeln und die Festlegung der Hauptspindel erfolgt über die Parametrierung von Kanalparameter [1]-16. Diese Konfiguration liegt nach dem Hochlauf der Steuerung vor. Die Hauptspindel kann im NC-Programm über einen NC-Befehl (#MAIN SPINDLE, Kapitel 14.4) geändert werden.

Die nachfolgende Tabelle zeigt, welche NC-Befehle im Zusammenhang mit der Spindelprogrammierung nur in der DIN-Syntax zu verwenden sind, und welche auch innerhalb der erweiterten spindelspezifischen Syntax zulässig sind.

Beschreibung | DIN-Syntax | Spindel.-spezif. Syntax
Spindel-M-Funktionen | M3, M4, M5, M19 | M3, M4, M5, M19
Drehzahl | S | REV
Position | S.POS | POS
Anwenderspezifische M/H-Funktionen | Mxx/Hxx | Mxx/Hxx
Getriebeschalten (mechanisch) | M40-M45 |
Gewindeschneiden | G33 |
Gewindebohren | G63 |
Drehen | G95, G96, G97, G196 |
C-Achse | #CAX |
Getriebeschalten (neue Daten) | G112 |
Referenzpunktfahrt | G74 | G74
Override 100% | G167 | G167
Explizites Anfordern einer Spindelachse |  | CALLAX
Explizites Abgeben einer Spindelachse |  | PUTAX
Übernahme Werkzeug-dynamikdaten |  | GET_DYNAMIC_DATA
Vorsteuerung |  | G135, G136, G137
Vorschubkopplung |  | FEED_LINK

Tabelle 0-1: Übersicht der Spindelbefehle

Mehr:

button Parametrierung von Spindeln

button Programmierung in DIN-Syntax

button Programmierung in spindelspezifischer Syntax

button Wechsel der Hauptspindel

button Spindelsynchronbetrieb

button Satzübergreifende Synchronisierung (Late Sync)

button Synchronisierung der Spindel-M-Funktionen

button PLCopen-Programmierung


Parametrierung von Spindeln

Mehr:

button Achsparameter

button Kanalparameter


Achsparameter

Sowohl für geregelte als auch für gesteuerte (SPS-) Spindeln sind zur Angabe der spindelspezifischen Parameter eigene Achsparameterdatensätze zu belegen [2].


Kanalparameter

Für die Programmierung von Spindeln im Teileprogramm sind spezifische Parametrierungen [1] notwendig.

Jede Spindel, die von einem Kanal aus angesprochen werden soll, muß in diesem auch bekannt gemacht werden. Dazu wird für jede Spindel ein String (Achsbezeichnung) und die entsprechende logische Achsnummer definiert. Die Achsbezeichnungen der Spindeln sind frei wählbar, sie müssen jedoch immer mit S beginnen (z.B. S, S_MAIN, S1, SPINDEL_1).

Für die Spindel-M-Funktionen (M3, M4, M5, M19) sowie für das S-Wort müssen zusätzlich die Synchronisationsarten spindelspezifisch parametriert werden. Dazu muß die Bedeutung von M3, M4, M5 und M19 entsprechend geschaltet sein [1]-35.

Die Synchronisationsart der S-Funktion ist wirkungslos, wenn im NC-Satz eine Spindel M-Funktion programmiert wurde. Eine Synchronisation findet dann nur entsprechend der Einstellungen für die Spindel M-Funktion statt. Es gilt folgende Prioritätsreihenfolge:

M19 > M3/M4/M5 > S

Sollen die Spindeln im Simulationsmode Fertigungszeitberechnung berücksichtigt werden, so können die dazu notwendigen Daten ebenfalls spindelspezifisch parametriert werden.

Um zur bisherigen Programmierung kompatibel zu bleiben muß eine Spindel als s.g. Hauptspindel deklariert werden [1]-17/-18. Diese Hauptspindel kann dann zusammen mit bestimmten Standardfunktionalitäten (z.B. Gewindebohren, Getriebeschalten etc.) in der herkömmlichen DIN-Syntax programmiert werden. Auch wenn nur eine Spindel im System vorhanden ist, muß diese als Hauptspindel konfiguriert werden.

Durch setzen eines Flags kann für die Hauptspindel zusätzlich die optionale Funktion Getriebeschalten freigeschaltet werden [1]-19.

Die in den Kanalparametern [1] definierte Defaultbelegung steht nach dem Hochlauf der Steuerung zur Verfügung.

812_start

Beispiel 1: Konfiguration eines 1-kanaligen Systems mit 3 Spindeln. Die Spindel mit der Achsnummer 6 soll Hauptspindel sein. Getriebeschalten dieser Spindel ist deaktiviert.

Kanalparametersatz [1]:

:

spdl_anzahl 3

:

main_spindle_ax_nr 6 -> -> ->-

main_spindle_name S |

main_spindle_gear_change 0 |

# |

spindel[0].bezeichnung S1 |

spindel[0].log_achs_nr 6 -< -< -<-

spindel[0].s_synch 0x00000001

spindel[0].m3_synch 0x00000002

spindel[0].m4_synch 0x00000004

spindel[0].m5_synch 0x00000008

spindel[0].m19_synch 0x00000001

spindel[1].bezeichnung S2

spindel[1].log_achs_nr 11

spindel[1].s_synch 0x00000001

spindel[1].m3_synch 0x00000002

spindel[1].m4_synch 0x00000004

spindel[1].m5_synch 0x00000008

spindel[1].m19_synch 0x00000001

spindel[2].bezeichnung S3

spindel[2].log_achs_nr 30

spindel[2].s_synch 0x00000001

spindel[2].m3_synch 0x00000002

spindel[2].m4_synch 0x00000004

spindel[2].m5_synch 0x00000008

spindel[2].m19_synch 0x00000001

:

q Nach dem Hochlauf ist die Spindel mit der logischen Achsnummer 6 die Hauptspindel. Sie wird über den Spindelnamen S angesprochen und kann in herkömmlicher DIN-Syntax oder in spindelspezifischer Syntax programmiert werden. Die Spindeln S2 und S3 können nur in spindelspezifischer Syntax programmiert werden.

Beispiel 2: Konfiguration eines 1-kanaligen Systems mit 3 Spindeln. Die Spindel mit der Achsnummer 11 soll Hauptspindel sein. Getriebeschalten dieser Spindel ist deaktiviert.

Kanalparametersatz [1]:

:

spdl_anzahl 3

:

main_spindle_ax_nr 11-> -> ->-

main_spindle_name S_MAIN |

main_spindle_gear_change 0 |

# |

spindel[0].bezeichnung S1 |

spindel[0].log_achs_nr 6 |

spindel[0].s_synch 0x00000001 |

spindel[0].m3_synch 0x00000002 |

spindel[0].m4_synch 0x00000004 |

spindel[0].m5_synch 0x00000008 |

spindel[0].m19_synch 0x00000001 |

spindel[1].bezeichnung S2 |

spindel[1].log_achs_nr 11-< -< -<-

spindel[1].s_synch 0x00000001

spindel[1].m3_synch 0x00000002

spindel[1].m4_synch 0x00000004

spindel[1].m5_synch 0x00000008

spindel[1].m19_synch 0x00000001

spindel[2].bezeichnung S3

spindel[2].log_achs_nr 30

spindel[2].s_synch 0x00000001

spindel[2].m3_synch 0x00000002

spindel[2].m4_synch 0x00000004

spindel[2].m5_synch 0x00000008

spindel[2].m19_synch 0x00000001

:

q Nach dem Hochlauf ist die Spindel mit der logischen Achsnummer 11 die Hauptspindel. Sie wird über den Spindelnamen S_MAIN angesprochen und kann in herkömmlicher DIN-Syntax oder in spindelspezifischer Syntax programmiert werden. Die Spindeln S1 und S3 können nur in spindelspezifischer Syntax programmiert werden.

Beispiel 3: Konfiguration eines 2-kanaligen Systems mit insgesamt 3 Spindeln:

Kanal 1: 3 Spindeln. Spindel mit der Achsnummer 11 soll Hauptspindel sein.

Kanalparametersatz [1]:

:

spdl_anzahl 3

:

main_spindle_ax_nr 11-> -> ->-

main_spindle_name S |

main_spindle_gear_change 0 |

# |

spindel[0].bezeichnung S1 |

spindel[0].log_achs_nr 6 |

spindel[0].s_synch 0x00000001 |

spindel[0].m3_synch 0x00000002 |

spindel[0].m4_synch 0x00000004 |

spindel[0].m5_synch 0x00000008 |

spindel[0].m19_synch 0x00000001 |

spindel[1].bezeichnung S2 |

spindel[1].log_achs_nr 11-< -< -<-

spindel[1].s_synch 0x00000001

spindel[1].m3_synch 0x00000002

spindel[1].m4_synch 0x00000004

spindel[1].m5_synch 0x00000008

spindel[1].m19_synch 0x00000001

spindel[2].bezeichnung S3

spindel[2].log_achs_nr 30

spindel[2].s_synch 0x00000001

spindel[2].m3_synch 0x00000002

spindel[2].m4_synch 0x00000004

spindel[2].m5_synch 0x00000008

spindel[2].m19_synch 0x00000001

:

Kanal 2: 2 Spindeln. Spindel mit der Achsnummer 11 soll Hauptspindel sein.

Kanalparametersatz [1]:

:

spdl_anzahl 2

:

main_spindle_ax_nr 11-> -> ->-

main_spindle_name S |

main_spindle_gear_change 0 |

# |

spindel[0].bezeichnung S1 |

spindel[0].log_achs_nr 6 |

spindel[0].s_synch 0x00000001 |

spindel[0].m3_synch 0x00000002 |

spindel[0].m4_synch 0x00000004 |

spindel[0].m5_synch 0x00000008 |

spindel[0].m19_synch 0x00000001 |

spindel[1].bezeichnung S2 |

spindel[1].log_achs_nr 11-< -< -<-

spindel[1].s_synch 0x00000001

spindel[1].m3_synch 0x00000002

spindel[1].m4_synch 0x00000004

spindel[1].m5_synch 0x00000008

spindel[1].m19_synch 0x00000001

q Nach dem Hochlauf kann von beiden Kanälen die Spindel mit der logischen Achsnummer 11 als Hauptspindel über den Spindelnamen S angesprochen werden. Sie kann in herkömmlicher DIN-Syntax oder in spindelspezifischer Syntax programmiert werden. Die Spindel S1 kann ebenfalls von beiden Kanälen aus in spindelspezifischer Syntax programmiert werden. Spindel S3 ist ausschließlich in Kanal 1 verfügbar, in Kanal 2 ist diese Spindel unbekannt.

812_end


Programmierung in DIN-Syntax

Mehr:

button Die Spindel-M-Funktionen

button Spindeldrehzahl (S-Wort)

button Getriebeschalten von Spindeln (M40 - M45)

button Drehfunktionen

button Gewindebohren (G63)

button C-Achsbearbeitung

button Getriebeschalten (G112)

button Referenzpunktfahrt (G74)

button Override (G167)


Die Spindel-M-Funktionen

Mehr:

button Spindel bewegen (M3, M4, M5)

button Spindel positionieren (M19, *.POS)


Spindel bewegen (M3, M4, M5)

M03 | Spindeldrehung im Uhrzeigersinn (cw) | (modal)
M04 | Spindeldrehung im Gegenuhrzeigersinn (ccw) | (modal)
M05 | Spindel stoppen | (modal)

Die Spindel-M-Funktionen M03, M04, M05 legen die Spindelbetriebsart fest und sind im Zusammenhang mit dem S-Wort zu verwenden (Kap. 14.2.2-Spindeldrehzahl (S-Wort)). Sie sind haltend wirksam und dürfen jeweils nur alleine im NC-Satz programmiert werden.

Die Spindeldrehung wird aktiviert, wenn M03 oder M04 programmiert wurde und eine gültige Drehzahl gesetzt ist.

Mit M05 wird die Spindeldrehung gestoppt. Es ist zu beachten, daß diese Spindel-M-Funktion der Default-Spindelmodus nach Steuerungshochlauf und erstem Programmstart ist.

Wird am Programmende kein M05 gesetzt, so dreht die Spindel weiter.

Programmierbeispiel

N10 S1000 (Drehzahl 1000 U/min. wird gespeichert, keine)
(Spindeldrehung da M05 Default)

N20 M03 (Spindeldrehung cw mit 1000 U/min.)

N30 M04 (Spindeldrehung ccw mit 1000 U/min.)

N40 S500 (Spindeldrehung ccw mit 500 U/min.)

N50 M05 S300 (Spindelstopp, Drehzahl 300 U/min. wird)
(gespeichert)

N60 M04 (Spindeldrehung ccw mit 300 U/min.)

N70 M05 (Spindelstopp )

N80 M03 S1000 (Spindeldrehung cw mit 1000 U/min.)

N90 M30 (Programmende)

812_start

Kanalparametersatz [1]:

Für M3, M4, M5 müssen die Synchronisationsarten spindelspezifisch festgelegt werden. Bei der Synchronisationsart 0 (NO_SYNCH) wird die M-Funktion nicht ausgeführt.

:

spindel[0].bezeichnung S1

spindel[0].log_achs_nr 6

spindel[0].s_synch 0x00000001

spindel[0].m3_synch 0x00000002

spindel[0].m4_synch 0x00000002

spindel[0].m5_synch 0x00000008

spindel[0].m19_synch 0x00000001

812_end


Spindel positionieren (M19, *.POS)

M19 | Spindel positionieren | (nicht modal)
*.POS | Spindelposition | (modal)

Die Positionierung der Spindel kann mit folgender Syntax dargestellt werden:

M19 [ Spindelname.POS[ = ] <Position> ] [ M03 | M04 ] [ Spindelname <Drehzahl> ]

M19 Spindel positionieren

Spindelname Spindelbezeichnung gemäß [1] -16

<Position> Mathematischer Ausdruck zur Angabe der Spindelposition

<Drehzahl> Mathematischer Ausdruck zur Angabe der Spindeldrehzahl

M03/M04 bzw. die Spindeldrehzahl im gleichen NC-Satz sind optional. Es muß jedoch eine gültige Spindeldrehzahl (> 0) gesetzt sein.

Die Spindelposition ist haltend und muß bei einer erneuten Programmierung von M19 nicht nochmals angegeben werden. Wurde bisher noch keine Spindelposition program-miert, so wird per default auf Position Null gefahren.

Rotiert die Spindel nicht, wird die Positionierung mit dem kürzesten Verfahrweg durchgeführt.

Spindelpositionierung mit M19 ist nur für lagegeregelte Spindeln erlaubt.

Programmierbeispiele

In den folgenden Beispielen wird die Spindel jeweils auf 180° positioniert. Das "="-Zeichen ist optional:

M19 S.POS180

M19 S.POS 180

M19 S.POS=180

M19 SPINDEL.POS=180

M19 S1.POS=180

812_start

812_end

Die Spindel rotiert beim Positionieren nicht. Es wird der kürzeste Verfahrweg berechnet.

N10 M05 S100 (Spindelstopp, Drehzahl 100 U/min. wird
(gespeichert)

N20 M19 S.POS180 (Positionieren mit 100 U/min auf Position 180)

(Die Drehrichtung ergibt sich aus dem kürzesten)

(Verfahrweg)

N30 M19 S200 S.POS90 (Die Drehrichtung ergibt sich aus dem kürzesten)

(Verfahrweg)

(Positionieren mit 200 U/min ccw auf Position 90)

812_start

Kanalparametersatz [1]:

Für M19 muß die Synchronisationsart spindelspezifisch festgelegt werden. Bei der Synchronisationsart 0 (NO_SYNCH) wird die M-Funktion nicht ausgeführt.

:

spindel[0].bezeichnung S1

spindel[0].log_achs_nr 6

spindel[0].s_synch 0x00000001

spindel[0].m3_synch 0x00000002

spindel[0].m4_synch 0x00000002

spindel[0].m5_synch 0x00000008

spindel[0].m19_synch 0x00000001

:

812_end


Spindeldrehzahl (S-Wort)

<Spindelname> [ = ] <Drehzahl> (modal)

<Spindelname> Spindelbezeichnung gemäß [1] -16

<Drehzahl> Mathematischer Ausdruck zur Angabe der Spindeldrehzahl

Bei der Konfigurierung kann der Hauptspindel in den Kanalparametern [1]-18 ein String zugeordnet werden. Um Mehrdeutigkeiten zu vermeiden, muß nach allen Spindelbezeichnungen, die mehr als ein Zeichen umfassen, vor der Drehzahlangabe ein Gleichheitszeichen stehen.

Dem S-Wort können Werte direkt oder per Parameter zugewiesen werden, wobei auch Dezimalzahlen (REAL64-Format) zulässig sind.

In Verbindung mit den Spindel-M-Funktionen sind beim S-Wort folgende Verwendungsarten zu unterscheiden:

1. S-Wort in Verbindung mit M03, M04, M19:
Wird das S-Wort bzw. der dafür verwendete String in Verbindung mit M03/M04 oder M19 programmiert, so wird der dem S-Wort folgende Wert als Spindeldrehzahl interpretiert und an die Spindel ausgegeben.

2. S-Wort in Verbindung mit M05:
In Verbindung mit M05 wird der dem S-Wort folgende Wert als Spindeldrehzahl in die Arbeitsdaten übernommen, aber nicht an die Spindel ausgegeben.

Das S-Wort alleine erzeugt noch keine Bewegung im NC-Programm. Hierfür muß ein Spindelmodus M03, M04, M19 bekannt sein. Entsprechend wird auch die Programmierung von M03, M04 und M19 erst eine Bewegung bewirken, wenn das S-Wort gesetzt wird (> 0, Analogie zu G01, G02 und G03, bei denen erst verfahren wird, wenn der Vorschub und die zu verfahrenden Achsen angegeben wurden).

Bei einem negativen S-Wert wird eine Fehlermeldung ausgegeben.

Nur im Zusammenhang mit G63 (Gewindebohren) ist ein negativer S-Wert erlaubt, da damit die Umkehr der Drehrichtung beim Herausfahren aus der Gewindebohrung veranlaßt wird.

812_start

812_end

Programmierbeispiel

Programmierung mit Spindel S:

N10 S300 (Drehzahl 300 U/min. wird gespeichert)

N20 M04 (Spindeldrehung ccw mit 300 U/min.)

N30 M03 S1000 (Spindeldrehung cw mit 1000 U/min.)

N40 S500 (M03 aktiv, somit Spindeldrehung cw mit 500 U/min.)

N50 M05 S100 (Spindelstopp, Drehzahl 100 U/min. wird gespeichert)

N60 M04 (Spindeldrehung ccw mit 100 U/min.)

N70 M05 (Spindelstopp)

N80 M30 (Programmende)

812_start

Kanalparametersatz [1]:

Für das S-Wort muß die Synchronisationsart spindelspezifisch festgelegt werden. Bei der Synchronisationsart 0 (NO_SYNCH) wird eine Fehlermeldung erzeugt, da ein S-Wort nicht unberücksichtigt bleiben darf.

:

spindel[0].bezeichnung S1

spindel[0].log_achs_nr 6

spindel[0].s_synch 0x00000001

spindel[0].m3_synch 0x00000002

spindel[0].m4_synch 0x00000002

spindel[0].m5_synch 0x00000008

spindel[0].m19_synch 0x00000001

:

812_end

812_start

812_end

Programmierbeispiel

N10 M03 S100 (Spindeldrehung cw mit 100 U/min.)

N20 M19 S.POS90 (Mit 100 U/min cw auf Position 90)

N30 M04 (Spindeldrehung ccw mit 100 U/min.)

N40 M19 S200 S.POS 180 (Mit 200 U/min ccw auf Position 180)

N50 M05 S150 (Spindelstopp, Drehzahl 150 U/min.)
(wird gespeichert)

N60 M19 S.POS=135 (Positionieren mit 150 U/min.auf)

(dem kürzesten Weg auf Position 135.)

N70 M03 S300 (Spindeldrehung cw mit 300 U/min.)

N80 M19 S200 S.POS270 (Mit 200 U/min cw auf Position 270)

N90 M03 S400 S.POS45 (Spindeldrehung cw mit 400 U/min.,)
(Position 45 wird gespeichert)

N100 M19 (Mit 400 U/min. cw auf Position 45)

N110 M04 S800 (Spindeldrehung ccw mit 800 U/min.)

N120 S1200 (Spindeldrehung ccw mit 1200 U/min.)

N130 M5 (Spindelstopp)

N140 M03 (Spindeldrehung cw mit 1200 U/min.)

N150 M19 (Mit 1200 U/min. cw auf Position 45)


Getriebeschalten von Spindeln (M40 - M45)

Die Programmierung eines Schaltens des Spindelgetriebes erfolgt mit M40...M45. Diese M-Funktionen definieren maximal 6 Getriebestufen.

Die M-Funktionen können zusammen mit der Spindeldrehzahl und der M-Funktion für die Drehrichtung im gleichen NC-Satz programmiert werden. Die Funktionen M40 bis M45 werden zur Anwahl der Getriebestufe und zum Anstoß des mechanischen Getriebschaltens verwendet.

M40 | M41 | M42 | M43 | M44 | M45 [ <Spindelname><expr> ] [ M03 | M04 ] (modal)

M40 bis M45 Getriebestufen 1 bis 6

<Spindelname><expr > Spindeldrehzahl bestehend aus Spindelbezeichnung gemäß [1] und mathematischem Ausdruck

Programmierbeispiel

S800 M41 M03 (Spindeldrehzahl 800, Getriebestufe 2, Drehrichtung cw)

q Die dekodierten Funktionen M40 bis M45 sind modal und werden am Satzanfang aktiviert. M40 bis M45 heben sich gegenseitig auf.

q Das System ermöglicht die Definition von maximal 6 Spindelgetriebestufen (M40... M45). Die minimalen und maximalen Drehzahlen werden für jede Getriebestufe in einer "Tabelle der Drehzahlbereiche" in [1]-21 parametriert (Einheit = U/min).

q Die Festlegung der maximalen Geschwindigkeit für die 10-Volt Ausgabe bei lagegeregelten Spindeln erfolgt bei analogen Antrieben über den Multi-Gain-Faktor [2]-2.

q Bei einem System mit automatischer Wahl der Getriebestufe wird diese allein durch die Programmierung der Drehzahl S bestimmt. M40 bis M45 müssen dann nicht mit programmiert werden.

q M40 bis M45 sind nur bei lagegeregelten Spindeln programmierbar.

q Der NC-Kern versucht immer, Getriebeschaltvorgänge zu minimieren (Wenn z.B. eine neue Drehzahl mit der aktuellen Getriebestufe gefahren werden kann, wird ein Getriebeschalten unterdrückt, auch wenn dieses mit M40 bis M45 explizit programmiert wurde).

Kanalparametersatz [1]:

q Definition der M-Funktionen M40 - M45 und Festlegung der Synchronisationsarten.

m_synch[1] 0x00000001 MOS

m_synch[2] 0x00000002 MVS_SVS

:

m_synch[40] 0x00000002 MVS_SVS

m_synch[41] 0x00000002 MVS_SVS

m_synch[42] 0x00000002 MVS_SVS

m_synch[43] 0x00000002 MVS_SVS

m_synch[44] 0x00000002 MVS_SVS

m_synch[45] 0x00000002 MVS_SVS

m_synch[48] 0x00000008 MNS_SNS

m_synch[49] 0x00000002 MVS_SVS

:

q Freischalten des Getriebeschaltens:

:

main_spindle_gear_change 1 0: OFF 1: ON

:

q Parametrierung des Spindelgetriebes (Suchrichtung, Drehzahlbereiche):

:

spindel[0].range_way 0 0:bottom up 1: top down

#

spindel[0].range_table[0].min_speed 50 (M40)

spindel[0].range_table[0].max_speed 560 (M40)

spindel[0].range_table[1].min_speed 400 (M41)

spindel[0].range_table[1].max_speed 800 (M41)

spindel[0].range_table[2].min_speed 700 (M42)

spindel[0].range_table[2].max_speed 3500 (M42)

spindel[0].range_table[3].min_speed 3501 (M43)

spindel[0].range_table[3].max_speed 4000 (M43)

spindel[0].range_table[4].min_speed 3800 (M44)

spindel[0].range_table[4].max_speed 5500 (M44)

spindel[0].range_table[5].min_speed 5400 (M45)

spindel[0].range_table[5].max_speed 7000 (M45)

#

:

Programmierbeispiel

q Automatische Getriebestufenbestimmung: EIN

:

spindel[0].autom_range 1

:

NC-Programm:

S650 M03 OK, M41 ⇒ SPS

S750 OK, kein Schalten, M41 bereits angewählt

S950 OK, automatisches Schalten, M42 ⇒ SPS

S1050 OK, kein Schalten, M42 bereits angewählt

S750 OK, automatisches Schalten, M41 ⇒ SPS

S500 OK, kein Schalten, M41 bereits angewählt

S350 OK, kein Schalten, M41 bereits angewählt

S8000 Fehler, zu große Drehzahl

Eine programmierte Getriebestufe wird immer geprüft:

M41 S750 OK, "automatisches" Schalten, M41 ⇒ SPS

..aber

M40 S750 Fehler, falsche Getriebestufe

Programmierbeispiel

q Automatische Getriebestufenbestimmung: AUS

:

spindel[0].autom_range 0

:

NC-Programm:

M41 S650 M03 OK, M41 ⇒ SPS

M41 S750 OK, kein Schalten, M41 bereits angewählt

M42 S950 OK, Schalten, M42 ⇒ SPS

M42 S1050 OK, kein Schalten, M42 bereits angewählt

M41 S750 OK, Schalten, M41 ⇒ SPS

M41 S500 OK, kein Schalten, M41 bereits angewählt

M41 S350 OK, kein Schalten, M41 bereits angewählt

M41 S200 Fehler, andere Getriebestufe (M40) programmieren

S950 Fehler, keine Getriebestufe (M42) programmiert

812_end


Drehfunktionen

Mehr:

button Schneidenradiuskorrektur (G40/G41/G42)

button Durchmesserprogrammierung (G51/G52)

button Umdrehungsvorschub (G95)

button Konstante Schnittgeschwindigkeit (G96, G97, G196)

button Gewindeschneiden mit endlos drehender Spindel (G33)


Schneidenradiuskorrektur (G40/G41/G42)

G40 SRK-Abwahl (modal, Grundzustand)

G41 SRK links der Kontur (modal)

G42 SRK rechts der Kontur (modal)

Die Schneidenradiuskorrektur (SRK) wirkt in der mit G17, G18, G19 angewählten Bearbeitungsebene. In dieser Ebene muß eine der Achsen im Modus "Plandrehen", die andere im Modus "Längsdrehen" betrieben werden.

Als Werkzeugkorrekturwerte werden die unter den D-Worten abgelegten Datensätze verwendet. Bei Drehwerkzeugen ist die Lage der Werkzeugschneide bezüglich der Bearbeitungsebene (Plan-, Längsdrehachse) über eine zusätzliche Kennung 1...9 anzugeben (Abbildung 14-1).

Abbildung 14-1: Lage der Drehwerkzeugschneide in der Bearbeitungsebene.

Ein typisches Drehwerkzeug wird dann durch folgende Werte / Parameter charakterisiert:

q Werkzeugtyp 1 (Drehwerkzeug)

q SRK-Lage 1...9

q Werkzeugradius Schneidenradius

q Werkzeuglänge --

q Werkzeugversatzmaße (siehe Abbildung 14-2)

Abbildung 14-2: Werkzeugvermessung für Werkzeugversatzkorrektur.

Bei der Angabe von Werkzeugachsversätzen ist deren Vorzeichen zu beachten, da es sich um Komponenten des Werkzeugversatzvektors in der Bearbeitungsebene handelt. Für das in Abbildung 14-2 dargestellte Beispiel eines Drehwerkzeugs haben die Versätze in Richtung der X- und Z-Achse jeweils negatives Vorzeichen.

Ein Wechsel zwischen Drehwerkzeug und Fräswerkzeug ist bei angewähltem G41, G42 erlaubt. Bei absoluter Programmierung, G90, werden die aktuellen Achsversatzmaße des neuen Werkzeugs entsprechend dem Werkzeugtyp im nächsten Bewegungssatz verrechnet.


Durchmesserprogrammierung (G51/G52)

G51 Anwahl der Durchmesserprogrammierung (modal)

G52 Abwahl der Durchmesserprogrammierung (modal, Grundzustand)

Abbildung 14-3: Bezugspunkte und Durchmesserprogrammierung beim Drehen

Bei angewählter Durchmesserprogrammierung werden die Positionsangaben in den Verfahrsätzen der Plandrehachse als Durchmesserangaben bezüglich der Drehmitte interpretiert.

Es ist zu beachten, daß die programmierten Koordinaten der Plandrehachse nur dann tatsächlich dem Werkstückdurchmesser entsprechen, wenn sich der Nullpunkt der Plandrehachse in der Drehmitte befindet (unabhängig davon ob Verschiebungen im Durchmesser wirken, siehe Bsp. unten).

Über die Kanalparameter können für Achsen im Modus "Plandrehen" parametriert werden:

q Durchmesserprogrammierung bei absoluter Programmierung (G90) [2]-3

q Durchmesserprogrammierung bei relativer Programmierung (G91) [2]-4

q BZV und NPV im Durchmesser [1]-22

Durchmesserkoordinaten dürfen nicht negativ programmiert und nicht gespiegelt werden.

G51 wirkt auf alle Achsen, die im Modus "Plandrehen" betrieben werden. Bei Anwahl muß jedoch genau eine Plandrehachse in der Bearbeitungsebene (G17, G18, G19) vorhanden sein.

Die Koordinaten des Kreismittelpunktes werden nicht im Durchmesser programmiert.

Die Abwahl der Durchmesserprogrammierung erfolgt durch die Funktion G52.

Programmierbeispiel

Annahme: (Plandrehachse, translatorisch [2] -9)

(Durchmesserprog. bei G90 [2] -3)

(BZV, NPV im Durchmesser [1] -22)

N10 G90 G01 F1000

N20 G51 X(BZV, NPV im Durchmesser)80 (Durchmesser 80mm)

N30 G92 X10 (BZV um 10mm im Durchmesser)

N40 X0 (prog. Position 0 + BPV => Durchmesser 10mm)

N50 G91 X50 (relativ 50mm, nicht im Durchmesser)

N60 G90 X-20 (Fehler: negativer Durchmesser)

N70 G21 X30 (Fehler: bei Durchmesserprog. dürfen die Koordinaten)
(der Plandrehachse nicht gespiegelt werden)

N75 G22 X30 (Spiegelung an der Plandrehachse erlaubt)

N80 G52 (Abwahl Durchmesserprogrammierung)

N90 M30


Umdrehungsvorschub (G95)

G95 Vorschub in mm/Umdrehung (modal)

Beim Drehen mit aktivem G95 läßt sich über das F-Wort in mm/U unabhängig von der Spindeldrehzahl eine konstante Spandicke festlegen.

Der Vorschub der Bahnachsen wird dabei an die Drehzahl der lagegeregelten Spindel gekoppelt. Er ist jeweils nur in Verbindung mit der Vorschubvereinbarung gültig, bei der er programmiert wurde. Bei einem Wechsel von G95 zu G94 oder G93 (Kapitel 4.25) wird also das bei G95 gültige F-Wort nicht übernommen.

Programmierbeispiel

N10 F1000 X100 M3 S1200 (Vorschub 1000 mm/min (G94))

N20 G95 F1.5 (Vorschub 1.5 mm/U, Spindeldrehzahl 1200 1/min)

N30 G94 X50 (Vorschub 1000 mm/min aus N10 gültig)

N40 G93 F20 X20 (Bearbeitungszeit 20 s)

N50 G95 Y200 S2000 (Vorschub 1.5 mm/U aus N20 gültig,)

(Spindeldrehzahl 2000 1/min)

N60 M30


Konstante Schnittgeschwindigkeit (G96, G97, G196)

G96 Anwahl konstante Schnittgeschwindigkeit (modal)

G97 Abwahl konstante Schnittgeschwindigkeit, Anwahl Spindeldrehzahl (modal, Grundzustand)

G196 Maximale Spindeldrehzahl bei G96 (G196 nicht modal,
max. Drehzahl modal)

Über die G-Funktionen G96, G97 und G196 kann die Interpretation des S-Wortes (bzw. S-Strings) wahlweise umgeschaltet werden:

G96 S in m/min (Schnittgeschwindigkeit)

G97 S in 1/min (Spindeldrehzahl)

G196 S in 1/min (max. Spindeldrehzahl während G96)

Bei Anwahl mit G96 berechnet sich die Startdrehzahl der Spindel aus der programmierten Schnittgeschwindigkeit und dem Abstand der Werkzeugspitze zur Drehmitte. Dieser Abstand ergibt sich aus der zuletzt (nicht im aktuellen NC-Satz) programmierten Position und den Bezugspunktverschiebungen der Plandrehachse. In der aktuellen Bearbeitungsebene (G17, G18, G19) muß genau eine Plandrehachse vorhanden sein.

Eine bei G96 über das S-Wort programmierte Schnittgeschwindigkeit ist nur bis zur Abwahl mit G97 gültig. Die Aktivierung der konstanten Schnittgeschwindigkeit erfolgt bei G96 also erst wenn auch das S-Wort programmiert wurde.

Die Angabe einer maximalen Spindeldrehzahl mit G196 ist optional und nur während G96 wirksam.

In der Nähe der Drehmitte legt die programmierte Maximaldrehzahl (G196) bzw. die in den zugehörigen Achsparametern festgelegte maximale Spindeldrehzahl [2]-17 die Grenze der konstanten Schnittgeschwindigkeit fest.

Bei Abwahl mit G97 wird die zuletzt eingestellte Spindeldrehzahl beibehalten.

Verfahrbewegungen der Plandrehachse im Eilgang (G00) führen zu einer Unterbrechung von G96, so daß unerwünschte Drehzahländerungen beim Positionieren des Werkzeugs verhindert werden können. Der nächste Verfahrsatz mit G01, G02 oder G03 hebt die Unterdrückung von G96 wieder auf.

Programmierbeispiel

(X ... Plandrehachse)

N10 M03 S1000 G01 F1500 X100

N20 G196 S6000 (max. Drehzahl 6000 1/min)

N30 G96 S63 (Anwahl konst. Schnittgeschw. 63m/min,)
(Werkstückradius 100mm entsprechend der X-Koordinate)

N40 X80

N50 S4 X50 (neue Schnittgeschw. 4m/min; Werkstückradius 80mm, am)
(Satzende 50mm)

N60 G97 (Abwahl konst. Schnittgeschw.)

N70 S8000 (max. Drehzahl 6000 1/min hier nicht wirksam!)

N80 G92 X-10 (Bezugspunktverschiebung in X um -10mm)

N90 G96 X60 (Schnittgeschw. aus N50 nicht gültig: konst. Schnitt-)
(geschwindigkeit nicht aktiv, Drehzahl 8000 1/min)

N100 S25 X70 (Schnittgeschw. 25m/min, Werkstückradius 50mm)
(=60mm+BPV)

(konst. Schnittgeschw. aktiv)

N110 G00 X450 (Eilgang: Drehzahl bleibt konstant.)

N115 X70

N120 G01 X40 (Unterdrückung von G96 aufgehoben)

N110 M30


Gewindeschneiden mit endlos drehender Spindel (G33)

Syntaxbeispiel für ZX-Ebene (Z Längsachse, X Zustellachse):

G33 Z <expr> K <expr> [ <Spindelname>.OFFSET[ = ]<expr> ] (modal)

G33 Gewindeschneiden mit endlos drehender Spindel. Die G33-Funktion ist haltend wirksam. Der nächste Bewegungssatz mit einer haltenden Satzart (G00, G01, G02, G03, Spline, Polynom) wählt das Gewindeschneiden ab.

Z<expr> Zielposition ("Gewindelänge")

K<expr> Die Gewindesteigung wird bei aktivem Gewindeschneiden in der Einheit mm/U ohne Vorzeichen über die Adressbuchstaben I, J und K programmiert. Diese sind gemäß DIN 66025 der X-, Y-, und Z-Achse zugeordnet.

Die Gewindesteigung ist bis zum Programmende haltend wirksam und darf bei Anwahl von G33 nicht Null sein. Der Vorschub wird nicht über das F-Wort programmiert, sondern ergibt sich aus der Spindeldrehzahl und der Gewindesteigung.

Die Steigung von Längsgewinden bzw. Kegelgewinden mit einem Neigungswinkel kleiner als 45° wird über den Adressbuchstaben K angegeben, wenn die Z-Achse Längsdrehachse ist. Bei Plangewinden bzw. Kegelgewinden mit einer Steigung größer oder gleich 45° erfolgt die Angabe der Steigung über I, wenn als Plandrehachse die X-Achse verwendet wird und über J, wenn die Y-Achse verwendet wird. In Abbildung 14-4 sind Beispiele für die Angabe der Gewindesteigung über die Adressbuchstaben in der Z-X-Ebene dargestellt.

<Spindelname> .OFFSET=<expr> Gewindeversatzwinkel im Modulobereich der Spindel. Optional, ist nur bei mehrgängigen Gewinden erforderlich. Der Versatzwinkel ist bis zum Programmende haltend wirksam. Spindelbezeichnung gemäß [1] -18. Das "="-Zeichen ist optional.

Abbildung 14-4: Angabe der Gewindesteigung

Programmierbeispiele

Abbildung 14- 5 : Darstellung der Beispielgeometrie

Schneiden eines Längsgewindes (M70x1.5) in mehreren Schnitten:

%L Laengsgewinde

N100 G33 Z48 K1.5 Gewindegang schneiden

N110 G00 X72 Rückzug und Fahren

N120 Z105 auf Startposition

N130 M29 Unterprogrammende

%G33 (Gewindetiefe 0.92 mm)

N10 G51 Anwahl Durchmesserprogrammierung

N15 T1 D1 M03 S400 Werkzeuganwahl, Spindel starten

N20 G00 X72 Z105 Anfahren

N25 G01 X69.54 F1000 Auf 1. Schnittiefe positionieren

N30 LL Laengsgewinde 1. Gewindeschnitt

N35 G01 X69.08 Auf 2. Schnittiefe positionieren

N30 LL Laengsgewinde 2. Gewindeschnitt

N35 G01 X68.62 Auf 3. Schnittiefe positionieren

N30 LL Laengsgewinde 3. Gewindeschnitt

N35 G01 X68.16 Auf Endtiefe positionieren

N30 LL Laengsgewinde 4. Gewindeschnitt

N35 G01 X68.16 Erneut auf Endtiefe positionieren

N30 LL Laengsgewinde Leerschnitt

N60 M05 X150 Z200 Fahren auf Endposition

N65 M30 Programmende

Schneiden eines 2-gängigen Längsgewindes (M70x1.5)

%G33_2 (2 Gewindegaenge, Gewindetiefe 0.92 mm)

N10 G51 Anwahl Durchmesserprogrammierung

N15 T1 D1 M03 S400 Werkzeuganwahl, Spindel starten

N20 G00 X72 Z105 Anfahren

N25 G01 X68.16 F1000 Auf Gewindetiefe positionieren

N30 G33 Z48 K1.5 1. Gewindegang schneiden

N35 G00 X72 Rückzug und Fahren

N40 Z105 auf nächste

N45 G01 X68.16 Startposition

N50 G33 Z48 K1.5 S.OFFSET=180 2. Gewindegang schneiden bei 180°

N55 G00 X72 Rückzug und Fahren

N60 M05 X150 Z200 auf Endposition

N65 M30 Programmende

812_end


Gewindebohren (G63)

Syntaxbeispiel für XY-Ebene:

G63 Z <expr> F <expr> <Spindelname><expr> (modal)

G63 Gewindebohren

Z<expr> Zielposition

F<expr> Vorschub

<Spindelname><expr> Spindeldrehzahl bestehend aus Spindelbezeichnung gemäß [1] -18 und mathematischem Ausdruck

Bei dieser Art des Gewindebohrens (G63) wird die Spindel durch die CNC synchron zur Bahnbewegung mitgeführt. Hierbei erfolgt eine genaue dynamische Abstimmung von Spindel und der an der Zustellbewegung beteiligten Achsen. Ein Ausgleichsfutter ist somit nicht erforderlich. Der programmierte Vorschub muß zur gewählten Spindeldrehzahl und zur Gewindesteigung des Bohrers passen und wird wie folgt berechnet:

Vorschub F [mm/min] = Drehzahl S [U/min] * Gewindesteigung [mm/U]

G63 wird durch die Anwahl einer anderen modalen Satzart (z.B. Linearbewegung G01) abgewählt. Eine nicht-haltende Satzart (z.B. Verweilzeit mit G04) bewirkt keine Deaktivierung von G63.

Der Bahnvorschub (F-Wort) und die Spindeldrehzahl (S-Wort) müssen nicht zwingend im selben NC-Satz wie G63 angegeben werden. Die Berechnung des Vorschubes muß immer auf den zuletzt programmierten Werten basieren.

Eine Fehlermeldung wird ausgegeben, wenn Bahnvorschub oder Spindeldrehzahl bei der G63 - Anwahl gleich Null sind.

Für die Spindel können keine Spindel-M-Funktionen (M03, M04, M05, M19) während G63 programmiert werden.

Die Spindel muß beim Aufruf von G63 stehen. Dies kann durch die vorhergehende Programmierung von M05 (Spindel stoppen) oder M19 (Spindel positionieren) erreicht werden.

Das Schneiden eines Linksgewindes oder das Herausfahren aus einer Gewindebohrung wird mit negativem S-Wert programmiert.

Programmierbeispiel 1

Es wird ein Gewinde mit einer Steigung von 1.25 mm und einer Tiefe von 50 mm gebohrt. Bei einer Spindeldrehzahl S von 200 U/min ergibt sich somit ein Vorschub von:

F = 200*1.25 = 250 mm/min

:

G63 Z-50 F250 S200 Gewinde bohren

Z50 S-200 Aus Gewindebohrung herausfahren

G01 F100 X100 ... Abwahl Gewindebohren, Linearinterpolation

:

Programmierbeispiel 2

%Gewindebohren

N05 X0 Y0 Z0

N10 G91

N20 M03

S100 X100 M19 S.POS180 Z100 (Positionieren von Werkzeug und Spindel)

N30 G63 Z-100 F300 S200 (Gewindebohren)

N40 Z100 S-200 (Herausfahren aus Gewindebohrung 1)

N50 G01 X200 F3000 M5 (Positionieren von Werkzeug und Spindel)

N60 G63 Z-70 F300 S200 (Gewindebohren)

N70 Z70 S-200 (Herausfahren aus Gewindebohrung 2)

N80 M05 G01 X300 F1000

N90 M30


C-Achsbearbeitung

Diese Funktionalität ergänzt die bereits vorhandenen Drehfunktionen und ermöglicht die Stirn- und Mantelflächenbearbeitung von zylindrischen Werkstücken an Drehmaschinen und Fräsmaschinen mit Drehteller. Dabei wird das Werkstück von der rotatorischen Achse oder Spindel (C-Achse) und das angetriebene Werkzeug (z.B. ein Fräser) von den beiden translatorischen Achsen X (oder Y) und Z bewegt. Für die C-Achsbearbeitung sind dazu Einstellungen in den Parametern [1]-53, [2]-9 notwendig.

Die Stirnflächenbearbeitung und die Mantelflächenbearbeitung werden in kartesischen Koordinaten beschrieben.

Sämtliche Interpolationsarten wie Linear, Zirkular und Spline werden sowohl auf der Stirn- als auch auf der Mantelfläche unterstützt. Die Funktionalität ermöglicht auch die Bearbeitung von durch die Drehmitte verlaufenden Bahnkonturen. Bei Drehmaschinen wird dabei die C-Achse automatisch gerichtet.

Die 2,5D-Werkzeugradiuskorrektur kann über die bekannten G-Befehle genutzt werden.

Durch Verwendung der erweiterten Dynamiküberwachung kann bei der C-Achs-Funktionalität die Überschreitung von dynamischen Achskenngrößen speziell auch bei Konturen, die nahe der Drehmitte verlaufen, verhindert werden.

Mehr:

button Bearbeitungsmodis

button Umschalten zwischen C-Achsmodis


Bearbeitungsmodis

Die Hauptachsen in allen Maschinenmodis sind X, Y (abhängig vom Maschinentyp), Z und C.

Mehr:

button Modus 1: Eintauschen der Spindel in den Bahnverbund

button Modus 2: Stirnflächenbearbeitung

button Modus 3: Mantelflächenbearbeitung


Modus 1: Eintauschen der Spindel in den Bahnverbund

Dieser Basismodus ist für die C-Achsbearbeitung insbesondere bei Drehmaschinen notwendig, da hier die Hauptspindel in eine rotatorische Bahnachse (z.B "C") überführt werden muß.

Auf Fräsmaschinen oder Bearbeitungszentren, die konstruktiv eine rotatorische Werkstückaufnahme besitzen (z.B.Drehteller) ist ebenfalls eine C-Achsbearbeitung möglich. Die Anwahl von Modus 1 (#CAX) ist in diesem Fall nicht erforderlich.

Die drei physikalischen Achsen X, Y, Z und C können direkt programmiert werden. Die Linearachsen werden in kartesischen Koordinaten und die C-Achse in Winkeleinheiten programmiert.

Die Radius- bzw. Durchmesserprogrammierung hängt dabei von G52/G51 ab.

Jeweils zwei Linearachsen definieren die Hauptebene.

ZX (G18) oder YZ (G19).

#CAX [ [ [<Hauptspindelname>, ] <C-Achsname>] ]

<Hauptspindelname> Es kann ausschließlich die Hauptspindelbezeichnung entsprechend [1] -18 programmiert werden. Soll eine andere Spindel als C-Achse genutzt werden, so muß diese zuerst zur Hauptspindel deklariert werden (siehe Programmierbeispiel bzw. Kapitel 14.4 ). Ansonsten erfolgt die Ausgabe einer Fehlermeldung.

<C-Achsname> Frei definierbare Bezeichnung der C-Achse im NC-Programm .Wenn kein C-Achsname programmiert ist, wird der Defaultname gemäß [1] -23 benutzt.

Die Hauptebene (Kreisinterpolation, Werkzeugradiuskorrektur) bleibt die gleiche wie vor der Aktivierung der C-Achse.

Wird für die Spindel ein Befehl programmiert (M3, M4, M5, etc.) obwohl die Achse noch als C-Achse im Bahnverbund ist, wird ein Fehler erzeugt.

Die Abwahl der C-Achse, d.h. das Zurückgeben der Achse an den Spindelinterpolator erfolgt durch:

#CAX OFF

Programmierbeispiel

:

#CAX (Annahme: Default-C-Achse sei C)

G01 G90 X50 Z10 C90 F200

#CAX OFF (Abwahl C-Achsbetrieb)

...

#CAX[S, C] oder #CAX[C] (Annahme: Hauptspindel sei S)

G01 G90 X50 Z10 C90 F200

#CAX OFF

...

#MAIN SPINDLE [S2] (S2 wird neue Hauptspindel S)

#CAX[S, C] (Anwahl C-Achsbetrieb)

G01 G90 X50 Z10 C90 F200

...

#CAX OFF (Abwahl C-Achsbetrieb)

...

#CAX[S3, C] (Fehler, S3 ist keine Hauptspindel)


Modus 2: Stirnflächenbearbeitung

Dieser Modus wird bei Drehmaschinen und Bearbeitungszentren angewählt. Die gewünschte Kontur auf der Stirnfläche wird in einem virtuellen kartesischen Koordinatensystem in Millimeter (oder Inch) programmiert.

Für die Programmierung der Kontur in kartesischen Koordinaten auf der Stirnfläche stehen die drei logischen Achsen X, Y (bzw. C) und Z zur Verfügung.

Das folgende Bild zeigt die einzelnen Hauptebenen bei der Stirnflächenbearbeitung. Technische Bedeutung hat nur die dargestellte G17-Ebene.

#FACE [ <Name 1. Hauptachse>,<Name 2. Hauptachse>]

<Name 1. Hauptachse> Achsbezeichnung der ersten Hauptachse entsprechend der aktuellen Hauptebene.

<Name 2. Hauptachse> Achsbezeichnung der zweiten Hauptachse entsprechend der aktuellen Hauptebene (virtuelle kartesische Achse).

Die Hauptebene (Kreisinterpolation, Werkzeugradiuskorrektur) wird durch die erste und zweite Hauptachse gebildet.

Programmierte Mitschleppachsen sind von der Transformation nicht betroffen.

Der Modus wird abgewählt durch:

#FACE OFF

Durch obigen Befehl wird wieder in den zuvor aktiven Modus zurückgekehrt (z.B Modus 1). D.h., es erfolgt automatisch die Anwahl der aktiven Hauptebene und die Wiederherstellung der zuletzt aktiven Achsversätze.

Programmierbeispiel für Drehmaschinen

Beispiel mit Achsbezeichner "C" für 2. Hauptachse

:

#CAX[S, C] (Annahme: Hauptspindel sei S)

#FACE[X, C] (Anwahl Stirnflaechenbearbeitung)

:

G01 X40 C-30 Z50 F1000 (Vorpositionieren)

G01 Z30 (Zustellung)

G01 X10 C40 (Kontur fahren)

G01 Z50 (Rückzug)

:

#FACE OFF

#CAX OFF

Beispiel mit Achsbezeichner "Y" für 2. Hauptachse.

Hinweis: Es darf im Kanal keine andere Achse mit dem gleichem Namen "Y" geben

:

#CAX[S, Y] (Annahme: Hauptspindel sei S)

#FACE[X, Y] (Anwahl Stirnflaechenbearbeitung)

:

G01 X40 Y-30 Z50 F1000 (Vorpositionieren)

G01 Z30 (Zustellung)

G01 X10 Y40 (Kontur fahren)

G01 Z50 (Rückzug)

:

#FACE OFF

#CAX OFF

Programmierbeispiel für Bearbeitungszentren

Beispiel: Die rotatorische Achse (Werkstückachse) im Kanal sei "C2". Der Befehl #CAX ist nicht erforderlich.

:

#FACE[X, C2] (Anwahl Stirnflaechenbearbeitung)

:

G01 X40 C2=-30 Z50 F1000 (Vorpositionieren)

G01 Z30 (Zustellung)

G01 X10 C2=40 (Kontur fahren)

G01 Z50 (Rückzug)

:

#FACE OFF


Modus 3: Mantelflächenbearbeitung

Dieser Modus kann bei Drehmaschinen und Bearbeitungszentren angewählt werden. Die gewünschte Kontur auf der zylindrischen Mantelfläche wird in einem virtuellen Koordinatensystem in Millimeter (oder Inch) programmiert.

Für die Programmierung der Kontur in kartesischen Koordinaten auf der Mantelfläche stehen die drei logischen Achsen X, Y und Z zur Verfügung. In diesem Modus muß zusätzlich der Bezugsradius R des Werkstückes mit programmiert werden.

Bei der Mantelflächenbearbeitung wird die Hauptebene durch Z-C gebildet.

#CYL [ <Name 1.Hauptachse>, <Name 2.Hauptachse>, <Name 3.Hauptachse><expr> ]

<Name 1.Hauptachse> Achsbezeichnung der ersten Hauptachse entsprechend der aktuellen Hauptebene.

<Name 2.Hauptachse> Achsbezeichnung der zweiten Hauptachse entsprechend der aktuellen Hauptebene (virtuelle lineare Achse, Abwicklung).

<Name 3.Hauptachse><expr> Achsbezeichnung der dritten Hauptachse entsprechend der aktuellen Hauptebene mit Angabe des Bezugsradius

Die Hauptebene (Kreisinterpolation, Werkzeugradiuskorrektur) wird durch die erste und zweite Hauptachse gebildet. Ein Wechsel der Hauptebene durch G17, G18, G19 ist nicht erlaubt.

Programmierte Mitschleppachsen sind von der Transformation nicht betroffen.

Der Modus wird abgewählt durch:

#CYL OFF

Durch obigen Befehl wird wieder in den zuvor aktiven Modus zurückgekehrt (z.B Modus 1). D.h., es erfolgt automatisch die Anwahl der aktiven Hauptebene und die Wiederherstellung der zuletzt aktiven Achsversätze.

Programmierbeispiel für Drehmaschinen

Beispiel mit Achsbezeichner "C" für 2. Hauptachse

:

#CAX [S, C]

G01 X60 C45 (Zustell- und Positionierbewegung; X:60mm C:45°)

#CYL [Z, C, X60] (Anwahl Mantelflaechenbearbeitung)

G00 G90 Z0 C0 (Z: 0mm C:0mm!)

G01 C100 F500

G02 Z100 R50

G01 C0

Z0

:

#CYL OFF

#CAX OFF


Umschalten zwischen C-Achsmodis

Die Abwahl der C-Achsmodis erfolgt regulär über die beschriebenen Abwahlbefehle (z.B. mit dem Befehl #CYL OFF). Zwischen den Modis 2 und 3 ist es jedoch auch möglich, ohne vorherige Abwahl direkt in den anderen Modus zu wechseln. Nachfolgendes Programmierbeispiel zeigt dazu eine typische NC-Sequenz für den Wechsel zwischen C-Achsmodis:

Programmierbeispiel

N10 #CAX [..] (Aufnahme der LR-Spindel in den Bahnverbund)

..............

N120 #FACE [..] (Anwahl der Stirnflächenbearbeitung)

..............

N230 #CYL [..] (Direkter Übergang zur Mantelflächenbearbeitung)

....... ..

N300 #CYL OFF (Abwahl der Mantelflächenbearbeitung und Übergang)
(zur konvent.Bearbeitung mit physikalischer C-Achse)

N400 #CAX OFF (Abgabe der C-Achse an die lagegeregelte Spindel)


Getriebeschalten (G112)

G112 <Spindelname><expr> (nicht modal)

G112 Getriebe schalten

<Spindelname><expr> Getriebedatensatz bestehend aus Spindelbezeichnung gemäß Decoder-parameterliste und mathematischem Ausdruck

Im Gegensatz zum Getriebeschalten über M40-45, bei dem implizit auch der mechanische Schaltvorgang mit durchgeführt wird, wird durch das Programmieren von G112 zusammen mit dem S-Wort nur das Aktualisieren von Spindelgetriebedaten (Dynamikwerte) einer Stufe angestoßen.

Das mechanische Schalten der richtigen Getriebestufe muß der Anwender explizit z.B. durch selbst definierte M-Funktionen programmieren oder wie bereits erwähnt über M40-45.

Vor dem Schalten von Spindelgetriebedaten muß die Spindel stehen. Dies kann durch einen Spindelstop (M5) oder eine Spindelpositionierung (M19...) im vorhergehenden NC-Satz erreicht werden.

Programmierbeispiel

%Test_G112

N010 G112 S2 (Dynamikdaten der Getriebestufe 2 für Spindel S laden)

N020 M3 S9000

N030 M5 (Spindel stoppen)

N040 G112 S1 (Dynamikdaten der Getriebestufe 1 für Spindel S laden)

N050 M4 S8000

N060 M30


Referenzpunktfahrt (G74)

G74 <Spindelname><dummy_expr> (nicht modal)

G74 Referenzpunktfahrt

<Spindelname><dummy_expr> Spindelbezeichnung entsprechend [1] -18 mit Angabe eines mathematischen Ausdrucks.

Für lagegeregelte Spindeln kann eine Referenzpunktfahrt durchgeführt werden. Im Gegensatz zur Referenzierung von Linearachsen haben die mit dem Spindelnamen programmierten Werte keine Bedeutung für die Reihenfolge der Referenzierung, sondern werden nur zur Darstellung einer vollständigen Syntax benötigt.

Die Programmierung der Spindel-M-Funktionen ist im selben NC-Satz wie G74 nicht erlaubt.

Folgende Fälle sind bei der Referenzierung von Spindeln zu unterscheiden:

Programmierbeispiel

1. Die Referenzierung der Spindel beginnt zeitgleich mit der Y-Achsen-Referenzierung:

Nxx G74 X2 Y1 S1

2. Wie 1.! Ohne abzuwarten, bis die Spindel referenziert ist, wird mit dem nächsten NC-Satz fortgefahren, so daß die X-Achse quasi-gleichzeitig referenziert wird:

Nxx G74 S1

Nyy G74 X1 Y2

3. Zuerst werden die Achsen X und Y referenziert. Danach beginnt die Spindel-Referenzierung:

Nxx G74 X1 Y2

Nyy G74 S1


Override (G167)

G167 <Spindelname><expr> (nicht modal)

G167 Spindeloverride auf 100 % festsetzen

<Spindelname><expr> Spindeldrehzahl bestehend aus Spindelbezeichnung entsprechend [1] -18 und Angabe eines mathematischen Ausdrucks.

Mit der Funktion G167 wird die externe Beeinflussung des Spindeloverrides ausgeschaltet und die tatsächlich programmierte Drehzahl gefahren.

Programmierbeispiel

:

N10 M3 S1000 (Bei Override 50% ist Drehzahl 500 U/min.)

N20 G167 S1000 (Overridebeeinflussung aus, Spindel dreht mit 1000 U/min.)

N30 S3000 (Overridebeeinflussung wieder aktiv, Drehzahl 1500 U/min.)

Nxx


Programmierung in spindelspezifischer Syntax

Die spindelspezifische Syntax bietet den Vorteil, daß in einem NC-Satz mehrere Spindeln unabhängig voneinander programmiert werden können.

Diese erfolgt innerhalb einer dem Spindelnamen angefügten Klammerung. In dieser Klammerung sind nur bestimmte Befehle zulässig, die stets spindelspezifisch behandelt und ausgeführt werden. Die Hauptspindel kann nur mit ihrem Hauptspindelnamen programmiert werden [1]-18.

<Spindelname> [ [ M3 | M4 | M5 | M19 ] [ REV<expr> ] [ POS<expr> ] { M<expr> } { H<expr> }

[ G74 ] [ G167] [ CALLAX | PUTAX | GET_DYNAMIK_DATA ]

[ [ G135 | G137 ] [ G136 <expr> ] ] ] { <Spindelname>[ .... ] }

<Spindelname> Spindelbezeichnung gemäß [1] -16/-18

M3, M4, M5, M19 Spindel-M-Funktionen

REV<expr> Spindeldrehzahl

POS<expr> Spindelposition

M<expr> Anwenderspezifische M-Funktionen

H<expr> Anwenderspezifische H-Funktionen

G74 Referenzpunktfahrt

G167 Spindeloverride 100%

CALLAX Holen Spindelachse

PUTAX Abgeben Spindelachse

GET_DYNAMIC_DATA Übernahme neuer Werkzeugdynamikdaten

G135, G136<expr>, G137 Vorsteuerung

Programmierbeispiel

:

N10 S[M3 REV500 M19 POS45 M18 M15 H20 ...] S2 [M4 REV5000]

Nxx

:

Mehr:

button Die Spindel-M-Funktionen

button Spindeldrehzahl (REV)

button Anwenderspezifische M-/H-Funktionen

button Referenzpunktfahrt (G74)

button Override (G167)

button Abgeben/Anfordern von Spindelachsen (PUTAX/CALLAX)

button Übernahme der Werkzeugdynamikdaten (GET_DYNAMIC_DATA)

button Beauftragung der Spindelvorsteuerung (G135, G136, G137)

button Spindelvorschubkopplung (FEED_LINK)


Die Spindel-M-Funktionen

Mehr:

button Spindel bewegen (M3/M4/M5)

button Spindel positionieren (M19, POS)


Spindel bewegen (M3/M4/M5)

M03 | Spindeldrehung im Uhrzeigersinn (cw) | (modal)
M04 | Spindeldrehung im Gegenuhrzeigersinn (ccw) | (modal)
M05 | Spindel stoppen | (modal)

Die Spindel-M-Funktionen M03, M04 legen die Spindeldrehrichtung fest und sind im Zusammenhang mit der Spindeldrehzahl (REV-Wort) zu verwenden. Mit M05 wird die Spindeldrehung gestoppt. Es ist zu beachten, daß diese Spindel-M-Funktion der Default-Spindelmodus nach Steuerungshochlauf und erstem Programmstart ist. Diese M-Funktionen sind haltend wirksam und dürfen innerhalb der Klammerung jeweils nur alleine programmiert werden.

Die Spindeldrehung wird aktiviert, wenn M03 oder M04 programmiert wurde und eine gültige Drehzahl (REV) gesetzt ist.

Wird am Programmende kein M05 gesetzt, so dreht die Spindel weiter.

Programmierbeispiel

Programmierung einer Spindel S:

N10 S[REV1000] (Drehzahl 1000 U/min. wird gespeichert,)
(keine Spindeldrehung da M05 Default)

N20 S[M03] (Spindeldrehung cw mit 1000 U/min.)

N30 S[M04] (Spindeldrehung ccw mit 1000 U/min.)

N40 S[REV500] (Spindeldrehung ccw mit 500 U/min.)

N50 S[M05 REV300] (Spindelstopp, Drehzahl 300 U/min. wird gespeichert)

N60 S[M04] (Spindeldrehung ccw mit 300 U/min.)

N70 S[M05] (Spindelstopp)

N80 S[M03 REV1000] (Spindeldrehung cw mit 1000 U/min.)

N90 M30 (Programmende)

812_start

812_end

Programmierbeispiel

Programmierung von zwei Spindeln S und S2:

N10 S[M03 REV1000] S2[M04 REV2000] (S cw 1000 U/min.,S2 ccw 2000 U/min.)

N20 S[M05] S2[REV1500] (S stop, S2 ccw mit 1500 U/min.)

N30 S[M04] (S ccw 1000 U/min.)

N40 S2[M05] (S2 stop)

N50 S[M05 REV300] (S stop, Drehzahl 300 U/min. speichern)

N60 S[M04] S2[M04] (S ccw 300 U/min., S2 ccw 1500 U/min.)

N70 S[M05] S2[M05] (S stop, S2 stop)

N80 M30 (Programmende)

812_start

Kanalparametersatz [1]:

Für M3, M4, M5 müssen die Synchronisationsarten spindelspezifisch festgelegt werden. Bei der Synchronisationsart 0 (NO_SYNCH) wird die M-Funktion nicht ausgeführt.

:

spindel[0].bezeichnung S1

spindel[0].log_achs_nr 6

spindel[0].s_synch 0x00000001

spindel[0].m3_synch 0x00000002

spindel[0].m4_synch 0x00000002

spindel[0].m5_synch 0x00000008

spindel[0].m19_synch 0x00000001

:

812_end


Spindel positionieren (M19, POS)

M19 | Spindel positionieren | (nicht modal)
POS | Spindelposition | (modal)

Die Spindel-M-Funktion M19 bewirkt die Spindelpositionierung und ist im Zusammenhang mit dem POS-Wort zu verwenden. M03/M04 bzw. die Spindeldrehzahl (REV) im gleichen NC-Satz sind optional. Es muß jedoch eine gültige Spindeldrehzahl (> 0) gesetzt sein. M19 darf nicht zusammen mit M5 (Spindelstop) verwendet werden.

Die Spindelposition POS ist haltend und muß bei einer erneuten Programmierung von M19 nicht nochmals angegeben werden. Wurde bisher noch keine Spindelposition programmiert, so wird per default auf Position Null gefahren.

Rotiert die Spindel nicht, wird die Positionierung mit dem kürzesten Verfahrweg durchgeführt.

Spindelpositionierung mit M19 ist nur für lagegeregelte Spindeln erlaubt.

Programmierbeispiel

Programmierung einer Spindel S:

N10 S[REV100 POS45 M19 M3] (Fahre cw mit 100 U/min. auf Position 45)

N20 S[M03 REV1000] (Spindeldrehung cw mit 1000 U/min.)

N30 S[M19 M4 REV150] (Fahre ccw mit 150 U/min. auf Position 45)
(->POS ist haltend!)

N40 S[M05] (Spindelstopp)

N50 S[M19] (Fahre auf kürzestem Weg mit 150 U/min. auf)
(Position 45)

N60 S[REV200 M19 POS90] (Fahre auf kürzestem Weg mit 200 U/min. auf)
(Position 90)

N70 S[M03 REV1000] (Spindeldrehung cw mit 1000 U/min.)

N80 S[M05] (Spindelstopp)

N90 M30 (Programmende)

812_start

812_end

Programmierbeispiel

Programmierung von zwei Spindeln S und S2:

(Zu N10: Fahre beide Spindeln cw mit 1000 U/min. auf Position 45)

N10 S[M03 REV200 M19 POS45] S2[M04 REV200 POS45 M19]

N20 S[REV1000] S2[REV1500] (S cw mit 1000 U/min.,)
(S2 ccw mit 1500 U/min.)

N30 S[M04] (S ccw 1000 U/min.)

N40 S2[M19 POS0] (Fahre S2 ccw auf Posiion 0)

N50 S[M05 REV300] (S stop, 300 U/min. speichern)

(zu N60: Fahre S cw mit 300 U/min. auf Position 90,
(zu N60: Fahre S2 cw mit 200 U/min. Position 45)

N60 S[M03 M19 POS90] S2[M03 REV200 POS45 M19]

N80 M30 (Programmende)

812_start

Kanalparametersatz [1]:

Für M19 muß die Synchronisationsart spindelspezifisch festgelegt werden. Bei der Synchronisationsart 0 (NO_SYNCH) wird die M-Funktion nicht ausgeführt.

:

spindel[0].bezeichnung S1

spindel[0].log_achs_nr 6

spindel[0].s_synch 0x00000001

spindel[0].m3_synch 0x00000002

spindel[0].m4_synch 0x00000002

spindel[0].m5_synch 0x00000008

spindel[0].m19_synch 0x00000001

:

812_end


Spindeldrehzahl (REV)

Dem REV-Wort können Werte direkt oder per Parameter zugewiesen werden, wobei auch Dezimalzahlen (REAL64-Format) zulässig sind.

In Verbindung mit den Spindel-M-Funktionen sind beim REV-Wort folgende Verwendungsarten zu unterscheiden:

1. REV-Wort in Verbindung mit M03, M04, M19:
Wird das REV-Wort in Verbindung mit M03/M04 oder M19 programmiert, so wird der dem REV-Wort folgende Wert als Spindeldrehzahl interpretiert und an die Spindel ausge-geben.

2. REV-Wort in Verbindung mit M05:
Zusammen mit M05 wird der dem REV-Wort folgende Wert als Spindeldrehzahl in die Arbeitsdaten übernommen, aber nicht an die Spindel ausgegeben.

Das REV-Wort alleine erzeugt noch keine Bewegung im NC-Programm. Hierfür muß ein Spindelmodus M03, M04, M19 bekannt sein. Entsprechend wird auch die Programmierung von M03, M04 und M19 erst eine Bewegung bewirken, wenn das REV-Wort gesetzt wird.

Bei einem negativen REV-Wert wird eine Fehlermeldung ausgegeben.

Programmierbeispiel

Programmierung mit Spindel S1:

N10 S1[REV300] (Drehzahl 300 U/min. wird gespeichert)

N20 S1[M04] (Spindeldrehung ccw mit 300 U/min.)

N30 S1[M03 REV1000] (Spindeldrehung cw mit 1000 U/min.)

N40 S1[REV500] (M03 aktiv, somit Spindeldrehung cw mit 500 U/min.)

N50 S1[M05 REV100] (Spindelstopp, Drehzahl 100 U/min. wird gespeichert)

N60 S1[M04] (Spindeldrehung ccw mit 100 U/min.)

N70 S1[M05] (Spindelstopp)

N80 M30 (Programmende)

812_start

Kanalparametersatz [1]:

Für das S-Wort muß die Synchronisationsart spindelspezifisch festgelegt werden. Bei der Synchronisationsart 0 (NO_SYNCH) wird eine Fehlermeldung erzeugt, da ein S-Wort nicht unberücksichtigt bleiben darf.

:

spindel[0].bezeichnung S1

spindel[0].log_achs_nr 6

spindel[0].s_synch 0x00000001

spindel[0].m3_synch 0x00000002

spindel[0].m4_synch 0x00000002

spindel[0].m5_synch 0x00000008

spindel[0].m19_synch 0x00000001

:

812_end


Anwenderspezifische M-/H-Funktionen

Alle innerhalb der Klammerung programmierten anwenderspezifischen M-/H-Funktionen (Technologieinformationen) werden immer spindelspezifisch behandelt und ausgegeben.

Programmierbeispiel

Programmierung einer Spindel S2 mit zwei anwenderspezifischen M-Funktionen:

N10 S2[M3 REV300 M10 M11] (S2 dreht cw mit 300 U/min.,gibt M10/ M11 aus)

N20 M30 (Programmende)

Programmierung von zwei Spindeln S und S2:

N10 S[M10 M11] S2[REV1000 M3 M11] (S führt M10 und M11 aus, S2 dreht)
(cw mit 1000 U/min., gibt M11 aus)

N20 M30 (Programmende)

812_start

Kanalparametersatz [1]:

Die anwenderspezifischen M-/H-Funktionen werden in [1]-3 parametriert. Bei der Synchronisationsart 0 (NO_SYNCH) wird die M-/H-Funktion nicht ausgeführt.

:

# Festlegung der M-Funktionen und Synchronisationsarten

# ======================================================

m_synch[1] 0x00000001 MOS

m_synch[2] 0x00000002 MVS_SVS

:

m_synch[10] 0x00000002 MVS_SVS

m_synch[11 0x00000008 MNS_SNS

m_synch[12] 0x00000004 MVS_SNS

m_synch[48] 0x00000008 MNS_SNS

m_synch[49] 0x00000002 MVS_SVS

:

:

# Festlegung der H-Funktionen und Synchronisationsarten

# =====================================================

h_synch[1] 0x00000001 MOS

h_synch[2] 0x00000001 MOS

:

812_end


Referenzpunktfahrt (G74)

Die Referenzpunktfahrt kann spindelspezifisch durchgeführt werden. Die Programmierung der Spindel-M-Funktionen ist zusammen mit G74 nicht erlaubt.

Programmierbeispiel

Programmierung von zwei Spindeln S und S2:

N10 S[G74] S2[G74] (Referenzpunktfahrt S und S2)

N20 M30 (Programmende)


Override (G167)

Mit der Funktion G167 wird die externe Beeinflussung des Spindeloverrides spindelspezifisch ausgeschaltet und die tatsächlich programmierte Drehzahl gefahren.

Programmierbeispiel

Programmierung einer Spindel S2:

N10 S2[M3 REV1000] (Bei Override 50% ist Drehzahl 500 U/min.)

N20 S2[G167 REV1000] (Overridebeeinflussung aus,)
(Spindel dreht mit 1000 U/min.)

N30 S2[REV3000] (Overridebeeinflussung wieder aktiv,)
(Drehzahl 1500 U/min.)

N40 M30 (Programmende)


Abgeben/Anfordern von Spindelachsen (PUTAX/CALLAX)

Die Verfügbarkeit dieser Funktionalität ist von der Konfiguration und dem Versionsumfang abhängig.

Mit diesen Befehlen kann spindelspezifisch das Abgeben oder Holen der Spindelachse programmiert werden. Die Befehle dürfen nicht gleichzeitig zusammen mit anderen spindelspezifischen Befehlen verwendet werden.

Programmierbeispiel 1

%s-putcallax

(Move axis as spindle)

N10 S[CALLAX]

N20 M03 S1000

N30 G04 X2

N40 M05

(Exchange axis from spindle interpolator in channel)

N50 S[PUTAX]

N60 #CALL AX[ C, 4, 3]

(Drive axis in channel)

N70 X10 Y20 Z30 C40

N80 X-10 Y-20 Z-30 C--40

(Exchange axis from channel in spindle interpolator)

N90 #PUT AX[C]

N100 S[CALLAX]

(Move axis again as spindle)

N110 M04 S1000

N120 G04 X2

N130 M05

N140 M30

Programmierbeispiel 2

Programmierung mehrerer Spindeln:

:

N10 S[CALLAX] S2[CALLAX] S3[PUTAX] (S, S2 holen ihre Achse,)
(S3 gibt ihre ab)

N20 S[M3 REV200] S2[G74) (S dreht cw mit 200 U/min.),S2 referenziert)

N30 S3[ M4 REV3000] (Fehler, da S3 momentan ohne Achse)

N40 S[PUTAX REV400) (Fehler, PUTAX muß allein programmiert sein)

:


Übernahme der Werkzeugdynamikdaten (GET_DYNAMIC_DATA)

Die Verfügbarkeit dieser Funktionalität ist von der Konfiguration und dem Versionsumfang abhängig.

Die Werkzeugdynamikdaten (Minimale-/Maximale Drehzahl, Max. Beschleunigung) werden nach der Programmierung eines neuen Werkzeuges (D-Wort, #TOOL DATA) automatisch beim Übergang der Spindel vom Stillstand in die Interpolation wirksam. Die Übernahme und Berücksichtigung geänderter Werkzeugdynamikdaten bei konstanter Drehzahl erfolgt durch den spindelspezifischen Befehl "GET_DYNAMIC_DATA". Dieser Befehl darf nicht gleichzeitig zusammen mit anderen spindelspezifischen Befehlen verwendet werden.

Programmierbeispiel

N10 T1 D1 (Bereitstellen von WZ-Dynamikdaten innerhalb)
(der WZ-Daten)

N15 M6 (Einwechseln von WZ 1)

N20 S[M3 REV2002] (S dreht mit 2000 U/min. und WZ-Dynamikdaten)
(aus D1)

N25 X100 Y100 (Verfahrsatz mit WZ-Dynamikdaten D1)

N30 T99 D99 (Bereitstellen neuer WZ-Dynamikdaten innerhalb)
(der WZ-Daten)

N35 X200 Y150 (Verfahrsatz mit WZ-Dynamikdaten D1)

N40 S[GET_DYNAMIC_DATA] (Übernahme WZ-Dynamikdaten D99)

N45 X150 Y200 (Verfahrsatz mit WZ-Dynamikdaten D99)

N50 X50 Y50 (Verfahrsatz mit WZ-Dynamikdaten D99)

N60 S[M05] Z100 (Spindel stop)

N99 M30 (Programmende)


Beauftragung der Spindelvorsteuerung (G135, G136, G137)

Die Verfügbarkeit dieser Funktionalität ist von der Konfiguration und dem Versionsumfang abhängig.

Mit diesen Befehlen kann spindelspezifisch die Vorsteuerung programmiert werden. Die Befehle dürfen nicht gleichzeitig zusammen mit anderen spindelspezifischen Befehlen verwendet werden.

Die Aktivierung wird mit G135 programmiert. Eine spindelspezifische, prozentuale Gewichtung der berechneten Vorsteuergrößen erfolgt über G136. Sie ist auf 100% begrenzt. Mit G137 wird die Vorsteuerung ausgeschaltet. Es ist auch möglich, die Anwahl und Gewichtung der Vorsteuerung im gleichen Satz anzugeben.

Wenn die Vorsteuerung während des NC-Programms ein- bzw. ausgeschaltet wird, bleiben die Gewichtungsfaktoren auf dem durch G136 eingestellten Werten bzw., wenn kein G136 programmiert wird, auf 100%.

Programmierbeispiel

S[G135] Aktivierung der Vorsteuerung für S

S[G136=80] Angabe der Vorsteuergewichtung in Prozent

S[G137] Deaktivierung der Vorsteuerung

S2[G135 G136=90] Aktivierung mit Gewichtung 90% für S2

S2[G136=0] Änderung der Gewichtung auf 0%

S1[G135] Aktivierung mit Defaultgewichtung 100% für S1


Spindelvorschubkopplung (FEED_LINK)

Normalerweise wird die Drehzahl einer Spindel nur durch das Programm gesteuert, eine Möglichkeit der Beeinflussung der Spindeldrehzahl in Abhängigkeit von anderen Einflussgrößen besteht im Allgemeinen nicht. Für bestimmte Technologien (z.B. Fräsen im HSC-Betrieb, Kantenleimen in der Holzverarbeitung) und zur Erreichung eines einheitlichen Fräsbildes auf der Werkstückoberfläche ist jedoch auch eine Beeinflussung der Spindeldrehzahl durch externe Einflussgrößen notwendig.

Mit dem nachfolgenden Befehl kann die spindelspezifische Drehzahl unter Vorgabe verschiedener Parameter dynamisch an den Bahnvorschub gekoppelt werden. Bei entsprechender Einstellung paßt sich dann die Spindeldrehzahl unterschiedlichen Vorschubgeschwindigkeiten automatisch an. Dies ist insbesondere bei Werkstoffen notwendig, die durch nicht optimale Schnittwerte eventuell geschädigt werden können (z.B. Brandstellen an Werkstücken aus Holz oder Verlaufen durch Schmelzen bei Kunststoff etc. ).

Die Dynamikdaten der Spindel werden nicht berücksichtigt. Damit bei aktiver Vorschubkopplung keine zu grossen Abweichungen zwischen Soll- und Ist- Kopplungsfaktoren auftreten, muss der Anwender sicherstellen, dass entweder die Spindeldynamik ausreichend hoch ist oder die Bahndynamik entsprechend den Anforderungen reduziert wird.

Syntax zur Programmierung einer Spindelvorschubkopplung:

<Spindelname> [ FEED_LINK [ ON | OFF ] [ [ [ FACT<expr> ] [ CORR<expr> ] ] | AUTO ] ]

<Spindelname> Name der zu koppelnden Spindel

FEED_LINK Kennung für die Spindelvorschubkopplung. Muß immer als erstes Schlüsselwort programmiert sein.

ON Anwahl der Spindelvorschubkopplung

OFF Abwahl der Spindelvorschubkopplung

FACT<expr>Synchronisierte Kopplung: Vorgegebener Koppelfaktor in [0.1 %] zwischen Bahnvorschub (F-Wort) und der Ausgangsdrehzahl der Spindel. Der Kopplungsfaktor kann während aktiver Kopplung jederzeit neu programmiert werden.

CORR<expr> Korrekturfaktor in [0.1 %] zur Modifikation des Kopplungsfaktors, der resultierende Kopplungsfaktor ergibt sich dann als Produkt von FACT und CORR (KRES = FACT*CORR)

AUTO Fliegende Kopplung: Koppelfaktor wird automatisch aus aktueller Solldrehzahl der Spindel und aktuellem Bahnvorschub bestimmt und bleibt bis zur Koppelabwahl konstant.

q Das Schlüsselwort AUTO kann nur zusammen mit ON oder OFF programmiert werden. FACT und CORR können auch bei bereits aktiver Vorschubkopplung erneut programmiert werden.

q Bei Anwahl der Kopplung muß sich die Spindel im Endlosdrehen mit Drehzahl !=0 befinden. Der Bahnvorschub muß bei automatischer Bestimmung des Kopplungsfaktors ebenfalls !=0 sein.

q Die bei Abwahl der Vorschubkopplung aktive Spindeldrehzahl wird als Spindelsolldrehzahl beibehalten. Ggf. muß die Spindeldrehzahl also nach Abwahl der Kopplung über das S Wort neu beauftragt werden.

Eine Spindelbeaufragung über das S Wort ist bei aktiver Vorschubkopplung wirkungslos !

Es ist ein Werkzeug mit Dynamikparametern zu definieren und zu aktivieren. Über die Mindestdrehzahl dieses Werkzeugs [5] -1, kann dann im Allgemeinen verhindert werden daß die Spindel beim Fräsen mit aktiver Vorschubkopplung und Bahngeschwindigkeit 0 zum Stillstand kommt und ein Festfressen des Werkzeugs auftritt.

Programmierbeispiele

Beispiel 1: (Koppelfaktor wird manuell programmiert, Änderung des wirksamen Koppelfaktors durch Programmierung des Korrekturfaktors).

N05 G00 X0 Y0 Z0

N08 G01 G90 X20 F2

N10 M03 S15

N20 G01 G90 X40

N25 S[FEED_LINK ON FACT=500]

N30 G01 G91 X5 F2

N40 S[FEED_LINK CORR=1100]

N50 X10 F2

N60 S[FEED_LINK CORR=900]

N70 X20 F2

N80 S[FEED_LINK CORR=1100]

N90 X40 F2

N100 S[FEED_LINK CORR=900]

N110 X80 F2

N120 S[FEED_LINK CORR=1100]

N130 X40 F2

N140 S[FEED_LINK CORR=900]

N150 X20 F2

N160 S[FEED_LINK CORR=1100]

N170 X5 F2

N180 S[FEED_LINK OFF]

M30

Beispiel 2: (Fliegende Kopplung, Koppelfaktor wird automatisch aus aktueller Solldrehzahl der Spindel und aktuellem Bahnvorschub bestimmt).

N05 G00 X0 Y0 Z0

N08 G01 G90 X20 F1

N10 M03 S15

N20 G01 G90 X40

N25 S[FEED_LINK ON AUTO]

N30 G01 G91 X5 F1

N40 X10 F2

N50 X20 F4

N60 X40 F8

N70 X80 F16

N80 X40 F8

N90 X20 F4

N100 X10 F2

N110 X5 F1

N80 S[FEED_LINK OFF]

M30


Wechsel der Hauptspindel

#MAIN SPINDLE [ [ <Spindelname> | <expr>] ]

<Spindelname> Defaultspindelbezeichnung gemäß [1] -16.

<expr> log. Achsnummer der Spindel gemäß [1] -16.

Über den Befehl #MAIN SPINDLE kann im NC-Programm die Festlegung der Hauptspindel geändert werden. Die neue Hauptspindel wird durch Angabe des Defaultnamens [1]-16 oder der zugehörigen logischen Achsnummer angewählt.

Ohne Angabe einer Spindel kann der Grundzustand (wie nach Hochlauf) wieder hergestellt werden, d.h. die im Kanalparametersatz [1]-17 vorgegebene Spindel wird wieder zur Hauptspindel.

812_start

Kanalparametersatz [1]:

Beispielkonfiguration eines 1-kanaligen Systems mit 3 Spindeln. Spindel mit der Achsnummer 6 ist Hauptspindel:

:

# Spindeldaten

# ============

spdl_anzahl 3

main_spindle_ax_nr 6

main_spindle_name S

:

spindel[0].bezeichnung S1

spindel[0].log_achs_nr 6

:

spindel[1].bezeichnung S2

spindel[1].log_achs_nr 11

:

spindel[2].bezeichnung S3

spindel[2].log_achs_nr 30

:

Konfiguration nach Hochlauf:

S1 ist Hauptspindel mit dem Namen S.

S2 und S3 sind weitere Spindeln.

812_end

Programmierbeispiel

%

N10 S100 M3 S2[REV200 M3] S3[REV300 M4]

N20 #MAIN SPINDLE [S2] (S2 wird neue Hauptspindel "S")

N30 S110 M3 S1[REV210 M3] S3[REV310 M4]

N40 #MAIN SPINDLE [S3] (S3 wird neue Hauptspindel "S")

N50 S120 M3 S1[REV220 M3] S2[REV320 M4]

N60 #MAIN SPINDLE (Zurück in Grundzustand S1 -> "S")

N70 S150 M3 S2[REV250 M3] S3[REV350 M4]

N80 M5 S2[M5] S3[M5] (Alle Spindeln STOP)

N99 M30

Solange eine Spindel eine Hauptspindel ist, kann sie entweder mit dem festgelegten Hauptspindelnamen [1] -18 oder mit ihrem Defaultnamen [1] -16 programmiert werden. Erst nach Anwahl einer anderen Hauptspindel durch #MAIN SPINDLE[ ] ist sie wieder ausschliesslich unter ihrem Defaultnamen ansprechbar.

Für obiges Beispiel gilt:

Zulässige Name | Spindel 1 | Spindel 2 | Spindel 3
...nach Hochlauf | S oder S1 | S2 | S3
...nach #MAIN SPINDLE [S2] | S1 | S oder S2 | S3
...nach #MAIN SPINDLE [S3] | S1 | S2 | S oder S3
...nach #MAIN SPINDLE | S oder S1 | S2 | S3

Wie bereits erwähnt, kann die Hauptspindel in der herkömmlichen DIN-Syntax programmiert werden. In diesem Fall können alle Befehle gemäß Tabelle 14-1verwendet werden. Die Hauptspindel kann aber auch in der spindelspezifischen Syntax programmiert werden. In diesem Fall steht dann jedoch nur der eingeschränkte Befehlsumfang zur Verfügung (siehe ebenfalls Tabelle 14-1).

Programmierbeispiel

Folgende NC-Zeilen sind für die Hauptspindel gleichermaßen zulässig:

:

N10 S1=1000 M3 oder

N20 S1000 M3 oder

N30 S1[REV1000 M3] oder

N40 S[REV1000 M3]

:


Spindelsynchronbetrieb

Neben dem Synchronbetrieb von Bahnachsen (Definition, Aktivierung, Deaktivierung) können über den LINK-Befehl auch Master-/ Slavebeziehungen für Spindelachsen definiert werden.

#SET AX LINK [ <expr> , <Slave>= <Master> {, <Slave>= <Master>} ]

oder alternativ

#AX LINK [ <expr> , <Slave>= <Master> {, <Slave>= <Master>} ]

<expr> Nummer der Kopplungsgruppe

<Slave> Bezeichnung der Slavespindel des Kopplungspaares i

<Master> Bezeichnung der Masterspindel des Kopplungspaares i

Hierbei gelten ergänzend zum Kapitel Synchronbetrieb folgende Regeln:

q Die Kopplungspaare werden über die Spindelnamen, die im Kanal bekannt sind, definiert. D.H. es können ausschließlich die im Kanal bekannten Spindeln gekoppelt werden.

q Im Kanalparameter [1]-13 kann die Kopplungsgruppe 0 als Defaultgruppe vorbelegt werden. Diese ist nach dem Hochlauf direkt durch #ENABLE AX LINK [0] ansprechbar. Sie kann nicht im NC-Programm neu definiert werden.

q Bei der Definition dieser Defaultkopplungsgruppe sind die Spindelnamen zu verwenden, wie sie nach dem Hochlauf im NC-Kern bekannt sind [1]-16/-18.

Programmierbeispiel

Parametrierung in den Kanalparametern [1]: S (Hauptspindelname für S1), S1, S2, S3

Die Kopplungspaare dürfen mit den Spindelnamen S, S2, S3 gebildet werden. Bei S1 wird eine Fehlermeldung erzeugt!

Programmierung und An-/Abwahl einer Spindelkopplung:

N10 #SET AX LINK[1, S2=S, S3=S] (Hauptspindel ist Master für S2 und S3)

N20 #ENABLE AX LINK[1] (Anwahl der Spindelkopplungen)

N30 S1000 M3 (Hauptspindel S und S2 und S3 drehen cw mit)
(1000 U/min.)

N40 DISABLE AX LINK (Abwahl der Spindelkopplungen)

N40 M30 (Programmende)

q In einem #SET AX LINK-Befehl dürfen innerhalb eines Kopplungspaares keine unterschiedlichen Achstypen definiert werden. Die Kopplungspaare dürfen jedoch zusammen mit Kopplungspaaren anderen Achsentyps eine Kopplungsgruppe bilden.

Beispiele:

#SET AX LINK [1, B=S, S2=X] FALSCH

#SET AX LINK [1, B=X, S2=S] ERLAUBT

q Während einer aktiven Kopplungsgruppe darf eine Spindel, die in dieser Gruppe vorhanden ist, nicht mit #MAIN SPINDLE [..] zur Hauptachse deklariert werden, da sonst Inkonsistenzen zwischen Decoder und Interpolator entstehen.

q Desweiteren muß dem Programmierer bewußt sein, das durch Anwendung von #MAIN SPINDLE [..] eventuell bereits definierte Kopplungsgruppen nicht mehr aktiviert werden dürfen, weil die Spindelnamen nicht mehr konsistent sind.

q Die Technologie-Information für M03, M04, M05 werden vom NC-Kern sowohl für die Master- als auch die Slavespindel synchronisiert.

q Die externe Bewegungsbeeinflussung der Masterspindel durch FEEDHOLD und OVERRIDE wirkt nicht auf die Slavespindeln. Auch während einer aktiven Kopplung werten die Slavespindeln weiterhin ihre eigenen OVERRIDE- und FEEDHOLD-Schnittstellen aus.

q Master- und Slavespindeln fahren bei M19 auf die gleiche absolute Position. Die Position wird evtl. nicht zeitgleich erreicht, wenn die Startposition oder die dynamischen Daten der Spindeln unterschiedlich sind.

q Bei einem Programmabbruch wird die Kopplung aufgehoben.

q Wenn eine Spindel als Master oder als Slave aktiv ist, darf sie nur von dem Kanal, der den Link aktiviert hat, beauftragt werden.

812_start

Kanalparametersatz [1]:

:

# Vorbelegung möglicher Achs-Links für Synchronbetrieb

# ====================================================

#synchro_data.koppel_gruppe[0].paar[0].log_achs_nr_slave 4

#synchro_data.koppel_gruppe[0].paar[0].log_achs_nr_master 1

#synchro_data.koppel_gruppe[0].paar[0].mode 0->AX_LINK

#synchro_data.koppel_gruppe[0].paar[1].log_achs_nr_slave 11

#synchro_data.koppel_gruppe[0].paar[1].log_achs_nr_master 6

#synchro_data.koppel_gruppe[0].paar[1].mode 1 ->SPDL_LINK

:

812_end


Satzübergreifende Synchronisierung (Late Sync)

Mehr:

button Implizite Synchronisierung

button Explizite Synchronisierung


Implizite Synchronisierung

Beschleunigungs- und Verzögerungsvorgänge der Spindel können zu erheblichen Totzeiten bei der Programmbearbeitung führen, da häufig beim Stillstand der Bearbeitung die Spindel erst auf Drehzahl gebracht wird (z.B. M03 vom Typ MVS_SVS), bzw. während eines Positioniersatzes mit G00 (M3 vom Typ MVS_SNS).

Für M-Funktionen besteht über die implizite Synchronisation die Möglichkeit, die Quittierung erst zu prüfen, wenn auf eine Bearbeitung mit G01/G02/G03/G151 etc. umgeschaltet wird. Dieses Verhalten wird mit der Synchronisationsart MVS_SLM erreicht. Die Kennung kann nur exklusiv zu den anderen Synchronisationsarten verwendet werden [1]-3.

Programmierbeispiel

:

N10 G00 M03 S1000 Z600 (M03: Synchronisationsmode MVS_SLM)

N20 X100 Y100

N30 Z400

N40 G01 Z200 (Prüfen, ob M03 quittiert ist)

:

In N40 prüft der Interpolator auf Quittierung der M-Funktion zu Beginn des Bremszeitpunktes. Wenn die Quittierung erfolgt:ist, wird am Satzende nicht angehalten. Ist keine Quittierung erfolgt, so wird verzögert und wenn bis zum Satzende keine Quittierung erfolgt ist, wird im Zielpunkt angehalten.

Bis zur Synchronisierung durch einen Bewegungssatz ist es möglich, weitere kanalspezifische M-Funktionen zu programmieren. Die Synchronisierung der kanalspezifischen M-Funktionen wird vollständig parallel zur achsspezifischen Synchronisierung behandelt.


Explizite Synchronisierung

Wird zum Positionieren G01 verwendet, so kann keine implizite Synchronisierung gemäß Kap. 14.6.1 durchgeführt werden.

Zur satzübergreifenden Synchronisierung steht dazu der Befehl #EXPL SYN zur Verfügung, der eine explizite Synchronisierung von M-Funktion ermöglicht.

#EXPL SYN (nicht modal)

Eine M-Funktion. die über diesen zusätzlichen Befehl zu synchronisieren ist, wird in [1]-3 mit der Synchronisationsart MVS_SLP definiert. Die Kennung kann nur exklusiv zu den anderen Synchronisationsarten verwendet werden [1]-3.

Programmierbeispiel

:

N10 G01 M03 S1000 Z200 F5000 (M03: Synchronisationsmode MVS_SLP)

N20 X100 Y100

N30 Z400

N40 #EXPL SYN (Prüfen, ob M03 quittiert ist)

:

Zum Bremszeitpunkt prüft die Bahn aufgrund der Anweisung "#EXPL SYN" ob die Quittierung eingetroffen ist, wenn dies nicht der Fall ist wird abgerampt.

Vor dem Synchronisierungsbefehl können weitere kanalspezifische und achsspezifische M-Funktionen bearbeitet werden.


Synchronisierung der Spindel-M-Funktionen

Die Synchronisation zwischen dem Interpolator und der jeweiligen Spindel erfolgt direkt, d.h. die Quittierung von M03, M04 (Drehzahl erreicht) und M05 (Drehzahl Null) erfolgt durch die Spindel selbst. Das Bit PLC_INFO, daß zusätzlich zu den bestehenden Synchronisationsarten [1]-3 gesetzt werden kann, bestimmt ob auch mit der SPS quittiert werden soll. Dabei ist folgendes zu beachten:

Bei gesteuerten Spindeln wird generell bei jeder Spindel-M-Funktion automatisch auch mit der SPS quittiert. Es ist somit nicht erforderlich, das PLC_INFO-Bit zusätzlich zu setzen.

Sinnvoll ist die Verwendung des PLC_INFO-Bits bei geregelten Spindeln. Hier kann für jede Spindel-M-Funktion zusätzlich zur Synchronisationsart das Bit PLC_INFO gesetzt werden, wodurch dann eine Quittierung mit der SPS angestossen wird.

812_start

Kanalparametersatz [1]:

Spindel S1 soll geregelte Spindel sein.

:

spindel[0].bezeichnung S1

spindel[0].log_achs_nr 6

spindel[0].s_synch 0x00020001 PLC_INFO, MOS

spindel[0].m3_synch 0x00020002 PLC_INFO, MVS_SVS

spindel[0].m4_synch 0x00020004 PLC_INFO, MVS_SNS

spindel[0].m5_synch 0x00020002 PLC_INFO, MVS_SVS

spindel[0].m19_synch 0x00000008 MNS_SNS

spindel[0].s_prozess_zeit 0

spindel[0].m3_prozess_zeit 0

spindel[0].m4_prozess_zeit 0

spindel[0].m5_prozess_zeit 0

spindel[0].m19_prozess_zeit 0

:

812_end


PLCopen-Programmierung

Innerhalb der Motion Control Platform (MCP) werden für die Bewegungsaufgaben verschiedene Funktionsbausteine (FB) zur Verfügung gestellt. Diese FB wirken auf eine einzelne Achse und werden über die PLC bedient. Jede Achse ist hierbei als s.g. Single Axis Interpolator (SAI) im System angelegt.

Solche Achsen können alternativ auch über das NC-Programm angesprochen werden, da ein solcher SAI wie eine herkömmlichen Spindel im System angelegt wird. Für die nachfolgenden FB's stehen dazu spezielle NC-Befehle zur Verfügung, über die eine PLCOpen konforme Programmierung in NC-Syntax möglich ist:

Ø MC_Home Referenzpunktfahrt

Ø MC_MoveAbsolute Achsbewegung auf absolute Position

Ø MC_MoveAdditive Relative Achsbewegung zur kommandierten Position

Ø MC_MoveRelative Relative Achsbewegung zur aktuellen Position

Ø MC_MoveSuperImposed Relative Achsbewegung zu einer bereits aktiven Bewegung

Ø MC_MoveVelocity Endlose Achsbewegung mit einer Geschwindigkeit

Ø MC_Stop Anhalten einer Achsbewegung

Ø MC_GearIn Getriebekopplung mit Übersetzung

Ø MC_GearOut Lösen einer Getriebekopplung

Ø MC_Phasing Phasenverschiebung von Kopplungen

Folgendes Topologiebild zeigt die grundsätzliche Anordung der SAI-(Spindel-)Achsen im Gesamtsystem.

Eine SAI-Achse wird im NC-Programm in spindelspezifischer Programmiersyntax angesprochen. Dazu muß sie analog zur Konfiguration einer Spindel in der Kanalparameterliste mit ihrem Adressbuchstaben und weiteren Daten im NC-Kanal bekannt gemacht werden. Wichtige Einträge in den Kanalparametern sind insbesondere:

Ø spdl_anzahl (P-CHAN-00082)  Gesamtzahl der (SAI-)Spindeln

Ø bezeichnung (P-CHAN-00007)  Name der (SAI-)Spindel

Ø log_achs_nr (P-CHAN-00036)  Logische Achsnummer der (SAI-)Spindel

Weitere Informationen können der Dokumentation [1]-Kapitel: Konfiguration der Spindeln- und dem Kapitel Parametrierung von Spindeln entnommen werden.

Die PLCopen-Funktionen

Ø MC_MoveSuperImposed

Ø MC_GearIn

Ø MC_GearOut

Ø MC_Phasing

erfordern zusätzliche spezifische SAI-Eigenschaften der (Spindel-)Achse, die in den Achsparametern konfiguriert werden. Die notwendigen Einstellungen können der Dokumentation [2]-Kapitel: Einstellungen für SAI- entnommen werden.

Im folgenden wird zum jeweiligen NC-Befehl der zugehörige FB dargestellt. Die Syntax dieser NC-Befehle sowie die Einheiten der programmierten Werte lehnen sich dabei an die entsprechenden Eingangspins (VAR_INPUT) der zugeordneten FB's an.

Allgemeine Syntax eines (SAI-)NC-Befehls:

<Spindelname>[<FB-Name> <Eingangspin1> <Eingangspin2> <Eingangspin n...>]

Der Achsname zu Beginn des NC-Befehls adressiert die (SAI)-Spindelachse, die über den NC-Kanal angesprochen wird.

Die Beschreibungen der Eingangspins sowie der Einheiten und Wertebereiche können auch der Dokumentation [9] entnommen werden.

Der Eingangspin "Execute" wird immer implizit durch die Programmierung des NC-Befehls belegt. Es ist daher in den NC-Befehlen kein eigenes Schlüsselwort für diesen Pin vorhanden.

Mehr:

button Befehl MC_Home

button Befehl MC_MoveAbsolute

button Befehl MC_MoveAdditive

button Befehl MC_MoveRelative

button Befehl MC_MoveSuperImposed

button Befehl MC_MoveVelocity

button Befehl MC_Stop

button Befehl MC_GearIn

button Befehl MC_GearOut

button Befehl MC_Phasing


Befehl MC_Home

TwinCAT CNC: Überblick

BefehlMC_Home

Mit MC_Home wird eine Referenzpunktfahrt (Justage) der Achse beauftragt. Wie eine Achse auf diese Beauftragung reagiert, hängt im wesentlichen von der Art des Referenzierungsvorgangs ab.

NC-Befehl:

<Achsname>[ MC_Home ]

Blockdiagramm des Funktionsbausteins in PLCopen:

Programmierbeispiel

S[MC_Home]


Befehl MC_MoveAbsolute

Mit MC_MoveAbsolute wird eine Bewegung der Achse auf eine absolute Position beauftragt. Die Bewegung wird immer ruckbegrenzt mit dem in Jerk eingestellten konstanten Ruck ausgeführt. Der Wert gilt sowohl für das Beschleunigen mit Acceleration, als auch für das Bremsen mit Deceleration.

NC-Befehl:

<Achsname> [ MC_MoveAbsolute Position =<expr> Velocity =<expr> Acceleration =<expr>
 Deceleration =<expr> Jerk =<expr> Direction =<expr> ]

Blockdiagramm des Funktionsbausteins in PLCopen:

Eingangspin | Einheit
Position | [0,1µm or 10-4 °]
Velocity | [1µm/s or 10-3 °/s]
Acceleration | [1mm/s2 or 1°/s2]
Deceleration | [1mm/s2 or 1°/s2]
Jerk | [1m/s3 or 1000°/s3]
Direction | 1 Positive Richtung 2 Kürzester Weg 3 Negative Richtung 4 Derzeitige Richtung

Programmierbeispiel

S[MC_MoveAbsolute Position=133 Velocity=1000 Acceleration=500
Deceleration=600 Jerk=200 Direction=2]


Befehl MC_MoveAdditive

Mit MC_MoveAdditive wird eine relative Bewegung beauftragt, zuzüglich zur kommandierten Position, wenn die Achse im Zustand Discrete Motion ist. Die Bewegung wird immer ruckbegrenzt mit dem in Jerk eingestellten konstanten Ruck ausgeführt. Der Wert gilt sowohl für das Beschleunigen mit Acceleration, als auch für das Bremsen mit Deceleration.

Befindet sich die Achse im Zustand Continuous Motion und erhält eine Beauftragung durch diesen Befehl, wird die relative Strecke zur aktuellen Position zum Zeitpunkt der Beauftragung addiert.

NC-Befehl:

<Achsname> [ MC_MoveAdditive Distance =<expr> Velocity =<expr> Acceleration =<expr>
 Deceleration =<expr> Jerk =<expr> ]

Blockdiagramm des Funktionsbausteins in PLCopen:

Eingangspin | Einheit
Distance | [0,1µm or 10-4 °]
Velocity | [1µm/s or 10-3 °/s]
Acceleration | [1mm/s2 or 1°/s2]
Deceleration | [1mm/s2 or 1°/s2]
Jerk | [1m/s3 or 1000°/s3]

Programmierbeispiel

S[MC_MoveAdditive Distance=277 Velocity=1100 Acceleration=550
Deceleration=660 Jerk=220]


Befehl MC_MoveRelative

Mit MC_MoveRelative wird eine relative Bewegung zuzüglich zur aktuellen Position beauftragt. Unabhängig davon, ob sich die Achse im Zustand Discrete Motion oder Continuous Motion befindet. Die Bewegung wird immer ruckbegrenzt mit dem in Jerk eingestellten konstanten Ruck ausgeführt. Der Wert gilt sowohl für das Beschleunigen mit Acceleration, als auch für das Bremsen mit Deceleration.

NC-Befehl:

<Achsname> [ MC_MoveRelative Distance =<expr> Velocity =<expr> Acceleration =<expr>
 Deceleration =<expr> Jerk =<expr> ]

Blockdiagramm des Funktionsbausteins in PLCopen:

Eingangspin | Einheit
Distance | [0,1µm or 10-4 °]
Velocity | [1µm/s or 10-3 °/s]
Acceleration | [1mm/s2 or 1°/s2]
Deceleration | [1mm/s2 or 1°/s2]
Jerk | [1m/s3 or 1000°/s3]

Programmierbeispiel

S[MC_MoveRelative Distance=321 Velocity=1200 Acceleration=555
Deceleration=666 Jerk=222]


Befehl MC_MoveSuperImposed

Mit MC_MoveSuperImposed wird eine relative Bewegung beauftragt, zusätzlich zu einer bereits aktiven Bewegung. Die aktive Bewegung wird nicht unterbrochen, sondern mit der beauftragten überlagert. Die Bewegung wird immer ruckbegrenzt mit dem in Jerk eingestellten konstanten Ruck ausgeführt. Der Wert gilt sowohl für das Beschleunigen mit Acceleration, als auch für das Bremsen mit Deceleration.

Da sich bei der überlagerten Interpolation auch die Beschleunigungen überlagern, ist durch entsprechende Achsparametrierung sicherzustellen, dass die Achse nicht dynamisch überfordert wird.

NC-Befehl:

<Achsname> [ MC_MoveSuperImposed Distance =<expr> VelocityDiff =<expr>
 Acceleration =<expr> Deceleration =<expr> Jerk =<expr> ]

Blockdiagramm des Funktionsbausteins in PLCopen:

Eingangspin | Einheit
Distance | [0,1µm or 10-4 °]
VelocityDiff | [1µm/s or 10-3 °/s]
Acceleration | [1mm/s2 or 1°/s2]
Deceleration | [1mm/s2 or 1°/s2]
Jerk | [1m/s3 or 1000°/s3]

Programmierbeispiel

S[MC_MoveSuperImposed Distance=321 VelocityDiff=783 Acceleration=811
Deceleration=922 Jerk=432]


Befehl MC_MoveVelocity

Mit MC_MoveVelocity beauftragt man eine endlose Bewegung mit der angegebenen Geschwindigkeit. Die Bewegung wird immer ruckbegrenzt mit dem in Jerk eingestellten konstanten Ruck ausgeführt. Der Wert gilt sowohl für das Beschleunigen mit Acceleration, als auch für das Bremsen mit Deceleration.

Um die Bewegung zu stoppen muss der Befehl durch einen anderen Befehl unterbrochen werden, der eine neue Beauftragung an die Achse absetzt.

In Verbindung mit einem MC_MoveSuperImposed bleibt der Ausgang InVelocity TRUE.

NC-Befehl:

<Achsname> [ MC_MoveVelocity Velocity =<expr> Acceleration =<expr> Deceleration =<expr>
 Jerk =<expr> Direction =<expr> ]

Blockdiagramm des Funktionsbausteins in PLCopen:

Eingangspin | Einheit
Velocity | [1µm/s or 10-3 °/s]
Acceleration | [1mm/s2 or 1°/s2]
Deceleration | [1mm/s2 or 1°/s2]
Jerk | [1m/s3 or 1000°/s3]
Direction | 1 Positive Richtung 3 Negative Richtung 4 Derzeitige Richtung

Programmierbeispiel

S[MC_MoveVelocity Velocity=1333 Acceleration=770 Deceleration=880
Jerk=99 Direction=1]


Befehl MC_Stop

Der MC_Stop führt zu einem gesteuerten Bewegungshalt und führt die Achse in den Zustand Stopping. Der Bewegungshalt wird immer ruckbegrenzt mit dem in Jerk eingestellten konstanten Ruck für den Aufbau der Bremsverzögerung ausgeführt.

Er bricht jede laufende Beauftragung durch andere (SAI-)Bewegungsbefehle ab.

NC-Befehl:

<Achsname> [ MC_Stop Deceleration =<expr> Jerk =<expr> ]

Blockdiagramm des Funktionsbausteins in PLCopen:

Eingangspin | Einheit
Deceleration | [1mm/s2 or 1°/s2]
Jerk | [1m/s3 or 1000°/s3]

Programmierbeispiel

S[MC_Stop Deceleration=999 Jerk=256]


Befehl MC_GearIn

Der MC_GearIn kommandiert eine Getriebekopplung mit einer Getriebeübersetzung. Die Getriebeübersetzung definiert das Geschwindigkeitsverhältnis zwischen Master- und Slaveachse. Die Synchronisierung auf Geschwindigkeit erfolgt ruckbegrenzt. Der Ruckwert ist im Befehl anzugeben.

Die Slaveachse kann entweder auf Mastersollwerte oder auf Masteristwerte gekoppelt werden. Die Auswahl wird im "Mode" getroffen.

NC-Befehl:

<Achsname> [ MC_GearIn Master =<expr> RatioNumerator =<expr> RatioDenominator =<expr>
 Acceleration =<expr> Deceleration =<expr> Jerk =<expr> Mode =<expr> ]

Blockdiagramm des Funktionsbausteins in PLCopen:

Eingangspin | Einheit
Master | Logische Achsnummer der Masterachse
RatioNumerator | Zähler des Verhältnisses der Getriebeübersetzung
RatioDenominator | Nenner des Verhältnisses der Getriebeübersetzung
Acceleration | [1mm/s2 or 1°/s2]
Deceleration | [1mm/s2 or 1°/s2]
Jerk | [1m/s3 or 1000°/s3]
Mode | 0 | Kopplungsart zwischen Master- und Slaveachse: Sollwertseitige Kopplung. Automatischer Phasenausgleich: aus.
 | 128 | Kopplungsart zwischen Master- und Slaveachse: Istwertseitige Kopplung.
 | 256 | Automatischer Phasenausgleich: ein. Darf nur für Testzwecke verwendet werden!

Programmierbeispiel

S[MC_GearIn Master=11 RatioNumerator=2 RatioDenominator=3
Acceleration=500 Deceleration=600 Jerk=200 Mode=11]


Befehl MC_GearOut

Der MC_GearOut löst die Koppelung der Slaveachse an die Masterachse, welche durch die Vorgabe eines Geschwindigkeitsverhältnisses hergestellt wurde. Die aktuelle Geschwindigkeit des Slave wird beibehalten (Endlosbewegung).

NC-Befehl:

<Achsname> [ MC_GearOut ]

Blockdiagramm des Funktionsbausteins in PLCopen:

Programmierbeispiel

S[MC_GearOut]


Befehl MC_Phasing

Ein MC_Phasing wird dazu benutzt, um eine Verschiebung der Slaveachse bezüglich der Masterachse zu erreichen. Dazu wird aus Sicht der Slaveachse eine Phasenverschiebung der Masterachse vorgegeben und die Slaveachse versucht durch Beschleunigung oder Verzögerung diese Verschiebung zu beseitigen. Die Bewegung wird immer ruckbegrenzt mit dem in Jerk eingestellten konstanten Ruck ausgeführt. Der Wert gilt sowohl für das Beschleunigen mit Acceleration, als auch für das Bremsen mit Deceleration.

Das mechanische Analogon ist die Lösung der Kopplung von Masterachse und Slaveachse für einen begrenzten Zeitraum.

Beim Camming bewirkt dieser Befehl eine Veränderung der scheinbaren Masterposition aus Sicht des Slaves. Beim Gearing wird eine Phasenverschiebung zwischen Master und Slave durch Beauftragung einer überlagerten Bewegung im Slave veranlasst. Der MC_Phasing wirkt beim Gearing somit also wie ein MC_MoveSuperImposed (in den er steuerungsintern tatsächlich umgewandelt wird).

Die Dynamikwerte: Velocity, Acceleration und Deceleration beziehen sich beim Camming auf das Verändern der scheinbaren Masterposition aus Sicht des Slaves, während sie sich beim Gearing auf die überlagerte Bewegung der Slaveachse selbst beziehen.

NC-Befehl:

<Achsname> [ MC_Phasing Master =<expr> PhaseShift =<expr> Velocity =<expr>
 Acceleration =<expr> Deceleration =<expr> Jerk =<expr> ]

Blockdiagramm des Funktionsbausteins in PLCopen:

Eingangspin | Einheit
Master | Logische Achsnummer der Masterachse
PhaseShift | [0,1µm or 10-4 °]
Velocity | [1µm/s or 10-3 °/s]
Acceleration | [1mm/s2 or 1°/s2]
Deceleration | [1mm/s2 or 1°/s2]
Jerk | [1m/s3 or 1000°/s3]

Programmierbeispiel

S[MC_Phasing Master=11 PhaseShift=25 Velocity=1000 Acceleration=500
Deceleration=600 Jerk=200]


Symbolische Zeichenketten

Ähnlich einer Makrobildung in der Hochsprache 'C' ermöglicht die Funktionalität Symbolische Zeichenketten die Zuordnung eines symbolischen Namens (Makronamen) zu einem ausführbaren NC-Code. Es können mathematische Ausdrücke und ein oder mehrere komplette NC-Befehle zugewiesen werden. Bei Angabe des Makronamens wird dann der entsprechende NC-Code verarbeitet. Damit ist eine kompakte Programmierung möglich.

Mehr:

button Makrodefinition und Initialisierung

button Schachtelung von Makros

button Verwendung in mathematischen Ausdrücken

button Verwendung auf NC-Satz-Ebene


Makrodefinition und Initialisierung

Macros können sowohl im Kanalparametersatz [1]-4 als auch über das NC-Programm definiert werden. Im NC-Programm gilt folgende Syntax:

"<Makroname>" = "<NC_Code>"

<Makroname> Name des Makros

<NC_Code> Zu ersetzende Zeichenkette

Sowohl der Makroname (linke Seite der Zuweisung) als auch der zu ersetzende Text (rechte Seite) müssen in Anführungszeichen eingeschlossen sein. Bei der Decodierung wird zwischen Groß- und Kleinschreibung unterschieden. Ob bereits angelegte Makros überschrieben werde dürfen, ist fest vorgegeben [6]-6.39. Die Makro-Definitionen sind programmübergreifend gültig und bleiben bis zum nächsten Hochlauf erhalten, sofern die Initialisierung der Makrotabelle nicht explizit programmiert wird. Die maximale Anzahl der Makrodefinitionen [6]-6.25 sowie deren Länge [6]-6.37/-6.38 ist fest vorgegeben.

Makrodefinitionen dürfen mit anderen Befehlen zusammen in einem Satz geschrieben werden.

Zur Initialisierung der Makrotabelle ist der Befehl

#INIT MAKRO TAB

zu verwenden. Durch diesen Befehl werden alle zuvor in NC-Programmen definierten Makros in der Tabelle gelöscht. Die über die Kanalparameter [1]-4 vorbelegten Makros bleiben erhalten.


Schachtelung von Makros

Die Verwendung von Makros auf der rechten Seite der Zuweisung (s.g. Schachtelung) in Kombination mit NC-Code ist erlaubt. Die maximale Schachtelungstiefe ist fest vorgegeben [6]-6.40. Die Schachtelung wird durch ein vorangestelltes '\'-Zeichen vor den begrenzenden Anführungszeichen angezeigt. Es ist darauf zu achten, daß immer komplette Ausdrücke eines NC-Satzes (NC-Befehl, mathematischer Ausdruck, Term) in einem Makro zusammengefaßt sind. Damit ist ausgeschlossen, daß ein Makro nur den Adreßbuchstaben eines NC-Befehls ohne den dazugehörigen mathematischen Ausdruck repräsentiert. Auf diesen Zusammenhang wird in den folgenden Kapiteln eingegangen.

"<MAKRO_NAME>" = "<NC_CODE> \"<MAKRO_NAME_i>\" <NC_CODE>"

Ein Makro darf nicht den eigenen Makronamen als geschachtelten Aufruf enthalten. Zulässig ist nur der geschachtelte Aufruf anderer Makros.

Programmierbeispiel

N10 "POS_1" = "X500 Y200" (Makro-Definition)

N20 "MOVE1" = "G01 \"POS1\" F1000 (Makro-Definition mit Schachtelung)

N30 "MOVE1" (Makro-Aufruf)

M30


Verwendung in mathematischen Ausdrücken

Makronamen können arithmetischen Ausdrücken und Teilen davon zugewiesen werden. Eine rekursive Behandlung (Schachtelung) ist auch innerhalb von mathematischen Ausdrücken möglich. Es ist darauf zu achten, daß immer geschlossenen Ausdrücke in einem Makro-NC-Code zusammengefaßt sind, d.h. Terme, deren Ergebnis nicht durch das Einfügen von ´[´ am Anfang und ´]´ am Ende beeinflußt wird.

Programmierbeispiel

Richtig:

N10 "STRING1" = "0.5"

N20 "STRING2" = "5 * 12"

N30 "STRING3" = "SIN[89.5 + \"STRING1\"]"

N40 X[-2 * "STRING1" + "STRING2" + "STRING3"] (Fahren nach X60)

M30

Falsch:

Nur komplette mathematische Ausdrücke dürfen im String zusammengefaßt werden

N10 "STRING1" = "COS["

N20 "STRING2" = "90]"

N30 "STRING3" = " \"STRING1\" \"STRING2\" " Fehler


Verwendung auf NC-Satz-Ebene

Die Definition eines Makros und dessen Aufruf im NC-Programm sieht wie folgt aus:

Programmierbeispiel

:

N10 "POSITION_1" = " X200 Y200 Z300 " (Makro-Definition)

N20 "POSITION_2" = " X300 Y100 Z50 " (Makro-Definition)

:

N200 "POSITION_1" (Makro-Aufruf)

:

N500 "POSITION_2" (Makro-Aufruf)

:

Die Programmierung geschachtelter Makrodefinitionen ist in nachfolgendem Beispiel dargestellt:

Programmierbeispiel

:

N10 " STRING_1 " = " 5*12 " (Makro-Definitionen)

N20 " STRING_2 " = " G \"STRING_1\" + 5 "

N30 " STRING_3 " = " M \" STRING_1\ " \" STRING_2 \" "

:

N200 " STRING_3 " (Aufruf des geschachtelten Makros)

: (entspricht: N200 M60 G65 )

Mehr:

button Trennung von Adreßbuchstabe und mathematischem Ausdruck

button Einschränkungen


Trennung von Adreßbuchstabe und mathematischem Ausdruck

Es besteht die Möglichkeit, daß dem Makronamen nur der Adreßbuchstabe zugewiesen und der mathematische Ausdruck ausprogrammiert oder in einem zweiten Makro definiert wird.

Dadurch können Makros, die die Hauptachsen referenzieren, in einem übergeordneten NC-Programm definiert werden. Im Unterprogramm oder Zyklus können dann die Makronamen verwendet werden, wodurch eine Unabhängigkeit von der angewählten Bearbeitungsebene resultiert.

Programmierbeispiel

Im NC-Code ist nur der Adreßbuchstabe enthalten. Der mathematische Ausdruck wird ausprogrammiert oder in einem separaten Ersatztext definiert:

"1.HA" = "X" "2.HA" = "Y" (HA: Hauptachse)

"Ziel_1.HA" = "COS[ P3 * 100 ] / ABS[ V.G.NP_AKT.V[ 0 ] - P12 ]"

"1.HA" "Ziel_1.HA" "2.HA" 100


Einschränkungen

Innerhalb eines Makro-NC-Codes darf kein Zeilenende- und Stringendezeichen (´\0´) eingelesen werden. Die Makrodefinition kann sich also nicht über mehrere Zeilen hinweg erstrecken.

Im Makro-NC-Code dürfen keine Steuersatzanweisungen ($) enthalten sein.


Rotation Tool Center Point (RTCP)

Die Nutzung dieser Funktionalität erfordert die Lizenzierung des Erweiterungspaketes "Transformationen". Sie ist nicht im Umfang der Standardlizenz enthalten.

#TRAFO ON Anwahl RTCP (modal)

#TRAFO OFF Abwahl RTCP (modal)

Aus Kompatibilitätsgründen ist die Werkzeugkorrektur im Raum alternativ auch mit #RTCP ON / OFF möglich.

RTCP stellt eine Werkzeugkorrektur im Raum dar.

Nach Anwahl von RTCP bleibt der Eingriffspunkt des aktuellen Werkzeugs bei Änderung der Werkzeugorientierung ortsfest bezüglich des Werkstücks (es ist die Belegung der Werkzeugkopfversatzparameter [1]-24, [5] zur Parametrierung der kinematischen Transformation zu beachten)

Die Funktion RTCP darf bei aktivem TLC (siehe Kapitel 16.2) nicht angewählt werden.

Abbildung 16-1: Bewegungsführung ohne/mit RTCP

Wird die rotatorische Maschinenachse bewegt, so ergibt sich die links dargestellte Bewegung.

RTCP verschiebt den Drehmittelpunkt in die Fräserspitze (center point of tool rotation) , indem die durch die Werkzeugbewegung resultierenden Versätze in den Achsen X,Y,Z taktweise durch entsprechend entgegengesetzte Bewegungen kompensiert werden.

Nur die Achsen X,Y,Z sind Output der kinematischen Transformation, die rotatorischen Maschinenachsen werden wie gewöhnlich programmiert.

Programmierbeispiel 1

N10 T1 D1 (Anwahl der 2,5-D-Werkzeugkorrektur)

N20 #TRAFO ON (Anwahl von RTCP)

N30 G01 F100 B45 C30 (Programmierung der Drehachsen ändert WZ-)
(Orientierung. WZ-Eingriffspunkt bleibt)
(ortsfest)

N40...

.

.

N100 #TRAFO OFF (Abwahl von RTCP)

N200 M30

Programmierbeispiel 2

:

N10 #KIN ID [1] (Anwahl der Maschinenkinematik)

N20 #TRAFO ON (Anwahl von RTCP)

N30 G01 G18 X20 Y0 Z25 B90 F500 (Werkstück rechts anfahren)

N40 G91 X-8 (Startposition anfahren)

N50 G90 G02 X-12 I-12 B-90 F2000 (Bearbeiten)

N60...

:


Tool Length Compensation (TLC)

Die Nutzung dieser Funktionalität erfordert die Lizenzierung des Erweiterungspaketes "Transformationen". Sie ist nicht im Umfang der Standardlizenz enthalten.

#TLC ON [ <delta_tool_length> ] Anwahl TLC (modal)

#TLC OFF Abwahl TLC (modal)

<delta_tool_length> Werkzeuglängendifferenz in [mm].

Mit TLC lassen sich NC-Programme, die von einem Programmiersystem erzeugt wurden und eine bestimmte Werkzeuglänge berücksichtigen, auch bei geänderter Werkzeuglänge an der Maschine weiterverwenden. Es ist zu beachten, daß keine neuen Versätze oder Radien des Werkzeugs korrigiert werden.

Die Funktion TLC darf bei aktivem RTCP nicht angewählt werden.

Abbildung 16-2: Bei Änderung der Werkzeuglänge sorgt TLC taktweise für die Transformation von∆L.

Programmierbeispiel

N10 #TLC ON [15] (Anwahl TLC mit verlängertem Werkzeug, WZL =15 mm)

N20 .

.

N100 #TLC OFF (Abwahl von TLC)

N200 #TLC ON [-20] (Anwahl TLC mit verkürztem Werkzeug, WZL = -20 mm)

N210 .

.

N300 #TLC OFF (Abwahl von TLC)

N200 M30


Werkzeug ausrichten (TOOL ORI CS)

#TOOL ORI CS Anwahl der Werkzeugausrichtung (modal)

Im ersten Bewegungssatz nach #TOOL ORI CS wird das Werkzeug parallel zur 3. Hauptachse des aktuellen BKS (auch W0- oder MKS möglich) ausgerichtet. Eine Programmierung der Drehachsen in diesem Satz überschreibt die für die Ausrichtung gültigen Positionen.

Abbildung 16-3: Ausrichten des Werkzeugs senkrecht zur Bearbeitungsebene (X-Y)

Programmierbeispiel

N10 B10 C20 (WZ schräg stellen)

N20 #TOOL ORI CS (Im nächsten Bewegungssatz WZ parallel zur Z-Achse)

(des aktuellen BKS, hier MKS, ausrichten)

N30 X0 Y0 (Verfahrsatz im MKS, WZ wird ausgerichtet B=0,C=0)

N40 B25 C-80 (WZ schräg stellen)

N50 #TOOL ORI CS (WZ ausrichten im nächsten Bewegungssatz)

N60 #TRAFO ON (RTCP-Anwahl)

N70 #CS ON[0,0,0,-80,-30,45]

(Übergang in ein gedrehtes BKS)

N80 X100 (Verfahrsatz im BKS. WZ ausrichten aus N50 bezieht)

(sich jedoch auf das MKS, also B=0,C=0)

N90 #TOOL ORI CS (WZ ausrichten im gedrehten BKS)

N100 Y150 (WZ parallel zur Z-Achse des BKS ausgerichtet)

N110 #TOOL ORI CS

N120 Z100 B45 C10 (Bei Programmierung der Drehachsen ist #TOOL ORI CS)

(wirkungslos)

N130 G18 (Wechsel in die X-Z-Interpolationsebene)

N140 #TOOL ORI CS (WZ parallel zur Y-Achse ausrichten)

N150 X0 (WZ senkrecht zur X-Z-Bearbeitungsebene)

M30


Maschinenkinematik (KIN ID)

Die Nutzung dieser Funktionalität erfordert die Lizenzierung des Erweiterungspaketes "Transformationen". Sie ist nicht im Umfang der Standardlizenz enthalten.

Mit folgender Anweisung wird die Maschinen-/Werkzeugkopfkinematik festgelegt:

#KIN ID [ [<expr>] ] Festlegung Maschinen-/Werkzeugkopfkinematik (modal)

<expr> Kinematik-ID. Sie dient zur Identifizierung der in der Steuerung implementierten, maschinen- bzw. werkzeugkopfspezifischen Kinematiktypen. Ihre Default-Einstellung nach dem Steuerungshochlauf wird in [1] -25 parametriert.

Über die Programmierung von #KIN ID ohne Parameter wird die Default-Kinematik-ID eingestellt.

Weiterhin kann über die Belegung des Elements kin_id in der Werkzeugdatenliste der Kinematikwechsel automatisch mit der Werkzeuganwahl durchgeführt werden.

Eine unbekannte Kinematik-ID führt bei Anwahl von RTCP, TLC oder TOOL ORI CS zur Ausgabe einer Fehlermeldung und zum Anhalten der Dekodierung.

Ein Wechsel der Kinematik mit #KIN ID... darf nicht bei aktivem RTCP oder TLC erfolgen.

Programmierbeispiel

N10 #TOOL ORI CS (Werkzeug ausrichten, Default-Kinematik)
(aus [1]-25 gültig.)

N20 T1 D1 (Werkzeuganwahl)

N30 #TRAFO ON (RTCP-Anwahl, Default-Kinematik)
(aus [1]-25 gültig)

.

.

N40 #TRAFO OFF (RTCP-Abwahl)

N50 #KIN ID[2] (Anwahl der Kinematik, die in der)
(internen Bibliothek unter der ID '2' )
(abgelegt ist)

N60 #TRAFO ON (RTCP-Anwahl, Kinematik 2)

.

.

N70 #TRAFO OFF (RTCP-Abwahl)

N80 M30


Positionierbewegungen ohne Ausgleichsbewegung (PTP)

Die Nutzung dieser Funktionalität erfordert die Lizenzierung des Erweiterungspaketes "Transformationen". Sie ist nicht im Umfang der Standardlizenz enthalten.

#PTP ON Anwahl Trafo PTP Bewegungsführung (modal)

#PTP OFF Abwahl Trafo PTP Bewegungsführung

Wenn nach Anwahl der kinematischen Transformation das Werkzeug positioniert und orientiert wird, führt dies zu Ausgleichbewegungen in den Maschinenachsen, da die Werkzeugspitze (TCP) auf der Bahn geführt wird. Sind diese Ausgleichsbewegungen unerwünscht, so kann über die oben aufgeführten Befehle eine zeitoptimalere Bewegungsführung erreicht werden.

Bei 5-Achsmaschinen wird die Bewegung auf Basis des Werkzeugkopfbezugspunktes durchgeführt; - der Bezugspunkt bewegt sich mit dem programmierten Vorschub (F-Wort) oder Eilgang auf einer Geraden, der TCP nicht (siehe Abbildung 16-4).

Bei nicht kartesischen Maschinenstrukturen (z.B. Roboter, Tripod) bewegen sich weder der Bezugspunkt noch der TCP auf einer Geraden. Der programmierte Vorschub (F-Wort) oder Eilgang wirkt auf die Maschinenachsen.

Es ist jedoch sichergestellt, dass am Ende der Bewegung der TCP auf dem programmierten PCS-Zielpunkt steht.

Die Bewegungsprogrammierung ist identisch zur PCS-Programmierung, die Umrechnung der PCS-Koordinaten in MCS-Koordinaten wird von der Steuerung ausgeführt. Im Unterschied zur Verwendung des Befehls #WCS TO MCS wird die Versatz- und Werkzeugverrechnung identisch wie bei aktiver kinematischer Transformation durchgeführt.

Abbildung 16- 4 : Bewegungsführung ohne / mit #PTP

Während aktiver Trafo PTP Bewegungsführung ist die An-/Abwahl zusätzlicher Koordinatentransformationen (#(A)CS ON/OFF, #MCS ON/OFF usw.) nicht erlaubt!

Programmierbeispiele

Beispiel zu Abbildung 16-4:

N10 T1 D1 (Werkzeuganwahl)

N20 G00 X-200 Y0 Z0 A90 (MCS Anfahrposition)

N30 #TRAFO ON (RTCP-Anwahl, Default-Kinematik)
(aus [1]-25 gültig)

N40 #PTP ON (Trafo PTP Bewegung ein)

N50 G00 X200 Y0 Z0 A-90 (PCS Zielposition)

...

N180 #PTP OFF (Trafo PTP Bewegung aus)

N185 G01 X100 Y150 F5000

...

N500 #TRAFO OFF (RTCP-Abwahl)

N999 M30

Beipiel mit automatischer Werkzeugausrichtung:

N10 T1 D1 (Werkzeuganwahl)

N20 #TRAFO ON (RTCP-Anwahl, Default-Kinematik)
(aus [1]-25 gültig)

N30 #TOOL ORI CS (Werkzeug ausrichten, Default-Kinematik)

(aus [1]-25 gültig.)

N40 #PTP ON (Trafo PTP Bewegung ein)

N50 G00 X0 Y0 Z100 G90 (PCS Anfahrposition)

...

N180 #PTP OFF (Trafo PTP Bewegung aus)

N185 G01 X100 Y150 F5000

...

N500 #TRAFO OFF (RTCP-Abwahl)

N999 M30


Koordinatensysteme

Mehr:

button Definition eines Bearbeitungskoordinatensystems (CS)

button Definition eines Koordinatensystems zur Aufspannlagenkorrektur (ACS)

button Verkettung von Koordinatensystemen

button Effektor Koordinatensystem (ECS)

button Temporärer Übergang in das Maschinenkoordinatensystem (MCS)


Definition eines Bearbeitungskoordinatensystems (CS)

Definition und Speicherung eines CS:

#CS DEF [ [<CS-ID>] ] [<v1>,<v2>,<v3>,<ϕ1>,<ϕ2>,<ϕ3>] (modal)

Definition und Speicherung mit gleichzeitiger Aktivierung:

#CS ON [ [<CS-ID>] ] [<v1>,<v2>,<v3>,<ϕ1>,<ϕ2>,<ϕ3>] (modal)

#CS ON [ <CS-ID> ] Anwahl eines gespeicherten CS (modal)

#CS ON Anwahl des zuletzt definierten CS (modal)

#CS OFF Abwahl des zuletzt aktivierten CS (modal)

Der Parameter CS-ID darf hier nicht programmiert werden, da nur die Abwahl des zuletzt aktivierten CS erlaubt ist.

<CS-ID> Koordinatensystem-ID. Bei Programmstart wird die CS-ID mit dem Defaultwert 1 belegt. Wird bei #CS DEF bzw. #CS ON die CS-ID nicht programmiert, so wird dafür die nächste freie CS-ID automatisch ermittelt. CS dieser Art sind jedoch nach ihrer Abwahl mit #CS OFF nicht mehr verfügbar!

<vi> Komponenten des translatorischen Verschiebungsvektors. (Diese beziehen sich auf die Hauptachsen in der Reihenfolge bei G17).

< ϕ i> Drehwinkel.

Ein CS wird durch die relative Verschiebung (v2 in Abbildung 16-5) und Drehung zum aktuellen Werkstück-KS (WKS) charakterisiert. Aktuelle Nullpunktverschiebung, Platzversatz und Bezugspunktverschiebung (V1 in Abbildung 16-5) bestimmen die Lage des CS bezüglich des Maschinen-KS (MKS).

Abbildung 16-5: Bearbeitung an einer schiefen Ebene

Für die Festlegung der Drehungen ϕ1, ϕ2 und ϕ3 gilt, daß diese in der nachfolgend aufgeführten Reihenfolge jeweils in mathematisch positiver Drehrichtung durchgeführt werden (Abbildung 16-6):

1. Drehung mit Winkel ϕ3 um die 3. Achse (z.B. z)

2. Drehung mit Winkel ϕ2 um die neue 2. Achse (z.B. y´)

3. Drehung mit Winkel ϕ1 um die neue 1. Achse (z.B. x´´)

(Die angegebene Reihenfolge der Achsen entspricht hierbei, unabhängig von G17/G18/G19, immer der Reihenfolge der Hauptachsen bei G17).

Abbildung 16-6: Definition eines CS durch eine Verschiebung und drei Drehungen

Ein über #CS DEF [<CS-ID>] [...] bzw. CS ON [<CS-ID>] [...] definiertes CS wird bezüglich seiner Lage zum aktuellen WKS gespeichert und kann über #CS ON [<CS-ID>] ohne Angabe von Parametern wieder angewählt werden. Zwischenzeitliche Änderungen der Gesamtverschiebung im MKS ergeben jedoch eine neue Lage des CS bezüglich des MKS.

Während der Bearbeitung im CS können Nullpunkt- und Bezugspunktverschiebungen programmiert werden. Diese sind allerdings nur bis zur Abwahl des CS gültig und werden nicht gespeichert.

Die Achsbezeichnungen bleiben im CS erhalten.

Programmierbeispiel 1

N005 P1 = 2

N010 #CS DEF [1][P1,15,5,20,30,45] (Definition und Speicherung eines CS)
(unter ID 1:)

(Verschiebungen relativ: X2, Y15, Z5)

(Drehungen:45°um Z,30°um Y',20°um X'')

N020 #CS ON[1] (Aktivierung des CS mit ID 1)

:

:

N100 #CS OFF (Abwahl des CS mit ID 1)

:

:

N200 P1=10

N210 #CS ON [P1,15,5,2,3,60] (Definition u. Aktivierung eines CS)

(unter der automatisch bestimmten ID 2)

:

:

N300 #CS OFF (Abwahl des zuletzt aktivierten CS (ID 2))

(Danach ist das CS mit ID 2 gelöscht!)

:

N400 M30

Programmierbeispiel 2

N05 P1 = 2

N10 #CS DEF [3][P1,15,5,2,3,4.5] (Definition und Speicherung)
(eines CS unter ID 3)

N20 #CS DEF [2][P1,15,5,2,3,4.5] (Definition und Speicherung)
(eines CS unter ID 2)

N30 #CS DEF [5][0,1,2,0,30,30] (Definition und Speicherung)
(eines CS unter ID 5)

N30 #CS ON (Aktivierung des CS mit der)
(zuletzt programmierten ID 5)

:

N50 #CS OFF

N60 #CS ON [3] (Aktivierung des CS mit ID 3)

:

N80 #CS OFF

N90 #CS DEF [3][1,1.2,1.3,0,0,33] (Neudefinition des CS mit ID 3)

:

M30

Programmierbeispiel 3

Werden mehrere Koordinatensysteme nacheinander z.B.mit CS ON [...] (ohne CS_ID) angewählt, so bilden diese ein verkettetes neues Gesamt-CS. Dieses muß durch entsprechende #CS OFF dann wieder schrittweise abgewählt werden.

Die kombinierte CS-Anwahl mit und ohne CS-IDs ist zulässig, wird jedoch aus Gründen der Programmübersichtlichkeit nicht empfohlen.

Beispiel einer mehrfachen Programmierung von CS (ohne CS_ID):

N010 #CS ON [0,0,0,0,0,20] (Definition u. Aktivierung eines CS unter)
(der automatisch bestimmten ID 1)

(Keine Verschiebungen, nur Drehung 20°um Z)

:

:

N050 #CS ON [0,0,0,0,0,30] (Definition u. Aktivierung eines CS unter)
(der automatisch bestimmten ID 2)

(Keine Verschiebungen, nur Drehung 30°um Z)

->(Es ergibt sich ein Gesamt-CS mit einer Drehung 50°um Z)

:

N100 #CS OFF (Abwahl des CS mit ID 2, danach ist das CS)

(mit ID 2 gelöscht!)

->(Wirksam bleibt das CS mit ID 1 mit der Drehung 20°um Z)

:

:

N200 #CS OFF (Abwahl des CS mit ID 1, danach ist das CS)

(mit ID 1 gelöscht und alle CS wieder abgewählt!)

:

:

N400 M30


Definition eines Koordinatensystems zur Aufspannlagenkorrektur (ACS)

Das Aufspannlagenkorrektur-KS (ACS) dient zur Kompensation einer Schieflage des Werkstücks oder der Werkstückpalette. Seine Definition, An- und Abwahl erfolgt analog zu der des Bearbeitungs-KS.

Definition und Speicherung eines ACS:

#ACS DEF [ [<ACS-ID>] ] [<v1>,<v2>,<v3>,<ϕ1>,<ϕ2>,<ϕ3>] (modal)

Definition und Speicherung mit gleichzeitiger Aktivierung:

#ACS ON [ [<ACS-ID>] ] [<v1>,<v2>,<v3>,<ϕ1>,<ϕ2>,<ϕ3>] (modal)

#ACS ON [ <ACS-ID> ] Anwahl eines gespeicherten ACS (modal)

#ACS ON Anwahl des zuletzt definierten ACS (modal)

#ACS OFF Abwahl des zuletzt aktivierten ACS (modal)

Der Parameter ACS-ID darf hier nicht programmiert werden, da nur die Abwahl des zuletzt aktivierten ACS erlaubt ist.

<ACS-ID> Koordinatensystem-ID. Bei Programmstart wird die ACS-ID mit dem Defaultwert 1 belegt. Wird bei #ACS DEF bzw. #ACS ON die ACS-ID nicht programmiert, so wird dafür die nächste freie ACS-ID automatisch ermittelt. ACS dieser Art sind jedoch nach ihrer Abwahl mit #ACS OFF nicht mehr verfügbar!

<vi> Komponenten des translatorischen Verschiebungsvektors. (Diese beziehen sich auf die Hauptachsen in der Reihenfolge bei G17).

< ϕ i> Drehwinkel.

Das ACS ist haltend wirksam und kann unabhängig von einem CS an- bzw. abgewählt werden.

Im ACS können Nullpunkt- und Bezugspunktverschiebungen programmiert werden. Diese sind allerdings nur bis zur Abwahl des ACS gültig und werden nicht gespeichert.

Programmierbeispiel 1

N005 P1 = 2

N010 #ACS DEF [1][P1,15,5,20,30,45] (Definition und Speicherung eines ACS)
(unter ID 1:)

(Verschiebungen relativ: X2, Y15, Z5)

(Drehungen:45°um Z,30°um Y',20°um X'')

N020 #ACS ON[1] (Aktivierung des ACS mit ID 1)

:

:

N100 #ACS OFF (Abwahl des ACS mit ID 1)

:

:

N200 P1=10

N210 #ACS ON [P1,15,5,2,3,60] (Definition u. Aktivierung eines ACS)

(unter der automatisch bestimmten ID 2)

:

:

N300 #ACS OFF (Abwahl des zuletzt aktivierten ACS (ID2))

(Danach ist das ACS mit ID 2 gelöscht!)

:

N400 M30

Programmierbeispiel 2

N5 P1 = 2

N10 #ACS DEF [1][10,15,5,2,3,4.5] (Definition und Speicherung)
(eines ACS unter ID 1)

N20 #ACS DEF [3][0,15,5,2,3,4.5] (Definition und Speicherung)
(eines ACS unter ID 3)

N30 #ACS DEF [P1+3][2*P1,1,2,0,30,30] (Definition und Speicherung eines)
(ACS unter ID 5)

N30 #ACS ON (Aktivierung des ACS mit der)
(zuletzt programmierten ID 5)

.

N50 #ACS OFF

N60 #ACS ON [3] (Aktivierung des ACS mit ID 3)

.

N80 #ACS OFF

N90 #ACS DEF [3][0,1.2,1.3,0,0,3] (Neudefinition des ACS mit ID 3)

.

M30

Programmierbeispiel 3

Werden mehrere Koordinatensysteme nacheinander z.B.mit ACS ON [...] (ohne ACS_ID) angewählt, so bilden diese ein verkettetes neues Gesamt-ACS. Dieses muß durch entsprechende #ACS OFF dann wieder schrittweise abgewählt werden.

Die kombinierte ACS-Anwahl mit und ohne ACS-IDs ist zulässig, wird jedoch aus Gründen der Programmübersichtlichkeit nicht empfohlen.

Beispiel einer mehrfachen Programmierung von ACS (ohne ACS_ID):

N010 #ACS ON [0,0,0,0,0,20] (Definition u. Aktivierung eines ACS unter)
(der automatisch bestimmten ID 1)

(Keine Verschiebungen, nur Drehung 20°um Z)

N020 #ACS ON [0,0,0,0,0,30] (Definition u. Aktivierung eines ACS unter)
(der automatisch bestimmten ID 2)

(Keine Verschiebungen, nur Drehung 30°um Z)

->(Es ergibt sich ein Gesamt-ACS mit einer Drehung 50°um Z)

:

N100 #ACS OFF (Abwahl des ACS mit ID 2, danach ist das ACS)

(mit ID 2 gelöscht!)

->(Wirksam bleibt das ACS mit ID 1 mit der Drehung 20°um Z)

:

:

N200 #ACS OFF (Abwahl des ACS mit ID 1, danach ist das ACS)

(mit ID 1 gelöscht und alle ACS wieder abgewählt!)

:

:

N400 M30


Verkettung von Koordinatensystemen

Durch Kombination von ACS und CS lassen sich neue Koordinatentransformationen bilden.

Abbildung 16-7: Durch die Kombination von ACS und CS wird die Bearbeitung an einer schiefen Ebene bei schief liegendem Werkstück ermöglicht

Mehrere ACS und CS werden jeweils getrennt in der Reihenfolge ihrer Anwahl relativ verknüpft. Das resultierende ACS wird dann mit dem resultierenden CS zur Gesamttransformation verknüpft. Die Verknüpfung erfolgt unabhängig von der Programmierung immer beginnend mit dem ACS (die maximale Anzahl der ACS und CS zur Bildung einer Verknüpfung wird konfiguriert [6]-5.7)

Die Abwahl der einzelnen ACS erfolgt in umgekehrter Reihenfolge, wie die Anwahl, gleiches gilt für die CS. Um dies zu vereinfachen wird mit #(A)CS OFF kein ID-Parameter programmiert (siehe Abbildung 16-5, Abbildung 16-6).

Programmierbeispiel

Verknüpfung

N100 #CS ON [1] ( CS[1])

N110 #ACS ON [2] (ACS[2] o CS[1])

N120 #ACS ON [1] (ACS[2] o ACS[1] o CS[1])

N130#CS ON [2] (ACS[2] o ACS[1] o CS[1] o CS[2])

N140 #ACS OFF (ACS[2] o CS[1] o CS[2])

N140 #CS OFF (ACS[2] o CS[1])

N150 #ACS OFF ( CS[1])

N160 #CS OFF

M30

Abbildung 16-8: Aktivierung oder Änderung der Aufspannlagenkorrektur ohne daß bereits aktive Koordinatensysteme abgewählt werden müssen

Bei der relativen Verknüpfung von ACS oder CS ist zu beachten, daß eine geänderte Reihenfolge der Anwahl im allgemeinen unterschiedliche Ergebnisse zur Folge hat (Abbildung 16-9).

Abbildung 16-9: Ergebnis einer CS-Verknüpfung in Abhängigkeit von der Anwahlreihen-folge (CS[1] - CS[2] bzw CS[2] - CS[1]).

Das CS (oder ACS) mit der gleichen ID kann auch mehrfach angewählt und mit sich selbst verkettet werden.

Programmierbeispiel

N10 #CS DEF[1][0,0,0,0,0,20]

N20 LL TEILEPRG (Kontur im System X-Y)

N30 #CS ON[1]

N40 LL TEILEPRG (X'-Y')

N50 #CS ON[1]

N60 LL TEILEPRG (X''-Y'')

N70 #CS OFF

N80 #CS OFF

M30

Über folgende NC-Befehle kann die aktuell aktive Gesamttransformation gespeichert werden:

#CS DEF ACT [ <CS_ID> ]

#ACS DEF ACT [ <ACS_ID> ]

Mit folgenden NC-Befehlen lassen sich, im Gegensatz zur sequentiellen Abwahl der (A)CS über (A)CS OFF, die aus der Verknüpfung von CS bzw. ACS gebildeten Teiltransformationen direkt abwählen.

#CS OFF ALL Abwahl aller CS

#ACS OFF ALL Abwahl aller ACS

Programmierbeispiel

N10 #CS ON[3]

N20 #CS ON[4]

N30 #CS DEF ACT[5] (Speicherung CS[3] o CS[4] unter CS[5])

N31 #CS OFF ALL (Abwahl aller CS)

N32 #ACS ON[3]

N33 #ACS ON[4]

N34 #ACS DEF ACT[5] (Speicherung ACS[3] o ACS[4] unter CS[5])

N35 #ACS OFF ALL (Abwahl aller ACS)

N36 X0 Y0 Z0

N360 #CS ON [5]

N370 #ACS ON[5]

N380 #CS DEF ACT[1] (Speicherung ACS[5] o CS[5] unter CS[1])

N390 #ACS OFF ALL

N400 #CS OFF ALL

N500 #CS ON (Anwahl CS[1])

N510 #CS OFF

M30


Effektor Koordinatensystem (ECS)

Die Nutzung dieser Funktionalität erfordert in Verbindung mit kinematischenTransformationen die Lizenzierung des Erweiterungspaketes "Transformationen".

Das Effektor-KS wird hauptsächlich verwendet zur Durchführung einer Rückzugsstrategie nach Werkzeugbruch, NC-Reset oder Programmabbruch bei Bearbeitung mit beliebig ori-entiertem Werkzeug. Bei der Bestimmung des ECS handelt es sich um die Umkehrung des Befehls TOOL ORI CS (Kapitel 16.3). Hier wird statt der Ausrichtung des Werkzeugs auf die Bearbeitungsebene eine zur Werkzeugachse senkrechte Bearbeitungsebene ermittelt.

#ECS ON Anwahl ECS (modal)

#ECS OFF Abwahl ECS (modal)

Bei Aktivierung des ECS darf kein anderes KS aktiv sein.

Das ECS wird aus den Positionen der Orientierungsachsen so bestimmt, daß dessen Z-Achse parallel zur aktuellen Werkzeugachse ist. Die Lage der X- und Y-Achse ist hierbei unbestimmt (beliebig) und muß deshalb intern festgelegt werden. Der Nullpunkt des ECS kann im allgemeinen Fall außerhalb der Werkzeugspitze oder der Werkzeugachse liegen, so daß ein kollisionsfreier Rückzug des Werkzeugs nur durch relative Verfahrbewegungen entlang der Effektor Z-Achse sichergestellt werden kann.

Abbildung 16-10: Bearbeitung in schräger Bohrung.

Programmierbeispiel

N05 #CS ON[1.5,0,32,14.5,0,45] (Anwahl eines BKS)

N10 #TOOL ORI CS

N15 X0 Y0 Z0

N20 LL TEILEPRG (Unterprogrammaufruf zur Konturbearbeitung)

...

(Werkzeugbruch, NC-Reset)

(Rückzugsstrategie)

N05 #ECS ON (Bestimmung der Koordinatentransformation)

(entsprechend der Position der Orientierungs-)
(achsen)

N10 G91 G01 F200

N20 Z62 (Rückzugsbewegung entlang der WZ-, ECS-Z-Achse)

...

N400 M30


Temporärer Übergang in das Maschinenkoordinatensystem (MCS)

Die Nutzung dieser Funktionalität erfordert in Verbindung mit kinematischenTransformationen die Lizenzierung des Erweiterungspaketes "Transformationen".

Mit der Funktionalität MCS lassen sich die aktive kinematische und / oder kartesische Transformation sowie sämtliche, in die Achsen eingerechnete Versätze temporär deaktivieren, so daß die Maschinenachsen direkt positioniert werden können. Nach Verlassen des MCS wird der bei Anwahl vorhandene Zustand wiederhergestellt.

Beispielsweise erfordert das Wechseln des Werkzeuges meist das Anfahren einer definierten Werkzeugwechselposition mit, bezüglich des Maschinennullpunkts, bekannten Koordinaten. Im KS kann das Anfahren dieser Maschinenposition problematisch werden, da über das NC-Programm die KS-Achsen positioniert werden.

#MCS ON [ EX TOOL ] Aktivierung temporärer Übergang in MCS (modal)

#MCS OFF Deaktivierung temporärer Übergang in MCS (modal)

EX TOOL Bei Werkzeugwechsel im MCS werden keine Werkzeugversätze eingerechnet, so daß auch weiterhin die Maschinenachsen direkt positioniert werden können. Dies erfolgt erst bei #MCS OFF.

Im MCS bestehen keine Beschränkungen bezüglich verwendbarer NC-Funktionalität, die Anwahl von RTCP / TLC , CS, ACS und ECS ist jedoch nicht möglich.

Programmierte Verschiebungen sind auch im MCS nur bis zu dessen Abwahl gültig und werden nicht gespeichert.

Bei Änderung der Achskonfiguration durch externen Achstausch (z.B. #CALL AX ...) im MCS ist zu beachten, daß zur Reaktivierung der kinematischen und / oder der kartesischen Transformation eine definierte Achsanordnung notwendig ist.

Programmierbeispiel

N10 #TRAFO ON

N20 #CS ON[1.5,0,32,14.5,0,45] Anwahl eines BKS

N30 G01 G90 F5000

N40 X0 Y0 Z0

N50 #MCS ON EX TOOL (Übergang in das Maschinen-KS mit der Option)
(EX TOOL - WZ wird erst bei MCS OFF)
(eingerechnet)

N60 LL WERKZWECHSEL (Unterprogrammaufruf zum Werkzeugwechsel)

...

N70 #MCS OFF (Abwahl des MCS, RTCP und CS werden wieder)
(aktiviert)

N100 #TRAFO OFF

N110 #CS OFF

N400 M30

Programmierbeispiel

Werkstueck: Quader 100x100x50

%L UNTERPRG1 (Teileprogramm1-Planfräsen der akt. Bearbeitungsebene)

N10 G01 G90 X0 Y-10 Z5 F250

N20 Z0 F2000 (Anfahrbewegung )

N30 G91

N40 $FOR P1=0, 5, 1 (P1: Anzahl Zustellbewegungen)

N50 FOR P2=0, 7, 1

N60 Y90

N70 X3

N70 Y-90

N80 X3

N90 Y90

N100 X-42 Y-80

N110 $ENDFOR

N120 Z-2 (Zustellung)

N130 $ENDFOR

N140 G90 Z50 (Rueckzugsbewegung )

N150 M29

%L UNTERPRG2 (Teileprogramm 2- Kreis mit zentrierter Bohrung)

N10 X0 Y0 Z10 F1000 (Anfahrbewegung linear und absolut)

N20 X0 Y0 Z5

N30 Z0

N40 LL UNTERPRG3 (Kreisfahrt)

N50 Y35.34 (Position der Bohrung anfahren)

N60 X15

N70 Z0

N80 LL UNTERPRG4 (Bohrzyklus)

N90 M29

%L UNTERPRG3 (Teileprogramm 3- Kreisfahrt)

N10 X7.5 Y35.34 (Kreisstartpunkt anfahren )

N20 G91 Z-4

N30 G90 G02 X7.5 Y35.34 I7.5 J0

N40 G01 Z20

N50 M29

%L UNTERPRG4 (Teileprogramm 4- Bohrzyklus)

N10 G91 Z-5 (Bohrbewegung relativ)

N20 Z2

N30 Z-5

N40 Z2

N50 Z-5

N60 G90 Z20 (Abhebebewegung)

N70 M29

% Hauptprogramm

N05 #KIN ID[1] (Maschinenkinematik 1)

N10 G74 Z1 X2 Y3 B4 C5 (Referenzpunktfahrt)

N20 T1 D1 (Werkzeuganwahl)

N40 #TRAFO ON (Anwahl RTCP)

N50 #CS ON[0,-50,51,0,30,-45] (Anwahl gedrehtes, versch. KS)

N52 G00 X0 Y0 Z5 (Positionieren im neuen Ursprung)

N55 #TOOL ORI CS (Werkzeug ausrichten)

N60 LL UNTERPRG1 (Konturbearbeitung)

N70 LL UNTERPRG2 (Konturbearbeitung)

N80 #CS OFF (Abwahl Bearbeitungs-KS)

N90 #CS ON[-50,0,51,0,30,-135] (Anwahl gedrehtes, versch. KS)

N92 G00 X0 Y0 Z5 (Positionieren im neuen Ursprung)

N95 #TOOL ORI CS (Werkzeug ausrichten)

N100 LL UNTERPRG1 (Konturbearbeitung)

N110 LL UNTERPRG2 (Konturbearbeitung)

N120 #CS OFF (Abwahl Bearbeitungs-KS)

N130 #CS ON[0,50,51,0,30,-225] (Anwahl gedrehtes, versch. KS)

N132 G00 X0 Y0 Z5 (Positionieren im neuen Ursprung)

N135 #TOOL ORI CS (Werkzeug ausrichten)

N140 LL UNTERPRG1 (Konturbearbeitung)

N150 LL UNTERPRG2 (Konturbearbeitung)

N160 #CS OFF (Abwahl Bearbeitungs-KS)

N170 #CS ON[50,0,51,0,30,-315] (Anwahl gedrehtes, versch. KS)

N172 G00 X0 Y0 Z5 (Positionieren im neuen Ursprung)

N175 #TOOL ORI CS (Werkzeug ausrichten)

N180 LL UNTERPRG1 (Konturbearbeitung)

N190 LL UNTERPRG2 (Konturbearbeitung)

N200 #CS OFF (Abwahl Bearbeitungs-KS)

N210 #TRAFO OFF (Abwahl RTCP)

N220 Z120 (Rueckzugsbewegung)

N230 #TOOL ORI CS (Werkzeug ausrichten)

N240 X0 Y0 (Bewegungssatz wg. WZ Ausrichtung !)

N250 X0 Y0 Z120 B0 C0 (Verfahrbewegung im Maschinen-KS )

N260 M30 (Programmende)


Hilfsfunktionen zur Koordinatentransformation

Die Nutzung dieser Funktionalität erfordert die Lizenzierung des Erweiterungspaketes "Transformationen". Sie ist nicht im Umfang der Standardlizenz enthalten.

Bei 5-Achsmaschinen und Maschinen mit nicht kartesischem Achsaufbau (z.B. Hexapoden) finden zwei typische Varianten der Festlegung der Verfahrbewegungen Anwendung.

Im ersten Fall programmiert der Anwender die Raumkontur über Kreis oder Gerade bzw Polynomform und die Werkzeugspitze (TCP) wird entsprechend dem programmierten Konturverlauf auf der Bahn geführt.

Im zweiten Fall programmiert der Anwender den Zielpunkt in Raum/Werkstückkoordi-naten (WCS) die in Maschinenkoordinaten (MCS) abgebildet werden. Der TCP bewegt sich entsprechend den maximal möglichen Geschwindigkeiten in den Achsen auf einer nicht einfach vorhersehbaren Kurve (PTP). Bedingt durch den Wegfall der Bewegung des TCP entlang einer Raumkurve ist die PTP-Bewegung im allgemeinen schneller als die TCP-Bahnbewegung.

Die oben genannte Abbildung von programmierten WCS-Zielpunkten in MCS-Zielpunkte (Rückwärtstransformation) kann im NC-Programm durch nachfolgende NC-Befehle beauftragt werden. Das Anfahren der berechneten MCS-Zielpunkte muß dann vom Anwender über Absolutmaßeingabe explizit programmiert werden.

Diese Methode kann z.B. dazu verwendet werden, sequentiell jede Einzelachse aus einem Kollissionsbereich herauszufahren.

Die Funktionen können nur bei inaktiver kinematischer Transformation und inaktivem Koordinatensystem verwendet werden.

Berechnung von Maschinenkoordinaten (MCS) aus Werkstückkoordinaten (WCS):

#WCS TO MCS [ [CS<ID_expr>] [KIN] ] (non-modal)

CS <ID_expr> Berechnung der Zielpunkte unter Berücksichtigung einer kartesischen Transformation mit einer bestimmtem gültigen ID.

KIN Berechnung der Zielpunkte unter Berücksichtigung der aktuell gültigen kinematischen Transformation.

Für die Angabe der WCS-Zielpunkte und die Ablage der berechneten MCS-Zielpunkte stehen die folgenden achsspezifischen Variablen zur Verfügung, auf die lesend und schreibend zugegriffen werden kann:

V.A. WCS.* Zugriff auf achsspezifische Hilfsgröße Werkstückkoordinate (WCS). Der Wert entspricht bei aktiver Transformation i. a. nicht den programmierten Werkstückkoordinaten.

V.A. MCS.* Zugriff auf achsspezifische Hilfgröße Maschinenkoordinate (MCS). Der Wert entspricht bei inaktiver Transformation nicht den programmierten Maschinenkoordinaten.

Programmierbeispiele

Die NC berechnet über kartesische und kinematische Rückwärtstransformation von bestimmten WCS-Punkten die MCS-Zielpunkte. Auf die berechneten MCS-Positionen kann der Anwender über NC-Programmierung zugreifen und im NC Programm weiterverwenden. Der Anwender bestimmt über die Angabe der Schlüsselwörter und der dazugehörigen CS-ID die Transformationen, die durchgeführt werden sollen.

N02 #CS DEF[1][0,0,0,0,0,45]

N00 #KIN ID [1]

N10 V.A.WCS.X=10

N20 V.A.WCS.Y=10

N30 V.A.WCS.Z=100

N40 #WCS TO MCS[CS 1, KIN] (Transformation der WCS in MCS)

N50 G00 Z=V.A.MCS.Z (Fahren der Einzelachsen auf MCS-Zielpunkte)

N60 G00 X=V.A.MCS.X

N70 G00 Y=V.A.MCS.Y

N

:

Fehlerhafte Verwendungen:

N05 #CS DEF[1][0,0,0,0,0,45]

N10 #CS ON[1]

N20 V.A.WCS.X=100

N30 V.A.WCS.Y = 0

N40 V.A.WCS.Z = 0

N50 #WCS TO MCS [CS 1] <- nicht erlaubt, da ein CS aktiv ist

N05 #KIN ID[12]

N10 #TRAFO ON

N20 V.A.WCS.X=100

N30 V.A.WCS.Y = 0

N40 V.A.WCS.Z = 0

N50 #WCS TO MCS [KIN] <- nicht erlaubt, da eine Trafo aktiv ist

Berechnung von Werkstückkoordinaten (WCS) aus Maschinenkoordinaten (MCS):

Die umgekehrte Abbildung von MCS-Zielpunkten in WCS-Zielpunkte (Vorwärtstransformation) wird mit dem folgenden Befehl durchgeführt. Diese Methode kann z.B. zur Abbildung von Meßwerten in das WCS verwendet werden.

#MCS TO WCS [ [CS<ID_expr>] [KIN] ] (non-modal)

CS <ID_expr> Berechnung der Zielpunkte unter Berücksichtigung einer kartesischen Transformation mit einer bestimmtem gültigen ID.

KIN Berechnung der Zielpunkte unter Berücksichtigung der aktuell gültigen kinematischen Transformation.


Hilfsfunktion zur Berechnung der Bewegungsgrenzen im Werkstückkoordinatensystem

Über den nachfolgenden Befehl werden die Grenzen der Bewegung im aktuellen Werkstückkoordinatensystem (WCS) in Richtung eines programmierten Bewegungsrichtungsvektors mit den Komponenten (VC1, VC2, VC3) berechnet. Die Vektorkomponenten müssen nicht normiert angegeben werden. Grundlage für die Wegbegrenzung sind die Softwareendschalter auf Achsebene. Die Steuerung berechnet auf Basis dieser Werte die Bewegungsgrenzen im aktuellen Koordinatensystem.

#GET WCS POSLIMIT [VC1=<Vektorkomp. 1> VC2=<Vektorkomp. 2> VC3=<Vektorkomp. 3>]

Das Ergebnis der Berechnung kann mit den folgenden globalen Variablen für die ersten drei Achsen im Koordinatensystem ausgelesen werden.

V.G.WCS_POSLIMIT_1 Bewegungsgrenze in der ersten Hauptachse im WCS

V.G.WCS_POSLIMIT_2 Bewegungsgrenze in der zweiten Hauptachse im WCS

V.G.WCS_POSLIMIT_3 Bewegungsgrenze in der dritten Hauptachse im WCS

Die programmierte Bewegungsrichtung muss bei der tatsächlich ausgeführten Bewegung zwingend eingehalten werden, ansonsten stimmen die berechneten Bewegungsgrenzen nicht !

Ebenso dürfen bei aktiver kinematischer Transformation (#RTCP) keine rotatorischen Achsen programmiert werden !

Programmierbeispiel

N05...

N10 G98 X-100 Y-100 Z-100 (Verschieben der negativen SWE)

N20 G99 X200 Y200 Z300 (Verschieben der positiven SWE)

N30 #ECS ON (Anwahl Effektorkoordinatensystem)

N40 #GET WCS POSLIMIT [VC1=0 VC2=0 VC3=1] (Berechnen WCS Bewegungsgrenze)

N50 G01 G90 Z=V.G.WCS_POSLIMIT_3 F2000 (Anfahren WCS Bewegungsgrenze in Z)

N60 #ECS OFF (Abwahl Effektorkoordinatensystem)

N70...

Beispiel für richtige Verwendung des Befehls

N05...

N10 #CS ON[0,0,0,0,0,45]

N20 #GET WCS POSLIMIT [VC1=1 VC2=1 VC3=0]

N25 G01 G90 F2000

      N30 X=V.G.WCS_POSLIMIT_1
Y=V.G.WCS_POSLIMIT_2
Z=V.G.WCS_POSLIMIT_3

N40 #CS OFF

N50...

Falsch, tatsächliche Bewegungsrichtung nicht nach Vorgabe:

N05...

N10 #CS ON[0,0,0,0,0,45]

N20 #GET WCS POSLIMIT [VC1=1 VC2=1 VC3=0]

N25 G01 G90 F2000

N30 X=V.G.WCS_POSLIMIT_1 Y=V.G.WCS_POSLIMIT_2

N40 Z=V.G.WCS_POSLIMIT_3

N50...

Abbildung 16-11: Beispiel für Bewegungsgrenzen in der ZX-Ebene im aktuellen WCS


Modifiziertes Programmieren von Moduloachsen

Die erweiterte Moduloprogrammierung unterstützt die Programmierung der Drehrichtung sowie die Begrenzung auf maximal eine Umdrehung bei Absolutmaßangabe. Über zwei neue Variablen kann zudem auf aktuelle Moduloeinstellungen zugegriffen werden (Kapitel 17.1).

<Achsname> [ [+] | - ] <expr>

<Achsname> Bezeichnung der Moduloachse **.

<expr> Das Vorzeichen des Koordinatenwertes bestimmt die Drehrichtung:

= - bedeuted Drehung im Uhrzeigersinn
+ bedeuted Drehung im Gegenuhrzeigersinn
kein Vorzeichen bedeuted Drehung auf kürzestem Weg
(Optimiertes Richten)

Die Einheit der Achsposition ist [Grad] oder [mm]

**

Lange Achsbezeichnungen werden nicht unterstützt (z.B. "C_MODULO").

Programmierbeispiel

G90 G1 C+560 ó G90 G1 C+200 (Bewegung zu Position 200 in + Richtung,)

(Annahme : 360 Grad Modulo)

G90 G1 C-P1 (Gehe zu Position P1 (Modulo implizit) in - Richtung)

Programmierung in Absolutmaßangabe (G90) :

q Der mit der Achse programmierte Wert beschreibt die Zielposition im Bezug zur Nullpunktposition des Modulobereiches (Wert zwischen 0 und n Grad oder mm). Es kann maximal eine Umdrehung gefahren werden.

q Der Wert kann ein numerischer Ausdruck sein wie z.B. : [3*2+5] , P1 , [P1+P2-3] , [-30].

q Wenn die programmierte Position = aktuelle Position, erfolgt keine Bewegung.

q Der Verfahrweg einer Moduloachse wird nicht durch Softwareendschalter begrenzt.

Programmierung in Relativmaßangabe(G91)

q Der mit der Achse programmierte Wert beschreibt den zu fahrenden Weg im Bezug zur vorhergehenden Position. Das Vorzeichen gibt die Bewegungsrichtung an. Es können mehrere Umdrehungen gefahren werden.

q Wenn der Wert größer als der Modulowert ist, wird die Anzahl der Umdrehungen berücksichtigt.

Mehr:

button Variablen

button Moduloprogrammierung bei Absolutmaßangabe

button Moduloprogrammierung bei Relativmaßangabe


Variablen

NC-Programmvariablen für das Lesen von Moduloinformationen:

V.A.MODE[i] liefert den Achsmode gemäß der Achstabelle.
z.B. 4 wenn die Achse vom Typ modulo ist.
-> wird gebraucht zum Lesen von Moduloachsen

V.A.MODULO_VALUE[i] wird genutzt zum Lesen des Modulobereiches
z.B. 360 bei einem Modulobereich von 0-360°.
(bei "Nichtmoduloachsen" ist dieser Wert nicht relevant).


Moduloprogrammierung bei Absolutmaßangabe

Programmierbeispiele

G90 G1 C+350 ó Gehe zu Position 350 in + Richtung

P1 =+10

G90 G1 C+P1 ó G1 C+10 ó Gehe zu Position 10 in + Richtung

P1= -350

G90 G1 C-P1 ó G1 C-(-350) ó G1 C-(10) ó Gehe zu Position 10 in - Richtung

G90 G1 C+450 ó G1 C+(450 mod 360) ó Gehe zu Position 90 in + Richtung

Beispiele für korrekte Programmierung:

C+200 Drehe in positiver Richtung auf Position 200

C-200 Drehe in negativer Richtung auf Position 200

C+-200 Drehe in positiver Richtung auf Position -200 (= +160)

C+[-200] Drehe in positiver Richtung auf Position -200 (= +160)

C--200 Drehe in negativer Richtung auf Position -200 (= +160)

C-[-200] Drehe in negativer Richtung auf Position -200 (= +160)

C200 Drehe auf kürzestem Weg auf Position 200

C[+200] Drehe auf kürzestem Weg auf Position 200

C[-200] Drehe auf kürzestem Weg auf Position 200

Beispiele für falsche Programmierung:

Keine, da das erste Vorzeichen nach dem Achsname immer die Drehrichtung bestimmt und jedes weitere Vorzeichen als zur Positionsangabe gehörig interpretiert wird.

Die Programmierung von 2 Vorzeichen (Richtung und Position) ist nur zulässig, wenn die Achse vom Achsmode "Modulo" ist (P-AXIS-00015) [2] -9. Die Positionierung auf kürzestem Weg erfolgt immer dann, wenn kein Vorzeichen direkt nach dem Achsnamen programmiert wurde.


Moduloprogrammierung bei Relativmaßangabe

G91 G1 C+30

G91 G1 C-30

Beispiele für korrekte Programmierung:

C+200 Drehe in positiver Richtung auf "aktuelle Position plus 200"

C-200 Drehe in negativer Richtung auf "aktuelle Position minus 200"

C200 Drehe in positiver Richtung auf "aktuelle Position plus 200"

Beispiele für falsche Programmierung:

C+-200 Fehler: Negative Wegangabe bei rel. Programmierung unzulässig.

C--200 Fehler: Negative Wegangabe bei rel. Programmierung unzulässig.

P1=-1

C-[P1] Fehler: Negative Wegangabe bei rel. Programmierung unzulässig.


Beschreibung der Funktion

Mehr:

button Werkzeug-ID

button Standgrößenerfassung


Werkzeug-ID

Im Rahmen der erweiterten Werkzeugprogrammierung werden dem Aufgabenbereich Werkzeugmanagement (WZM) neue, werkzeugspezifische Kommunikationsobjekte durch die CNC zur Verfügung gestellt. Es handelt sich zum einen um die erweiterte Bezeichnung für Werkzeuge (WZ) und zum anderen um Standgrößen von Werkzeugen.

In der Standardprogrammierung werden WZ im NC-Programm durch einteilige Nummern identifiziert. Entsprechend der DIN 66025 wird diese numerische ID mit dem D-Wort zum Einrechnen neuer Daten (rechnerischer WZ-Wechsel) programmiert. In Verbindung mit dem T-Sprachbefehl legt die ID das nächste WZ fest, das physikalisch eingewechselt werden soll.

Zum Einrechnen neuer Daten sind diese von der heutigen externen WZ-Verwaltung anzufordern. Die WZ-Verwaltung besitzt spezielle, herstellerspezifische Algorithmen, um aus der WZ-ID das einzuwechselnde WZ zu bestimmen. Dabei ist zu berücksichtigen, daß mit der übermittelten WZ-ID nur der WZ-Typ festliegt und im WZ-Magazin evtl. mehrere WZ gleichen Typs (Schwester-WZ) einsatzbereit sind. Es lassen sich also im NC-Programm die WZ-Exemplare nicht eindeutig identifizieren.

Die T-Nummer dient in erster Linie als Techno-Information, d.h. sie gelangt über den NC-Kanal auf die Schnittstelle zur SPS. Nach DIN 66025 wird das physikalische Einsetzen des neuen WZ in die Arbeitsspindel mit M06 getriggert. Die getrennte Angabe der beiden Befehle T mit WZ-Nummer und M06 kann dazu genutzt werden, nach dem T-Befehl vorbereitende Maßnahmen zu ergreifen (z.B. im WZ-Magazin), bevor das WZ mit M06 tatsächlich in die Arbeitsspindel eingesetzt wird.

Im erweiterten WZM identifizieren sich WZ-Daten über eine dreiteilige Nummer, die im folgenden Tool-ID genannt wird:

Tool-ID = Grund-WZ-Nummer + Schwester-WZ-Nummer + Abwandlungsnummer

Die Grund-WZ-Nummer beschreibt den WZ-Typ und die Schwester-WZ-Nummer definiert ein WZ-Exemplar diesen Typs. Die Abwandlungsnummer hat rein datentechnische Bedeutung. Für ein WZ können damit unterschiedliche Datensätze verwendet werden.


Standgrößenerfassung

Bei der Standgrößenerfassung müssen die Eingriffszeit (Standzeit) und der im Eingriff zurückgelegte Weg (Standweg) eines WZ berechnet werden. Die ermittelten Werte werden an den WZM gesendet.

Hierbei soll nur das Verfahren von Bewegungssätzen berücksichtigt werden. Das Positionieren im Eilgang darf sich auf die Standgrößen nicht auswirken.

Die Daten WZ-ID, Eingriffszeit und Eingriffsweg werden nach dem Auswechseln des WZ vom Interpolator angezeigt.

Die Standzeit wird in ms, der Standweg in mm erfasst.

Die Gewichtung der Standgrößen kann über das NC-Programm verändert werden. Der veränderbare Faktor dient zur Anpassung der Standgrößenerfassung an den WZ-Einsatz.

Beispiel:

Ist ein WZ immer im Eingriff, so sollte mit Faktor 100% gewichtet werden. Findet aber nur auf der Hälfte des Verfahrweges ein Materialabtrag statt, so kann mit einem Gewichtungsfaktor von 0,5 gerechnet werden.

Der Defaultwert der Gewichtungsfaktoren für Standzeit und Standweg beträgt 1,0.


Programmierbefehle und Variablen

Die Tool-ID wird über Klartextbefehle programmiert. Die Anforderung neuer WZ-Daten mit #TOOL DATA entspricht dem D-Befehl, der vorbereitende Technologiebefehl für den physikalischen WZ-Wechsel mit #TOOL PREP dem T-Befehl.

#TOOL DATA [ <basic> [,<sister> [,<variant> ] ] ] (Anfordern neuer WZ-Daten)

#TOOL PREP [ <basic> [,<sister> [,<variant> ] ] ] (Ankündigung des WZ-Wechsels)

Die Anzahl der Parameter ist fest vorgegeben [6]-9.18. Sinnvolle Werte liegen zwischen 1 und 3. Falls zwei Parameter erwartet werden, so sind dies die Grund- und die Schwester-WZ-Nummer.

Zwingend ist die Angabe der Grund-WZ-Nummer (basic). Ist darüber hinaus die Anzahl Parameter mit 3 belegt, so können sister für die Schwester-WZ-Nummer und variant für die Abwandlung optional programmiert werden. Falls sister oder variant nicht programmiert sind (Komma folgt auf Komma oder Klammerzu folgt auf Komma), so wird dafür Null eingesetzt.

Programmierbeispiel

#TOOL DATA [ P10, SISTER, 0 ] ⇔ #TOOL DATA [ P10, SISTER, ]

und entsprechend

#TOOL PREP [P10, 0, VARIANT] ⇔ #TOOL PREP [P10, , VARIANT]

Die mathematischen Ausdrücke bei Angabe des D- und T-Befehls sind als Grund-WZ-Nummer zu interpretieren. Damit bleibt dem WZM der gleiche Freiheitsgrad wie bisher für die Auswahl des WZ-Datensatzes erhalten.

T <basic> bzw. D<basic>

Der Zugriff auf die Elemente der Tool-ID wird über Decodervariablen realisiert. In der aktuellen SW-Version besteht bereits die Möglichkeit, die Nummer des zuletzt vom externen WZM angeforderten WZ über V.G.T_AKT abzufragen. Aus Kompatibilitätsgründen bleibt diese Variable weiterhin erhalten. Sie repräsentiert parallel zur unten eingeführten, neuen Syntax immer die Grund-WZ-Nummer.

V.TOOL.BASIC (Lesender Zugriff auf zuletzt programmierte Grund-WZ-Nummer

V.TOOL.SISTER (Lesender Zugriff auf zuletzt programmierte Schwester-WZ-Nummer)

V.TOOL.VARIANT (Lesender Zugriff auf zuletzt programmierte Abwandlungsnummer)

Programmierbeispiel

#TOOL DATA [ P10, SISTER, 3 ]

.....

#TOOL PREP [V.TOOL.BASIC, V.TOOL.SISTER, V.TOOL.VARIANT]

Mehr:

button Gewichtungsfaktoren für Standzeit und Standweg

button Lesen und Löschen von Standgrößen

button Werkzeugdaten auffrischen


Gewichtungsfaktoren für Standzeit und Standweg

Bei jedem mit dem T-Befehl angekündigten WZ-Wechsel werden automatisch die komplette Werkzeug-ID, die Standzeit und der Standweg an den WZM geschickt. Anschließend werden alle Größen abgenullt und mit der Standgrößenerfassung für das neu eingewechselte Werkzeug wird begonnen.

Für die Programmierung der Gewichtungsfaktoren der Standzeit und des Standweges dienen die folgenden zwei Decodervariablen (Zugriff nicht synchron zur Echtzeit):

V.TLM.TIME_FACT (Gewichtung der Standzeit)

V.TLM.DIST_FACT (Gewichtung des Standweges)

Die Variablen sind schreib- und lesbar. Bei Programmstart sind beide Faktoren 100%. Beide Variablen dürfen in einem NC-Satz beschrieben werden.

Bedingungen für die Erfassung :

q Eilgangsätze werden bei der Standgrößenerfassung nicht berücksichtigt.

q Beträgt der Vorschub Null, so ruht auch die Standgrößenerfassung.

q Es werden alle Bewegungsarten mit Ausnahme der Eilganginterpolation für die Standgrößenerfassung erfaßt. Z.B. werden G01, G02, G03, Splineinterpolation und G63 einbezogen.

q Die Gewichtungsfaktoren gehen in die Berechnung ein.

q Bei an der Bewegung beteiligten Achsen wird nicht zwischen Haupt- und Mitschleppachsen unterschieden. Es wird immer der Bahnvorschub für die Wegaddition genommen. Im Fall von allein im Satz programmierten Mitschleppachsen wird der zurückgelegte Weg der Mitschleppachse zum Standweg addiert. Falls dies nicht erwünscht ist, kann der Programmierer durch die Vorgabe der Gewichtungsfaktoren V.TLM.TIME_FACT/DIST_FACT = 0 korrigierend eingreifen.

q Nicht berücksichtigt werden aktive Master-Slave-Anordnungen.

q Bei einem Reset oder Programmabbruch werden ebenfalls die zuletzt aktuellen Werte in der Datenbasis des WZM aufgenommen.

q Wird nur eingewechselt, d.h. bisher war kein WZ in der Arbeitsspindel und die aktuelle T-Nummer gleich Null, so werden keine Daten verschickt.

q WZ-Daten werden nur verschickt, wenn tatsächlich ein WZM vorhanden ist [1]-10.


Lesen und Löschen von Standgrößen

Für den Zugriff auf die Standgrößen vor dem nächsten WZ-Wechsel stehen nachfolgende Befehle zur Verfügung. Diese sind zum Beispiel während dem Synchronbetrieb bei der Ermittlung der Standgrößen von Werkzeugen der Slaveachsen erforderlich, da diese wie im Kapitel 18.2.1 beschrieben nicht mit erfaßt werden. Dazu wird über den nachfolgenden Befehl die Standgröße des momentan im Kanal aktiven WZ gelesen und an den WZM für ein beliebiges WZ (z.B. Tool-ID eines WZ einer Slaveachse) ausgegeben.

#TOOL LIFE READ [ <basic> [,<sister> [,<variant> ] ] ] (Aktuelle Standgrößen lesen und einer

Tool-ID im WZM zuordnen)

Für die Programmierung der Tool-ID gelten die gleichen Regeln wie z.B. für #TOOL PREP (Kapitel 18.2). Die Tool-ID kann gemäß HÜEMNOS-Konvention 1,2 oder 3 WZ-Angaben enthalten. Es ist immer mindestens eine WZ-Angabe erforderlich, die dann stets als Grund-WZ-Nummer (basic) interpretiert wird. Die WZ-Angaben können beliebige mathematische Ausdrücke sein; z.B. V.G.T_AKT, V.TOOL.BASIC, Pxx, V.L.xxx etc.

Die interne Standgrößenerfassung wird nach Übergabe an den WZM nicht auf Null zurückgesetzt, sondern weiter aufsummiert.

Durch einen weiteren Befehl können die bislang erfassten Standgrößen des momentan im Kanal aktiven WZ ohne Ausgabe an den WZM auf Null zurückgesetzt werden.

#TOOL LIFE REMOVE (Aktuelle Standgrößen löschen)

Programmierbeispiel

....

:

.... Normalbetrieb

:

#TOOL LIFE READ [V.G.T_AKT] (Lese Standgrößen des aktuellen WZ)

#TOOL LIFE REMOVE (Standgrößen zurücksetzen zur getrennten)

(Erfassung der Standgrößen während)

(Synchronbetrieb)

Anwahl Synchronbetrieb

:

.... Synchronbetrieb

:

Abwahl Synchronbetrieb

#TOOL LIFE READ [T10] (Annahme: T10 wird im Synchronbetrieb)

(mit bewegt -->Ausgabe Standgrößen)

(an WZM für T10)

:

.... Normalbetrieb

:


Werkzeugdaten auffrischen

Für das erneute Einrechnen von Werkzeugdaten des aktiven Werkzeuges z.B. in zusätzlichen Achsen nach einem Achstausch steht folgender Befehl zur Verfügung:

#TOOL REFRESH (Daten des aktiven Werkzeuges auffrischen)

Der Befehl bewirkt ein sofortiges internes Einrechnen der bereits vorhandenen Daten des aktiven Werkzeuges. Es werden keine Werkzeugdaten mehr aus einer internen Werkzeugliste [5] übernommen oder von einer externen Werkzeugverwaltung angefordert. Das erneute Programmieren des D-Wortes ist nicht erforderlich.


Positionierachsen

Positionierachsen sind translatorische oder rotatorische Achsen, die im gleichen NC-Kanal unabhängig vom Bahnachsverbund interpoliert werden können. Jede Positionierachse besitzt ihren eigenen Achsinterpolator und kann mit einer individuellen Geschwindigkeit (Vorschub) beauftragt werden.

Restriktionen:

Eine Achse kann nicht als Positionierachse programmiert werden, wenn:

- Diese Achse als Clampingachse konfiguriert ist

- Diese Achse momentan im Synchronbetrieb fährt

- Eine kinematische oder kartesische Transformation aktiv ist und bestimmte Voraussetzungen nicht gegeben sind (siehe Kapitel 19.3).

- Satzvorlauf aktiv ist

- Simulationsmodis (Online-Simulation, Konturvisualisierung,
Fertigungszeitberechnung) aktiv sind

- Splineinterpolation aktiv ist

- Polynomüberschleifen aktiv ist

- Drehfunktionen aktiv sind

Mehr:

button Unabhängige Achsen

button Pendelachsen

button Kartesische / kinematische Transformationen und Positionierachsen


Unabhängige Achsen

Bei der Programmierung s.g. unabhängiger Achsen werden zwei Betriebsmodis unterschieden:

q Synchronisierung von Bahnachsen und unabhängigen Achsen jeweils am Satzende.

q Synchronisierung von Bahnachsen und unabhängigen Achsen über mehrere Satzgrenzen hinweg.

Abbildung 19-1: Prinzipielles Bewegungsschema Bahnachsverbund/unabhängige Achsen

Bei unabhängigen Achsen werden keine Verschiebungen berücksichtigt.

Der additive Handsatzbetrieb (G201/G202) mit einer unabhängigen Achse ist möglich.

Syntax zur Programmierung unabhängiger Achsen:

<Achsname> [ INDP_SYN | INDP_ASYNG90 | G91G00 | G01FEED<expr> | TIME<expr> |

FEED_MAX_WEIGHT <expr> POS <expr> [SLOPE_PROFIL<expr>]

{M<expr>} {H<expr>} ]

<Achsname> Name der unabhängigen Achse

INDP_SYN Kennung für die synchrone (satzweise) unabhängige Achsbewegung. Übergang zum nächsten Satz erfolgt erst dann, wenn alle Achsen ihre Endpositionen erreicht haben. Muß immer als erstes Schlüsselwort programmiert sein.

INDP_ASYN Kennung für die asynchrone (satzübergreifende) unabhängige Achs-bewegung. Keine Synchronisierung auf Endpositionen. Die Synchronisierung erfolgt durch einen speziellen Befehl (#WAIT INDP) oder durch Programmierung der unabhängigen Achse als Bahnachse. Muß immer als erstes Schlüsselwort programmiert sein.

G90 / G91 Absolut- / Relativmaß

G00 / G01 Eilgang- / Linearinterpolation

FEED<expr> Achsspezifischer Vorschub in Wegeinheiten/min

TIME<expr> Achsspezifische Verfahrzeit in s

FEED_MAX_WEIGHT <expr> Gewichtungsfaktor in % bezogen auf den achsspezifischen maximalen Vorschub. Es sind nur Gewichtungswerte kleiner 100% erlaubt. (gemäß G194, Kapitel 4.25)

POS<expr> Achsposition

SLOPE_PROFIL<expr> Slope-Profiltypen (0, 1, 2) (gemäß #SET SLOPE PROFIL, Kapitel 11.14 ) Wenn kein Slopetyp programmiert ist, wird per Default der Slopetyp aus dem Kanalparametersatz gesetzt.

M<expr> Achsspezifische M-Funktion

H<expr> Achsspezifische H-Funktion

Achsspezifische M/H-Funktionen können auch ohne die Programmierung einer Bewegung an eine unabhängige Achse ausgegeben werden. Dazu ist zusätzlich nur die Kennung INDP_SYN bzw. INDP_ASYN erforderlich:

<Achsname> [ INDP_SYN | INDP_ASYNM<expr> {M<expr>} H<expr> {H<expr>} ]

<Achsname> Name der unabhängigen Achse

INDP_SYN/INDP_ASYN Kennung für eine unabhängige Achse

M<expr> Achsspezifische M-Funktion

H<expr> Achsspezifische H-Funktion

Die Synchronisation bestimmter asynchroner Achsbewegungen (INDP_ASYN) wird erzwungen durch den Befehl:

#WAIT INDP [ <Achsname> { ,<Achsname> } ]

<Achsname> Name der asynchronen Achse

Wird eine asynchrone Achse vor oder ohne dem entsprechenden #WAIT INDP [ ] erneut programmiert, so wird die Synchronisation implizit im Interpolator durchgeführt.

Die Synchronisation von allen momentan aktiven asynchronen Achsbewegungen (INDP_ASYN) wird erzwungen durch den Befehl:

#WAIT INDP ALL

Programmierbeispiel

:

N10 X10 Y11 Z[INDP_SYN POS50 G01 FEED100 G90] (N10 ist beendet, wenn X,)
(Y und die unabhängige)
(synchr. Z-Achse ihre Be-)
(wegung beendet haben)

N20 X20 Y22 (N20 wird ausgeführt, nachdem alle Bewegungen in)
(N10 beendet sind)

N30 X5 Y10 Z[INDP_ASYN POS500 G01 FEED200 G90] (N30 ist beendet, wenn X)
(und Y ihre Bewegung)
(beendet haben; die unab-)
(hängige asynchrone Z-)
(Achse fährt weiter)

N40 X20 Y30 (N40 wird interpoliert; die asynchrone unab-)
(hängige Z-Achse fährt weiter)

N50 #WAIT INDP[Z] (Erzwungene Synchronisierung der Z-Bewegung)
(aus N30)

N60 X30 Y40 Z60 (N60 wird mit X, Y, Z im Bahnverbund interpoliert,)
(wenn in N50 die Z-Achse synchronisiert wurde)

N70 Z[INDP_SYN M50] (Ausgabe von M50 über unabhängige Z-Achse)

N80

Programmierbeispiel

N10 X10 Y11 Z[INDP_ASYN POS500 G01 FEED200 G90] (N10 wird interpoliert,)
(die unabhängige asyn-)
(chrone Z-Achse fährt)
(weiter)

N20 X20 Y22 (N20 wird interpoliert, die unabhängige asynchrone Z-)
(Achse fährt weiter))

N30 Z550 (Implizite Synchronisation der Z-Bewegung von N10 bevor)
(Bewegung Z550 begonnen wird)

N40 X20 Y30 Z60 (N40 wird interpoliert)

N50

Wird die Achse einer vorbelegten achsspezifischen M/H-Funktion im gleichen NC-Satz als unabhängige Achse programmiert, so wird eine Fehlermeldung ausgegeben.

Beispiel: M10 ist X-achsspezifisch vorbelegt ( m_default_outp_ax_name[10] x ):

N10 M10X [INDP_SYN G01 G90 POS10 FEED1000 M7]

|_____| <- Fehler!


Pendelachsen

Die Verfügbarkeit dieser Funktionalität ist von der Konfiguration und dem Versionsumfang abhängig.

Für bestimmte Bearbeitungstechnologien wie z. B. Schleifen ist eine oszillierende Achsbewegung erforderlich, die weitgehend unabhängig von einer Bahnbewegung ausgeführt wird.

Diese im folgenden als Pendelbewegung bezeichnete Bewegung führt das Werkzeug periodisch reversierend über dem Werkstück aus.

Beispielhaft ist im folgenden eine Pendelachse beim Schleifen dargestellt. Die Werkstückbearbeitung erfolgt dabei durch Überlagerung der X - Pendelbewegung mit Positionierbewegungen in Y und Z- Achse.

Abbildung 19-2: Schleifen mit Pendelachse

Die wesentlichen Eigenschaften der Pendelbewegung ergeben sich über zwei Absolutpositionen zwischen denen die Pendelbewegung ausgeführt wird, sowie der Vorschubgeschwindigkeit.

Start und Stop und Parametrierung der Pendelbewegung erfolgen über das NC-Programm.

Innerhalb der konfigurierten Achsen kann jede beliebige Achse als Pendelachse festgelegt werden. Die Pendelbewegung erfolgt asynchron zur Bahnbewegung.

Die Deaktivierung der Pendelbewegung erfolgt entweder:

q direkt durch einen NC-Befehl

q oder implizit durch Programmierung einer Bahnbewegung für die Pendelachse

q oder implizit bei der Anforderung von Achspositionen zur Synchronisation von Decodierung und Interpolation

q oder implizit am Programmende

Durch Angabe des Profiltyps in den Kanalparametern [1]-26 (linearer/nichtlinearer Slope) kann für die Pendelbewegung die Art des Geschwindigkeitssverlaufs in der dynamischen Phase festgelegt werden.

Die Programmiersyntax lehnt sich an die achsspezifische Programmierung von unabhängigen Achsen an. Nach dem Achsbezeichner erfolgt die Parametrierung der Pendelbewegung über Schlüsselworte und ggf. zugehörige Werte:

<Achsname> [ OSC ON | OFFFEED<expr> | FREQ<expr> | TIME<expr>

[1ST_POS<expr>2ND_POS<expr>] | [ ZERO_POS<expr>EXCUR<expr>]

[1ST_DELT<expr>2ND_DELT<expr>] [NBR_OSC<expr>] ]

<Achsname> Name der Pendelachse

OSC Kennung für die Funktionalität "Pendeln". Muß immer als erstes Schlüsselwort programmiert sein.

ON Pendeln einschalten. Bei aktiver Bahnbewegung wird am Satzende angehalten und dann die Pendelbewegung beauftragt.

OFF Pendeln ausschalten. Danach kann die Pendelachse wieder im Bahnverbund bewegt werden. Ohne vorherige Abwahl wird die Pendelbewegung bei Programmierung einer neuen Achsbewegung implizit abgebrochen.

FEED<expr> Vorschub der Pendelbewegung in Wegeinheiten/min

FREQ<expr> Frequenz der Pendelbewegung in Hz

TIME<expr> Periodendauer der Pendelbewegung in s

1ST_POS<expr> Erste Umkehrposition

2ND_POS<expr> Zweite Umkehrposition

ZERO_POS<expr> Nullpunkt bzw. Nulldurchgang der Pendelbewegung

EXCUR<expr> Auslenkung

1ST_DELT<expr> Wartezeit an erster Umkehrposition

2ND_DELT<expr> Wartezeit an zweiter Umkehrposition

NBR_OSC<expr> Anzahl Schwingungen

Die Eigenschaft der Pendelbewegung wird durch die Lage der Umkehrpositionen und dem Achsvorschub bestimmt. Die Umkehrpositionen können entweder direkt angegeben werden oder sie werden alternativ über Nullposition und Auslenkung automatisch bestimmt.

q Bei den Pendelpositionen handelt es sich immer um Absolutpositionen.

q Nach Abwahl der Pendelbewegung wird immer auf Pendelposition 2 gestoppt!

Die Pendelgeschwindigkeit kann alternativ über den Vorschub, die Frequenz oder die Periodendauer festgelegt werden.

Sofern keine Beschränkung aufgrund der dynamischen Achskenngrößen auftritt, werden bei Verwendung des linearen Slopes die Frequenz und die Periodendauer exakt eingehalten, beim nichtlinearen Slope näherungsweise.

Abbildung 19-3: Positioniervorgang bei der Pendelbewegung

Programmierbeispiel

Angabe des Pendelfahrweges über Umkehrpositionen

N10 X[OSC ON 1ST_POS=-100 2ND_POS=100 FEED=1000]

Angabe des Pendelfahrweges über Nullposition und Auslenkung,
10 Schwingungen

N20 X[OSC ON ZERO_POS=0 EXCUR=100 FEED=1000 NBR_OSC=10]

Angabe der Pendelfrequenz 1 Hertz

N30 X[OSC ON ZERO_POS=0 EXCUR=100 FREQ=1]

Angabe der Pendelperiodendauer 4s

N40 X[OSC ON ZERO_POS=0 EXCUR=100 TIME=4]

Pendelbewegung mit Zustellbewegung einer Bahnachse

N50 X[OSC ON 1ST_POS=111 2ND_POS=222 FREQ=1]

N60 G01 G90 Y500 F200

Pendeln mit Wartezeiten an den Umkehrpositionen von jeweils 0.5 s:

N70 X[OSC ON 1ST_POS-100 1ST_DELT0.5 2ND_POS200 2ND_DELT0.5 FEED1000]

Abwahl Pendeln

Pendelbewegung wird mit Erreichen der Umkehrposition 2 beendet.

N80 X[OSC OFF]

Schneller Pendelstop

Wird in Verbindung mit OFF ein Vorschub FEED programmiert, so wird die Pendelbewegung sofort abgebrochen (Feedhold der Pendelachse) und es wird mit dem neuen Vorschub direkt auf Umkehrposition 2 gefahren.

N90 X[OSC OFF FEED=5000]

Die Gleichheitszeichen zwischen Schlüsselwort und Wert sind optional.


Kartesische / kinematische Transformationen und Positionierachsen

Mehr:

button Positionierung und Versätze

button Einschränkungen


Positionierung und Versätze

Bei konventionellem Betrieb und CS-Betrieb (#CS, #ACS) mit aktiver unabhängiger Achse oder Pendelachse muß der Anwender Absolutpositionen für diese Achse programmieren. D.h. wenn ein Werkzeug eingewechselt wurde, muß eventuell die Länge des Werkzeugs bei der Programmierung der Achse berücksichtigt werden. Zuvor programmierte Nullpunktversätze (G54..G59) oder Bezugspunktverschiebungen (G92) sind nicht wirksam.

Bei Betrieb mit aktiver kinematischer Transformation (#TRAFO) werden die Werkzeugversätze direkt in der Transformation berücksichtigt. D.h. diese werden auch bei aktiven unabhängigen Achsen oder Pendelachsen berücksichtigt. Auch hier sind zuvor programmierte Nullpunktversätze (G54..G59) oder Bezugspunktverschiebungen (G92) nicht wirksam.


Einschränkungen

Vor der Neuanwahl einer kartesischen und/ oder kinematischen Transformation muß eine Pendelbewegung oder unabhängige Achsbewegung deaktiviert werden.

Eine Positionierachse darf nur programmiert werden:

q bei kartesischen Kinematiken, und

q nur in der 3. Achse (i. A. Z-Achse) bei senkrecht auf dem XY-Maschinenbett stehendem Werkzeug (z.B. A-Achse auf 0 Grad bei CA-Kopfkinematik).

Programmierbeispiele

Programmierung unabhängiger Achsen:

N10 #KIN ID[9]

N20 #TRAFO ON

N30 Z[INDP_ASYN G01 G90 POS20 F0.01 SLOPE_PROFIL 0]

N40 Z[INDP_ASYN G01 G90 POS-20 F0.01 SLOPE_PROFIL 0]

N50 G01 G90 X100 F0.1

N60 #TRAFO OFF

N100 M30

N10 G00 X0 Y0 Z0 C0

N20 #CS ON[0,0,0,0,0,45]

N30 Z[INDP_ASYN G01 G90 POS20 F0.01 SLOPE_PROFIL 0]

N40 Z[INDP_ASYN G01 G90 POS-20 F0.01 SLOPE_PROFIL 0]

N50 G01 G90 X100 F0.1

N60 #CS OFF

N100 M30

N10 #KIN ID[9]

N20 #TRAFO ON

N30 #CS ON[0,0,0,0,0,45]

N40 Z[INDP_ASYN G01 G90 POS20 F0.01 SLOPE_PROFIL 0]

N50 Z[INDP_ASYN G01 G90 POS-20 F0.01 SLOPE_PROFIL 0]

N60 G01 G90 X100 F0.1

N70 #CS OFF

N80 #TRAFO OFF

N100 M30

Programmierbeispiele

Programmierung von Pendelachsen:

N10 G00 X0 Y0 Z0 C0

N20 #KIN ID[9]

N30 #TRAFO ON

N40 Z[OSC ON 1ST_POS=10 2ND_POS=20 FEED=1.00]

N50 G01 G90 X100 Y100 F0.1

N60 Z[OSC OFF FEED=2.00]

N70 #TRAFO OFF

N100 M30

N10 G00 X0 Y0 Z0 C0

N20 #CS ON[0,0,0,0,0,45]

N30 Z[OSC ON 1ST_POS=10 2ND_POS=20 FEED=1.00]

N40 G01 G90 X100 Y100 F0.1

N50 Z[OSC OFF FEED=2.00]

N60 #CS OFF

N100 M30

N10 G00 X0 Y0 Z0 C0

N20 #KIN ID[9]

N30 #TRAFO ON

N40 #CS ON[0,0,60,0,0,45]

N50 Z[OSC ON 1ST_POS=10 2ND_POS=20 FEED=1.00]

N60 G01 G90 X100 Y100 F0.1

N70 Z[OSC OFF FEED=2.00]

N80 #CS OFF

N90 #TRAFO OFF

N100 M30

Programmierbeispiel

Der folgende Programmauschnitt zeigt eine unzulässige verschachtelte Programmierung von CS mit kinematischer Transformation und Pendeln.

N10 #KIN ID[9]

N20 #TRAFO ON

N30 Z[OSC ON 1ST_POS=10 2ND_POS=20 FEED=1.00]

N40 G01 G90 X100 Y100 F0.1

N50 #CS ON[0,0,0,0,0,45]

N60 G01 G90 X100 F0.1

N70 #CS OFF

N80 #TRAFO OFF

N90 Z[OSC OFF FEED=2.00]

N100 M30


Achsspezifische Programmierung

Die Programmiersyntax der folgenden NC-Befehle lehnt sich an die achsspezifische Programmierung von Positionierachsen an. Nach dem Achsbezeichner erfolgt die Parametrierung über Schlüsselworte und ggf. zugehörige Werte.

Mehr:

button Ein-/Ausschalten von Achskompensationen im NC-Programm

button Getastete Spindeln

button Programmierbarer Achsoverride

button Programmierbare Beschleunigungsüberlast


Ein-/Ausschalten von Achskompensationen im NC-Programm

TwinCat CNC: ab V263.1501

Sonstige: ab V260

Neben der Möglichkeit über entsprechende Achsparameter können die verschiedenen Achskompensationen [FCT-C5] auch direkt im NC-Programm an- und abgewählt werden. Hierbei können achsspezifisch in einem NC-Satz für mehrere Achsen verschiedene Achskompensationen gleichzeitig aktiviert bzw deaktiviert werden.

<Achsname> [ COMP [ [ON | OFF [ CROSS | PLANE | LEAD | TEMP ] ] | OFF_ALL] ]

<Achsname> Name der Achse

COMP Kennung für die An-/Abwahl von achsspezifischen Kompensationen. Muß immer als erstes Schlüsselwort programmiert sein.

ON Programmierte Kompensation(en) einschalten

OFF Programmierte Kompensation(en) ausschalten

CROSS Schlüsselwort für Kreuzkompensation

PLANE Schlüsselwort für Flächenkompensation

LEAD Schlüsselwort für Spindelsteigungsfehlerkompensation

TEMP Schlüsselwort für Temperaturkompensation

OFF_ALL Alle Kompensationen ausschalten. Dem Schlüsselwort dürfen keine weiteren Kompensationsbezeichner folgen.

Programmierbeispiele

N10 X[COMP OFF CROSS PLANE] Ausschalten von Kreuz-und Flaechenkompensation in der X-Achse

N50 X[COMP OFF CROSS] Y[COMP ON LEAD TEMP] Kompensationsprogrammierung mehrerer Achsen in einem NC-Satz

N100 Z[COMP OFF_ALL] Ausschalten aller Kompensationen in der Z-Achse


Getastete Spindeln

Die Verfügbarkeit dieser Funktionalität ist von der Konfiguration und dem Versionsumfang abhängig.

Mit Hilfe dieser Funktionalität kann bei entsprechender Ausrüstung der werkzeugtragenden Achse (Spindelachse) der Abstand der Werkzeugs zu einer "welligen" Werkstückoberfläche vorgegeben werden. Dieser Abstand wird über ein Messystem erfaßt und von der NC kontinuierlich der unregelmäßigen Oberfläche nachgeführt.

Die Freischaltung der Abstandsregelung für eine getastete Spindel erfolgt durch den Parameter [2]-27. Die Aktivierung erfolgt über den nachfolgenden NC-Befehl.

<Achsname> [DIST_CTRL [ON | OFF] |CHECK_POS | FREEZE | REFSET_POS<expr>
VAL1<expr> -VAL5<expr> ]

<Achsname> Name der werkzeugtragenden Achse

DIST_CTRL Kennung für die Funktionalität "Getastete Spindeln". Muß immer als erstes Schlüsselwort programmiert sein.

ON Abstandskontrolle einschalten.

OFF Abstandskontrolle ausschalten.

CHECK_POS Prüfen, ob Position im Toleranzfenster ist.

FREEZE Einfrieren des ausgeregelten Abstandes über Werkstück. Die Achsposition wird gehalten; keine Nachführung.

REF Meßsystem referenzieren (nur wenn kein Absolutmeßsystem vorhanden ist)

SET_POS<expr> Abstandszielwert über Werkstück [mm] (Absolutposition).

VAL1<expr>-VAL5<expr> Frei belegbare Werte (5)

Die Schlüsselworte ON/OFF, FREEZE, CHECK_POS und REF schliessen sich gegenseitig im gleichen Befehl aus. Die Schlüsselworte SET_POS und VAL1-VAL5 können immer in Kombination mit programmiert werden. Ist bei Programmende die Funktion noch aktiv, so wird diese automatisch abgewählt (implizites "OFF").

Programmierbeispiele

%DIST_1

N10 Z[DIST_CTRL SET_POS=30] Position setzen

N20 Z[DIST_CTRL ON] Anwahl

N20 Z[DIST_CTRL CHECK_POS VAL1=10 VAL2=45] Position prüfen

:

Nxx Z[DIST_CTRL OFF] Abwahl

N999 M30

%DIST_2

N10 Z[DIST_CTRL ON SET_POS=30] Anwahl+Position setzen

:

Nxx Z[DIST_CTRL FREEZE] Position halten

:

Nxx Z[DIST_CTRL OFF] Abwahl

N999 M30


Programmierbarer Achsoverride

Mit dieser Funktion kann der Achsvorschub im NC-Programm wenn erforderlich für Vorschub und Eilgangsätze unterschiedlich beeinflusst werden. Der achsspezifische programmierte Overridewert ist bei Bahnbewegungen wirksam, wenn sich die entsprechende Achse bewegt. Die Wirkungsweise der Echtzeitbeeinflussungen des Vorschubs über die PLC bleibt davon unberührt.

Als weitere Funktion steht auch ein programmierbarer Bahnoverride zur Verfügung.

Bei mehreren in einem NC-Satz bewegten Achsen mit unterschiedlichen achsspezifischen Overridewerten wirkt immer der kleinste Override. Ist zusätzlich auch noch ein Bahnoverride definiert, so ergibt sich der wirksame Override aus der Multiplikation der beiden Overridewerte.

Die Funktion G166 unterdrückt die Wirkung der programmierten Overridewerte.

<Achsname> [ OVERRIDE FEED_FACT <expr> RAPID_FACT <expr> ]

<Achsname> Name der Achse

OVERRIDE Kennung für die achsspezifische Overrideprogrammierung. Muß immer als erstes Schlüsselwort programmiert sein.

FEED_FACT<expr> Overridefaktor für Vorschubsätze [0,1% - 200%].

RAPID_FACT<expr> Overridefaktor für Eilgangsätze [0,1% - 200%].

Programmierbeispiele

%ax_override

N10 G01 X100 Y100 Z100 F1000

N40 X[OVERRIDE FEED_FACT=20 RAPID_FACT=60] Achsoverride X G01 20%, G00 60%

N50 Y[OVERRIDE FEED_FACT=30 RAPID_FACT=70] Achsoverride Y G01 30%, G00 70%

N60 Z[OVERRIDE FEED_FACT=40 RAPID_FACT=80] Achsoverride Z G01 40%, G00 80%

N50 G00 X0 G00 Bewegung mit 60% Override

N60 Y0 G00 Bewegung mit 70% Override

N70 Z0 G00 Bewegung mit 80% Override

N80 G01 X100 F2000 G01 Bewegung mit 20% Override

N90 Y100 G01 Bewegung mit 30% Override

N100 Z100 G01 Bewegung mit 40% Override

N110 X200 Y200 G01 Bewegung mit 20% Override

N120 X300 Y300 Z200 G01 Bewegung mit 20% Override

M30


Programmierbare Beschleunigungsüberlast

Aus technologischen Gründen kann es in Verbindung mit konturbeeinflussenden Verfahren erforderlich sein, den Antrieb über die vorgegebenen Dynamikgrenzwerte hin zu belasten, um z.B. eine konstante Bahngeschwindigkeit in Polynomkonturen zu gewährleisten.

Über den nachfolgenden achsspezifischen Befehl kann in Verbindung mit dem zugeordneten Parameter P-AXIS-00394 die Dynamik der Achse im Programmkontext über die zulässige Maximalbeschleunigung P-AXIS-00008 hinaus in Prozent gewichtet werden. P-AXIS-00394 stellt dabei die zulässige Obergrenze für den Beschleunigungsgewichtungsfaktor der Achse in Promille dar. Der Gewichtungsfaktor bezieht sich auf die Vorschubdynamikgrenzwerte des entsprechenden aktiven Slope-Profiles.

Aktuell kann die Funktion zur Gewichtung der Beschleunigung in Verbindung mit dem Überschleifverfahren 6 verwendet werden.

<Achsname> [ DYNAMIC DIST_SOFT | ACC_FACT<expr>]

<Achsname> Name der Achse

DYNAMIC Kennung für die Dynamikgewichtung der Achse. Muß immer als erstes Schlüsselwort programmiert sein.

DIST_SOFT Kennung für das Polynomüberschleifverfahren 6.

ACC_FACT<expr> Achsspezifischer Gewichtungsfaktor in %

Der minimale Gewichtungswert ist 100% !

Der maximale Gewichtungswert wird auf P-AXIS-00394 begrenzt.

Programmierbeispiel

%dynamic

N10 #SET SLOPE PROFIL[0]

N20 #CONTOUR MODE[DIST_SOFT SYM_DIST=35 ACC_MAX=100 ]

N30 C[DYNAMIC DIST_SOFT ACC_FACT=200]

(* Beschleunigungsüberschreitungsfaktor für C-Achse 200% *)

N30 G1 G91 G261

N40 X59.485 F10000

N50 X105.172 C26.992

N60 X113.189 C46.171

N70 X100.348 C-46.171

N80 X99.179 C-26.992

N90 G260 X138.799

N100 G261

M30


Befehlsübersicht

Mehr:

button G- Funktionen

button M- Funktionen

button Nach DIN reservierte Funktionen und ISG-Erweiterungen

button Steuersatzanweisungen

button Zusatzfunktionen

button Achsspezifische Zusatzfunktionen

button PLC-Open-Funktionen

button Variablenprogrammierung

button Sonstige Funktionen


G- Funktionen

G00 | Geradeninterpolation im Eilgang
G01 | Geradeninterpolation
G02 | Kreis im Uhrzeigersinn (cw)
G03 | Kreis im Gegenuhrzeigersinn (ccw)

812_start

G02/03

Helikalinterpolation

812_end

G04

Verweilzeit

G05

Tangentiale An/Abwahl der WRK

G08 | Beschleunigung am Satzanfang
G09 | Verzögerung am Satzende

G10 | Vorschub konstant
G11 | Vorschub angepaßt

812_start

G12 | Abwahl Eckenverzögerung
G13 | Anwahl Eckenverzögerung

812_end

G17 | X-Y-Ebene
G18 | Z-X-Ebene
G19 | Y-Z-Ebene

G20 | Abwahl der Spiegelung
G21 | Spiegeln der programmierten Wege an der Y-Achse
G22 | Spiegeln der programmierten Wege an der X-Achse
G23 | Überlagerung von G21 und G22

G25 | Geradenübergänge bei der WRK
G26 | Kreisübergänge bei der WRK

812_start

G33

Gewindeschneiden, gleichbleibende Steigung

812_end

G40 | WRK/SRK Abwahl
G41 | WRK/SRK links der Kontur
G42 | WRK/SRK rechts der Kontur

812_start

G51 | Anwahl Durchmesserprogrammierung
G52 | Abwahl Durchmesserprogrammierung

812_end

G53 | Abwahl der Nullpunktsverschiebung
G54 G59 | Anwahl der Nullpunktsverschiebungen

G60

Genauhalt

G61

Polynomüberschleifen

G63

Gewindebohren

G70 | Eingaben in Zoll
G71 | Eingaben metrisch

G74

Referenzpunktfahrt

G80  G89

Implizite Unterprogrammaufrufe

G90 | Absolutmaß
G91 | Kettenmaß(alle Angaben relativ)

G92

Bezugspunktverschiebung

G93 | Umschalten der Bedeutung des F-Wortes zur Angabe der Bearbeitungszeit
G94 | Umschalten der Bedeutung des F-Wortes zur Angabe der Vorschubgeschwindigkeit

812_start

G95

Umdrehungsvorschub

G96 | Konstante Schnittgeschwindigkeit
G97 | Angabe der Spindeldrehzahl in 1/min

812_end

G98 | Negativen Software-Endschalter setzen
G99 | Positiven Software-Endschalter setzen

G100 | Meßfunktionen (Typ 1- 7)
G101 | Meßoffsets einrechnen
G102 | Meßoffsets herausrechnen
G106 | Meßfahrt mit Fahren bis Zielpunkt
G107 | Abwahl satzübergreifendes Kantenstoßen
G108 | Kantenstoßen

G112 | Getriebeschalten
G115 | Allgemeine Beeinflussung des Look-Ahead
G116 | Look-Ahead (Satzübergangsgeschwindigkeit) manipulieren
G117 | Look-Ahead (Default) einschalten
G129 | Gewichtung der Eilganggeschwindigkeit
G130 | Beschleunigungsgewichtung, achsspezifisch
G131 | Beschleunigungsgewichtung, achsgruppenspezifisch
G132 | Rampenzeitgewichtung, achsspezifisch
G133 | Rampenzeitgewichtung, achsgruppenspezifisch
G134 | Geometrische Rampenzeitgewichtung, achsgruppenspezifisch
G135 | Anwahl der Vorsteuerung
G136 | Angabe der Gewichtung der Vorsteuerung
G137 | Abwahl der Vorsteuerung
G138 | Direkte An-/Abwahl der WRK
G139 | Indirekte An-/Abwahl der WRK
G140 | Abwahl Konturausblendung
G141 | Anwahl Konturausblendung
G150 | Abwahl Spline-Interpolation
G151 | Anwahl Spline-Interpolation
G159 | Erweiterte Nullpunktsverschiebung

812_start

G160

Achsspezische Aktivierung von Nullpunktsverschiebungen

812_end

G161* | Lage des Kreismittelpunktes absolut
G162** | Lage des Kreismittelpunktes relativ
G163 | Anwahl der Radiusprogrammierung
G164 | Kreismittelpunktskorrektur ausgeschaltet
G165 | Kreismittelpunktskorrektur eingeschaltet

G166 | Override 100%
G167 | Spindeloverride 100%
G193 | Wegbezogene Vorschubinterpolation
G194 | Gewichtung der maximalen Vorschubgeschwindigkeit

812_start

G196

Maximale Spindeldrehzahl bei G96

812_end

G200 | Anwahl Handbetrieb ohne parallele Interpolation
G201 | Anwahl Handbetrieb mit paralleler Interpolation
G202 | Abwahl Handbetrieb mit paralleler Interpolation

G237

Lotrechte An-/Abwahl der WRK

812_start

G238

Inneneckanwahl der WRK

812_end

G239 | Direkte An-/Abwahl der WRK ohne Satz
G260 | Abwahl Polynomüberschleifen
G261 | Anwahl Polynomüberschleifen
G293 | Zeitbezogene Vorschubinterpolation
G301 | Einfügen von Fasen
G302 | Einfügen von Radien

812_start

G310

Unterbrechbarer Satz (Meßtyp 5 - 6)

812_end

G351 | Spiegelung mit Achsangabe
G359 | Abwahl Genauhalt
G360 | Anwahl Genauhalt
G800 - G819 | Zusätzliche implizite Unterprogrammaufrufe
G900 | Umschalten auf Verzögerung am Satzende
G901 | Verzögerung nach Satzende

*wenn G161 wirksam:

I Absolute Lage des Kreismittelpunktes in X-Richtung

J Absolute Lage des Kreismittelpunktes in Y-Richtung

K Absolute Lage des Kreismittelpunktes in Z-Richtung

**wenn G162 wirksam:

I Relative Lage des Kreismittelpunktes in X-Richtung

J Relative Lage des Kreismittelpunktes in Y-Richtung

K Relative Lage des Kreismittelpunktes in Z-Richtung


M- Funktionen

M00 | Programmierter Halt
M01 | Wahlweiser Halt
M02 | Programmende

M17 | Unterprogrammende

M29 | Unterprogrammende
M30 | Programmende

M40 - 45

Anwahl der Spindelgetriebestufen


Nach DIN reservierte Funktionen und ISG-Erweiterungen

D | Werkzeuggeometriekorrektur
E* | Vorschubgeschwindigkeit am Satzende
F | Vorschubgeschwindigkeit am Satzanfang
H | Technologie-Informationen an die SPS
L | Unterprogrammaufruf (global)
L CYCLE | Zyklusaufruf
LL | Unterprogrammaufruf (lokal)
N | Satznummer
P | Parameterrechnung
R | Radiusprogrammierung
S | Spindeldrehzahl
S.POS | Spindelposition
T | Werkzeugplatzanwahl
/ | Ausblenden von NC-Saetzen


Steuersatzanweisungen

BREAK- Anweisung ($BREAK) | 213
CONTINUE- Anweisung ($CONTINUE) | 213
DO- Schleife ($DO, $ENDDO) | 213
REPEAT- Schleife ($REPEAT, $UNTIL) | 213
FOR- Schleife ($FOR, $ENDFOR) | 213
GOTO- Anweisung ($GOTO) | 213
IF- ELSE- Verzweigung ($IF, $ELSE, $ELSEIF, $ENDIF) | 207
Sprungverteiler ($SWITCH, $CASE, $DEFAULT, $ENDSWITCH) | 209
WHILE- Schleife ($WHILE, $ENDWHILE) | 213


Zusatzfunktionen

#ACHSE | Programmierung von Achsen im Handbetrieb
#ACS ON / OFF | Definition/ Aktivierung eines Aufspannlagenkorrektur-KS
#ADD | Zusatzinformation am Satzende
#AX DEF | Definition einer Achskonfiguration (erweiterte Syntax)
#AX DEF DEFAULT | Laden der Defaultachskonfiguration (erweiterte Syntax)
#AX REQUEST | Anfordern von Achsen (erweiterte Syntax)
#AX RELEASE | Abgeben von Achsen (erweiterte Syntax)
#AX RELEASE ALL | Abgeben aller Achsen (erweiterte Syntax)

812_start

#BACKWARD STORAGE CLEAR

Rückwärtsfahrspeicher löschen

812_end

#BLOCKSEARCH LOCKED / RELEASED | Sperren von Programmbereichen für den Satzvorlauf
#CALL AX | Anfordern von Achsen
#CAX | Anfordern der Spindelachse für C-Achsbearbeitung
#CAX OFF | Abgabe der C-Achse an die Spindel
#CAXTRACK ON / OFF | Automatische Achsnachführung
#CLEAR CONFIG | Löschen einer Konfiguration
#COMMENT BEGIN / END | Satzübergreifender Kommentar
#CONTOUR MODE | Parametrierung Polynomüberschleifen
#CONTROL AREA START / END | Definition von Kontrollbereichen
#CONTROL AREA ON / OFF | An-/ Abwahl von Kontrollbereichen
#CONTROL AREA CLEAR | Löschen von Kontrollbereichen
#CS ON / OFF | Definition/ Aktivierung eines Bearbeitungs-KS
#CYL | Anwahl der Mantelflächenbearbeitung
#CYL OFF | Abwahl der Mantelflächenbearbeitung
#DELETE | Löschen eigendefinierter Variablen oder Parameter
#DRIVE WR SYN / WAIT SYN | Schalten von Antriebsfunktionen
#ECS ON / OFF | An-/ Abwahl Effektor-Koordinatensystem
#ENABLE AX LINK / #DISABLE AX LINK | An-/ Abwahl Achskopplungen
#ERROR | Benutzerdefinierte Fehlerausgabe
#EXPL SYN | Explizite Synchronisierung
#FACE | Anwahl der Stirnflächenbearbeitung
#FACE OFF | Abwahl der Stirnflächenbearbeitung
#FGROUP | Definition einer Vorschubgruppe
#FGROUP ROT | Vorschubberechnung mit Rundachse
#FGROUP WAXIS | Schwächste Achse als Vorschubachse
#FILENAME | Definition von Dateinamen
#FILTER | Filterprogrammierung
#FLUSH | NC-Kanal leeren mit unterbrochener Bewegung
#FLUSH CONTINUE | NC-Kanal leeren mit kontinuierlicher Bewegung
#FLUSH WAIT | Synchronisierung von Decodierung und Interpolation
#FREE TOOL CHANGE ON / OFF | Werkzeugwechsel bei aktivem Synchronbetrieb
#GET IPO OFFSET | Übernahme aktuelle Offsetwerte
#GET WCS POSLIMIT | Bewegungsgrenzen im Werkstückkoordinatensysten
#HSC ON / OFF | Freiformflächenbearbeitung
#IDENT WR / RD / SYN | Schreiben-/Lesen von Sercosparametern
#IF / ELSE / ENDIF | Bedingte Interpretierung
#INIT MAKRO TAB | Initialisierung der Makro-Tabelle
#KIN ID | Maschinenkinematik
#LOAD CONFIG | Laden einer Konfiguration
#MACHINE DATA | Schreiben von Maschinendaten
#MAIN SPINDLE | Wechsel der Hauptspindel
#MCS ON / OFF | Temporärer Übergang in das Maschinenkoord.system
#MCS TO WCS | Abbildung Maschinenkoordinaten in Werkstückkoordinaten
#MEAS MODE | Umschalten des Messtyps
#MEAS | Erweiterte Messoptionen
#MSG | Meldungen aus dem NC-Programm
#MSG INFO | Meldungsinformation
#MSG SAVE | Meldung in Datei schreiben

812_start

#OPTIONAL
EXECUTION ON / OFF

Ausblenden von Programmsequenzen beim Vorwärts-/Rückwärtsfahrbetrieb

812_end

#OVERRIDE | Programmierbarer Bahnoverride
#PSET / #PRESET | Istwertsetzen an-/ abwählen
#PTP ON / OFF | Positionierbewegung ohne Ausgleichsbewegung
#PUT AX | Abgeben von Achsen
#PUT AX ALL | Abgeben aller Achsen
#ROTATION ON / OFF | An-/ Abwahl Konturrotation
#RTCP ON / OFF | An-/ Abwahl Rotation Tool Center Point (alte Syntax)
#SAVE CONFIG | Sichern einer Konfiguration
#SET ASPLINE MODE | Übergangsart Splinekurve - Bewegungssatz
#SET ASPLINE STARTTANG | Definition Starttangente
#SET ASPLINE ZIELTANG | Definition Zieltangente
#SET AX | Definition einer Achskonfiguration
#SET AX LINK | Programmierung Achskopplungen

812_start

#SET CORNER PARAM

Parametrierung der Eckenverzögerung

812_end

#SET DEC LR SOLL | Übernahme der aktuellen Sollpos. aller Achsen
#SET HR | Parametrierung Handrad
#SET IPO SOLLPOS | Übernahme der aktuellen Sollpos. best. Achsen
#SET JOG | Parametrierung Jogbetrieb
#SET OFFSET | Vorgabe der Offsetgrenzen
#SET SLOPE PROFIL | Parametrierung des Beschleunigungsprofils
#SET SPLINETYPE AKIMA | Anwahl Akima-Spline

812_start

#SET SPLINETYPE BSPLINE | Anwahl B-Spline
#SET TANGFEED RMIN | Mindestradius für tangentiale Vorschubanpassung

812_end

#SET TIP | Parametrierung Tippbetrieb
#SIGNAL | Senden von Signalen
#SIGNAL REMOVE | Löschen von Broadcastsignalen
#SUPPRESS OFFSETS | Unterdrückung von Verschiebungen
#TIME | Verweilzeit
#TIMER | Zeitmessung
#TLC ON / OFF | Werkzeuglängenkompensation an-/ abwählen
#TOOL DATA | Anfordern von Werkzeugdaten
#TOOL LIFE READ / REMOVE | Lesen / Löschen der Standgrößen
#TOOL ORI CS | Werkzeug ausrichten
#TOOL PREP | Vorbereiten eines Werkzeugwechsels
#TOOL REFRESH | Werkzeugdaten auffrischen
#TRAFO ON/ OFF | An-/ Abwahl Rotation Tool Center Point
#TRANSVELMIN ON / OFF | Minimale Satzübergangsgeschwindigkeit
#TRC | WRK-Zusatzoptionen
#VECTORACC ON / OFF | Anpassung Bahndynamikgrenzwerte (Beschleunigung)
#VECTORVEL ON / OFF | Anpassung Bahndynamikgrenzwerte (Geschwindigkeit)
#VECTOR LIMIT ON / OFF | Anpassung Bahndynamikgrenzwerte
#WAIT | Warten auf Signale
#WAIT FOR | Warten auf Ereignis
#WAIT INDP | Warten auf asynchrone unabhängige Achse
#WAIT INDP ALL | Warten auf alle asynchronen unabhängigen Achsen
#WCS TO MCS | Abbildung Werkstückkoordinaten in Maschinenkoordinaten


Achsspezifische Zusatzfunktionen

INDP_SYN | Synchrone (satzweise) unabhängige Achsbewegung
INDP_ASYN | Asynchrone (satzübergreifende) unabhängige Achsbewegung
OSC | Pendelachse
COMP | An-/ Abwahl von Achskompensationen
DIST_CTRL | Getastete Spindel
OVERRIDE | Programmierbarer Achsoverride
DYNAMIC | Programmierbare Beschleunigungsüberlast


PLC-Open-Funktionen

MC_Home | Referenzpunktfahrt
MC_MoveAbsolute | Achsbewegung auf absolute Position
MC_MoveAdditive | Relative Achsbewegung zur kommandierten Position
MC_MoveRelative | Relative Achsbewegung zur aktuellen Position
MC_MoveSuperImposed | Relative Achsbewegung zu einer bereits aktiven Bewegung
MC_MoveVelocity | Endlose Achsbewegung mit einer Geschwindigkeit
MC_Stop | Anhalten einer Achsbewegung
MC_GearIn | Getriebekopplung mit Übersetzung
MC_GearOut | Lösen einer Getriebekopplung
MC_Phasing | Phasenverschiebung von Kopplungen


Variablenprogrammierung

V.A. ... | Achsspezifische Variablen | 213
V.SPDL. ... | Spindelspezifische Variablen | 213
V.G. | Globale Variablen | 213
V.P. | Eigendefinierte Variablen, programmglobal | 213
V.S. | Eigendefinierte Variablen, (Haupt-)programmübergreifend | 213
V.L. ... | Eigendefinierte Variablen, programmlokal | 213
V.E. | Externe Variablen | 213
V.TOOL. | Werkzeug-ID Variablen | 213
V.TLM. | Werkzeugstandzeitvariablen | 213


Sonstige Funktionen

Für die Programmierung mathematischer Ausdrücke sowie die Verarbeitung von Strings stehen verschiedene Rechenoperationen und Funktionen zur Verfügung.


5-Achs-Funktionalität

Mehr:

button Rotation Tool Center Point (RTCP)

button Tool Length Compensation (TLC)

button Werkzeug ausrichten (TOOL ORI CS)

button Maschinenkinematik (KIN ID)

button Positionierbewegungen ohne Ausgleichsbewegung (PTP)

button Koordinatensysteme

button Hilfsfunktionen zur Koordinatentransformation

button Hilfsfunktion zur Berechnung der Bewegungsgrenzen im Werkstückkoordinatensystem