We have an issue with UR10 robot. We wrote a program which monitors when robot exits Emergency Stop, enters “Power Off” and requires pressing “Power On” and “Start”. Our program does this automatically by:
If RTDE variable robot_stafety_bits has bit “is_normal_operation” and variable robot_mode has value POWER_OFF (3) then:
Open connection to Dashboard (29999)
Sends command “power on”
Waits until robot_mode changes state to POWER_ON
Sends command “brake release”
Every 4-5 times we run this procedure we get an error “Fault C39A5” as in the picture attached. It looks like a software issue because doing this procedure manually always work. Adding 2s delay before steps 2 and 4 didn’t help.
we are using a similar solution to connect, start and brake release the robot on e-Series but never had a similar issue. What we do tho is waiting until the dashboard server connection is established e.g. doesn’t throw any more exceptions, sth. like:
while(True):
try:
self.URdashboard.connect((ipAdress,DASHBOARD_PORT))
break
except:
continue
(i know this is bulky )
do you send the brake release repeatedly or the whole procedure?
We send the “brake release” command only once and wait for the robot_mode transition to happen. It does transition to IDLE, but 2 RTDE packets later we get a fault.
We have found the source of the problem. The “power on” command makes two transitions: POWER_OFF->POWER_ON->IDLE, while the “brake release” command is needed for the IDLE->RUNNING transition. When we send the “brake release” command after reaching the IDLE state, it works 15/15 times. Before, we were sending it in the POWER_ON state and the robot didn’t like it.
Ah that makes sense. We‘re only using „brake release“ as it powers on the robot and releases the brakes automatically. We‘re only watching for the last Transition to the RUNNING state before we send further commands