Skip to main content

SA0018: Unübliche Bitzugriffe

Ermittelt Bitzugriffe auf vorzeichenbehaftete Variablen. Die Norm IEC 61131-3 erlaubt allerdings nur Bitzugriffe und Schiebeoperationen ("bitshift") auf Bitfelder.

Siehe hierzu auch die strikten Regeln SA0147 und SA0148.

Begründung: Vorzeichenbehaftete Datentypen sollten nicht als Bitfelder verwendet werden und umgekehrt. Die Norm IEC 61131-3 sieht solche Zugriffe nicht vor, und daher sollte man diese Regel einhalten wenn man portierbaren Code schreiben will.

Wichtigkeit: Mittel

Tipp

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.

Beispiel 31. Beispiel
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

Ausgabe unter Ansicht Meldungen:

  • sa_icon_message.png SA0018: Unübliche Bitzugriffe