Variable hinzufügen

Überblick

Der FAddVariableDialog ist das modale Fenster, mit dem eine neue Variable in einer POU oder im Pool angelegt wird. Er sammelt alle Felder in einem Schritt und zeigt darunter eine Live-Vorschau der entstehenden IEC-ST-Deklaration — was du tippst, siehst du sofort als fertigen VAR ... END_VAR-Schnipsel.

Der Dialog läuft in zwei Modi:

  • Add-Mode: Felder leer, eine neue Variable wird beim OK angelegt. Aufruf über das Plus-Symbol im Variables-Panel oder Strg+N im POU-Editor.
  • Edit-Mode: Doppelklick auf eine bestehende Variable im Panel — dasselbe Dialog, alle Felder vorbelegt.

Felder

FeldPflichtBedeutung
NamejaProgrammer-sichtbarer Name. Validiert gegen IEC-Identifier-Regeln (Buchstabe + Buchstaben/Ziffern/_). Für Bulk-Erzeugung mit Range-Pattern (siehe unten).
TypejaCombo mit IEC-Elementartypen, Standard-FBs, Project-FBs, User-Datentypen. Array-Erzeugung übernimmt die Wrapper-Checkbox.
Directionje nach POUVar-Klasse — siehe unten.
InitialneinInitialwert (FALSE, 0, T#100ms, 'OFF').
AddressneinNur für VarList-POUs. Leer = pool->nextFreeAddress weist beim Anlegen automatisch zu.
RetainneinCheckbox — RETAIN-Wert überlebt Power-Cycle.
ConstantneinCheckbox — VAR CONSTANT, nicht zur Laufzeit änderbar.
Array-WrapperneinWrapt den ausgewählten Type in ein ARRAY [..] OF.
DocumentationneinFreitext-Kommentar, landet als <documentation> im PLCopen-XML.

Range-Pattern für Bulk-Erzeugung

Statt LED_0, LED_1, … LED_7 einzeln anzulegen, kannst du im Name-Feld ein Bereichs-Muster angeben:

EingabeWirkung
LED_0..7Erzeugt acht Variablen LED_0 bis LED_7.
LED_0-7Synonym, gleicher Effekt.
Sensor_1..3Erzeugt drei Variablen Sensor_1 bis Sensor_3.

Bei jedem Bulk-Anlegen wird die Adresse fortlaufend hochgezählt, sofern sie gesetzt ist: %QX0.0 → %QX0.0, %QX0.1, …, %QX0.7.

Array-Wrapper-Checkbox

Wenn du eine Variable als Array deklarieren willst, aktiviere die Array-Checkbox. Dann erscheinen zwei SpinBoxen für den Indexbereich und der Type wird zur Laufzeit als ARRAY [..] OF <Typ> wrapt.

Type-ComboArray-CheckboxIndexbereichResultierende Deklaration
INTaus—: INT;
INTan0..7: ARRAY [0..7] OF INT;
BOOLan1..16: ARRAY [1..16] OF BOOL;
T_Motor (User-Struct)an0..3: ARRAY [0..3] OF T_Motor;

Der Wrapper sitzt bewusst an der Checkbox, nicht in der Type-Combo — so bleibt die Combo übersichtlich und Array-of-everything ist ohne Combo-Suche möglich.

Type-Combo

Die Combo aggregiert vier Quellen in einer einzigen Liste:

  1. IEC-Elementartypen: BOOL, BYTE, WORD, DWORD, LWORD, INT, DINT, LINT, UINT, UDINT, ULINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME, STRING, WSTRING.
  2. Standard-FBs der Bibliothek: TON, TOF, TP, R_TRIG, F_TRIG, CTU, CTD, CTUD, SR, RS, …
  3. Project-Function-Blocks — alle FBs aus dem aktuellen Projekt (User-Library).
  4. User-Datentypen aus <dataTypes>: STRUCTs, Enumerationen, Aliase.

ARRAY-Templates erscheinen nicht in der Combo — die kommen über die Wrapper-Checkbox.

Direction (Var-Klasse) je nach POU

Welche Direction-Werte angeboten werden, hängt am POU-Typ:

POU-TypVerfügbare Direction
PROGRAM / FUNCTION_BLOCK / FUNCTIONVAR / VAR_INPUT / VAR_OUTPUT / VAR_IN_OUT / VAR_TEMP
GlobalVarList (GVL)Fest VAR_GLOBAL — Combo ausgeblendet.
AnvilVarListFest VAR_GLOBAL (auto-generiert) — Combo ausgeblendet.
Pool-Globals (ohne POU-Container)Keine Direction — die Adresse %I/%Q legt sie implizit fest.

Edit-Modus

Doppelklick auf eine bestehende Variable im Variables-Panel öffnet denselben Dialog. Alle Felder sind vorbelegt; bei OK werden die Änderungen über pou->renameVariable / pool->rebind durchgereicht (damit die byAddress-Indizes synchron bleiben). Der Dialog kennt den Edit-Modus an existing != nullptr.

Beispiel — 8 LEDs als Block

Acht Ausgangs-LEDs als Pool-Variablen anlegen, in einem Schritt:

  • Name: LED_0..7
  • Type: BOOL
  • Direction: ausgeblendet (Pool-Global)
  • Address: %QX0.0 (Auto-Increment)
  • Initial: FALSE

OK erzeugt acht Pool-Einträge:

LED_0  AT %QX0.0 : BOOL := FALSE;
LED_1  AT %QX0.1 : BOOL := FALSE;
LED_2  AT %QX0.2 : BOOL := FALSE;
LED_3  AT %QX0.3 : BOOL := FALSE;
LED_4  AT %QX0.4 : BOOL := FALSE;
LED_5  AT %QX0.5 : BOOL := FALSE;
LED_6  AT %QX0.6 : BOOL := FALSE;
LED_7  AT %QX0.7 : BOOL := FALSE;

Anschließend lassen sich die acht Variablen im Variables-Panel selektieren und per Bulk-Operation einer HMI-Gruppe zuweisen — z.B. Set HMI Group... → Frontpanel.

Verwandte Themen