RoboDK论坛
使用按钮执行特定数量的移动命令-打印版本

+- RoboDK论坛(//www.w5838.com/forum
+——论坛:RoboDK (EN) (//www.w5838.com/forum/Forum-RoboDK-EN
+——论坛:RoboDK API (//www.w5838.com/forum/Forum-RoboDK-API
+——线程:使用按钮执行特定数量的移动命令(/ Thread-Using-a-button-to-perform-specific-amount-of-MoveL-commands



使用按钮执行特定数量的移动命令-克莱门斯-10-07-2021

大家好,

我是RoboDK编程的新手,所以这个问题可能不会太难。

当我按下插件界面上的按钮时,我试图为ABB IRB 2400执行一组MoveL命令(目前只是离线编程)。该插件基于formrobotpilot.cpp示例。

当我尝试执行两个连续的MoveL命令时,只执行最后一个命令。我认为这是因为MoveL命令只有在按钮功能完成时才会触发。但是根据API描述,MoveL调用应该阻塞,直到移动完成。

有没有一种可能的方法来执行多个机器人的动作在一个按钮称为功能?(见附件图片)


RE:使用按钮执行特定数量的移动命令-艾伯特-10-08-2021

这是个好问题。MoveJ/MoveL/MoveC描述是错误的。与RoboDK API相反,当你使用插件接口移动机器人时,行为不会阻塞。

你的插件实际上运行在RoboDK的主线程上,所以你不应该在你的插件中阻塞任何东西,否则RoboDK会崩溃。

相反,你应该创建一个程序,将动作添加到程序中并运行该程序。换句话说,您的Robot项应该是一个程序项。您可以使用以下命令创建一个新程序:

代码:
项目程序= RDK->AddProgram();
项目- > setPoseFrame(…);
项目- > setPoseTool(…);
项目- > MoveJ(…);
项目- > MoveL(…);
项目- >…
项目- >调用();

另一个提示:Busy()将在机器人或程序忙时返回。你不应该把它放在一个无限循环中,等待机器人或程序停止忙碌。

我们刚刚更新了RoboDK插件文档,以反映这一澄清:
//www.w5838.com/doc/en/PlugIns/class_i_item.html#a4c389bd258b3b6d7b5b214a8784b7bc2


RE:使用按钮执行特定数量的移动命令-克莱门斯-10-12-2021

非常感谢,效果非常好。

如果我可以问另一个问题,有没有可能在机器人到达目标点之前,将机器人移动到特定的目标(例如,用MoveL),并在特定的事件上停止移动(例如,用传感器输入发生)?

先谢谢你。