职位:10 线程:3 2019年5月加入:
声誉:
0
05-13-2019,07:29点
(这篇文章最后修改:05-13-2019,07:33点davidmurray)。
你好,
我想激活工具通过modbus UR10机器人。最后,编程将离线完成,但是现在我想做在线通过RoboDK Python API。这是我的代码:
代码:
进口RoboDK。robolink # RoboDK API 进口RoboDK。robodk #机器人工具箱
RDK = RoboDK.robolink.Robolink () RDK.setRunMode (RoboDK.robolink.RUNMODE_RUN_ROBOT)
机器人= RDK。项目(UR10, RoboDK.robolink.ITEM_TYPE_ROBOT) #当前打开站有一个机器人叫“UR10”。 robot.setConnectionParams(' 192.168.241.116 ' 30001 ' / ', ", ") #连接到机器人
成功= robot.Connect () 地位,status_msg = robot.ConnectedState ()
打印(“状态:{0},味精现状:{1}”。格式(地位、status_msg)) #返回“0准备”
机器人。RunCode (“modbus_set_output_signal (“v1_a”,真正的),真的)
然而,在机器人当我做这个什么也没有发生。我已确认(在编写这个命令直接在示教器的一个新脚本),这modbus命令是正确的。
我做错了什么?我应该使用RunInstruction或调用呢?
最好的问候, 大卫
帖子:1901 线程:1 加入:2018年4月
声誉:
101年
你好大卫,
你应该叫: robot.Connect ()
这将触发连接(同一动作的Connect按钮机器人连接面板)。
职位:10 线程:3 2019年5月加入:
声誉:
0
(05-13-2019 07:48点)艾伯特写道:你好大卫,
你应该叫: robot.Connect ()
这将触发连接(同一动作的Connect按钮机器人连接面板)。
嗨,阿尔伯特,
这条线已经出现在我的代码。任何其他想法?
一边问:什么时候更好的做出一个程序(例如使用MakeProgram)与运行RDK.function_here()或robot.Move…() ?
帖子:1901 线程:1 加入:2018年4月
声誉:
101年
什么你触发连接后得到返回值呢?你应该把国旗ROBOTCOM_READY = 0是否一切顺利。
一些机器人驱动花几秒你第一次尝试连接。一种更健壮的选择是使用ConnectSafe ()。这将尝试连接到机器人多次(默认4倍),等待状态标志做好准备。
职位:10 线程:3 2019年5月加入:
声誉:
0
是的,我做得到ROBOTCOM_READY = 0。
我将会尝试另外一种方法:首先生成一个脚本文件,通过FTP上传它,然后运行它。什么是最好的办法使用RoboDK API呢? 我有一个小麻烦弄清楚运行模式之间的区别,运行类型、程序。MakeProgram program.RunCode。
你能给我一些迹象显示如何实现上述3个步骤?
最好的问候, 大卫
帖子:1901 线程:1 加入:2018年4月
声誉:
101年
你能提供一个示例项目,可以复制这个连接这个问题?我们可以更好的帮助你解决它。重要的是要理解以下的区别:
运行模式(API)
当你连接到机器人通过API(调用连接)你会自动改变“运行模式”( setRunMode)真正的移动机器人,而不是模拟机器人。这适用于RoboDK API和移动机器人从您的代码。这是非常有用的,如果你想移动机器人直接使用API(使用MoveJ或MoveL命令从Python或c#代码)。
你可以改变运行模式来模拟机器人程序,验证它或使用相同的代码生成程序。
重要:运行模式适用于所有API的命令。
运行类型(程序)
运行类型( setRunType)是不同的,只适用于使用GUI生成程序,你只能把它运行在机器人或模拟。这是一模一样,如果你选中/未被选中 在机器人运行选择一个程序。
生成一个程序通过API
MakeProgram适用于项目使用GUI或python创建宏,包括机器人的动作。这个调用是一样的右键单击项目,然后选择“生成程序”:
你可以将国旗上传程序传递给机器人控制器。例如:
代码:
程序。MakeProgram (path_file RUNMODE_MAKE_ROBOTPROG_AND_UPLOAD)
在一个程序中包含自定义代码
你应该使用 RunInstruction当你想要包括一个程序调用、定制代码,在另一个程序(程序GUI中可见)。举个例子,如果你想添加一个新的行代码在您的程序可以使用:
代码:
程序。RunInstruction(输出你想要的任何代码,,INSTRUCTION_INSERT_CODE)
重要的关于文件传输你的机器人(SFTP): 您可以自动URP或者脚本文件转移到机器人当你点击一个程序,并选择“发送程序的机器人”。这种行为可以定制的处理器(设置变量UPLOAD_SFTP = True)。我建议你使用 通用的机器人或者是 通用机器人URP后处理器。默认情况下,RoboDK你的后置处理程序将运行这个程序时自动选择向机器人发送程序的选项(这对你是个例外,因为它是一个协作机器人,更容易从PC)动态运行程序。改变UPLOAD_SFTP国旗为true通过SFTP将上传URP程序。这需要安装pysftp包。
职位:10 线程:3 2019年5月加入:
声誉:
0
05-14-2019,05:43点
(这篇文章最后修改:05-14-2019,05:47点davidmurray)。
嗨,阿尔伯特,
谢谢你的这些信息,它是非常有用的。我认为这些信息(完全按照你写的)应该在文档中。如果它已经那么也许太难了。
另一个问题:我如何才能指定输出目录和文件名使用RUNMODE_MAKE_ROBOTPROG_AND_START时生成的程序吗? 现在桌面上的程序写的,但我想改变这种状况与API如果可能的话。
这是我的代码:
代码:
RDK = RoboDK.robolink.Robolink () RDK。ProgramStart (“david_temp01”、“C: /用户/大卫。穆雷/桌面/ RoboDK脚本测试”、“Universal_Robots”机器人)
机器人= RDK。(“UR10”, RoboDK.robolink.ITEM_TYPE_ROBOT)项
RDK.setRunMode (RoboDK.robolink.RUNMODE_MAKE_ROBOTPROG_AND_UPLOAD)
机器人。RunInstruction (“modbus_set_output_signal (“v1_a”,真的),RoboDK.robolink.INSTRUCTION_INSERT_CODE) robot.RunInstruction(“睡眠(2)”,RoboDK.robolink.INSTRUCTION_INSERT_CODE) 机器人。RunInstruction (“modbus_set_output_signal (“v1_a”,假),RoboDK.robolink.INSTRUCTION_INSERT_CODE) 机器人。RunInstruction (“modbus_set_output_register (“Rail_Cmd_Pos”, 900年),RoboDK.robolink.INSTRUCTION_INSERT_CODE)
robot.Disconnect () RDK.Finish() #冗余?
问候, 大卫
帖子:1901 线程:1 加入:2018年4月
声誉:
101年
我注意到你已经指定一个文件夹来保存您的项目。然而,你可能需要添加“/”(削减)字符的路径为它工作。这也可以控制/硬编码的后处理器。
职位:10 线程:3 2019年5月加入:
声誉:
0
(05-20-2019,06:59 PM)艾伯特写道:我注意到你已经指定一个文件夹来保存您的项目。然而,你可能需要添加“/”(削减)字符的路径为它工作。这也可以控制/硬编码的后处理器。
嗨,阿尔伯特,
我试过,但它仍然不工作。 我找不到它硬编码后处理器。
只有这样,我能改变它是通过RoboDK preferences窗口。这是一个错误吗?
谢谢, 大卫
帖子:1901 线程:1 加入:2018年4月
声誉:
101年
05-27-2019,01:52点
(这篇文章最后修改:05-27-2019,01:54点艾伯特)。
你好大卫,
所有帖子处理器ProgSave函数定义。这叫做在后期处理阶段,计划年底之前生成和储蓄。这个函数接收的首选路径中定义RoboDK选项菜单。
大多数文章处理器有一个这样的定义(您可以更改文件夹保存程序,第一个评论)所示:
代码:
def ProgSave(自我,文件夹,progname ask_user = False, show_result = False): #你可以实施(硬编码)一个文件夹之前保存的程序。例如: #文件夹= " C: / your-programs-folder /” #(在这种情况下,默认设置RoboDK忽略) # ask_user将真实如果用户选择“保存计划……”
是否ask_user DirExists(文件夹): 文件夹= getSaveFolder(文件夹,选择一个目录来保存您的程序) 如果文件夹没有: #用户选择取消按钮 返回
+ ' / ' + progname filesave =文件夹
#保存程序 张开(filesave,“w”)作为支撑材: 在self.PROG线: fid。写(+行' \ n ')
#这将通知RoboDK文件已经保存的文件可能被显示 打印('保存:% s \ n ' % filesave)
#还记得您保存到的文件上传/发送给机器人 # ProgSendRobot将定义协议用于向机器人发送程序(通常是FTP) #(选择“发送程序机器人”时) 自我。PROG_FILES = filesave
|