Universal Robots Forum

Use Digital Input mapped to Freedrive in Remote Mode

Hello,
i want to set the Robot in Freedrive and Move it to Waypoints with a Button while using the Remote Secondary Interface to save the Waypoints.
Unfortunately, Freedrive doesn’t work in Remote Mode except using the Freedrive command over the Secondary Interface.
To save the waypoint with a proper precision i want the Robot to Stop Freedrive Mode on Release of a Physical Button.
Is there any Way to achieve this or bypass the blocked Digital Inputs in Remote Mode?

even using the GP Registers and setting up Freedrive with a Profinet input with a SPS doesn’t work.

Why is it not possible to activate Freedrive without sending a Program like

def Program():
freedrive_mode()
end

over the interface?

According to the user manual for PolyScope 5.1, the following applies to Remote and Local control.
Please see section 21.

image

Hence a freedrive input is not allowed (ignored) in Remote Control mode.
If you have a program, that executes freedrive, this will be interpreted as a non-input freedrive, and hence be allowed.

So basically, if i want a physical button that activates the freedrive i have to use a SoC that handles additional digital IO and connects to a Socket and sends a program like
def Program():
freedrive_mode()
end
?
why is it even necessary to bypass it this way?
is there any restriction defined in DIN-ISO 10218 that forces UR to block this function?

Alternatively you should be in Local Mode, and communicate with Secondary 30002 from localhost.

But why not use another interface, like RTDE or Modbus, which is not restricted to read from in Local Control mode?

The reason for the restriction is ISO 10218-1, section 5.3.5 Single Point of Control. We want to prevent users from freedriving the robot when at the same time, a remote machine can tell the robot to start a program.

An option is to listen on an input inside your program and enter freedrive that way. Then you can control from the program when it is appropriate to go to freedrive.

3 Likes

Hi
You can try this:
def Program():
while(true)
freedrive_mode()
end
end

1 Like