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:
SA0052: Funzionamento del cambio insolito