检测超出子范围类型的违规行为。编译器已对指定的文字进行检查。分配常量时,其值必须在定义的范围内。变量赋值时,数据类型必须相同。
理由如果使用了子范围类型,则应确保该子范围未退出。编译器仅在常量赋值时检查此类子范围违规行为。
重要性:低
不对 CFC 对象进行检查,因为代码结构不允许这样做。
示例
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: Subrange variable 'iSubr1' maybe out of allowed range