STEP 7 Professional V13 SP1 VARIANT VARIANT Descripción Un parámetro del tipo VARIANT es un puntero que puede señalar a variables de distintos tipos de datos, excepto una instancia. El puntero VARIANT puede ser un objeto de un tipo de datos simple, como p. ej., INT o REAL. También puede ser un STRING, DTL, ARRAY of STRUCT, UDT o un ARRAY of UDT. El puntero VARIANT puede reconocer estructuras y apuntar a componentes individuales de estas. Los operandos del tipo de datos VARIANT no ocupan espacio en el bloque de datos de instancia o en la memoria de trabajo. Pero dentro del área de memoria de la CPU sí que se ocupa lugar. Una variable del tipo VARIANT no es un objeto, sino una referencia a otro objeto. Los distintos elementos del tipo VARIANT solo pueden declararse en parámetros formales de la interfaz de bloque de una función, en las secciones VAR_IN, VAR_IN_OUT y VAR_TEMP. Por este motivo no es posible declararlos en un bloque de datos o una sección Static de la interfaz de un bloque de función, por ejemplo, pues no se conoce su tamaño. El tamaño de los objetos referenciados puede cambiar. VARIANT permite crear bloques de función o funciones genéricos. En la llamada de bloque se pueden interconectar los parámetros del bloque con variables de un tipo de datos cualquiera. Al llamar el bloque, además del puntero hacia la variable también se transfiere información del tipo de la variable. De este modo es posible procesar el código del bloque conforme al tipo y la variable transferida durante la ejecución. Si, p. ej., un parámetro de bloque de una función tiene el tipo de datos VARIANT, se le puede transferir en un punto del programa una variable del tipo de datos Entero, y en otro punto una variable del tipo de datos PLC. En este caso, las instrucciones VARIANT permiten que la función reaccione sin errores. Nota Un bloque de datos completo solo se puede señalar si ha sido derivado originalmente de un tipo de datos definido por el usuario (UDT). La tabla siguiente muestra las propiedades del puntero VARIANT: This document constitutes a free excerpt compiled by the user himself/herself from the documentation provided by Siemens for this product. Siemens disclaims all liability for the completeness of this document. It shall only be used for the user's own internal purposes. It shall not be passed on to third parties. The complete documentation can be found at: /dokumentation/default.aspx?DocVersionId=74495465995&Language=es-ES&TopicId=65859723659 20/11/2016 STEP 7 Professional V13 SP1 VARIANT Longitud (bytes) Represen Formato tación Ejemplo de entrada de valores 0 Simbólico Operando "TagResult" NombreBloqueDatos.NombreOperan "Datos_TIA_Portal".VariableStruct.Pri do.Componente merComponente Absoluto Operando %MW10 NúmeroBloqueDatos.Operando Tipo Longitud P#DB10.DBX10.0 INT 12 (válido solo para bloques con acceso estándar) P#Valor cero P#0.0 VOID 0, NULL Nota Si se utiliza el prefijo P#, solo es posible señalar a las áreas de memoria con tipo de acceso "estándar". Codificación de los tipos de datos Si se utiliza el direccionamiento absoluto con P# se admiten los tipos de datos siguientes: Código hexadecimal Tipo de datos Descripción B#16#00 NIL Puntero Cero B#16#01 BOOL Bits B#16#02 BYTE Bytes, 8 bits B#16#03 CHAR Caracteres de 8 bits B#16#04 WORD Palabras de 16 bits B#16#05 INT Enteros de 16 bits B#16#06 DWORD Palabras de 32 bits B#16#07 DINT Enteros de 32 bits B#16#08 REAL Números en coma flotante de 32 bits B#16#0B TIME Tiempo B#16#0C S5TIME Tiempo B#16#09 DATE Fecha B#16#0A TOD Fecha y hora B#16#0E DT Fecha y hora This document constitutes a free excerpt compiled by the user himself/herself from the documentation provided by Siemens for this product. Siemens disclaims all liability for the completeness of this document. It shall only be used for the user's own internal purposes. It shall not be passed on to third parties. The complete documentation can be found at: /dokumentation/default.aspx?DocVersionId=74495465995&Language=es-ES&TopicId=65859723659 20/11/2016 STEP 7 Professional V13 SP1 VARIANT Código hexadecimal Tipo de datos Descripción B#16#13 STRING Cadena de caracteres B#16#17 BLOCK_FB Bloque de función B#16#18 BLOCK_FC Función B#16#19 BLOCK_DB Bloque de datos B#16#1A BLOCK_SDB Bloque de datos de sistema B#16#1C COUNTER Contador B#16#1D TIMER Temporizador Ejemplo El siguiente ejemplo muestra el funcionamiento de VARIANT tomando como base la instrucción AWL "MOVE": Copiar valor": AWL Explicación CALL MOVE // Se llama la instrucción "Copiar valor". VARIANT // Tipo de datos de la instrucción IN := "Datos_TIA_Portal".VariableStruct.PrimerComponente // Se copia el contenido del operando "PrimerComponente" del DB "Datos_TIA_Portal". OUT := "MotorDB".StructResult.TagResult // Y se transfiere al operando "TagResult" del DB "MotorDB". Ver también → Fundamentos del direccionamiento indirecto → Vista general de los tipos de datos válidos → Conversión de los tipos de datos en el S7-1200 → Principios básicos de las constantes → Fundamentos del acceso a bloques → Principios básicos de las llamadas de bloque → Instrucciones VARIANT This document constitutes a free excerpt compiled by the user himself/herself from the documentation provided by Siemens for this product. Siemens disclaims all liability for the completeness of this document. It shall only be used for the user's own internal purposes. It shall not be passed on to third parties. The complete documentation can be found at: /dokumentation/default.aspx?DocVersionId=74495465995&Language=es-ES&TopicId=65859723659 20/11/2016