Обработка литой детали, материал нержавейка
Съемка через защитное стекло, поэтому картинка не очень.
Съемка через защитное стекло, поэтому картинка не очень.
Нужно обработать сразу 4 заготовки.
Делаем подставку без регулировок, фрезеруя по месту карманы для каждой заготовки. Высота посадки детали будет +/- одинаковая, ширину кармана делаем чуть пошире заготовки на пару мм, так как это литьё.
Еще на той стороне, которая смотрит на нас, делам упоры из болтов, фиксируем(можно на сварку) и проходим по ним фрезой, чтобы детали по оси Z Стояли на одном расстоянии при B0.
Обмеряем с помощью marposs/renishaw, получем набор координат:
Считаем угол поворота каждой детали
#521=ATAN[[#638+#655]/227](*B1*);
#522=ATAN[[#641+#658]/227](*B2*);
#523=ATAN[[#644+#661]/227](*B3*);
#524=ATAN[[#647+#664]/227](*B4*);
и смещение по оси Х и Z по подпрограмме:
G65P8020I501K500X#638Z130A#521;
G65P8020I504K503X#641Z130A#522;
G65P8020I507K506X#644Z130A#523;
G65P8020I510K509X#647Z130A#524;
Которая выглядит так:
O8020(Z-X RAS4ET);
(#4 - I X YACH);
(#6 - K Z YACH);
(#18 - R RADIUS DETALI);
IF[#1EQ#3100]THEN#1=#5045(NACH UGOL - A#1);
(#24 X - SMESH);
(#26 Z - SMESH);
IF[#4EQ#3100]THEN#4=507;
IF[#6EQ#3100]THEN#6=506;
IF[#2NE#3100]THEN#1=#2;
#[#4]=-[[#26*SIN[#1]-#24*COS[#1]]](X);
#[#6]=[#26*COS[#1]+#24*SIN[#1]]+#18(Z);
M99;
Получаем набор координат:
#521-#524 углы поворота стола для каждой из деталей
#500, #503, #506, #509 координаты по оси Z
#501, #503, #507, #510 координаты по оси ХДальше обработка.
Еще немного геометрии и Fanuc.
Цель - найти центр заготовки на поворотной оси, при установке детали в произвольном месте, кстати, деталь необязательно должна быть круглой.
Детали разовые, поэтому обработка без подставки.
Наша цель при повороте стола на любой градус знать где находится центр заготовки.
Ищем центр заготовки при положении стола в В0 любым доступным методом (marposs/renishaw/на касание/стрелочный индикатор)
В нашем примере возьмем целые числа для удобства расчетов. Хотя чуть позже они будут не очень целыми. и повернем стол на 14 градусов. Получим:
Итоговый результат должен получиться по Х20,46 Z37,89
Для удобства увеличим зону рассчетов
Если уже стало всё непонятно, то дальше будет еще хуже))
Проведем доп линии и обозначим точки
Точка А - центр вращения стола, точка С - центр детали
CD - это наше смещение по оси Х после поворота
BD - по оси Z
AG=41(Смещение по Z до поворота)
DG=11(Смещение по Х до поворота)
***Треугольник AHG***
HG=AG*cos14=39,782
AH=AG*sin14=9,919
AH=CF
***Треугольник DEG***
EG=11*tg14=2,743
ED=11/cos14=11,337
***Треугольник EFG***
EF=EG*sin14=0,664
GF=EG*cos14=2,662
CD=AH+ED-EF=9,919+11,337-0,664=20.592(**ось X**)
BD=HG-GF=39,782-2,662=37,12(**ось Z**)
При перечтении статьи заметил что оси можно посчитать более коротким путем, через треугольник DFG, пришлось немного переписать формулу, но по итогу она получилась проще (оставлю было/стало)
DF=DG*cos14
FG=DG*sin14
CD=DF+AH(**ось X**)
BD=HG-GF
Итог:
(Х) CD=[11*cos14]+[41*sin14] / было CD=[11*sin14]+[11/cos14]-[11*tg14*sin14]
(Z) BD=[41*cos14]-[14*sin14] / было BD=[41*cos14]-[11*tg14*cos14]
так как у нас стоит кругляк, нужно к оси Z еще прибавить его радиус.
сделаем из расчетов небольшую подпрограмму с переменными, для задания произвольного смещения и угла поворота
О0100;
(#2 - B угол поворота детали);
(#24 - X начальное смещение);
(#26 - Z начальное смещение);
(#18 - R радиус деали);
#500=#26*COS[#2]-#24*SIN[#2]+#18(**Z**);
#501=#24*COS[#2]+#26*SIN[#2](**X**);
M99;
вызов
G65P0100B30X10Z5R200;
Об использовании данной подрограммы не только на круглых деталях сделаю сделаю отчет в следующих постах.
Часто бывает надобность в единичных деталях, для которых делать отдельную подставку нецелесообразно.
В таких случаях устанавливаю просто на кругляк, ну или на что попало.
Требуется повернуть деталь так, чтобы одна из ее сторон стала паралельна оси Х.
Эскиз вид сверху:
Черным цветом схематично указана одна из граней детали.
Так как у нас имеется система для замеров Renishaw, будем использовать ее. Но при желании можно сделать тоже самое резцом/сверлом/фрезой просто подвести маховиком и записать значения.
По крайним точкам грани (оси Х) производим замеры по оси Z.
Получаем примерно следущее:
#660=173.767 (значение по оси Z в точке Х-146)
#661=177.633 (значение по оси Z в точке Х146)
Известно два катета
а=#660-#661
b=146+146
Зная их, можно найти нужный нам угол через арктангенс, данная функция отлично работает на фануке пишется ATAN[значение]
∠β=arctg(b/a)
тут я немного ошибся и указал ширину 290, вместо 292
ну и результат, после повторного измерения
как можно заметить на скриншоте ось "В" в верхнем левом углу в столбце ABSOLUTE изменилась с нуля, на 359,227 при этом разница по оси "Z" в ячейках #660 и #661 стала в районе 0,03
Таким же образом можно замерять не только плоскость, но и детали других форм
Например на этой нужно замерить смещение не по оси Z, как на примере ранее, а смещение по оси Х в точке 1 и точке 2, найти их разность и поделить на длинну детали по оси Z
И в конце небольшое видео замера детали
Фух... на этот раз постарался всё описать картинками, чтобы было понятнее. Задавайте вопросы, укажите ошибки, я тоже только учусь =)
Последнее время часто сталкиваюсь с фрезерной/токарной обработкой кругляшек.
Итак, нужно фрезернуть его, на большем диаметре сделать плоскость до меньшего диаметра. Чтобы не городить лишнюю кучу пустого хождения фрезы по воздуху, будем рассчитывать координату Х для каждого прохода отдельно.
Нам пригодится немного геометрии с Пифагором. Плоскость фрезеровки выглядит примерно так:
Точка "С" у нас будет нулем по оси Z, BC - параллельна оси Z, ноль по Y где-то в середине заготовки.
Точка "В" ноль по Х, нам нужно найти длинну отрезка АВ.
По Пифагору АС^2 = АВ^2 + ВС^2. АС - радиус заготовки, ВС - наш проход по оси Z, который будет уменьшаться до нужного размера.
Берем цикл из предыдущего поста и дополняем его расчётом:
#1=150(начальная координата);
#2=110(конечная координата);
#3=3(шаг);
#4=150(радиус заготовки)
N5;
#1=#1-#3(минус шаг);
IF[#1LT#2]THEN#1=#2(если текущее значение #1 меньше конца, то мы их приравниваем);
(подход на рабочую координату);
#5=SQRT[#4*#4-#1*#1](расчет координаты Х, чем ближе к центру заготовки, тем больше будет значение Х)
G0X-[#5+20+5](подход по Х, складываем расчетный край фрезеровки+радиус фрезы+немного для безопасного подхода)
G1Z#1(подход на Z);
(контур обработки, фрезерования или точения);
G1X[#5+5];(можно использовать контур, либо подпрограмму на фрезеровку прямоугольника/круга/любой фигуры)
(отход);
G0Z[#1+#3];
IF[#1NE#2]GOTO5(если текущая координата не равна концу, то продолжаем обработку по циклу);
(если они равны то идем далше по программе);
данная программа показана как пример, ее нетрудно переделать под свои оси и условия обработки
можно немного дополнить на проверку радиус больше начальной координаты
IF[#1GT#4]THEN#3000=1(Z больше радиуса заготовки) /выдаст сигнал тревоги
так же можно считать радиус фрезы из офсета с помощью переменных #6=[#_OFSRG[[#_BUFD]]]
[#_BUFD] - это параметр считывания привязки через параметр D, [#_BUFH] для считывания через Н. [#_OFSRG[n]] - значение компенсации на радиус вершины инструмента из вкладки геометрия.
Либо просто воспользоваться компенсацией на радиус инструмента G41/G42
PS
до цикла while так и не добрался
Работаю на горизонтально-фрезерных многоцелевых станках. Кам системами для написания программ не пользуюсь ввиду простоты обрабатываемых деталей. Периодически нужно выполнить одинаковые операции но с разными размерами (фрезеровка пазов, точение канавок, сверловка отверстий, нарезание резьбы резьбофрезой, геометрические расчеты).
Поэтому хочу поделиться опытом написания таких подпрограмм.
Начну пожалуй с описания самих станков.
Механика представляет из себя 5ти осевой станок, три из которых стандартные X-Y-Z, а остальные две - это поворотный стол на 360 градусов (ось B ) и ось план-суппорта для токарной обработки (ось - U).
Fanuc 32i model B.
G-коды используются как от фрезерных, так и от токарных станков.
В своих подрограммах использую цикл, состоящий из 2х условий:
#1=10(начальная координата);
#2=0(конечная координата);
#3=3(шаг);
N5;
#1=#1-#3(минус шаг);
IF[#1LT#2]THEN#1=#2(если текущее значение #1 меньше конца, то мы их приравниваем);
(подход на рабочую координату);
G1Z#1;
(контур обработки, фрезерования или точения);
X-10;
Y-10;
X10;
Y10;
(отход);
G0Z[#1+#3];
X20Y20;
IF[#1NE#2]GOTO5(если текущая координата не равна концу, то продолжаем обработку по циклу);
(если они равны то идем далше по программе);
тут будет проход по Z7, Z4, Z1 и при Z-2 он приравняет его к #2 и будет равен Z0.
Применение удобно при различной фрезеровке контуров, пазов. Если еще задать через переменную диаметр фрезы, либо считать параметр радиус из оффсета получится унверсальная программа и при смене фрезы, на больший или меньший диаметр не придется ее переписывать.
Так же удобно использовать в токарке, например для проточки фланца под 8ми угольную прокладку.
В следующих постах опишу про выставление деталей на столе (по оси В) и различные применения геометрических формул при обработке деталей.
Возможно текст получался не очень читаемым, пытался собрать все мысли в кучку, дальше разберемся =)