Home Programming


Left ArrowBack to discussions page
KasemKasem Posts: 6 Apprentice
Hello , I'm Kasem ,Mechatronics Engineer

I have some questions about controlling UR3e robot controller from a Beckhoff CX PLC , over Ethernet IP communication , if someone has done it or know how to do it , could you please help me
what i want to do is 
1- I want to send joint variables  (Position and speed ,...) (which are samples from a trajectory generated by ROS and sent to the PLC ) from a Beckhoff PLC over Ethernet IP or Profinet or MODBUS TCP (Whichever is faster and more reliable )  connection to the UR3e robot controllers
2- command the robot to continuously follow the sent target joint positions 

thank you 


  • matthewd92matthewd92 Founding Pro, Tactile Sensor Beta Testers Posts: 1,084 Handy
    How fast are you wanting to send the control signals?  If you are able to send every cycle (2ms for e-series, 8ms for cb series) you could use Ethernet-IP or Profinet to write the joint values to 6 float registers. Then you could use a servoj command in the program and use those 6 float variables to create a joint position list. 

    Personally I prefer Profinet but either of the PLC field is protocols work but I’d avoid modbus due to speed of transmission and latency. 
  • KasemKasem Posts: 6 Apprentice
    Hello Mr Matthew , Thank you for your reply 
    I think i'm more inclined to use Ethernet IP , but based on the UR ROS Modern driver , the way it works by opening Ethernet socket  and making UR as a client and the PC as the server to ask for the joints position and running a URScript on UR that reads these position and as you said using servoj command 
    when i contacted UR , they told me about using an Ethernet Socket too , but the issue is that i need the PLC  to be the Client and open two sockets , one for each UR controller , as i have two robots that need to be controlled from the PLC , and i need the PLC to send and receive data from each UR  based on its opened socket and IP address 
    Beckhoff has a TCP library that creates sockets and other blocks that can make the PLC either a server and listens to an opened socket and then receive or send data , and other blocks to make it a client , so it opens the socket and then based on the returned handle and from the open socket with a certain IP AND Port , it can send and receive data to the server 

    the reason i want to make the PLC client (Master )and the URs  Servers (Slaves ) , is that i want the PLC to be in control to send the joint variables and commands and then receive feedback from the URs based on the over all logic 

    all the search i have done ,found that UR is always client , like in this example by UR 

    so i wonder how to make the UR as servers ?
    and the script that i need to develop to run on UR , i want to make it to execute the recieved joint positions ,and read inputs and outputs ,safety status to make it available for the PLC to read it , if you please could guide me  how to do this 
    i read in this link that Profinet is faster ,more deterministic and reliable than Ethernet IP https://us.profinet.com/profinet-vs-ethernetip/
    Is there much difference in the implementation of both protocols for the same applications on UR ?

    Sorry for the long post , but i hope i made it clear 

Sign In or Register to comment.
Left ArrowBack to discussions page