Electrical – Ethernet, RS485, CanOpen how to choose the right for robotic Arm


I have a question regarding the communication protocol and physical layer of how to connect the motors of a robotic arm.

I have 4 servomotors, Brushless. I need to select a motor drive for each one. The motors are: M1 shoulder- M2 elbow- M3 wrist- M4 thumb
in a daisy chain. I've seen that for similar configurations, people either choose RS485, or Ethernet or Ethercat or CanOpen, or even RS232.

How can I decide about this, which one to choose? Could someone summarize the drawbacks and advantages for these above?
I don't have very high requirements for the speed of the motors, I will use them for simple and slow rotations, and expect a power of 30W for each motor. Of course I would prefer the simplest option with minimum number of wires and I would try to avoid to much heating. I really need robust cables because the arm is moving.

Also considering that I will also embed a camera, is it better to consider Ethernet?

I am asking the above, because I see that sometimes people support RS485 over Ethernet, ie. Robotiq, but I also see solutions for Ethernet and even RS232 in some cases.

Thank you so much in advance ! If you need more details, I will comment back, but this is a rough idea I have right now.

thank you for your reply. I think that from these three, CAN is less expensive, Ethercat is the most expensive but also more robust, and RS485 is somewhere in the middle? Can you tell a price comparison more or less?

Then the issue is whether I need full or half duplex. In full I would opt for Ethercat or RS485. But which one of the two is easier to implement?

CAN would be also more simplified in terms of wires, and considering the fact that most microcontrollers have more often Can ports than RS485. But CAN is half duplex, and I think it would be important to have the simultaneous send and receive at the same line, for the motors in daisy chain, no?

Thank you in advance !

Best Answer

It all depends on money you want to spend and the required performance. Also keep in mind that you have to get a software layer protocol. What you have listed are hardware layers, except for Ethercat which is an embedded protocol over Ethernet PHY.

If you want to connect them in a daisy chain then RS485, CAN, Ethercat. Note that Ethercat slave is rather expensive, but it is the best from your list. If you need synchronized moves, then also the protocol shall be synchronous. With Ethernet PHY are Ethercat (Beckhoff) and Profinet (Siemens), for RS485 Profibus (Siemens),...

IMO, for a slow DIY application you can go with RS485 and some non-synchronous protocol like Modbus which is easy to obtain. Other may need special hardware, licences.


None of industrial machines have full-duplex communication in between master and slaves. They are all half-duplex even the Ethercat. It makes no sense that one device sends data at is own. First, the telegram consists of an address and then often a control word, and fixed number of data words, for example position, speed, torque setpoint. The device answers, only when asked usually with a status word, actual position, actual speed, actual torque...For Ethercat master implementation you would need a OS, with real-time or preemption kernel. RS485 is somehow CPU expensive at high baud rates. The Profibus RS485 uses an ASIC that does only communication between master CPU and the RS485 network. CAN is prefered for professional use with MCU's as CanOpen and DeviceNet. You can get some implementation of CanOpen master for free (https://github.com/CANopenNode/CANopenNode) , but mostly is not free of charge.

It also depends an what platform you will run all these things and what slaves you will buy, I mean servo drivers.