что такое g код для чпу станка

Программирование. Основные G-коды

Фрезерные работы на станках с ЧПУ

Разберем синтаксис кадров перемещения режущего инструмента. Будем использовать в качестве основной плоскость XY.

Пример
Зададим текущее положение инструмента X12; Y22 и рассмотрим два случая.

1. Активен G90
G90
G0 X48.5 Y43
Перемещение ускоренного хода произойдет в координату X48.5 и Y43.

2. Активен G91
G91
G0 X48.5 Y43
Перемещение ускоренного хода произойдет на 18,5 мм в положительном направлении оси X и 43 мм в отрицательном направление оси Y, т. е. в координаты X60.5 и Y65.

что такое g код для чпу станка. WSR 6600 01 44 49Sti. что такое g код для чпу станка фото. что такое g код для чпу станка-WSR 6600 01 44 49Sti. картинка что такое g код для чпу станка. картинка WSR 6600 01 44 49Sti. Фрезерные работы на станках с ЧПУ

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

1. Используя радиус дуги CR.

2. Используя координаты центра дуги (I, J, K по осям X, Y и Z).

что такое g код для чпу станка. WSR 6600 04 12 22Sti. что такое g код для чпу станка фото. что такое g код для чпу станка-WSR 6600 04 12 22Sti. картинка что такое g код для чпу станка. картинка WSR 6600 04 12 22Sti. Фрезерные работы на станках с ЧПУ

что такое g код для чпу станка. 2. что такое g код для чпу станка фото. что такое g код для чпу станка-2. картинка что такое g код для чпу станка. картинка 2. Фрезерные работы на станках с ЧПУ

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

1. Компенсация может быть включена/отключена только при прямолинейном движении.

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

Рассмотрим смещения на примере обработки контура квадрата 90 × 90 мм.

1. Начало системы координат в центре.

2. Глубина фрезерования — 5 мм.

3. Обработка будет проводиться фрезой диаметром 10 мм с частотой вращения 10 000 об/мин и подачей 500 мм/мин.

4. Материал заготовки — сплав Д16Т.

Программирование. G1
1.
Подвод:
D1
G0 X−51 Y−51
G0 Z−5

2. Компенсация и перемещение линейно в первую точку:
G1 G41 X−45 Y−45 F500

3. Оставшаяся часть:
G1 Y45
G1 X45
G1 Y−45
G1 −45

4. Отвод инструмента и выключение коррекции:
G1 G40 X−51 Y−51

Источник

Домашний ЧПУ-фрезер как альтернатива 3D принтеру, часть третья, ПО и G-code

В этой статье хотелось бы рассказать о необходимом в работе ПО, а заодно дать маленькую вводную по g-коду. Опять прошу простить непрофессионала, могу что-то упустить, а в чем-то быть неточным. С другой стороны, все описанное в моих статьях — исключительно личный опыт, и он точно работает в приближенных к офисно-гаражно-домашним условиях на простых китайских фрезерах с ЧПУ.

ПО для работы можно разделить по уровню абстракции снизу вверх: прошивка драйверов двигателей, «стойка ПУ» или замещающий ее программно-аппаратный комплекс на базе ПК или МК, CAM — ПО, строящее траекторию движения инструмента и преобразующее ее в G-код, и CAD.

Наиболее низкоуровневое ПО — прошивка драйверов двигателей, которая преобразует сигналы шага и направления (step/dir) для шаговых двигателей либо скорость/направление для серводвигателей в значения напряжения и тока, подаваемые на обмотки двигателей; его мы не выбираем и не модифицируем, по крайней мере в обсуждаемом случае.

Следующий уровень — «стойка» — программно-аппаратный комплекс, преобразующий строки кода в сигналы для драйверов. Тут уже интересней, по крайней мере на этапе выбора станка (или выбора компонентов для самостроя) мы можем остановиться как на промышленных стойках начального уровня (GSK, Washing, бэушные старые сименсы и фануки), так и на сочетании интерфейсных плат (от банального LPT и опторазвязанной китайской красной платы до MESA) с ПО — LinuxCNC, Mach3, NCStudio и прочих. Лично у меня большой положительный опыт с LinuxCNC и NCStudio; несмотря на простоту и того и другого, с обработкой по готовому простому G-коду нотации ISO-7bit они справляются на ура. У промышленных стоек есть преимущество в гибкости настройки приводов и возможности подключения большого количества периферии, а так же возможность работать по расширенным G-кодам (циклам) и макропрограммам, но при нынешней доступности КАМ-систем и штучном производстве это не нужно.

Уровнем выше идут CAM (computer aided manufacture) программы — ПО для создания траекторий, описывающих прохождение инструмента в заготовке. И вот тут у нас начинается полный разброд и шатание. С одной стороны, бесплатного или условно-бесплатного CAMа мало. Чтобы не сказать вообще нет пристойного. Да, есть плагин для Inkscape, есть какие-то нестабильные чудеса пятилетней давности, есть триальный фьюжн, есть плагины для CADов… Кстати, по поводу совсем простых, на раскроечный роутер мы долго прикручивали G-CodeTools для Inkscape, но так и не смогли достичь приемлимых скоростей связки оператор-плагин. В результате купили CamBam+ за смешные по меркам рынка 150 долларов и наслаждаемся. А так — все из дешевого или бесплатного либо под совсем простые обработки, либо глюк на глюке и глюком погоняет. Мы перепробовали кучу всего в демках и ломаных версиях, в результате провели переговоры с жабой и финдиректором, и купили PowerMill — по отзывам и пережитым в процессе перебора эмоциям, пожалуй, оптимальным для небольшого производства инструменте. Уже позже на нас вышли замечательные товарищи из SprutCAM, дали демку, и мы с ужасом обнаружили, что переплатили примерно в 20 раз — почти все наши потребности закрываются вполне демократичным SprutCAM Mach3. Купили, конечно (типа про запас по подарочной цене), но потом нашли пару недостатков, так что используем исключительно ПМ.

Чуть не забыл: промежуточным этапом между g-code и CAM выступает постпроцессор — когда-то отдельная программа, а ныне встроенный модуль всякого пристойного CAMа. Это та самая штука, которая преобразует траекторию CAM в код конкретного станка. О постпроцессоре стоит знать только что он есть, и что у него есть описание, привязанное к конкретной нотации кода, воспринимаемой станком. Условно, некоторые станки просят нумерацию строк, некоторые — «;» в конце каждой строки, некоторые вообще русскими буквами команды принимают, ну и так далее. Для рассматриваемых станков (домашние фрезеры) вне зависимости от того, MACH3, LinuxCNC или NCStudio пойдет стандартный постпроцессор fanuc0i 3axis.

Ну и самый высокий уровень — CAD, он уже совсем далек от станка. Тут выбор почти бесконечен, и даже посвободней, чем в 3D-принтерах, благо фрезеровка идет до поверхности, и на входе CAM может быть не твердотельная модель, а граничная поверхность. Нормальные CAMы почти всеядны и с одинаковым удовольствием втягивают модели из чего попало — от 3DMAX до SolidWorks.

Несколько раз начинал я писать про g-code, но каждый раз забрасывал. С одной стороны, полный g-code неоднозначен, по крайней мере в части циклов: даже разные серии станков одного производителя могут трактовать g-коды разным образом, а в основных кодах все и так понятно. С другой — современная CAM-система позволяет оператору вообще не знать g-кода как класса, обходясь дерганьем мышкой по окошечкам компа. Но когда один из наших операторов (хороший кстати, ВО, опыт и все такое) не справился с задачей «сделать тестовую прогу, которая 1000 раз прогонит шпиндель вверх-вниз на 30 мм», я понял, что хотя бы общее понимание быть должно. Даже если не писать простые программки, то хотя бы чтобы разобрать и отдебажить что там нам постпроцессор написал.

Во-первых, стоит знать, что g-code идет кадрами, каждая строка — кадр. Код

даст переход по линии, соединяющей текущее местоположение и точку x10y20, а код

даст переход по ломаной — сначала в точку (текущее положение, x10), а потом уже в точку x10y20.

Кстати, на втором примере мы можем увидеть свойство модальности: мы можем не писать G1 в начале второй строки, ибо G1 — модален и стойка поймет кадр без кода как дублирующий код предыдущего. Если бы мы пытались пройти по дуге (G2/G3) и так же вторую часть перенесли бы на следующую строку — стойка бы интерпретировала эту строчку как новый кадр G1.

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

И расшифровка: G17 (работаем в плоскости XY) G21 (единицы — миллиметры) G40 (отмена компенсации длины инструмента) G49 (отмена компенсации радиуса инструмента) G54 (работа в первой системе координат) G80 (отмена ранее запущенных постоянных циклов) G90 (работа в абсолютной системе координат). После такой лошадиной дозы команд любой станок очищается от всех возможных грехов, оставшихся с предыдущих обработок, и готов к работе над вашим проектом. Даже если ваш станок не знает ничего про коррекции, не стесняйтесь — на фоне тела программы эти несколько байт сильно размера программе не добавят, станок чужеродные коды просто проигнорирует, зато точно все будет хорошо.

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

Разве что G54 — обозначение работы в первой системе координат. Дело в том, что почти любая стойка по умолчанию поддерживает машинную систему координат (с нулем на концевых датчиках, обычно в углу рабочего стола), и до 6 дополнительных систем координат, задаваемых пользователем. Зачем? Когда Вы работаете в CAM, Вы задаете произвольную нулевую точку — в верхнем левом ближнем углу (так правильней) или в центре заготовки, и вся траектория описывается от этой точки. Если бы станок умел работать только в машинной СК, приходилось бы либо ставить заготовку углом в машинный ноль, либо в CAM задавать ноль в неясной точке, вымерянной относительно реального расположения детали. Зачем целых 6 систем координат? Ну тоже все просто, хотя и реже используется: если стол позволяет установить несколько заготовок, имеет смысл объединить обработки: сначала пройти все заготовки одной фрезой, потом поменять фрезу и снова пройти по всем, ну т.д. Тут и приходит на помощь разные СК: вместо того, чтобы сращивать модели в CAM, можно обозначить разные СК для заготовок и в начале каждой обработки прописать, в какой СК работаем.

Теоретически при ручном написании программы еще может помочь команда G90/G91: выбор абсолютной или относительной системы координат. Тут все тоже боль-мень просто: в G90 станок переходит по заданным в строке координатам, а в G91 — по добавленным к текущим координатам. Так что станок, стоящий в точке X10Y10 на строку G90 G1 x20 перейдет в точку X20, а на строку G91 G1 X20 — в точку X30.

Следующая группа — коды перемещений. Тут все просто, по крайней мере на обсуждаемых станках:

G0 — холостые перемещения, выполняются на максимальной установленной в стойке скорости. Стоит учитывать, что G0 не всегда дает линейное движение, в некоторых стойках при команде G0 X200 Y300 при нахождении в точке X0Y0 рабочий инструмент сначала уходит под 45 градусов в точку X200Y200, и потом по прямой — в Y300. Имеет смысл проверить, как это происходит на Вашем станке, не зная этой тонкости можно случайно врезаться в крепеж или заготовку.

G1 — линейная интерполяция. Тут еще проще, станок движется всегда по прямой между текущей точкой и точкой, обозначенной в коде. Команда предполагает синтаксис G1 X20Y30Z10 F1000, где F — скорость движения в единицах станка (чаще — миллиметры в минуту, но иногда и мм/сек или еще что-нибудь экзотическое). Скорость — модальна, т.е. если Вы указали скорость один раз, она будет действительна для всех последующих строк G1/G2/G3, даже если они разделены, например, G0 или другими кодами.

G2/G3 — круговая интерполяция по часовой или против часовой стрелке. Допустимы два варианта определения: при нахождении станка в точке X0Y0 формат G2 X10Y10R20 построит дугу между текущей точкой и точкой X10Y10 с радиусом 20, формат G2 X35Y25 I20J-5 построит дугу между текущей точкой и X35 Y25 с центром в точке X(текущая точка)+20 Y(текущая точка)-5.
Теоретически, в продвинутых стойках встречается масса других интерполяций — от синуса до гиперболы, но в наших станках и при наличии CAMа это неактуально.

Ну и еще несколько кодов, которые входят в систему ISO 7bit, но не являются g-кодами. Это M03 (включение шпинделя) с аргументом S (скорость вращения), M05 — остановка шпинделя, M07/09 — подача и отключение СОЖ, и M30 — окончание программы.

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

Источник

G-коды для станков с ЧПУ: таблица с примерами и обучение

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

Начнем с того, что сегодня они применяются для всех видов оборудования с числовым управлением, как для профессионального и устанавливаемого на максимально ответственных объектах, так и для любительского. В своей совокупности они образуют базовое подмножество языка ISO 7 bit, позволяющего установить и проконтролировать режимы обработки деталей.

Что такое программирование ЧПУ G-кодами

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

Написанный алгоритм отличается жесткой структурой и представляет собой последовательность кадров – групп из нескольких команд. Каждый такой блок, объединенный общей функцией, обладает порядковым номером и отделен от последующих и предыдущих переводом строки (символ ПС/LF). Это сделано для наглядности листинга.

что такое g код для чпу станка. f365d1a3258bcec32080f154757c448f. что такое g код для чпу станка фото. что такое g код для чпу станка-f365d1a3258bcec32080f154757c448f. картинка что такое g код для чпу станка. картинка f365d1a3258bcec32080f154757c448f. Фрезерные работы на станках с ЧПУ

Что такое G-код ЧПУ

Это система команд, воспринимаемых станками с программным управлением. Была создана еще на заре 60-х годов – ассоциацией EIA (Electronic Industries Alliance), – но до готового к использованию формата (RS274D) ее доработали только в 1980-м году. Позднее, на очередном заседании профильного комитета, ее утвердили в качестве стандарта ISO 6983-1:1982. В Советском Союзе для регламентации ее положений ввели ГОСТ 20999-83, а обозначать ее в технической литературе стали ИСО-7 бит.

С того времени и по сей день широко используется, как самостоятельно, так и в роли базового подмножества для создания сходных языков, постоянно совершенствуется и расширяется.

Методы программирования обработки деталей ДЖИ-кодами для ЧПУ

Существуют 3 принципиально разных варианта – каждый со своими особенностями, плюсами, минусами и спецификой применения. Кратко рассмотрим каждый способ из этой тройки, выделяя основные моменты.

что такое g код для чпу станка. 39c1599f4527c984439007d91654ba3d. что такое g код для чпу станка фото. что такое g код для чпу станка-39c1599f4527c984439007d91654ba3d. картинка что такое g код для чпу станка. картинка 39c1599f4527c984439007d91654ba3d. Фрезерные работы на станках с ЧПУ

Ручное

Алгоритм функционирования составляется в текстовом формате, в редакторе на удаленном компьютере. После чего переносится технологом в память оборудования – записывается с оптического диска, USB-устройства (раньше для этого также использовались дискеты), а при непосредственном соединении с ПК – через порты интерфейса.

На пульте УЧПУ

В данном случае ввод команд осуществляется с клавиатуры, размещенной на стойке. Каждый кадр (блок) отображается на дисплее, причем постоянные циклы могут быть представлены в виде пиктограмм (по выбору оператора) – для удобства, чтобы сократить листинг. Нюансы зависят от особенностей системы, например, интерфейс HEIDENHAIN или Fanuc диалоговый, поэтому последовательность действий можно задать интуитивным путем.

При помощи CAD/CAM

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

Вручную сегодня вводятся G-коды для токарного станка с ЧПУ, и то тогда, когда нужно выполнить простые задачи, допустим, расточить отверстие или снять металл по двум направлениям, то есть в ситуациях, когда ошибки реально выявить сразу. С пульта можно задать все то же самое и переходы посложнее, с обработкой по 2,5 и 3 координатам. Это очень подходящий выбор для серийного выпуска деталей по шаблону.

После создания эскиза в ADEM, MasterCAM или другой популярной САПР в диалоговом режиме удобно выбирать оборудование, инструменты и дополнительные приспособления, пределы перемещения и степень коррекции. Возможности задания траектории максимально широки, а при современном уровне развития CAD/CAM не составит труда выполнить виртуальную симуляцию техпроцесса, обнаружить сразу заметные ошибки вроде соударений, пропущенных припусков, зарезов, и исключить их.

Почему стоит изучать программирование ЧПУ

Ответ очевиден – чтобы уметь писать оптимальные алгоритмы для выполнения конкретной технологической операции. Просто понимать команды и пользоваться готовыми решениями не всегда удобно – в силу следующих причин:

что такое g код для чпу станка. f4d2d75102b7d1c170ea480daa1f4316. что такое g код для чпу станка фото. что такое g код для чпу станка-f4d2d75102b7d1c170ea480daa1f4316. картинка что такое g код для чпу станка. картинка f4d2d75102b7d1c170ea480daa1f4316. Фрезерные работы на станках с ЧПУ

Стандарты и диалекты G-кода для ЧПУ станка: примеры

Первые шаги по регламентированию совокупности команд предприняла уже упомянутая Ассоциация электронной промышленности (EIA), когда ввела RS-274. Со временем свод правил был дополнен и расширен, превратился в NIST RS-274NGC. Большинство его положений перешли в актуальный сегодня стандарт ISO 7 bit.

Диалекты – это ответвления языка, в рамках которых инженеры дописали свои функции, ориентированные на определенную специфику техпроцессов или помогающие положительно выделиться среди ряда конкурентов.

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

Какие бывают G и M коды ЧПУ: описание

Сначала определим, в чем между ними разница. ДЖИ-команды являются основными и подготовительными, ЭМ – вспомогательными (технологическими). Записываются вместе, в строчку (первые – в начале, вторые – в конце) или, другими словами, покадрово – для наглядности листинга. В результате алгоритм представляет собой совокупность символьных блоков – с адресами и числовыми значениями.

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

М-коды программирования ЧПУ призваны дополнять основные, упрощая выполнение алгоритма. На практике их роль сводится к смене лезвий, сверл (или других органов), к вызову и завершению подпрограмм.

Помимо этих двух распространенных семейств, также есть:

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

Подготовительные G-функции ЧПУ

Могут задавать скорость перемещения ножа (гильотины) или выбор плоскости резания, но в блоке всегда записываются первыми. После обязательной литеры – ДЖИ с символами – идут координаты, представленные в виде числовых значений.

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

что такое g код для чпу станка. 08ece21277b05823e01c76827ed65cdd. что такое g код для чпу станка фото. что такое g код для чпу станка-08ece21277b05823e01c76827ed65cdd. картинка что такое g код для чпу станка. картинка 08ece21277b05823e01c76827ed65cdd. Фрезерные работы на станках с ЧПУ

Расшифровка G-кодов для ЧПУ

Основных функций достаточно много, поэтому подробнее рассмотрим те из них, которые чаще всего применяются на практике, и это:

Конечно, есть и другие, менее применимые, но все равно нужные и используемые. В процессе написания алгоритма инженер объединяет их в группы, заставляя взаимодействовать между собой и/или менять друг друга. От эффективности комбинаций зависит общая рациональность листинга, а значит и производительность выполнения технических операций.

Дополнительные функции и символы при программировании

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

Источник

G-code, потерявшийся брат Assembler-а

Про язык управления промышленными CNC-станками и всевозможными любительскими устройствами вроде 3D-принтеров написано очень много статей, но почитать о том, какова идеология этого языка и как она связана с аппаратной реализацией — почти негде. Поскольку моя работа связана непосредственно с программированием станков и автоматизацией производства, я попробую заполнить этот пробел, а также объяснить, почему выбрал такой странный заголовок.

Пару слов о себе, и почему я вообще решил написать об этом. Мои рабочие обязанности заключаются, в том числе, в том, чтобы заставить любой имеющийся в компании станок с ЧПУ делать всё, что он вообще может физически. Компания — небольшая (единицы сотен сотрудников), но в арсенале — вертикальные фрезерные автоматы Haas трех разных поколений, горизонтальные фрезерные автоматы DMG Mori нескольких типов, лазерный резак Mitsubishi, токарные автоматы Citizen Cincom и куча всего еще. И весь этот зоопарк управляется программами на G-code. Изучая разные реализации этого языка, я понял, что то, что пишут в учебниках и книгах по нему — не всегда является правдой. В то же время, мне стали понятны многие аналогии между этим языком и Assembler-ом, который я изучал когда-то в институте, и на котором практически ничего серьезного никогда не написал.

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

Базовый синтаксис

Если вы хоть раз видели программу на G-code, то знаете, что это последовательность строк, которые состоят из буквенных кодов, за которыми следуют некие числа. Эти буквенные коды называются «адрес». Причина такого термина очень проста: в первых контроллерах станков программа выполнялась путем записи значений в ячейки памяти, которым были даны буквенные имена. Исполнительные устройства, в свою очередь, читали значения по этим адресам и делали то, что от них требуется. Когда мне приходится обучать операторов, я объясняю им, что контроллер, на самом деле, можно условно поделить на две части: ту, что отвечает за интерфейс с пользователем, и ту, что отвечает за работу механизмов. Они часто и физически разнесены по разным платам. А общение между ними происходит все еще через ограниченный набор этих самых ячеек памяти. Другой вопрос, что со временем, к именованным адресам, которые обозначаются буквами латинского алфавита, добавились еще численные адреса (начинающиеся с символа #), через которые осуществляется доступ к портам ввода-вывода, настройкам, специальным возможностям, и так далее.

Традиционно, когда описывают синтаксис G-code, говорят, что любая команда в программе начинается с буквы G для «подготовительных» кодов и M — для дополнительных, что номер строки начинается с буквы N, а номер программы или подпрограммы — с буквы O. Это, в принципе, правда, но не вся и не всегда.

Ветвление и циклы

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

Указатели, переменные, регистры

Хотя G- и M-коды контроллеров — довольно большая тема, переменные — еще более обширная и сложная история. Дело в том, что «железо» станков управляется огромным количеством переменных, напоминающих по принципу их работы регистры процессоров. Доступ к этим регистрам в каких-то случаях возможен по предопределенным буквенным именам, в каких-то — по номерам, в каких-то — по назначенным буквенно-цифровым именам. При этом, свойства, назначение и поведение этих переменных могут быть совершенно разными.

Если вы хоть раз видели программу на G-code для промышленного станка, вы, возможно, заметили, что в начале самой программы, а иногда — в начале каждого фрагмента или подпрограммы, отвечающей за один инструмент или один элемент детали, есть длинная строка кодов, которые вроде бы ничего не делают. Это так называемая safe line. Она нужна, потому что станок помнит свое состояние. Например, содержимое какого-то регистра может сохраняться даже после выключения и включения станка, потому абсолютно всегда имеет смысл в явном виде устанавливать желаемое состояние перед совершением каких-то операций. Это напоминает то, как в web-разработке используются Reset.css и Normalize.css. Иначе, это правило для программистов звучит как «никогда не предполагай, что станок находится в определенном состоянии, если ты его в это состояние не привел». Пренебрежение этим может стоить дорого, включая капитальный ремонт станка. При этом, наиболее надежной практикой считается именно приведение станка в искомое состояние, а не проверка, находится ли он в нем. Почему? Потому что приведение, как правило, делается одной безусловной командой, а проверка требует условного ветвления.

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

Приведение типов

Об обучении

Программированию станков с ЧПУ учат очень разными путями и с разными задачами. В одном случае, речь просто о том, чтобы научить пользоваться CAD/CAM, чтобы программист был в состоянии превратить модель (чертёж) в код, исполняемый на том или ином станке, изготавливающий деталь по модели. Это напоминает процесс обучения программированию «общего назначения» в ВУЗе, где вопросы исполнения кода, аппаратной архитектуры и написания кода на Ассемблере рассматриваются очень поверхностно. В других, заметно более редких случаях, процесс более всего напоминает обучение системному программированию, а примеры исполнения кода на конкретной архитектуре входят в него, как неотъемлемая часть. Поскольку я когда-то учился цифровой электронике, и программирование железа на низком уровне было частью этого, пусть и в довольно скромном объеме, второй вариант лично мне как-то ближе, и именно так я старался преподавать это сам, когда у меня была такая возможность.

Я вполне допускаю, что некоторые аналогии в статье могут показаться кому-то натянутыми, но я и не претендую на их точность. Речь, скорее, о сходстве «духа» упомянутых выше языков, о том, что опыт «ассемблерного мышления» может довольно сильно способствовать глубокому пониманию G-code, тогда как опыт программирования только на языках высокого уровня, отделенных от аппаратной реализации, может вызвать недоумение и даже некоторую неприязнь у того, у кого вдруг возникнет необходимость писать вручную для станков с ЧПУ.

Источник

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

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