开源改变世界

工作完成后,Arduino 将进行软重置 #170

推推 grbl 2年前 (2023-02-02) 276次浏览
关闭
erpalma 打开了这个问题 2017 年 6 月 14 日 · 11 条评论
关闭

工作完成后,Arduino 将进行软重置#170

erpalma 打开了这个问题 2017 年 6 月 14 日 · 11 条评论

评论

工作完成后,Arduino 将进行软重置 #170
埃尔帕尔马 评论了 2017 年 6 月 14 日  

我不确定这是一个错误还是只是我的问题:当工作完成时,arduino 被软重置,失去工作坐标。我正在使用最新版本。

工作完成后,Arduino 将进行软重置 #170
合作者
奇顿 评论了 2017 年 6 月 14 日  

作业完成后,将向 Grbl 发送软重置 (^x) 以确保所有模态组[GC:G0 G54 G17 G21 G90 G94 M5 M9 T0 F0 S0] 都将恢复为默认值。例如,如果您运行以英寸 (G20) 为单位测量的 gcode 程序,则在软重置后单位模式将更改为毫米 (G21)。软复位也将清除 TLO。

 '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);
}

一个好的做法是每次开始工作之前都要进行探索。如果要保存工作坐标偏移量,请使用G10 L20Axes 小部件中的命令,如下所示。

工作完成后,Arduino 将进行软重置 #170

工作完成后,Arduino 将进行软重置 #170
合作者

只是想让你知道,我会在未来的版本中向 UI 添加一些特定于控制器的设置,这将允许用户决定是否在作业完成后发送软重置。

工作完成后,Arduino 将进行软重置 #170

感谢你的回答!我理解软复位的原因,但是在做 pcb 时我必须对电路板执行多次“传递”(蚀刻、钻孔、铣削),并且它们中的每一个都必须具有相同的工作坐标。自从我更换工具后,我在每次通过时都会进行探测,但我只是探测 Z 轴。我会按照您的建议尝试保存工作坐标偏移量!

顺便说一句,我真的很讨厌 Mach3。我知道由于擦除次数减少,GRBL 无法在 eeprom 中保存坐标,但这很烦人。如果出现问题并且 grbl 重置(例如 EMI),我通常无法恢复工作,我不得不扔掉我正在处理的 pcb 板。当然这不是 cncjs 问题;)

再次感谢,这个软件很棒!

工作完成后,Arduino 将进行软重置 #170

@erpalma您可以根据您的具体情况分别存储 X 和 Y 值。只需使用串行通信发送 G10L20P1X0Y0。您的 XY 工作原点将保持不变,您可以重新探测为每个工具设置 Z。如果您重复相同类型的工作(PCB),我建议您命名一个夹具来制作某种夹具,以使工件放置一致。

工作完成后,Arduino 将进行软重置 #170
泥土潜水员9 评论了 2017 年 6 月 14 日 通过电子邮件
工作完成后,Arduino 将进行软重置 #170

嗯,今天早上我可能没听懂,但我一直使用 G10L20P1X0Y0。问题是,当工作完成时,机器在工作坐标中位于 (x1,y1) wrt 到原点 (0,0),重置后机器仍在 (x1,y1) 但工作坐标表示 (x2,y2 ). 所以没有办法回到原来的(0,0)。我认为唯一的方法是在 gcode 文件末尾之前添加 G0 X0 Y0。

工作完成后,Arduino 将进行软重置 #170

@dirtdiver9我对你的宏感到困惑。
G0 X0 Y0 Z0 –> Go to 0,0,0
G92 X0 Y0 Z0 –> 暂时设置当前位置(0,0,0)为0,0,0
G10 L20 P1 X0 Y0 Z0 –> 保存当前位置(已经是 0,0,0,暂时是 0,0,0)到 0,0,0

我不确定您的探测程序是什么,因为有很多方法可以做到这一点。我认为在 G10L20 之前发送 G92 可能会导致重置后原点不存在的问题。在 G10 之前使用临时偏移可能会导致问题,因为 G92 在 grbl 重置时被清除。

工作完成后,Arduino 将进行软重置 #170
泥土潜水员9 评论了 2017 年 6 月 15 日 通过电子邮件
工作完成后,Arduino 将进行软重置 #170

@dirtdiver9
您的探针如何设置 0,0,0?如果您使用的是 G10,我会将 G92 排除在外。我使用 G92 的一种方法是在更换立铣刀时更改我的 Z。

工作完成后,Arduino 将进行软重置 #170
合作者
奇顿 评论了 2017 年 8 月 14 日  

我只记得为什么我发送了一个暂停重置,它只有在你想立即从 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 将进行软重置 #170
合作者

更改了 1.9.8 中的行为
https://github.com/cncjs/cncjs/releases/tag/v1.9.8

现在它不会在作业完成时发送软重置,除非您从 UI 手动停止正在运行的 G 代码程序。