Descripción:
Normalmente, los números REALES se indican y se calculan con una
exactitud de 6 decimales. Al realizar cálculos, hay que tener en
cuenta que en cada paso de cálculo también es válida esta
exactitud.
Al sumar y restar, se igualan los exponentes. Es decir, al sumar
y restar se mantienen las bases y los exponentes, solo se suman las
mantisas.
Ejemplo 1:
Se debe calcular la siguiente fórmula:
y = a + b - c;
z =1 / y;
con
a = 100.000.000 como
valor REAL = 1,000000 * 108
b =
1 como
valor REAL = 1,000000 * 100
c = 100.000.000 como
valor REAL = 1,000000 * 108
- En el primer paso del cálculo se calcula
(a + b):
(a + b) = 1,000000 * 108 + 1,000000 *
100, después de la igualación de exponentes se obtiene
(a + b) = 1,000000 * 108 + 0,00000001 *
108. Se cortan las 2 últimas posiciones del segundo
número, ya que no se pueden representar (exactitud de 6 posiciones
decimales).
- Por tanto, se suma un CERO.
- En el segundo paso de cálculo ((a +
b)-c), se resta c al resultado anterior:
((a + b)-c) = 1,000000 * 108 - 1,000000 *
108 = 0,000000 e0
- Si ahora se calcula z, entonces se intenta
dividir entre CERO
Para obtener un cálculo correcto, en este caso, se ha que
cambiar el orden del cálculo.
y = a - c + b;
z = 1 / y;
Debido a que después del primer cálculo (a - c) se
obtiene el resultado 0,000000 e0, en el segundo paso
((a -c) + b) se obtiene el resultado correcto al sumar el
número REAL.
y = 0,000000 * 100 + 1,00000 * 100
= 1,000000 * 100
Por tanto, antes de programar un cálculo, hay que comprobar la
forma idónea de hacerlo.
Se dispone de información adicional sobre este tema en la ayuda
Online del STEP 7, bajo el tema "Tipo de datos REAL".
Ejemplo 2:
Se debe dividir el número 160.0 entre el número 100.0. Para
realizar este cálculo, existen 2 variantes, o bien 160.0 /
100.0 o bien 160.0 * 0.01, pero en la segunda variante
hay tener en cuenta lo siguiente. Según la tabla 1, ambas variantes
suministran el mismo resultado, pero no la misma exactitud de
cálculo en formato HEX.
| Variante
1: |
Variante
2: |
| STEP 7 |
S7-SCL |
STEP 7 |
S7-SCL |
| L 1.6e+002 |
X1 = 1.6e+002 |
L 1.6e+002 |
X3 = 1.6e+002 |
| L 1.0e-002 |
X2 = 1.0e-002 |
L 1.0e+002 |
X4 = 1.0e+002 |
| *R |
Y1 = X1 * X2
= 1.6 * 1.0 e(+002-002) |
/R |
Y2 = X3 / X4
= (1.6 / 1.0) e(+002-002) |
| T MD0 |
Y1 = 1.6 |
T MD4 |
Y2 = 1.6 |
Tabla 1: Dos variantes diferentes en la división de números
REALES en el editor KOP/AWL/FUP
El motivo de ello es que ambos números REALES en la primera
variante (160.0 y 0.01) están más separados en el rango de números
que los números REALES de la segunda variante (160.0 y 100.0).
Estas repercusiones en la exactitud de cálculo son válidas para el
STEP 7, en el editor KOP, AWL, FUP, y para el paquete opcional
S7-SCL.
Ejemplo de cálculo en el editor KOP, AWL, FUP del STEP
7: En la tabla de variables (figura 1), se representan las
dos dobles palabras de marcas (MD0 y MD4), tanto en formato
HEXADECIMAL como en coma flotante. Los números REALES son iguales
en ambas variantes (= 1.6), pero en la representación HEXADECIMAL
hay diferencias en las 2 últimas posiciones del valor HEX.
Figura 1: Programa de ambas variantes de cálculo en el editor
KOP/AWL/FUP.
Ejemplo de cálculo con el paquete opcional S7-SCL: El
programa S7-SCL indicado abajo contiene 2 funciones. Con ayuda de
la función FC10, se implementa la división de los números REALES
con "X1*X2", y con ayuda de la función FC11, se implementa la
división con "X3/X4". Los resultados se transfieren, en la llamada
de las funciones en el OB1, a las dobles palabras de marcas MD10 y
MD20.
Figura 2: Programa S7-SCL para el cálculo de ambas variantes
según la tabla 1
En la tabla "Visualizar / Forzar variables", se representan los
resultados de las funciones (MD10 y MD20), tanto en formato
HEXADECIMAL como en coma flotante. Aquí, los números REALES también
son iguales en ambas variantes (= 1.6), pero en la representación
HEXADECIMAL hay diferencias en las 2 últimas posiciones del valor
HEX.
Figura 3: Tabla "Visualizar / Forzar variables", con la
representación de los resultados en formato HEXADECIMAL y coma
flotante en S7-SCL
Conceptos de búsqueda: Exactitud de cálculo
|