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
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:
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í:
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.
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.
32 Comentarios
ok bueno tienes mucha experiencia.
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!
Me ha parecido perfecto, en mi fabrica tanto mando datos por OPC como por i-divice.
Muchas gracias Antonio. ¿Lo tienes resuelto de otra forma?
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.
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
Me parece interesante todo que espones,estoy aprendiendo mucho con tigo,e intentado q mi jefe me pague el curso,gracias
Genial Rufino. Me alegra mucho que te ayuden mis post.
Saludos y suerte con tu jefe!
muchas gracias Iñigo!
Esto me va a ser muy útil!!
Pues a aplicarlo Iago!
Saludos y gracias por comentar!
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
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
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.
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?
Muy interesante y provechoso
Gracias Iñigo
A ti Francisco!
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
Muito boa explicação.
Grato pelos conhecimentos.
Muito obrigado Alfonso!
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?
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
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?
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
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.
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.
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.
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.
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
Lo siento, no tengo experiencia con los PLC de Fanuc.
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.
No, lo siento, no he trabajado con ello.
EXCELENT