STEP 7 Professional V13 SP1 Sinopsis de la conversión de tipos de datos Sinopsis de la conversión de tipos de datos Introducción Para combinar lógicamente varios operandos en una instrucción, es necesario verificar la compatibilidad de los tipos de datos. Esto también es aplicable a las asignaciones, o a la asignación de valores a los parámetros de bloque. Si los tipos de datos de los operandos son diferentes, será preciso realizar una conversión. La conversión puede realizarse de dos maneras, a saber: • Conversión implícita La conversión se realiza automáticamente al ejecutar la instrucción. • Conversión explícita Se utiliza una instrucción de conversión explícita antes de ejecutar la instrucción propiamente dicha. Nota Las posibilidades descritas para convertir tipos de datos siempre toman como base la versión más reciente de la CPU (V. 4). Es posible que algunas conversiones marcadas como posibles no estén disponibles en las versiones 1 - 3 de la CPU. Nota Conversión de secuencias de bits en SCL Todas las secuencias de bit (BYTE, WORD, DWORD y LWORD) incluidas en expresiones reciben el mismo tratamiento que los enteros correspondientes sin signo (USINT, UINT y UDINT). Por ello, p. ej., la conversión implícita de DWORD a REAL se lleva a cabo del mismo modo que una conversión de UDINT a REAL. Conversión implícita La conversión implícita se realiza automáticamente si los tipos de datos de los operandos son compatibles. La compatibilidad puede verificarse según criterios más o menos estrictos: • Con verificación CEI (ajuste predeterminado) Si está activada la verificación CEI, se aplican las siguientes reglas: ― La conversión implícita de BOOL a otros tipos de datos no es posible. ― Solo los tipos de datos REAL, BYTE, WORD, DINT, INT, SINT, UDINT, UINT, USINT, TIME, DT, STRING, CHAR y WCHAR se pueden convertir de forma implícita. ― La longitud de bits del tipo de datos de origen no debe superar la longitud de bits del tipo de datos de destino. El operando del tipo de datos WORD no puede indicarse, por ejemplo, en un parámetro si en él se espera el tipo de datos BYTE. 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=64582004747 24/11/2016 STEP 7 Professional V13 SP1 Sinopsis de la conversión de tipos de datos • Sin verificación CEI Si no está activada la verificación CEI, se aplican las siguientes reglas: ― La conversión implícita de BOOL a otros tipos de datos no es posible. ― Solo los tipos de datos REAL, LREAL, BYTE, WORD, DWORD, SINT, INT, DINT, USINT, UINT, UDINT, TIME, DTL, TOD, DATE, STRING, CHAR y WCHAR se pueden convertir de forma implícita. ― La longitud de bits del tipo de datos de origen no debe superar la longitud de bits del tipo de datos de destino. El operando del tipo de datos DWORD no puede indicarse, por ejemplo, en un parámetro si en él se espera el tipo de datos WORD. ― En los parámetros de entrada/salida (InOut) la longitud de bits de un operando indicado debe coincidir con la longitud de bits programada para el parámetro correspondiente. Nota Conversión implícita sin verificación CEI El editor de programación identifica los operandos que deben convertirse de forma implícita con un rectángulo gris. Un rectángulo gris oscuro indica que es posible realizar una conversión implícita sin pérdidas de precisión, p. ej., si el tipo de datos SINT se convierte a INT. Un rectángulo gris claro indica que es posible realizar una conversión implícita, aunque pueden producirse fallos en tiempo de ejecución. Si, por ejemplo, el tipo de datos DINT se convierte a INT y se produce un desbordamiento, la salida de habilitación ENO se pone a "0". Encontrará más información sobre el ajuste de la verificación CEI y la conversión implícita en el apartado "Consulte también". Conversión explícita Si los operandos no son compatibles, por lo que no se puede realizar una conversión implícita, es posible utilizar una instrucción de conversión explícita. Encontrará las instrucciones de conversión en la Task Card "Instrucciones". Un posible desbordamiento se indica en la salida de habilitación ENO. El desbordamiento se produce cuando, p. ej., el valor del tipo de datos de origen es mayor que el del tipo de datos de destino. Encontrará más información sobre la conversión explícita en "Consulte también". La figura siguiente muestra un ejemplo en el que debe realizarse una conversión explícita de tipos de datos: 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=64582004747 24/11/2016 STEP 7 Professional V13 SP1 Sinopsis de la conversión de tipos de datos El bloque de función "Bloque" espera en el parámetro de entrada "IN_INT" una variable del tipo de datos INT. Por este motivo, el valor de la variable "IN_DINT" debe convertirse primero de DINT a INT. Si el valor de la variable "IN_DINT" se encuentra dentro del rango de valores válido del tipo de datos INT, se produce la conversión. En caso contrario, se notifica un desbordamiento. No obstante, en caso de desbordamiento también tiene lugar una conversión, pero los valores se cortan y la salida de habilitación ENO se pone a "0". Ver también → Conversión implícita → Conversión explícita → Activar o anular la verificación CEI 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=64582004747 24/11/2016