Contact me: hankecnc@gmail.com

宏不适用于 gcode #397

推推 grbl 3年前 (2023-02-02) 332次浏览
关闭
12 个任务中的第 4 个
nesetburak 打开了这个问题 2018 年 11 月 29 日 · 4条评论
关闭
12 个任务中的第 4 个

宏不适用于 gcode#397

nesetburak 打开了这个问题 2018 年 11 月 29 日 · 4条评论

评论

宏不适用于 gcode #397

描述

我如何将宏与 g 代码一起使用。我正在上传这个 gcode;
G21 G90
G01 X10
T1 M6
主轴移动到 X10 坐标但不启动“T1 M6”宏

宏不适用于 gcode #397

版本

  • CNCjs:1.9.x
  • 节点.js:6.x
  • NPM:5.x

你如何安装CNCjs?

  • NPM
  • 下载 CNCjs 桌面应用程序

数控系统

  • Grbl
  • 冰沙
  • TinyG/g2核心

硬件

  • 树莓派
  • 台式机或笔记本电脑
  • 移动设备

操作系统

  • 不适用
  • 视窗
  • 苹果
  • Linux
宏不适用于 gcode #397
贡献者
米奇布拉德利 评论了 2018 年 11 月 29 日  

CNCjs 宏与 GCode 宏是分开的。
在 GCode 语言中,宏是以字母 M 开头的单词。它们的行为要么是标准的,要么是由机器控制器硬件和固件的设计者定义的。它们由机器控制器实现。机器控制器是运行 GRBL、TinyG、Marlin 或 Smoothieware 的微型计算机,因此 GCode“M”宏由 GRBL(等)固件处理。固件在接收到 GCode 流中的“M”代码字时运行宏。GCode 宏不必由其他 GCode 字的序列组成;事实上,它们通常不是以这种方式实现的,因为它们通常执行机器控制功能,而这些功能是任何其他 GCode 字无法完成的。
因此“宏”这个词是一个糟糕的选择,因为在通用计算社区中,“宏”通常意味着“由一系列其他标准命令组成的命令”。但 GCode 语言长期以来一直使用“宏”一词,现在它已成为语言定义的一部分。用户无法更改 GCode“M”宏,除非修改 GRBL 源代码、重新编译并在 Arduino 上安装新的 GRBL 固件映像。
CNCjs 有一个额外的宏层,它与 GCode 宏分开。CNCjs 宏名称可以是任意文本字符串。如果您选择使用名称“M6”,它看起来像一个 GCode 宏名称,但它仍然是一个与 GCode 宏名称分开的 CNCjs 宏。CNCjs 宏仅由用户通过单击名称左侧的“运行”箭头以交互方式执行。它们不是从 GCode 文本流中执行的。CNCjs 宏是用户定义的。它们是一般计算意义上的真正宏,因为它们由 GCode 命令序列组成,并带有一些用于插入参数的附加语法。
我认为已经有人要求您想要的功能 – 从 GCode 程序运行用户定义的代码序列的能力。这确实是一个有用的功能。乍一看,这似乎是一件容易做的事情,但当你深入挖掘时,它就会变得非常棘手。GCode 语言的设计非常糟糕,有许多模式会改变代码序列的行为,并且一行中的执行顺序有奇怪的规则。GRBL 等控制器对流控要求严格,多级缓冲使得机器状态、控制器状态和用户界面(CNCjs)状态难以精确同步。GCode 同步、流量控制和错误报告通常归结为计算行数——任何形式的 GCode 触发的用户宏都会深刻影响行编号方案。
一些独立的 GCode 系统确实有这样的编程特性。例如,GCode 语言有子程序和参数。经验表明,它们很难使用,因为 GCode 语言设计不佳。它是从一种非常简单的语言以一种特别的方式发展起来的,只有一些命令,并且扩展是由不同的人添加的,通常对真正的计算机语言设计一无所知。像 GRBL 这样的控制器固件没有实现扩展,部分原因是运行 GRBL 的 Arduinos 没有足够的内存,部分原因是人们很少再使用编程功能。代替编程功能,CAM 软件仅使用简单直接的功能来重新生成整个 GCode 程序。

宏不适用于 gcode #397

首先感谢您收集到的答案。我了解了 gcode 的历史。“宏”术语非常有趣。

你说;
如果我想解决这个问题,我将打开 grbl 或 g2core 固件并修改它。
例如;

宏不适用于 gcode #397

宏不适用于 gcode #397
贡献者
米奇布拉德利 评论了 2018 年 11 月 29 日  

如果您打算执行工具更换 – 这是“T1 M6”的通常含义 – 请参阅此页面:

https://github.com/cncjs/cncjs/wiki/Tool-Change

CNCjs 将停止让您手动运行 CNCjs 宏。

宏不适用于 gcode #397

以下是一些相关的讨论主题:

这触发了 CNCjs 中现有的工具更改功能:
#118

这导致在 GRBL 上提出了这个问题:
gnea/grbl#91

结果是 GRBL 被更改为跟踪和报告工具编号,但这就是 GRBL 对工具的支持范围。没有工具表或工具偏移。
https://github.com/gnea/grbl/blob/master/grbl/gcode.c#L315

g2core 支持带有工具偏移量的工具表:
https ://github.com/synthetos/g2/wiki/Tool-Offsets-and-Selection

CNCjs 在所有控制器类型的 M6 上暂停。