Saltar al contenido principal

DOCUMENTACIÓN CON IA

¿Qué desea saber?

Integración de Universal Robot (UR) a través de TCP/IP

Para integrar el Universal Robot (UR) con el sistema de cámaras, ambos dispositivos deben estar conectados a la misma red local. La comunicación se establece utilizando sockets TCP/IP; no se requiere ninguna activación adicional más allá de asegurar que ambos dispositivos compartan la misma red.

En esta configuración, la comunicación opera como una solicitud y respuesta entre el robot y la cámara. La cámara actúa como el servidor y el robot funciona como el cliente.

Flujo de Comunicación Típico

  1. Abra un socket desde el robot.

  2. Envíe información del robot a la cámara.

  3. La cámara lee la información y la traduce al formato requerido (por ejemplo, cadena, ASCII, byte).

  4. La cámara realiza una función utilizando esa información y devuelve una respuesta a través de TCP.

  5. El robot espera la respuesta TCP. Si no se recibe respuesta dentro de un par de segundos, el robot continuará su flujo sin la respuesta.

nota

Se recomienda agregar una condición para confirmar que se devuelven datos.

  1. El robot cierra la comunicación del socket.

Configuración de Red y Firewall

Configuración de Red

  • Asegúrese de que tanto el robot UR como la cámara estén conectados a la misma red local.
  • Asigne direcciones IP dentro de la misma subred para facilitar la comunicación.

Configuración del Firewall

  • Configure las reglas del firewall en ambos dispositivos para permitir la comunicación TCP/IP a través de los puertos designados.
  • Verifique que no haya políticas de red que bloqueen la comunicación requerida.

URScript y Programación de Sockets - UR

Formatos de Datos

  • La comunicación puede utilizar varios formatos de datos como cadenas, ASCII o bytes.
  • Asegúrese de que ambos dispositivos estén de acuerdo en el formato de datos para evitar malentendidos.

Funciones de URScript para Comunicación de Sockets

  • socket_open(address, port, "socket_name"): Abre una conexión de socket a la dirección y puerto especificados.
  • socket_send_string("message", "socket_name"): Envía un mensaje de cadena a través del socket.
  • socket_send_byte(value, "socket_name"): Envía un valor byte a través del socket.
  • socket_read_string("socket_name"): Lee un mensaje de cadena del socket.
  • socket_read_ascii_float(number, "socket_name"): Lee un mensaje de float ASCII del socket.
  • socket_read_byte("socket_name"): Lee un valor byte del socket.
  • socket_close("socket_name"): Cierra la conexión del socket.
# Open socket connection to the camera server
socket_open("192.168.0.2", 3000, "camera_socket")

# Send a string message
socket_send_string("Request Data", "camera_socket")

# Alternatively, send a byte value
socket_send_byte(42, "camera_socket") # Sends the byte value 42

# Read the response as a string
response = socket_read_string("camera_socket")

# Read the response as a byte
response_byte = socket_read_byte("camera_socket")

# Close the socket connection
socket_close("camera_socket")

Configuración como Servidor TCP/IP - OV80i

Configuración del Servidor

  • Configure la cámara para escuchar conexiones TCP entrantes en un puerto específico (por ejemplo, puerto 3000).
  • Asegúrese de que la dirección IP de la cámara sea estática o conocida por el robot para una comunicación consistente.

Análisis de Datos

  • Implemente lógica en la cámara para leer datos entrantes del robot.
  • Traduza y procese los datos según sea necesario para las funciones de la cámara.
  • Prepare y envíe la respuesta adecuada de vuelta al robot.

Lógica de Node-RED para la Integración del Robot UR

Para integrar el Universal Robot (UR) con su sistema utilizando Node-RED, puede crear un flujo simple que procese mensajes TCP entrantes, realice acciones basadas en los datos recibidos y responda al robot si es necesario.

Ejemplos de Flujos

Aquí hay un ejemplo de flujo para clasificación, en el que la cámara verificará una condición completa de Aprobado/Fallido de la pieza después de un disparador y enviará la respuesta de vuelta al robot.

Ejemplo de Flujo de Clasificación del Robot UR

Flujo 1:

  • TCP IN: Abre un servidor TCP en Node-RED en el puerto 30000.
  • Función 1 (Lee UR): Convierte los datos entrantes del robot UR a una cadena. Para que este flujo funcione, el UR debe enviar la cadena "Trigger".
  • Switch: Si la cadena es "Trigger", el flujo continúa; si es otra cosa, el flujo se detiene y el robot UR experimentará un tiempo de espera.
  • HTTP Request: Envía una solicitud a un endpoint (API Trigger) para activar el disparador de la cámara.
  • Función 2 (Leer Datos): Recupera datos de la memoria global (1 o 0) y los formatea correctamente para la lectura ASCII en el robot UR.
  • TCP Response: Envía la información de vuelta al robot.

Flujo 2:

  • Comando de Disparo: Este flujo comienza con el comando de disparo.
  • Todas las Salidas de Bloque: Genera información de la última imagen tomada (disparada en el Flujo 1).
  • Lógica del Bloque de Clasificación: Establece condiciones para cada ROI (Región de Interés) para determinar el estado de Aprobado o Fallido. (Haga clic en el bloque para configurarlo.)
  • Función 3 (Configuración de Información): Convierte la condición de Aprobado/Fallido en 1 o 0 y la almacena en la memoria global para una fácil traducción al robot UR.

Consideraciones

  • Continuidad del Flujo: Asegúrese de que todos los nodos que procesan los datos entrantes estén conectados secuencialmente en el mismo flujo. Si el flujo se divide en caminos paralelos, la respuesta TCP puede no funcionar correctamente.
  • Escenario Sin Respuesta: Si no se necesita respuesta, puede omitir el nodo de respuesta TCP. El robot debe estar configurado para manejar casos en los que no se recibe respuesta dentro de un cierto tiempo de espera.

Manejo de Errores y Robustez

Tiempos de Espera y Reintentos

  • Implemente tiempos de espera para las operaciones de socket para evitar que el robot espere indefinidamente.
  • Incluya mecanismos de reintento en caso de problemas temporales de red.

🔗 Ver También