Detecta operaciones en variables de tipo entero para las que podría asignarse un valor
truncado a una variable de tipo de datos REAL
Justificación: El análisis estático emite un error cuando el resultado de un cálculo
entero se asigna a una variable REAL o LREAL. El programador debe ser advertido de una posible interpretación incorrecta de este
tipo de asignación: lrealvar := dintvar1 * dintvar2. Dado que el rango de valores de LREAL es mayor que el de DINT, se podría suponer que el resultado del cálculo siempre podría representarse en LREAL. Pero no es el caso. El procesador calcula el resultado de la multiplicación como
un número entero y, a continuación, pasa el resultado a LREAL. Se perdería un desbordamiento en el cálculo de enteros. Para solucionar el problema,
el cálculo debe realizarse como una operación de REAL: lreal_var := TO_LREAL(dintvar1) * TO_LREAL(dintvar2).
Importancia: Alta
Ejemplo
PROGRAM PLC_PRG VAR rx : LREAL; di : DINT; END_VAR rx := di * di // SA0020 rx := TO_LREAL(di) * TO_LREAL(di) // No message --> SA0020: Possibly assignment of truncated value to REAL variable