[Robótica] Comunicaciones: Conceptos generales

Contenidos

Documentos PDF

Conexión remota

Protocolos de comunicación para integración de robots y PLCs (2023)

TFG - Desarrollo de un entorno con HMI y PLC Siemens para tareas de paletizado de un robot industrial

Manuales ABB

Parámetros del sistema: Manual de referencia técnica Página 38 y siguientes.

De forma predeterminada, el puerto X5 (LAN 3) se configura como una red aislada, lo cual permite la conexión del controlador de robot a una red externa. Típicamente, los PLC que controlan varios controladores de robot se conectan a LAN 3.

Robotware: Opciones y funciones (2023)

Apartado 8.5 Socket Messaging [616-1]

Descripción general de RAPID: Manual de referencia técnica (2021)

Apartado 1.19 Funciones para cadenas de caracteres

Instrucciones, funciones y tipos de datos de RAPID: Manual de referencia técnica

En la sección de Tipos de datos buscar la palabra socket para comprobar las múltiples instrucciones con esa palabra.

Vídeos

1Instrumentación - Protocolos de Comunicación Industrial

2ABB RobotStudio con Siemens por Socket / Robot ABB como servidor ✔

3Comunicación RobotStudio Protocolo TCP/IP (sockets) / Robot ABB como servidor ✔

4Open User Communication (TCON, TSEND, TRCV) con PLC S7-1200, TIA PORTAL y Python con protocolo TCP / PLCs Siemens ✔

Anotaciones sobre el vídeo 4 de PLCs

En este vídeo se usa para el servidor un PC con un programa Python pero, excluyendo esa parte, explica muy bien los pasos a realizar en el TIA Portal para configurar el PLC Siemens como cliente. Es por ello que con este vídeo pretendemos resolver la mitad del problema: La configuración del lado cliente de un PLC Siemens S7-1200 para luego poder comunicarse con un servidor, que en nuestro caso será el robot de ABB. Las configuraciones están indicadas para el TIA Portal v15.

Material adjunto al vídeo

Proyecto para TIA Portal v15

Programa Python TCPOpenComm.py para usar el PC como cliente:

import socket import sys socketc=socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Crear Socket server_address = ('192.168.0.241', 2020) #Asignar IP y puerto para servidor socketc.bind(server_address) #TCP 2020 print('starting up on {} port {}'.format(*server_address)) socketc.listen(1) comando='1' while True: # Wait for a connection print("Esperando conexion") connection, client_address = socketc.accept() try: print("Conexion desde IP...", client_address) # Recibir datos en chuncks (segmentos) while True: data = connection.recv(4) print("recibido {!r}".format(data)) if data: print("Retornando datos al cliente") connection.sendall(comando) else: print("No hay datos desde cliente...", client_address) break finally: # Cerrar la conexion connection.close()