SA0052: Unübliche Schiebeoperation
Ermittelt Schiebeoperationen (Bitverschiebung) auf vorzeichenbehaftete Variablen. Bei Schiebeoperationen auf Bitfeld-Datentypen (Byte, DWORD, LWORD, WORD) wird kein Fehler ausgegeben.
Begründung: CODESYS erlaubt Schiebeoperationen auf vorzeichenbehafteten Datentypen. Diese Operationen sind aber unüblich und können verwirrend sein. Die Norm IEC-61131-3 sieht solche Operationen nicht vor und sie sollten vermieden werden, um die Portierbarkeit des Codes auf andere Entwicklungssysteme zu erhöhen.
Wichtigkeit: Mittel
Beispiel 62. Beispiel
PROGRAM PLC_PRG
VAR
iTemp : INT;
dwTemp1 : DWORD;
byTemp2 : BYTE;
diTemp3 : DINT;
siTemp4 : SINT;
liTemp5 : LINT;
END_VAR
//the following lines each will cause an SA0052: iTemp := SHL(iTemp, BYTE#2); diTemp3 := SHR(diTemp3, BYTE#4); siTemp4 := ROL(siTemp4, BYTE#2); liTemp5 := ROR(liTemp5, BYTE#2); //no error SA0052 because DWORD and BYTE are bitfield datatypes: dwTemp1 := SHL(dwTemp1, BYTE#3); byTemp2 := SHR(byTemp2, BYTE#1);
Ausgabe unter Ansicht Meldungen:
SA0052: Unübliche Schiebeoperation