Usamos cookies para mejorar la experiencia de uso de forma constante. Al aceptar este mensaje o continuando con la navegación entendemos que das tu consentimiento para utilizar cookies en todas las páginas de infoplc.net.
Aceptar Política de cookies

Convertir número INT en cadena de caracteres, un tipo S5TIME, o un tipo BCD y REAL

  • Publicado: 13 Mayo 2011
  • Categoría de nivel principal o raíz: Siemens
  • Categoría: Software & Programacion
  • Visto: 2951veces
  • Con ayuda de las funciones de conversión, se puede convertir el tipo de datos del valor contenido en el AKKU 1. Dependiendo de la función utilizada, sólo afecta a la palabra derecha (los bits 0 a 15) o todo su contenido. El contenido del resto de acumuladores no se modifica. El contenido del AKKU 1 se puede utilizar para varias conversiones sucesivas y de esta forma realizar la conversión en varios pasos, sin tener que guardar temporalmente los valores convertidos entre medias. La figura 01 muestra un resumen de las conversiones de tipos de datos descritas en este artículo.

    937_1

    Ejemplos para la conversión del tipo de datos del valor contenido en el AKKU 1:

    Conversión de números de tipo INT, DINT, REAL y BCD:

    Para la conversión de números INT, DINT, REAL y BCD, el STEP 7 dispone de las siguientes funciones.

    Conversión de números de tipo INT y DINT:

        1. ITD: Conversión de datos de tipo INT a tipo DINT,

        2. ITB: Conversión de datos de tipo INT a tipo BCD,

        3. DTB: Conversión de datos de tipo DINT a tipo BCD,

        4. DTR: Conversión de datos de tipo DINT a tipo REAL.

    Conversión de números de tipo BCD:

        1. BTI: Conversión de datos de tipo BCD a tipo INT,

        2. BTD: Conversión de datos de tipo BCD a tipo DINT.

    Conversión de números de tipo REAL:

        1. RND+: Redondeo al número entero inmediatamente superior,

        2. RND-: Redondeo al número entero inmediatamente inferior,

        3. RND: Redondeo al número entero más próximo,

        4. TRUNC: Sin redondeo.

    La figuera muestra un ejemplo para la conversión de tipo de un número codificado en BCD a un número REAL. Tal como se muestra en la figura 01, el número en BCD se tiene que convertir primero al formato INT o DINT, antes convertirlo al formato REAL.

    937_2

     

    Conversión del tipo de datos INT (INTEGER) o REAL al tipo de datos S5TIME:

    El requerimiento previo necesario es que el valor suministrado tenga el tiempo en milisegundos. En este caso, la conversión se puede realizar en 2 pasos:

       1. El valor indicado primero se convierte al formato DINT (Doble entero) y luego se guarda temporalmente en una variable de tipo TIME. Los valores de tipo INT se convierten al formato DINT con la instrucción "ITD", y los valores de tipo REAL se convierten al formato DINT con la instrucción "RND".

       2. Con la llamada y la parametrización de la función FC40 (TIM_S5TI) de la librería estándar IEC del STEP 7, el formato TIME se convierte al formato S5TIME.

    La figura  muestra un ejemplo de programación para la conversión del tipo de datos INT al tipo de datos S5TIME.

    937_3

     

    Conversión de un número codificado en ASCII por un número de tipo INT (INTEGER):

    El proyecto de STEP 7 "Char_Int" contiene el FC1, con el cual se puede convertir un número ASCII de 4 dígitos en un número entero. Como parámetro de entrada, el módulo necesita el carácter ASCII en forma de tipo "CHAR" y con los siguientes valores:

       - Variable IN: Char1 = Dígito de las unidades,

       - Variable IN: Char2 = Dígito de las decenas,

       - Variable IN: Char3 = Dígito de las centenas,

       - Variable IN: Char4 = Dígito de los millares.

    La función FC1 se llama en el OB1. Como salida, se obtiene el número entero "Result". Con ayuda de la tabla de variables "VAT_1" se puede visualizar el resultado.

    937_4

    Advertencia:

    La variable de salida "Error" (bit de fallo) del FC1 se ajusta a TRUE si el carácter ASCII no contiene ningún dígito. En este caso, el resultado "Result" también se pone a "0".

    icon-disk Char_Int.zip ( 299 KB )

    Copie el archivo "Char_Int.zip" en un directorio aparte y arránquelo haciendo doble clic sobre él. Con ello se descomprime el proyecto de STEP 7 con todos sus subdirectorios. A continuación ya se puede abrir y elaborar el proyecto descomprimido con ayuda del administrador SIMATIC.

     

    Conversión de un número decimal a un número ASCII:

    Para convertir números decimales en caracteres ASCII, se dispone de la función FC5 en la librería ICE, la cual realiza la conversión. El módulo se parametriza con 2 parámetros:

       1. Parámetro "i":
           Número a convertir en formato de doble palabra.

       2. Parámetro "RetVal":
          Tipo de datos String, en el cual se escribe el carácter ASCII.

    La función FC5 se llama en el OB1 y los parámetros se tiene que asignar adecuadamente. El resultado de la conversión está disponible en el DB1, a partir del byte 2 del módulo de datos. Con ayuda de una tabla de variables se puede visualizar el resultado.

    icon-disk S7iec.zip ( 135 KB )

    Copie el archivo "DIString.zip" en un directorio aparte y arránquelo haciendo doble clic sobre él. Con ello se descomprime el proyecto de STEP 7 con todos sus subdirectorios. A continuación ya se puede abrir y elaborar el proyecto descomprimido con ayuda del administrador SIMATIC.

     

    Funciones IEC estándar para las variables STRING:

    Con ayuda de las funciones IEC estándar FC5, FC16, FC30, FC37, FC38 y FC39, las variables de formato DINT se pueden convertir a una cadena de caracteres y viceversa.

       1. FC5 DI_STRNG: Conversión de una variable de tipo DINT a una variable de tipo STRING,

       2. FC16 I_STRNG: Conversión de una variable de tipo INT a una variable de tipo STRING,

       3. FC30 R_STRNG: Conversión de una variable de tipo REAL a una variable de tipo STRING,

       4. FC37 STRNG_DI: Conversión de una variable de tipo STRING a una variable de tipo DINT,

       5. FC38 STRNG_I: Conversión de una variable de tipo STRING a una variable de tipo INT,

       6. FC39 STRNG_R: Conversión de una variable de tipo STRING a una variable de tipo REAL.

     

    Fuente: http://support.automation.siemens.com