Comunicación RS 485

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