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.
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.
15 Comentarios
Oleeee
Muchas gracias iñigo. Este un problema real de una caldera de vapor el tiempo calculado es la apertura de una compuerta de alimentación el cual depende de PID Maestro de presión, saludos desde colombia
Un placer poder echar una mano.
Tu duda me ha dado pie a programar el bloque que os enseñaré la semana que viene.
Saludos!
Buen aporte, a mi tambien me gustaria poder aportar lo poco que sé.
Hola, haciendo unos ejercicios me he encontrado con una duda, y seria esta: Realizar un Temporizador que temporice 8 segundos. Queremos que a los 3 segundos se active la salida 4.0 y en los últimos segundos se active la salida 4.1.
A ver si pudieras echarme una mano. Gracias y muy buena ayuda con tu blog.
Como siempre tienes que llevar la cadenita del uso de registros para almacenar cierto tipo de datos en cada operación, ya que si no llevas la pauta se pierde o te genera error en el programa…..
Pero cada programa de Autómatas tienen ciertas instrucciones que a veces si las sabes utilizar
se dificulta utilizar en un programa se minimiza y lo realizar con facilidad…
Saludos….
Excelente aporte Iñigo,
Saludos !
Creo que en futuro van añadir una librería Standard de Siemens «Iñigo» que será la mejor para un automatista!!
Saludos!!!
jaja, ya lo he pensado, no creas que no.
Saludos!
Gracias amigo ….. eres un verdadero genio.
Jaja Gracias Zeno. Ya me gustaría serlo, pero va a ser que no.
Saludos
bueno!!!!!!!!!!!!!!
Que buen aporte te agradezco Iñigo, saludos se aprecia mucho la explicación
Gracias Luis!
Buena reseña para mejorar la programación en step 7