Comunicación RS 485

Hola, me gustaría saber cómo puedo realizar la comunicación entre un UR3e y un Arduino mediante un integrado Max 485 y la comunicación half duplex, para que tanto el robot como el Arduino puedan intercambiar información. He visto por internet que hay una URcap denominada RS485, pero no soy capaz de encontrarla para descargala e instalarla en el robot.

Gracias de antemano.

Hola Jakim,

Lo manera más inmediata es conectarlos mediante cable Ethernet y realizar una comunicación por sockets. Además de configurar la IP del robot y la mascara de subred a 255.255.255.0, deberás crear un socket en modo cliente desde tu programa de robot y tener un servidor socket en el Arduino.
Aquí tienes un ejemplo que te puede inspirar aunque no es exactamente o mismo, el programa de robot si que te sirve:
https://www.universal-robots.com/articles/ur/interface-communication/tcpip-socket-communication-via-urscript/

Los comandos de UR SCRIPT que se usan para las comunicacione los encuentras en el manual de UR SCRIPT. Aquí tienes la versión actual del manual:
https://www.universal-robots.com/download/manuals-e-series/script/script-manual-e-series-sw-512/
de la web de soporte:
https://www.universal-robots.com/download/

Lo que comentas es para comunicarse a través del conector de la herramienta, que lo complica mucho más. Aquí tienes información sobre esa opción:
En la sección de desarrollo UR+ encontrarás la SDK para desarrollar URCaps, videotutoriales, documentación,…
https://plus.universal-robots.com/
El URCAPS STARTER PACKAGE inlclye los proyectos ejemplo de muchas URCaps.

El codigo fuente de las URCaps de ejemplo lo encontrarás en el GITHUB de UR:

En el foro general de UR puedes encontrar más información sobre dudas que te surjan:

Hola,

En mi opinión, la solución más sencilla dependerá de si el Arduino está conectado al controlador del robot o a su herramienta:

  • Si está conectado al controlador, la solución más sencilla sería usar TCP/IP, mencionada en otro comentario. Pero yo no usaría una placa Max485, si no que usaría un Arduino + Ethernet shield o un Arduino Mega que ya tuviera Ethernet integrado.
    Motivo: en el modelo OSI de telecomunicationes, el protocolo RS485 está en una capa de bajo nivel (físico o link), mientras que los protocolos IP están en el nivel más alto (de aplicación). Entonces con un Max485 estarías “a medio camino” y tendrías que implementar tú mismo las otras capas para poder usar TCP.

  • Si está conectado a la herramienta, la solución más apropiada sería usar el protocolo Modbus. Igualmente yo usaría un shield que viniera con ese protocolo ya integrado.
    Motivo: Modbus está sólo una capa por encima del protocolo RS485. Aquí tienes una URCap ejemplo que implementa este protocolo en la herramienta del robot. Advertencia: esta URCap implementa un proceso Daemon en Python que no termina de funcionar bien, ya que se queda “colgado” o no se puede reiniciar fácilmente, y esto puede ser conflictivo si quieres usar diferentes herramientas en el mismo robot.
    Tengo entendido que el protocolo TCP está implementado para otras herramientas de UR, como las de OnRobot o AimRobotics, pero no he encontrado ningún proyecto open-source que comparta el código.

En cualquier caso, desde mi punto de vista personal, yo usaría en Arduino una shield que implemente enteramente el protocolo con el que quieres trabajar. El protocolo RS485 está pensado para la capa física y se puede usar como mucho hasta la capa de link, así que creo que no termina de aportar lo que estás buscando. Por eso creo que te vendría mejor usar Modbus o TCP y sus shields acorde.

1 Like