SIZEOF-Baustein

Kurz-Information

NameSIZEOF
→POE-Typ→Funktion
KategorieIEC-Baustein, MemoryEnh
Konform zur →IEC-Norm

(plus) nicht in IEC-Norm vorgesehen

Grafische Schnittstelle

Verfügbar ab

Version 1.34.0 (für logi.CAD 3 )

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→DatentypBeschreibung
Eingänge:IN
REALLREALUSINTUINTUDINTULINTSINTINTDINTLINTTIMEBOOLBYTEWORDDWORDLWORDSTRINGCHARDATE_AND_TIMEDATE, TIME_OF_DAY, ein →anwenderdefinierter Datentyp oder eine →Referenz
Einschränkung: Bei →ARRAY-Datentypen sind nur ein-dimensionale Arrays zulässig.

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.