Marlin - замедление скорости печати

В настоящее время я использую прошивку Marlin (1.1.0-RC7 - 31 июля 2016) и хотел бы поэкспериментировать со скоростью печати.

В файле Marlin_main.cpp Я вижу в функции process_next_command() переменную current_command, которая (предположительно) содержит значения G-кода для расстояния перемещения и скорости подачи (speed).

Я ожидаю, что фактическая команда для путешествия будет выглядеть примерно так:

G1 X50 Y25.3 E22.4 F1500 

но я никак не могу понять, где именно он находится. Я предполагаю, что если я смогу изменить F1500 на F200, я смогу эффективно замедлить скорость печати.

Я знаю о строке 753 в файле configuration.h:

#define DEFAULT_MAX_FEEDRATE {300, 300, 5, 25}  // ( мм/сек)

Я не заинтересован в установке фиксированной медленной скорости подачи, но предпочел бы изменить отдельные команды G-кода. Кто-нибудь может сказать мне, где я могу найти фактическую команду G-Code для ее редактирования?

, 👍4


1 ответ


1

Команды G-code отсутствуют в прошивке. Вы пытаетесь найти в коде что-то, чего там просто нет. Ваш слайсер отвечает за создание файла g-кода, который затем можно отправить на принтер (либо распечатав с SD-карты), либо с помощью хост-программы, такой как repetier или cura. Команды в файле G-code затем выполняются прошивкой, но они не являются ее частью.

То, как на самом деле обрабатываются команды, не является тривиальным, и это происходит в нескольких местах.

Команды обрабатываются в process_commands Marlin_main.cpp . При чтении команды G1 он вызывает get_coordinates для анализа значений X / Y / Z / feedrate из команды. Затем вызывается функция prepare_move, которая применяет необходимые преобразования (зажим для конечных точек и обратную кинематику, если у вас есть дельта) перед вызовом plan_buffer_line (который находится в planner.cpp), который выполняет еще некоторую предварительную обработку и вычисляет "блок", который помещается в буфер. Затем вызывается planner_recalculate, который перебирает блоки, чтобы найти для них возможные шаблоны ускорения. Наконец, прерывание (в stepper.cpp , ISR(TIMER1_COMPA_vect)) периодически считывает блоки из буфера и фактически отправляет сигналы на степперы.


,

Я понимаю, что команд G-Code нет в прошивке, я просто пытаюсь найти точную часть, где они извлекаются и выполняются. Я хотел бы отредактировать полученный код до того, как он будет выполнен., @make it happen

@makeithappen Это не было ясно из вашего вопроса. Я отредактировал свой ответ, чтобы объяснить (примерно), как работает планирование движения. Я не понимаю, почему вы идете по пути прошивки, если вы хотите изменить F1500 на F200, просто сделайте это перед отправкой файла на принтер!, @Tom van der Zanden