Variablen und Variablenrechnung
Eine vollständige Liste der Variablenprogrammierung findet sich in der Befehlsübersicht unter Variablenprogrammierung (V.).
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.
Allgemeine Syntax: |
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." "SPDL_PROG." | steht für spindelspezifische Variablen, | |
"G." | steht für achsübergreifende, im Kanal global gültige Variablen, | |
"E." | steht für externe Variablen, | |
"P." | steht für eigendefinierte, bis Hauptprogrammende (M2, M30) gültige Variablen, | |
"S." | steht für eigendefinierte, Hauptprogramm übergreifende Variablen, | |
"L." | steht für eigendefinierte, lokale Variablen, gültig bis aktuelle Programmebene durch Rücksprung (M17, M29) verlassen wird, | |
"CYC." | steht für Variablen, die nur innerhalb von Zyklenprogrammen (L CYCLE) verwendet werden dürfen. | |
<NAME_2>. | gibt den Datennamen an | |
<NAME_3>. | gibt z.B. den Index an, wenn mehrere gleiche Daten zu unterscheiden sind. |
Hinweis
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:
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 Arithmetische Ausdrücke <expr>) kann geprüft werden, ob eine Variable überhaupt verfügbar ist.
Programmierbeispiel
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 | ||
N55 M0 | ;Anhalten | ||
N60 $ENDIF | |||
… | |||
M30 |