Externe Variablen (V.E.) (#INIT 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 der SPS, ermöglicht.

Der Zugriff vom NC-Kanal aus kann synchron durch den Interpolator, oder asynchron durch den Decoder durchgeführt werden.

Hinweis

notice

Ein Lesen einer synchronen V.E.-Variable verursacht ein Leeren des NC-Kanals.

Dies ist bei aktiver WRK, aktivem Polynomüberschleifen oder aktivem HSC-Modus nicht zulässig.

Weitere Informationen zur Konfiguration und Parametrierung sind in der Dokumentation der externen Variablen beschrieben [8].

Programmierbeispiel

prg_example

Externe Variablen (V.E.)

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)

Nach Steuerungshochlauf sind die konfigurierten V.E.-Variablen mit "Null" initialisiert.

Danach können V.E.-Variablen im NC-Programm über den Befehl #INIT bei Bedarf erneut initialisiert werden. Dem Befehl können eine oder mehrere V.E.-Variablen folgen, die vollständig abgelöscht werden. Neben einzelnen V.E.-Variablen können auch komplette V.E.-Arrays und V.E.-Strukturen sowie Unterelemente von V.E.-Strukturen initialisiert werden.

Syntax:

#INIT V.E.<name> {, V.E.<name>}

Achtung

attention

Zugriffsrechte:

Hat eine Variable nur Leserechte, kann diese nicht mit dem #INIT-Befehl initialisiert werden. Gleiches gilt für V.E.-Strukturen, wenn mindestens ein Unterelement enthalten ist, das nur gelesen werden kann.

Achtung

attention

Synchrone V.E.-Variablen:

Sobald eine V.E.-Struktur eine synchrone Variable enthält, ist der gesamte Initialisierungsvorgang mit #INIT synchron, d.h. er wird erst im Interpolatorkontext ausgeführt. Mögliche asynchrone Unterelemente sind also von diesem Vorgang ebenfalls betroffen, da diese möglicherweise bei einem nachfolgenden lesenden Zugriff noch nicht neu initialisiert sind!

Um in diesen Fällen eine vollständige Synchronität zu erreichen, sollte der Benutzer daher manuell vor dem #INIT-Befehl einen #FLUSH WAIT-Befehl programmieren.

Tipp:

Bei Verwendung des #INIT-Befehls wird empfohlen, V.E.-Strukturvariablen so anzulegen, dass alle Elemente vollständig synchron oder vollständig asynchron sind!

Programmierbeispiel

prg_example

Initialisieren einzelner V.E.-Variablen:

Nxx #INIT V.E.EXT1, V.E.EXT2, V.E.EXT3

Initialisieren einer V.E.-Arrayvariable:

Nxx #INIT V.E.ARRAY1

Initialisieren bestimmter V.E.-Arrayvariablen:

Nxx #INIT V.E.ARRAY1[5], V.E.ARRAY1[8], V.E.ARRAY1[20]

Initialisieren einer V.E.-Strukturvariable:

Nxx #INIT V.E.STRUCT1

Initialisieren bestimmter Elemente einer V.E.-Strukturvariable:

Nxx #INIT V.E.STRUCT1.NBR_POINTS, V.E.STRUCT1.POINTS

Kombiniertes Initialisieren von V.E.-Variablen:

Nxx #INIT V.E.EXT2, V.E.ARRAY1[5], V.E.STRUCT1.POINTS

...