Detecta el acceso de bits a variables con signo. Sin embargo, la norma IEC 61131-3 sólo permite el acceso a bits y las operaciones de desplazamiento de bits en campos de bits. Véanse también las normas estrictas SA0147 y SA0148.
Justificación: Los tipos de datos con signo no deben utilizarse como campos de bits y viceversa. La norma IEC 61131-3 no prevé este tipo de acceso, por lo que debe respetar esta norma cuando escriba código portátil.
Importancia: Medio
Excepción para las enumeraciones de banderas: Cuando se declara una enumeración como
bandera mediante el atributo pragma {attribute 'flags'}, no se emite el error SA0018 para el acceso a bits con los operadores OR, AND o NOT.
Ejemplo
PROGRAM PLC_PRG VAR iTemp1 : INT; diTemp3 : DINT; uliTemp4 : ULINT; siTemp5 : SINT; usiTemp6 : USINT; byTemp2 : BYTE; END_VAR iTemp1.3 := TRUE; // SA0018 diTemp3.4 := TRUE; // SA0018 uliTemp4.18 := FALSE; // no error because this is an unsigned data type siTemp5.2 := FALSE; // SA0018 usiTemp6.3 := TRUE; // no error because this is an unsigned data type byTemp2.5 := FALSE; // no error because the byte is a bitfield --> SA0018: Unusual bit access