Rileva l'accesso di bit alle variabili firmate. Tuttavia, lo standard IEC 61131-3 consente solo operazioni di accesso ai bit e di spostamento dei bit sui campi di bit. Si vedano anche le regole severe SA0147 e SA0148.
Giustificazione: I tipi di dati con segno non devono essere utilizzati come campi di bit e viceversa. Lo standard IEC 61131-3 non prevede questo tipo di accesso e pertanto è necessario rispettare questa regola quando si scrive codice portatile.
Importanza: Medio
Eccezione per le enumerazioni dei flag: Quando un'enumerazione è dichiarata come flag
mediante l'attributo pragma {attribute 'flags'}, l'errore SA0018 non viene emesso per l'accesso ai bit con gli operatori OR, AND o NOT.
Esempio
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