SA0052: operación de cambio inusual
Detecta operaciones de desplazamiento (desplazamiento de bits) en variables con signo. En el caso de operaciones de desplazamiento en tipos de datos de campo de bits (Byte
, DWORD
, LWORD
, WORD
), no se notifica un error.
Justificación: CODESYS permite operaciones de cambio en tipos de datos firmados. Sin embargo, estas operaciones son inusuales y pueden ser confusas. La norma IEC 61131-3 no prevé este tipo de operaciones. Por lo tanto, deben evitarse para aumentar la portabilidad del código a otros sistemas de desarrollo.
Importancia: Media
ejemplo 62. Ejemplo
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);
Salida en el Mensajes vista:
SA0052: Operación de turno inusual