• Skip to primary navigation
  • Skip to main content

ProgramaciónSiemens

Cursos online de automatización industrial con PLC Siemens

  • Cursos
  • Mi cuenta
    • Mi cuenta
    • Blog
    • Foros
    • Curso HMI con Python y Qt-Designer
    • Curso de AWL
    • Curso de iniciación a la Industria 4.0
    • Curso Express de TIA Portal
    • Curso de WinCC Flexible 2008
    • Crear HMI con OPC y VB.NET
    • Crear HMI con Snap7 y VB.NET
    • Curso ViSnap7
    • Curso de TIA Portal para CPU 1200
    • Curso de Step 7 V5.x
    • Curso de comunicaciones IE y Profinet
  • Contacto & Faq

Como multiplicar S5Time en Step 7

Como multiplicar S5Time en Step 7

por Iñigo Gútiez · 14 Comments

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=20s
Tiempo Calculado=%PID*Tiempo_maximo 
Tengo alrededor de 4 compuertas que funcionan con temporizadores con retardo a la conexión SE al cual le tengo que asignar el tiempo calculado
La cuestión es que esas operaciones de multiplicación directamente, no se pueden hacer.
El resultado de multiplicar así «a pelo» un valor numérico con un S5time dará cualquier cosa.
Para solucionarlo, vamos a usar los bloques FC33 y FC40 que tenemos en la biblioteca.
La semana que viene, te enseñaré algo más elaborado, realizando un bloque para sumar o restar tiempos sin usar estos bloques FC33 y FC40.

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 multiplicar S5Time en Step 7

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.

Como multiplicar S5Time en Step 7

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:

Como multiplicar S5Time en Step 7

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.

 

 

Iñigo Gútiez
Iñigo Gútiez

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.

Filed Under: blog

Reader Interactions

    Deja un comentario Cancelar

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

    14 Comentarios

  1. Alfonso says

    15 agosto, 2018 at 19:01

    Oleeee

    Responder
  2. jose says

    15 agosto, 2018 at 20:16

    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

    Responder
    • Iñigo Gútiez says

      15 agosto, 2018 at 21:36

      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!

      Responder
  3. Duberney says

    15 agosto, 2018 at 21:37

    Buen aporte, a mi tambien me gustaria poder aportar lo poco que sé.

    Responder
  4. Juan Carlos says

    16 agosto, 2018 at 12:56

    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.

    Responder
  5. alejandro rico says

    16 agosto, 2018 at 15:57

    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….

    Responder
  6. Alvaro says

    17 agosto, 2018 at 5:48

    Excelente aporte Iñigo,

    Saludos !

    Responder
  7. David says

    17 agosto, 2018 at 13:01

    Creo que en futuro van añadir una librería Standard de Siemens «Iñigo» que será la mejor para un automatista!!
    Saludos!!!

    Responder
    • Iñigo Gútiez says

      18 agosto, 2018 at 23:12

      jaja, ya lo he pensado, no creas que no.
      Saludos!

      Responder
  8. Zeno Martorana says

    21 agosto, 2018 at 12:31

    Gracias amigo ….. eres un verdadero genio.

    Responder
    • Iñigo Gútiez says

      25 agosto, 2018 at 11:24

      Jaja Gracias Zeno. Ya me gustaría serlo, pero va a ser que no.
      Saludos

      Responder
  9. gerardo says

    23 agosto, 2018 at 3:12

    bueno!!!!!!!!!!!!!!

    Responder
  10. Luis Herrera says

    23 agosto, 2018 at 5:56

    Que buen aporte te agradezco Iñigo, saludos se aprecia mucho la explicación

    Responder
    • Iñigo Gútiez says

      25 agosto, 2018 at 11:24

      Gracias Luis!

      Responder
  • Aviso Legal y Política de Privacidad
  • Condiciones de Venta
  • Política de cookies
  • Contacto & Faq
  • Blog

Copyright © 2023 · Programación Siemens · Todos los derechos reservados

· ¿Quién soy? · Misión, Visión y valores