Usando Ethernet, dos de los protocolos más usados a lo largo y ancho de internet son TCP y UDP.
Se usan para multitud de otros protocolos:
- TCP se usan en HTTP o Telnet entre otros.
- UDP se usan en DHCP o VoIP, entre otros también.
Y cómo no, ambos los podemos usar con nuestros PLC Siemens.
Pero empecemos por el principio con algunas definiciones y aclaraciones.
Contenido
¿Qué es TCP?
TCP es el acrónimo de Transmission Control Protocol.
Se usa para enviar y recibir mensajes entre dos equipos en una red.
Como bien dice en la wikipedia: [..] El protocolo garantiza que los datos serán entregados en su destino sin errores y en el mismo orden en que se transmitieron[..]
Esto es una grandísima diferencia entre TCP y UDP como luego veremos.
A grandes rasgos, la conexión TCP necesita el establecimiento de una conexión entre ambas máquinas.
El solicitante de la comunicación será el cliente y el receptor de dicha comunicación el servidor. Por eso se le suele llamar entorno Cliente-Servidor.
La comunicación se realiza en ambas direcciones enviando datos desde el cliente al servidor y del servidor al cliente.
Cuando visitas este blog, tu PC sería el cliente, y la máquina donde está alojado el blog, el servidor (por eso se le llama servidor).
Es decir, tú, a través del navegador del PC, solicitas una conexión con el servidor donde está alojada la web, y esta responde enviándote la página que estás leyendo en estos momentos.
Esto es una tremenda simplificación que se aleja bastante de la realidad.
Hay muchísimos más equipos que juegan en esta comunicación, conectados entre sí haciendo de intermediarios.
Vamos, que no te conectas directamente, pero para el ejemplo, nos vale.
Espero que se entienda el concepto.
Nos es válido porque cuando realices una comunicación TCP y UDP en TIA Portal, normalmente será entre dos equipos directamente.
A lo sumo, colocarás un switch donde concentrar todas las conexiones. Así, todos los equipos podrán comunicar entre sí, si fuera necesario.
Si quieres tener información más técnica sobre TCP, puedes visitar esta web sobre el protocolo TCP
¿Qué es UDP?
Tomando la wikipedia como referencia:
User Datagram Protocol (UDP) es un protocolo del nivel de transporte basado en el intercambio de datagramas (Encapsulado de capa 4 o de Transporte del Modelo OSI). Permite el envío de datagramas a través de la red sin que se haya establecido previamente una conexión, ya que el propio datagrama incorpora suficiente información de direccionamiento en su cabecera. Tampoco tiene confirmación ni control de flujo, por lo que los paquetes pueden adelantarse unos a otros; y tampoco se sabe si ha llegado correctamente, ya que no hay confirmación de entrega o recepción.
Es decir, un poco más en cristiano:
- Es un lujo de datos unidireccional.
- El envío de los datos de una máquina a la otra, se hace sin que haya habido una conexión previa entre ambas máquinas.
- La máquina receptora de la información, no dará cuenta sobre esta recepción al emisor.
- El emisor no tiene ni idea si los datos están llegando, o si llegan correctamente.
Podrías pensar que menuda joyita de comunicación.
El emisor lanza los datos, y literalmente se desentiende de si llegan o no al receptor.
Luego veremos que puede tener múltiples aplicaciones para nuestros autómatas Siemens.
Si quieres más información, puedes encontrar más aquí sobre el protocolo UDP
Comunicación TCP y UDP en TIA Portal
Vale.
Todo esto está muy bien, pero ¿qué hay de mis PLC? ¿Para qué me va a servir la comuniación TCP y UDP en TIA Portal?
Imagino que el TCP lo tienes claro: comunicación entre dos PLC que se envían datos entre ellos.
Guay. Puedes comunicar dos autómatas S7-1200 (por ejemplo) sin más que tirar un cable de ethernet entre ellos.
Ojo porque no es una comunicación maestro-esclavo, sino una simple comunicación entre dos iguales.
¿Es genial o no?
Las aplicaciones son las típicas de comunicar dos máquinas que estén en la misma línea y se tengan que mandar datos de producción, por ejemplo.
Pero ojo, porque puedes realizar una comunicación TCP con un PC perfectamente creando una aplicación en .Net.
Para mi gusto es mucho más engorroso que hacerlo a través de un OPC, pero puedes hacerlo con tiempo y una caña.
Y te ahorras una licencia de OPC.
Eso sí, con el coste de oportunidad que supone, creo que usar el OPC es la mejor opción.
Por algo lo inventaron.
Volviendo a la comunicación entre dos PLC, esta será usando una serie de bloques para crear esta comunicación.
Podrás usar las librerías Open User Comunication de TIA Portal para intercambiar datos.
Hay muchas funciones, cada una con sus peculiaridades (TSEND_C, TSEND, TUSEND…) unas que necesitan del bloque TCONT para establecer la comunicación, y otras no.
Además, podrás realizar en función del bloque usado, multicast o broadcast si tu PLC o tarjeta lo soportan.
¿Qué es broadcast?
El broadcast no es más que un método de transmisión de datos de uno a muchos.
En este caso de uno a todos los participantes de la red.
¿Y el multicast?
El multicast, es un método de comunicación de uno a varios.
Tienes más información sobre ambos métodos en esta página de métodos de transmisión
¿Para qué usamos UDP en TIA Portal?
Hemos visto más arriba que UDP es una comunicación peculiar. Pero muy útil en algunos casos para nuestras automatizaciones.
Por ejemplo, podemos usarla en registros (temperaturas, presiones etc) entre el PC y un Scada.
No hace falta que nuestro PC esté encendido o no para que el PLC envíe los datos de una temperatura.
Si la aplicación del PC está activa, pues registraremos la temperatura, y si no, pues el PLC seguirá enviando este dato de forma continua, le estén oyendo o no.
Otra posible aplicación es si no tienes un servidor de hora.
Puedes usar una comunicación UDP para que uno de los PLC haga este servicio, mandando en broadcast la hora cada minuto por ejemplo.
De esta forma, los PLC que estén escuchando, podrán actualizar su hora.
De tal forma que cambiando la hora de un PLC, actualizas la de todos.
Como ves, no vas a usar UDP para información super sensible.
Si ambas máquinas tienen que saber lo que la otra está haciendo, usarás TCP u otros métodos de comunicación.
Pero para cosas más sencillas y menos trascendentes, UDP puede ser una buena y simple solución.
¿Qué te ha parecido?
Espero que si no estás muy puesto en comunicaciones esta breve introducción te haya servido de aperitivo.
Recuerda que todos estos conceptos son tratados en el bloque 7 del curso de TIA Portal.
Si necesitas que alguien te eche una mano, puede que este bloque sea lo que estás buscando.
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.
20 Comentarios
Grata información Iñigo. Aún no he tenido momento pero seguro que los bloques de.comunicaciones del curso serán muy útiles.
Un saludo
Así lo espero Rubén!
Muchas gracias por el Aporte, me ha servido mucho mas para entender la comunicacion y sus aplicaciones, en mi caso yo uso OPC, pero creo que puede ser una buena opcion para aplicaciones con datos no sensibles
Saludos
Abisai
Si, el UDP se puede usar en cosas no complejas y no críticas. Saludos!
El mundo de las comunicaciones me apasiona espero mas contenido iñigo.
Seguiremos haciendo cositas Enrique. Saludos!
Muy bien, esas pequeñas «grandes» notas. Sin duda son el «perejil» de tus buenos «platos de vídeo». Gracias, y que sigan surtiendo las recetas de tus cursos.
Habrá muchos platos en el menú del bloque 7 del curso. Espero que sea de vuestro agrado jaja.
Interesante informacion
Gracias César!
Lo tenía un poco olvidado esto del UDP, la verdad no me acordaba que significaba cada uno. El caso del broadcast estuve delante de un problema dónde un dispositivo entraba en una red para ver si respondía en modo broadcast pero al final , parecía ser fallo de hardware, del propio dispositivo.
Buenas tengo una duda. Estoy intentando hacer un wake on lan desde el plc a un pc y debo enviar un paquete que contenga una cadena de 6 bytes de valor 255 en hexadecimal (“FF FF FF FF FF FF”), seguida de 16 repeticiones de la dirección MAC del ordenador. Sabes como realizarlo??
Yo lo que haría es realizar un envio UDP y ver si funciona. Si puedo algún día, intentaré hacer el ejemplo ya que nunca lo he necesitado.
Saludos
Hola Íñigo, ¿hay alguna posibilidad de usar TCP con nombre de dominio en lugar de IP? Usando las instrucciones Open User Comms no encuentro la manera de editar un TCON_PARAM con la remote_address distinta a una IP fija… Por lo menos para la S71200 1215C.
Básicamente, la aplicación es la de una baliza de sensores que cada cierto tiempo envía los datos recopilados (una variable string que contiene un json válido) a un servidor, abriendo una comunicación TCP y escribiendo en dicho socket. El problema está en que ese servidor podría cambiar de IP, y tendría que cambiar la IP del TCON_PARAM, y el equipo está en una ubicación remota. Todo esto, hacerlo sin TeleService.
Muchas gracias de antemano
Que yo sepa, no se puede mas que con IP, al menos en los S7-1200.
Que yo sepa, solo se puede con IP, al menos con los S7-1200.
Hola, en el articulo dices «creo que usar el OPC es la mejor opción.Por algo lo inventaron»
Pero estas generalizando demasiado. Se te olvida mencionar que opc es super lento en comparacion a la velocidad que podrias obtener si no usas opc. Asi que mejor o peor solo depende del caso de uso concreto…
Gracias por el comentario. Me refería a la comunicación entre un PLC y un PC especialmente para crear un HMI, cosa que no queda claro en el artículo. Lo corrijo. En cualquier caso, efectivamente es una generalización, porque generalmente, es la opción más acertada y más usada.
Cuando digo que por algo lo inventaron, es precisamente, porque hasta la aparición del OPC, la comunicación entre un PLC y un PC, debido a que los protocolos eran propietarios, se hacía muy complicado mezclar hardware con software. Esa es la gracia del OPC, bajo mi punto de vista.
Ahora, siempre habrá casos en los que haya que hacer otro tipo de soluciones para comunicar un PC con el PLC. Pero por cada solución propietaria y add-hoc, seguramente cuentes muchos muchos más proyectos desarrollados con una base OPC.
En cualquier caso, es mi punto de vista y por eso digo «creo» que es la mejor opción.
¿Tienes algún ejemplo para comunicar un S7-1200 con un servidor WEB vía Internet? Requiero que desde una aplicación que corre en un servidor remoto poder cambiar dinámicamente los valores de 4 variables del PLC S7-1200 vía Internet
No, lo siento, no tengo ningún ejemplo porque la gracia no está en la configuración del plc sino como securizar la comunicación y que sea segura. Eso es terreno de IT y ahí prefiero no meterme.