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




