PUT y GET: enviar datos entre dos PLC Siemens

PUT y GET: enviar datos entre dos PLC Siemens

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 lo haces simplemente y te olvidas.

En general parece 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 arruina el envío y recepción de datos. Es ahí cuando empieza tu pesadilla.

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

Empecemos por un error que he visto alguna vez.

Imagina que necesitas un dato. Dependiendo del valor que tome, la máquina receptora hará un trabajo A o un trabajo B.

Con un dato booleano es suficiente: si llega un TRUE, hacemos la opción A. Si llega un FALSE, hacemos la B.

Bien ¿no?

Sobre el papel, así es. Con un booleano debería bastar.

El problema es que ante la inexistencia de información (un FALSE) se realiza una acción, y eso puede ser un problema. Por ejemplo, porque se haya interrumpido la comunicación o el equipo emisor esté apagado.

Este problema lo he sufrido entre un PC y un PLC: el PC mandaba una colección de datos a unos servos Fanuc según si un bit enviado por el PLC estaba a 1 o a 0. A veces, sin motivo aparente, equivocaba el envío. Todo parecía estar bien cuando íbamos a mirar 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 al PC no le llegaba información actualizada.

Por tanto, no uses booleanos para elegir entre dos acciones. Úsalos para decisiones del estilo:

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

Para decisiones donde siempre hay una acción que hacer, lo mejor es usar un número:

  • 0: igual que antes, no se hace nada.
  • 1: opción A.
  • 2: opción B.

Si necesitas más de dos opciones, solo cambias el valor numérico que envías.

La idea es clara: siempre que envíes datos, si la comunicación falla por lo que sea, las acciones del autómata deben ser seguras.

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

Siguiendo con los booleanos, te cuento cómo hemos resuelto un problema de marcaje de piezas.

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

  • Cuando hay que marcar la pieza, desde el OPC se pone un bit a TRUE.
  • Del lado del PLC, al recibir esa señal booleana, procesamos el dato. Marcamos la pieza para mandarla a inspección.
  • Ponemos otro bit a uno de vuelta (acknowledge o reconocimiento) para que el OPC sepa que su información ha llegado.
  • El PC entonces pone su envío a FALSE.
  • De nuevo en el PLC, ponemos a cero el Ack porque recibe un cero del PC.

Resumiendo, como se ve en la imagen:

/assets/uploads/2017/03/envío-y-recepción-de-datos.png

Este esquema vale también para un envío con un número y un bit de reconocimiento. Tras el Ack, el envío cambia el valor X por un 0, indicando que ha terminado.

¿Hay que hacer esto siempre?

No, no siempre.

Si es un dato para visualizar o algo poco relevante –que porque llegue un poco más tarde no tiene importancia–, puedes simplificar y solo enviar los datos. Que los dioses del OPC provean.

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

Un watchdog es simplemente un valor que cambia. Ambos interlocutores tienen que ver que lo que envían y lo que reciben no es lo mismo.

Para ello, uno de los interlocutores reenvía el dato del watchdog y el otro lo invierte.

Por ejemplo, con un bit:

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

Volviendo al ejemplo PC-PLC, sería algo así:

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

Desde cualquiera de los lados (PC o PLC), las aplicaciones tienen que ver que ese bit se mueve, y si se queda fijo, la comunicación ha caído.

Este watchdog puede ser numérico: uno envía lo que recibe, y el otro suma una unidad a lo que recibe. Lo importante es que el valor varíe en el tiempo.

¿Qué te ha parecido?

Espero que te sirva para aclarar cómo estructurar la comunicación entre dos interlocutores.

¿Sueles hacerlo así también?

Recuerda que puedes apuntarte en Guorker.com, donde con una cuota mensual tienes tarifa plana en todos los cursos disponibles.

Comentarios (32)
Mario ramirez
ok bueno tienes mucha experiencia.
Iñigo Gútiez
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!
Antonio Fernandez Fernandez
Me ha parecido perfecto, en mi fabrica tanto mando datos por OPC como por i-divice.
Iñigo Gútiez
Muchas gracias Antonio. ¿Lo tienes resuelto de otra forma?
Juan Chavez
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.
Iñigo Gútiez
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
rufino
Me parece interesante todo que espones,estoy aprendiendo mucho con tigo,e intentado q mi jefe me pague el curso,gracias
Iñigo Gútiez
Genial Rufino. Me alegra mucho que te ayuden mis post. Saludos y suerte con tu jefe!
Iago Vázquez
muchas gracias Iñigo! Esto me va a ser muy útil!!
Iñigo Gútiez
Pues a aplicarlo Iago! Saludos y gracias por comentar!
Jesus Bueno
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
Iñigo Gútiez
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
Giovanni
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.
Paulino
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?
Francisco Diaz Meco
Muy interesante y provechoso Gracias Iñigo
Iñigo Gútiez
A ti Francisco!
Iñigo Gútiez
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
Afonso Franco
Muito boa explicação. Grato pelos conhecimentos.
Iñigo Gútiez
Muito obrigado Alfonso!
Paulino Cid
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?
Iñigo Gútiez
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
Paulino
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?
Iñigo Gútiez
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
Paulino Cid
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.
José Luis Sánchez Linares
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.
Freddy
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.
Iñigo Gútiez
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.
Israel
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
Iñigo Gútiez
Lo siento, no tengo experiencia con los PLC de Fanuc.
Rosalía
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.
Iñigo Gútiez
No, lo siento, no he trabajado con ello.
FRANCISCO
EXCELENT