VAR_CONFIG-Abschnitte im SPS-Objekt deklarieren
Für instanzspezifische Zuweisungen des Speicherorts bei symbolisch dargestellten Variablen benötigen Sie einen VAR_CONFIG
-Abschnitt. Dieser Abschnitt ist sowohl in einer →Konfiguration als auch in einer →Ressource möglich.
Dieser Artikel beschreibt die Syntax des VAR_CONFIG
-Abschnitts und dessen Einträge im SPS-Objekt.
VAR_CONFIG name_1 AT %address (* optional_begin *) {SIZE := value} (* optional_end *); name_2 AT %address (* optional_begin *) {SIZE := value} (* optional_end *); name_3 AT %address (* optional_begin *) {SIZE := value} (* optional_end *); ... END_VAR
Bedeutung | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
eine bzw. mehrere instanzspezifische Zuweisungen des Speicherorts bei symbolisch dargestellten Variablen Die folgenden Elemente sind in der entsprechenden Hierarchie für
Die Elemente müssen voneinander durch
Mit dem optionalen Schlüsselwort Beispiele für physikalischen Adressen:
Das Attribut Erweiterungen zur IEC-Norm Der Einschränkungen
|
Die Deklarationen der entsprechenden globalen Variablen bzw. Datentypen werden vorausgesetzt, damit die folgenden Beispiele fehlerfrei sind.
CONFIGURATION LocalConfiguration RESOURCE local ON BuiltInPlc { ON_CHANNEL := LocalChannel } VAR_GLOBAL valvePos : INT; END_VAR TASK DefaultTask(INTERVAL := TIME#500ms, PRIORITY := 38229); PROGRAM iCounter WITH DefaultTask : Counter; VAR_CONFIG (* instanzspezifische Zuweisungen des Speicherorts für Programm-globale Variablen *) iCounter.globVar1.Elem1 AT %IW1.2.3; (* Zuweisung des Speicherorts '%IW1.2.3', ohne Größen-Angabe *) iCounter.globVar2 AT %IB1.4.6 {SIZE:=2}; (* Zuweisung des Speicherorts '%IB1.4.6', mit Größen-Angabe *) (* instanzspezifische Zuweisungen des Speicherorts für Ressource-globale Variable *) valvePos AT %QW28; END_VAR END_RESOURCE END_CONFIGURATION
CONFIGURATION LocalConfiguration RESOURCE local ON BuiltInPlc { ON_CHANNEL := LocalChannel } VAR_GLOBAL valvePos : INT; END_VAR TASK DefaultTask(INTERVAL := TIME#500ms, PRIORITY := 38229); PROGRAM iCounter WITH DefaultTask : Counter; END_RESOURCE VAR_CONFIG (* instanzspezifische Zuweisungen des Speicherorts für Programm-globale Variablen *) local.iCounter.globVar1.Elem1 AT %IW1.2.3; (* Zuweisung des Speicherorts '%IW1.2.3', ohne Größen-Angabe *) local.iCounter.globVar2 AT %IB1.4.6 {SIZE:=2}; (* Zuweisung des Speicherorts '%IB1.4.6', mit Größen-Angabe *) (* instanzspezifische Zuweisungen des Speicherorts für Ressource-globale Variable *) local.valvePos AT %QW28; END_VAR END_CONFIGURATION
CONFIGURATION LocalConfiguration RESOURCE local ON BuiltInPlc { ON_CHANNEL := LocalChannel } VAR_GLOBAL valvePos : MyType; END_VAR TASK DefaultTask ( INTERVAL := TIME#500ms , PRIORITY := 38229 ); PROGRAM valvePos WITH DefaultTask : ProgramWithGVs; VAR_CONFIG (* Die folgende symbolisch dargestellte Variable ist nicht eindeutig, da sowohl eine globale Variable als auch die Programminstanz mit dem Namen 'valvePos' vorhanden sind. *) valvePos.E1 AT %I1.2.3; (* Am besten benennen Sie die globale Variable und die Programminstanz um, so dass diese mit eindeutigen IEC-Bezeichnern als Namen deklariert sind. *) (* Andernfalls geben Sie den Präfix 'VAR_GLOBAL#' an, falls die globale Variable 'valvePos' verwendet werden soll. *) VAR_GLOBAL#valvePos.E1 AT %I1.2.3; (* Oder geben Sie den Präfix 'PROGRAM#', falls die Programminstanz 'valvePos' verwendet werden soll. *) PROGRAM#valvePos.E1 AT %I1.2.3; END_VAR END_RESOURCE END_CONFIGURATION