Знакомство с языком G- и M-кодов Mach3
Этот раздел рассказывает о языках (таких как G-коды) которые воспринимаются и интерпретируются Mach3.
Определенная функциональность, которая определена для станков архитектурой NIST NMC (Контроллер Нового Поколения) но не была включена в Mach3, в этом разделе представлена серым цветом. Если эта функциональность важна для вашего приложения, тогда сообщите о своих потребностях ArtSoft Corporation, и они будут включены в наши планы разработки.
10.1 Некоторые определения
10.1.1 Линейные оси
Оси X, Y и Z формируют стандартную координатную систему правой руки ортогональных линейных осей. Положение трех линейных механизмов движения выражаются с испольхованием координат этих осей.
10.1.2 Оси вращения
Оси вращения измеряются в градусах как обернутые линейные оси, в которых направление положительного вращения является направлением против часовой стрелки если смотреть с положительного конца соответствующих осей X, Y или Z. Под словом «обернутые линейные оси» мы подразумеваем те, в которых угловое положение возрастает безпредельно (в сторону плюс бесконечности) по мере того как ось поворачивается против часовой стрелки и убывает безпредельно (в сторону минус бесконечности) когда ось поворачивается по часовой стрелке. Обернутые линейные оси используются независимо от того, присутствует или нет механическое ограничение на вращение.
По часовой стрелке или против часовой стрелки используется с точки зрения рабочей поверхности. Если рабочая поверхность закреплена на поворачивающемся рабочем столе, который поворачивается по осям вращения, то поворот против часовой стрелки с точки зрения рабочей поверхности выполняется поворотом рабочего стола в направлении, которое (для стандартной конфигурации станка) выглядит как направление по часовой стрелке с точки зрения кого-то, кто стоит рядом со станком.
10.1.3 Ввод шкалы
Можно установить факторы шкалы для каждой оси. Они будут применены к значениям выражений X, Y, Z, A, B, C, I, J и R каждый раз когда они будут появляться. Это позволит изменять размеры обрабатываемых частей и создавать зеркальные изображения, используя отрицательные значения. Задание шкалы это самое первое изменение, которое производится со значениями, и остальные изменения, такие как уровень подачи, всегда основаны на значениях шкалы.
Отступы, хранящиеся в таблицах инструмента и креплений, не подвергаются воздействию шкалы перед применением. Конечно шкала может быть применена в то время, когда значения вводятся (скажем используя G10).
10.1.4 Управляемая точка
Управляемая точка, это точка, чьим положением и уровнем движения управляют. Когда отступ длины инструмента равен нулю (значение по умолчанию), это точка на оси шпинделя (часто называемая точкой замера) находящаяся на определенном расстоянии за окончанием шпинделя, обычно возле окончания держателя инструмента, вставленного в шпиндель. Местоположение управляемой точки может перемещаться по оси шпинделя с помощью задания какого-либо положительного значения для отступа длины инструмента. Это значение обычно является длиной используемого режущего инструмента, так что управляемая точка находится в конце режущего инструмента.
10.1.5 Скоординированное линейное движение
Для перемещения инструмента по заданному пути, станок должен часто координировать движение нескольких осей. Мы используем термин «скоординированное линейное движение» для описания ситуации, когда, номинально, каждая ось движется с постоянной скоростью и все оси движутся с их начальных позиций к их конечным позициям одновременно. Если движутся только оси X, Y, и Z (или любая одна или две из них), то это получается движение по прямой, отсюда и слово «линейное» в термине. В фактическом движении часто не представляется возможным поддерживать постоянную скорость, так как при начале и/или окончании движения требуется ускорение или замедление. Однако, возможно управление осями таким образом, чтобы все время каждая из осей завершала одинаковую часть требуемого движения, как и другие оси. Это передвигает инструмент по тому же пути, и мы также называем такое движение скоординированным линейным движением.
Скоординированное линейное движение может осуществляться либо на преобладающем уровне подачи, либо на ускоренной подаче. Если физические ограничители на скорость осей делают желаемый уровень недоступным, все оси замедляются для поддержки желаемого пути.
10.1.6 Уровень подачи
Уровень, на котором движение управляемой точки или осей номинально производится на установившейся скорости, которая может задаваться пользователем. В Интерпретаторе, интрепретация уровня подачи является следующим, если только не используется режим инверсии времени:
- Для движения, использующего одну или более линейных осей (X, Y, Z и возможно A, B, C), без одновременного вращательного движения оси, уровень подачи обозначает количество единиц длинны в минуту, проходимых по программируемому линейному XYZ(ABC) пути
- Для движения, использующего одну или более линейных осей (X, Y, Z и возможно A, B, C), с одновременным вращательным движением оси, уровень подачи обозначает количество единиц длинны в минуту, проходимых по программируемому линейному XYZ(ABC) пути, объединенный с угловой скоростью роторных осей, умноженный соответствующим Диаметром Коррекции оси, умноженным Пи (Пи = 3.14152); т.е. декларированный периметр детали
- Для движения одной вращательной оси, без движения осей X, Y и Z , уровень подачи означает количество градусов за минуту вращения вращательной оси
- Для движения двух или трех вращательных осей, без движения осей X, Y и Z, уровень применяется следубщим образом. Пусть dA, dB, и dC будут углами в градусах, через которые оси A, B и C соответственно должны двигаться. Пусть D = sqrt (dA2 + dB2 + dC2). Концептуально, D это измерение общего углового движения, с использованием обычной эвклидовой метрики. Пусть Т будет количеством времени, требуемым для движения на D градусов на текущем уровне подачи в градусах в минуту. Оси вращения нужно двигать в режиме скоординированного линейного движения, так чтобы зафиксировнное время от начала до окончания движения было Т, плюс время требуемое для ускорения и замедления.
10.1.7 Движение по дуге
Любая пара линейных осей (XY, YZ, XZ) может управляться для движения по окружной дуге, в плоскости пары осей. Пока это происходит, третья линейная ось и вращательная ось может управляться для движения совместно на эффективном постоянном уровне. Как и в скоординированном линейном движении, движения могут быть скоординированы таким образом, что ускорение и замедление не влияет на путь.
Если вращательные оси не движутся, но третья линейная ось движется, траэкторией управляемой точки будет спираль.
Уровень подачи при движении по дуге является таким, как описано в разделе Уровень подачи выше. В случае спирального движения, уровень применяется по спирали. Будьте осторожны, так как в других системах используются другие интерпретаторы.
10.1.8 Охлаждение
Охлаждение поливом и охдаждение напылением могут включаться независимо друг от друга. Но выключаются они вместе.
10.1.9 Перерыв
Станку можно дать команду сделать перерыв в работе (т.е. держать все оси без движения) на определенное время. Чаще всего это используют для того, чтобы остановиться и вычистить стружку или чтобы дать шпинделю набрать нужную скорость. Единицами, в которых задается перерыв, могут быть секунды или миллисекунды в зависимости от настроек в меню Настройки >> Логика.
10.1.10 Единицы
Единицы используемые для обозначения расстояний по осям X, Y и Z могут измеряться в миллиметрах или дюймах. Единицы, используемые для всех остальных используемых в управлении станком значений, изменить нельзя. Различные значения используют различные специфические единицы. Скорость шпинделя измеряется в оборотах в минуту. Положение осей вращения измеряется в градусах. Уровни подачи выражаются в текущих единицах длины в минуту или в градусах в минуту, как описано выше.
Предупреждение: Советуем очень внимательно проверять отклик системы на изменение единиц когда отступы инструмента и креплений загружены в таблицы, когда эти отступы активны и/или когда выполняется подпрограмма.
10.1.11 Текущее положение
Управляемая точка всегда находится в каком-либо положении называемым «текущим положением» и Mach3 всегда знает где это. Числа представляющие текущее положение регулируются при отсутствии какого-либо движения оси в случае:
- Единицы длины были изменены (но не забудьте о данном выше Предупреждении)
- Отступы длины инструмента изменены
- Отступы координатной системы изменены
10.1.12 Выбранная плоскость
Всегда существует «выбранная плоскость», которая должна быть XY, YZ или XZ плоскостью станка. Конечно ось Z перпендикулярна плоскости XY, ось Х плоскости YZ а ось Y плоскости XZ.
10.1.13 Таблица инструмента
Для каждого слота таблицы инструмента назначено ноль или один инструмент.
10.1.14 Смена инструмента
Mach3 позволяет вам применять процедуру для включения автоматической смены инструмента путем использования макросов или при необходимости менять инструмент вручную при необходимости.
10.1.15 Устройство смены спутников
Mach3 позволяет вам применять процедуру для включения устройства смены спутников путем использования макросов.
10.1.16 Режимы управления путем
Станок может находиться в одном из двух режимов управления путем: (1) режим точного останова, (2) режим постоянной скорости. В режиме точного останова, станок останавливается на короткий промежуток времени в конце каждого запрограммированного движения. В режиме постоянной скорости, острые углы пути могут немного закругляться, для возможности поддержания уровня подачи. Эти режимы существуют чтобы дать пользователю возможность контролировать компромисс, задействованный в прохождении углов, так как настоящий станок имеет конечный предел ускорения в связи с инерцией его механизма.
Точный останов оправдывает свое название. Станок делает перерыв при каждой смене направления, и, в силу этого, точно следует по заданному пути.
Постоянная скорость перекроет ускорение в новом направлении с замедлением в текущем, для того чтобы поддерживать заданный уровень подачи. Это включает закругление любых углов но обеспечивает более быструю и плавную работу. Это особенно важно при вырезании деталей нестандартной формы и плазменной резке. Чем ниже ускорение осей станка, тем большим будет радиус закругленного угла.
В плазменном режиме (Задается в диалоге Настройка>>Логика) система пытается оптимизировать угол движения для плазменной резки с помощью соответствующего алгоритма.
Также возможно определить ограничивающий угол, так чтобы изменения в направлении, превышающем этот угол, всегда воспринимались как Точный Останов, даже несмотря на то, что включен режим Постоянной Скорости. Это позволяет сгладить пологие углы, но в то же время избежать чрезмерного закругления острых углов даже на станках с низким ускорением на одной или более осях. Эта возможность включается в диалоге Настройка >> Логика, а ограничивающий угол задается с помощью DRO. Эти настройки скорее всего прийдется подбирать экспериментальным путем, в зависимости от характеристик станка и, возможно, пути инструмента конкретно взятой задачи.
10.2 Взаимодействие интерпретатора с управлением
10.2.1 Управление обходом подачи и скорости
Команды Mach3, которые включают (М48) или выключают (М49) переключатели обхода подачи и скорости. Это используется чтобы иметь возможность обходить эти переключатели для некоторых операций станка. Идея состоит в том, что оптимальные настройки были включены в программу, и оператор не должен их менять.
10.2.2 Управление удалением блока
Если управление удалением блока включено, строки кода начинающиеся со слеша (символ удаления блока) не выполняются. Если выключено, то эти строки выполняются.
10.2.3 Управление произвольным остановом программы
Управление произвольным остановом программы (смотри Настройка >> Логика) работает следующим образом. Если включена и строка ввода содержит код М1, выполнение программы остановится на последней команде этой строки до нажатия кнопки Начать Цикл.
10.3 Файл инструмента
Mach3 содержит файл инструмента для каждого из 254 доступных для использования инструментов.
Каждая строка данных файла содержит данные для одного инструмента. Это позволяет определять дляну инструмента (ось Z), диаметр инструмента (для фрезеровки) и радиус наконечника инструмента (для сверления).
10.4 Язык подпрограмм
10.4.1 Обзор
Язык основан на строках кода. Каждая строка (также называемая «блок») может сожержать команды для совершения станком нескольких различных действий. Строки кода могут быть собраны в файл для создания программы.
Типичная строка кода состоит из необязательного номера строки в начале, за которым следуют одно или более «выражений».Выражение состоит из буквы с числом (или чем-то оцениваемым как число). Выражение может либо давать команду, либо содержать агрумент для команды. Например, G1 X3 этодействительная строка кода с двумя выражениями. “G1” это команда означающая «двигаться по прямой на заданном уровне подачи», а “X3” содержит значение аргумента (значение Х должно быть равно 3 в конце движения). Большинство команд начинаются с G или M (для Главных (General) и Остальных (Miscellaneous)). Выражения для этих команд называются «G кодами» и «М кодами».
Язык содержит две команды (М2 или М30), любая из которых завершает программу. Программа может заканчиваться до конца файла. Строки файла, следующие за окончанием программы не будут выполняться в обычных условиях.
10.4.2 Параметры
Программа Mach3 управляет массивом из 10,320 числовых параметров. Многие из них имеют специфическое применение. Параметры ассоциирующиеся с креплениями постоянны с течением времени. Остальные параметры будут неопределенными при загрузке Mach3. Параметры сохраняются при перезагрузке интерпретатора. Параметры с определенным Mach3 значением приведены на рисунке 10.1
Рисунок 10.1 – Определенные системой параметры
/*
Parameter nuber – номер параметра
Meaning – значение
Home – начальное положение
Scale – шкала
Offset – отступ
Current work offset nuber – номер текущего рабочего отступа
Work offset – рабочий отступ
*/
10.4.3 Системы координат
Станок имеет абсолютную координатную систему и 254 систем рабочих отступов (крепления).
Вы можете задать эти отступы инструмента командой G10 L1 P~ X~ Z~. Выражение Р определяет номер отступа заданного инструмента.
Вы можете задать отступы креплений системы используя G10 L2 P~ X~ Y~ Z~ A~ B~ C~
Выражение Р определяет задаваемые крепления. Выражения X, Y, Z и т.д. это координаты для начала осей в рамках абсолютной координатной системы.
Вы можете выбрать один из первых семи рабочих отступов используя G54, G55, G56, G57, G58, G59. Любой из 255 рабочих отступов может быть выбран путем использования G59 P~ (т.е. G59 P23 выберет крепление 23). Абсолютная система координат может быть выбрана используя G59 P0.
Вы можете задать отступ текущей координатной системы используя G92 или G92.3. Этот отступ после будет применен поверх рабочего отступа координатной системы. Этот отступ может быть отменен с помощью G92.1 или G92.2.
Рисунок 10.2 – Начальные буквы выражений
Вы можете совершать прямые движения в абсолютной координатной системе станка используя G53 вместе с G0 или G1.
10.5 Формат строки
Допустимая строка вводимого кода состоит из следующих, по порядку, с тем ограничением, что существует ограничение на максимум (в данный момент это 256) символов допущенных в строке.
- необязательный символ удаления блока, которым является слеш “/”
- необязательный номер строки
- любое количество выражений, настроек параметров, и комментариев
- указатель конца строки (указатель конца строки или подача строки или оба)
Любой ввод, не разрешенный явно, запрещен, и в случае его появления Интерпретатор выдает ошибку или игнорирует строку.
Пробелы и табуляции разрешены в любом месте строки кода и не меняют значение строки, за исключением тех, которые присутствуют в комментариях. Это делает допустимым ввод довольно странно выглядящих строк. Например, строка g0x +0. 12 34y 7 эквивалентна g0 x+0.1234 y7.
Также во вводе допускаются пустые строки. Они будут просто игнорироваться.
Ввод не чуствителен к регистру, за исключением комментариев, т.е. любые буквы вне комментария могут быть в верхнем или нижнем регистре без изменения значения строки.
10.5.1 Номер строки
Номер строки это буква N, за которой следует целое число (без знака) между 0 и 99999, написанное не более чем пятью цифрами (например 000009 не является допустимым значением). Номера строк могут повторяться или использоваться не по порядку, хотя как правило этого стараются избегать. Номер строки использовать необязательно (и эта возможность пропуска является общей), но если все же его использовать, то он должен стоять в правильном месте.
10.5.2 Метки подзадач
Метка подзадачи, это буква О, за которой следует целое число (без знака) между 0 и 99999, написанное не более чем пятью цифрами (например 000009 не является допустимым значением). Метки подзадач могут использоваться не по порядку но должны быть уникальными в пределах одной программы, хотя нарушение этого правила может и не восприниматься как ошибка. Ничего кроме комментария в строке, где стоит метка подзадачи, больше писать нельзя.
10.5.3 Выражение (Word)
Выражение это буква, отличная от N и O, за которой следует действительное число.
Выражения могут начинаться с любой из букв, показанных на рисунке 11.2. Таблица включает N и O для полноты, хотя, как указано выше, номера строк не являются выражениями. Некоторые буквы (I, J, K, L, P, R) могут иметь различные значения в разном контексте.
Действительное значение это набор символов, который может быть обработан так, чтобы получить число число. Действительное значение может быть явным числом (таким как 341 или -0.8807), значением параметра, выражением или значением единичной операции. И сразу же следует их описание. Обработка символов для получения числа называется оценкой (нахождением значения величины - evaluating). Явное число оценивает само себя.
10.5.3.1 Число
Следующие правила используются для (явных) чисел. В этих правилах цифра это отдельный символ между 0 и 9.
- Число состоит из (1) необязательного знака плюс или минус, за которым следует (2) от нуля до множества цифр, за которыми, в свою очередь, может следовать (3) одна десятичная точка, за которой также следует (4) от нуля до множества цифр – при условии что где-нибудь в числе присутствует хотя бы одна цифра.
- Есть два типа чисел: целые и десятичные. Целые не содержат в себе десятичной точки, десятичные содержат.
- Числа могут содержать любое количество цифр, в соответствии с ограничением на длину строки. Однако сохранены будут всего около 17 значимых чисел (достаточно для всех известных приложений)
- Ненулевые числа без знака в качестве первого символа принимаются за положительные. Обратите внимание, что начальный (стоящий перед десятичной точкой) и конечный (стоящий после десятичной точки и последней ненулевой цифры) нули разрешены но не обязательны. Число написанное с начальным и конечным нулями будет иметь то же значение при чтении как и число не имеющее этих дополнительных нулей.
Числа используемые Mach3 для специфических целей часто ограничены каким-то конечным набором значений или некоторые из них каким-то особым диапазоном значений. В множестве случаев, при использовании десятичные числа должны быть близки к целым; это правило включает в себя значения индексов (например для чисел параметров и карусельных слотов), М коды, и G коды умноженные на 10. Десятичное число считается достаточно близким к целому если оно находится в пределе 0.0001 целого числа.
10.5.3.2 Значение параметра
Значение параметра это символ # за которым следует действительное значение. Действительное значение должно оцениваться как целое между 1 и 10320. Целое число это номер параметра, а само значение значения параметра это любое число, хранящееся в пронумерованном параметре. Символ # предшествует другим операциям, так например #1+2 означает число, найденное добавлением 2 к значению параметра 1 а не значение параметра 3. Хотя #[1+2] будет означать как раз значение находящееся в параметре 3. Символ # может повторяться; например ##2 означает значение параметра, чей индекс (целое) это значение параметра 2.
10.5.3.3 Выражения (expression) и двоичные операции
Выражение это набор символов, начинающийся с левой скобки [ и оканчивающийся симметричной правой скобкой ]. Между скобок находятся числа, значения параметров, математические операции и другие выражения. Выражение может обрабатываться для получения числа. Выражения в строке в строке при чтении обрабатываются первыми, перед исполнением чего либо еще. Вот пример выражения:
[1+acos[0]]-[#3**[4.0/2]]]
Двоичные операции появляются только внутри выражений. Определено девфть двоичных операций. В их число входит четыре базовых математических операции: сложение (+), вычитание (-), умножение (*) и деление (/). Три логических операции: неисключающее или (OR), исключающее или (XOR), и логическое и (AND). Восьмая операция это операция модуля (MOD). Девятая операция это операция равнозначности (**), повышающая числа в левой части операции до значения правой.
Двоичные операции поделены на три группы. Первая это: равнозначность. Вторая : умножение, деление и модуль. Третья: сложение, вычитание, логическое неисключающее или, логическое исключающее или и логическое и. Если операции собраны вместе (например в выражении [2.0/3*1.5-5.5/11.0]), операции первой группы выполняются перед операциями второй группы а операции второй группы перед операциями третьей группы. Если выражение содержит больше одной операции из одной и той же группы (такие как первое / и * в примере), то операция стоящая левее выполняется первой. Следовательно пример эквивалентен: [((2.0/3)*1.5)-(5.5/11.0)], что может быть упрощено до [1.0-0.5] и равняется 0.5.
Логические операции и операции модуля выполняются над любыми действительными числами а не только над целыми. Нулевое число эквивалентно логическому «ложь», а ненулевое число эквивалентно логическому «истина».
10.5.3.4 Одиночное значение операции
Одиночное значение операции это либо "ATAN", за которым следует одно выражение поделенное на другое выражение (например ATAN[2]/[1+3]) или любое другое имя одиночной операции, за которым следует выражение (например SIN[90]). Единичными значениями являются: ABS (абсолютное значение), ACOS (арк-косинус), ASIN (арк-синус), ATAN (арк-тангенс), COS (косинус), EXP (e поднятое до данной отметки), FIX (округление вниз), FUP (округление вверх), LN (натуральный логарифм), ROUND (округление до ближайшего целого числа), SIN (синус), SQRT (квадратный корень), and TAN (тангенс). Аргументы одинарных операций, которые применяются для измерения угла (COS, SIN и TAN) даются в градусах. Значения возвращаемые одиночной операцией которая возвращает измерения угла (ACOS, ASIN и ATAN) также даны в градусах. Операция FIX округляется по направлению влево (менее положительное или более отрицательное) по числу строки, так что например FIX[2.8]=2 и FIX[-2.8]=-3. Операция FUP округляет по направлению вправо (более положительное или менее отрицательное) по числу строки; например FUP[2.8]=3 и FUP[-2.8]=-2.
10.5.4 Задание параметров
Задание параметров это следущие четыре пункта один за другим:
- символ фунта #
- действительное значение, которое равняется целому числу между 1 и 10320
- знак равенства =
- действительное значение.
Например "#3 = 15" означает "установить параметр 3 равным 15".
Задание параметра не имеет воздействия пока не будут найдены все значения в той же строке. Например если параметр 3 был предварительно установлен равным 15 и интерпретируется строка #3=6 G1 x#3, возникнет прямое движение в точку, где х равно 15 и значение параметра 3 будет равно 6.
10.5.5 Комментарии и сообщения
Строка которая начинается со знака процента % воспринимается как комментарий и никак не интерпретируется. Печатаемые символы и белые пробелы внутри скобок являются комментарием. Левая скобка всегда начинает комментарий. Комментарий заканчивается на первой найденной правой скобке. Как только правая скобка помещена в строку, соответствующая правая сскобка должен стоять перед окончанием строки. Комментарии не могут быть вложенными; левая скобка, найденная после начала комментария и перед его окончанием является ошибкой. Вот пример строки содержащей комментарий: G80 M5 (останов движения)
Альтернативная форма комментария это использование двух символов //. Остаток строки воспринимается как комментарий.
Комментарии не заставляют станок ничего делать.
Комментарии заключенные в скобки, содержат сообщение, если выражение MSG стоит поале левой скобки и перед любым другим печатаемым символом. Варианты MGS, содержащие белые пробелы и символы в нижнем регистре разрешены. Обратите внимание на запятую, которая требуется. Остаток символов перед правой скобкой воспринимаются как сообщение оператору. Сообщения отображаются на экране под обозначением "Ошибка".
10.5.6 Повторение предметов
Строка может содержать любое колличество выражений G, но два выражения из одной модальной группы не могут стоять в одной и той же строке.
Строка может содержать 0 для четырех выражений М. Два выражения М из одной модальной группы не могут стоять в одной строке.
Для всех остальных допустимых букв, строка может содержать только одно начало слова с этой буквой. Если задание параметра для одного параметра повторяется в строке, например #3=15, #3=6, только последнее из них подействует. Это глупо но допустимо задавать один параметр дважды в одной строке.
Если в строке появляется более одного комментария, использоваться будет только последний; остальные комментарии будут прочтены и их формат будет проверен, но после они будут проигнорированы.
Ожидается что помещение более одного комментария в строку будет большой редкостью.
10.5.7 Порядок предметов
Три типа предметов, чей порядок в строке может меняться (как указано в начале этого раздела), являются выражением, заданием параметра и комментарией. Представьте себе, что эти три типа предметов поделены на три группы по типу.
Первая группа (выражения) может менять порядок как угодно без изменения значения строки.
Если вторая группа (задание параметра) меняет порядок, смысл строки не изменитя если один параметр не задается более чем один раз. В этом случае только последнее задание параметра возымеет действие. Нпример после того как будет интерпретирована строка #3=15 #3=6, значение параметра 3 будет равняться 6. Если порядок сменится на #3=6 #3=15 и строка будет интерпретирована, значение параметра 3 будет равно 15.
Если третья группа (комментарии) держится в порядке или меняет порядок без изменения значения строки, то три группы могут быть interleaved как угодно без изменения значения строки. Например строка g40 g1 #3=15 (вот так!) #4=-7.0 содержит 5 вещей и значит одно и то же в любом из 120 возможных порядков - таких как #4=-7.0 g1 #3=15 g40 (вот так!) - для пяти вещей.
10.5.8 Комманды и режимы станка
Mach3 имеет множество комманд которые заставляют станок переходить из одного режима в другой, и режим остается активным пока какая-нибудь другая комманда не меняет его. Такие комманды называются "модальными". Например , если охлаждение включено, оно будет включено пока его не выключить. G коды для движения также являются модальными. Если команда G1 (прямое движение) дана в одной строке, например, она будет выполнена снова в следующей строке если одна или более осей указаны в строке, до тех пор пока в строке не появится другая команда использующая названия осей или отменяющая движение.
"Немодальные" коды действуют только в строках в которых они появляются. Например G4 (сверление) - немодальна.