Stop task with PC SDK
betaGuy
✭
Answers
-
I know there is probably a reason you are wanting to stop just one individual task, but if I remember correctly, PCSDK doesn't work like that in robotware 6.xx. It only worked like that in robotware 5.xx. So your approach mostly likely won't work with your robot. What you are supposed to do is use the option below.
_ctlr.Rapid.Stop(ABB.Robotics.Controllers.RapidDomain.StopMode.Immediate);
Unfortunately, that will stop all motion tasks by default if I remember correctly. From here, I have not tested it, so take the rest of my words with a grain of salt. You can set the enabled state of the tasks you wish to stop to true and the ones you want to leave running to false. Then send the rapid.Stop command to the whole controller, and only the tasks you want to stop should be stopped. This is similar to how the menu works in robotstudio. Good luck.
My 2 cents, don't use the .first() command to get the task you want do _ctrl.Rapid.GetTask("T_ROB1") OR _ctrl.Rapid.GetTask("T_ROBR") instead. I have had the safety controller task in a safe move system register as the first task in the list before which cannot be stopped. This is simply my preference. Nothing more.
Fun thing to note, you don't need write access to send a stop command with the default UAS system.0 -
Thank you for the feedback.
Maybe I have been provide a small amount of information to understand the problem.
I have 4 task:
- 1 motiont task: T_ROB1
- 1 normal task
- 2 semistatic tasks.
I want to stop and restart one of the semistatic task.
(I wrote .First() to "simplify" the problem)
this is part of my code
m = Mastership.Request(_ctrl);
var task = _ctrl.Rapid.GetTasks("T_SOCK_COMM");
task.Stop(ABB.Robotics.Controllers.RapidDomain.StopMode.Immediate);_ctrl!.Rapid.Stop(ABB.Robotics.Controllers.RapidDomain.StopMode.Immediate);task.ResetProgramPointer();task.Start();
(Before reach this code, t_rob1 is already stopped)
Neither task.Stop or _ctrl!.Rapid.Stop actually stop my semiStatic task.
So I have an exception on .ResetProgramPointer(); because the task is "running".
0 -
Look into the command below. Now that I know what your after, this might work a bit better. You still may have to use a some combination of enabling and disabling to make sure you do not stop a task you may want to leave running. there is a taskpanelexecutionmode that should do what you want.
_ctrl.Rapid.Stop(ABB.Robotics.Controllers.RapidDomain.StopMode.Immediate, ABB.Robotics.Controllers.RapidDomain.TaskPanelExecutionMode.AllTasks);
Best of luck0 -
I think that the problem is that the task is semistatic. If I set it as normal, it will stop0
Categories
- All Categories
- 5.5K RobotStudio
- 394 UpFeed
- 18 Tutorials
- 13 RobotApps
- 297 PowerPacs
- 405 RobotStudio S4
- 1.8K Developer Tools
- 249 ScreenMaker
- 2.7K Robot Controller
- 309 IRC5
- 59 OmniCore
- 7 RCS (Realistic Controller Simulation)
- 783 RAPID Programming
- AppStudio
- 3 RobotStudio AR Viewer
- 18 Wizard Easy Programming
- 105 Collaborative Robots
- 4 Job listings