0
\$\begingroup\$

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 !

\$\endgroup\$
3
  • \$\begingroup\$ How much redundancy are you planning? And how much error checking, so the motors do not wildly swing around and crush humans or delicate experimental materials? Trained workers automatically take responsibility for their quality. Robots need the same; you have to build that in. \$\endgroup\$ Apr 3 '17 at 12:45
  • \$\begingroup\$ For 4 axis choosr Central-i. \$\endgroup\$
    – user76844
    Apr 4 '17 at 11:50
  • \$\begingroup\$ Thank you for your replies. I was thinking of harmonic drive solution to avoid backlash. For error checking I haven't quantified yet and I'm waiting for input. I have found three products that are already implemented, CAN bus, Ethernet and RS485. Regardless of the product cost itself, what is the cheapest but also robust solution? Could we quantify that? Would you anyway choose full duplex or would you examine also half duplex? Thank you in advance ! \$\endgroup\$ Apr 5 '17 at 12:07
2
\$\begingroup\$

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.

EDIT:

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.

\$\endgroup\$
3
  • \$\begingroup\$ thank you for your reply. See my edit above for some additional questions. \$\endgroup\$ Apr 4 '17 at 11:17
  • \$\begingroup\$ Excuse me I just read this one. I guess for sending a command to the motor , but also be able to read the motor's position at the same time, I should resort to full duplex communication. Since EtherCAT is the most expensive of all, it seems that RS485 is my option. I think once I will finalize the master, the microprocessor that will run on the robot, it will be clarified even more. \$\endgroup\$ Apr 5 '17 at 12:14
  • \$\begingroup\$ The Ethercat and other isochrone mode communications send a SYNC pulse or telegram, where all slaves update their clocks. At each predefined cycle clock (sent by master upon startup) the slave device engages the output, then at predefined delay from writing the outputs it reads actual input states. When the query telegram from master is received, the slave receives the new output values and sends back actual input values. There is always a lag of one cycle, but all devices take a snapshot of actual values at the same time and engage the output values at the same time, so they are synced. \$\endgroup\$ Apr 5 '17 at 13:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.