婚戒 评论 on 10 Mar 2021
我们尽可能使用 LinuxCNC 定义的 gcode。这是基于 NIST 标准,并且经过深思熟虑的定义模态组。 Marlin 的列表一团糟,似乎任何人都可以在不遵循任何标准的情况下添加命令。我不想仅仅因为它们对一个人很重要而添加命令(这里不是在谈论你)。 我们可以为人们创建一种简单的方法来添加 G 或 M 代码以供自己使用。Grbl_ESP32 将解析 gcode 并查看它不知道的命令。然后它会将其传递给自定义文件以进行处理。 |
Protoneer 评论 on 10 Mar 2021
我完全同意这种说法。这实际上就是为什么人们更喜欢 GRBL 而不是其他实现的原因。 我也不想改变。 |
Protoneer 评论 on 10 Mar 2021
这正是我想做的,就像 custom_code_template.cpp 它会挂在 gcode 处理器的末端。 就我而言,我想控制 5-100 个螺线管/执行器。它与 M62 命令相同,但 IO 更多。 |
我也想借此机会添加自定义 G 代码,因为我想添加代码来发起 http 请求。有一种结构化的方式来添加额外的文件而不修改原始代码会很棒。 |
Protoneer 评论 on 10 Mar 2021
有趣…. 那是什么样的 http 请求呢? 完全同意这需要在一个单独的层上保持原始代码到位。 |
好吧,我想添加由 grbl 控制的基于 Tasmota 的设备(基于 ESP8266 的硬件的社区固件)。简单示例:使用便宜的 Tasmota 电源插头打开/关闭主轴。这将使高压完全远离我的设置。我更喜欢这个而不是使用继电器。https://github.com/arendst/Tasmota |
米奇布拉德利 评论 2021 年 3 月 11 日
对于不能很好地适应已建立的语言框架的扩展,一种常用的方法是“智能注释”,即将新语法包装在注释中。然而,在 GRBL 世界中,这会受到以下事实的影响:一些发件人撕掉评论并且不将它们发送到 GRBL。 另一个可能效果更好的解决方案是发明一个 M 代码。机器/控制器特定的 M 代码有很多 GCode 的先例;事实上,有人可能会争辩说它们是为此目的而设计的。 但是仍然存在一些问题:
|
婚戒 评论 2021 年 3 月 11 日
@MitchBradley是正确的。“因为 Marlin 这样做”证明改变对 Grbl 社区没有帮助。 这意味着添加命令的通用方法是更好的方法。 我有一些基本的代码工作。 Grbl_ESP32 应该如何响应 M115? 应该支持 EXTENDED_CAPABILITIES_REPORT 吗?应该怎么看? Cap:EEPROM:1 |
Protoneer 评论 2021 年 3 月 11 日
@bdring,我在下面的 openPNP 论坛上引用了一段关于它的更多背景信息…… 至少 M115 应该重新运行 FIRMWARE_NAME: XXXX 和 FIRMWARE_VERSION: X.XXX
https://groups.google.com/g/openpnp/c/VzSW0rScx2c/m/T5fshkY-BQAJ?pli=1
|
Protoneer 评论 2021 年 3 月 11 日
绝对同意通用方法。我的想法是它将在机器 cpp 中定义/链接或实现。 这样每台机器都可以像上面的 SMOOTHIE 示例一样添加额外的位。 |
Protoneer 评论 2021 年 3 月 11 日
对于 openPNP,我认为它不需要基本设置 |
婚戒 评论 2021 年 3 月 11 日
它似乎工作正常。M115 是一个非常简单的命令。您必须非常了解 Grbl 才能添加复杂的。可能也有限制。用户当心。
我让它向所有客户发送响应。这类似于探测命令。除了“OK”之外,没有太多的 gcode 发送响应 它位于 devt 的一个名为UserDefinedGcode的分支上 |
Protoneer 评论 2021 年 3 月 11 日
惊人的东西!感谢那!!! |
建议:添加 G-Codes 的框架不仅应该允许添加一些功能,还应该允许将 grbl 置于某些状态,例如将机器置于警报模式。 |
Protoneer 评论 2021 年 3 月 11 日 •
@bdring … 我正在尝试编译测试分支(UserDefineGcode),但它说找不到文件。
当我注释掉…
在 test_drive.h 中它再次编译。 |
Protoneer 评论 2021 年 3 月 11 日
尝试编译具有相同结果的 Simple_OLED 分支,但仅针对 oled_basic.cpp 文件。 这可能是 Windows 路径问题吗? |
婚戒 评论 2021 年 3 月 11 日
这时候使用自定义文件夹时必须使用PlatformIO进行编译。自定义文件夹不在src文件夹下,防止文件夹内所有文件自动编译。这可能会导致问题,特别是如果某些文件包含相同的函数名称,例如machine_init()。 |
婚戒 评论 2021 年 3 月 11 日
@joedirium有更好的方法来处理替代 I/O。与 I2S 输出类似,您可以创建一个新的 I/O 类,然后任何功能都可以在不更改现有代码的情况下使用它。它将添加另一个像这样的输出选项。 #define SPINDLE_OUTPUT_PIN GPIO_13
// or
#define SPINDLE_OUTPUT_PIN I2SO(12)
// or
#define SPINDLE_OUTPUT_PIN Tasmota(3)
话虽如此,我对这些设备一无所知,我没有。这不是我对自己工作感兴趣的事情。 |
@bdring谢谢你的建议!听起来很有希望能够使用现有的 G 代码。 定义 I2SO(n) (I2S_OUT_PIN_BASE + n)它看起来像一个带有偏移量的常数,而不像我的对象。 |
米奇布拉德利 评论 2021 年 3 月 12 日
GRBL 最初是用纯 C 语言编写的,用于在内存有限的小型 AVR 处理器上运行,#defines 到处都是以节省内存。然后将 Grbl_Esp32 转换为 C++,以便它可以由 Arduino IDE 编译,但转换主要是“C 装扮成 C++”。我们正在将其中的一部分更改为适当的 C++ 以使用抽象类,但这需要时间。设置框架、主轴支持和电机的许多方面现在都使用类,但许多核心仍然在(修饰过的)普通 C 中。有一个分支 NewPinClass 将 IO 引脚带入 C++ 类折叠,但它还没有被部署。它在我们的发展优先事项清单中排名很高。但坦率地说,像这样的“小”功能请求总是让我们分心…… |
米奇布拉德利 评论 2021 年 3 月 12 日
关于 Tasmota 情况的进一步思考:
|
Protoneer 评论 2021 年 3 月 12 日
@bdring….哈哈…我正在查看 VC 中的代码并在 Arduino 中编译它。 我已经切换到 PlatformIO,它更容易使用。 我已经用 openPNP 进行了测试,它正在接受 M115 结果!!!!? |
Protoneer 评论 2021 年 3 月 12 日
@MitchBradley 你在描述宇宙… ? |
婚戒 评论 2021 年 3 月 12 日
您还必须在每次编译之前“清理”。自动清理确实处理自定义文件夹。 |
@MitchBradley你是对的。请仅将 Tasmota 视为示例。它有一个庞大的社区,但无论如何,一些通用的 HTTP 请求方法将涵盖这一点。我假设已经链接了一个 HTTP 请求库。 MQTT 也可能有意义,但我不会尝试找到一个同时涵盖两者的解决方案。如果 HTTP 解决了,应该很容易以类似的方式添加 MQTT,添加 MQTT 库并进行一些更改。MQTT 应该更轻一些,但另一方面更具体。 我天真的想法是在任何电机运行时都不会进行主轴控制,因此得出结论认为此时 CPU 消耗或任何其他延迟不应该成为问题。但这只是一个黑盒假设。 |
Protoneer 评论 2021 年 3 月 12 日
婚戒 评论 2021 年 3 月 12 日
在 Discord 上讨论这类事情可能会更好。 |
whoim2 评论 2021 年 8 月 9 日 •
您好,esp32grbl 和 openpnp 之间的过程是怎样的?我还没有完全组装好我的机器,但我正在寻找有关这方面的任何信息。如果你能简单地告诉我未来的问题,那将对我有很大帮助。 例如,在初始设置期间,我必须从 openpnp 中删除 M400 命令才能让机器开始移动。这会影响机器的实际性能吗?会不会有球队领先于真实动作的问题?谢谢! |
米奇布拉德利 评论 2021 年 8 月 9 日
M114 与现有的 grbl 命令“?”是多余的。? 比 M114 好得多,因为它可以立即作为单个字符处理,而不会污染串行输入缓冲区。M114 几乎不可能在发件人中正确处理。cncjs 尝试了许多不同的技术来从 Marlin 获取及时的位置报告,但从未找到一种能够在不导致 GCode 数据流中断的情况下生成及时报告的解决方案。Marlin 系统通常(通常)附有由 Marlin 内部更新的 LCD 显示器。此外,Marlin 最常用于工作时间很长的 3D 打印机,其中很少需要细粒度的位置报告。 Grbl_ESP32 开发人员不太可能接受试图将 Grbl 变成 Marlin 的补丁。这样的建议已经提出了很多次,并且一直被拒绝。在某些情况下,可以接受 Marlin 可能具有的有用功能,但语法通常需要类似于 NIST RS274 / LinuxCNC 而不是 Marlin 方言。 |
openpnp 允许您使用正则表达式微调命令发送和读取/处理。很可能,许多(如果不是全部)任务可以通过正确配置 openpnp 来解决特定固件(esp32 grbl)的功能和响应。openpnp 开发人员对 esp32grbl 支持感兴趣,并且愿意在需要时进行更改。 |
Protoneer 评论 on 9 Mar 2021 •
请描述您希望实现的功能
我正在尝试设置拾取和放置机器。但它需要特殊的机器特定 gCode 命令。
示例:M115
openPNP 使用它来检测机器类型并配置应用程序。
为什么你认为这会改进 Grbl_ESP32?
Grbl_ESP32 在引脚分配方面已经非常可配置。
能够使用自定义命令扩展 vanilla GRBL 将使其超级可扩展。
这也可以用来代替宏,对吧?
这个功能会出现在很多用户面前吗?
这绝对是针对定制机器的