Zuweisungsversuch in ST
Syntax
interface_variable_1 ?= interface_variable_2;
Bedeutung |
Zuweisungsversuch einer Variable, die auf einem →Interface basiert, mit Hilfe des
Operators "?="
auf eine andere Variable, die auf einem →Interface basiert, ob das Interface implementiert ist Falls es sich bei der referenzierten Instanz um einen →Funktionsbaustein handelt, der das Interface implementiert, ist das Ergebnis eine gültige Referenz auf diese Instanz. Andernfalls ist das Ergebnis NULL. Abweichung zur IEC-Norm In logi.CAD 3 werden Zuweisungsversuche für →Referenzen (mit REF_TO) nicht unterstützt. |
Beispiel
INTERFACE IF1
END_INTERFACE
INTERFACE IF2
END_INTERFACE
INTERFACE IF3
END_INTERFACE
FUNCTION_BLOCK FB1 IMPLEMENTS IF1, IF2
VAR
Var1 : INT;
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK FB2
VAR
iFB1 : FB1;
IF1Var1, IF1Var2 : IF1;
IF2Var : IF2;
IF3Var : IF3;
END_VAR
(* Zuweisungen *)
IF1Var1 := iFB1;
// korrekte Zuweisung: Die Variable IF1Var1 basiert auf dem Interface IF1, der Funktionsbaustein-Typ von iFB1 implementiert das gleiche Interface.
// IF1Var1 enthält somit eine gültige Referenz.
IF1Var2 := IF1Var1;
// korrekte Zuweisung: Die Variable IF1Var2 basiert auf dem Interface IF1, die Variable IF1Var1 basiert auf dem gleichen Interface.
// IF1Var2 enthält somit eine gültige Referenz.
(* Zuweisungsversuche *)
IF1Var2 ?= IF1Var1;
// Gültige Referenz: Die Variable basieren auf dem gleichen Interface.
// Entspricht dieser Zuweisung: IF1Var2 := iFB1;
IF2Var ?= IF1Var1;
// Gültige Referenz: Die Variable IF1Var1 basiert auf dem Interface IF1, die Variable IF2Var basiert auf dem Interface IF2.
// Beide Interfaces werden von FB1 implementiert und IF1Var1 hat aufgrund der 1. Zuweisung den Wert der Instanz iFB1 (diese ist vom Typ FB1).
IF1Var2 ?= IF2Var;
// Gültige Referenz: Die Variable IF2Var basiert auf dem Interface IF2, die Variable IF1Var2 basiert auf dem Interface IF1.
// Beide Interfaces werden von FB1 implementiert und IF2Var hat aufgrund des vorhergehenden Zuweisungsversuch den Wert der Instanz iFB1 (diese ist vom Typ FB1).
IF3Var ?= IF1Var1;
// IF1Var1 hat aufgrund der 1. Zuweisung den Wert der Instanz iFB1 (diese ist vom Typ FB1). Die Variable IF3Var basiert auf dem Interface IF3. FB1 implementiert das Interface IF3 NICHT.
// Ergebnis des Zuweisungsversuch: IF3Var ist NULL.
END_FUNCTION_BLOCK