Нам на работе купили новый станок на стойке fanuc. Series 31i-model B plus.
Я раньше с фануками никогда не работал. Как оказалось, встроенных циклов туда не завезли. А габариткой и планировкой занимаюсь каждый день. Сначала накатал обычный цикл гле идёт рабочий ход по Х, затем шаг по У, затем возврат по Х, и снова шаг по У, для повторения нужное колличество раз. Каждый раз приходилось вручную забивать длину и ширину заготовки, каждый раз вручную делить ширину на диаметр фрезы и прочая повторяющаяся изо дня в день рутина.
Потом решил загуглить универсальное решение, но чё-то "ниасилил". Либо искать не умею либо в лыжы обутый.
Решил накатать сам. Накатал. Все пользуются, все довольные. Но мой внутренний педант каждый раз раздражался когда видел этот зло е-бучий последний паразитный шаг по У на последнем проходе. И ещё раздражало, что если диаметра фрезы было достаточно для прохода за нечётное колличество раз , зацикливать всё равно приходилось два прохода по х, что тоже раздражало. Плюс ко всему этому раздражало что на первом проходе фреза шла с точным выступом за край детали по оси У, а вот чтобы добиться такого же выступа на последнем проходе, нужно было ломать моСк, какой шаг по У поставить, опять же из-за последнего паразитного хода по У.
Вообщем пыхтел я над этой задачей несколько дней и в итоге родил решение, проверил на Cimco всевозможные варианты, и вроде бы всё заработало как надо. На станке тоже отработал со всевозможными вариантами данных. Всё работает. Мой внутренний перфекционист удовлетворён.
Ниже выкладываю текст программы с пояснениями. Так так фануки не понимают великий и могучий, всё что в круглых скобках, удалите либо замените транслитом.
Для безопасности прогоните сначала программу со своими данными на Cimco предварительно выбрав прстросессор fanuc milling iso, либо какая там у Вас есть CAM.
Программу можно легко адаптировать под Ваши нужды, там вроде всё понятно.
Суть программы такова.
Крепите заготовку по оси У клиновыми зажимами. Отбиваете ноли по ХУ по середине заготовки. По Z настраиваете как Вам удобнее.
Программа всегда начинается с правого нижего угла и змейкой проходит плоскость ХУ, затем, если Вы указали дополнительные проходы, возвращается по плоскости безопасности опять в правый нижний угол и отпускается по Z на величину шага Z котрый Вы указали и повторяет столько раз сколько Вы укажете. Выступы за края заготовки по оси У на первом и последнем проходе по умолчанию 5 мм от рабочего диаметра фрезы. Выход за заготовку по оси Х по умолчанию по 5 мм на сторону, тоесть между заготовкой и внешним диаметром фрезы будет зазор 5мм.
Далее программа рассчитает сколько нужно проходов по У, причём хоть чётное хоть не чётное колличество.
Есть текстовый файл, но я не знаю как здесь его выложить. Можете скопировать из поста, сам текст программы ниже.
Если захотите изменить нумерацию кадров, следите за операторами GOTO!
Если кому-то приготится, буду рад. Пользуйтесь.
%
O3033 (универсальная прямоугольная планировка с рабочим ходом по оси Х, с дополнительными проходами по оси Z. Ноль ХУ по центру заготовки! Ноль по Z на Ваше усмотрение)
N1 G40 G17 G94 G90 G54 (строка безопасности)
(входные данные)
#1=100 (координата Z первого прохода)
#2=3 (колличество дополнительных проходов по Z)
#3=0.5 (шаг дополнительных проходов по Z)
#4=200 (плоскость безопасности по Z)
#5=720 (фактическая длина заготовки по Х)
#6=300 (фактическая ширина заготовки по У)
#7=125 (внешний диаметр фрезы)
#8=94 (рабочий диаметр фрезы, т.е. диаметр по пластинам, который обеспечит перехлёст проходов)
#9=700 (обороты шпинделя)
#10=870 (рабочая подача)
#11=28 (номер инструмента, он же номер корректора длины инструмента)
(дальше не лезем)
#12=#5+#7+10 (длина рабочего хода по оси Х. сумма из фактической длины заготовки по Х, внешнего диаметра фрезы и 10 мм-по 5мм на сторону, для выхода фрезы за заготовку)
#13=#6+10 (ширина заготовки по У + 10мм - по 5 мм на сторону, чтобы обеспечить вылет фрезы за края заготовки на 5мм)
#14=#5/2+#7/2+5 (исходная точка начала цикла по оси Х)
#15=-[#13/2-#8/2](исходная точка начала цикла по оси У)
#16=FUP[#13/#8](делим, с округлением в бОльшую сторону, ширину заготовки по У +10мм на рабочий диаметр фрезы, что бы определить минимальное колличество проходов по У)
#17=[#13/#16](делим ширину заготовки по У +10мм на полученное в #16 минимальное колличество проходов по У, чтобы получить значение шага по У)
#18=-#15*2 (расстояние по оси У между первым и последним проходами)
#19=#18/[#16-1] (фактический шаг по У, обеспечивающий равные шаги по всей заготовке)
(сама программа)
N2 T#11 M6
N3 S#9 M3
N4 #20=-#12 (промежуточная переменная для возврата знака направления первого прохода по Х для каждого нового уровня по Z)
N5 G90 G43 H#11 G1 Z#4 F10000 (активация корректора длины инструмента на плоскости безопасности)
N6 X#14 Y#15 (исходная точка цикла)
N7 Z#1 F4200(опускание на координату Z первого прохода)
N8 WHILE [#16NE0]DO1(цикл обработки плоскости)
N9 G91X#20F#10(рабочий проход по Х)
N10 #16=#16-1(вычитаем один проход по Х)
N11 IF[#16EQ0] GOTO14(проверяем колличество проходов на равенство нулю, если равно нулю, заканчиваем цикл обработки плоскости)
N12 Y#19(смещаем У на величину шага)
N13 #20=-#20(инвертируем знак по оси Х, чтобы идти в другую сторону)
N14 END1
N15 WHILE [#2GT0]DO2(цикл шага по кординате Z)
N16 #1=#1-#3
N17 #16=FUP[#13/#8]
N18 #2=#2-1
N19 GOTO4
N20 END2
N21 M30
%