SA0018: Unübliche Bitzugriffe

Funktion

Ermittelt Bitzugriffe auf vorzeichenbehaftete Variablen. Die Norm IEC 61131-3 erlaubt allerdings nur Bitzugriffe auf Bitfelder. Sehen Sie hierzu auch die strikte Regel SA0148: Unüblicher Bitzugriff - strikt.

Begründung

Vorzeichenbehaftete Datentypen sollten nicht als Bitfelder verwendet werden und umgekehrt. Die Norm IEC 61131-3 sieht solche Zugriffe nicht vor. Diese Regel muss eingehalten werden, wenn der Code protierbar sein soll.

Ausnahme

Ausnahme für Flag-Enumerationen: Wenn eine Enumeration mit Hilfe des Pragmaattributs {attribute 'flags'} als Flag deklariert ist, wird für Bitzugriffe mit den Operationen OR, AND oder NOT der Fehler SA0018 nicht ausgegeben.

Wichtigkeit

Mittel

Beispiele:

PROGRAM MAIN 
VAR
    nINT    : INT;
    nDINT   : DINT;
    nULINT  : ULINT;
    nSINT   : SINT;
    nUSINT  : USINT;
    nBYTE   : BYTE;
END_VAR
nINT.3    := TRUE;               // => SA0018
nDINT.4   := TRUE;               // => SA0018
nULINT.18 := FALSE;              // no error because this is an unsigned data type
nSINT.2   := FALSE;              // => SA0018
nUSINT.3  := TRUE;               // no error because this is an unsigned data type
nBYTE.5   := FALSE;              // no error because BYTE is a bit field