机器人驱动程序-限制program_id??-打印版本 +- RoboDK论坛(//www.w5838.com/forum) +——论坛:RoboDK (EN) (//www.w5838.com/forum/Forum-RoboDK-EN) +——论坛:RoboDK API (//www.w5838.com/forum/Forum-RoboDK-API) +——线程:机器人驱动程序-限制program_id??(/ Thread-Robot-driver-Limit-for-program-id) |
机器人驱动程序-限制program_id??-DavidG-06-01-2019 你好, 我正在使用机器人驱动程序的可定制部分:
代码:
例13
代码:
如果len (sys.argv) > 1:
基本上,如果我用 机器人。运行指令('程序20',INSTRUCTION_CALL_PROGRAM) 一切都很好。但如果我试图传递一个更大的值,比如 机器人。运行指令('程序2000000',指令调用程序)或者(在我的实际应用程序中) 机器人。运行指令('Program 20000000', INSTRUCTION_CALL_PROGRAM) 机器人控制器接收到0或一些无用的东西,响应是奇数。我检查了机器人方面的数据类型,看看它是否可以处理这个值,但是KUKA整数可以处理2^31-1。 你对此有何解释?RoboDK在这里有限制吗? 机器人驱动程序-限制program_id??-DavidG-06-04-2019 下面是我的问题的一个最小工作示例。附件是RDK项目,机器人驱动程序的相关部分是这样的:
代码:
例13
要调用的程序id必须在python脚本中手动编辑。该例程在程序id为1000000(包括)时可以正常工作。 如果我打电话
代码:
机器人。运行指令('程序1000001')
机器人驱动程序-限制program_id??-艾伯特-06-07-2019 可以看到COM_VALUE1被定义为一个REAL (KUKA KRC类型的变量)。这意味着它是一个浮点变量(32位)。这种类型的变量最多可以容纳6位有效数字: https://en.wikipedia.org/wiki/Single-precision_floating-point_format 但是,您可以利用十进制值并在需要时传递附加信息(不需要将值相乘)。 RoboDK的值四舍五入到最接近的整数,但我们已经更新了RoboDK,以允许为函数调用传递十进制值(需要最新版本)。我建议你更新RoboDK,使用浮点值。即使RoboDK会记住64位双精度,KUKA控制器也会接收一个32位浮点值。 机器人驱动程序-限制program_id??-DavidG-06-11-2019 嗨,阿尔伯特, 非常感谢你解决了这个难题。我真的没有看到我在处理浮点数。 我之所以用这个方法
代码:
(价值* 1000)+ 20000000
如果你能把程序调用的结构改成这样,也许这将是一个很好的、功能强大的特性:
代码:
机器人。运行指令('程序id','可选参数',INSTRUCTION_CALL_PROGRAM)
谢谢你的大力支持。 |