Totalizadores en TIA Portal
Es común que cuando estemos desarrollando un proyecto en PLC con algún sensor que mida el consumo de algo, queramos conocer cuanto de esa variable mesurada ya fue consumida hasta ese entonces, usando como ejemplo un medidor de consumo de electricidad de nuestras casas el cual nos va mostrando en tiempo real el consumo acumulado de energía que tenemos.
A pesar de ser algo básico, casi no hay información en las redes al respecto y hoy vamos a crear un bloque de funciones que cumpla con esto.
E experimentado con algunos bloques que encontré en internet, pero su principal problema era que, mientras se mantenía ejecutando acumulaba los valores cuando en realidad solo debía hacerlo una vez en cada ciclo programado.
Usaremos como ejemplo un sensor caudalímetro electromagnético estándar de salida 0–10V a 0–10m/s, este sensor nos entregara la velocidad en la que se mueve el liquido y basándonos en el diámetro del pasaje del liquido en el sensor podremos calcular el volumen.
El sensor nos entrega un valor referencial en m/s, conviene hacer los cálculos cada segundo y así obtener el volumen de liquido consumido por segundo, y este valor acumularlo para conocer el volumen de liquido que fue consumido. En este post no nos centraremos en el método de calculo de volumen.
Lo primero que hay que lograr es que el programa se ejecute solo una vez cada ciclo, ya que si se ejecuta mas de una vez, este sumara varias veces, dándonos un valor superior al real.
Paso 1: Crear nuestro bloque de funciones.
Paso 2: Crear nuestras entradas y variables de entrada y salida dentro del bloque.
Paso 3: Añadimos un temporizador que nos controlara todo el ciclo y este será reseteado por la marca “flag”.
Paso 4: Lógica de acumulación.
En este paso crearemos la lógica de acumulación que consiste en ir sumando el ultimo valor guardado + el valor medido actualmente y así cíclicamente una vez cada segundo.
La lógica consiste en ejecutar una suma en el intervalo de 995–996 ms, como sabemos 1 segundo tiene 1000 ms. Esto es la clave de todo, gracias a esto la suma se ejecuta una única vez cada segundo. Entonces suma el valor de entrada + el ultimo valor salida. En la siguiente linea transfiere el valor de salida a la variable “valor guardado” para su uso en la posterior suma y a continuación activa el la marca flag que resetea el temporizador, reiniciando así el ciclo.
Paso 5: Lógica de reset.
Esta lógica es la encargado de reiniciar los valores guardados.
El resultado final es algo simple y muy efectivo.
Para utilizarlos simplemente tendremos que implementarlo a nuestro main block y asignarle las variables de entrada y salida.