SA0057: Posible pérdida de decimales
Detecta sentencias con posible pérdida de decimales
Justificación: Una pieza de código del siguiente tipo (diTemp2 := 1 rTemp1 := TO_REAL(diTemp2 / DINT#2)) puede causar una mala interpretación. El autor o lector de esta línea de código puede suponer que la división se realizaría como un REAL operación, y en este caso el resultado sería REAL#0.5. Sin embargo, eso no es verdad. Es una operación entera. El resultado se proyecta a REAL y rTemp1 obtiene el valor REAL#0.
Para evitar esto, utilice un yeso para asegurarse de que la operación se realice como un REAL operación:
rTemp1 := TO_REAL(diTemp2) / REAL#2;
Importancia: Media
PROGRAM PLC_PRG
VAR
rTemp1 : REAL;
diTemp2 : DINT;
liTemp3 : LINT;
END_VARdiTemp2 := diTemp2 + DINT#11; // SA0057 rTemp1 := DINT_TO_REAL(diTemp2 / DINT#3); rTemp1 := DINT_TO_REAL(diTemp2) / REAL#3.0; liTemp3 := liTemp3 + LINT#13; // SA0057 rTemp1 := LINT_TO_REAL(liTemp3 / LINT#7); rTemp1 := LINT_TO_REAL(liTemp3) / REAL#7.0;
Salida en el Mensajes vista:
SA0057: Posible pérdida de decimales