M-коды
M-коды (M-codes, подготовительные функции) — это стандартизированные команды числового программного управления (ЧПУ), используемые для управления вспомогательными операциями металлорежущих, деревообрабатывающих и других станков с автоматическим циклом. В отличие от G-кодов, которые задают траекторию движения инструмента (геометрию обработки), M-коды управляют включением и выключением шпинделя, подачей охлаждающей жидкости, сменой инструмента, зажимом заготовки и другими дискретными действиями станка. M-коды являются частью языка программирования ISO 6983 (RS-274D), который лежит в основе большинства систем ЧПУ.
История и стандартизация
Первые системы ЧПУ, появившиеся в конце 1940-х — начале 1950-х годов (например, станки с перфолентой Массачусетского технологического института), использовали простые коды для управления релейной логикой станка. В 1960-х годах, с развитием числового управления, возникла необходимость унификации команд. В 1968 году был принят стандарт RS-274 (позднее ISO 6983), который определил базовый набор G- и M-кодов. Стандарт закреплял за M-кодами номера от M00 до M99, при этом часть кодов была зарезервирована для общих функций (например, M03 — вращение шпинделя по часовой стрелке), а часть оставлялась производителям станков для реализации специфических возможностей (например, M19 — ориентация шпинделя). В СССР и России стандартизация M-кодов проводилась в рамках ГОСТ 20999-83 (позднее заменён на ГОСТ Р ИСО 6983-1-2012), который в целом соответствовал международным нормам. Современные системы ЧПУ (FANUC, Siemens, Heidenhain) расширили диапазон M-кодов до M999, но базовая нумерация осталась неизменной.
Классификация M-кодов
M-коды делятся на две основные категории: стандартные (определённые международными стандартами) и расширенные (специфичные для конкретного производителя ЧПУ или модели станка).
Стандартные M-коды (ISO 6983)
| Код | Функция | Описание |
|---|---|---|
| M00 | Программный останов | Полная остановка станка (шпиндель, подача, охлаждение). Требуется нажатие кнопки «Пуск» для продолжения. |
| M01 | Останов с подтверждением | Аналог M00, но срабатывает только при включённом режиме «Останов по требованию» (Optional Stop). |
| M02 | Конец программы | Остановка выполнения программы, сброс указателя в начало. |
| M03 | Вращение шпинделя по часовой стрелке | Включение шпинделя с заданной скоростью (S-код). |
| M04 | Вращение шпинделя против часовой стрелки | Включение шпинделя в обратном направлении. |
| M05 | Останов шпинделя | Выключение вращения шпинделя. |
| M06 | Смена инструмента | Автоматическая смена инструмента в магазине (часто требует предварительного вызова инструмента через T-код). |
| M07 | Включение охлаждения (туман) | Включение системы подачи СОЖ в виде аэрозоля. |
| M08 | Включение охлаждения (струя) | Включение подачи смазочно-охлаждающей жидкости (СОЖ) в виде струи. |
| M09 | Выключение охлаждения | Отключение всех систем подачи СОЖ. |
| M10 | Зажим (патрон, тиски) | Активация зажимного механизма заготовки. |
| M11 | Разжим | Освобождение заготовки. |
| M19 | Ориентация шпинделя | Фиксация шпинделя в заданном угловом положении (используется для смены инструмента или измерений). |
| M30 | Конец программы с возвратом | Аналог M02, но с перемоткой ленты (или сбросом указателя) и автоматическим запуском. |
| M98 | Вызов подпрограммы | Переход к выполнению подпрограммы (номер указывается в P-коде). |
| M99 | Возврат из подпрограммы | Завершение подпрограммы и возврат к основной программе. |
Расширенные и специализированные M-коды
Производители ЧПУ добавляют собственные M-коды для расширения функциональности. Например:
- FANUC: M29 — включение режима нарезания резьбы с жёсткой синхронизацией; M50 — вызов макропрограммы.
- Siemens (Sinumerik): M70 — переключение между каналами управления; M40 — автоматический выбор диапазона скоростей шпинделя.
- Heidenhain: M91 — перемещение в опорную точку; M92 — перемещение в точку смены инструмента.
- Российские системы ЧПУ (например, «Маяк», «NC-210»): M13 — включение шпинделя по часовой стрелке с подачей СОЖ (комбинация M03+M08); M14 — аналогично для против часовой стрелки.
Применение в технологических процессах
M-коды используются на всех этапах обработки деталей на станках с ЧПУ: фрезерных, токарных, сверлильных, шлифовальных, электроэрозионных. Их применение можно разделить на несколько функциональных областей.
Управление шпинделем
Команды M03, M04, M05 являются основными для пуска и останова главного движения резания. В токарных станках M03 задаёт вращение патрона (детали), а во фрезерных — вращение фрезы. Скорость вращения задаётся отдельным S-кодом (например, S1500 M03 — шпиндель 1500 об/мин по часовой стрелке). Для многошпиндельных станков используются модифицированные коды (например, M03.1 — включение второго шпинделя).
Смена инструмента
M06 — ключевая команда для автоматической смены инструмента (ATC — Automatic Tool Changer). Перед её выполнением обычно задаётся T-код (номер инструмента в магазине). Последовательность: M05 (останов шпинделя), G91 G28 Z0 (подъём в точку смены), T2 (вызов инструмента №2), M06 (фактическая смена). В некоторых системах (например, Haas) M06 автоматически останавливает шпиндель и подводит его к позиции смены.
Управление СОЖ и вспомогательными системами
M07, M08, M09 управляют подачей смазочно-охлаждающей жидкости. В современных станках также используются M-коды для управления системами стружкоудаления (M31 — включение конвейера стружки), пневматическими зажимами, лазерными датчиками и системами измерения (M50 — запуск цикла измерения).
Остановы и контроль выполнения программы
M00 и M01 позволяют оператору вмешаться в процесс: проверить размеры, заменить заготовку, удалить стружку. M00 — безусловный останов (станок не продолжит работу до нажатия кнопки «Пуск»), M01 — условный (срабатывает только при активации соответствующего переключателя на пульте). Эти коды часто используются в отладочных режимах.
Работа с подпрограммами и макросами
M98 и M99 позволяют организовывать циклы и многократно повторяющиеся операции. Например, для сверления нескольких отверстий можно написать подпрограмму с G81 (цикл сверления) и вызывать её из основной программы командой M98 P1000 (вызов подпрограммы №1000). Возврат из подпрограммы осуществляется по M99. В современных системах (например, FANUC Series 30i) M-коды могут вызывать пользовательские макросы (M-коды с номерами от 100 до 999), что позволяет гибко настраивать станок под конкретные задачи.
Особенности программирования
При написании управляющих программ для ЧПУ важно учитывать, что M-коды могут быть модальными (действуют до отмены) и одномодальными (выполняются однократно). Большинство M-кодов (M03, M08, M10) являются модальными: например, M03 остаётся активным до тех пор, пока не будет выполнен M05 или другой код, изменяющий состояние шпинделя. Исключения — M00, M01, M06, M30, M98, M99, которые выполняются однократно.
В одной строке программы можно указывать несколько M-кодов, но не более одного из каждой группы (например, нельзя одновременно включить шпиндель по часовой и против часовой стрелки). Обычно в одной строке допускается до трёх M-кодов, если они не конфликтуют. Например: M03 M08 — включение шпинделя и подача СОЖ.
В системах ЧПУ, работающих по стандарту DIN 66025 (немецкий стандарт, близкий к ISO 6983), нумерация M-кодов может отличаться. Например, M17 вместо M02 для конца программы. В российских станках с ЧПУ «Электроника НЦ-31» использовалась своя система кодирования, где M00 мог означать не останов, а конец программы.
Примеры использования в программах
Токарная обработка (черновая обточка)
`` N10 G21 G40 G90 N20 T0101 M06 N30 S1200 M03 N40 G00 X50 Z2 N50 G71 U2 R1 N60 G71 P70 Q120 U0.5 W0.1 F0.2 N70 G00 X20 N80 G01 Z-30 F0.1 N90 X30 Z-40 N100 Z-60 N110 X40 N120 G00 X50 Z2 N130 M05 N140 M09 N150 M30 `` Здесь M03 включает шпиндель, M05 останавливает, M09 выключает СОЖ, M30 завершает программу.
Фрезерная обработка (сверление с вызовом подпрограммы)
`` N10 G21 G90 N20 T02 M06 N30 S2000 M03 N40 G00 X10 Y10 N50 G43 Z5 H02 N60 M98 P1000 (вызов подпрограммы сверления) N70 G00 Z50 N80 M05 N90 M30 O1000 (подпрограмма) N10 G81 G99 X10 Y10 Z-15 R2 F100 N20 X20 Y20 N30 X30 Y30 N40 G80 N50 M99 ``
Критика и ограничения
Основным недостатком M-кодов является их неполная стандартизация. Хотя ISO 6983 определяет базовый набор, каждый производитель ЧПУ (FANUC, Siemens, Heidenhain, Mitsubishi) добавляет собственные коды, что приводит к несовместимости программ между разными системами. Например, M19 (ориентация шпинделя) на станках FANUC может не работать на станках Siemens без дополнительной настройки. Это вынуждает технологов и операторов адаптировать программы под конкретное оборудование.
Кроме того, в современных системах ЧПУ (например, с управлением от ПК) M-коды постепенно вытесняются более гибкими методами — использованием макросов, PLC-программ (программируемых логических контроллеров) и высокоуровневых языков (например, Sinumerik Operate или Heidenhain TNC). Однако в массовом производстве и на старых станках M-коды остаются основным средством управления вспомогательными функциями.
Источники
- ГОСТ Р ИСО 6983-1-2012. Системы автоматизации производства. Числовое программное управление. Формат программы и определение адресных слов. Часть 1. Общие требования.
- Соседов А. В. Программирование станков с ЧПУ. — М.: Машиностроение, 2018.
- Руководство по программированию FANUC Series 0i-MF (B-64304RU/01).
- Справочник технолога-программиста станков с ЧПУ / Под ред. В. А. Гречишникова. — М.: Инфра-Инженерия, 2020.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →