G-коды: циклы

Материал из cnc-club
Перейти к навигации Перейти к поиску

Постановка задачи

Вместо предисловия.

Часто возникает необходимость на станке ЧПУ выполнять большое количество простых и РЕГУЛЯРНЫХ операций. Например, нужно просверлить 10 000 отверстий в заготовке. Расписывать ВСЕ КООРДИНАТЫ отверстий вручную или начертить их в графическом редакторе, а затем преобразовать в G-код раймет весьма много времени. Что же делать в таких случаях?

Использовать возможность с помощью G-кодов организовать в программе ЦИКЛЫ.

1. Исходные данные

Для начала определимся с исходными данными нашей задачи. Допустим, что нам нужно просверлить в заготовке 10 000 отверстий: 100 отверстий по X в 100 рядах по Y. Шаг отверстий по X - 10мм. Шаг отверстий по Y - 25мм. Глубина сверления - 7мм. Координаты начального отверстия: X15.5 Y0.5

Пропишем эти начальные условия в G-кодах:

#<x-num>=100     (количество отверстий в ряду)
#<y-num>=100     (количество рядов)
#<x-0>=15.5      (начальная координата по X)
#<y-0>=0.5       (начальная координата по Y)
#<x-step>=10     (шаг по X)
#<y-step>=25     (шаг по Y)

Далее присваиваем переменной x и y их начальные значения:

#<x>=#<x-0>
#<y>=#<y-0>

2. Организация цикла

Цикл прописывается, используя О-коды: о<номер цикла> REPEAT и o<номер цикла> ENDREPEAT

Циклы можно вкладывать.

Вернемся к нашей задаче: необходимо просверлить 10 000 отверстий (100 х 100). Допустим, что нам нужно, чтобы отверстия сверлились рядами вдоль X. Значит, мы должны сначала встать на первую координату по Y и "пробежать" отверстия по координате X. Затем встать на следующую координату по Y и опять пробежать все отверстия по X.

В G-кодах это будет выглядеть так:

o100 REPEAT [#<y-num>]
   o101 REPEAT [#<x-num>]
       G0 X#<x> Y#<y>        (переместились в координату с текущими значениями X и Y)
       G1 Z-7.0 F400         (опустились по Z до координаты -7,0 со скоростью 400 - сверление)
       G0 Z5.0               (быстро поднялись по Z на безопасную высоту для перемещения)
       #<x>=[#<x>+#<x-step>] (изменили текущее значение X на шаг
   o101 ENDREPEAT            (вернулись на начало цикла о101 пока количество итераций не станет равным #<x-num>
  #<y>=[#<y>+#<y-step>]      (после выполнения 100 шагов по X переходим в эту строку и делаем приращение по Y на шаг)
  #<x>=#<x-0>                (присваиваем X начальное значение)
о100 ENDREPEAT               (после выполнения 100 шагов по Y выходим из цикла)

Окончательный вид программы

Что не хватает нашей программе? Только начальных и заключительных команд:

G21         (Все размеры в мм) 
G0 Z5.0     (Выйти на безопасную высоту перемещения над заготовкой)
S2000 M3    (Включить шпиндель по часовой стрелки с частотой S)

далее наши циклы сверления и в заключении:

M5          (Выключить вращение шпинделя)
G0 X0 Y0    (Вернуться в начальную точку)
M2          (Окончание программы)

В целом программа будет выглядеть так:

G21 
G0 Z5.0
S2000 M3

#<x-num>=100
#<y-num>=100
#<x-0>=15.5
#<y-0>=0.5
#<x-step>=10
#<y-step>=25

#<x>=#<x-0>
#<y>=#<y-0>

o100 REPEAT [#<y-num>]
   o101 REPEAT [#<x-num>]
       G0 X#<x> Y#<y> 
       G1 Z-7.0 F400
       G0 Z5.0
       #<x>=[#<x>+#<x-step>]
   o101 ENDREPEAT
  #<y>=[#<y>+#<y-step>]
  #<x>=#<x-0>
о100 ENDREPEAT

M5 
G0 X0 Y0
M2 

Всего 23 строки и сверление 10 000 отверстий!!!