评论
作业完成后,将向 Grbl 发送软重置 (^x) 以确保所有模态组 'gcode:stop': () => {
this.event.trigger('gcode:stop');
this.workflow.stop();
const activeState = _.get(this.state, 'status.activeState', '');
const delay = 500; // 500ms
if (activeState === GRBL_ACTIVE_STATE_RUN) {
this.write(socket, '!'); // hold
}
setTimeout(() => {
this.write(socket, '\x18'); // ctrl-x
}, delay);
}
一个好的做法是每次开始工作之前都要进行探索。如果要保存工作坐标偏移量,请使用 |
只是想让你知道,我会在未来的版本中向 UI 添加一些特定于控制器的设置,这将允许用户决定是否在作业完成后发送软重置。 |
感谢你的回答!我理解软复位的原因,但是在做 pcb 时我必须对电路板执行多次“传递”(蚀刻、钻孔、铣削),并且它们中的每一个都必须具有相同的工作坐标。自从我更换工具后,我在每次通过时都会进行探测,但我只是探测 Z 轴。我会按照您的建议尝试保存工作坐标偏移量! 顺便说一句,我真的很讨厌 Mach3。我知道由于擦除次数减少,GRBL 无法在 eeprom 中保存坐标,但这很烦人。如果出现问题并且 grbl 重置(例如 EMI),我通常无法恢复工作,我不得不扔掉我正在处理的 pcb 板。当然这不是 cncjs 问题;) 再次感谢,这个软件很棒! |
@erpalma您可以根据您的具体情况分别存储 X 和 Y 值。只需使用串行通信发送 G10L20P1X0Y0。您的 XY 工作原点将保持不变,您可以重新探测为每个工具设置 Z。如果您重复相同类型的工作(PCB),我建议您命名一个夹具来制作某种夹具,以使工件放置一致。 |
嘿 Cheton,您刚才问我完成工作后会发生什么以及工作坐标如何不在 X0、Y0 处结束的示例。该位返回到我认为最初是 X0,Y0 的 X/Y,但坐标不在屏幕上显示 X0,Y0。如果您有兴趣,我有一些照片等。在关注线程之后,我相信是在导致问题的作业之后完成的重置,所以我将等待您的代码更改以允许打开和关闭它,然后看看情况如何。我不知道它是否对其他人有帮助,但我有一个在探测运行后运行的宏:G90 G0 X0 Y0 Z0 G92 X0 Y0 Z0 G10 L20 P1 X0 Y0 Z0
|
嗯,今天早上我可能没听懂,但我一直使用 G10L20P1X0Y0。问题是,当工作完成时,机器在工作坐标中位于 (x1,y1) wrt 到原点 (0,0),重置后机器仍在 (x1,y1) 但工作坐标表示 (x2,y2 ). 所以没有办法回到原来的(0,0)。我认为唯一的方法是在 gcode 文件末尾之前添加 G0 X0 Y0。 |
@dirtdiver9我对你的宏感到困惑。 我不确定您的探测程序是什么,因为有很多方法可以做到这一点。我认为在 G10L20 之前发送 G92 可能会导致重置后原点不存在的问题。在 G10 之前使用临时偏移可能会导致问题,因为 G92 在 grbl 重置时被清除。 |
嘿@neilferreri,我已将探测宏设置为 0,0,0,然后移开并停止。我穿上防尘靴,然后运行下面的宏并验证它确实位于电路板的 0,0,0 处。我很欣赏有关 G92 的提示,并将在宏中四处移动它,然后查看它的行为方式。再次感谢,帕特里克
|
@dirtdiver9 |
我只记得为什么我发送了一个暂停重置,它只有在你想立即从 UI 停止正在运行的 G 代码程序,然后返回到空闲状态时才有用。但是,对于正常的工作流程,没有必要在程序结束时发送 Grbl 重置。我将更改如下代码: 'gcode:stop': () => {
// Whether or not to force stop a G-code program
const { force = false } = { ...args[0] };
this.event.trigger('gcode:stop');
this.workflow.stop();
// "Hold and Reset" only when the user manually stop the workflow from the U
if (force) {
const activeState = _.get(this.state, 'status.activeState', '');
if (activeState === GRBL_ACTIVE_STATE_RUN) {
this.write(socket, '!'); // hold
}
setTimeout(() => {
this.write(socket, '\x18'); // ctrl-x
}, 500);
}
}
|
我不确定这是一个错误还是只是我的问题:当工作完成时,arduino 被软重置,失去工作坐标。我正在使用最新版本。