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