SIZEOF-Baustein
Kurz-Information
Funktionalität
Der Baustein liefert den Speicher (in Bytes), den das am Eingang IN anliegende Element benötigt (z.B. eine →Variable oder ein →Literal).
Spezialfälle (siehe unter " Beispiel für Verwendung im ST-Editor" )
Der Aufruf des SIZEOF-Bausteins ohne anliegendes Element (d.h. ohne Parameterliste) liefert den Wert 1. Grund: Hier wird der Datentyp BOOL verwendet.
Bei einem anliegenden STRING-Element mit einer Länge wird die Länge des STRING-Buffers geliefert. Die Länge des STRING-Buffers wird durch die Deklaration bestimmt.
STRING-Elemente mit einer Länge sind von Ihnen deklarierte STRING-Variablen; siehe "Deklaration von STRING-Variablen (inkl. Zugriff)".Bei einem anliegenden STRING-Element ohne einer Länge wird ebenfalls die Länge des STRING-Buffers geliefert. Die Länge des STRING-Buffers wird jedoch durch den resultierenden Wert bestimmt.
STRING-Elemente ohne einer anwenderdefinierten Länge ergeben sich, wenn Sie STRING-Funktionen oder →Zeichenfolge-Literale verwenden.
Eingänge, Ergebniswert
|
Bezeichner |
Beschreibung |
|
Eingänge: |
IN |
REAL, LREAL, USINT, UINT, UDINT, ULINT, SINT, INT, DINT, LINT, TIME, BOOL, BYTE, WORD, DWORD, LWORD, STRING, CHAR, DATE_AND_TIME, DATE, TIME_OF_DAY, ein →anwenderdefinierter Datentyp oder eine →Referenz |
Eingangswert |
Ergebniswert: |
– |
UDINT |
|
Der Eingang EN und der Ausgang ENO sind für den →Aufruf des Bausteins verfügbar. Siehe "Ausführungssteuerung: EN, ENO" für Informationen zum Eingang EN und zum Ausgang ENO.
Beispiel für Verwendung im ST-Editor
PROGRAM Test
VAR
result : ARRAY[
1
..
12
] OF UDINT;
RealVar : REAL :=
1
.234E6;
StringVar : STRING[
10
] :=
'abcdef'
;
RefVar : REF_TO STRING[
10
] := REF(StringVar);
StructVar : MyStruct;
ArrayVar : MyArray;
FB1 : MyFB;
END_VAR
result[
1
] := SIZEOF(IN := BOOL#TRUE); (* The variable
'result[1]'
evaluates to
'1'
. *)
result[
2
] := SIZEOF(IN := INT#
500
); (* The variable
'result[2]'
evaluates to
'2'
. *)
result[
3
] := SIZEOF(IN := RealVar); (* The variable
'result[3]'
evaluates to
'4'
. *)
result[
4
] := SIZEOF(IN := StringVar); (* The variable
'result[4]'
evaluates to
'11'
. *)
result[
5
] := SIZEOF(IN := CONCAT(StringVar,StringVar)); (* The variable
'result[5]'
evaluates to
'13'
. *)
result[
6
] := SIZEOF(IN := STRING#
'abcdef'
); (* The variable
'result[6]'
evaluates to
'7'
. *)
result[
7
] := SIZEOF(); (* The variable
'result[7]'
evaluates to
'1'
. *)
result[
8
] := SIZEOF(IN := RefVar); (* The variable
'result[8]'
evaluates to
'4'
. *)
result[
9
] := SIZEOF(IN := RefVar^); (* The variable
'result[9]'
evaluates to
'11'
. *)
result[
10
] := SIZEOF(IN := StructVar); (* The variable
'result[10]'
evaluates to
'8'
- due to alignment rules. *)
result[
11
] := SIZEOF(IN := ArrayVar); (* The variable
'result[11]'
evaluates to
'20'
. *)
result[
12
] := SIZEOF(IN := FB1); (* The variable
'result[12]'
evaluates to
'8'
- due to alignment rules and ENO variable. *)
END_PROGRAM
TYPE
MyStruct : STRUCT
Elem1 : BOOL := TRUE;
Elem2 : INT :=
500
;
Elem3 : REAL :=
1
.234E6;
END_STRUCT;
MyArray : ARRAY [
1
..
10
] OF INT;
END_TYPE
FUNCTION_BLOCK MyFB
VAR_INPUT
I1 : BOOL;
I2 : INT;
END_VAR
VAR_OUTPUT
O1 : BOOL;
O2 : INT;
END_VAR
END_FUNCTION_BLOCK
Bei der Erstellung Ihrer Anwendung im ST-Editor erstellen Sie den Aufruf eines Bausteins, indem Sie den laut Syntax erforderlichen Text eintippen oder die Inhaltshilfe verwenden.