Mostrar lista de artículos
STEP 7 -- Creación de programas S7 -- Ejecutar operación
¿Cómo se realiza en STEP 7 V5.x la programación para la creación de una señal (rectangular, con forma de diente de sierra, triangular y senoidal) con ayuda de una alarma de tiempo?
¿Cómo se puede averiguar la velocidad, la aceleración y la distancia recorrida?
¿Cómo se pueden direccionar los bytes completos y los bits individuales a través de la periferia?
¿Cómo se puede implementar la "diferenciación numérica" en STEP 7 V5.5?
¿Cómo se puede convertir en el STEP 7 V5.5 un número hexadecimal en caracteres ASCII ?
Representación de valores enteros negativos en la supervisión con el editor KOP/AWL/FUP
Información sobre el tema "Ejecución de operaciones"
¿Cómo se realiza el cálculo de valores lineales, de potencias, exponenciales, de raíces, polinómicos y logarítmicos, así como la conversión de las funciones de ángulos en grados?
¿Cómo se puede convertir un número de tipo INT en una cadena de caracteres, un tipo S5TIME, o un tipo BCD y REAL?
¿Cómo se puede retrasar temporalmente la señal de salida respecto de la señal de entrada?
¿Cómo se pueden acumular en un valor total las medidas físicas de caudal (por ejemplo, cantidad de caudal, velocidad de caudal)?
¿Cómo se puede supervisar un campo de 32 bits, evaluar la posición de bit de un bit activo, y acceder a cada uno de los bits de una doble palabra?
¿Cómo se pueden asignar variables y parámetros de módulo entre sí?
¿Cómo se puede comprobar la igualdad de números reales?
¿Cómo se implementa la programación de la integración numérica en S7-SCL y en STEP 7?
¿Cuándo se realiza la primera consulta en las cadenas de asignación?
¿Cuál es el significado de la instrucción NOP en el editor AWL del STEP 7?
¿Con qué exactitud se realizan los cálculos utilizando números REALES en fórmulas grandes?
¿Qué funciones estándar e IEC están disponibles en el STEP 7 para la conversión y comparación de variables STRING?
¿Cómo se pueden programar los registros de desplazamiento con las instrucciones KOP/FUP en STEP 7 V5.5 y STEP 7 (TIA-Portal)?
S7-SCL -- Creación de programas S7 -- Ejecutar operación
¿Porqué se utiliza la opción "Activar Flag OK"?
¿Cómo se realiza la programación para agrupar productos, de forma que la suma de los pesos para una selección óptima dé como resultado un peso mínimo?
¿Cómo se puede calcular el punto cero en el eje X para una función continua f(x)?
¿Cómo se puede modificar indirectamente el contenido de una palabra de datos por medio de la función "WORD_TO_INT(WORD_TO_BLOCK_DB(DB_Nummer).DW[Index]?
¿Cómo se implementa la programación de la integración numérica en S7-SCL y en STEP 7?
¿Cómo se puede programar una distribución de saltos en S7-SCL?
¿Cómo se puede convertir en S7-SCL una variable de tipo BCD a ENTERO y viceversa?
¿Con qué exactitud se realizan los cálculos utilizando números REALES en fórmulas grandes?
¿Cómo se pueden comparar entre sí 2 variables de tipo WORD o DWORD?
¿Con qué exactitud se realizan los cálculos utilizando números REALES en fórmulas grandes?
Referencia:


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


 Nr. de identificación (ID):14844391   Fecha:2005-11-11 
Este artículo...me ayudóno me ayudó                                 
mySupport
My Documentation Manager 
Boletín 
CAx-Download-Manager 
Support Request
Sobre este artículo
Imprimir
Crear PDF 
Enviar artículo
QuickLinks
Herramienta de compatibilidad 
Ayuda
Ayuda en línea
Guided Tour