Оптимизация подачи для круговых G-код операций
Ранее эта колонка обсуждала проблему, связанную с подачей, необходимой для круговых движений при целевой постоянной контурной скорости — именно для внутренних дуг или внешних дуг, когда удаляемый материал сбалансирован вокруг обрабатываемого контура (финишная фрезеровка и ближние к чистовой заготовки). Разница в размере между траекторией центра фрезы и траекторией рабочей поверхности требует увеличения линейной подачи для внешних круговых движений и уменьшения для внутренних, чтобы достичь постоянной контурной скорости.
В прошлом месяце продемонстрировал метод определения требуемой модифицированной подачи для круговых движений. Но ручной расчёт утомителен, особенно при регулярном использовании или для разных радиусов рабочей поверхности. Пока используется компенсация радиуса резака, и пока запрограммированные координаты отражают траекторию рабочей поверхности, оператор может ввести радиус фрезы в регистр компенсации радиуса резака.
При использовании правых фрез, состояние компенсации радиуса (G41 — резак слева, G42 — резак справа) помогает определить, является ли данная круговая команда обработкой внутреннего или внешнего радиуса. Любой G02 (по часовой стрелке) когда резак слева от обрабатываемых поверхностей (G41) — внешняя дуга. Любой G03 (против часовой) — внутренняя. Обратное верно при G42. С FANUC Custom Macro программа может получить значение радиуса резака из его регистра смещения и текущее состояние компенсации радиуса (G41 или G42).
Создал две пользовательские G-код программы для круговых движений с скорректированной подачей, назвав их G102 (по часовой) и G103 (против часовой). Запрограммировал их так же, как G02 и G03 (хотя они не модальны). Каждая сравнит радиус рабочей поверхности (задаваемый R-словом в G102/G103) с радиусом траектории центра резака (рассчитанным из радиуса резака из регистра смещения и радиуса рабочей поверхности). Затем рассчитают модифицированную подачу по показанному ранее методу и выполнят круговую команду G02/G03 с модифицированной подачей.
Что такое пользовательские G-код программы?
Вот две программы:
O9010 (G102, программа по часовой стрелке) #1=#4109 (Сохранение текущего F) IF[#9NE#0]THEN#1=#9 (Тест: новая подача?) IF[#9EQ#0]THEN #9=#1 (Если нет новой, сохранить текущую) #2=[#_OFSDG[#4107]] (Доступ к значению смещения) IF[#4007EQ41]GOTO5 (Условие G41, внешняя дуга) IF[#4007EQ42]GOTO10 (Условие G42, внутренняя дуга) #3000=100 (CRC COMP MUST BE USED) N5 (Внешняя) #3=#9*[#18+#2]/#18 (Подача для внешней) GOTO75 N10 (Внутренняя) #3=#9*[#18-#2]/#18 (Подача для внутренней) N75 G02 X#24 Y#25 R#18 F#3 F#1 M99 O9011 (G103, программа против часовой) #1=#4109 IF[#9NE#0]THEN#1=#9 IF[#9EQ#0]THEN #9=#1 #2=[#_OFSDG[#4107]] IF[#4007EQ41]GOTO5 IF[#4007EQ42]GOTO10 #3000=100 (CRC COMP MUST BE USED) N5 (Внутренняя дуга) #3=#9*[#18-#2]/#18 (Подача для внешней — ошибка в оригинале, но логика: при G41 внутренняя для G03) GOTO75 N10 (Внешняя дуга) #3=#9*[#2+#18]/#18 (Подача для внутренней — аналогично) N75 G03 X#24 Y#25 R#18 F#3 F#1 M99
Чтобы эти программы работали как пользовательские G-коды, измените два параметра FANUC (для текущих — 6051 и 6052 для нашего примера). Установив 6051=102 и 6052=103, ЧПУ будет выполнять O9010 при G102 и O9011 при G103.
Пример программы для тестирования. Также макрос, так что переменные легко модифицируемы. Перед запуском нужно установить значение в регистре геометрии компенсации радиуса резака (D-регистр смещения 1 для примера) в радиус фрезы.
Кстати, если регистр компенсации радиуса установлен в ноль, станок будет использовать траекторию рабочей поверхности. Время цикла будет почти таким же, как при введённом радиусе резака. Единственное время, когда расстояние связано с длиной движения — при команде ввода компенсации радиуса. Это подтверждает, что постоянная контурная скорость работает как надо.
O0041 (G41 / G102, Внешние дуги) #100=0.25 (Радиус угла) #101=10.0 (подача) #102=1.5 (длина X) #103=1.5 (длина Y) T01M06 G40G00X-1.5Y-.5 G43H01Z-0.5 G01G41D01X0F10.0 G01Y[#103-#100]F#101 G102X#100Y#103R#100 G01X[#102-#100] G102X#102Y[#103-#100]R#100 G01Y#100 G102X[#102-#100]Y0R#100 G01X#100 G102X0Y#100R#100 G00G40X-1.5Y-0.8 M30
Обратите внимание: G102 запрограммирован как G02: с X, Y, R. Локальные переменные #24 (X), #25 (Y), #18 (R) устанавливаются соответственно. Вызывает O9010, которая:
- Устанавливает #1 в текущую активную подачу (для восстановления после кругового движения)
- Если подача указана в G102, устанавливает #1 соответственно
- Обеспечивает сохранение подачи (если включена в G102)
- Сохраняет текущее значение регистра компенсации радиуса в #2
- Исполняет с N5 при условии G41 (внешняя дуга)
- Исполняет с N10 при условии G42 (внутренняя дуга)
- Генерирует аварию, если компенсация радиуса не введена
- Рассчитывает подачу для внешней дуги
- Рассчитывает подачу для внутренней дуги
- Выполняет круговую команду G02
- Восстанавливает подачу к значению до кругового движения
Почти идентичные техники используются с O9011.
Промышленное оборудование
- Мастерство GPIO Raspberry Pi: подключение PIR-датчика движения на B+/Model 2
- Подключение, калибровка и программирование PIR-датчика HC‑SR501 с Raspberry Pi
- Ineos Styrolution и Polystyvert объединяют усилия для круговой экономики полистирола
- Представляем Dryflex Circular TPE от Hexpol — устойчивые решения для автомобильных интерьеров
- Точный измерятель пульса на фоторезисторе и Arduino: сборка и настройка
- Подключение SIM800L к Arduino: работа с AT-командами через Serial
- Basil Street Pizza Vending партнерится с Arcus Servo Motion для ускорения национального развертывания
- Fortune International Vturn-40: мощный токарный станок с высокой подачей для тяжелой резки
- Технология линейного движения: точные решения для автоматизации
- Скорость подачи vs скорость резания: освоение ключевых параметров обработки на станках с ЧПУ