• 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

Cómo usar el desplazamiento de bits para crear secuencias

Cómo usar el desplazamiento de bits para crear secuencias

por Iñigo Gútiez · 14 Comments

Como ya sabrás de otras entradas del blog o si eres alumno del curso de TIA Portal, sabes de mi predilección por hacer las secuencias de automatización es el uso de Set y Reset.

Esta vez te voy a contar cómo se puede usar el desplazamiento de bits en TIA Portal para crear una secuencia.

He de decir, que yo esto no lo uso, pero he visto usar el desplazamiento de bits en Step 7 clásico para realizar secuencias.

Y créeme que se puede usar muy, pero que muy mal.

Así que te voy a explicar cómo veo yo que se debe usar esta herramienta, y cómo no.

Contenido

¿En qué se basa este método?

Básicamente lo que haces es lo siguiente:

Inicialmente, con las condiciones de partida, cargas un «1» en el bit menos significativo del byte, palabra o doble palabra que quieras usar.

Luego, cuando se cumplan las condiciones de la siguiente etapa, mueves 1 posición hacia la izquierda de la palabra (o el ancho elegido).

De tal forma, que si el bit estaba en el M101.0, pasará a estar en el bit M101.1.

Cuando se cumplan las condiciones para pasar de etapa, pues ese bit pasará a estar en el M101.2

Y así, sucesivamente.

Lo vemos luego más detenidamente en el vídeo, pero a grandes rasgos de lo que se trata es de mover un bit por las diferentes posiciones de una palabra por ejemplo de cara a que cada posición de bit de dicha palabra, es una etapa de la secuencia.

Sustituyes un Set/Reset, por ese movimiento.

De por sí, esto podría parecer una buena forma de hacerlo, pero tiene sus limitaciones, por lo que no me gusta especialmente.

En cualquier caso, te lo voy a explicar por si lo ves, o si lo quieres probar.

Cómo NO debes usar el desplazamiento de bits para crear secuencias

Bajo mi punto de vista, lo que no debes hacer bajo ningún concepto es hacer tantas llamadas al movimiento del bit como partes tenga la secuencia.

Es decir, no poner N bloques de movimiento del bit.

La razón es que es un auténtico sin Dios a poco que se complique el programa.

Piensa que cuando vayas a mantener el programa, tú no vas a ver en ningún lado dónde se le va a dar valor a la marca M101.1 por ejemplo. No hay ningún sitio. Solo verás que se lee su estado, y nada más. Por lo que si quieres ver cuándo se le da valor, tienes que ir a la posición anterior (M101.0), y ver dónde hace la secuencia de mover el bit.

Si tienes 16 bits (por ejemplo), y tienes 16 segmentos con sus 16 movimientos de bit, eso es una chapuza (insisto, bajo mi punto de vista).

No porque el programa no vaya a funcionar bien, sino porque es una forma poco mantenible y muy confusa.

Y créeme, que cuando estás en una avería, te acuerdas de quién programó la secuencia. Bueno, de esta persona, y de varios integrantes de su familia.

Cómo SÍ puedes usar el desplazamiento de bits para crear secuencias.

Bueno, pues está claro ¿no?

Todo debe estar concentrado en un único sitio donde se vean todas las condiciones en un único segmento y en sólo un punto se haga mover los bits.1

Esto simplifica sobremanera el mantenimiento porque si buscas las referencias cruzadas de los bits o de la palabra, enseguida verás el sitio donde se produce la magia.

Tan sencillo como eso.

Muchas veces hacer las cosas bien, es más sencillo que hacerlas mal.

Y puedes pensar que quien va a hacerlas mal entonces… pues créeme que somos muy imaginativos a veces (yo el primero, ojo).

El vídeo

Como siempre, es más fácil de verlo que de explicarlo con texto, así que let’s go!

Fe de erratas

El el vídeo digo que al usar el desplazamiento a la derecha se introducen unos por la izquierda, y eso no es siempre cierto.

Como me han apuntado (Gracias Toni), es incorrecto ya que depende del signo.

Si el bit de signo es 1, se rellenan con 1. Si el bit de signo es 0, se rellenan con 0.

Esto me pasa por ir tan rápido. Pero ya veo que estáis atentos jeje.

¿Qué te ha parecido?

Seguro que habrás visto secuencias hechas con este estilo de programación e incluso seas asiduo de ellas.

¿Cómo te gusta programar las secuencias?

Recuerda que si necesitas iniciarte con la programación de TIA Portal tienes el curso de iniciación con el que entender el funcionamiento de los autómatas de Siemens, programar en escalera y las pantallas Basic de Siemens… ¡todo en el mismo curso!

 

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

    7 mayo, 2020 at 10:36

    Muy buena explicación,
    Gracias.

    Responder
    • Iñigo Gútiez says

      7 mayo, 2020 at 11:11

      Gracias Jairo.

      Responder
  2. Juan Carlos Serrano Durante says

    7 mayo, 2020 at 11:05

    El desplazamiento de bit yo lo he usado para dar movimiento o algún efecto en HMI.
    Saludos

    Responder
    • Iñigo Gútiez says

      7 mayo, 2020 at 11:12

      Sí, yo alguna vez también, pero poco la verdad.

      Responder
  3. Juan Manuel says

    7 mayo, 2020 at 12:24

    Este tipo de secuencias la he visto programada en maquinas etiquetadoras de botellas, en las cuales el bit indicaba la presencia de la botella dentro de un carrusel, para su posterior etiquetado.

    Responder
    • Iñigo Gútiez says

      7 mayo, 2020 at 12:27

      Sí claro, hay más aplicaciones. De hecho he añadido un enlace al principio de la entrada con un ejemplo que hice en el blog hace bastante tiempo.

      Responder
  4. JESUS says

    7 mayo, 2020 at 14:12

    Muy bien explicado Iñigo. Y tienes mucha razón al decir, que puede ser muy engorroso si hay muchas condiciones implicadas. Lo tuve que usar obligatoriamente en el proyecto de final de grado y la verdad que costó cuadrarlo todo, pero al final funcionó (espero saber la nota, que con esto de la pandemia se ha atrasado todo, a ver que tal).
    Saludos!

    Responder
  5. Carlos Salazar Duarte says

    7 mayo, 2020 at 19:47

    Hola Iñigo bastante buena y sencilla la explicación que acabas de dar. Siempre he pensado que los registros de desplazamiento son muy aplicables pero también son complicados para entenderlos en la práctica. Entender el funcionamiento de un desplazamiento o un registro de desplazamiento no me parece complicado, es cuando lo encuentras en alguna aplicación que se hace difícil entenderlo. he tenido que trabajar en llenadoras de gaseosa donde utilizan el desplazamiento para verificar cuando se ha explotado una botella y también para colocar la tapa cuando la botella se ha llenado y a pesar de haberme acostumbrado al funcionamiento créame que todavía siento mis dudas de que si lo tengo claro o no. de todas manera tu explicación es muy buena y muy valedera. muchas gracias. Carlos Salazar

    Responder
  6. Roberto Araujo says

    7 mayo, 2020 at 23:22

    Gracias por compartir Iñigo, interesante tema!!

    Responder
  7. Cesar says

    8 mayo, 2020 at 5:51

    Yo lo utilizo para realizar registros de datos de posición de barras dentro de un horno pero lo utilizo en lenguaje scl funcional.

    Responder
  8. Juan Manuel Fernández says

    20 mayo, 2020 at 0:43

    Interesante. He reproducido tu ejemplo con el simulador y las variables PosicionX y PosicionY tomaban valores muy extraños. he colocado un P_Trig inmediatamente después de la marca de reloj y todo ha empezado a funcionar a la perfección. Gracias por compartir.

    Responder
  9. Miguel GT says

    9 julio, 2020 at 20:11

    Gracias por el video.
    Respecto a Fe de erratas, creo que tampoco es así, ya que depende del tipo de dato con el que trabajes. Puede ser una WORD y no ser definida como entero, y, por lo tanto, no tener signo. Representa un simple binario natural. Y puede definida esa word como entero, en cuyo caso puede ser con signo o sin signo. Si es con signo, entonces sí sucederá lo que te apuntan. Pero en el caso de ser definida la MW como una WORD o como entero sin signo, no se rellena con unos. Saludos.

    Responder
  10. erick ruiz says

    7 octubre, 2021 at 18:08

    Estimado me parece muy bien video, tengo una duda como puedo hacer para que cuando de stop , se pare de mover el circulo por ejemplo en cualquiera de las etapas que se quedo , y se guarde en que etapa se quedo y al momento de darle start energice esa etapa y siga el proceso.

    Responder
    • Iñigo Gútiez says

      12 octubre, 2021 at 10:29

      No borras la etapa y las salidas las condicionas a otros estados. No hace falta guardar en ningún lado la etapa, solo no la borres y cuando lo pongas en automático (con sus seguridades y arranque que deba tener), sigue haciendo lo que estaba haciendo.

      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