Files
ukuetis-docs/gcode_v2.md

25 KiB

Ukuetis G-code v2

Все команды делятся на две большие группы:

  • Команды-настройки (P-команды) — задают параметры работы печи: имя программы, термопару, максимальную температуру, допуски, коэффициенты PID, условия безопасности. Обычно располагаются в начале программы, но могут встречаться в любом месте — они применяются немедленно при исполнении.
  • Команды-программы (K-команды) — управляют непосредственно процессом обжига: задают линейный нагрев/охлаждение до заданной температуры (K203) или выдержку на температуре (K107). Исполняются последовательно и занимают время.

Сводная таблица команд

Настройки (P-команды)

Код Описание Статус
P001 Имя программы v2 ↓
P101 Предупреждение/ошибка по отклонению скорости нагрева от плана gcode.md
P102 Предупреждение/ошибка по отклонению температуры от плана gcode.md
P103 Предупреждение/ошибка по превышению абсолютной температуры gcode.md
P106 Ограничение максимальной температуры печи v2 ↓
P150 Допуск по температуре (абсолютный или процентный) v2 ↓
P177 Метка времени последнего сохранения (Unix timestamp), используется для синхронизации v2 ↓
P200 Настройка термопар (основная, альтернативная, внешняя, внутренняя) v2 ↓
P201 Правила безопасности (по мощности нагревателя или по температуре термопары) v2 ↓
P202 Название печи v2 ↓
P220 Контроль средней PID-ошибки в скользящем окне v2 ↓
P301 Период ШИМ gcode.md
P302 Параметры PID-регулятора (коэффициенты и профили по температуре) v2 ↓
P303 Автонастройка PID gcode.md
P304 Выбор нагревателя gcode.md
P305 Максимальный процент использования нагревателя gcode.md
P306 Мощность нагревателя печи в Ваттах; используется для расчёта энергопотребления v2 ↓
P800 Разработчик программы v2 ↓
P801 Тип программы v2 ↓
P802 Комментарий к программе v2 ↓
P810 UUID программы (идентификатор для матчинга статусов контроллера и сервера) v2 ↓
P850 Расчётная длительность программы (только для UI, не исполняется) v2 ↓

Команды-программы (K/M-команды)

Код Описание Статус
K001 Версия интерпретатора (маркер совместимости) gcode.md
K101 Нагрев/охлаждение до температуры с заданной скоростью или временем gcode.md
K107 Быстрый выход на температуру с опциональной выдержкой v2 ↓
K110 Нагрев/охлаждение до температуры с макс. скоростью и опциональной выдержкой gcode.md
K120 Выключить нагрев gcode.md
K121 Выключить нагрев при достижении пирометрического конуса gcode.md
K122 Выключить нагрев при достижении пирометрического конуса (с учётом охлаждения) gcode.md
K150 Отправить уведомление с произвольным сообщением gcode.md
K151 Ожидание действия оператора gcode.md
K200 Пауза на заданное время (нагрев выключен) gcode.md
K203 Линейный разгон/охлаждение до целевой температуры v2 ↓
M200 Управление вентиляцией (0/100) gcode.md
M201 Управление приточкой (0/100) gcode.md
M202 Управление заслонкой (0/100) gcode.md

v2 ↓ — команда задокументирована в этом файле ниже. gcode.md — код из старого чернового формата, приведён только для справки.


Pretty G-code

Pretty G-code — расширение формата, которое позволяет делать команды более читаемыми для человека, добавляя свободный текст прямо в строку команды.

Принцип работы парсера:

Парсер обрабатывает каждую строку по следующим правилам:

  1. Строка, начинающаяся с ;, считается комментарием и игнорируется целиком.
  2. Всё после ; в середине строки игнорируется (встроенный комментарий).
  3. Из остатка строки извлекаются токены вида <Буква><Число> — например S1120, R130, H1.5, T600. Всё, что не соответствует этому паттерну, игнорируется.
  4. Первый токен строки — это имя команды (например K203, P106). Остальные — её аргументы.

Исключения:

  • P001 — имя программы читается как произвольная строка (до ; или конца строки), а не как набор токенов <Буква><Число>.
  • P200 — аргументы (MAINTK, C1, TK) не соответствуют паттерну <Буква><Число> и разбираются как ключевые слова по собственным правилам команды.

Благодаря этому правилу можно писать:

K203 Move to S1120 °С with speed R130 °С/h

Парсер извлечёт из этой строки K203, S1120, R130 и проигнорирует слова Move, to, with, speed и строку °С/h. Результат идентичен краткой записи K203 S1120 R130.


K203 — линейный нагрев/охлаждение до целевой температуры

K203 S1120 R130    ; Подъём температуры до 1120°C со скоростью 130°C/ч
K203 S980 H1.5     ; Переход к 980°C за 1.5 часа (скорость вычисляется автоматически)
K203 S600 M45      ; Охлаждение/нагрев до 600°C за 45 минут
K203 S300          ; Мгновенное изменение сетпоинта до 300°C (без расчёта скорости)

Pretty G-code (human-readable комментарии):

K203 Move to S1120 °С with speed R130 °С/h
K203 Move to S980 °С in H1.5 hours
K203 Move to S600 °С in M45 minutes
K203 Move to S300 °С

Параметры:

Параметр Описание
S<температура °C> Обязательно. Положительное целевое значение.
R<°C/ч> Скорость нагрева/охлаждения. Взаимно исключается с H/M.
H<часы> Длительность в часах (может быть дробной). Используется для расчёта скорости.
M<минуты> Длительность в минутах (может быть дробной). Можно комбинировать с H.

Особенности:

  • Если заданы H и/или M, скорость вычисляется из текущей точки и целевой температуры.
  • При отсутствии R/H/M команда задаёт сетпоинт сразу, затем исполнитель ждёт стабилизации ~5 секунд.
  • Допускается охлаждение: целевая температура может быть ниже стартовой.

K107 — быстрый выход на температуру с выдержкой

K107 S1120         ; Дождаться стабилизации на 1120°C
K107 S1030 H2      ; Выдержка 2 часа после выхода на 1030°C
K107 S850 M30      ; Выдержка 30 минут после выхода на 850°C

Pretty G-code (human-readable комментарии):

K107 Hold on S1220 °С for M5 minutes
K107 Hold on S1030 °С for H3 hours

Параметры:

Параметр Описание
S<температура °C> Обязательно. Положительное целевое значение.
H<часы> / M<минуты> Необязательная выдержка после стабилизации. Можно комбинировать.

Особенности:

  • Сетпоинт устанавливается мгновенно. Исполнитель ждёт стабилизации ~20 секунд.
  • При наличии выдержки отсчёт начинается после стабилизации. Без выдержки команда завершается сразу после стабилизации.
  • Допускается переход на более низкую температуру.

P177 — метка времени последнего сохранения

P177 Updated at 09.03.2026, 17:17:18 U1773065838

Особенности:

  • Команда содержит метку времени Unix в параметре U<секунды>.
  • Текст до U-параметра (например Updated at DD.MM.YYYY, HH:MM:SS) игнорируется парсером.
  • Парсер извлекает только U<целое_число> — Unix timestamp в секундах.
  • Команда генерируется автоматически редактором при сохранении программы.
  • Используется для разрешения конфликтов при синхронизации между устройством и клиентом: побеждает файл с бо́льшим timestamp.
  • При отсутствии команды P177 timestamp считается равным 0.

P001 — имя программы

P001 Bisque firing    ; Название загружаемой программы (для телеметрии и логов)

Особенности:

  • Строка имени начинается сразу после пробела и продолжается до конца строки или комментария ;.
  • Последняя встреченная команда P001 перезаписывает имя программы.
  • Имя сохраняется в прошивке и публикуется в MQTT.

P106 — ограничение максимальной температуры печи

P106 S1250    ; Установить предельную температуру 1250°C

Pretty G-code (human-readable комментарии):

P106 Max temp: S1250 °С

Параметры:

Параметр Описание
S<°C> Целое положительное значение в градусах Цельсия.

При превышении предела срабатывает механизм безопасности и программа прерывается.


P150 — допуск по температуре

P150 D3    ; Разрешённое отклонение ±3°C
P150 P2    ; Разрешённое отклонение ±2% от целевого значения

Pretty G-code (human-readable комментарии):

P150 Temp tolerance in D3 °С
P150 Temp tolerance in P0.8 %

Особенности:

  • Используйте D<значение> для абсолютного допуска в градусах.
  • Используйте P<проценты> для относительного допуска. Минимальное фактическое значение — 1°C (встроенное ограничение).
  • Последняя команда P150 определяет активный режим допуска. P0 переключает режим на процентный, но величина допуска берётся из последнего абсолютного значения.

P200 — выбор основной термопары

P200 MAINTK C1 TK    ; Основной канал C1, термопара типа K
P200 MAINTK C1 TS    ; Основной канал C1, термопара типа S

Особенности:

  • Поддерживаются типы: B, E, J, K, N, R, S, T (буква после T).
  • Формат состоит из ключевого слова MAINTK, указания канала C1 и типа термопары.
  • Последняя команда P200 задаёт активный тип и публикует его в телеметрии.

P201 — правило безопасности по мощности нагревателя

P201 T800 P60    ; Прервать программу, если при мощности ≥60% температура ниже 800°C

Pretty G-code (human-readable комментарии):

P201 Stop if T < T1000 °С & PWM > P100

Параметры:

Параметр Описание
T<°C> Целевая температура в °C (целое число).
P<проценты> Минимальная мощность нагревателя в процентах (0…100).

P202 — название печи

P202 Plavka    ; Название печи

Особенности:

  • Строка значения читается как произвольный текст (до ; или конца строки).
  • Используется как метаданные: публикуется в телеметрии и отображается в UI.
  • Последняя встреченная команда P202 перезаписывает значение.

P220 — контроль средней PID-ошибки

P220 T25    ; Прервать программу при |ошибке PID| > 25°C в скользящем окне

Pretty G-code (human-readable комментарии):

P220 Set max PID error T30 °С

Параметры:

Параметр Описание
T<°C> Положительное значение порога в градусах (до 2000°C).

Особенности:

  • Значение применяется сразу после команды и действует до следующего изменения.

P302 — параметры PID-регулятора

P302 P1.50 I0.0020 D0.25          ; Глобальные коэффициенты PID
P302 P2.00 I0.0030 D0.40 T600     ; Профиль PID для температур ниже 600°C

Pretty G-code (human-readable комментарии):

P302 Set PID: P1.5 I0.0015 D3 for T < T400 °C
P302 Set PID: P1.5 I0.0015 D3

Параметры:

Параметр Описание
P<kp> Пропорциональный коэффициент (обязателен).
I<ki> Интегральный коэффициент (обязателен).
D<kd> Дифференциальный коэффициент (обязателен).
T<°C> Создаёт профиль, который применяется при температурах ниже указанного порога.

Особенности:

  • Обязательны все три аргумента: P<kp>, I<ki>, D<kd>.
  • Дополнительный параметр T<температура> создаёт профиль для температур ниже указанного порога. Можно задать до восьми профилей; они сортируются по возрастанию T.
  • Команда без T обновляет текущие коэффициенты PID немедленно.
  • Повторные вызовы P302 допускаются в любом месте программы; последняя команда без T задаёт базовые параметры.

P306 — мощность нагревателя печи

P306 P9000    ; Мощность нагревателя 9000 Вт

Pretty G-code (human-readable комментарии):

P306 Kiln power P9000 W
P306 P3500

Параметры:

Параметр Описание
P<Ватты> Обязательно. Номинальная мощность нагревателя в Ваттах (целое положительное).

Особенности:

  • Мощность публикуется в MQTT в топик /telemetry/gcode/kiln_power_w при исполнении команды.

  • На основе заданной мощности и текущего PWM-процента контроллер каждую секунду интегрирует потреблённую энергию:

    E += kiln_power_w × pwm_percent / 100 × (1с / 3600)   [кВт·ч]
    
  • Накопленная энергия с начала текущего обжига публикуется в MQTT в топик /telemetry/gcode/current_energy_kwh.

  • Счётчик обнуляется при каждом старте новой программы (переходе в статус RUNNING).

  • Если команда P306 не задана, расчёт энергии не производится и топик не публикуется.

  • Последняя встреченная команда P306 задаёт активную мощность и перезаписывает предыдущее значение.


P800 — разработчик программы

P800 OVO

Особенности:

  • Строка значения читается как произвольный текст (до ; или конца строки).
  • Используется как метаданные программы: публикуется в телеметрии и отображается в UI.
  • Последняя встреченная команда P800 перезаписывает значение.

P801 — тип программы

P801 Высокий

Особенности:

  • Строка значения читается как произвольный текст (до ; или конца строки).
  • Задаёт классификацию или режим программы; используется как метаданные.
  • Последняя встреченная команда P801 перезаписывает значение.

P802 — комментарий к программе

P802 Специальный режим для маленьких печей, которые быстро остывают: в нем есть медленное охлаждение в конце

Особенности:

  • Строка комментария читается как произвольный текст (до ; или конца строки).
  • Используется как поясняющий текст к программе; отображается в UI.
  • Последняя встреченная команда P802 перезаписывает значение.

P810 — UUID программы

P810 I3f47ac10-58b2-4a45-ad3d-e10b8c7f00a1

Особенности:

  • Строка UUID читается как произвольный текст (до ; или конца строки).
  • Используется для матчинга статусов: контроллер публикует этот UUID в MQTT, сервер по нему сопоставляет запущенную программу с актуальным статусом.
  • При загрузке программы UUID выставляется в MQTT-топик и остаётся там на всё время выполнения программы.
  • Последняя встреченная команда P810 перезаписывает значение.

P850 — расчётная длительность программы

P850 Firing and cooling to 300°C will take 1 day, 2 hours, 27 minutes S95270

Параметры:

Параметр Описание
S<секунды> Расчётная длительность в секундах (целое число).

Особенности:

  • Команда содержит расчётное время в параметре S<секунды>.
  • Текстовая часть строки (до параметра S) игнорируется парсером — это human-readable описание для удобства чтения файла.
  • Генерируется автоматически редактором при сохранении программы на основе расчёта длительности.
  • Не исполняется прошивкой — служит исключительно для отображения расчётного времени в UI.
  • При отсутствии команды P850 длительность программы считается неизвестной.

Пример последовательности

Стандартный G-code:

; Settings
P001 "Stoneware cycle"              ; Название программы
P200 MAINTK C1 TK                   ; Основной канал C1, термопара типа K
P106 S1280                          ; Максимальная температура 1280°C
P150 D3                             ; Допуск ±3°C
P302 P1.30 I0.0025 D0.35 T600       ; PID-профиль для температур ниже 600°C
P302 P1.10 I0.0015 D0.20            ; Базовые коэффициенты PID
P201 T750 P70                       ; Аварийное условие по мощности
P220 T20                            ; Контроль средней ошибки PID

; Program
K203 S600 R180                      ; Разгон до 600°C со скоростью 180°C/ч
K203 S980 H1.5                      ; Переход к 980°C за 1.5 часа
K107 S980 H0.5                      ; Выдержка 30 минут на 980°C
K203 S1220 R80                      ; Подъём до 1220°C со скоростью 80°C/ч
K107 S1220 M45                      ; Выдержка 45 минут
K203 S300                           ; Плавное охлаждение до 300°C (сетпоинт снизится мгновенно, исполнитель дождётся стабилизации)

Pretty G-code:

P001 Stoneware cycle
P200 MAINTK C1 TK
P106 Max temp: S1280 °С
P150 Temp tolerance in D3 °С
P302 Set PID: P1.30 I0.0025 D0.35 for T < T600
P302 Set PID: P1.10 I0.0015 D0.20
P201 Stop if T < T750 °С & PWM > P70
P220 Set max PID error T20 °С

K203 Move to S600 °С with speed R180 °С/h
K203 Move to S980 °С in H1.5 hours
K107 Hold on S980 °С in H0.5 hours
K203 Move to S1220 °С with speed R80 °С/h
K107 Hold on S1220 °С for M45 minutes
K203 Move to S300 °С