Deklaration eines direkt abgeleiteten Datentyps in ST
TYPE name_1 : data-type (* optional_begin *) {SIZE := value} (* optional_end *) := initial-value; name_2 : ARRAY [x..y] OF data-type := [initial-value_1, initial-value_2, .., initial-value_n]; ... END_TYPE
Bedeutung | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Deklaration eines oder mehrerer direkt →abgeleiteter Datentypen, wobei Diese Deklaration ist innerhalb der Deklaration eines anwenderdefinierten Datentyps ( Mit dem optionalen →Initialisierungswert weisen Sie dem abgeleiteten Datentyp einen Wert zu. Dieser Wert hat Vorrang, d.h. der Initialisierungswert des Basistyps wird "überschrieben". Falls kein Initialisierungswert für den abgeleiteten Datentyp definiert ist, gilt der Initialisierungswert des Basistyps. Aktuelle Einschränkungen
Das optionale Attribut Erweiterung zur IEC-Norm Das Attribut
Das Attribut
|
logi.CAD 3 bietet außerdem die Möglichkeit, zusätzliche Daten bei der Deklaration anzugeben. Siehe "Beschreibung, Kommentar oder JSON-String für Variablen und Datentypen angeben" für Details.
TYPE myINT : INT := 5; (* Datentyp, der vom elementaren Datentyp 'INT' abgeleitet wird. Initialisierung mit Wert '5'. *) Freq : REAL := 50.0; (* Datentyp, der vom elementaren Datentyp 'REAL' abgeleitet wird. Initialisierung mit Wert '50.0'. *) typeScalings : ARRAY [1..5] OF myINT := [2(3), 2(), 4]; (* Datentyp mit 5 Elementen von 'myINT' deklarieren - die ersten 2 Array-Elemente werden mit '3' initialisiert, *) (* die nächsten 2 Array-Elemente mit dem Initialisierungswert '5' von 'myINT', das letzte Array-Element mit '4' *) RangeConf : RangeS := (scaleMin := -5, scaleMax := 5); (* Datentyp, der vom strukturierten Datentyp 'RangeS' abgeleitet wird. Für 'RangeS' sind 3 Strukturelemente definiert. *) (* Initialisierung der Elemente 'scaleMin' und 'scaleMax'. Diese Werte haben Vorrang für 'RangeConf'. *) (* Da das Element 'signal' hier nicht initialisiert ist, gilt dafür der Initialisierungswert von 'RangeS', der dort definiert ist. *) END_TYPE
TYPE bit5 : INT { SIZE := 5 }; (* 5 Bits werden zwischen IO-Segment und Variable kopiert. *) myInt : INT; myBit5_v1 : myInt { SIZE := 5 }; (* Wie bei 'bit5': 5 Bits werden kopiert. *) myBit5_v2 : bit5; (* Wie bei 'bit5': 5 Bits werden kopiert. *) myBit2 : myInt { SIZE := 2 }; (* 2 Bits werden zwischen IO-Segment und Variable kopiert. *) myBit3 : myBit2 { SIZE := 3 }; (* 3 Bits werden zwischen IO-Segment und Variable kopiert. *) END_TYPE ... VAR_GLOBAL Status AT %IB1.2.0 : bit5; (* Verwendung des Datentyps 'bit5' *) ... END_VAR