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 Syntax lautet: allgemeine
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