Skip to main content

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:

  • sa_icon_message.png SA0052: Unübliche Schiebeoperation