G41 - коррекция на режущий инструмент влево

Материал из NikiWiki
Перейти к:навигация, поиск
YourBunnyWroute.pngАвтор предупреждает!
Данные этой статьи получены из открытых источников и/или документации на обсуждаемое оборудование или из моей экспериментальной деятельности и являются моим персональным мнением и/или комментарием. Смотрите: NikiWiki:Отказ от ответственности


Linuxcnc logo 64.pngПроверялось на LinuxCNC
Все данные и примеры, приведенные в этой статье проверялись на по LinuxCNC и могут некорректно работать в других программах управления станками с ЧПУ


Описание

Команды G41 и G42 назначают коррекцию на инструмент влево и вправо, соответственно. То есть сдвигает режущий инструмент влево/вправо от траектории движения инструмента для коррекции на размер используемого режущего инструмента.

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

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

Примеры:

G41 D1

Скорректировать траекторию влево на радиус фрезы номер 1 по таблице инструмента (см D параметр)

G42 D2

Скорректировать траекторию право на радиус фрезы номер 2 по таблице инструмента (см D параметр)

G40

Отменить корректировку

(i) Обратите внимание на тот факт, что, если, слово D не указано, то используется диаметр текущего инструмента. Если в данный момент инструмент не загружен, то используется нулевой радиус инструмента.

Реальный пример

Рассмотрим код:

G55 Z20
N0021 G01 X120 F200
N0022 G01 Y120 F200  
N0023 G01 X10 F200  
N0024 G01 Y10 F200

Этот код рисует квадратик, но без какой-либо компенсации. Т.е. по линии, которую рисует интерфейс LinuxCNC, проходит центра фрезы.

Действие G41

Действие G41

На приведенном снимке экрана внешний квадрат - есть квадрат из предыдущего примера. Без компенсации, а внутренний квадрат сделан следующим кодом:

N0030 G55 Z30
N0031 G41 D100
N0040 G00 X15 Y15
N0049 G01 X10 Y10 F200
N0050 G01 X120 F200
N0051 G01 Y120 F200
N0052 G01 X10 F200
N0053 G01 Y10 F200 
N0054 G01 X15 Y15 F200
N0060 G40

В чем же отличия?

  1. В строке N0030 мы задали иной отступ системы координат, но это нас сейчас не сильно беспокоит.
  2. В строке N0031 мы включили компенсацию влево.
  3. В строке N0040 мы переместились в позицию X=15, Y=15

А дальше мы нарисовали точно такой же квадратик.

Включение компенсации и отступ по оси Z - не интересны.

Но вот зачем мы сначала "поехали" в точку X=15 и Y=15? А в этом и роется сермяга компенсации. В описании на сайте LinuxCNC нарисовано, но не понятно. Все дело в том, что компенсация "начинает полностью работать" в конце первого шага. Т.е. на первом шаге и происходит тот самый "выход инструмента на траекторию". Т.е., говоря слесарными терминами, - "зарез".

(i) Обратите внимание, что можно было бы сделать "зарез" и на одной из граней, но тогда это было бы не очень наглядно, хотя материал бы сохранился без изъянов.

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

Однако, кусок материала внутри квадрата будет испорчен. На нем будет тот самый "зарез" равный диаметру инструмента.

(i) Обратите внимание, что выход из эквидистанты происходит так же как и вход в нее - за один шаг, но на выходе за следующий после отмены шаг движения. Посему, если в нашем примере после строки N0060 последует G01 или G02 или любая другая команда - траектория этой команды будет в начале содержать отступ, а в конце уже нет.

Действие G42

Действие G42

А теперь тоже самое, только "обрезание" идет по-внешнему контуру искомого квадрата.

N0010 G42 D100
N0040 G00 X5 Y5
N0049 G01 X10 Y10 F200
N0050 G01 X120 F200
N0051 G01 Y120 F200
N0052 G01 X10 F200
N0053 G01 Y10 F200
N0054 G54 G01 X5 Y5 F200  

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

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

{{Обратите внимание на строку N0054. В отличии от предыдущего примера, выход из эквидистанты, т.е. отмену отступа G40, мы производим в составе последнего кадра, выводящего инструмент в "зарез". Т.е. все последующие комадны будут уже без коррекции на диаметр.}}

Практика применения

Очень удобно использовать эти функции при условии того, что Вам не ведомо, каким именно инструментом будет производиться "прорезание".

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

Собственно, дописать код с учетом "текущего" инструмента становиться куда проще.