Nomar记录一段历史
Marlin - 减慢打印速度

我目前正在使用 Marlin 固件(1.1.0-RC7 - 2016 年 7 月 31 日)并想尝试打印速度。

在我在process_next_command()函数中看到的Marlin_main.cpp文件中,有一个名为current_command的变量,它(据说)保存了行进距离和进给率(速度)的 G 代码值。

我期待旅行的实际命令看起来像这样:

 G1 X50 Y25.3 E22.4 F1500

但我正忙于弄清楚它到底在哪里。我假设如果我可以将F1500更改为F200 ,我可以有效地降低打印速度。

我知道configuration.h文件中的第 753 行:

 #define DEFAULT_MAX_FEEDRATE {300, 300, 5, 25} // (mm/sec)

我对设置固定的慢进给率不感兴趣,而是想更改单个 G 代码命令。有人能告诉我在哪里可以找到实际的 G 代码命令来编辑它吗?

1个回答

G 代码命令不在固件中。您试图在代码中找到根本不存在的东西。您的切片器负责生成一个 g 代码文件,然后您可以将其发送到您的打印机(通过从 SD 卡打印)或使用诸如 repetier 或 cura 之类的主机程序。 G 代码文件中的命令随后由固件执行,但它们不是固件的一部分。

命令的实际处理方式并非微不足道,它发生在多个地方。

命令在 Marlin_main.cpp 的process_commands中处理。在读取 G1 命令时,它调用get_coordinates来解析命令中的 X/Y/Z/进给率值。接下来, prepare_move函数被调用,它在调用plan_buffer_line (在planner.cpp )之前应用必要的转换(夹紧到终点,如果有增量则反向运动),它会做一些更多的预处理并计算“块”它被推到缓冲区上。接下来, planner_recalculate被调用,它遍历块来为它们找到可行的加速模式。最后,中断(在 stepper.cpp 中, ISR(TIMER1_COMPA_vect) )周期性地从缓冲区读取块并将信号实际发送到步进器。

我知道 G 代码命令不在固件中,我只是想找到获取和执行它们的确切部分。我想在执行之前编辑它获取的代码。
@makeithappen 从您的问题中并不清楚。我已经编辑了我的答案来解释(大致)运动规划是如何工作的。我不明白你为什么要走固件路线,如果你想把F1500改成F200就在你把文件发送到打印机之前做!

随机文章