Unterbereichstypen

Ein Unterbereichstyp ist ein Typ, dessen Wertebereich nur eine Untermenge eines Basistypen umfasst. Die Deklaration kann im Register Datentypen erfolgen, einer Variablen kann aber auch direkt mit einem Unterbereichstypen deklariert werden:

Syntax für die Deklaration im Register 'Datentypen':

TYPE <Name> : <Inttype>
(<ug>..<og>) END_TYPE;

Typ

Beschreibung

<Name>

muss ein gültiger IEC-Bezeichner sein.

<Inttype>

ist einer der Datentypen SINT, USINT, INT, UINT, DINT, UDINT, BYTE, WORD, DWORD.

<ug>

ist eine Konstante, die kompatibel sein muss zum Basistypen, und die die Untergrenze des Bereichstypen festlegt. Die Untergrenze selbst gehört zu diesem Bereich

<og>

ist eine Konstante, die kompatibel sein muss zum Basistypen, und die die Obergrenze des Bereichstypen festlegt. Die Obergrenze selbst gehört zu diesem Basistypen.

Beispiel:

TYPE
SubInt : INT (-4095..4095);
END_TYPE

Direkte Deklaration einer Variablen mit einem Unterbereichstypen (Beachten Sie die korrekte Angabe eines Initialwerts, wenn der Unterbereich nicht die '0' enthält):

VAR
    i1 : INT (-4095..4095);
    i2: INT (5..10):=5;
    ui : UINT (0..10000);
END_VAR

Wird einem Unterbereichstypen eine Konstante zugewiesen (in der Deklaration oder in der Implementation), die nicht in diesen Bereich fällt (z.B. i:=5000), wird eine Fehlermeldung ausgegeben.

Um die Einhaltung der Bereichsgrenzen zur Laufzeit zu überprüfen, müssen die Funktionen CheckRangeSigned bzw. CheckRangeUnsigned eingefügt werden.