Перейти к содержанию

M-коды Fanuc: полный справочник для управления ЧПУ станками

Программирование ЧПУ | CNC
1 1 691 1
  • M-коды (от Miscellaneous - вспомогательные) - это команды, которые управляют функциями станка, не связанными с движением: шпинделем, охлаждением, сменой инструмента, подпрограммами, зеркальным отображением и взаимодействием с PLC. Без них G-код - просто траектория без станка.

    В этом справочнике - полные таблицы, живые примеры программ для токарных и фрезерных станков Fanuc 0i/16i/18i/30i, разбор нюансов и типичных ошибок.


    Правила работы с M-кодами

    Прежде чем перейти к таблицам - несколько базовых правил, которые действуют на всех контроллерах Fanuc:

    • Один M-код на блок - контроллер выдаст ошибку, если в одном блоке стоит два M-кода (исключение: некоторые комбинации типа M03 + M08 допускаются на 30i)
    • M-код выполняется в конце блока - если в блоке есть движение и M-команда, сначала выполняется движение, затем M
    • Исключение: M00, M01, M30 - останавливают выполнение немедленно
    • M-коды 100–999 - пользовательские (зависят от настройки станка/PLC); всегда проверяйте мануал конкретного станка
    • Один символ прокомментировать - используйте (комментарий в скобках) в том же блоке

    Управление программой: M00, M01, M02, M30

    Это фундаментальные команды - без них программа не может корректно начаться и завершиться.

    M-код Описание Токарный Фрезерный
    M00 Безусловная остановка программы
    M01 Условная остановка (по кнопке Optional Stop)
    M02 Конец программы (без перемотки на старых версиях)
    M30 Конец программы + перемотка в начало

    M00 - принудительная пауза для контроля

    Применяется, когда оператор должен вручную проверить деталь, удалить стружку, сменить зажим. Программа замирает, шпиндель и СОЖ останавливаются.

    O0001 (ПРОГРАММА ФРЕЗЕРОВАНИЯ);
    G21 G17 G40 G49 G80 G90;
    T01 M06 (ТОРЦЕВАЯ ФРЕЗА D50);
    G00 G54 X0 Y0 S800 M03;
    G43 H01 Z50. M08;
    G01 Z-2. F200;
    X100.;
    M00 (ПАУЗА - ПРОВЕРИТЬ РАЗМЕР ПОСЛЕ ЧЕРНОВОГО ПРОХОДА);
    G00 Z50.;
    T02 M06 (ЧИСТОВАЯ ФРЕЗА D50);
    G00 G54 X0 Y0 S1200 M03;
    G43 H02 Z50. M08;
    G01 Z-2. F100;
    X100.;
    G00 Z100. M09;
    M30;
    

    M01 - условная остановка

    Срабатывает только если на пульте нажата кнопка Optional Stop (опциональный останов). Удобно при наладке - не нужно редактировать программу: просто включите/выключите кнопку.

    G01 X50. F300;
    M01 (КОНТРОЛЬ ПРИ НАЛАДКЕ - В СЕРИИ КНОПКА ВЫКЛЮЧЕНА);
    G01 X100. F300;
    

    M30 vs M02

    M30 - стандарт для Fanuc: завершает программу и перематывает курсор в начало (готово к следующему запуску). M02 на современных Fanuc работает аналогично, но на старых контроллерах (Fanuc 6/10/11) не перематывает. Используйте M30 везде.


    Управление шпинделем: M03, M04, M05, M19, M29

    M-код Описание Примечание
    M03 Шпиндель по часовой стрелке (CW) Стандарт для правых инструментов
    M04 Шпиндель против часовой стрелки (CCW) Левая нарезка резьбы, обратное фрезерование
    M05 Остановка шпинделя Обязательна перед T-командой и M06
    M19 Ориентация шпинделя (угловая фиксация) Нужна перед расточкой и некоторыми ATC
    M29 Режим жёсткого нарезания резьбы (Rigid Tap) Синхронизирует шпиндель и ось Z

    Пример: шпиндель с ориентацией и жёсткой резьбой

    O0010 (НАРЕЗАНИЕ РЕЗЬБЫ M8);
    G21 G90 G40 G49 G80;
    T03 M06 (МЕТЧИК M8);
    G00 G54 X25. Y25.;
    G43 H03 Z50. S500 M03;
    M08;
    (ЖЁСТКОЕ НАРЕЗАНИЕ РЕЗЬБЫ G84 + M29);
    M29 S500 (ВКЛЮЧИТЬ RIGID TAP);
    G99 G84 X25. Y25. Z-20. R5. F0.8 (ШАГИ 0.8мм/об);
    G80 M09;
    G00 Z100.;
    M19 (ОРИЕНТИРОВАТЬ ШПИНДЕЛЬ ПЕРЕД СМЕНОЙ);
    M05;
    M30;
    

    Важно: M29 всегда прописывайте с той же скоростью S, что и в цикле G84. Расхождение скоростей приведёт к сигналу тревоги.


    Управление охлаждением: M07, M08, M09

    M-код Описание Токарный Фрезерный
    M07 СОЖ через шпиндель / туман
    M08 СОЖ потоком (flood coolant)
    M09 Отключение всей СОЖ

    На большинстве станков M08 и M07 можно включить одновременно (если есть два насоса). M09 отключает оба.

    T01 M06;
    G00 G54 X0 Y0 S1500 M03;
    G43 H01 Z50.;
    M07 (СОЖ ЧЕРЕЗ ШПИНДЕЛЬ);
    M08 (СОЖ ПОТОКОМ - ОБА ВКЛЮЧЕНЫ);
    G01 Z-10. F150;
    ...
    G00 Z100. M09 (ВЫКЛЮЧИТЬ ВСЮ СОЖ);
    M05;
    M30;
    

    Нюанс: На старых Fanuc (0M, 6M) M07 может конфликтовать с M08 — включается только последняя команда. Проверяйте параметр №3001 (или аналог в вашей версии).


    Смена инструмента: M06

    M06 - команда выполнить смену инструмента. Сам номер инструмента задаётся словом T в том же блоке или заранее.

    (ПРЕДВАРИТЕЛЬНАЯ ПОДГОТОВКА СЛЕДУЮЩЕГО ИНСТРУМЕНТА);
    T02 (ЗАГРУЗИТЬ T02 В ПОЗИЦИЮ ОЖИДАНИЯ);
    G00 Z100.;
    M05 M09 (ОСТАНОВИТЬ ШПИНДЕЛЬ И СОЖ ПЕРЕД СМЕНОЙ);
    T02 M06 (СМЕНИТЬ НА ИНСТРУМЕНТ №2);
    

    На токарных станках M06 не применяется — смена позиции револьверной головки задаётся командой T:

    (ТОКАРНЫЙ СТАНОК - СМЕНА ПОЗИЦИИ ГОЛОВКИ);
    G00 X100. Z50.;
    T0202 (ИНСТРУМЕНТ 2, КОРРЕКЦИЯ 2);
    G96 S200 M03;
    G01 X30. Z0 F0.15;
    

    Передачи шпинделя: M40–M44

    Используются на станках с механической коробкой передач. Выбор диапазона позволяет работать с нужным крутящим моментом или скоростью.

    M-код Описание Типовой диапазон об/мин
    M40 Средняя/автоматическая передача Авто по S
    M41 Низкая передача (High Torque) 0–500 об/мин
    M42 Высокая передача (High Speed) 500–6000 об/мин
    M43 3-я передача (если есть) зависит от станка
    M44 4-я передача (если есть) зависит от станка
    (ЧЕРНОВОЕ ТОЧЕНИЕ - НУЖЕН ВЫСОКИЙ МОМЕНТ);
    M41 (НИЗКАЯ ПЕРЕДАЧА);
    G97 S300 M03;
    G01 X30. F0.3;
    
    (ЧИСТОВОЕ ТОЧЕНИЕ - НУЖНА СКОРОСТЬ);
    M42 (ВЫСОКАЯ ПЕРЕДАЧА);
    G96 S250 M03 (ПОСТОЯННАЯ СКОРОСТЬ РЕЗАНИЯ);
    G01 X30. Z-50. F0.1;
    

    Подпрограммы: M98, M99, M97

    Подпрограммы - главный инструмент для устранения повторений в коде.

    M-код Описание
    M98 Pxxxx Вызов подпрограммы с номером xxxx
    M98 Pxxxxllll Вызов подпрограммы xxxx, повторить llll раз
    M99 Конец подпрограммы, возврат в основную
    M97 Pnn Локальный вызов (метка в той же программе, Fanuc 0i+)

    Формат M98

    M98 P___;
         └──┘
         Номер подпрограммы (до 4 цифр)
    
    M98 P00031005;
        └───┘└──┘
        0003 — повторить 3 раза
        1005 — номер подпрограммы O1005
    

    Пример: сверление матрицы 3×3 через подпрограмму

    O0020 (ОСНОВНАЯ ПРОГРАММА - МАТРИЦА ОТВЕРСТИЙ 3x3);
    G21 G90 G40 G49 G80;
    T01 M06 (СВЕРЛО D8);
    G00 G54 X0 Y0 S1200 M03 M08;
    G43 H01 Z50.;
    
    (РЯД 1 - Y=0);
    G00 Y0;
    M98 P0100 (ВЫЗОВ ПОДПРОГРАММЫ СВЕРЛЕНИЯ РЯДА);
    
    (РЯД 2 - Y=30);
    G00 Y30.;
    M98 P0100;
    
    (РЯД 3 - Y=60);
    G00 Y60.;
    M98 P0100;
    
    G00 Z100. M09;
    M05;
    M30;
    
    O0100 (ПОДПРОГРАММА - СВЕРЛЕНИЕ РЯДА ПО X);
    G99 G81 X0 Z-15. R5. F100; (1-е отверстие);
    X30.;                         (2-е отверстие);
    X60.;                         (3-е отверстие);
    G80;
    M99; (ВОЗВРАТ В ОСНОВНУЮ ПРОГРАММУ);
    

    Пример: M97 - локальный вызов (без отдельной программы)

    O0030;
    G00 X0 Y0;
    M97 P100 (ПЕРЕЙТИ НА МЕТКУ N100 ВНУТРИ ЭТОЙ ЖЕ ПРОГРАММЫ);
    G00 X50.;
    M30;
    
    N100 (ЛОКАЛЬНАЯ ПОДПРОГРАММА);
    G01 X20. F200;
    G01 Y20.;
    M99;
    

    Уровни вложенности: Fanuc 0i допускает до 4 уровней вложения подпрограмм (M98 внутри M98). Fanuc 30i - до 10 уровней.


    Токарные M-коды: патрон и задняя бабка

    Эти коды специфичны для токарных станков с гидравлическим или пневматическим зажимом.

    M-код Описание Применение
    M68 Зажим патрона (Hydraulic Chuck Close) Перед обработкой
    M69 Разжим патрона (Hydraulic Chuck Open) После обработки
    M78 Задняя бабка — подача (выдвинуть пиноль) Подпереть деталь
    M79 Задняя бабка — отвод (убрать пиноль) Перед съёмом детали
    O0040 (ТОКАРНАЯ ПРОГРАММА С ПАТРОНОМ И ЗАДНЕЙ БАБКОЙ);
    G21 G99 G40;
    M68 (ЗАЖАТЬ ПАТРОН);
    M78 (ВЫДВИНУТЬ ПИНОЛЬ ЗАДНЕЙ БАБКИ);
    T0101 (РЕЗЕЦ НАРУЖНОГО ТОЧЕНИЯ, КОРРЕКЦИЯ 1);
    G96 S200 M03;
    G00 X52. Z2.;
    M08;
    G71 U1. R0.5 (ЦИКЛ ЧЕРНОВОГО ТОЧЕНИЯ);
    G71 P10 Q20 U0.3 W0.1 F0.25;
    N10 G00 X30.;
    G01 Z0 F0.1;
    Z-60.;
    N20 X52.;
    G00 X100. Z100.;
    M09 M05;
    M79 (УБРАТЬ ПИНОЛЬ);
    M69 (РАЗЖАТЬ ПАТРОН);
    M30;
    

    Зеркальное отображение: M94, M95, M96

    Позволяет обработать зеркальную копию контура без написания новой программы.

    M-код Описание
    M94 Отмена зеркального отображения
    M95 Зеркало по оси X
    M96 Зеркало по оси Y
    O0050 (ЗЕРКАЛЬНАЯ ОБРАБОТКА);
    (ОРИГИНАЛ - ЛЕВАЯ ПОЛОВИНА);
    M98 P0200;
    
    (ЗЕРКАЛО ПО Y - ПРАВАЯ ПОЛОВИНА);
    M96 (ВКЛЮЧИТЬ ЗЕРКАЛО ПО Y);
    M98 P0200;
    M94 (ОТМЕНИТЬ ЗЕРКАЛО);
    
    M30;
    

    Управление паллетой: M60

    Применяется на горизонтальных обрабатывающих центрах с автоматической сменой паллет (APC).

    G00 G28 Z0 M19;
    M05 M09;
    M60 (СМЕНИТЬ ПАЛЛЕТУ - СТАНОК ПЕРЕКЛЮЧАЕТ СТОЛ);
    (НОВАЯ ДЕТАЛЬ УСТАНОВЛЕНА - ПРОДОЛЖИТЬ);
    T01 M06;
    G00 G55 X0 Y0 S800 M03;
    

    Ожидание сигнала PLC: M66

    M66 приостанавливает выполнение программы до получения сигнала от PLC (датчик, робот, конвейер). Критически важен для автоматических линий.

    G00 Z100. M09;
    M05;
    M66 (ЖДАТЬ СИГНАЛА ОТ РОБОТА О ГОТОВНОСТИ ДЕТАЛИ);
    (ПРОГРАММА ПРОДОЛЖАЕТСЯ ТОЛЬКО ПОСЛЕ СИГНАЛА);
    M68 (ЗАЖАТЬ ПАТРОН);
    T0101;
    G96 S200 M03;
    

    Пользовательские M-коды через макросы

    Fanuc Custom Macro B позволяет назначить любой M-код (из диапазона M96–M199 или заданного параметрами) на выполнение пользовательской подпрограммы. Это позволяет создавать собственные команды для нестандартных функций станка.

    Пример: назначить M151 на автоматическую продувку детали воздухом:

    (НАСТРОЙКА В ПАРАМЕТРАХ FANUC: параметр 6071 = 151);
    
    O9151 (ПОДПРОГРАММА ДЛЯ M151 - ПРОДУВКА ВОЗДУХОМ);
    M64 (ВКЛЮЧИТЬ ВОЗДУХ - ПОЛЬЗОВАТЕЛЬСКИЙ ВЫХОД PLC);
    G04 X3.0 (ВЫДЕРЖКА 3 СЕКУНДЫ);
    M65 (ВЫКЛЮЧИТЬ ВОЗДУХ);
    M99;
    
    (В РАБОЧЕЙ ПРОГРАММЕ);
    O0060;
    ...
    G00 Z100.;
    M151 (ПРОДУТЬ ДЕТАЛЬ ВОЗДУХОМ - ВЫЗОВЕТ O9151);
    T02 M06;
    

    Полная сводная таблица M-кодов Fanuc

    Фрезерные станки (Machining Center)

    M-код Функция Комментарий
    M00 Останов программы Оператор нажимает Cycle Start для продолжения
    M01 Условный останов Активен при включённой кнопке Optional Stop
    M02 Конец программы На современных = M30
    M03 Шпиндель CW (по часовой) Всегда с S
    M04 Шпиндель CCW (против часовой) Левая резьба, обратные фрезы
    M05 Стоп шпинделя Перед M06 и T
    M06 Смена инструмента В блоке с T
    M07 СОЖ туман / через шпиндель Точная обработка
    M08 СОЖ потоком (flood) Основное охлаждение
    M09 Вся СОЖ выкл Перед M06
    M13 Шпиндель CW + СОЖ вкл Сокращённая запись
    M14 Шпиндель CCW + СОЖ вкл Сокращённая запись
    M19 Ориентация шпинделя Перед расточкой, ATC
    M28 Возврат в исходную точку Альтернатива G28
    M29 Rigid Tap (жёсткое нарезание) Синхронизация Z и шпинделя
    M30 Конец программы + перемотка Стандарт Fanuc
    M41 Низкая передача Высокий момент
    M42 Высокая передача Высокая скорость
    M43 3-я передача Если есть
    M60 Смена паллеты (APC) Горизонтальные ОЦ
    M66 Ожидание сигнала PLC Роботизированные линии
    M94 Отмена зеркала
    M95 Зеркало по X
    M96 Зеркало по Y
    M97 Локальный вызов подпрограммы Fanuc 0i и новее
    M98 Вызов подпрограммы P = номер
    M99 Конец подпрограммы / возврат

    Токарные станки (Turning Center)

    M-код Функция Комментарий
    M00 Останов программы
    M01 Условный останов
    M03 Шпиндель CW + S
    M04 Шпиндель CCW Левая резьба
    M05 Стоп шпинделя
    M08 СОЖ вкл
    M09 СОЖ выкл
    M29 Rigid Tap Нарезание резьбы
    M30 Конец программы
    M40 Средняя/авто передача
    M41 Низкая передача
    M42 Высокая передача
    M68 Зажим патрона (гидравлика)
    M69 Разжим патрона
    M78 Задняя бабка — подать Выдвинуть пиноль
    M79 Задняя бабка — убрать
    M94 Отмена зеркала
    M95 Зеркало по X
    M98 Вызов подпрограммы
    M99 Конец подпрограммы

    Отличия Fanuc от Siemens и Haas

    Функция Fanuc Siemens Sinumerik Haas
    Конец подпрограммы M99 M17 M99
    Вызов подпрограммы M98 Pxxxx CALL / L M98 Pxxxx
    Локальный вызов M97 Pnn M97 Pnn
    Жёсткая резьба M29 CYCLE840 M29
    Ориентация шпинделя M19 SPOS= M19
    Ожидание PLC M66 WAIT / M0
    Конец программы M30 M30 M30
    Зеркало по X M95 MIRROR X0 G101

    Типичные ошибки и их причины

    Ошибка 1: два M-кода в одном блоке

    M03 M08; (❌ ОШИБКА НА Fanuc 0i - сигнал тревоги);
    
    M03 S1000; (✓ ПРАВИЛЬНО);
    M08;
    

    Исключение: некоторые станки с Fanuc 30i допускают M03 M08 в одном блоке при активном параметре #3404.

    Ошибка 2: M06 без предварительной остановки шпинделя

    T02 M06; (❌ ШПИНДЕЛЬ ЕЩЁ ВРАЩАЕТСЯ - АВАРИЯ ATC);
    
    G00 Z100.;
    M05 M09; (✓ СНАЧАЛА ОСТАНОВИТЬ ВСЁ);
    T02 M06;
    

    Ошибка 3: M99 вместо M30 в конце основной программы

    O0001;
    ...
    M99; (❌ СОЗДАЁТ БЕСКОНЕЧНЫЙ ЦИКЛ - ПРОГРАММА ПЕРЕЗАПУСТИТСЯ);
    
    O0001;
    ...
    M30; (✓ КОРРЕКТНОЕ ЗАВЕРШЕНИЕ);
    

    Ошибка 4: M98 с неправильным форматом P

    M98 P1005; (⚠️ НЕОДНОЗНАЧНО: повторить 1 раз программу O0005 или вызвать O1005?);
    M98 P00011005; (✓ ЯВНО: 0001 раз программу O1005);
    M98 P1005; (✓ НА БОЛЬШИНСТВЕ FANUC: вызов O1005 без повторений);
    

    Лучшая практика: всегда используйте 8-значный формат P при многократном вызове.


    Шаблоны готовых программ

    Стандартный старт фрезерной программы

    O____ (НАЗВАНИЕ ДЕТАЛИ / ОПЕРАЦИИ);
    (DATE: __ PROG: __ MATERIAL: __);
    G21 G17 G40 G49 G80 G90 (БЕЗОПАСНАЯ ИНИЦИАЛИЗАЦИЯ);
    G28 G91 Z0 (ВОЗВРАТ В РЕФЕРЕНС ПО Z);
    G90;
    T__ M06 (ИНСТРУМЕНТ №__, ОПИСАНИЕ);
    G00 G54 X__ Y__ (РАБОЧАЯ СК G54, ПОЗИЦИЯ СТАРТА);
    G43 H__ Z50. (КОРРЕКЦИЯ НА ДЛИНУ ИНСТРУМЕНТА);
    S____ M03 (СКОРОСТЬ ШПИНДЕЛЯ);
    M08 (СОЖ ВКЛЮЧИТЬ);
    

    Стандартное завершение программы

    G00 Z100. M09 (ОТВОД + ВЫКЛЮЧИТЬ СОЖ);
    M05 (ОСТАНОВИТЬ ШПИНДЕЛЬ);
    G28 G91 Z0 (ВОЗВРАТ В РЕФЕРЕНС);
    G90;
    M30 (КОНЕЦ ПРОГРАММЫ);
    

    Стандартный старт токарной программы

    O____ (ТОКАРНАЯ ОПЕРАЦИЯ);
    G21 G99 G40 (МЕТРИКА, ПОДАЧА ММ/ОБ, ОТМЕНА КОРРЕКЦИИ);
    G28 U0 W0 (ВОЗВРАТ В РЕФЕРЕНС);
    M68 (ЗАЖАТЬ ПАТРОН);
    T____ (ИНСТРУМЕНТ, КОРРЕКЦИЯ);
    G96 S___ M03 (ПОСТОЯННАЯ СКОРОСТЬ РЕЗАНИЯ);
    G00 X__ Z__;
    M08;
    

    FAQ

    Почему M30 лучше M02?
    M30 перематывает программу в начало после завершения, что позволяет запустить следующую деталь одним нажатием Cycle Start. M02 на ряде контроллеров этого не делает - оператор должен вручную найти начало программы.

    Можно ли использовать M98 рекурсивно (вызвать саму себя)?
    Нет. Fanuc не поддерживает рекурсию в подпрограммах - это приведёт к ошибке переполнения стека. Для повторений используйте счётчик в слове P: M98 P00051005 (5 вызовов O1005).

    Что значит «M-код не активен» на дисплее тревоги?
    Либо этот M-код не поддерживается данной конфигурацией станка (опция не куплена/не включена), либо параметры PLC не настроены. Проверьте мануал по конфигурации конкретного станка.

    Как найти M-коды, специфичные для моего станка?
    Откройте PARAMETERPMC (или PLC) → раздел M-code list или обратитесь к главе Appendix / Machine Specific M-Codes в документации производителя станка (не Fanuc, а именно станкостроителя).

    В чём разница M13/M14 и отдельных M03+M08?
    Функционально — никакой. M13 = M03 + M08 в одной команде. Использование M13 - вопрос стиля и компактности программы. Поддерживается не на всех станках.

    Можно ли остановить только СОЖ без остановки шпинделя?
    Да: M09 выключает СОЖ, шпиндель продолжает вращаться. Это используют, например, при выводе сверла из отверстия перед сменой.


    Что изучить дальше

    • Fanuc Parameter Manual (B-64490EN_05.PDF) - параметры PMC, влияющие на поведение M-кодов
    • Fanuc Custom Macro B (B-64304EN.pdf ) - создание пользовательских M-кодов через макросы
    • ГОСТ ISO 6983-1-2021 - международный стандарт на систему адресов ЧПУ (M-коды)
    • G-коды Fanuc - парные команды к M-кодам (G81–G89 сверлильные циклы, G71–G76 токарные циклы)