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