• 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

O exclusiva en Step 7 – Crear un telerruptor

O exclusiva en Step 7 – Crear un telerruptor

por Iñigo Gútiez · 17 Comments

En esta entrada te voy a enseñar cómo puedes crear un telerruptor usando la O exclusiva en Step 7.

Como recordarás (sino te lo recuedo yo) la O exclusiva lo que hace es una combinatoria binaria de tal forma que el resultado es TRUE cuando los bits intervinientes tienen valor diferente entre sí y un FALSE si son iguales.

Contenido

  • 1 O exclusiva en Step 7: ejemplo de un telerruptor
    • 1.1 ¿Cómo vamos a usar la O exclusiva en Step 7?
    • 1.2 Explicación del código
    • 1.3 ¿Pero no se puede hacer más fácil aún?
  • 2 Telerruptor sin usar AWL
  • 3 Espero tus comentarios

O exclusiva en Step 7: ejemplo de un telerruptor

Normalmente en los programas que he visto por ahí para realizar un telerruptor o balanza se suelen usar Set y Reset.

Recordemos que una balanza o telerruptor lo que hace es que alterna el valor de una salida digital cada vez que una entrada se pone a TRUE.

De esta forma, cuando por primera vez pones la entrada a 1, la salida se pone a 1 también.

La entrada vuelve a cero, y la salida sigue estando a 1.

Ahora, si vuelves a poner la entrada a 1, la salida que estaba a uno, cambia poniéndose a cero.

Volviendo a poner la entrada a 1, la salida se pondría a 1, y así sucesivamente.

¿Cómo vamos a usar la O exclusiva en Step 7?

La gracia de este ejemplo, es dar un uso a la O exclusiva ya que como digo, se puede hacer con Set y Reset.

Ya vimos en otro ejemplo cómo crear un telerruptor con Set y Reset cuando hablábamos de la lógica boolena.

Pero así aprendemos otra forma de hacerlo, y ya de paso, practicamos algo de AWL.

La idea es que podamos reutilizar el código de este telerruptor, por lo que vamos a usar, esta vez, un FC al que le suministraremos 3 señales:

  • Señal de entrada del telerruptor (M100.0)
  • Salida de la balanza o telerruptor (M200.0)
  • Marca auxiliar (M50.0)

El FC tendría una pinta como esta:

O exclusiva en Step 7 - Crear un telerruptor

Y el interior del FC que le he llamado «Balanza» sería este:

O exclusiva en Step 7 - Crear un telerruptor

Explicación del código

Te cuento lo que he hecho.

La idea es leer la señal de entrada y con ella, alternar el valor de la balanza.

Como solo queremos que se ejecute una vez, nos vamos a apoyar en una marca usando un pulso y un salto.

De tal forma, que cuando la señal de entrada pase de 0 a 1, se ejecutará el código que queremos, y cuando bien siga pulsado a 1, o se ponga a cero, no se ejecute:

 U     #Sennal        // Leemos la señal de entrad del telerruptor
 FP    #Auxiliar      // Generamos un pulso para que solo se ejecute una vez
 SPBN  EXIT     

Dentro de la parte que si queremos que se ejecute, tenemos lo siguiente:

 SET                 // Ponemos una variable temporal a 1
=     #temporal
X     #temporal      // Realizamos la O exclusiva entre esta variable temporal
X     #Balanza       // Y nuestra señal de balanza o telerruptor
=     #Balanza        

Lo que hacemos en este caso, es apoyarnos en una variable temporal para realizar la O exclusiva con la señal de la balanza, de tal forma, que como siempre realizamos una O exclusiva con una señal que está a uno, lo que hará es cambiar de valor de forma alterna en función de lo que ella misma tenga de valor.

Recuerda que la tabla de la verdad de la O exclusiva es la siguiente:

O exclusiva en Step 7

Al final del programa tenemos:

SET   
SAVE                 // Ponemos el ENO a 1 para que se propague si fuera necesario

Para lo que lo pongo es para que el ENO siempre este a a uno.

¿Pero no se puede hacer más fácil aún?

Espero que te hayas dado cuenta, que lo de realizar la O exclusiva en Step 7 para realizar una balanza se puede simplificar aún más.

Si tenemos en cuenta que hacemos una O exclusiva con un valor que siempre está a uno… ¿no es lo mismo que dar la vuelta a la propia señal?

Bingo.

Es que realmente es lo que queremos ¿no?

Pues sí, se puede simplificar aún mucho más, simplemente negando la señal de balanza e igualando:

O exclusiva en Step 7 - Crear un telerruptor - 3

¿Ves lo que te digo?

Realmente con hacer lo siguiente sería suficiente:

UN    #Balanza         // Negamos nuestra señal de balanza o telerruptor
=     #Balanza         // Obteniendo el nuevo valor de la salida

Vale.
Te he troleado un poco con lo de la O exclusiva en Step 7 jeje.
Pero ahora, ya sabes cómo usarla, y dos formas de hacer lo mismo… ¿o no?

Telerruptor sin usar AWL

Como decía Súper Ratón: ¡no se vayan todavía! , ¡aún hay más!

Para los que no están muy duchos en AWL, te propongo otra alternativa muy muy sencilla basada en negar la entrada, haciendo un FC muy sencillo que tenga simplemente este código:

O exclusiva en Step 7

Tela de complicado ¿eh?

Vale. Pues este código irá asociado con la llamada:

O exclusiva en Step 7

Funciona exactamente igual que el que he realizado en AWL.

La diferencia es que el pulso lo he realizado en el exterior (por variar) y no usar ni siquiera los saltos.

Lógicamente podrías colocar todo este código en el interior del FC2 haciendo algo parecido al realizado en AWL pero en ladder.

Pero la idea de este ejemplo, era realizarlo lo más sencillo posible usando las instrucciones más básicas posibles.

Espero tus comentarios

Como siempre, espero que te haya gustado y que te sea útil.

Si se te ocurre otra forma de realizarlo,  ¡ya sabes!

Por supuesto, este ejemplo irá incluido en la próxima edición de Cómo programar Step 7 y no morir en el intento que espero actualizarlo a lo largo de este año.

Recuerda que puedes apuntarte en Guorker.com donde por una cuota mensual, tendrás tarifa plana en todos los cursos disponibles en la plataforma.

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.

    17 Comentarios

  1. David says

    24 mayo, 2017 at 18:42

    Iñigo y yo comiendonos un poco la cabeza en KOP con el teleruptor usando las marcas Set y Reset y resulta que en AWL es un juego de niños. Siempre nos sorprendes!!!
    Saludos!!

    Responder
    • Iñigo Gútiez says

      26 mayo, 2017 at 0:51

      jaja Gracias David!

      Responder
  2. José says

    24 mayo, 2017 at 21:46

    Que bueno…

    Responder
  3. RINO ISMAEL SIMANCAS says

    24 mayo, 2017 at 21:57

    Muchas Gracias por tus ejemplos , pero son tan sencillos que lo he Realizado tal cual como esta en ejemplo en ladder y no me Funciona .
    Gracias.
    saludos.

    Responder
    • Iñigo Gútiez says

      24 mayo, 2017 at 22:02

      Hola.
      La señal de la balanza la has puesto como in/out?
      Mira que no la hayas puesto como input.
      Saludos

      Responder
  4. Ildefonso Cequiel says

    24 mayo, 2017 at 22:55

    Muchas gracias por la aplicacion me servira de mucha utilidad.
    He visto en un post una aplicacion de puesta en marcha horaria para camaras frigorificas.Te pediria por favor si me puedes pasar la aplicacion.La colocaria en un programa que estoy programando y me serviria para poner en marcha diferentes aplicaciones

    Responder
    • Iñigo Gútiez says

      24 mayo, 2017 at 23:58

      Hola,
      Los ejemplos como ese, son exclusivamente accesibles con la adquisición del curso de como programar Step 7 y no morir en el intento.
      He visto que lo tienes, así que tiene que estar en el listado de proyectos.

      Saludos

      Responder
      • CKYEL says

        25 mayo, 2017 at 13:06

        Buenos dias ante todo gracias por el ejemplo pero tengo una duda al pasar la fc a awl no me sale la variable temporal podrias decirme como la cargo
        Gracias

        Responder
        • Iñigo Gútiez says

          26 mayo, 2017 at 0:48

          Tienes que declarar las variables en la parte de declaración de variables en la cabecera del FC.
          En cualquier caso, la idea no es que os de el código mascado, sino que veáis la idea y fabriquéis el FC por vuestra cuenta.
          Saludos

          Responder
  5. Daniel says

    25 mayo, 2017 at 3:29

    Que te parece si lo haces con un contador?

    Responder
    • Iñigo Gútiez says

      26 mayo, 2017 at 0:47

      Hombre, por poder, se puede. Pero los contadores son para otra cosa, no para hacer este tipo de cosas a mi juicio.
      Saludos

      Responder
  6. Roger says

    25 mayo, 2017 at 21:38

    Hola Iñigo, gracias una vez más por compartir tus conocimientos y soluciones. Gracias a ellas, programadores novatos como yo, vamos dominando pasito a pasito la programación de automátas.
    Creo que lo verdaderamente interesante sería calcular cuanto se demora en ejecutarse esta solución y las ya tradicionales (por ejemplo con flip flop), para ver que beneficios nos puede traer en la velocidad ejecución de nuestros programas (si le damos otro uso que no sea el de detectar el estado de un pulsador). De lograr medir este tiempo, te comento.

    Responder
    • Iñigo Gútiez says

      26 mayo, 2017 at 0:50

      Teniendo en cuenta la porción de codigo del que hablamos, creo que es irrelevante. Muchos flipflop tendías que usar para tener que preocuparte por el tiempo de ciclo que tarda uno u otro. Yo más bien te diría que uses aquel con el que te sientas más cómodo.
      Saludos

      Responder
  7. Ricardo says

    7 junio, 2017 at 11:32

    Muy Bueno!!!!

    Responder
    • Ricardo says

      7 junio, 2017 at 11:34

      ¿ Como se escala una señal no lineal ?

      Responder
  8. GREGORIO RIVAS says

    11 octubre, 2020 at 12:47

    Hola Iñigo:
    Quiero programar un PLC para que me realice este cálculo de una forma automática, dentro de las secuencias del programa.
    Me puedes ayudar?
    Partiendo de los datos de calibración de cada bomba dosificadora, básicamente % inverter bomba y la cantidad que dosifica con la bomba EN MARCHA durante 10 segundos exactos.(1)
    Quiero saber para una cantidad de producto X (ejemplo 125 gr) a que tanto por ciento del inverter de la bomba dosificadora tengo que poner para que me dosifique esa cantidad en 10 segundos.
    Eso lo realizaremos para varias bombas simultáneamente, ya que necesito que todas las bombas dosifiquen los diferentes productos de la receta de una manera simultánea y en el mismo tiempo exactamente para obtener una receta regular y uniforme.
    1. Función recta de las cantidades en gramos que dosifica la bomba en función del % del inverter de la bomba. Mínimo 10% y máximo 60%.

    Ejemplo: queremos saber para una cantidad determinada de 125 gramos, que % del inverter tiene que ponerse para que la bomba dosifique esa cantidad en un tiempo de 10 segundos. El resultado Y es del 31.878%
    2. (%) inverter cantidad buscada.
    3. Cantidad en gramos de producto a dosificar.( X) en gramos)
    4. Tiempo fijo de dosificación de la bomba en marcha 10 segundos

    ¿Como puedo programar esto en un PLC?
    ¿ Es posible?

    Muchas gracias
    Gregorio

    Responder
    • Iñigo Gútiez says

      13 octubre, 2020 at 21:10

      Es cuestión de que hagas los cálculos matemáticos sabiendo lo que quieres conseguir, los datos de la bomba etc.
      Si lo puedes hacer en un papel con las ecuaciones matemáticas adecuadas, el PLC también las puede hacer. Es cuestión de que las programes.

      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