Как сделать переход между траекториями в PowerMill по заданному сценарию?
Автор:
PavelK, в Общие вопросы
-
Сейчас на странице 0 пользователей
Нет пользователей, просматривающих эту страницу.
-
Похожие публикации
-
Автор: PavelK
Приветствую!
Расскажу немного о параметрах конических сферических фрез и как найти угол кромки, если он неизвестен.
Пришлось закупиться китайскими фрезами, одна из которых коническая-сферическая, производителя VICTOOL
с параметрами R1.5-20-50-D6-2F.
Как такового стандарта наименования параметров нет (вроде бы), но обычно
R1.5 - Радиус кромки (радиус при вершине)
20 - Длина режущей (рабочей) части
50 - Общая длина
D6 - Диаметр хвостовика
2F - двухзаходная (количество режущих кромок)
При добавлении её в инструменты PowerMill обнаружил, что в параметрах фрезы не указан угол кромки (он же угол конуса).
Для вычисления можно попробовать нарисовать где-нить типа SolidWorks,
Нам важна только высота режущей части, диаметр хвостовика и радиус кромки.
а можно просто посчитать
Значения из характеристик выше:
D=6
R=1.5
H=20
Считаем по алгоритму:
midx=(D/2)/2
midy=(H-R)/2
r2=sqrt((D/2)^2+(H-R)^2)/2
dd=sqrt(midx^2+(H-R-midy)^2)
a=(R^2-r2^2 + dd^2) / (2*dd)
h=sqrt(R^2-a^2)
x2=a*midx/dd
y2=(H-R)+a*(midy-(H-R))/dd
xi=x2-h*(midy-(H-R))/dd
yi=y2+h*midx/dd
A=arctan((D/2-xi)/yi)*180/3.14159
Хе-хе =)
Алгоритм этот выводиться из уравнений пересечения касательной к окружности и решается. sqrt - квадратный корень.
Предполагаю, что считать вручную геммор, поэтому создал Экселевский файл, в которые только параметры свои остаётся подставить.
Автоматический расчёт:
Вычисление угла кромки фрезы.xlsx
Учтите, что когда угол кромки в параметрах фрезы указан
это может быть полный угол, либо угол на сторону, в PowerMill задаётся именно на сторону (полный/2).
Так же, если угол кромки в параметрах фрезы указан,
то "длину" в PowerMill можно ставить больше, это повлияет только на "прямой" участок после наклонного.
В общем, угол кромки важнее.
Ну и табличка по популярным заодно:
НО учитывая, что китайские фрезы далеко не всегда "точны", то лучше проверить всё же угол перед обраоткой.
Вот как-то так =)
-
Автор: PavelK
Постпроцессор на 4 оси на основе Фанука для PowerMill 2018 и старше.
Поворотка вдоль Y!
Из постпроцессора вырезаны вывод циклов, сверловка и куча всего остального (пока что).
Предназначен для Aman 3040. Для других станков нужно изменять размеры кинематики.
Можно использовать вместе с моделью станка: https://stankoforum.net/files/file/1199-модель-станка-aman-3040-с-поворотной-осью-для-powermill/
-
Автор: PavelK
Приветствую!
Подготовка файлов к фрезеровке у меня идёт в программе PowerMill, а в ней есть замечательная возможность показать, как будет происходить обработка с учётом станка - то есть все перемещения шпинделя, проверка столкновений, выход за пределы рабочей плоскости и т.д. В моём случае было важно положение заготовки:
Сейчас покажу как можно самостоятельно сделать модель станка.
Разумеется, нужно сначала смоделировать сам станок в любой CAD программе (да хоть в Blender или 3DS Max) в упрощённой версии, но что бы все размеры и позиции максимально совпадали.
Я это сделал в привычном FreeCad 0.19, на примере станка Aman 3040 800W:
Исходник: Machine-Aman3040.zip (FreeCad 0.19 и должен быть установлен верстак A2Plus).
Он немного не совпадает с реальным станком, т.к. я вносил свои изменения в конструкцию.
Вы можете самостоятельно переделать, если что-то будет сильно не совпадать или пишите - по возможности сделаю 1:1.
Дальше необходимо разбить станок на составляющие части, а именно на неподвижные (станина), и подвижные (оси X, Y, Z).
В PowerMill при создании станка есть два понятия: "head" (головка) и "table" (стол).
Инструмент крепится к головке и перемещается вместе с ней (соответственно и перемещаются все оси).
Заготовка же располагается на столе и, грубо говоря, стол является системой координат.
Нюанс в том, что стол то же может перемещаться - например, в случае наличия поворотного устройства (ось A), или же стол это ось Y,
а следовательно будет перемещаться координатная система.
В моём случае поворотного устройства нет и стол так же неподвижен.
Теперь нужно сделать отдельные файлы для неподвижных и подвижных частей: станина, ось Y, ось X, ось Z (вместе со шпинделем).
Вот так выглядят по отдельности:
То есть станина и каждая ось - весь набор составляющих.
Важно: не перемещайте составляющие при сохранении - для них всех должна сохранятся единая система координат (точка отсчёта).
Сохраняем каждый файл в формате *.STEP (в случае FreeCAD) или, к примеру, в SolidWorks *.sldprt.
Теперь нужно каждый файл сконвертировать в составляющую станка для PowerMill (файл в формате dmt).
Запускаем PowerMill, в верхнем меню File -> Import model (можете в списке типов файлов посмотреть поддерживаемые для экспорта из вашей CAD) и ничего не меняя сразу делаем экспорт File -> Export Model, в типе файла выбираем "Autodesk Manufacturin Triangles (*.dmt)", и выбираем какую-нить папку. Так проделываем со всеми файлами.
У меня вот так:
Все эти файлы я буду в дальнейшем называть "части станка".
Теперь нам нужно описать для PowerMill где какие части станка и что они могут.
Кстати, подробная документация (MTDUserManual) в конце поста.
Сначала поясню, что нам нужно определиться с тем, какие перемещения от каких зависят.
В случае моего станка ось Z зависит от оси X, а она в свою очередь зависит от оси Y, а они зависят от положения head (головки)
Зависимость выясняется просто - что вместе с чем "ездит" от того и зависит. То есть, к примеру, при перемещении оси Y на 100 миллиметров - вместе с ней поедет по Y и ось X, а вместе с ними поедет и ось Z (можно на реальном станке поперемещать, что бы понять, что имел ввиду перемещение оси Z по оси X и Y).
Если был бы 5и координатный станок, то было бы так же, но дополнительно ось U зависела бы от W, а они зависели бы от положения table (стола), так как заготовка крепится к нему.
Ладно, по ходу может станет понятнее.
Создаём в папке, в которую сохраняли файлы на предыдущем шаге, пустой текстовый файл и сразу меняем у него расширение на "*.mtd" и открываем его на редактирование. Кстати, удобнее всего это делать в Notepad++.
Файл пишется в формате xml.
Кто не вкурсе, то в кратце и упрощённо: всё состоит из "блоков".
<name> начинает блок name
вложенные блоки
</name> заканчивает блок name
name - просто название блока. Каждый блок должен быть начат и закончен как на примере выше.
В блок может быть вложен другой блок. Так же у блоков могут быть параметры:
<name param="value">
вложенные блоки
</name>
Где param - название параметра, а value - его значение. Параметры прописываются только в начале блока.
Если в блоке нет содержимого, то можно воспользоваться "короткой записью":
<name param="value" /> То есть начали блок, объявили параметр (не обязательно) и закончили блок.
Блоки считываются и обрабатываются программой PowerMill и каждый блок (и параметр) имеет для неё значение.
Мы так же можем указать комментарий - то, что будет проигнорировано программой:
<!-- весь этот текст будет проигнорирован -->
Таким образов в файле я буду писать комментарии для вас.
Так, пока что этих понятий должно хватить.
Пишем:
<?xml version="1.0" ?> <!-- Даём понять, что документ в xml формате -->
<machine xmlns="x-schema:PowermillMachineTool" POST="SimPost."> <!-- Начинаем описание станка. Задаём постпроцессор симуляции. -->
<machine_part> <!-- неподвижные комоненты-->
<model_list>
<dmt_file>
<path FILE="Frame.dmt" />
<rgb R="100" G="100" B="200" />
</dmt_file>
</model_list>
</machine_part>
Блок machine_part описывает какую-либо часть станка. В нашем случае это станина целиком, т.к. она неподвижна.
Вложенный блок dmt_file говорит, что мы сейчас укажем файл, откуда брать часть станка.
Во вложенном блоке path мы указываем путь до файла с этой частью и его название. Так как файл с описанием у нас лежит в той же папке, что и файлы частей станка, то путь указывать не нужно (путь относительный текущей папки, в которой наш файл с описанием станка).Во вложенном блоке rgb мы можем указать цвет детали в формате RGB (можно взять значения из палитры Фотошопа), в моём случае для станины указал сиреневый.
Да, блоков dmt_file, то есть составляющих одной части, может быть несколько
<dmt_file>
.....
<dmt_file>
<dmt_file>
.....
<dmt_file>
Это если вам нужно, к примеру, по разному раскрасить каждую составляющую станины. Мне же, пока что, ни к чему.
Прописываем стол:
<machine_part NAME="table" > <!-- Стол у нас не двигается. Если двигался бы, то делаете по аналогии с блоком head, он чуть ниже -->
</machine_part>
Здесь мы указали часть, отвечающую за стол. Да, она пустая, так как стол у нас неподвижен.
Чуть дальше мы укажем систему координат стола и её расположение.
Теперь же прописываем оси:
<!-- Описания осей -->
<machine_part>
<axis> <!-- указываем PowerMill, что эта часть станка является "осью" -->
<control_info ADDRESS="Y" MIN="0" MAX="400" VALUE="260" /> <!-- указываем, какой именно, где она сейчас и ограничения перемещений -->
<simple_linear I="0" J="1" K="0" /> <!-- указываем тип перемещения а так же как она направлена в пространстве (как будет перемещаться) -->
</axis>
<model_list> <!-- Укажем, из каких файлов состоит эта часть станка -->
<dmt_file>
<path FILE="AxisY.dmt" />
<rgb R="200" G="200" B="200" />
</dmt_file>
</model_list>
<machine_part> <!-- Вложенный блок части станка, так как от оси Y зависит ось X -->
<axis>
<control_info ADDRESS="X" MIN="0" MAX="300" VALUE="170" />
<simple_linear I="1" J="0" K="0" />
</axis>
<model_list>
<dmt_file>
<path FILE="AxisX.dmt" />
<rgb R="200" G="200" B="200" />
</dmt_file>
</model_list>
<machine_part> <!-- Вложенный блок части станка, так как от оси X зависит ось Z -->
<axis>
<control_info ADDRESS="Z" MIN="0" MAX="80" VALUE="20" />
<simple_linear I="0" J="0" K="-1" />
</axis>
<model_list>
<dmt_file>
<path FILE="AxisZ.dmt" />
<rgb R="200" G="200" B="200" />
</dmt_file>
</model_list>
<!-- Вложенный блок виртуальной части станка head. Тем самым мы указываем PowerMill где по зависимостям находится головка. И, к примеру, если нужно будет головку переместить по Y на 100 мм, то так же по Y на 100 мм будут перемещены предыдущие machine_parts -->
<machine_part NAME="head">
</machine_part>
</machine_part>
</machine_part>
</machine_part>
Надеюсь, понятно про вложенность.
Пояснение по поводу: <control_info ADDRESS="Z" MIN="0" MAX="80" VALUE="20" />
В параметрах MIN и MAX мы указываем пределы перемещений для оси (в мм).
Параметр VALUE указывает где сейчас расположена часть станка в CAD редакторе относительно нуля по расстоянию (когда ось доехала до минимума). Поэтому проще всего перед экспортом переместить в соответствующее место и что бы положение части станка оказалось таким же, как и на реальном станке. За ноль я считаю положение при срабатывании концевого датчика.
Кстати, можно так же указать параметр HOME и задать какое-либо значение - тогда, при нажатии кнопки Home в управлении станком PowerMill оси будут перемещены в это значение.
Пояснение по поводу: <simple_linear I="0" J="0" K="-1" />
Название блока говорит о том, что это просто линейное перемещение.
В параметрах I, J, K мы задаём вектор направления, в котором будет перемещаться часть станка. В данном случае по Z будет сверху вниз отсчёт вестись. Да, возможно перемещение и под углом (установив, к примеру, 0.5 в K и J).
Для поворотного нужно название simple_rotary (в параметрах нужно также будет указать координаты X Y Z - центр вращения).
Указываем положение глобальной системы координат:
<table_attach_point PART="table" X="-154" Y="7" Z="54.5" I="0" J="0" K="1" />
В этом блоке мы указываем, где для PowerMill будет начинаться глобальная система координат и как она будет ориентирована и к какой части станка привязана (что бы она перемещалась вместе с ней).
Вот про что речь:
Относительно глобальной системы координат располагается заготовка.
Где она должна располагаться? Рекомендую в том месте, куда станок приходит в ноль (домашняя позиция) при поиске начал и откуда идёт увеличение координат по X и Y.
НО, учитывая, что на Aman 3040 нет концевых датчиков (которые всё же лучше поставить самостоятельно для удобства), то за 0 можно принять положение, когда каждая ось отогнана "до упора" (вручную на станке).
Значения берёте из вашей CAD программы относительно всё той же системы координат, в которой сохраняли. Ориентацию так же нужно будет поставить, что бы направление системы координат PowerMill соответствовала то, что на станке (в управляющей станком программе).
Скачав исходник моего станка можете глянуть координаты компонента HomePointer что бы более понятно стало.
Указываем точку привязки инструмента:
<head_attach_point PART="head" X="19.5" Y="267.0" Z="141.5" I="0" J="0" K="1" />
Это координаты и ориентация, где будет инструмент (фреза) и куда направлена. В нашем случае логично, что на выходе из шпинделя сверху вниз. Соответственно из CAD, в которой делали станок, берём эти координаты, относительно глобальных.
НО тут есть проблема с тем, что шпиндель с ручной сменой инструмента и положение цанги при закручивании может гулять туда-сюда (и сам вылет инструмента заодно).
ВАЖНО:
Блоки table_attach_point и head_attach_point должны располагаться первыми внутри блока machine. В исходниках всё правильно. В посте указал в таком порядке для более лёгкого осмысления что за чем.
Постпроцессор:
Так же можно и нужно указать постпроцессор симуляции для этого станка в блоке machine:
<machine xmlns="x-schema:PowermillMachineTool" POST="SimPost." >
В данном случае это штатный PowerMill постпроцессор для симуляции. Есть ещё "pmpMultiaxis.*", но про них крайне мало информации, так что если удастся разобраться подробнее, допишу этот параграф.
Дополнительно:
Можно указать ещё процесс смены инструмента. Но т.к. он у всех разный описывать здесь не буду. В документации, есть что-то про это.
Что бы была проверка на столкновения, то у блоков machine_part нужно указать параметр NAME со значением на ваше усмотрение.
Ну и в общем то на этом всё.
Теперь, как тестировать наш "станок":
1. В PowerMill создаёте новый проект.
2. В левой панели Станки -> импорт станка:
3. Выбираете наш файл Aman3040.mtd
4. Будет ошибка "Постпроцессор установлен но не может быть сконфигурирован":
Что бы её не было нужно указать постпроцессор, как именно написал выше в соответствующем параграфе.
5. Станок импортировался.
6. Можем перемещать оси в ручном режим, для этого правой кнопкой на станке и в контекстной менюшке нажать "Положение":
7. Дальше как обычно - импортируем какую-либо тестовую модель, создаём какую-либо обработку, выбираем инструмент и запускаем симуляцию траектории. Профиль патрона, пока что, можно не создавать.
8. Инструмент встанет куда нужно и сможем увидеть, правильно ли всё сделали.
Примечания: PowerMill может проверять на столкновения, поэтому, чем больше будет составляющих и частей станка, тем более производительный компьютер нужен. Не увлекайтесь с точностью повторения станка - только самое главное, что может повлиять на работу или за что может задеть инструмент. Так же могут быть ложные срабатывания - тогда в CAD нужно будет подправить модель, к примеру, если сделали каретки подвижными на валах, то нужно увеличить диаметр отверстия в каретке (на пару соток достаточно обычно).
Все исходники: Machine-Aman3040.zip
Отдельно готовый станок для импорта:
Готовый станок с повороткой вдоль Y:
Постпроцессор для LinuxCNC:
Документация по разработке: MTDUserGuide.pdf
ВАЖНО: После скачивания распаковать архив и импортировать станок как написано выше. Модель станка не точная копия Aman3040 и могут быть отличая в расположении/размерах, т.к. я вносил изменения в свой станок. Если что-то будет сильно отличаться - измерьте и напишите, внесу изменения. Либо можете всё сделать самостоятельно исходники все в архиве.
-
Автор: PavelK
Модель станка c поворотной осью (вдоль Y) для симуляции работы в PowerMill 2018 и старше.
Тема по созданию и модификации:
-
Автор: PavelK
Модель станка для симуляции работы в PowerMill 2018 и старше.
Тема по созданию и модификации:
-