для чего используется код м99

М-коды

М00 – запрограммированный останов. Когда СЧПУ исполняет команду М00, то происходит так называемый запрограммированный останов. Все осевые перемещения останавливаются и возобновляются лишь после того, как оператор станка нажмет клавишу Старт цикла на панели УЧПУ. При этом шпиндель продолжает вращаться (у большинства станков) и другие функции остаются активными. Если оператор станка нажимает клавишу Старт цикла, то выполнение программы будет продолжено с кадра, следующего за М00.

М01 – останов по выбору. Код М01 предназначен для останова по выбору. Действует он аналогично коду М00, однако предоставляет выбор оператору – нужно или не нужно прерывать выполнение управляющей программы. На панели УЧПУ практически любого станка имеется клавиша (или переключатель) М01. Если эта клавиша нажата, то при чтении кадра с М01 происходит останов. Если же клавиша не нажата, то кадр М01 пропускается и выполнение УП не прерывается.

М02 – конец программы. Код М02 информирует СЧПУ о завершении программы.

М03 – прямое вращение шпинделя. При помощи кода М03 включается прямое (по часовой стрелке) вращение шпинделя с запрограммированным числом оборотов (S-слово). Команда М03 остается действующей до тех пор, пока она не будет отменена с помощью М04 или М05.

М04 – обратное вращение шпинделя. При помощи кода М04 включается обратное (против часовой стрелки) вращение шпинделя с запрограммированным числом оборотов (S-слово). Команда М04 остается действующей до тех пор, пока она не будет отменена с помощью М03 или М05.

М05 – останов шпинделя. Команда М05 останавливает вращение шпинделя, но не останавливает осевые перемещения (за исключением режима G95).

М06 – автоматическая смена инструмента. При помощи команды М06 инструмент, закрепленный в шпинделе, меняется на инструмент, находящийся в положении готовности в магазине инструментов.

М07 – включение подачи СОЖ в распыленном виде. Команда М07 включает подачу СОЖ в зону обработки в распыленном виде, если станок обладает такой возможностью.

М08 – включение подачи СОЖ. Команда М08 включает подачу СОЖ в зону обработки в виде струи.

М09 – выключение подачи СОЖ. Команда М09 выключает подачу СОЖ и отменяет команды М07 и М08.

М19 – юстировка шпинделя. При помощи команды M19 осуществляется радиальная юстировка шпинделя (поворот в определенное положение), чтобы выставить приводной носик шпинделя на позицию смены инструмента. В этом положении шпиндель обычно зажимается и его не провернуть рукой.

М20 – отмена юстировки шпинделя. При помощи команды М20 отменяется команда юстировки шпинделя М19.

М30 – конец программы. Код М30 информирует СЧПУ о завершении программы.

М98 – вызов подпрограммы. Команда М98 предназначена для вызова подпрограммы. Вместе с этой командой программируется Р-слово данных, которое обозначает номер вызываемой подпрограммы.

Пример:
М98 Р1001 – вызвать подпрограмму О1001.

М99 – конец подпрограммы. При помощи команды М99 по окончании подпрограммы осуществляется возврат к главной программе, из которой была вызвана подпрограмма.

Источник

G-код G65, M98 и M99: подпрограмма и макрос для станка с ЧПУ

для чего используется код м99. Смотреть фото для чего используется код м99. Смотреть картинку для чего используется код м99. Картинка про для чего используется код м99. Фото для чего используется код м99

Чтобы сделать g-код удобным для повторного использования, нам нужен способ централизовать его, а затем получить к нему доступ из программы детали. Язык G-Code предоставляет для этого два разных метода: подпрограмма и макрос. Думайте о каждом как о способе доступа к коду, который хранится в отдельной небольшой мини-программе. Вы «вызываете» этот код, он делает свое дело, а затем он «возвращается» в вашу основную программу, чтобы продолжить выполнение сразу после вызова.

Если у вас есть большая библиотека мощных сниппетов, у вас есть потенциал для реального повышения производительности. Даже если вы не пытаетесь повторно использовать код, использование вызовов может сделать ваш существующий код намного меньше и более легким для понимания. Рассмотрим процесс фрезерования кармана путем перехода на несколько уровней ниже и обработки той же траектории. Зачем повторять один и тот же путь для каждого уровня? GibbsCAM генерирует g-код, который генерирует путь для уровня один раз в качестве подпрограммы, а затем вызывает его несколько раз после установки z-уровня каждый раз глубже. Подходит для программ гораздо меньшего размера. Довольно крутой трюк!

G-коды M98 и M99: вызовы подпрограмм

Давайте начнем с вызовов подпрограмм, потому что они немного проще для понимания, чем вызовы макросов, хотя и менее эффективны. Вызов подпрограммы довольно прост. Сначала вставьте g-код подпрограммы под ее собственным номером подпрограммы — ее собственным номером «O». Ваша программа может выглядеть так:

Как видите, основная программа и подпрограмма имеют свой собственный номер «O». Вызов подпрограммы — «M98», который принимает параметр, сообщающий ему номер «O», где можно найти подпрограмму. Когда он достигает M98, выполнение переходит к подпрограмме. Когда он достигает «M99» в подпрограмме, это заставляет его вернуться в основную программу с того места, где она остановилась, и продолжить работу.

Подпрограмма. Синтаксис вызова

В зависимости от вашего контроллера существует ряд различных синтаксисов, доступных для вызовов подпрограмм.

Хотя существует множество разных стилей, в основном они просто немного по-разному говорят об одном и том же:

— Где мне найти подпрограмму? Чаще всего буква «P», обозначающее адрес. Этот адрес обычно представляет собой букву «O», но многие контроллеры имеют возможность искать «N», если O # не найдено.

— А как насчет повторения? Часто бывает удобно закодировать повтор подпрограммы в той же строке, используя другую букву. Например, «L» может указывать, сколько раз вызывать подпрограмму, прежде чем, наконец, перейти к следующей строке.

— Насколько глубоко я могу вложить подпрограммы и макросы? Ваша программа может вызывать подпрограмму, которая может вызывать другую подпрограмму. Сколько уровней глубины разрешено? У контроллеров есть ограничение на это.

— G-код G65 — это вызов макроса, а G-код M98 — вызов подпрограммы.

— Некоторые контроллеры позволяют G-коду M99 возвращаться к определенной строке вместо того, чтобы просто возвращаться туда, где была вызвана подпрограмма. Я не считаю это хорошей практикой, потому что это сбивает с толку. Если вы хотите «перейти» к строке, для этого есть макрос «GOTO», но он есть не у всех контроллеров.

Вот об этом. Не так уж и плохо. А пока просто сосредоточьтесь на вызове подпрограмм и возвращении из них.

Особенности специальной подпрограммы Haas

Производители контроллеров нередко имеют свои собственные функции «Special Sauce», которые делают их контроллер особенным. То же самое и с локальной подпрограммой Haas, M97. M97 — это быстрая подпрограмма, потому что вам не нужно беспокоиться о настройке чисел «O». Вы можете просто вызвать любой номер «N» с помощью M97 и «пуф», это подпрограмма. Это удобно, хотя у других контроллеров есть возможность искать букву «N», если буква «O» отсутствует, что немного ослабляет паруса быстроходного M97.

Обратите внимание, что Haas также будет использовать M98, у него есть только M97 для быстрых вызовов.

M97 включен в GWE по умолчанию. Если ваш контроллер не поддерживает его, перейдите в раздел «Настройка G / M-кодов» и отключите M97.

Макрос-вызовы или подпрограмма

С помощью вызовов подпрограмм в стиле M98 можно сделать много интересных вещей. Как только вы начнете их использовать, первое, что вы заметите, — это необходимость передать информацию в подпрограмму. Другими словами, вы хотите задать ему параметры. С учетом того, что вы узнали до сих пор, вы, вероятно, готовы сделать это, вставив значения в общие переменные перед вызовом подпрограммы. Но если ваш контроллер поддерживает макросы, есть способ лучше.

Макро-вызовы инициируются с помощью G-кода G65 вместо G-кода M98 (или G-кода M97 на Haas). Макро-вызовы имеют так называемые «аргументы». Аргументы позволяют использовать формат словесного адреса для отправки информации в макрос. Допустим, у нас есть специальный цикл сверления глубоких отверстий, который мы создали. Мы хотим передать ему координаты X и Y, где необходимо отверстие, а также координату Z, указывающую глубину сверления. С пользовательским вызовом подпрограммы это может выглядеть так:

Как видите, мы загрузили X, Y и Z в локальные переменные. Подпрограмма знает, какие локальные переменные содержат какую информацию, и может продолжить свою работу после получения этих значений. Вот как это может выглядеть при вызове макроса:

Это намного легче для глаз, не так ли? И запомнить тоже легче. Как макрос получает доступ к X, Y и Z?

АргументЛокальная переменная
А# 1
B# 2
C# 3
D# 7
E# 8
F№9
H# 11
I# 4
J# 5
K№6
M# 13
Q# 17
P# 18
S# 19
Т# 20
U# 21
V# 22
W# 23
X# 24
Y# 25
Z# 26

Аргументы и в какую локальную переменную они передаются

Как видите, каждое возможное слово-аргумент имеет предварительно назначенную локальную переменную. Если вы используете X, Y и Z, как в нашем примере, их значения будут перенесены в # 24, # 25 и # 26. Довольно прост в использовании и очень удобен.

А что насчет этих уровней?

Как мы уже упоминали выше, подпрограммы и макросы могут быть вложенными. Одина может вызывать другую. Каждый раз, когда вызывается макрос, его локальные переменные сохраняются на уровне. Таким образом, когда выполнение вернется к этому макросу, локальные переменные будут сохранены на уровне, и их можно будет восстановить без изменений. Несмотря на то, что другие вызовы макросов могут использовать те же аргументы слов, которые отображаются на одни и те же локальные переменные, у них есть собственная копия этих локальных переменных на их собственном уровне, поэтому они не мешают. На практике, чтобы объяснить, что происходит с уровнями, требуется больше времени, чем просто использовать аргументы макроса и не беспокоиться о том, не перезаписывается ли локальная переменная другим макросом — это не так.

Но, и это важное «но», оно может быть перезаписано вызовом подпрограммы. Ответ — просто прекратить использование вызовов подпрограмм, когда у вас есть макросы, или, по крайней мере, использовать переменные вне диапазона локальных переменных и понять, что они могут быть перезаписаны.

Примечание: многие контроллеры не имеют макросов.

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

Номера макросов и подпрограмм «O»

Первое, что нужно знать, это то, что числа «O» не должны появляться в каком-либо определенном порядке в вашем программном файле — они просто должны быть уникальными. У вас не может быть двух записей «O1000».

Во-вторых, следует отметить, что на некоторых контроллерах можно обеспечить защиту для некоторых диапазонов чисел О. Это позволяет размещать на машине стандартные макросы, которые невозможно подделать. Например, возможно, вы вложили большие средства в набор пробных макросов и не хотите, чтобы они менялись или перезаписывались. Вам нужно будет проконсультироваться с руководством к вашему контроллеру, чтобы узнать, предлагает ли он защиту, и если да, то как она работает. А пока просто предположим, что у защищенных макросов числа «O» находятся в верхнем диапазоне. Для Fanuc от O0001 до O7999 не защищены, и именно там вы должны разместить свои макросы.

Совет по преобразованию обычного G-кода в подпрограмму или макрос

Я собираюсь завершить это обсуждение советом, который поможет вам преобразовать ваш «обычный» g-код в подпрограмму или макрос.

Допустим, у вас есть g-код, который делает что-то полезное. Возможно, на нем выгравирован ваш логотип на детали. Вы сгенерировали его с помощью своего программного обеспечения CAM, и теперь вы хотите иметь подпрограмму, которая будет выгравировать логотип в любой выбранной вами координате XY. Какой самый быстрый и простой способ сделать это?

Я бы посоветовал преобразовать g-код логотипа для использования относительных координат. Кстати, в G-Wizard Editor есть команда, которая упрощает это — всего несколько шагов. В главе, посвященной кодам G91 и G90, в которой описывается, как относительные и абсолютные координаты работают в ЧПУ.

После того, как вы преобразовали g-код в относительный, завершите его как подпрограмму. Теперь просто переместитесь в позицию XY, в которую хотите поместить логотип, и вызовите подпрограмму. Поскольку его координаты относительны, гравировка будет относиться к начальной позиции. Не забывайте возвращать абсолютные координаты после вызова подпрограммы, предполагая, что это то, что ожидает остальная часть g-кода.

Заключение

Теперь у вас есть несколько мощных инструментов для упаковки вашего g-кода в блоки, которые можно перекомбинировать. Думайте об этом как о возможности создавать свои собственные постоянные циклы для выполнения различных задач. В нашей следующей главе мы познакомимся с условиями и циклами, которые позволяют g-коду самостоятельно принимать решения о том, что делать, и выполнять список инструкций переменное количество раз на основе этих решений.

Источник

Описание G и M кодов для программирования ЧПУ (CNC) станков

На производстве, где работают различные станки с числовым программным управлением, используется множество различного программного обеспечения, но в большинстве случаев весь управляющий софт использует один и тот же управляющий код. Программное обеспечение для любительских станков, так же базируется на аналогичном коде. В обиходе его называют «G-код». В данном материале представлена общая информация по G-коду (G-code).

G-code это условное именование языка для программирования устройств с ЧПУ (CNC) (Числовое программное управление). Был создан компанией Electronic Industries Alliance в начале 1960-х. Финальная доработка была одобрена в феврале 1980-о года как RS274D стандарт. Комитет ИСО утвердил G-code, как стандарт ISO 6983-1:1982, Госкомитет по стандартам СССР — как ГОСТ 20999-83. В советской технической литературе G-code обозначается, как код ИСО-7 бит.

Производители систем управления используют G-code в качестве базового подмножества языка программирования, расширяя его по своему усмотрению.

Программа, написанная с использованием G-code, имеет жесткую структуру. Все команды управления объединяются в кадры — группы, состоящие из одной или более команд. Кадр завершается символом перевода строки (ПС/LF) и имеет номер, за исключеним первого кадра программы. Первый кадр содержит только один символ» %». Завершается программа командой M02 или M30.

Основные (в стандарте называются подготовительными) команды языка начинаются с буквы G:

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

Подготовительные (основные) команды / КодыОписание
G00-G04Позиционирование инструмента
G17-G19Переключение рабочих плоскостей (XY, XZ, YZ)
G20-G21Не стандаризовано
G40-G44Компенсация размера различных частей инструмента (длина, диаметр)
G53-G59Переключение систем координат
G80-G84Циклы сверления, нарезания резьбы
G90-G92Переключение систем координат (абсолютная, относительная)

Таблица основных команд:

Таблица технологических кодов:

Технологические команды языка начинаются с буквы М. Включают такие действия, как:

Источник

для чего используется код м99. Смотреть фото для чего используется код м99. Смотреть картинку для чего используется код м99. Картинка про для чего используется код м99. Фото для чего используется код м99laufercnc

Подпрограммы, и их вызов из главных программ.

Всего существует два варианта вызова вспомогательных подпрограмм из основной программы. Если вспомогательная программа необходима для того чтобы вызываться из главной и выполнять какие то постоянные операции, например сверление отверстий, но при этом, данная программа не имеет в себе параметрических функций, логических операторов, переменных значений координат, и других особенностей, используют вызов подпрограммы M98 (subroutines).

Такие программы вызываемые с помощью вспомогательного кода M98 называются подпрограммами (не макропрограммами). Они могут содержать в себе, только некоторые простейшие операции макропрограммирования, такие как, например: присваивание переменой значения, либо присваивание одной переменной значения другой переменной (#100 = 100; #100 = #101). Макропрограммы тоже являются подпрограммами, разница лишь заключается в том, что они могут включать в себя работу с пользовательскими переменными значений, системными переменными. Могут содержать работу с арифметическими операторами, операторами повторения цикла. Если макропрограмма использует локальный тип переменных, в таком случае она также вызывается отдельно из главной подпрограммы кодом G65 в специальном формате ввода данных.

Итак, разберем подробнее два типа программ, из формат вызова из главной управляющей программы, имеется ли возможность написать данные программы и запустить отдельно, не вызывая их как дочерние из главных программ. И в чем все таки разница подпро-грамм (subroutines) и (macroprogrammes).

Подпрограммы – это вспомогательные программы, не содержащие в себе макро-операторов, отдельно записанные на носитель информации в системе ЧПУ как автономная управляющая программа, которая только может быть вызвана из главной управляющей программы вспомогательным кодом M98. Формат ввода кадра вызова подпрограммы –
M98 P0001

— где M98 – вспомогательный код вызова подпрограммы,
— Р0001 – имя вызываемой подпрограммы, заранее записанной на носителе информации в системе ЧПУ.

Как мы видим, в подпрограмме не используются вспомогательные операторы, которых мы не знаем, один и тот же язык ISO-7, те же вспомогательные и подготовительные коды. Единственная разница неспособность данных программ работать автономно, без вызова с главных программ, так как в конце подпрограмм стоит код M99, который выполняет многозначное действие, в данном случае это выход из подпрограммы, и переход в главную программу.
Если все таки, запустить данную программу отдельно на станке в режиме MEM (AUTO) то по окончанию выполнения всех кадров, стойка ЧПУ прочитает последний код подпрограммы как замкнутый цикл, который также создается с помощью вспомогательного кода M98, в данном случае такая программа не остановится никогда, такой ввод является некорректным. Если же оператору станка необходимо запустить данную подпрограмму отдельно от главной программы, то есть автономно, он может перейти в режим редактирования управляющей программы EDIT в системе ЧПУ, и изменить в подпрограмме последнюю строку M99 на M30.

Не трудно догадаться, что максимальное число повторов подпрограммы – равное 9999 раз, и имя программы – от 0001 до 9999. Код вызова такой программы с максимальным количеством повторений будет выглядеть так: M98 P99999999
Для возврата из подпрограммы используется вспомогательный код M99, который мы описали выше, но есть одно условие выхода из дочерних програм.

Обыкновенным выходов из подпрограммы вызванной кодом M98 P0001; либо вызовом с повторениями M98 P00020001 является выход M99. Существует аргумент P в кадре с M99, который определяет конкретную строку перехода в главной программе после выхода из подпрограммы. Формат ввода:

Обратите внимание на пример:
Главная программа:
N0010 G90 G54
N0020 M98 P00010001
N0030 M30
N0040 M99

Внутренняя подпрограмма:
О0001
N0010 M06 T3
N0020 M03 S6000
N0030 G43 H33
N0050 M99 P0040

Что мы видим в данном примере? Обратите внимание, что кадр N30 в главной программе, необходим для завершения данной программы, и по логике вещей, кадр N40 никогда не был бы прочитан системой ЧПУ. Но на самом деле, это не так. Выход из подпрограммы в кадре N0050 осуществляется на строку N0040 поэтому кадр N30 просто не читается. В системных параметрах станка необходимо выбрать настройку типа стандарта ISO-7 кодов, F15 или F16.

M98 P00010001 – набор для F16
M98 P0001 L1 – набор для F15

Код M99 является недопустимым в режиме MDI станка с ЧПУ, также как и код M98. Другими словами, данные функции занимаются выполнением программ, заранее записанных на носителях информации стойки станка, в режиме AUTO.

Источник

Подпрограмма

Язык G- и М-кодов, как и любой другой язык программирования, позволяет работать с подпрограммами и совершать переходы. Посредством функции подпрограммы основная (главная) управляющая программа может вызывать из памяти другую программу (подпрограмму) и выполнить ее определенное число раз. Если УП содержит часто повторяемое действие или работает по определенному шаблону, то использование подпрограмм позволяет упростить программу обработки и сделать ее гораздо меньшей в размере.

Существуют два вида подпрограмм – внутренние и внешние. Внутренние подпрограммы вызываются при помощи кода М97 и содержатся внутри главной программы. То есть они находятся в одном файле. Внешние подпрограммы вызываются кодом М98 и не содержатся в теле главной программы. В этом случае главная программа и подпрограмма находятся в разных файлах.

для чего используется код м99. Смотреть фото для чего используется код м99. Смотреть картинку для чего используется код м99. Картинка про для чего используется код м99. Фото для чего используется код м99

Рис. 10.1. Схема внутренней подпрограммы

Внутренняя подпрограмма выполняется, когда СЧПУ встречает код М97. При этом адрес Р указывает на номер кадра, к которому нужно перейти, то есть туда, где начинается внутренняя подпрограмма. Когда СЧПУ находит кадр с кодом окончания подпрограммы М99, то выполнение внутренней подпрограммызавершается и управление передается кадру главной программы, следующему за кадром, вызвавшим завершенную подпрограмму.

для чего используется код м99. Смотреть фото для чего используется код м99. Смотреть картинку для чего используется код м99. Картинка про для чего используется код м99. Фото для чего используется код м99

Рис. 10.2. Схема внешней подпрограммы

Внешние подпрограммы работают похожим образом. Когда в главной программе встречается кадр с кодом М98, то вызывается подпрограмма с номером, установленным при помощи Р-адреса. При нахождении кода М99 управление возвращается главной программе, то есть выполняется кадр главной программы, следующий за кадром с М98. Учтите, что внешняя подпрограмма находится в отдельном файле. По сути, внешняя подпрограмма – это отдельная программа с индивидуальным номером, которая при желании может быть выполнена независимо от главной программы. Для вызова подпрограммы необходимо, чтобы она находилась в памяти СЧПУ.

Пример УП с внутренней подпрограммой:

При помощи L-адреса определяется, сколько раз нужно вызвать ту или иную подпрограмму. Если подпрограмму нужно вызвать всего один раз, то L в кадре можно не указывать.

М98 Р1000 L4 – подпрограмма будет вызвана 4 раза.

Большим преимуществом от использования подпрограмм является возможность удобной и эффективной работы с программными массивами и шаблонами. Например, для обработки детали, изображенной на рис. 11.3, мы создадим главную программу и подпрограмму, и вы увидите, насколько удобнее и проще будет работать в этом случае.

Итак, на рис. 10.3 изображена деталь с 4 группами отверстий диаметром 3 мм. Нулевой точкой является верхний левый угол детали. Сначала создадим главную программу, которая будет позиционировать инструмент к каждой группе отверстий. Затем напишем подпрограмму, необходимую для сверления 4 отверстий в одной группе. Учтите, что в подпрограмме используются относительные координаты, а смена инструмента и основные команды находятся в главной программе.

для чего используется код м99. Смотреть фото для чего используется код м99. Смотреть картинку для чего используется код м99. Картинка про для чего используется код м99. Фото для чего используется код м99

Рис. 10.3. Использование подпрограмм при обработке повторяющихся элементов позволяет уменьшить размер программы

Главная программаПояснение

ПодпрограммаПояснение

Обе эти программы необходимо передать в СЧПУ, оператор станка должен вызвать программу О0001 и запустить ее. Главная программа работает с абсолютными координатами и перемещает инструмент последовательно в центр каждой из четырех групп отверстий. Когда СЧПУ встречает кадр с М98 Р1000, то происходит передача управления подпрограмме с номером 01000. В этот момент инструмент уже находится в центре группы отверстий. Переключаемся в режим относительного (инкрементального) программирования и используем постоянный цикл сверления. После завершения сверления четырех отверстий одной группы выключаем цикл сверления командой G80 и переходим в режим абсолютных координат G90, для того чтобы правильно выполнить позиционирование в главной программе. Код М99 передает управление кадру главной программы, который следует за кадром, вызвавшим эту подпрограмму. Затем инструмент перемещается в центр следующей группы отверстий, и снова вызывается подпрограмма 01000. И так далее, пока не просверлим все отверстия и СЧПУ не прочтет код завершения программы М30.

Если бы мы создавали обычную программу обработки, то ее размер был бы значительно больше, так как пришлось бы указывать координаты всех 16 отверстий. Работая в таком формате, легче производить изменения. Например, если изменится диаметр окружности, на которой находятся отверстия группы, то в случае работы с подпрограммой достаточно пересчитать координаты центров четырех отверстий только в подпрограмме.

Из главной программы можно вызвать несколько различных подпрограмм. Более того, из каждой подпрограммы можно вызвать несколько других подпрограмм. Системы ЧПУ могут накладывать ограничения на вложенность и количество выполняемых подпрограмм, поэтому внимательно прочитайте документацию станка и стойки, прежде чем начнете работать с подпрограммами.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *