G29 разница между Q и D
Мне было интересно, в чем точная разница между переключателями Q и D для команды G29
? Похоже, они делают то же самое:
[D<bool>]
Режим сухого хода. Просто исследуйте сетку, но не обновляйте данные выравнивания стола
[Q<bool>]
Запрос текущего состояния выравнивания
@, 👍1
1 ответ
Лучший ответ:
TL;DR
Да, они разные, но активен ли Q
, зависит от параметра конфигурации a, иначе он игнорируется, и будет выполнен обычный G29
.
Вариант "D"
С опцией D
код G29
выполняется в режиме сухого хода:
* D Режим сухого хода. Просто оцените топологию стола - не применяйте
* или измените данные на уровне стола. Полезно проверить топологию
* после первого запуска G29.
Если вы посмотрите в исходный код G29
для ABL
, опция D установит логическое значение abl.dryrun
:
abl.dryrun = parser.boolval('D') || TERN0(PROBE_MANUALLY, no_action);
Это логическое значение приведет к исключению многих частей кода, например:
// Отмените смещение, потому что оно будет немедленно применено
// и вызывают компенсационное движение в Z.
..
// Автоматическое выравнивание стола завершено! Включите, если это возможно.
...
probe.preheat_for_probing(LEVELING_NOZZLE_TEMP, LEVELING_BED_TEMP);
...
// vector_3 planeNormal связанный код
...
extrapolate_unprobed_bed_level();
...
// Создайте матрицу, но еще не исправьте положение
...
// Исправьте текущее положение XYZ на основе наклонной плоскости.
...
// Отмените смещение, потому что оно будет немедленно применено
// и вызывают компенсационное движение в Z.
..
// Автоматическое выравнивание стола завершено! Включите, если это возможно.
Опция "Q"
Опция Q
в коде команды G29
доступна при активном ручном зондировании в файле configuration.h:
/**
* The "Manual Probe" provides a means to do "Auto" Bed Leveling without a probe.
* Use G29 repeatedly, adjusting the Z height at each point with movement commands
* or (with LCD_BED_LEVELING) the LCD controller.
*/
//#define PROBE_MANUALLY
Из источников:
*
* Чтобы выполнить ручное зондирование, просто повторите G29 до тех пор, пока процедура не будет завершена.
* Первый G29 принимает параметры. "G29 Q" - статус, "G29 A" - отбой.
*
* Q Query leveling and G29 state
Использование Q
в команде установит логическую переменную seenQ
, которая обеспечивает дополнительный вывод, как в режиме отладки.
// G29 Q также доступен при отладке
#if ENABLED(DEBUG_LEVELING_FEATURE)
if (seenQ || DEBUGGING(LEVELING)) log_machine_info();
if (DISABLED(PROBE_MANUALLY) && seenQ) G29_RETURN(false);
#endif
Просматривая код, вы снова натыкаетесь на:
abl.dryrun = parser.boolval('D') || TERN0(PROBE_MANUALLY, no_action);
В первом варианте ("D") первая часть утверждения уже была истинной
, поэтому последняя часть не представляла интереса, поскольку это утверждение является утверждением ИЛИ
. Теперь (для опции "Q") интерес представляет последняя часть, первая часть которой является ложной
. Последняя часть представляет собой троичный макрос Marlin:
TERN0(OPTION, T) Если ОПЦИЯ включена, emit T в противном случае emit 0 (false).
Итак, если PROBE_MANUALLY
был включен/определен в конфигурации.файл h, троичный макрос возвращает no_action
("one"/true
, так как это логическое значение: no_action = seenA || seenQ
), в противном случае "ноль"/false
. И если это так, то abl.dryrun
истинен
, и весь код, указанный в опции "D", также будет опущен. Но для no_action применяется дополнительное исключение
; это приведет к раннему завершению функции (строка 478):
if (no_action) G29_RETURN(false);
Пока это общий ответ, следующий специфичен для Ender 5 Plus.
При рассмотрении другого вашего вопроса выясняется, что используемый принтер-это Ender 5 Plus. Если вы используете стоковую прошивку, вы можете заглянуть в источники, поскольку они доступны (через их Google Drive) Creality для Ender 5 Plus.
Покопавшись в источниках, версия прошивки взята из ветки 1.1.x, они ссылаются на разработку Marlin 2016/2017. Если вы посмотрите на источники, конфигурационный файл не определяет необходимый PROBE_MANUALLY
для того, чтобы Q
стал активным в G29 Q
, отправленном на принтер, в таком случае Q
игнорируется, и будет выполнен обычный G29
. Обратите внимание, что реализация кода G29
способна обрабатывать опцию Q
, но поскольку она не включена в этой конфигурации, она не будет работать.
- Повторная калибровка исходного положения
- Как установить границы Z-зонда в прошивке при использовании автоматического выравнивания стола?
- Как увеличить количество точек зондирования для датчика BLTouch в прошивке Marlin?
- Marlin Регулировка скорости подачи
- Как установить смещение Z для дома
- Указание смещения Z в прошивке Marlin
- BLTouch Зондирование Периодически Терпит Неудачу
- Как добавить параметры меню в жидкокристаллическое меню (прошивка Marlin)?