In Funktionsblöcken ist es möglich, Adressen für nicht vollständig definierte Ein- und Ausgänge anzugeben, wenn Sie die Variablendefinitionen zwischen die Schlüsselwörter VAR und END_VAR setzen. Nicht vollständig definierte Adressen sind mit einem Sternchen gekennzeichnet.
Beispiel
FUNCTION_BLOCK locio VAR loci AT %I*: BOOL := TRUE; loco AT %Q*: BOOL; END_VAR
Hier werden zwei lokale I/O-Variablen definiert, ein Local-In (%I*) und ein Local-Out (%Q*).
Wenn Sie lokale E/As für die Variablenkonfiguration im Object Organizer in der Registerkarte Ressourcen konfigurieren wollen, steht Ihnen in der Regel das Objekt Variable_Configuration zur Verfügung. Das Objekt kann dann umbenannt werden und es können weitere Objekte für die Variablenkonfiguration erstellt werden.
Der Editor für die Variablenkonfiguration funktioniert wie der Deklarationseditor.
Variablen für lokale E/A-Konfigurationen müssen sich zwischen den Schlüsselwörtern VAR_CONFIG und END_VAR befinden.
Der Name einer solchen Variablen besteht aus einem vollständigen Instanzpfad, wobei die einzelnen POUs und Instanznamen durch Punkte voneinander getrennt sind. Die Deklaration muss eine Adresse enthalten, deren Klasse (Eingang/Ausgang) derjenigen der unvollständig angegebenen Adresse (%I*, %Q*) im Funktionsblock entspricht. Auch der Datentyp muss mit der Deklaration im Funktionsblock übereinstimmen.
Konfigurationsvariablen, deren Instanzpfad ungültig ist, weil die Instanz nicht existiert, werden ebenfalls als Fehler gekennzeichnet. Andererseits wird auch ein Fehler gemeldet, wenn keine Konfiguration für eine Instanzvariable existiert. Um eine Liste aller notwendigen Konfigurationsvariablen zu erhalten, kann der Menüpunkt "Alle Instanzpfade" im Menü "Einfügen" verwendet werden.
Beispiel für eine variable Konfiguration
Nehmen wir an, dass in einem Programm die folgende Definition für einen Funktionsblock gegeben ist:
VAR Hugo: locio; Otto: locio; END_VAR
Eine korrigierte Variablenkonfiguration würde dann folgendermaßen aussehen:
VAR_CONFIG PLC_PRG.Hugo.loci AT %IX1.0 : BOOL; PLC_PRG.Hugo.loco AT %QX0.0 : BOOL; PLC_PRG.Otto.loci AT %IX1.0 : BOOL; PLC_PRG.Otto.loco AT %QX0.3 : BOOL; END_VAR