these days I'm learning Orocos patched with xenomai. Although I have found the ways to create a hard real-time control software, I didn't find any information on how I should use this to control the servo motors and sensors like encoders with them? I have thought that I may have to use Ethernet cables to connect the main PC running the real time kernel with some kind of driver/servo drive so that the PC/micro PC and the driver can communicate with each other in hard real-time. I didn't actually find a practical solution in google like how, and which external drives or hardware should I use.

So can anyone show me the way to complete this task? How should I make my linux PC or microcontroller running real-time software should communicate with industrial level of sensors and motors? I am mentioning industrial level motors cas my project needs the accuracy and control in that level. I don't want to learn any HDL or plc and make it more complicated.


1 Answer 1


Real-time control protocols for drive amplifiers are Ethernet based, but not necessarily compatible with your average Network card. You can take a look at the following protocols and decide which is easiest to implement with your setup. Again, you may need specialized network cards for some. You can find drive amplifiers which each of these protocols from major manufacturers (e.g. Bosch-Rexroth, Siemens, Beckhoff).

Just fyi in these case "industrial level" means a comms cycle time of downto 1-4 milliseconds. Even less in some cases.

Also, you can by ready-made protocol stack for most of these, usually through the association steering the development of the protocols. You can just embed that as a library in your source code (again, hw compatibility is not necessarily given with every network card)

You might want to look at CAN and CANopen. It is not ethernet based, but one of the easiest to use and many Microcontrollers offer CAN communication ports.

You mentioned no plc-s but you might want to take a look at RevPi, a sort of mix between a PLC and a RasPi with linux.

  • $\begingroup$ well what about using rtnet with Intel Pro/1000 GT card? example: rtt-lwr.readthedocs.io/en/latest/rtpc/rtnet.html $\endgroup$
    – user14148
    Mar 24, 2018 at 20:48
  • $\begingroup$ Probably ok for Ethercat, don't know about the rest $\endgroup$
    – 50k4
    Mar 25, 2018 at 6:27

Your Answer

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