Esta semana te traigo una duda sencilla de aclarar, pero que puede que te haya pasado, o te vaya a pasar como es cómo multiplicar S5Time en Step 7
Como supongo que sabrás, no puedes jugar con los S5time a tu antojo como si números corrientes se tratara.
Tienen su propia idiosincrasia.
En su momento, ya tratamos un poco este tema en un post.
Hoy vamos a solucionar una duda de Jose Ignacio, que dice así:
Buenas noches Iñigo.Te saluda Jose desde Colombia
He estado trabajando con temporizadores de Step 7 y tengo problemas porque quiero hacer una multiplicación y división con variables tipo tiempo.Tengo un sistema de control PID en una caldera y la dosificación debe estar relacionada con la acción de control del PID que en este caso va de 0 -100%, entonces yo debería aplicar la siguiente formula:Tiempo Máximo=20sTiempo Calculado=%PID*Tiempo_maximoTengo alrededor de 4 compuertas que funcionan con temporizadores con retardo a la conexión SE al cual le tengo que asignar el tiempo calculado
Como multiplicar S5Time en Step 7
Como he comentado, así de primeras, no puedes.
Lo que tienes que hacer, previamente, es convertir el tiempo S5time en Time, operar con ello, y luego pasarlo nuevamente a S5time.
Así por ejemplo, y teniendo en cuenta lo que quiere hacer Juan, tendríamos que para realizar la operación:
Tiempo Calculado=%PID*Tiempo_maximo
Lo primero que haremos será invocar al FC33 (Library>Standard Library>IEC Function Blocks)
Este FC lo que te permite es pasar este tiempo S5time a tiempo IEC.
El tiempo IEC estará dado en una doble palabra y contendrá el tiempo en milisegundos.
Posteriormente, ya puedes multiplicar normalmente obteniendo el valor en milisegundos.
Lógicamente las operaciones de multiplicación deberá ser en dobles enteros.
Si hubiera que multiplicar por un valor real (imaginemos 2,5), entonces previamente tendremos que pasar el valor del tiempo a real, luego multiplicar, y finalmente redondear a doble entero nuevamente.
Una vez que tengas el valor en milisegundos, multiplicado, y en formato doble entero, tan solo tienes que pasar este tiempo de vuelta a S5time usando la función FC 40(Library>Standard Library>IEC Function Blocks).
Y ya está.
Solucionado como ves en la captura siguiente:
Como ves, he multiplicado un S5time de 3 segundos por 20, obteniendo lógicamente 1minuto.
En cambio, si multiplicas "a pelo" la MW200 (que contiene 3s) por 20, como enteros, obtendrás teóricamente 3h20m, lo cual, además de ser una burrada, no es posible de tener en un S5TIME ya que el máximo de un S5time es 999 en base 10, es decir, 9990 segundos, o lo que es lo mismo, 2h 46m 30s.
Lógicamente, la función FC33 da error, ya que tal tiempo, no es posible.
¿Qué te ha parecido?
Espero que esto te haya sido útil, y si tienes que realizar alguna vez operaciones con tiempos de S5time, no lo hagas directamente como si enteros se tratara, porque lo estarás haciendo mal.
Te dejo un aperitivo de la semana que viene:
Se trata de un bloque que suma o resta tiempos en S5time, y te da como resultado, el tiempo del operando A en TIME, el tiempo del operando B en TIME, el resultado de la operación (1 suma, 2 resta) en TIME y en S5Time.
En la captura se ve el resultado bien en S5time. Los valores en TIME están representados en hexadecimal, pero créeme que están bien. :)
Te animo a que lo intentes.
Eso sí, condición imprescindible: no puedes usar ningún FC, ni FB ni nada de nada de las librerías de Siemens.
Nada del FC33, FC40, ni nada que haya en el catálogo. Eso es doping.
Con las operaciones normales disponibles, es suficiente para hacerlo.
¿Te animas al reto?
La semana que viene, la solución.



