Перейти к содержанию
  • Привет. Кажется, ты используешь AdBlock. Наш форум развивается и существует за счет доходов от рекламы. Добавь нас в исключения =) КАК ДОБАВИТЬ?
PavelK

Создание модели станка для PowerMill

Рекомендуемые сообщения

Приветствую!

Подготовка файлов к фрезеровке у меня идёт в программе PowerMill, а в ней есть замечательная возможность показать, как будет происходить обработка с учётом станка - то есть все перемещения шпинделя, проверка столкновений, выход за пределы рабочей плоскости и т.д. В моём случае было важно положение заготовки:

 

Сейчас покажу как можно самостоятельно сделать модель станка.

Разумеется, нужно сначала смоделировать сам станок в любой CAD программе (да хоть в Blender или 3DS Max) в упрощённой версии, но что бы все размеры и позиции максимально совпадали.

Я это сделал в привычном FreeCad 0.19, на примере станка Aman 3040 800W:

image.png

Исходник:  Machine-Aman3040.zip (FreeCad 0.19 и должен быть установлен верстак A2Plus).
Он немного не совпадает с реальным станком, т.к. я вносил свои изменения в конструкцию.
Вы можете самостоятельно переделать, если что-то будет сильно не совпадать или пишите - по возможности сделаю 1:1.

Дальше необходимо разбить станок на составляющие части, а именно на неподвижные (станина), и подвижные (оси X, Y, Z).

В PowerMill при создании станка есть два понятия: "head" (головка) и "table" (стол).
Инструмент крепится к головке и перемещается вместе с ней (соответственно и перемещаются все оси). 

Заготовка же располагается на столе и, грубо говоря, стол является системой координат.
Нюанс в том, что стол то же может перемещаться - например, в случае наличия поворотного устройства (ось A), или же стол это ось Y,
а следовательно будет перемещаться координатная система.

В моём случае поворотного устройства нет и стол так же неподвижен.

Теперь нужно сделать отдельные файлы для неподвижных и подвижных частей:  станина, ось Y, ось X, ось Z (вместе со шпинделем).

Вот так выглядят по отдельности:

image.png image.png image.png image.png

То есть станина и каждая ось - весь набор составляющих.

Важно: не перемещайте составляющие при сохранении - для них всех должна сохранятся единая система координат (точка отсчёта).

Сохраняем каждый файл в формате *.STEP (в случае FreeCAD) или, к примеру, в SolidWorks  *.sldprt.

Теперь нужно каждый файл сконвертировать в составляющую станка для PowerMill (файл в формате dmt).

Запускаем PowerMill, в верхнем меню File -> Import model (можете в списке типов файлов посмотреть поддерживаемые для экспорта из вашей CAD) и ничего не меняя сразу делаем экспорт File -> Export Model,  в типе файла выбираем "Autodesk Manufacturin Triangles (*.dmt)", и выбираем какую-нить папку. Так проделываем со всеми файлами.

У меня вот так:

image.png

Все эти файлы я буду в дальнейшем называть "части станка".

Теперь нам нужно описать для 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 будет начинаться глобальная система координат и как она будет ориентирована и к какой части станка привязана (что бы она перемещалась вместе с ней).

Вот про что речь:

image.png

Относительно глобальной системы координат располагается заготовка.

Где она должна располагаться? Рекомендую в том месте, куда станок приходит в ноль (домашняя позиция) при поиске начал и откуда идёт увеличение координат по 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. В левой панели Станки -> импорт станка:

image.png

3. Выбираете наш файл Aman3040.mtd

4. Будет ошибка "Постпроцессор установлен но не может быть сконфигурирован":

image.png

Что бы её не было нужно указать постпроцессор, как именно написал выше в соответствующем параграфе.

5.  Станок импортировался.

6. Можем перемещать оси в ручном режим, для этого правой кнопкой на станке и в контекстной менюшке нажать "Положение":

image.png

7. Дальше как обычно - импортируем какую-либо тестовую модель, создаём какую-либо обработку, выбираем инструмент и запускаем симуляцию траектории. Профиль патрона, пока что, можно не создавать. 

8. Инструмент встанет куда нужно и сможем увидеть, правильно ли всё сделали.

Примечания: PowerMill может проверять на столкновения, поэтому, чем больше будет составляющих и частей станка, тем более производительный компьютер нужен. Не увлекайтесь с точностью повторения станка - только самое главное, что может повлиять на работу или за что может задеть инструмент. Так же могут быть ложные срабатывания - тогда в CAD нужно будет подправить модель, к примеру, если сделали каретки подвижными на валах, то нужно увеличить диаметр отверстия в каретке (на пару соток достаточно обычно).

Все исходникиMachine-Aman3040.zip

Отдельно готовый станок для импорта:  

 


Готовый станок с повороткой вдоль Y:  

 

Постпроцессор для LinuxCNC:


Документация по разработкеMTDUserGuide.pdf

ВАЖНО:  После скачивания распаковать архив и импортировать станок как написано выше. Модель станка не точная копия Aman3040 и могут быть отличая в расположении/размерах, т.к. я вносил изменения в свой станок. Если что-то будет сильно отличаться - измерьте и напишите, внесу изменения. Либо можете всё сделать самостоятельно исходники все в архиве.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Награды пользователя

На пару лет раньше бы)))
Но другим сильное подспорье..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Награды пользователя

1 минуту назад, 008shadow сказал:

На пару лет раньше бы)))

Эм =)  Да чёт как-то давно делал, как только станок первый купил и отложил в долгий ящик. А тут чел в личке спросил, вот и решил выложить постом =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Награды пользователя

2 минуты назад, PavelK сказал:

Эм =)  Да чёт как-то давно делал, как только станок первый купил и отложил в долгий ящик. А тут чел в личке спросил, вот и решил выложить постом =)

Тоже делал для первого станка, появился другой и уже не стал морочится ибо и так могу )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Награды пользователя

008shadow  Доброго дня.

У меня тут затык с повороткой возник - в режиме симуляции NC файла PowerMill отказывается вращать заготовку:

image.png

И пытается боком фрезы заехать в отверстие. Причём, даже успешно О_о и если бы не включенная проверка на столкновение - вида бы и не подал.

Две локальных системы координат на двух сторонах. Вверху прорабатывает всё нормально, дальше он должен был повернуть ось A, но увы - игнорит.

Если без станка записать NC файл, то там поворот оси  есть (пока что не пробовал на реальном станке, но, судя по всему - всё должно быть ОК).

Не подскажете, что не так?

Извините за беспокойство, ложная тревога. Напутал с постпроцессором.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Награды пользователя

08.01.2021 в 19:15, PavelK сказал:

Извините за беспокойство, ложная тревога. Напутал с постпроцессором.

а я вот только приехал))) хорошо что так

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Награды пользователя

Здравствуйте. Есть на руках aman 3040 4axis 800w с поворотной осью. Так как я начинающий в этом деле, не могли бы помочь с точной моделью и постпроцессором для него. Спасибо 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Aman Доброго дня.

Модель для PowerMill: 


Постпроцессор для LinuxCNC:

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Награды пользователя

Огромное Вам спасибо! 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да незачто =)  

Кстати, заметил, что не ту версию изначально выложил, там была поворотка вдоль X. Сейчас правильная, так что перекачайте заново, пожалуйста.
Так же выложил версию без поворотки - на 3 оси.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Награды пользователя

станок не загружается, пишет ошибку, в чем может быть проблема?

Снимок1.PNG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите в mtd файле станка, возможно у меня абсолютные пути до составляющих прописались, а не относительные.

Кстати, в новых версиях PM не тестировал, так что не знаю, как модель будет себя вести. Возможно, нужно будет ещё вектора осей поменять.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Награды пользователя

загрузить удалось кое как, теперь пост не ассоциируется со станком.

Снимок1.PNG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно, теперь в постпроцессоре путь до станка нужно прописать. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Награды пользователя

блиин, а как это сделать,

искал тут, не могу найти

Снимок2.PNG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, vlad_laba сказал:

искал тут, не могу найти

На скрине, слева в дереве Machine Kinematics

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Награды пользователя

А я не смог загрузить станок(не удается загрузить файл),хотя у людей получилось.Бестолковый однако.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • От PavelK
      Приветствую!
      Есть у меня станочек Aman 3040, 800 Ватт шпиндель. Регулировка оборотов осуществляется ручкой на передней панели. Программно можно только запускать/останавливать вращение. Мне это, разумеется, сразу не понравилось, т.к. много материалов в обработке и для всех нужны свои скорости. 

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

      Нас интересует зелёная клеммная колодка слева:

      Тут уже с переделанным подключением, забыл сфоткать как было до.
      Переделка такая:
      Между SGND и FWD  (пины 4 и 5) ставим обычный тумблер, что бы иметь возможность вручную отключать/включать вращение шпинделя, на всякий случай (для душевного спокойствия, ну и чтобы закрыть отверстие пустое вместо крутилки),  когда тумблер включён управление вращением (запуск/остановка/регулировка оборотов) будет программное.
      На самой плате управления (называется MACH3 Interface Board V1.2) ищем колодку SPINDLE. Она слева на картинке.

      Кстати, кому интересно - на выходе стоит оптопара PC817.

      (первый пин там, где точка на микросхеме).
      От неё идёт два провода, один белый, другой белый с синей прерывистой полосой (правый провод).
      Если версия платы чуть другая, то ориентироваться лучше по оптопаре и даташиту. 
      Так вот белый с прерывистой синей полосой  к "+5V" (2 пин, если считать сверху) инвертора, другой к "5V" (3 пин, если считать сверху, не путайте с питающим, это именно вход управления) - он как раз управляющий.
      В итоге должно получиться так:

      Чёрные провода от тумблера. Белые от интерфейсной платы.
      Так то, скорее всего, непомешал бы подтягивающий резистор на 10КОм между 5V и SGND, но вроде в самом инверторе подтяжка есть и глюков не замечено.
      ВАЖНО:
      В сообщениях ниже написали о проблемах подключения, а именно невозможность управлять вращением.
      Проблема в уровнях TTL некоторых LPT портов.
      А именно при логическом 0 у них по факту больше 1 вольта, чего хватает, что бы оптопара осталась открыта.
      Решение, это поставить парочку диодов, на которых упадёт лишнее напряжение, что бы при 0 был фактически 0.
      Стягивающий резистор поставить не вариант.
      Короче, ищем управляющую ногу оптопары, делаем на дорожке разрыв, впаиваем последовательно 2 диода.

      На белый провод не обращайте внимание, он для других модификаций.
      Диоды подойдут практически любые, только не Шоттки (т.к. на них слишком малое падение напряжения)!
      Например 1N4007. Купить можно в любом радиомагазине, либо выпаять из старого блока питания компа.
       
      В управляющей программе ставим  "пин 1" - управление шпинделем и Active LOW в случае Mach3 или Inverted в случае LinuxCNC. 
      Кстати, этот инвертор, судя по всему, вполне спокойно потянет 1000 Ваттный шпиндель. Больше, думаю, не стоит.
      Вот, в общем то и всё =) Ничего сложного.
    • От PavelK
      Постпроцессор на 3 оси на основе Фанука для PowerMill 2020 и старше.  Под LinuxCNC.
      Из постпроцессора вырезаны вывод циклов, сверловка и куча всего остального (пока что).
      Предназначен для Aman 3040. Для других станков нужно изменять размеры кинематики. 
      Можно использовать вместе с моделью станка: 
       
       
    • От Вилли
      Здравствуйте. 
      Пытаюсь осваивать китайский фрезерный станок, похожий на Aman 3040. Установил LinuxCNC, настроил оси и да же нормально гравирует.
      Проблема в том, что на некоторых программах сразу при открытии файла выскакивает ошибка "arc radius to small to reach end point" с номером строки.
      Я бы понял, если бы в указанной строке или рядом стояло R0.000001 но там стоит  "G3X-57.56Y78.85 R-6.37".
      Приходиться изменять и подгонять траектории. Для создания траекторий использую ArtCam 20.
      Подскажите, пожалуйста, отчего эта ошибка и как быть? Поисковиком пользовался, но проблема крайне редкая и решения нет.
       
    • От PavelK
      Постпроцессор на 4 оси на основе Фанука для PowerMill 2018 и старше. 
      Поворотка вдоль Y!
      Из постпроцессора вырезаны вывод циклов, сверловка и куча всего остального (пока что).
      Предназначен для Aman 3040. Для других станков нужно изменять размеры кинематики. 
      Можно использовать вместе с моделью станка: https://stankoforum.net/files/file/1199-модель-станка-aman-3040-с-поворотной-осью-для-powermill/
       
×
×
  • Создать...