La verdad es que no es normal el uso de strings en los PLC y se usen operaciones con strings en Step 7.
No es no se use en absoluto, pero no es su fuerte, por decirlo de alguna forma.
En general cuando programes no usarás muchas cadenas de caracteres más alla de arrastrar algo de información de modelo de la pieza que se está produciendo o cosas similares.
Ya sabemos que los autómatas de Siemens se lleva muy bien con las señales booleanas, pero de vez en cuando, hay que trabajar con las cadenas de caracteres aunque no sea tan habitual.
La cosa es que recientemente he tenido la necesidad de darle una pensada a un problema que me ha dado pie a esta entrada.
El problema con operaciones con strings en Step 7
Tenemos un HMI bastante viejito que está conectado con un PLC de la serie 400.
Tenemos la necesidad de pasar la hora de un histórico al HMI, pero este, que no es de Siemens, no puede leer variables de tipo DTL y solo tenemos las típicas booleanas , byte, enteros, reales y strings.
Dándole un poco al rosco he pensado que podía crear un FB que cogiera el reloj del sistema y pasara la fecha y hora a una variable de tipo String.
Lamentablemente no existe tal cosa de forma directa en Step 7, por lo que te has de fabricar la función a medida.
Y es lo que he hecho.
¿Qué operaciones con strings en Step 7 voy a usar?
Básicamente voy a usar dos funciones con strings:
- Función FC16 I_STRING IEC
- Función FC2 CONCAT IEC
Ambas funciones las encontrarás en Standard Library/IEC Function Bloks
Lo que te propongo es lo siguiente:
Crear un FB en el cual descomponer la hora leída del PLC mediante el SFC1 "READ_CLK".
Esta hora, la descompondremos es variables de tipo INT para tener el año, mes, dia, hora, etc.
Posteriormente usaremos esa información para montar 3 cadenas de caracteres:
- Fecha
- Hora
- Fecha y hora
Así, tendremos las cadenas de caracteres que deseemos.
Durante todo el proceso nos apoyaremos en punteros de área.
Si no conoces bien el temario, puedo ayudarte mediante Cómo programar Step 7 y no morir en el intento donde tendrás ejemplos resueltos
¿Cómo usaremos las operaciones con strings en Step 7?
Una vez hayamos obtenido los valores del año, mes, etc, deberemos realizar alguna operación adicional.
Pasaremos la variable a un string usando la función FC16 I_STRING IEC.
Hay que tener en cuenta que el resultado en nuestro caso tendrá 2 o 3 caracteres. Esto es debido a que el primer caracter del string resultante es el signo del valor numérico.
Por tanto, si el año, el mes o el valor que sea, es inferior a 10, tendrá 2 caracteres. Si es de dos digitos, (año 18, por ejemplo) tendrá 3 caracteres.
Bien, en función del número de caracteres, pondremos un cero en caso de valores inferiores a 10, y tomaremos los valores tal cual, en caso de ser valores de dos dígitos.
Estos valores se irán insertando en posiciones fijas de las variables "Fecha" u "Hora" en función de la variable.
Además, añadiremos los separadores pertinentes. Usaremos "/" para separar en la fecha y el carácter ":" para la hora.
Para crear la variable "Fecha y hora" usaremos la función FC2 CONCAT IEC de tal forma que concatenemos la fecha y la hora, con un espacio en blanco en medio.
Un video explicativo de operaciones con strings en Step 7
Para ver esto mejor, he preparado un video como de costumbre en te lo explico un poco más en detalle.
¿Que te ha parecido?
Espero que te haya parecido interés.
Si necesitas algo similar, ya sabes que hay opciones como esta para jugar con las cadenas de caracteres.
¿Sueles usar operaciones con strings en Step 7?
Recuerda que puedes apuntarte en Guorker.com donde por una cuota mensual, tendrás tarifa plana en todos los cursos disponibles en la plataforma.

Comentarios (19)