• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar al pie de página

Programación Siemens

Cursos online de TIA Portal y PLC Siemens.

  • Cursos
  • Blog
  • Mi cuenta
    • Mi cuenta
    • 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
Home | blog | 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

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

por Iñigo Gútiez · 2 comentarios

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

Publicado en: blog

Interacciones con los lectores

    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 dice

    17 diciembre, 2020 a las 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 dice

      18 diciembre, 2020 a las 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

Footer

· Acerca de
· Misión, Visión y valores
· Aviso Legal y Política de Privacidad
· Condiciones de Venta
· Política de cookies
Utilizamos cookies propios y de terceros para mejorar nuestros servicios y tu experiencia de usuario. Si continuas navegando, consideramos que aceptas su uso. Aceptar Política de cookies
Política de Cookies

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Siempre activado
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
GUARDAR Y ACEPTAR