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.
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:
SA0018: Unübliche Bitzugriffe