无法向在线机器人发送自定义代码-打印版本 +- RoboDK论坛(//www.w5838.com/forum) +——论坛:RoboDK (EN) (//www.w5838.com/forum/Forum-RoboDK-EN) +——论坛:RoboDK API (//www.w5838.com/forum/Forum-RoboDK-API) +——线程:无法发送自定义代码到在线机器人(/ Thread-Unable-to-send-custom-code-to-online-robot) |
无法向在线机器人发送自定义代码-davidmurray-05-13-2019 你好, 我正在尝试通过modbus在UR10机器人上激活一个工具。最终,编程将离线完成,但现在我想通过RoboDK Python API在线完成。这是我的代码:
代码:
进口RoboDK。robolink # RoboDK API
我做错了什么?我应该使用RunInstruction还是RunProgram ? 最好的问候, 大卫 回复:无法发送自定义代码到在线机器人-艾伯特-05-13-2019 你好大卫, 你应致电: robot.Connect () 这将触发连接(动作与机器人连接面板中的Connect按钮相同)。 回复:无法发送自定义代码到在线机器人-davidmurray-05-13-2019 (05-13-2019, 07:48 pm)艾伯特写道:你好大卫, 嗨,阿尔伯特, 这一行已经出现在我的代码中。还有别的主意吗? 题外问题:什么时候编写程序(比如使用MakeProgram)比只运行RDK.function_here()或robot.Move…()更好? 回复:无法发送自定义代码到在线机器人-艾伯特-05-14-2019 触发Connect后会得到什么返回值?如果一切顺利,您应该得到标志ROBOTCOM_READY=0。 在你第一次尝试连接时,一些机器人司机需要几秒钟的时间。一个更健壮的选项是使用ConnectSafe()。这将尝试多次连接到机器人(默认为4次),等待状态标志就绪。 回复:无法发送自定义代码到在线机器人-davidmurray-05-14-2019 是的,我得到ROBOTCOM_READY=0。 我将尝试另一种方法:首先生成一个SCRIPT文件,通过FTP上传它,然后运行它。使用RoboDK API最好的方法是什么? 我搞不清楚运行模式,运行类型,程序之间的区别。MakeProgram program.RunCode。 你能给我一些提示,如何实现上述3个步骤吗? 最好的问候, 大卫 回复:无法发送自定义代码到在线机器人-艾伯特-05-14-2019 你能提供一个样本项目,可以重现这个问题的连接?我们可以更好地帮你解决问题。重要的是要了解以下两者之间的区别: 运行模式(API) 当你通过API(调用connect)连接到机器人时,你会自动改变“运行模式”(setRunMode)来移动真正的机器人,而不是模拟机器人。这适用于RoboDK API和移动机器人从你的代码。如果你想直接使用API(例如使用Python或c#代码中的MoveJ或MoveL命令)移动机器人,这是很有用的。 您可以更改运行模式,以模拟机器人程序,验证它或使用相同的代码生成程序。 重要提示:运行模式适用于API的所有命令。 运行类型(程序) 运行类型(setRunType)是不同的,只适用于使用GUI生成的程序,您只能将其设置为Run on Robot或simulate。这和你勾选/不勾选在机器人上运行程序选项。 (附件= 429) 通过API生成一个程序 MakeProgram适用于使用GUI或python宏创建的包含机器人动作的程序。这个调用与右键单击一个程序并选择“Generate program”相同: (附件= 430) 你可以通过一个标志将程序上传到机器人控制器。例如:
代码:
程序。MakeProgram (path_file RUNMODE_MAKE_ROBOTPROG_AND_UPLOAD)
在程序中包含定制代码 你应该使用RunInstruction当你想在另一个程序(在GUI中可见的程序)中包含一个程序调用、自定义代码、注释时。例如,如果你想在程序中添加一行新代码,你可以使用:
代码:
程序。RunInstruction('输出任何你想要的代码;',INSTRUCTION_INSERT_CODE)
关于UR机器人(SFTP)文件传输的重要信息: 右键单击程序,选择“将程序发送给机器人”,可以自动将URP或脚本文件传输给机器人。这种行为可以在后期处理器中定制(设置变量UPLOAD_SFTP = True)。我建议你使用通用的机器人或者是万能机器人URP后处理器。默认情况下,当你选择将程序发送给机器人的选项时,UR的RoboDK后处理器将自动运行程序(这对UR是一个例外,因为它是一个协作机器人,更容易在PC上运行程序)。将UPLOAD_SFTP标志更改为true将通过SFTP上传URP程序。这需要安装pysftp包。 回复:无法发送自定义代码到在线机器人-davidmurray-05-14-2019 嗨,阿尔伯特, 谢谢你提供的信息,非常有用。我认为这些信息(和你写的一模一样)应该在文档中。如果它已经在那里,那么可能很难找到。 另一个问题:当使用RUNMODE_MAKE_ROBOTPROG_AND_START时,如何指定生成程序的输出目录和文件名? 现在程序是在桌面上写的,但如果可能的话,我想用API改变它。 这是我的代码:
代码:
RDK = RoboDK.robolink.Robolink()
问候, 大卫 回复:无法发送自定义代码到在线机器人-艾伯特-05-20-2019 我注意到你已经指定了一个文件夹来保存你的项目。但是,您可能必须在路径的末尾添加'/'(斜杠)字符才能使其工作。这也可以在后处理器中控制/硬编码。 回复:无法发送自定义代码到在线机器人-davidmurray-05-23-2019 (05-20-2019, 06:59 pm)艾伯特写道:我注意到你已经指定了一个文件夹来保存你的项目。但是,您可能必须在路径的末尾添加'/'(斜杠)字符才能使其工作。这也可以在后处理器中控制/硬编码。 嗨,阿尔伯特, 我试过了,但还是不行。 我在后期处理器里找不到它的硬编码。 我能改变它的唯一方法是通过RoboDK的首选项窗口。这是一个bug吗? 谢谢, 大卫 回复:无法发送自定义代码到在线机器人-艾伯特-05-27-2019 你好大卫, 所有后处理都定义了ProgSave函数。这是在后处理阶段,在程序生成的末尾和保存之前调用的。这个函数接收RoboDK选项菜单中定义的首选路径。 大多数后期处理器的定义是这样的(你可以改变文件夹来保存你的程序,如第一条注释所示):
代码:
def ProgSave(self,文件夹,progname, ask_user=False, show_result=False):
|