• 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 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 de TIA Portal para CPU 1200
    • Curso de Step 7 V5.x
    • Curso de comunicaciones IE y Profinet
  • Contacto

Cómo crear un valor de tiempo en formato S5Time en Step 7

Cómo crear un valor de tiempo en formato S5Time en Step 7

por Iñigo Gútiez · 2 Comments

Esta pequeña entrada sobre el formato S5Time puede que no la necesites nunca. O sí. Al menos la primera parte de la entrada.

La situación es la siguiente. Tienes que pasar un valor temporal a un temporizador de S7 y sabes los segundos, pero no sabes cómo transferírselo al temporizador. Es decir, quieres hacer algo así:

temporizadorEstá claro ¿no?

La idea tiene que ser poder cargar el tiempo en la marca MW100 (o cualquier otra a tu antojo) y que funcione a las mil maravillas.

Bien, pues eso tiene una fácil solución y otra más elaborada, pero que conviene conocer.

Contenido

  • 1 Transformar milisegundos en S5Time
  • 2 Cómo crear un valor de tiempo en formato S5Time en Step 7
    • 2.1 ¿WTF?
    • 2.2 ¿Va mejorando la cosa eh?
    • 2.3 ¿Qué cargaríamos si no fuera la base un 0?
  • 3 ¿Has usado esta forma alguna vez?

Transformar milisegundos en S5Time

Los teutones de Siemens tontos no son, y tienen un bloque preparado para que puedas pasar de un tiempo X en milisegundos (en formato time, por ejemplo: T#1h5m6s200ms para indicar 1 hora con 5 minutos y 6 segundos con 200 milisegundos).

tim_s5tiPara realizar esta operación, tan sólo debes cargar la función que viene con Step 7 en: Librerías> Stdlibs>IEC>FC  40 TIM_S5TI

Es decir, transformamos un tiempo IEC en formato de tiempo de Siemens.

Muy útil y simple de hacer.

Pero como estamos en Programación Siemens, y nos va la marcha, vamos a demostrar que además sabemos Latín por lo que vamos a hacerlo de manera que los neófitos pongan los ojos como platos al ver las vueltas que se pueden dar para hacer esto mismo.

Es decir, lo vamos a hacer diferente… ¡porque podemos! (y para eso somos de Bilbao. Véase «Todos nacemos vascos«)

Cómo crear un valor de tiempo en formato S5Time en Step 7

Bien, para realizar esta bilbainada, vamos a necesitar conocer cómo es el formato S5Time por dentro. Ojo a la siguiente imagen:

S5TIME-formatComo ves, hay que trabajárselo un poco.

Para empezar, tenemos que pasar nuestro tiempo a un número entre 0 y 999. Si te suena esto al formato S5time del Step 5, estoy seguro que ya peinas unas cuantas canas, pero sí, como sabes, los temporizadores de S7 son reminiscencias del Step 5 con todas las consecuencias.

Bueno, seguido de esto, tenemos 2 bits para decidir la base de tiempos de tal forma que los elijas así:

Base de tiempo Código binario
10 ms 00
100 ms 01
1 s 10
10 s 11

¡No me digas que no mola!

Con lo cual, tendremos que nuestro tiempo que teníamos por ahí perdido de 1h5m6s200ms  resulta que no es traducible a un tiempo S5Time…

¿WTF?

Pues sí, no tiene resolución suficiente, es decir, no podemos contar horas y con precisión de milisegundos ya que para poder alcanzar las horas, tendremos que tomar la base 10s de tal forma que obviando los milisegundos, es tiempo sería 3906 segundos, que tampoco podemos alcanzar.

Por tanto, como digo, solo podremos alcanzar los 390 x 10 segundos, es decir, 1h5m aproximadamente. perdiendo esos 6 segundos restantes con sus 200 preciosos milisegundos.

Pero es que además, no puedes contar por ejemplo 3horas porque 999x 10 segundos = 9990 segundos = 2,775h = 2h46m30s

¿Va mejorando la cosa eh?

Bien, más allá de las limitaciones, vayamos al meollo de la cuestión una vez repuestos del shock.

Imaginemos que queremos construir un tiempo de 3,5 segundos podremos hacer:

  • 35 x 100ms
  • 350x 10ms

Cualquiera de las dos opciones son correctas si bien usando la base 10ms tendrás mejor precisión.

Vale, ¿y ahora?

Bueno, pues ahora, para crear un valor de tiempo en formato S5T en Step 7 tendrás que hacer lo siguiente.

L 350 //Cargamos los 3,5 segundos en base 10ms

ITB //Pasamos el valor a BCD

L W16#0FFF //Cargamos una máscara para eliminar los 4 bits de la izquierda

UW //Hacemos un AND de palabra para ejecutar la máscara.

LW16#0000 //(en este caso tenemos que cargar un 0000 en el cuarteto de la base)

OW // Hacemos un OR para que adquiera el tiempo y la base

T MW100 //Lo cargamos al temporizador.

¿Qué cargaríamos si no fuera la base un 0?

Bien, teniendo en cuenta que las opciones para los 4 bits de la base serían:

  • 0000
  • 0001
  • 0010
  • 0011

En hexadecimal tendríamos para estos valores:

  • 0000 ->  0
  • 0001 ->1
  • 0010 ->2
  • 0011-> 3

Con lo que también podríamos haber cargado:

L 35 //Cargamos los 3,5 segundos en base 100ms

ITB //Pasamos el valor a BCD

L W16#0FFF //Cargamos una máscara para eliminar los 4 bits de la izquierda

UW //Hacemos un AND de palabra para ejecutar la máscara.

LW16#1000 //(en este caso tenemos que cargar un 0001 en el cuarteto de la base y dejar el resto del valor del número en hexadecimal en cero)

OW // Hacemos un OR para que adquiera el tiempo y la base

T MW100 //Lo cargamos al temporizador.

Luego usarías el valor de MW100 en el temporizador normalmente.

¿Has usado esta forma alguna vez?

Si tienes cierta edad y te ha tocado lidiar con PLC y pantallas antiguas seguro que has hecho si no esto, algo parecido para saber cómo crear un valor de tiempo en formato S5T en Step 7

Ya sabes que como siempre, esta entrada será incluida en «Cómo programar Step 7 y no morir en el intento» junto con otras que incluiré ya publicadas y alguna que queda por publicar aún.

Si te parece útil, o simplemente te ha gustado, te invito a que lo compartas a través de tus redes sociales.

 

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.

    2 Comentarios

  1. Alejandro says

    17 diciembre, 2020 at 13:40

    A ver tengo un pequeño problema.
    Suelo programar en KOP, y en clase estamso dando ahora mismo AWL.
    Mi problema es que quiero usar el S5Time y aprender a como manejarme con ese tipo de dato.
    Bueno el programa consiste en lo siguiente. la frecuencia que escribas en tu bloque de datos, te varie el tiempo que actua un pequeño parpadeo.

    Como T = 1 / F, he realizado la división y tal, y cuando quiero pasar el dato a s5time, el valor que esta simulandose, alcanza a los dias, y no soy capaz de avanzar en este problema…

    Responder
    • Iñigo Gútiez says

      18 diciembre, 2020 at 11:48

      En un S5time solo puedes meter 2h52minutos, si no recuerdo mal. No puedes usarlos. Tendrás que usar temporizadores IEC o fabricar tu propio contaje de tiempo.

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

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

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

7 pasos para programar mas ordenado y profesional op

7 pasos para programar más ordenado y profesional

Recibirás de forma TOTALMENTE GRATUITA:

  • Un PDF con los pasos para programar de forma más eficiente, limpia y profesional

PROGRAMACIÓN SIEMENS te informa que los datos de carácter personal que nos proporciones rellenando el presente formulario serán tratados por Iñigo Gútiez Chagartegui como responsable de esta web. La finalidad de la recogida y tratamiento de los datos personales que te solicitamos es para enviarte nuestras publicaciones, promociones de productos y/o servicios y recursos exclusivos. La legitimación se realiza a través del consentimiento del interesado. Te informamos que los datos que nos facilitas estarán ubicados en los servidores de ActiveCampaign, LLC  (proveedor de email marketing), ubicada en EEUU. ActiveCampaign, LLC
 está acogido al acuerdo EU-US Privacy Shield. Puedes ver la política de privacidad de ActiveCampaign en https://www.activecampaign.com/privacy-policy/. El hecho de que no introduzcas los datos de carácter personal que aparecen en el formulario como obligatorios podrá tener como consecuencia que no pueda atender tu solicitud. Podrás ejercer tus derechos de acceso, rectificación, limitación y suprimir los datos en info@programacionsiemens.com así como el derecho a presentar una reclamación ante una autoridad de control. Puedes consultar la información adicional y detallada sobre Protección de Datos en nuestra política de privacidad.

x