线程评级:
  • 0票(s) - 0平均
  • 1
  • 2
  • 3.
  • 4
  • 5
Python数字输入等待方法失效
# 1
在我的代码中,我使用命令“robot. waitdi(1,1)”来暂停程序,直到机器人在数字输入1上接收到高信号,但是当程序运行时,无论输入值是什么,机器人都不会真正等待。我试图运行程序的机器人是一个UR10,根据手册,它具有11V-30V的数字输入“on区域”。我已经确认数字输入1正在使用数字万用表接收0V,并且甚至尝试在所有数字输入完全断开与任何可能的电压源的情况下运行该命令,但程序仍然跳过此指令。最奇怪的部分是,当我使用RoboDK图形界面中的“设置或等待I/O指令”按钮复制Python程序时,输入等待方法完全按照预期工作。在意识到这一点之后,我从我创建的UI程序和Python程序生成了一个UR脚本,它们是相同的,所以我只能假设这种行为是由于某种软件错误造成的。我已经附上了我的Python代码以及从我的程序的UI和Python版本生成的UR脚本。任何帮助得到这种方法的工作将非常感激,因为它是必不可少的我的项目。


附加文件
. txt IOwaitMalfunctionPythonCode.txt(大小:526字节/下载:412)2022世界杯国家队名单
. txt IOwaitURscriptPython.txt(大小:922字节/下载:397)2022世界杯国家队名单
. txt IOwaitURscriptUIversion.txt(大小:728字节/下载:367)2022世界杯国家队名单
# 2
我不太明白这个问题。

如果您计划移动真正的机器人并使用机器人的输入/输出,我建议您确保未选中此设置:
Tools-Options-Motion-Manage I/O with RoboDK连接到机器人时
(默认情况下未选中)

如果前面的解决方案不起作用,那么提供RDK文件将会有所帮助。

你也可以将这段代码作为测试运行:

代码:
RDK = Robolink()
robot = RDK.Item('UR10')
robot. connect() #确保你已连接到机器人
RDK.setRunMode(RUNMODE_RUN_ROBOT) #在真实机器人上触发机器人命令
robot.MoveJ (point3)
robot.waitDI(1,1) #等待真正的输入1设置为True/On
robot.MoveJ (point4)


这里有一个更详细的例子:
//www.sinclairbody.com/doc/en/PythonAPI/exam...rogramming
# 3
艾伯特你好,

我们今天尝试使用waitDI方法,在我们的情况下,它并没有像预期的那样工作。

我们可以看到控制器上的输入是关闭的。当它关闭时,因为我们正在等待它打开(1),这个函数应该等待至少定义的ms。然而,它不等待任何东西。

编辑:如果我们能让它返回,不管它是接收到信号还是超时了,那就太好了。
编辑2:它似乎只有在接收到信号时才能在RoboDK中作为程序工作。超时被丢弃。
+1在这个…
这将是伟大的,这个函数返回值1/0的情况下接收到的信号,这样我们将能够使If语句与输入,而不是只是等待…
# 5
我不认为超时是在使用机器人驱动程序时实现的。如果它没有实现,它应该永久等待。这可能高度依赖于机器人控制器。我们把它作为改进要求写下来。

为了确保您正在等待正确的输入,您应该取消选中以下选项:
  • Tools-Options-Motion-Manage I/O with RoboDK连接到机器人时
最新的UR机器人在工具上有一些输入和输出。这些是你要检查的输入吗?
如果是这样,您应该将它们定位为输入/输出11,用于输入/输出1,12->2等。
# 6
(04-02-2019, 04:35 pm)艾伯特写道:我不太明白这个问题。

如果您计划移动真正的机器人并使用机器人的输入/输出,我建议您确保未选中此设置:
Tools-Options-Motion-Manage I/O with RoboDK连接到机器人时
(默认情况下未选中)

如果前面的解决方案不起作用,那么提供RDK文件将会有所帮助。

你也可以将这段代码作为测试运行:

代码:
RDK = Robolink()
robot = RDK.Item('UR10')
robot. connect() #确保你已连接到机器人
RDK.setRunMode(RUNMODE_RUN_ROBOT) #在真实机器人上触发机器人命令
robot.MoveJ (point3)
robot.waitDI(1,1) #等待真正的输入1设置为True/On
robot.MoveJ (point4)


这里有一个更详细的例子:
//www.sinclairbody.com/doc/en/PythonAPI/exam...rogramming

在使waitDI()方法正常工作方面有任何进展吗?我尝试运行Albert提供的示例代码,确保“连接到机器人时使用RoboDK管理I/O”选项未被选中,但waitDI()方法仍然不会导致机器人等待任何时间。我没有检查工具输入,并尝试对UR10上的所有8个常规数字输入运行该方法,每次结果都相同。根据要求,我已经附上了我的站点文件,并且还包含了我正在运行以测试该方法的代码。任何帮助解决这个问题将是非常感激的。

测试代码:
引用:RDK = robolink.Robolink()
robot = RDK.Item('UR10')
point1 = RDK。项目(“目标5”)
point2 = RDK。项目(“目标6”)
robot. connect() #确保你已连接到机器人
RDK.setRunMode(robolink.RUNMODE_RUN_ROBOT) #在真实机器人上触发机器人命令
robot.MoveJ (point1)
robot.waitDI(5,0) #等待真正的输入1设置为True/On
robot.MoveJ(卷帘窗)
# 7
请记住,工具输入/输出映射到输入/输出11及以上。

看一下生成的UR脚本代码,我看到程序看起来是正确的。这段代码将等待数字输入1为True/On/1。
代码:
while (get_standard_digital_in(1) != True):
同步()
结束




浏览此主题的用户:
1客人(年代)