drl_stop (Auto Mode)
This section explains how to use drl_stop during Auto (Run) operations to stop a currently running DRL (Doosan Robotics Language) program.
It is typically used to interrupt a task sequence triggered by drl_start, allowing external systems (PC, PLC, MES, vision logic, safety logic) to control when the robot should halt DRL execution.
When drl_stop returns true, the robot is in Manual mode; call set_robot_mode(ROBOT_MODE_AUTONOMOUS) before the next drl_start. When no DRL program is running or paused, or the controller refuses the stop, drl_stop returns false and the mode does not change. drl_stop also returns false after the program has stopped when Manual mode is not confirmed or the robot is in a fault state; after a false return, check get_program_state() and get_robot_mode().
Typical usage
Stop an active DRL program when a cycle must be interrupted.
Integrate with external UI/PLC buttons (STOP / EMERGENCY STOP substitutes).
Note
The program’s motion is always quick-stopped.
0and1end the program as a normal forced stop;2ends it as an error stop.The function only succeeds if a DRL program is currently running or paused.
Example: Stopping a Running DRL Task
// 1) Check DRL program execution state
DRL_PROGRAM_STATE state = drfl.get_program_state();
// 2) Stop only if the program is running or paused
if (state == DRL_PROGRAM_STATE_PLAY ||
state == DRL_PROGRAM_STATE_HOLD) {
// STOP_TYPE_QUICK (1): normal forced stop
if (!drfl.drl_stop(STOP_TYPE_QUICK)) {
printf("Failed to stop DRL program.\n");
return -1;
}
printf("DRL program stopped.\n");
} else {
printf("No active DRL program.\n");
}
In this example, the program checks the current DRL execution state and stops the program only when a DRL program is running or paused. This allows external logic to interrupt automatic task sequences.
Tips
Combine with drl_pause for smoother step-wise control.
Log stop reasons (sensor trigger, operator request, safety event) for debugging and traceability.