Contact me: hankecnc@gmail.com

从 python 脚本控制 GRBL #1375

推推 grbl 3年前 (2023-02-02) 484次浏览
关闭
flemish4 打开了这个问题 2020 年 4 月 1 日 · 7 条评论 · 由#1378修复
关闭

从 python 脚本控制 GRBL#1375

flemish4 打开了这个问题 2020 年 4 月 1 日 · 7 条评论 · 由#1378修复

评论

从 python 脚本控制 GRBL #1375
贡献者

我正在尝试从 bCNC python 脚本控制 GRBL。我正在尝试将运行 bCNC 的 rpi 上的 gpio 控制的动作与 GRBL 运动交错。

我成功地使用了 python 脚本,但是我坚持控制 GRBL。
我以为我应该能够从脚本内部执行 GCODE,但我找不到执行此操作的方法…

从命令行 app.executeGcode 可以工作,但是当从 gCode 文件执行相同的代码时,app 不可用。等待命令也不起作用。

我会以错误的方式解决这个问题吗?

更多信息:
我有一个连接到正在工作的 rpi 的工具更换器,但我需要能够使用更换器执行一个步骤,然后移动,然后另一个步骤。最终我希望能够生成我的 gcode 文件以包含工具更改脚本以实现全自动运行。我也可以整合位检查…

任何帮助表示赞赏。
谢谢

从 python 脚本控制 GRBL #1375

我真的帮不了你太多,但我确实有一个建议。
您正在尝试做的事情听起来像是为工具进行校准而编写的内容。
在 ProbePage.cy 中 – 单击校准按钮时,它会运行此代码。也许它会为您提供有关如何设置代码并将其运行到 GRBL 的线索。

def calibrate(self, event=None):
	self.set()
	if self.check4Errors(): return
	lines = []
	lines.append("g53 g0 z[toolchangez]")
	lines.append("g53 g0 x[toolchangex] y[toolchangey]")
	lines.append("g53 g0 x[toolprobex] y[toolprobey]")
	lines.append("g53 g0 z[toolprobez]")
	if CNC.vars["fastprbfeed"]:
		prb_reverse = {"2": "4", "3": "5", "4": "2", "5": "3"}
		CNC.vars["prbcmdreverse"] = (CNC.vars["prbcmd"][:-1] +
					prb_reverse[CNC.vars["prbcmd"][-1]])
		currentFeedrate = CNC.vars["fastprbfeed"]
		while currentFeedrate > CNC.vars["prbfeed"]:
			lines.append("%wait")
			lines.append("g91 [prbcmd] %s z[toolprobez-mz-tooldistance]" \
					% CNC.fmt('f',currentFeedrate))
			lines.append("%wait")
			lines.append("[prbcmdreverse] %s z[toolprobez-mz]" \
					% CNC.fmt('f',currentFeedrate))
			currentFeedrate /= 10
	lines.append("%wait")
	lines.append("g91 [prbcmd] f[prbfeed] z[toolprobez-mz-tooldistance]")
	lines.append("g4 p1")	# wait a sec
	lines.append("%wait")
	lines.append("%global toolheight; toolheight=wz")
	lines.append("%global toolmz; toolmz=prbz")
	lines.append("%update toolheight")
	lines.append("g53 g0 z[toolchangez]")
	lines.append("g53 g0 x[toolchangex] y[toolchangey]")
	lines.append("g90")
	self.app.run(lines=lines)
从 python 脚本控制 GRBL #1375
贡献者

您可以发送您发送给他的订单的示例;是针对 Arduino 的情况(没有 RPI 经验)吗?也许它会帮助我继续学习?另一个好奇心:它是什么样的转换器?
我在类似的道路上,因为隔离我会延迟项目的完成,但机器已经做出了释放工具、拿起工具、校准、继续的第一个动作。我前进得很慢。

从 python 脚本控制 GRBL #1375
贡献者作者

谢谢你的建议@DeanRM,如果我能够从插件访问“应用程序”,我也许可以使用它,但我不确定插件可以使用哪些变量。

如果有人感兴趣,下面是我的项目的一些进一步细节。

到目前为止,我只制作了主轴锁定部分。它使用一个螺钉、一个线性电位器和一个弹簧来前后移动一个扳手。电机控制和电位器反馈由树莓派处理。pi 还连接到运行 grbl 的 arduino。这个想法是将扳手弹到主轴上(pi python 脚本),然后非常简单地启用主轴(pi – grbl)以使扳手接合。扳手也可以用作探测 PCB 的接触点。

我有一个脚本,这一切都有效,但我只能让它从命令行运行,因为我可以将“应用程序”传递给函数,而从 gCode 我不能。

下一步将是一组套接字,每个套接字都包含一个位。扳手将锁定主轴,然后它将驱动到一个空的套筒位置,然后将释放钻头等等。套筒需要装有弹簧才能找到正确的方向。

从 python 脚本控制 GRBL #1375

从 python 脚本控制 GRBL #1375
贡献者作者

上述修复允许我在 gcode 文件中使用来自 python 的 app.executeGcode、app.running、app.sio_wait 等。

从 python 脚本控制 GRBL #1375
贡献者
马里奥巴斯 评论了 2020 年 4 月 5 日  

@ flemish4,不幸的是我缺乏知识来完全理解可以给 app.executeGcode、app.running、app.sio_wait 等的有用性。RPI
给出命令“运行 grbl”、“停止并等待”、执行 ATC 操作然后“ grbl 从 RPI 继续“?
那太好了,我没有那样想过,我打算使用新的引脚来驱动 ATC 和探针作为工具负载控制。
你在做 XATC 吗?

从 python 脚本控制 GRBL #1375
贡献者作者
佛兰德语4 评论了 2020 年 4 月 5 日 通过电子邮件
从 python 脚本控制 GRBL #1375
贡献者作者

好的,所以当从 gcode 运行时,使用 app.executeGcode 并没有真正起作用,因为它试图在脚本运行的队列上执行命令……所以看起来这是一个插件的工作。