1 - 2004

Макросы в CAM-системе? Почему бы и нет!

Андрей Дубровин

CAM-система ГеММа-3D развивается с учетом замечаний и предложений пользователей. Действительно, даже собственным рождением система ГеММа-3D обязана предложению одного из пользователей. Тогда был разработан первый модуль для 4-координатной фрезерной обработки турбоколес, и именно тогда ГеММа-3D начала свой жизненный путь как САМ-система. С тех пор в системе регулярно появляются новые модули, а уже имеющиеся приобретают новые возможности и параметры обработки. Последние новинки — модули лазерной/плазменной резки и листопробивной обработки, а для массовой обработки поверхностей — функции обработки по различным стратегиям, которые так необходимы для обработки моделей, импортированных из других систем.

Создание новых модулей оправданно, если они пользуются спросом у большого количества пользователей. Однако в универсальных модулях невозможно учесть особенности конкретного производства. Возникает вопрос: как быстро выполнить пожелание конкретного предприятия, не внося значительных изменений в уже отлаженную и опробованную систему? Разработчиками был найден великолепный выход — создание системы макропрограммирования. Для этого был разработан язык программирования GML (GeMMa Macro Langvuage), предназначенный для создания макропроцедур.

Макроязык представляет собой упрощенный вариант языка Basic. Основной его особенностью является возможность использования тех самых геометрических функций и функций графического интерфейса, которые применяет в своей работе прикладной программист — разработчик системы ГеММа-3D. Именно поэтому макропрограммирование позволяет создавать программные процедуры, использующие все возможности программного ядра. По своей сути такие процедуры практически ничем не отличаются от встроенных функций системы.

Исходными данными для макросов служат любые текстовые файлы и объекты системы ГеММа-3D: геометрические объекты, проходы (траектории управляющих программ (УП) до преобразования в АРТ-файл). АРТ-файлы системы ГеММа-3D и других САМ-систем, управляющие программы для различных систем ЧПУ — все это числовая информация, представленная в текстовом виде, которая может быть использована макросом. В поступающей в макрос информации значительное место занимает диалог с пользователем. Система предлагает оконный интерфейс с возможностью ввода и редактирования всех типов входных данных — числовых, логических и текстовых. Выходная информация может быть визуализирована на экране в виде специальных сообщений для пользователя или созданных макросом геометрических объектов. И, конечно же, на выходе может быть получен текстовый файл, содержащий любую требуемую информацию, подготовленную макросом. Это может быть файл с данными прохода инструмента, АРТ-файл или готовая машинная программа, технологическая карта фрезерной обработки или карта инструмента, анализ точности геометрических построений или результаты проверки на подрез обрабатываемой поверхности фрезой.

Такие возможности позволяют оперативно реагировать на пожелания пользователей, не вписывающиеся в рамки уже действующей системы. Например, таким образом были выполнены макросы-программы на языке GML для создания плоских объектов, представленных на рис. 1. Информация из традиционных справочников конструктора легла в основу макросов, которые выполняют полный контур профиля зубьев звездочек приводных роликовых и втулочных цепей. Всего трех параметров достаточно, чтобы построить профиль прямозубого цилиндрического колеса даже с учетом смещения, позволяющего учитывать возможный зазор в зацеплении.

По заказу одного из пользователей был создан макрос для выполнения гравировки на поверхности вращения — на внутренней поверхности матрицы для литья бутылок. Для выполнения гравировки в первую очередь подготавливается нужная информация: гравировальный проход на плоскости нужных габаритов, а также образующая поверхности вращения. Далее проход плоской гравировки преобразуется макросом сначала в гравировку на промежуточную поверхность кругового цилиндра, а затем проецируется на произвольную поверхность вращения, заданную образующей. При этом по желанию можно выбрать гравировку для обычной 3-осевой обработки или задать 4-осевую обработку. В последнем случае ось фрезы будет перпендикулярна оси вращения гравируемой поверхности.

Однако язык GML скоро перестал быть привилегией разработчиков — пользователи тоже начали применять этот удобный инструмент в своей повседневной работе. Обычно заниматься макропрограммированием пользователи начинают с автоматизации построения простых элементов или часто повторяющихся действий. Это могут быть типовые элементы конструкции, построение геометрического объекта типа нестандартного подхода/отхода инструмента, определение точности прилегания кривой или полигона к поверхности, выравнивание кривой по параметру, изменение точки начала замкнутой кривой. Накопив опыт, пользователь может приступать к созданию макросов для преобразования объектов на уровне их реструктуризации: перенос кривых линий и проходов с плоскости на поверхность; создание развертки поверхности; создание простых проходов сверления при 5-осевой обработке; для программ ЧПУ 4- и 5-осевой обработки осуществляется контроль подрезов и имитация движения детали и фрезы. Пользователи, овладевшие макропрограммированием в совершенстве, создают макросы, которые по своему стилю и качеству приближаются к функциям ядра системы ГеММа-3D. Обычно это макросы создания проходов с полноценным сервисом для программиста ЧПУ.

В стандартную поставку системы ГеММа-3D включены около двух десятков макросов. Пожалуй, самым необычным из них является макрос «Стрелочные часы». При его выполнении на экране в пространстве модели появляются обыкновенные стрелочные часы, которые начинают отсчитывать системное время компьютера. Изображение часов вместе с моделью можно динамически покрутить. Стрелки часов при этом продолжат свое движение по циферблату и будут идти до тех пор, пока макрос не будет остановлен (рис. 2). Безусловно, это просто демонстрационный пример, но он предназначен для того, чтобы показать возможности макросов, которые можно использовать в последующей работе.

Многие пользователи ГеММа-3D применяют макропрограммирование для проверки управляющих программ 4- и 5-координатной обработки. Речь идет не о расчетной геометрии траектории фрезы в пространстве детали, а об управляющей программе, готовой для выполнения на конкретном станке. Дело в том, что подобные программы практически невозможно просмотреть в обычных 3D-редакторах управляющих программ: 3D-траектория фрезы становится непонятной без демонстрации работы угловых осей станка. Анализ качества работы таких программ необходимо проводить с учетом компоновки рабочих органов эксплуатируемого станка — вот тут и приходит на помощь макрос.

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

Например, таким образом был разработан макрос для визуализации движения рабочих органов станка при выполнении конкретной УП для 5-осевого токарно-фрезерного станка MAZAK-640МТ-PRO. Самое приятное в эксплуатации подобных макросов то, что можно в любой момент вмешаться в алгоритм — это необходимо для учета нестандартных, присущих только данному станку характеристик, например неоднозначной условной реакции станка на переход «токарной» оси станка через границу 360° в режиме фрезерования. Такое условие можно без особого труда организовать обычным условным оператором в макросе. И уж совсем просто учесть удвоенное значение по оси Х, характерное для токарных станков.

Отлаженный макрос стал удобным инструментом предварительной проверки УП перед передачей их на станок для обработки. Так, при подготовке техпроцесса для детали «шнек» (рис. 3) с помощью макроса была обнаружена несогласованность между позиционированием детали, принятым на станке, и позиционированием, используемым подготовленным постпроцессором. Поэтому макрос был использован при последней отладке постпроцессора. После выполнения этих работ элементарный инструментарий для подготовки УП на станок был готов.

Но, как часто бывает в подобных случаях, этих инструментов оказалось недостаточно. Появилась необходимость в управляющей программе, оптимальной для изготовления шнека на данном станке. Оказалось, что для производства подобных деталей удобнее использовать 4-осевую обработку — в этом случае значительно снижаются погрешности привязки между деталью и фрезой. Просмотр вновь созданных УП показал, что 4-осевая обработка с привязкой к изопараметрикам модели с автоматической ориентацией оси фрезы для деталей «шнек» не может быть применена в чистом виде. На некоторых участках программы фреза заходит в «теневые» участки обработки и подрезает деталь. Тогда было принято решение о подготовке дополнительного макроса для изменения ориентации оси фрезы. Результатом его работы стал такой проход фрезы, при котором точка соприкосновения фрезы и детали оставалась на прежнем месте, а ось фрезы проходила через ось шнека по кратчайшему пути, то есть перпендикулярно к оси. Именно в таком виде управляющая программа и пошла на станок.

Приобретенный опыт лег в основу новых работ. Оказалось, что принцип переориентации фрезы можно использовать и в других случаях. Например, для решения такой задачи: углубление, предварительно обработанное фрезой большого размера, нужно доработать конической фрезой со сферой небольшого диаметра на конце. Обычно проблема проектирования такой обработки заключается в том, что:

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

• 5-осевая обработка по изопараметрикам неприемлема для одновременной обработки большого количества поверхностей. Практически невозможно получить качественную обработку пяти-семи произвольных поверхностей по одной стратегии без автоматической ориентации оси фрезы.

Чтобы обойти эти проблемы 5-осевой обработки глубоких колодцев, был создан еще один макрос на основе макроса, подготовленного ранее для обработки шнека. Объект, предназначенный для «притягивания» оси фрезы, работал теперь не с продолжением фрезы (ниже тела фрезы), как в случае шнека, а внутри тела фрезы — с другой стороны. Работа с таким макросом удобна и наглядна. Нужно заранее подготовить проход, полученный любой желаемой стратегией. Любопытно, что можно использовать проходы 4D- или 5D-обработки, но лучше всего — 3D-проходы для обработки произвольного количества поверхностей выбранной зоны. Кроме того, нужно указать геометрический объект, через который будет проходить ось фрезы. Макрос изменяет положение фрезы в пространстве таким образом, что точка касания с поверхностью остается прежней, а ось фрезы проходит через ближайшую точку указанного объекта, который в общем случае может быть линией, поверхностью или просто точкой. Если правильно установить объект, «притягивающий» ось фрезы (для колодца это середина его верхнего среза), то фреза ни в одном из своих положений не коснется стенок (рис. 4). А этого нам и хотелось добиться при проектировании программы обработки дна колодца.

Опытные пользователи не останавливаются на применении макропрограммирования для создания простых объектов или их преобразования, а разрабатывают функции, являющиеся самостоятельными операциями. Например, уже стал популярным макрос для автоматизированной подготовки данных для УЧПУ Haidenhain, которое содержит богатый набор встроенных макроциклов, не вписывающихся в возможности стандартного программирования в G-кодах. Макрос имеет удобный оконный интерфейс с подсказками в виде рисунков и потому использует при выполнении операций заранее подготовленную библиотеку с изображениями.

Но настоящим высшим пилотажем использования языка GML стали макросы, созданные пользователями из Запорожья. Вернее, комплект макросов для проектирования 5-осевой обработки — он удовлетворит даже самого требовательного пользователя. Макросы имеют оконный интерфейс с закладками, основанный на библиотеках подпрограмм и рисунков. В них реализованы широкие возможности по способу задания подходов и по управлению вектором инструмента, различные стратегии обработки и произвольное управление порядком выполнения строк внутри прохода. Эти макросы оказались настолько удачными, что было принято решение добавить в ядро системы ГеММа-3D новые функции, подготовленные на основе уже отработанных в макросах алгоритмов. Вот уж действительно достойное продолжение жизни макросов!

Из всего вышесказанного понятно, что язык GML — это удобный вспомогательный инструмент и для разработчиков, и для пользователей. Важно научиться умело им пользоваться, не задумываясь о том, является ли GML функцией ядра ГеММа-3D или внешней процедурой. Главное, чтобы его применение давало хорошие результаты. А проверить полезность макроса просто — следует испытать в работе уже готовые макросы, после чего заняться созданием собственных.

«САПР и графика» 1'2004