¡Esta es una revisión vieja del documento!
[Robótica] Comunicaciones: Conceptos generales
Contenidos- Documentos PDF
- 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.
-
- Apartado 8.5 Socket Messaging [616-1]
-
- Apartado 1.19 Funciones para cadenas de caracteres
-
- En la sección de Tipos de datos buscar la palabra
socketpara comprobar las múltiples instrucciones con esa palabra.
Vídeos
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
- Programa Python TCPOpenComm.py para usar el PC como cliente:
- TCPOpenComm.py
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()