Ermittelt Bereichsüberschreitungen von Unterbereichstypen. Zugewiesene Literale werden bereits vom Compiler geprüft. Wenn Konstanten zugeordnet sind, müssen die Werte innerhalb des definierten Bereichs liegen. Wenn Variablen zugeordnet sind, müssen die Datentypen identisch sein.
Begründung: Wenn Unterbereichstypen verwendet werden, dann sollte sichergestellt werden, dass dieser Unterbereich nicht verlassen wird. Der Compiler überprüft solche Unterbereichsverletzungen nur für Zuweisungen von Konstanten.
Wichtigkeit: Niedrig
Die Prüfung wird nicht für CFC-Objekte durchgeführt, da die Codestruktur dies nicht zulässt.
Beispiel
VAR_GLOBAL iVarGlob:INT; END_VAR PROGRAM PLC_PRG VAR iSubr1: INT (INT#1..INT#10); iSubr2: INT (INT#1..INT#1000); iCount: INT; by_SubType : BYTE (BYTE#0..BYTE#11); iVar : INT (-4095..4095); END_VAR iSubr1 := nCount; // SA0008 iSubr1 := subr2; // SA0008 iSubr1 := gvl.iVarGlob; // SA0008 //byBYTE_SubType := BYTE#123; //already detected by compiler, error "Cannot convert type..." --> SA0008: Unterbereichsvariable 'iSubr1' eventuell außerhalb des zulässigen Bereichs