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