Home› Programming
Discussion
Back to discussions page
Ahmed
Posts: 2 Recruit
How to control UR mouvement with Step/Dir inputs? |
38 views
|
Answered | |
/ Most recent by Ahmed
in Programming
|
2 comments |

in Programming
Hello,
for my application i need to interface a CNC like controller (providing step/dir signals on 3 axis) with a UR10e => the intention is that the controller can drive the UR movements, direction and speed to make sure there is no latency between the CNC controller and the robot am, the application is close to laser engraving.
the controller cant be changed and it is not driven by gcode, the only signals i have are step/dir per axis.
what i tried so far is using 1 Step square wave as input to the robot encoder i can retrieve the counter incrementing each time the CNC controller generates the step square wave.
So i thought i ll be using the conveyor tracking function to sync the movements but it didn't work so far => the CNC controller actually depending on the engraving can move and stop frequently waiting for the laser to finish engraving then continues the movement along the path , which the conveyor tracking function wont do, the robot when am testing just continues on its path to reach the requested waypoint .
am asking if someone of you had a similar problem or any ideas how i should proceed ?
Solution i can think of are
- convert the step signal square wave to a constant dc voltage and the program would be ( if DIx==True, Move robot along Direction) but i loose speed ramping like a cnc table would move.
- use the encoder_get_tick_count in a thread and hopefully be able to get the distance and the speed required but as i am testing with my current prog the robot movement is always delayed or not in sync
Hopefully someone will actually read this and thank you for your time and effort to try and help me.
for my application i need to interface a CNC like controller (providing step/dir signals on 3 axis) with a UR10e => the intention is that the controller can drive the UR movements, direction and speed to make sure there is no latency between the CNC controller and the robot am, the application is close to laser engraving.
the controller cant be changed and it is not driven by gcode, the only signals i have are step/dir per axis.
what i tried so far is using 1 Step square wave as input to the robot encoder i can retrieve the counter incrementing each time the CNC controller generates the step square wave.
So i thought i ll be using the conveyor tracking function to sync the movements but it didn't work so far => the CNC controller actually depending on the engraving can move and stop frequently waiting for the laser to finish engraving then continues the movement along the path , which the conveyor tracking function wont do, the robot when am testing just continues on its path to reach the requested waypoint .
am asking if someone of you had a similar problem or any ideas how i should proceed ?
Solution i can think of are

- convert the step signal square wave to a constant dc voltage and the program would be ( if DIx==True, Move robot along Direction) but i loose speed ramping like a cnc table would move.
- use the encoder_get_tick_count in a thread and hopefully be able to get the distance and the speed required but as i am testing with my current prog the robot movement is always delayed or not in sync
Hopefully someone will actually read this and thank you for your time and effort to try and help me.
Tagged:
Best Answer
-
jelms Posts: 34 Handy
@Ahmed Sounds like an interesting application. The UR robots have their own control algorithms running which is one of the strengths. It also means you have to account for it when you are doing motion like you are describing. If you want a precise timed path you will need to plan it out at least a little ahead of time.
The UR controller is going to introduce latency. If you are ok with a fixed delay then you may be able to accomplish this with position and speed planning. The UR controller has a concept of time slices which limits the rate of feedback and control. I think for the e-series it's 500Hz. I'd look at servoj and speedl commands.
The requirements sound challenging and are against the time slice limit of the UR controller. Will 500Hz be sufficient?
i couldn't use speedl because the speed doesn't change according to encoder input.
so what am trying to tweak => using conveyor tracking enabled issue a direction command that ends when the encoder stops incrementing it works but only for one axis and the other axis i can plan ahead its position a crude solution but it should work.
the problem is that i cant plan my positions and speed ahead of time and i can only rely on step/dir signals to write my script.
anyway thanks a lot for the reply and i ll look more into speedl maybe i can use it to ramp my speed just before the encoder takes speed control.