Externe Variablen / V.E.-Variablen

Mit Hilfe von externen Variablen können Daten zwischen dem NC-Programm und der PLC über das HLI ausgetauscht werden. Jeder Kanal hat einen eigenen Datenbereich für externe Variablen, die nur im Kanal bekannt sind, zusätzlich gibt es einen kanalübergreifenden globalen Datenbereich, auf den von allen Kanälen aus zugegriffen werden kann.

Auf der PLC-Seite stellen sich die Datenbereiche für die externen Variablen als ARRAY OF UDINT dar. Der Index der einzelnen Arrayelemente startet dabei mit dem Wert 0.

Eine einzelne externe Variable belegt unabhängig von ihrem Datentyp stets einen Speicherblock von HLI_EXT_VAR_STR_MAXIDX + 1 (24) Bytes. Falls ein Array von externen Variablen definiert wurde, werden die einzelnen Variablen gepackt im Speicherbereich abgelegt (mehrere Variablen pro Speicherblock), wobei abhängig von der Arraygröße eventuell mehrere aufeinanderfolgende Speicherblöcke verwendet werden.

Beim Zugriff auf externe Variablen von der PLC aus ist zunächst der Index der Variablen im Speicherbereich der externen Variablen zu bestimmen:

Beispiel Indexberechnung

4. Variable (VarNr = 4):

Offset = (VarNr –1)* (HLI_EXT_VAR_STR_MAXIDX + 1) / 4 + 1

Für eine Variable mit index = 3 ergibt sich somit ein Offset im Speicher von 13.

Der Zugriff auf den Speicherbereich muss dann entsprechend dem tatsächlichen Datentyp der externen Variablen erfolgen. Alle hierzu nötigen Informationen sind in der Konfigurationsliste der externen Variablen enthalten.

Weitere Einzelheiten über externe Variablen können der Dokumentation [EXTV] entnommen werden.

Ein Beispielprogramm zum Zugriff auf externe Variablen ist unter dem Namen HLI-Ve1.pro verfügbar.

Externe Variable

Beschreibung

Speicherbereich zum Datenaustausch zwischen NC-Programm und PLC

Datentyp

CNC global

POINTER TO HLI_GLOB_V_E_DATA:

 

kanalspezifisch:

ARRAY[0..HLI_SYS_CH_MAXIDX] OF POINTER TO HLI_CHAN_V_E_DATA

ST-Pfad

CNC global:

gpVEGlobal

 

kanalspezifisch:

gpVECh[channel_idx]

Zugriff

pLRealVal     : POINTER TO LREAL;

LRealVal       : LREAL;

VeOffset        : DINT;

 

VeOffset := (VarNr –1) * (HLI_EXT_VAR_STR_MAXIDX + 1) / 4 + 1;

pLRealVal := gpVEGlobal^.ext_var32[VeOffset]);

LRealVal := pLRealVal^;

Besonderheiten

Beim Zugriff muss entsprechend dem Datentyp der externen Variablen zugegriffen werden.