线程评级:
  • 0票(s) - 0平均
  • 1
  • 2
  • 3.
  • 4
  • 5
Python:加工项目的特定后处理器和运行模式
# 1
你好,
我正在使用Python脚本来生成一个3d打印项目。到目前为止,我还没有弄清楚如何正确使用ProgramStart, AddProgram, RunCode或MakeProgram方法。程序大致如下:
-提示用户选择一个几何文件
对象被加载到RoboDK使用

代码:
PrintPart = RDK。AddFile (GeomFile、家长=框架)
添加一个机加工项目

代码:
PrintProject = RDK.AddMachiningProject(名称、机器人)
-对象被添加到加工项目中:

代码:
PrintProject.setMachiningParameters (= PrintPart部分)
通过这种方式,打印对象被附加到加工项目上,RoboDK自动生成一个RoboDK程序。到目前为止一切顺利。
我现在想把RoboDK程序翻译成一个真正的机器人程序。这就提出了两个问题。
1)我如何使用特定的后处理程序来做到这一点?
我目前使用MakeProgram将机器人程序保存到一个文件夹中。这可以工作,但并不令人满意,因为它默认使用KRC2后置处理器。我需要用另一个。
2)我实际上不想将程序保存到文件夹中,因此MakeProgram可能完全错误。我要么愿意
A)将程序发送给机器人并在机器人上运行。根据我的理解,这应该是指RunMode = 6。或
b)将程序发送给机器人,并独立于RoboDK和笔记本电脑在机器人上运行。这应该是RunMode = 5如果我没记错的话。

如果我遗漏了什么重要信息,请告诉我。我看不出该用哪种方法来达到这些目标。
我已经尝试了ProgramStart,正如它在API文档中所示,但它似乎不适用于自动生成的打印程序。另一方面,它似乎是唯一的方法,让我选择后处理器。
任何建议,从这里去哪里是感激的。

致以最亲切的问候
大卫
# 2
你好大卫,

通过API创建3D打印项目是不可能的。我们会及时将其添加为新功能。此时,如果对象有曲线或点,下面的调用将创建一个曲线跟随项目或点跟随项目:
PrintProject.setMachiningParameters (= PrintPart部分)

要指定机器人后处理器,您可以手动更改后处理器(右键单击程序并选择select post processor)并保存项目。在这种情况下,它将使用最后选择的后置处理器。

您还可以使用指定机器人后置处理器ProgramStart.例如:
RDK。ProgramStart('ProgramName','C:/MyProgramFolder/', ' KUKA_KRC4 ', robot)
但是,这假设您直接从Python生成程序(而不是使用MakeProgram)。在最坏的情况下,使用当前版本,如果您不想手动更改后处理器,则可以生成一个虚拟/空程序来更改后处理器(后处理器设置存储在RDK文件和robot文件中)。

如果您已经准备好了路径/加工项目,您可以执行以下操作来生成程序并将其自动发送给机器人:

update_result = PrintProject。更新()
program = PrintProject.getLink(ITEM_TYPE_PROGRAM)
run_mode = RUNMODE_MAKE_ROBOTPROG_AND_UPLOAD
程序。MakeProgram(path_folder run_mode)

这与右键单击程序并选择“发送程序到机器人”相同。
# 3
嗨,阿尔伯特,
谢谢你的解释。你是对的,我没有完全准确,我的意思是一个跟随点项目。
但是,手动选择后置处理器是不可行的。我必须使用API。你建议创建一个虚拟程序来改变机器人的设置,这对我来说很公平。可悲的是,它似乎不工作的方式,我尝试过(见附件)。
脚本打开RoboDK,添加我的机器人,并在我选择的文件夹中创建一个空程序。这都很好,
但是如果我检查机器人的设置,它仍然使用KRC2后置处理器。
你能告诉我我的程序有什么问题吗?


附加文件
. py Command_tester.py(大小:615字节/下载:476)2022世界杯国家队名单
# 4
你好大卫,
有一个新的更新,从昨天开始,将允许您只更改后处理器。你应该使用setParam.例如:

代码:
机器人。setParam(“后处理程序”、“KUKA_KRC4”)
你可以在这里获取最新版本:
//www.sinclairbody.com/2022世界杯国家队名单downloads/Win64
# 5
太完美了,非常感谢!
# 6
你好,
我想再回到这个话题上来。我的实际问题仍然是关于程序转移到机器人的问题。为了让事情更清楚一些让我从实际情况开始。
机械加工项目的程序已经在RoboDK中准备好了。由于我使用它进行3D打印,我使用推荐的Slic3r-Software来生成路径和打印参数。仍然造成困难的是Extruder()调用(见附件)。到目前为止,它们作为程序调用包含在RoboDK程序中,但在程序运行时它们被跳过,因为没有名为Extruder(2000), Extruder(2.011), Extruder(2.064)等的子程序。我需要将挤出机值转换为I/ o值,以便它们可以转移到我的打印设备上。

我能想到两种(合理的)方法,我想知道这是否可能。这两种选择的主要区别在于程序传递给机器人的方式。

1)我可以写一个脚本,在RoboDK中循环整个程序,检索每个挤出机调用并将其替换为I/O指令。这应该是可能的,对吧?
然后我会用

代码:
program.setRunType (PROGRAM_RUN_ON_ROBOT)
并使用KUKAVARPROXY在机器人上执行程序,假设它不仅支持机器人运动,还支持I/O指令。
这真的不是我喜欢的选择,因为它很可能会花很多时间来循环遍历程序并替换每个挤出机调用。我的测试对象非常小,但已经有大约37万行指令。我更喜欢选择2)。

2)我以一种适当的方式定制后处理器,我已经尝试过了,对我来说似乎更复杂。与艾伯特的建议类似,
引用: run_mode = RUNMODE_MAKE_ROBOTPROG_AND_UPLOAD

程序。MakeProgram(path_folder run_mode)
然后我会用

代码:
# run_mode = RUNMODE_MAKE_ROBOTPROG_AND_START
程序。MakeProgram (path_folder run_mode)
将程序传递给机器人并在那里执行。
这将是最好的解决方案,尽管还有一些事情不清楚。在选择path_folder时我需要考虑什么?我假设我必须使用ftp设置来访问机器人控制器,但是我必须把程序放在哪里呢?您是否有这种方法和KRC4控制器的经验,甚至可能是一个示例程序?我在尝试之前提前询问,因为其他几个与库卡打交道的董事会都说我需要做的事情介于困难和不可能之间。根据其他用户的说法,文件传输在一些限制下是可能的,但由于安全问题,远程启动程序被认为是不可能的。无论如何,我很乐意用RoboDK证明他们都是错的。

总结一下,我需要:
-修改我的程序使用脚本或自定义后处理器(这不是问题)
-将程序传送给机器人
-在机器人上执行程序(自动)

我希望有一个解决方案,我很感激你的帮助和支持。


附加文件 缩略图(s)

# 7
我建议您应用以下修改,以考虑挤出机调用:

1-离线编程:2022世界杯8强赛时间
我们最新的库卡KRC2后置处理器(默认后置用于库卡机器人,附件)考虑到挤出机命令,可以很容易地在后置处理器中进行定制。我建议您看一下文件的可配置部分(第75行左右)以及RunCode如何解析Extruder调用(第631行)。

我强烈建议您重新命名这个后处理器,如果您自定义它,因为一个新的RoboDK安装将覆盖这个文件。

2-在线节目:
RoboDK不支持使用驱动程序(Run On Robot选项)调用命名子程序。但是,有一个解决方法,您可以调用编号程序。要做到这一点,您必须用一个号码触发一个程序调用。使用GUI或API。使用该API的示例如下:
机器人。runcodecustomm ("Program 5", INSTRUCTION_CALL_PROGRAM)

要将其与Extruder命令集成,您可以在RoboDK项目中添加一个名为Extruder的新Python程序,然后使用sys解析传递的参数。(类似于RoboDK/Library/Macros/ArcOn.py的例子)。

这就是RoboDKSync。SRC文件看起来像最后。一旦程序被触发,您可以通过检索程序id来定制操作。实际上可以使用传递的参数作为E值(程序id)。

代码:
例13
-----运行COM_VALUE1 ---------程序
;(从RoboDK触发:使用机器人。RunCodeCustom("program id", INSTRUCTION_CALL_PROGRAM)
program_id = COM_VALUE1
开关program_id
案例1
;——运行程序1——
;钻()
;-------------------
案例2
;——运行程序2——
;削减()
;-------------------
ENDSWITCH


附加文件
. py KUKA_KRC2.py(大小:29.94 KB /下载:62022世界杯国家队名单32)
# 8
嗨,阿尔伯特,
再次感谢您的详细解释和建议。我可以看到这两种选择是如何工作的,在线节目甚至没有我想象的那么糟糕。
但是我更喜欢离线编程版本,我想请您评论一下我在转移和启动程序时遇2022世界杯8强赛时间到的麻烦。
是否有可能将程序转移到机器人并使用API立即执行?

正如我上面所写的,我的猜测是:
代码:
# run_mode = RUNMODE_MAKE_ROBOTPROG_AND_START
程序。MakeProgram (path_folder run_mode)
如果你能再看一遍那部分,并告诉我这是否/如何可能,那就太好了。
自动化对我的项目至关重要,这就是为什么我如此渴望解决这个问题。
非常感谢!
# 9
引用: 艾伯特
2-在线节目:
但是,有一个解决方法,您可以调用编号程序。要做到这一点,您必须用一个号码触发一个程序调用。使用GUI或API。使用该API的示例如下:
机器人。runcodecustomm ("Program 5", INSTRUCTION_CALL_PROGRAM)

除了我之前的问题,我还想知道另一件关于……的行为RunCodeCustom(或RunInstruction).是RunInstruction对python的阻塞调用?
假设我的代码是这样的:


代码:
机器人。RunInstruction (program01 INSTRUCTION_CALL_PROGRAM)

机器人。RunInstruction (program02 INSTRUCTION_CALL_PROGRAM)


program01和program02在RoboDKsync.src的自定义部分中定义。
RunInstruction如果调用成功,应该返回0。这是否意味着它要等到program01是完成了还是返回0 ifprogram01现有的吗?
或者换句话说,如果program01包含WAIT = 5s,在调用program02之前是否等待5秒?
是的,对RunInstruction的调用将阻塞(等待),直到您想要执行的程序完成。确保在程序的ID和名称之间添加一个空格。例如:
机器人。运行指令("程序2",INSTRUCTION_CALL_PROGRAM)

很抱歉,我错过了你关于在API中启动机器人程序的问题。这是可能的。默认情况下,此选项仅适用于Universal Robots(由于它们是协作的,因此可以轻松地远程启动程序)。

你可以在你的后处理器的ProgSendRobot调用中定制这个实现。如果您需要帮助来使用KUKA机器人实现此行为,请告诉我们。

代码:
def ProgSendRobot(self, robot_ip, remote_path, ftp_user, ftp_pass):
"""使用提供的机器人IP向机器人发送程序。
这个方法在ProgSave之后执行,如果我们选择
选项“发送程序到机器人”。
可以提供连接参数(IP和端口)
在RoboDK的机器人连接菜单中,或者硬编码在这里“”

UploadFTP(自我。PROG_FILES, robot_ip, remote_path, ftp_user, ftp_pass)




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