• 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 establecer correctamente el envío y recepción de datos entre dos PLC

Cómo establecer correctamente el envío y recepción de datos entre dos PLC

por Iñigo Gútiez · 32 Comments

El envío y recepción de datos entre dos PLC no siempre se realiza de forma óptima.

Para enviar una señal de un PLC a otro en la mayoría de las ocasiones se  hace simplemente realizando el envío y te olvidas.

En general parece ser suficiente porque las cosas funcionan y no se necesita más.

Pero en algunas ocasiones, la comunicación se ralentiza, o  hay señales que no llegan a la vez, o sí porque una se retrasa y no deberían llegar a la vez, o cualquier cosa que arruinan el envío y recepción de datos. Es ahí  cuando comienza tu pesadilla.

Contenido

  • 1 Entonces, ¿cómo podemos realizar un envío y recepción de datos de forma segura entre dos PLC?
  • 2 La forma correcta de realizar un envío y recepción de datos
  • 3 ¿Es necesario hacer esto siempre?
  • 4 ¿Qué te ha parecido?

Entonces, ¿cómo podemos realizar un envío y recepción de datos de forma segura entre dos PLC?

Empecemos por un error que he visto alguna vez.

Imagina que necesitas un dato por el cual, dependiendo del valor que tome, la máquina receptora de la información hará  un trabajo A o un trabajo B.

Así, con un dato booleano es suficiente: si llega un TRUE, hacemos la opción A.

Si por el contrario llega un FALSE, realizaremos el B…

Bien ¿no?

Sobre el papel, así es. Con un dato booleano debería ser suficiente.

El problema, es que ante la inexistencia de información (un FALSE), se realiza una acción, lo cual puede ser un problema.

Esto puede suceder porque por ejemplo, se haya interrumpido la comunicación o el equipo emisor esté apagado.

Este problema lo he sufrido entre un PC y un PLC, en el que el PC mandaba una colección de datos a unos servos Fanuc en función de si un bit enviado por el PLC estaba a 1 o estaba a 0.

A veces, sin motivo aparente, equivocaba el envío.

Todo parecía estar bien cuando acudíamos a ver qué había pasado, pero lo cierto es que había enviado la colección equivocada.

Sospechamos que en algunas circunstancias, la comunicación entre el PC y el PLC se interrumpía, y por tanto, al PC no le llegaba información actualizada.

Por tanto, no debes usar datos booleanos para realizar dos acciones, sino para tomar decisiones del estilo:

  • False: no se hace nada y el estado es seguro para la máquina, proceso y personas.
  • True: se hace la acción requerida. Segura para las personas y el proceso también (lógicamente).

Para toma de decisiones donde siempre hay una acción a realizar, lo mejor es usar un número, de tal forma que:

  • 0: Como en el caso anterior, no se hace nada.
  • 1: Opción A
  • 2: Opción B

Lógicamente será válido si necesitas más de 2 opciones simplemente cambiando el valor numérico que envías.

Pero en definitiva, lo que te quiero transmitir es que siempre que se envíen datos, si la comunicación no se establece por la razón que sea, las acciones ejecutadas por el autómata siempre deben ser seguras.

La forma correcta de realizar un envío y recepción de datos

Siguiendo con el envío de información booleana, te voy a contar como hemos resuelto un problema de marcaje de piezas.

Para asegurarnos que una pieza queda marcada desde una aplicación de Windows realizada en .NET a través de un OPC, lo hemos resuelto de esta forma:

  • Cuando se tiene que marcar la piezas, desde el OPC se pone un bit a TRUE.
  • Del lado del PLC, cuando recibe esta señal booleana,  tratamos este dato para marcar la pieza para mandarla a inspeccionar
  • Ponemos un bit diferente a uno de vuelta (acknowledge o reconocimiento) para que el OPC sea consciente de que su información ha llegado.
  • El PC entonces quita su envío volviéndolo a FALSE.
  • De nuevo en el PLC,  ponemos a cero nuevamente el Ack porque recibe un cero en el envío desde el PC.

Como resumen, sería como se indica en la siguiente imagen:

https://programacionsiemens.com/wp-content/uploads/2017/03/envío-y-recepción-de-datos.png

Este esquema es aplicable a un envío con un número y un bit de reconocimiento del envío. Solamente que tras el Ack, el envío cambiará el valor X por un 0, indicando que el envío ha terminado.

¿Es necesario hacer esto siempre?

No, no siempre.

Si es un dato para visualizar o un dato poco relevante, que porque llegue un poco más tarde no tiene una importancia capital, se puede simplificar y simplemente enviar los datos y los dioses de los OPC proveerán.

Con tener una señal a modo de watchdog, será suficiente para saber si la comunicación está activa.

Un watchdog siemplemente es un valor que cambie.

Es decir, que ambos interlocutores tienen que ver que lo que envían y lo que reciben, no es lo mismo.

Para ello, simplemente lo que se hace es que uno de los interlocutores reenvíe el dato del watchdog y el otro interlocutor lo que hará es invertir el valor.

Por ejemplo, en este caso se puede hacer simplemente con un bit:

  • Uno de los interlocutores reenvía lo que le llega de su pareja
  • El otro interlocutor cambia el sentido del bit.

Volviendo al ejemplo entre el PC y el PLC, sería algo así:

Cómo establecer correctamente el envío y recepción de datos entre dos PLC- 2

Así, desde cualquiera de los lados, PC o PLC como en este caso, las aplicaciones tienen que ver que dicho bit se mueve más que los precios, y que si se queda fijo, es que la comunicación ha caído.

Este watchdog lo puedes hacer también numérico: uno de los interlocutores envía lo que recibe, y el otro a lo que recibe, le suma una unidad.

Lo importante es que el valor, sea el que sea, varíe en el tiempo.

¿Qué te ha parecido?

Espero que te haya servido para aclarar cómo puedes realizar la estructura de comunicación entre dos interlocutores.

¿sueles hacerlo así también?

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

    32 Comentarios

  1. Mario ramirez says

    8 marzo, 2017 at 18:59

    ok bueno tienes mucha experiencia.

    Responder
    • Iñigo Gútiez says

      8 marzo, 2017 at 19:01

      Gracias Mario.
      Espero que te sea útil y que si en algún momento tienes algún problema de este tipo, puedas acordarte de mi y de este post.
      Saludos!

      Responder
  2. Antonio Fernandez Fernandez says

    8 marzo, 2017 at 19:04

    Me ha parecido perfecto, en mi fabrica tanto mando datos por OPC como por i-divice.

    Responder
    • Iñigo Gútiez says

      8 marzo, 2017 at 20:34

      Muchas gracias Antonio. ¿Lo tienes resuelto de otra forma?

      Responder
  3. Juan Chavez says

    8 marzo, 2017 at 20:20

    Hola Iñigo, felicidades por tu esfuerzo y el contenido que publicas. No me pierdo las actualizaciones que envías a mi correo electronico y espero participar en los cursos próximamente.

    Por el momento tengo una pregunta, que OPC Server utilizas en tus proyectos, existe alguno gratuito o que forme parte del paquete de TIA Portal ? o se puede hacer con VB.Net ?

    Muchas gracias de antemano desde México.

    Responder
    • Iñigo Gútiez says

      8 marzo, 2017 at 20:46

      Hola Juan.
      Muchas gracias por el apoyo.
      Nosotros usamos casi exclusivamente el OPC de Siemens (Paquete Simatic Net).
      Pero hay otros buenos como Matrikon o Kepware
      En cuanto a OPC gratuitos, la verdad es que no te puedo decir, pero no sé si habrá alguno, al fin y al cabo, esta gente vive de vender licencias.
      En el caso de Siemens, necesitas el paquete Simatic Net, con el que viene el OPC.
      Pero no es un software que venga con VB ni nada por el estilo.
      Saludos

      Responder
  4. rufino says

    8 marzo, 2017 at 23:14

    Me parece interesante todo que espones,estoy aprendiendo mucho con tigo,e intentado q mi jefe me pague el curso,gracias

    Responder
    • Iñigo Gútiez says

      8 marzo, 2017 at 23:19

      Genial Rufino. Me alegra mucho que te ayuden mis post.

      Saludos y suerte con tu jefe!

      Responder
  5. Iago Vázquez says

    8 marzo, 2017 at 23:23

    muchas gracias Iñigo!

    Esto me va a ser muy útil!!

    Responder
    • Iñigo Gútiez says

      8 marzo, 2017 at 23:28

      Pues a aplicarlo Iago!
      Saludos y gracias por comentar!

      Responder
  6. Jesus Bueno says

    8 marzo, 2017 at 23:24

    Lo he oido mencionar alguna vez!! Ahora mismo estoy dando un curso de comunicacion que me esta viniendo muy bien. Con TIAPortal, plcs con plcs, comunicacion profinet, con pantallas y alg u n equipo profibus. Muy interesante. Estamos en como comunicar las pantallas y los plcs en un proyecto con TIA portal. No.se si en el curso de TIAPortal que tienes se explican esos pasos.
    De todas formas a mi m viene muy bien lo que publicas, es perfecto para mi situacion, sin ser un experto, con una base y consultando tus publicaciones aprendo mucho y consigo seguridad.
    Un saludo

    Responder
    • Iñigo Gútiez says

      8 marzo, 2017 at 23:27

      Genial Jesús. Dale fuerte.
      En el curso de TIA se ven muchas cosas. La parte de comunicación es la última que está sin hacer aun
      Saludos

      Responder
      • Giovanni says

        9 marzo, 2017 at 0:52

        Excelente, muchas gracias por la info, me será útil cuando lo necesite.
        Al igual me gustaría que algún día explicaras como enlazar Excel con un s7-1200 para registrar datos como variables análogas o digitales,.
        Saludos desde Chile.

        Responder
  7. Paulino says

    10 marzo, 2017 at 2:30

    Saludos Iñigo, muy interesante el tema,podría aplicarse
    también esto cuando un plc se comunica con variador de frecuencia en profibus y como se realizaría?

    Responder
    • Francisco Diaz Meco says

      10 marzo, 2017 at 15:28

      Muy interesante y provechoso

      Gracias Iñigo

      Responder
      • Iñigo Gútiez says

        11 marzo, 2017 at 15:12

        A ti Francisco!

        Responder
    • Iñigo Gútiez says

      11 marzo, 2017 at 15:14

      No, con un variador de frecuencia no existe este tipo de comunicación.
      No se como se hace en todos los variadores, pero por ejemplo en los de Siemens, la vigilancia se hace en el lado del plc y si en X tiempo no recibe la trama de los comandos, da una alarma.

      Saludos

      Responder
  8. Afonso Franco says

    11 marzo, 2017 at 15:04

    Muito boa explicação.
    Grato pelos conhecimentos.

    Responder
    • Iñigo Gútiez says

      11 marzo, 2017 at 15:11

      Muito obrigado Alfonso!

      Responder
  9. Paulino Cid says

    11 marzo, 2017 at 18:11

    Gracias Iñigo.
    Este problema tiene una maquina que estoy revisando y constantemente se alarman 4 variadores siemens simovert vc, que están en profibus, en la red hay 12 variadores, y de acuerdo al manual de alarmas del variador, indica que es una falla de comunicación de datos, lo que comentas es cierto se va alarma el variador por que no no recibe ni envia los telegramas en tiempo correcto, que puedes sugerirme para darle solución a este problema, puedo hacer una modificación en el programa plc para que no suceda esto?

    Responder
    • Iñigo Gútiez says

      11 marzo, 2017 at 18:17

      Hola Paulino,
      Mira en el manual porque si son como los Micromaster tiene la posibilidad de configurar el tiempo de respuesta de telegrama.
      Nosotros tuvimos este problema al de unos años de que la maquina estuviera funcionando y se resolvió aumentando el tiempo de telegrama.
      Saludos

      Responder
      • Paulino says

        25 marzo, 2017 at 22:44

        Saludos lñigo, se puede utilizar la función pid para controlar la velocidad de un motor de dc, con una señal de salida analogica de 0 a 10v como referencia de velocidad al drive que controla el motor?

        Responder
        • Iñigo Gútiez says

          26 marzo, 2017 at 12:13

          Sí, se puede siempre y cuando el variador admita la entrada 0-10VDC. Luego ya toca configurar y programarlo todo correctamente, pero no hay motivo para no poder hacerlo.

          Saludos

          Responder
          • Paulino Cid says

            27 marzo, 2017 at 4:48

            Gracias Iñigo, si efectivamente este es variador antiguo y si tiene entre otras opciones como referencia de velocidad una entrada analógica de 0-10v
            También el variador tiene una salida analógica de 0-10v, la cual utiliza para enviar la velocidad medida, esta referencia podría servir en la funcion PID como el valor medido? otra pregunta en una entrada o salida analógica que formato de valores utiliza el plc?

            Gracias por responder mis preguntas y opiniones te felicito por tu pagina.

  10. José Luis Sánchez Linares says

    12 marzo, 2017 at 16:04

    Yo en mi caso se me presento el mismo problema y lo resolví mandando un entero el cual cuando ejecutaba la acción requerida ponía movia un 0 y esperaba a que volviera a mandar otro entero.

    Responder
  11. Freddy says

    27 marzo, 2019 at 18:59

    Hola Inigo, soy nuevo en esto. Cuando se deben utilizar dos plc? He escuchado hablar de plc maestro-esclavo, pero no entiendo en que tipo de procesos se dben utilizar. gracias.

    Responder
    • Iñigo Gútiez says

      27 marzo, 2019 at 23:51

      No hay una respuesta a eso más allá de que normalmente será cuando sean dos máquinas que las necesitas comunicar, y una forma es maestro esclavo.
      Pero no busques una regla general para ello, porque no la hay.

      Responder
  12. Israel says

    30 junio, 2019 at 23:01

    Tengo un plc fanuc el cual marca run y un rack tipo extension que maneja unos servos que no marca run pero no me deja comunicar cual seria el problema

    Responder
    • Iñigo Gútiez says

      30 junio, 2019 at 23:16

      Lo siento, no tengo experiencia con los PLC de Fanuc.

      Responder
  13. Rosalía says

    17 abril, 2020 at 15:17

    Buenas tardes, estoy intentando comunicar Robotstudio con con TiaPortal (wincc), todo simulado.
    Utilizando el cliente MatrikonOPC con robotstudio no he tenido problema pero con TiaPortal no consigo comunicar.
    ¿Podrías orientarme un poco sobre el tema?

    Gracias. Un saludo.

    Responder
    • Iñigo Gútiez says

      17 abril, 2020 at 15:18

      No, lo siento, no he trabajado con ello.

      Responder
  14. FRANCISCO says

    26 agosto, 2022 at 5:17

    EXCELENT

    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