Variablen und Variablenrechnung

Eine vollständige Liste der Variablenprogrammierung findet sich in der Befehlsübersicht im Anhang 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.

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."

"SPDL_PROG."

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,

<NAME_2>.

gibt den Datennamen an

<NAME_3>.

gibt z.B. den Index, wenn mehrere gleiche Daten zu unterscheiden sind.

Hinweis

notice

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

example

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

example

Logische Achsnummer der S-Spindel:

Logische Achsnummer der S-Spindel:

                    V.SPDL.LOG_AX_NR.S oder V.SPDL.LOG_AX_NR[0]

Programmierbeispiel

prg_example

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

prg_example

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

prg_example

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