Skip to main content

SA0052: Operazione di turno insolita

Determina le operazioni di spostamento (spostamento di bit) su variabili con segno. Per operazioni di spostamento su tipi di dati bit field (Byte, DWORD, LWORD, WORD) non viene emesso alcun errore.

Motivo: CODESYS consente operazioni di turno sui tipi di dati firmati. Tuttavia, queste operazioni sono rare e possono creare confusione. La norma IEC-61131-3 non prevede tali operazioni e dovrebbero essere evitate per aumentare la portabilità del codice ad altri sistemi di sviluppo.

Importanza: Media

Esempio 62. Esempio
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);

Uscita in Messaggi vista:

  • sa_icon_message.png SA0052: Funzionamento del cambio insolito