Una de las cosas más tediosas en Step 7 es la conversión entre tipos a la hora de realizar operaciones aritméticas con los PLC de Siemens. Afortunadamente, la cosa ha evolucionado bastante con la conversión implícita en TIA Portal.
Contenido
¿Qué es la conversión implícita en TIA Portal?
La conversión implícita en TIA Portal no es mas que un mecanismo interno y automático que tiene Step 7.
Se usa para sumar, restar, multiplicar etc, de dos o varias variables, entre tipos diferentes..
Así por ejemplo, hasta ahora en Step 7 V5.x no podías sumar un entero con un real para dar un nuevo real.
Primero transformabas el entero en doble entero, y luego este doble entero en real.
Solo entonces podías sumar ambos reales para que el resultado diera un nuevo real (bonito trabalenguas).
Bien, pues ahora gracias a la conversión implícita te vas a ahorrar un montón de conversiones intermedias estériles.
Ahora podrás operar directamente con valores de diferentes tipos obteniendo el resultado sin problemas.
Características de la conversión implícita en TIA Portal
La conversión implícita se da de forma automática cuando una función es ejecutada siempre y cuando los tipos de las variables sean compatibles.
La longitud del tipo de datos fuente no puede ser mayor que el tipo de datos destino. Por ejemplo, en una suma.
Cuando la conversión de datos es posible, los bits de datos se justifican a la derecha y los bits sobrantes son rellenados con ceros.
Es decir, toman las posiciones de los bits menos representativos para que el valor esté inalterado.
La conversión de tipos de datos de menor tamaño a uno más grande se indica con la etiqueta en gris (en escalera y diagrama de bloques)
¿Se puede realizar siempre la conversión implícita en TIA Portal?
No, no siempre se puede ya que no todos los tipos son compatibles entre sí.
En la siguiente tabla vas a ver las conversiones que TIA Portal realiza de forma implícita.
Siendo:
I : Independiente del IEC Check
D: Con IEC Check Desactivado
ED: Solo con Escalera y Diagrama de funciones con IEC Check desactivado
SCL: Solo en SCL con IEC Check desactivado
¿Que es eso de IEC Check?
La norma IEC 61131 es mucho más estricta que lo que te permite realizar Siemens con TIA Portal.
Así, la norma IEC te permite convertir un entero a doble entero de forma automática.
Lo que no te permite es convertir un byte a un entero, porque técnicamente son cosas muy diferentes.
Un byte no es más que 8 bits. No significa en si mismo nada, y por ello la IEC no te permite convertirlo a un entero, que si está definido como tipo de datos.
En cambio, con el chequeo de IEC desactivado, la conversión implícita en TIA Portal es más abierta pudiendo realizar más conversiones de la mano de Siemens sin tu intervención.
¿Significa que si tengo el IEC activado no puedo convertir las variables?
No.
Lo que significa es que la conversión no se realizará de forma automática (implícita) y deberás realizar la conversión de forma explicita usando las herramientas de conversión.
Activación y desactivación de IEC Check
Para aumentar o disminuir las restricciones en la conversión implícita en TIA Portal puedes realizarlo de dos maneras:
- Bloque a bloque: en las propiedades del FC o FB podrás activar o desactivar este chequeo.
- Por defecto: Puedes habilitar o deshabilitar por defecto este chequeo para los futuros bloques desde:
- Opciones >> Configuración >> Programación PLC >> General >>Ajuste predeterminado para bloques nuevos >> IEC Check
¿Necesitas más información?
Esta entrada está sacada del Bloque 1 del curso de TIA Portal que estoy a punto de terminar ya que solo me queda un bloque de los 7.
Ya son más de 40 horas de vídeo a lo largo de 250 vídeos con decenas de ejercicios resueltos a lo largo del curso.
Eso sin contar este último bloque que está por realizar.
Si necesitas obtener conocimientos rápidamente sobre TIA Portal te animo a que le eches un vistazo a todo lo que te puede ofrecer.
Estoy convencido de que te puedo ayudar a que con tu esfuerzo, el curso, y el foro donde resolver las dudas.
En pocas semanas puedes comenzar a realizar tus propios proyectos de automatización como los alumnos que ya lo están haciendo.
Como digo, si quieres cambiar ahora mismo la dinámica y dejar de dar bandazos para ponerte en serio con ello, tienes toda la información en este enlace: Curso de TIA Portal para la serie 1200.
Recuerda que puedes apuntarte en Guorker.com donde por una cuota mensual, tendrás tarifa plana en todos los cursos disponibles en la plataforma.
Enseño a programar PLC de Siemens a través de mis cursos.
Más información sobre mi aquí
Puedes seguirme en cualquiera de las siguientes redes sociales.
11 Comentarios
Como siempre me parece muy bueno todo lo que haces Iñigo, esta publicación está interesante cantidad y creo que le vendrá muy bien a todos. Saludos
Ya somos varios colchoneros, pero el partido no lo perdono. mañana saldrá el sol muy brillante para algunos. yo soy de sombra.
Jeje, no quiero saber con quien vás X)
¡¡Puff!! ya no me acordarba el concepto de las conversiones desde el Bloque 1 pero ahora desempolvando un poco es facil de recordar con tu ayuda Iñigo. Lo del partido hoy creo que el R. Madrid necesitará algo más que una conversión implicita para ganar la final!! Saludos!!
gracias por compartir tus conocimientos Iñigo, solo un ex-usuario de AB y este tipo de cosas resultan ser muy complicadas de entender, cuando AB ya lo ha resuelto desde mucho tiempo atras. Siemens me recuerda a los viejos modelos de Modicon Modsoft.
Muy interesante. Gran esfuerzo didáctico. Muchas gracias.
Muchas gracias Carlos!
Muy buen artículo. Esto de las conversiones históricamente suele traer de cabeza a los programadores de PLC.
Si te interesa o le interesa a alguien, hace algún tiempo hice un bloque de función (FC) para STEP 7 que realiza la conversión para todos los tipos, incluyendo periferia.
Gracias por su gran aporte.
Gracias a usted yo aprendi a programar con step 7.
Y creo que con su ayuda yo boy a aprender a programar en TIA portal.
Gracias de antemano
Hola Iñigo, gracias por el aporte.
Parece que hay alguna conversion mal de las que indicas en la tabla. En entorno TIA 15 estoy comprobando que se puede hacer una conversion inmplicita de String a DINT. Basta con crear un FC que mueva un Dint desde una entrada declarada como Dint a una Salida declarada como DINT y en la llamada del FC escribir simplemente ‘test’ para que el bloque haga la conversion implicita.
Tienes más info sobre este tipo de conversiones?
Gracias
Tal y como lo cuentas, eso no es una conversión implícita.
No se puede convertir test a un número porque test no representa ningún número.
Otra cosa es que te de como resultado no se que número equivalente del código ascii.
Una conversión Implícita de string a dint sería que yo metiera el string ‘1234’ y el dint valiera 1234 y si lo convierto a real 1234.0
Lo otro, no se que resultado dará, pero la palabra ‘Paco’ no se puede convertir a un valor numérico porque ‘Paco’ no representa un valor numérico.