Использование g-кода для 3d принтера

Самые распространенные команды G-code

Вы можете создать несколько строк кода, комбинируя различные инструкции, составляющие язык. Каждая строка кода представляет собой инструкцию, которую должен выполнить 3D-принтер. Например, G1 X10 F3600. Эта строка кода указывает принтеру переместить экструдер в положение X = 10 мм от станины со скоростью 3600 мм / мин.

Мы также можем создать много строк кода, каждая из которых будет указывать на разные инструкции для принтера. Например:

  1. G1 X0 Y0 F2400. Переместить экструдер – положение X = 0 и Y = 0 станины со скоростью 2400 мм / мин.
  2. G1 Z10 F1200. Переместить ось Z – положение Z = 10 мм со скоростью 1200 мм / мин.
  3. G1 X30 E10 F1800. Пропустить 10 мм через сопло, перемещая экструдер – положение X = 30 мм.

Эти 3 строки кода дают задачу 3D-машине двигаться в положениях, указанных в командах, и с указанной скоростью. Каждая строка кода состоит из различных комбинаций букв и цифр. Каждая комбинация сообщает принтеру что-то особенное.

Цифры указывают значение выполняемой G-code команды 3d принтера. Для обозначений G и M числа изменяют тип команды. Давайте посмотрим на некоторые случаи, примеры G-кода для mach3:

  • Число 3600 указывает значение скорости, с которой должен двигаться рычаг 3D-принтера. В данном случае это 3600 мм / мин.
  • X15, Y10. В этом случае 15 указывает миллиметры, на которые экструдер должен перемещаться по оси X, а 10 означает, что он должен перемещаться на 10 мм по оси Y.
  • В этом случае принтер должен поднять экструдер на 10 мм по оси Z.
  • Как и в случае с командой G, число 104 в команде M не представляет геометрическое значение, а используется для обозначения функции, которую необходимо выполнить. M104 – это машинная команда, используемая для запуска нагрева экструдера.
  • Команды E, F, X, Y или Z вместе с номерами их значений служат аргументами для команд G и M. Например: G1 E10 F800. G1 – это команда G, определяющая линейное движение. E10 и F800 – это аргументы команды, определяющие проталкивание нити на 10 мм через сопло со скоростью 800 мм / мин соответственно.
  • G2 начинает движение экструдера по часовой стрелке до определенного положения. В качестве аргумента задаются координаты конечного местоположения экструдера и его оси вращения с параметрами.
  • Параметр I указывает, насколько ось X перемещается от своего текущего положения.
  • Параметр J устанавливает, насколько ось Y перемещается от своего текущего положения. Например: G2 X15 Y5 I0 J-12. Экструдер должен совершить круговое движение по часовой стрелке. У вас будет центральная ось, перемещающаяся на 0 мм по оси X и -12 мм по оси Y. Движение заканчивается, когда экструдер достигает положений X = 15 мм и Y = 5 мм.
  • Команда G3 использует те же параметры, но указывает, что круговое движение должно выполняться против часовой стрелки. Например: G3 X-20 Y10 I1 J-15. Команды G90 и G91 – режим позиционирования экструдера Перед запуском движения экструдера вы должны указать, является ли движение абсолютным или относительным.
  • Для абсолютного перемещения экструдер перемещается в определенное место по осям X, Y, Z и E. Команда G90 используется для указания абсолютного перемещения. Пример: G1 X25 F3600 E0.02. Относительное движение означает, что экструдер продвинется на несколько миллиметров по одной из осей от своего текущего положения. Это указывается с помощью команды G91, как показано в следующем примере: G1 X10 Y10 F2400.
  • G92 – установить текущую позицию. G92 используется для регулировки текущего значения любой из осей или функций до желаемого значения. Например, вы можете сообщить 3D-принтеру, что нить находится в позиции 0 мм в экструдере, как показано ниже.
  • G92 E0 – отрегулируйте положение нити на 0 мм. В этом случае аргумент указывает тип требуемой функции или перемещения. Вместо E вы можете использовать координаты X, Y или Z для регулировки положения экструдера.

Справка! G20 устанавливает размеры в дюймах, а G21 – в миллиметрах.

А теперь рассмотрим самые важные M-команды:

  • M104 запускает нагрев экструдера и одновременно позволяет 3D-принтеру выполнять другие действия. Например:
  • M109 выполняет нагрев экструдера, но не позволяет выполнять другие действия, пока не будет достигнута запрограммированная температура.
  • M106 – отрегулировать скорость вентилятора. Чтобы управлять вентилятором, направленным на печатаемый объект, мы можем использовать команду M106 следующим образом:
  • M106 S255. Вентилятор установлен на максимальную скорость. В этом случае S указывает скорость вентилятора, а 255 – максимальное значение скорости, где 255 = 100% скорости.
  • M112 – аварийная остановка. Когда ситуация выходит из-под контроля, можно использовать команду M112, чтобы немедленно остановить процесс печати. При подаче этой команды двигатели и нагреватели охлаждаются.

Вспомогательные (технологические) команды

Код Описание Пример
M00 Приостановить работу станка до нажатия кнопки «старт» на пульте управления, так называемый «безусловный технологический останов» G0 X0 Y0 Z100 M0
M01 Приостановить работу станка до нажатия кнопки «старт», если включён режим подтверждения останова G0 X0 Y0 Z100 M1
M02 Конец программы, без сброса модальных функций M02
M03 Начать вращение шпинделя по часовой стрелке M3 S2000
M04 Начать вращение шпинделя против часовой стрелки M4 S2000
M05 Остановить вращение шпинделя M5
M06 Сменить инструмент T15 M6
M07 Включить дополнительное охлаждение M3 S2000 M7
M08 Включить основное охлаждение. Иногда использование более одного M-кода в одной строке (как в примере) недопустимо, для этого используются M13 и M14 M3 S2000 M8
M09 Выключить охлаждение G0 X0 Y0 Z100 M5 M9
M13 Включить охлаждение и вращение шпинделя по часовой стрелке S2000 M13
M14 Включить охлаждение и вращение шпинделя против часовой стрелки S2000 M14
M17 Конец подпрограммы M17
M25 Замена инструмента вручную M25
M97 Запуск подпрограммы, находящейся в той же программе (где P — номер кадра, в случае примера переход осуществится к строке N25), действует не везде, предположительно — только на станках HAAS M97 P25
M98 Запуск подпрограммы, находящейся отдельно от основной программы (где P — номер подпрограммы, в случае примера переход осуществится к программе O1015) M98 P1015
M99 Конец подпрограммы M99
M30 Конец программы, со сбросом модальных функций M30

не больше одного кода в кадре

Параметры команд

Параметры команд задаются буквами латинского алфавита

Код Описание Пример
X Координата точки траектории по оси X G0 X100 Y0 Z0
Y Координата точки траектории по оси Y G0 X0 Y100 Z0
Z Координата точки траектории по оси Z G0 X0 Y0 Z100
P Параметр команды G04 P101
F Скорость рабочей подачи.

Для фрезерных станков это дюймы в минуту (IPM) или миллиметры в минуту (mm/min),

Для токарных станков это дюймы за оборот (IPR) или миллиметры за оборот (mm/rev).

G1 G91 X10 F100
S Скорость вращения шпинделя S3000 M3
R Параметр стандартного цикла или радиус дуги (расширение стандарта) G81 R1 0 R2 −10 F50 или G2 G91 X12.5 R12.5
D Параметр коррекции выбранного инструмента G1 G41 D1 X10. F150.
L Число вызовов подпрограммы M98 L82 P10 или G65 L82 P10 X_Y_R_
I Параметр дуги при круговой интерполяции. Инкрементальное расстояние от начальной точки до центра дуги по оси X. G03 X10 Y10 I0 J0 F10
J Параметр дуги при круговой интерполяции. Инкрементальное расстояние от начальной точки до центра дуги по оси Y. G03 X10 Y10 I0 J0 F10
K Параметр дуги при круговой интерполяции. Инкрементальное расстояние от начальной точки до центра дуги по оси Z. G03 X10 Y10 I0 K0 F10
L Вызов подпрограммы с данной меткой

Запоминание положения

Если Вашему коду требуется изменить систему координат (G54) или указать смещение (G92) или ввести коррекцию на инструмент (G41 и G42) то перед вводом данных настроек — запомните текущее положение инструмента. Подразумевается, что это безопасная для оператора и инструмента позиция и Вы вернетесь в нее же по окончании части кода где нужно вводить ограничения.

Соответственно, очень желательно, чтобы вход в блок «запоминал» нужные параметры, а «выход» их восстанавливал.
Время на обработку переменных не тратится, а пользы уйма. Кроме всего прочего LinuxCNC дает нам массу подобных возможностей, взять, хотя бы, команду O.

Алгоритмический подход

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

Так например, я достиг цели и обработал свой Жертвенный стол получив код программы на сайте, где был предоставлен доступ к on-line генератору кода. И это был файл размером в мегабайт. Читать не возможно. Одни и теже коды повторяли «зиг-заги». Включить в него что-либо, например замедление когда фреза доходит до вкрученной в стол футорки — невозможно.

Куда проще и понятнее выглядит функция, приведенная в статье про Жертвенный стол. В ней все наглядно и понятно. Для чего же еще нужен компьютер, если не для генерации кода по мере необходимости?

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

Комментарии

Комментарии, противоречащие коду, хуже, чем отсутствие комментариев. Всегда исправляйте комментарии, если меняете код!

Комментарии должны являться законченными предложениями. Если комментарий — фраза или предложение, первое слово должно быть написано с большой буквы, если только это не имя переменной, которая начинается с маленькой буквы (никогда не изменяйте регистр переменной!).

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

Ставьте два пробела после точки в конце предложения.

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

Блоки комментариев

Блок комментариев обычно объясняет код (весь, или только некоторую часть), идущий после блока, и должен иметь тот же отступ, что и сам код. Каждая строчка такого блока должна начинаться с символа # и одного пробела после него (если только сам текст комментария не имеет отступа).

Абзацы внутри блока комментариев разделяются строкой, состоящей из одного символа #.

«Встрочные» комментарии

Старайтесь реже использовать подобные комментарии.

Такой комментарий находится в той же строке, что и инструкция. «Встрочные» комментарии должны отделяться по крайней мере двумя пробелами от инструкции. Они должны начинаться с символа # и одного пробела.

Комментарии в строке с кодом не нужны и только отвлекают от чтения, если они объясняют очевидное. Не пишите вот так:

x = x + 1                 # Increment x

Впрочем, такие комментарии иногда полезны:

x = x + 1                 # Компенсация границы

Какие бывают G-коды

Программы с G-кодом пишутся в виде текстового формата, каждую строчку называют кадром. Кадр состоит из буквенного символа – это адрес и цифра, в которой выражено числовое значение. Коды бывают основными и вспомогательными. На основе такой программы работает токарный и фрезерный станок с ЧПУ.

Команды группы G называют подготовительными. Они задают движение рабочих элементов на станке с определенной скоростью. Скорость может быть круговой или линейной. Также G-код используется для обработки отверстий и резьбы. Еще одной функцией является управление параметрами и координатными системами аппаратуры.

Основные команды программы направлены на выполнение следующих функций:

  • G00 – G04 функция позиционирования;
  • G17 – G19 осуществляют переключение рабочих параметров;
  • G40 – G44 компенсация длины и диаметра разных элементов аппарата;
  • G54 – G59 переключение координатных систем;
  • G71 – функция обработки отверстий;
  • G80 – G84 функция нарезания резьбы и сверления;
  • G90 – G92 переключение абсолютной и относительной систем координат.

Символы бывают разными: М выполняет вспомогательные функции, такая команда необходима для смены инструмента, вызова подпрограммы и ее завершения, S – это функция основного движения, F – подача, Т, D, Н являются выражением функций инструмента.

Значение символа зависит от вида станка с ЧПУ. Программирование осуществляется на основе этих кодов.

Как читать команды G-кода?

На первый взгляд, когда вы видите файл G-кода, он может показаться довольно сложным, но на самом деле его не так уж и сложно понять.

Команды G-кода

Если мы внимательно посмотрим на код, мы можем заметить, что большинство строк имеют одинаковую структуру. Кажется, что «сложная» часть G-кода — это все те числа, которые мы видим, которые являются просто координатами.

Давайте взглянем на одну строчку и объясним, как она работает.

G01 X247.951560 Y11.817060 Z-1.000000 F400.000000

Строка имеет следующую структуру:

G ## X ## Y ## Z ## F ##

  • Во-первых, это команда G-кода, и в данном случае это G01,  что означает «двигаться по прямой в определенное положение».
  • Заявляем положение или координаты с X , Y и Z значений.
  • Наконец, с помощью значения F мы устанавливаем скорость подачи или скорость, с которой будет выполняться перемещение.

В заключение линия сообщает станку с ЧПУ двигаться по прямой от его текущего положения до координат X247.951560, Y11.817060 и Z-1.000000 со скоростью 400 мм / мин. Единица измерения — мм / мин, потому что, если мы посмотрим назад на изображение примера G-кода, мы увидим, что мы использовали команду G21, которая устанавливает единицы измерения в миллиметры. Если нам нужны единицы измерения в дюймах, мы используем вместо этого команду G20 .

Принципы работы со структурой

Чем объёмнее становится документация, тем сложнее поддерживать её актуальность. Изменение одного документа влечёт за собой каскадное изменение остальных, логическая целостность ломается, структура требует очередной переработки. К счастью, для программирования это стандартная проблема, и за прошедшие десятилетия выработались общие принципы написания легко поддерживаемого кода. Часть из них можно применять и к документам.

SRP — Single Responsibility Principle. Принцип единственной ответственности

То же самое справедливо и для документации. Например, в регламент регистрации обращения клиента не нужно впихивать что-то «заодно»: принципы вежливого общения с клиентами, краткое описание self-service портала и т. д.

Нельзя рассчитывать, что такая информация будет усвоена или сотрудники запомнят, к какому документу нужно обращаться, чтобы её получить. Зато это запутывает документ, лишает структуру чёткости и требует дополнительного времени для актуализации. Если вы действительно хотите напомнить о вежливости при общении с клиентом, вставьте в регламент ссылку на соответствующий документ (вспомните о DRY).

Соблюдение принципа позволяет делать документы короче. Их название соответствует назначению, а чтение не вызывает неприятных сюрпризов. Их проще прочитать за раз. И не забыть, с чего документ начинался.

SLAP — Single Level of Abstraction Principle. Принцип единого уровня абстракции

Является логичным продолжением принципа единственной ответственности (SRP).

Применение принципов KISS и SRP побуждает писать небольшие, простые и понятные документы. Но эти документы нужно собрать в такую же простую и понятную структуру. Здесь помогает выделение и соблюдение уровней абстракций.

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

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

Не тот уровень абстракции! Оставьте эту информацию для описания процесса. Этот принцип дополняет SRP, заставляя автора контролировать не только то, за что отвечает документ, но и на каком уровне в иерархии он находится.

LoD — Law of Demeter (Don’t talk to strangers). Закон Деметры (Не разговаривай с незнакомцами)

Если применить закон к документации, то каждый документ:

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

Например, процесс управления IT-инцидентами взаимодействует с процессом управления проблемами напрямую, а с процессом управления изменениями — только через управление проблемами. Тогда в описании управления инцидентами можно ссылаться на описание управления проблемами. А вот ссылаться на описание управления изменениями не надо.

Другие команды G-кода

Итак, команды G-кода, которые мы описали выше, являются наиболее распространенными, но их гораздо больше. Существуют такие команды, как компенсация резца, масштабирование, системы координат заготовки, выдержка и т. Д.

Помимо G-кода, существуют также команды M-кода, которые используются при генерации реальной полноценной программы G-кода. Вот несколько распространенных команд M-кода:

  • M00 — Остановка программы
  • M02 — Конец программы
  • M03 — шпиндель включен — по часовой стрелке
  • M04 — шпиндель включен — против часовой стрелки
  • M05 — остановка шпинделя
  • M06 — Смена инструмента
  • M08 — Система охлаждения ВКЛ.
  • M09 — Система охлаждения ВЫКЛ.
  • M30 — Конец программы

В случае 3D-принтера:

  • M104 — Запуск нагрева экструдера
  • M109 — Подождите, пока экструдер достигнет T0
  • M140 — Запуск подогрева кровати
  • M190 — Подождите, пока стол не достигнет T0
  • M106 — Установить скорость вентилятора

Некоторым из этих команд требуются соответствующие параметры. Например, при включении шпинделя с помощью M03 мы можем установить скорость шпинделя с помощью параметра S. Итак, линия  будет включать шпиндель со скоростью 1000 об / мин.

Мы также можем отметить, что многие коды являются модальными , что означает, что они остаются в силе до тех пор, пока не будут отменены или заменены другим кодом. Например, скажем, у нас есть код для линейного движения резания . Если следующее движение снова будет линейным резанием, мы можем просто ввести координаты X и Y, без надписи G01.

То же самое относится и к параметру скорости подачи F. Нам не нужно включать его в каждую строку, если мы не хотим изменить его значение.

В некоторых файлах G-кода вы также можете видеть « N ## » перед командами. Слово N просто для нумерации строки или блока кода. Это может быть полезно для идентификации конкретной строки в случае ошибки в огромной программе.

Варианты синтаксиса Arc для различных диалектов и режимов G-кода

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

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

Давайте рассмотрим эти варианты:

— Инкрементальный против абсолютного IJK : мы обсуждали IJK как представление координат относительно начальной точки для центра. Добавьте I к X, J к Y и K к Z начальной точки, и вы получите центр. Многие элементы управления также имеют возможность использовать IJK как абсолютные координаты центра.

— Модальные центры IJK : когда IJK являются абсолютными координатами центра, некоторые контроллеры запоминают последний определенный центр, поэтому в этом случае IJK является модальным. При использовании такой настройки управления вы можете просто продолжать вводить команды XYZ для дуг без необходимости каждый раз определять новый центр. Однако не ясно, что вы сэкономите много — как часто вы хотите делать несколько дуг с одним и тем же центром?

— Модальные центры R : Еще одна разновидность идеи модального центра состоит в том, чтобы позволить радиусу, определенному буквой «R», быть модальным. Каким бы ни был последний использованный R, контроллер запоминает и снова использует это значение, если R не задано. Это кажется более полезным, чем модальный IJK. Например, у кармана могут быть дуги для углов одинакового радиуса.

— Приоритет R : как уже упоминалось, большинство контроллеров будут использовать «R», если «R» и «IJK» указаны в одном блоке. Н

— Helical Interp. : Эта опция определяет, разрешает ли ваш контроллер спиральную интерполяцию.

Наиболее распространенная проблема при настройке постпроцессора CAM или симулятора ЧПУ: абсолютный и относительный IJK

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

Если вы видите такие вещи, первое, что нужно проверить, — это абсолютный IJK в сравнении с относительным IJK для дуг. Настройка должна соответствовать между тем, что выдает CAM, и тем, чтополучает контроллер или симулятор.

Разбивайте код на блоки и/или подпрограммы

Лично я программирую много и уже очень давно. Но всегда, когда встречаю длинный и не читаемый текст — путаюсь. Я лично предпочитаю, чтобы код был разбит на блоки (функции/методы/что угодно) и каждый блок кода был понятен при визуальном его рассмотрении. И уж точно этот код должен быть виден на одном экране.

В языке G кода есть только два варианта достичь такого положения вещей:

  • Написание одного, но понятного и разбитого на блоки файла;
  • Разбиение всего алгоритма на функции, описываемые командой O;

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

В объектно-ориентированном программировании интерфейс иногда называют контрактом. Посему любая подпрограмма должна иметь четкую документацию интерфейса ее вызова. Я уж не говорю о том, что она должна быть отлажена и, по-возможности, проверять входные данные и режимы.

G02 — круговая интерполяция по часовой стрелке

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

Для лучшего понимания мы добавим команду G02 после команды G01 из предыдущего примера.

Итак, в первом примере у нас есть команда G01, которая перемещает машину в точку X5, Y12. Теперь это будет отправной точкой для команды G02. С помощью параметров X и Y команды G02 мы устанавливаем конечную точку. Теперь, чтобы добраться до этой конечной точки, используя круговое движение или дугу, нам нужно определить ее центральную точку. Мы делаем это с помощью параметров I и J. Значения I и J относятся к начальной или конечной точке предыдущей команды. Итак, чтобы получить центральную точку по X5 и Y7, нам нужно сделать смещение  по оси X и смещение -5 по оси Y.

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

G02 — круговая интерполяция по часовой стрелке

Итак, здесь у нас все еще есть та же конечная точка, что и в предыдущем примере (X10, Y7), но теперь центральная точка находится в другом положении (X0, Y2). Благодаря этому мы получили более широкую дугу по сравнению с предыдущей.

G00, G01, G02 Пример — ручное программирование G-кода

Давайте посмотрим на простой пример фрезерования с ЧПУ с использованием этих трех основных команд G-кода: G00, G01 и G02.

Чтобы получить траекторию для формы, показанной на изображении выше, нам нужно выполнить команды G-кода:

С помощью первой команды G00 мы быстро переводим станок из исходного положения в точку B (5,5). Отсюда мы начинаем с «резки» со скоростью подачи 200 с помощью команды G01 . Здесь можно отметить, что для перехода из точки B (5,5) в точку C (5,25) мы используем значения X и Y относительно начальной точки B. Итак, +20 единиц в направлении Y приведет нас к точке C (5,25). Фактически, это зависит от того, выбрали ли мы машину для интерпретации координат как абсолютных или относительных. Мы объясним это в следующем разделе.

Как только мы достигаем точки C (5,25), у нас есть еще одна команда G01 для достижения точки D (25,25). Затем мы используем команду G02, круговое движение, чтобы добраться до точки E (35,15) с центральной точкой (25,15). На самом деле у нас есть такая же центральная точка (25,15) для следующей команды G02, чтобы добраться до точки F (31,7). Однако мы должны отметить, что параметры I и J отличаются от предыдущей команды, потому что мы смещаем центр от последней конечной точки или точки E. Мы завершаем траекторию инструмента другой командой G01, которая выводит нас из точки F (31, 7) вернуться к пункту Б (5,5).

Итак, вот как мы можем вручную запрограммировать G-код для создания этой формы. Однако мы должны отметить, что это не полный G-код, потому что нам не хватает еще нескольких основных команд. Мы сделаем полный G-код в следующем примере, так как сначала нам нужно объяснить эти команды G-кода.

Нумерация строк

Совсем не обязательно вставлять в каждой строке ее номер при помощи G кода N.

Однако, при таком раскладе Вы не сможете воспользоваться GOTO

N100 GOTO 120
N110 M02 (Остановка программы)
N120 (GOTO переходит непосредственно сюда)

Пример глупый, но демонстрирующий то, что если Вы не пронумеровали Ваши строки, то и попасть при помощи GOTO в нужное место кода Вы не сможете.

Еще одна особенность в том, что LinuxCNC сам расставляет свои номера строк. И, при ошибке или переходе, выводит окна с указанием именно им созданных номеров и кодов.

Учитывая все вышесказанное, я принял для себя решение нумеровать строки только если того требует алгоритм (помните, что использование GOTO это «не наш метод», т.е. его надо избегать).

Нумеровать строки нужно только после отладки основной части программы и, по-возможности, автоматически.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
3D-тест
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: