Powermill

Автор: Companion4ik
Просмотров: 7190

pre   Многие CAM системы снабжены функциями сборки станка. Где-то данная функция обладает дружелюбным интерфейсом, где-то менее дружелюбным, где-то совсем недружелюбным. Последний как раз таки наш случай. В папке программы по пути file\examples\MachineData лежат файлы отвечающие за симуляцию станка. Советую скопировать всю папку «MachineData» и уже с ней проводить все эксперименты с тем, чтобы у Вас был нетронутый оригинал, к которому всегда можно вернуться.

Скачайте учебные файлы

     Откройте файл одного из станков в этом файле с совершенно открытом формате представлен код соответствующей компоновки. Если Вы откроете файлы папки «machine_parts» в PowerShape то увидите, что это соответствующие элементы станков различных кинематических схем.

A1A2

    Именно эти файлы складываются в модель станка в PowerMill. Кроме того на данные модели накладываются определённые кинематические связи. Всё это описано в файле MTD не путать с DMT. Откроем один из этих файлов. Нашим подопытным кроликом станет файл head-table1.mtd.

A3

    Если вы когда нибудь занимались программированием то настало время вспомнить свои навыки. Это код формата XML версии «1.0», что и отражено в шапке файла. Для того чтобы было удобней читать файл проведём разделение строк по тегам.

<? Содержимое ?>  тег описания страницы.

<Содержимое> тег системный (читается программой) открытие.

</Содержимое> тег системный (читается программой) закрытие.

<Содержимое/> одиночный системный.

<!--Содержимое--> тег комментария (не читается программой, служит подсказкой пользователю).

    После редактирования файл примет след вид:

A4

    В приложении 1 рассмотрена расшифровка тегов. (При отсутствии желания редактировать файл в блокноте можно открыть его в С++). В приложеии 1 рассмотрен файл с расшифровкой тегов. Цепочки тегов отмечены цветом по открывающему и закрывающему тегам. Одиночные теги не подсвечены.

    Пример:

<axis> <!-- открытие тега оси -->

<control_info ADDRESS="C" MIN="-92" MAX="12"/> <!-- Контрольная информация, адрес дляпанели станка , пределы. -->

<simple_rotary X="0" Y="0" Z="1105" I="0" J="1" K="0" /> <!-- Ротационная ось, поворот вокруг оси Y.-->

</axis> <!-- закрытие тега оси -->

    Это цепочка тега оси в ней описана одна из осей. В соответствующих одиночных тегах указаны адрес для панели станка с её пределами либо без них.

A5 

    Далее идёт указание типа оси для кинематической связи линейный(simple_linear) или поворотный(simple_rotary).

    Затем следует координата соответствующая центру вращения в декартовой системе (X="0" Y="0" Z="1105") если конечно ось поворотная. И принадлежность к какой либо из осей (I="0" J="1" K="0").

    Для линейной оси I J K – указывают в каком направлении X Y Z, соответственно, будут двигаться модели в контексте данной оси.

    В случае описания поворотной оси коэффициенты I, J, K укажут вокруг которой из осей X, Y или Z, соответственно, компоненты должны вращаться.

    Настало время разобраться с зависимостью осей друг от друга.

A6

    Если взглянуть на станок, то можно увидеть, что детали организующие оси имеют прямую физическую зависимость друг от друга. Конкретно на направляющий параллельных оси X лежит основание на котором лежат направляющие оси Y на которых в свою очередь закреплена ось Z по которой ходит шпиндель.

    В описанной кинематической схеме главной родительской осью является X её дочерней осью будет ось Y дочерней к которой будет уже ось Z.

    Как организовывается подобная иерархия в файле MDT? Очень просто, с помощью древовидного каркаса образованного тегами <machine_part> - (Компонент станка).

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

1. Точка крепления заготовки (детали) к столу.

1g1

2. Точка крепления инструмента.

1g2

<table_attach_point PART="table" X="0" Y="0" Z="0" /> 

Точка крепления к столу.

<head_attach_point PART="head" X="0" Y="0" Z="600" I="0" J="0" K="1" />

Точка крепления инструмента на голове.

Тут, думаю, всё понятно в теге «table_attach_point" — указываем точку в которой будет располагаться СК крепления.

1g3

А в теге «head_attach_point» - точка соответствующая высоте зажима фрезы.

Для каждой фрезы эта точка своя и задаётся параметром вылета.

1g4

    Теперь, когда все теоретические аспекты рассмотрены. Предлагаю перейти к практике. Мы с вами соберём модель портального станка с двумя поворотными осями на голове.

 1

    Данная модель была построена в Компас3D. Для дальнейщей работы перенесём её вPowerShape по средствам формата step или iges.

 2

    Затем создаём систему координат соответствующую глобальной. И развернём модель станка так как показано на рисунке.

    Разнесём все элементы станка по отдельным слоям. А затем сохраним их в формате DMT. Для удобства сохраняйте файлы с именами указанными в следующей табличке.

 3  4

stol

Os_Y

 5  6

Os_X

Os_C

 7

Os_A

    В папке MachineData создайте папку Stanok и скопируйте в неё файлы. Теперь можно перейти к управляющему файлу. В приложении 2 можно ознакомиться с текстом рабочего файла MDT.

    1) За основу возьмём любой из файлов, присвоим ему уникальное имя, очистим его и в ознакомительных целях будем поочерёдно копировать туда содержимое приложения 2.

    2) Зададим основные параметры, а именно точки крепления детали и инструмента.

<?xml version="1.0" ?>

копируйте шапку это версия XML

<!-- Stanok -->

введите название своего станка для удобства

<machine xmlns="x-schema:PowermillMachineTool">

Открытие головного системного тега.

<table_attach_point PART="table" X="0" Y="0" Z="0" />

В этой строчке обозначается ноль станка. К этой координате потом будет крепиться деталь посредствам выбранной СК.

head_attach_point PART="head" X="0" Y="25" Z="450" I="0" J="0" K="1" />

В этой строчке нужно указать координаты крепления инструмента через X,Y,Z, а так же её ориентацию через I,J,K.

    3) Добавим в кинематику стол хоть он нам и не нужен но без этого модель станка не будет работать.

<!-- The table -->

Коментарий

<machine_part NAME="table" />

Обозначения тега стола.

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

<!-- The static bits -->

Коментарий.

<machine_part>

<model_list>

<dmt_file>

Открытие системных тегов.

<path FILE="Stanok/stol.dmt" />

Путь к файлу.

<rgb R="100" G="100" B="200" />

Раскраска компонента.

</dmt_file>

</model_list>

</machine_part>

Закрытие системных тегов.

    5) Теперь добавим балку.

 

<!-- The head -->

Комментарий.

<machine_part> Открытие первого  тега компонента станка.
<axis> Тег открытия оси.
<control_info ADDRESS="Y" MIN="-1250" MAX="1250" />  Адрес для панели станка и пределы перемещения.
<simple_linear I="0" J="-1" K="0" /> Направление линейной оси. Так как по координате Y станок будет перемещать балку а не стол ориентация будет отрицательна.
</axis> Тег закрытия оси.

<model_list>

<dmt_file>

Открытие тега модели.
<path FILE="Stanok/Os_Y.dmt" /> Добавление файла модели «балки».
<rgb R="255" G="255" B="255" /> Цвет модели.

</dmt_file>

</model_list>

Закрытие тега модели.

    6) Теперь добавим «колонну» перемещающую шпиндель по осям и Z. 

<machine_part>

Открытие второго тега компонента станка

<axis>

Тег открытия оси

<control_info ADDRESS="X" VALUE="0" MIN="-2350" MAX="2350" />

 Адрес для панели станка и пределы перемещения. !!! переменная VALUE задаст координату которая будет отображена в панели станка до каких либо перемещений. 

<simple_linear I="-1" J="0" K="0" />

Направление линейной оси. Так как по координате X станок будет перемещать балку, а не стол ориентация будет отрицательна.

</axis>

Тег закрытия оси

<machine_part>

Открытие третьего тега части станка

<axis>

Тег открытия оси

<control_info ADDRESS="Z" VALUE="0" MIN="-300" MAX="980" />

Адрес для панели станка и пределы перемещения. !!! переменная VALUEзадаст координату которая будет отображена в панели станка до каких либо перемещений.

<simple_linear I="0" J="0" K="1" />

Направление линейной оси Z.

</axis>

Тег закрытия оси.

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

<model_list>

<dmt_file>

Открытие тега модели.

<path FILE="Stanok/Os_X.dmt" />

Добавление файла модели «колонны».

<rgb R="255" G="255" B="255" />

Цвет модели.

</dmt_file>

</model_list>

Закрытие тега модели.

    7) Теперь добавим первую поворотную ось - ОСЬ С.

<machine_part>

Открытие четвёртого тега части станка.

<axis>

Тег открытия оси

<control_info ADDRESS="C" MIN="-360" MAX="360" />

Адрес для панели станка и пределы перемещения.

<simple_rotary X="0" Y="0" Z="0" I="0" J="0" K="1" />

Здесь указываем координату центра вращения, через параметр X,Y,Z, и ось вокруг которой будет осуществляться вращение.

</axis>

Тег закрытия оси

<model_list>

<dmt_file>

Открытие тега модели.

<path FILE="Stanok/Os_C.dmt" />

Добавление файла модели оси C.

<rgb R="255" G="50" B="50" />

Цвет модели.

</dmt_file>

</model_list>

Закрытие тега модели.

    8) Добавляем вторую поворотную ось — ОСЬ C.

<machine_part>

Открытие пятого тега части станка.

<axis>

 

<control_info ADDRESS="A" MIN="-360" MAX="360" />

Адрес для панели станка и пределы перемещения.

<simple_rotary X="0" Y="25" Z="680" I="1" J="0" K="0" />

Здесь указываем координату центра вращения, через параметр X,Y,Z, и ось вокруг которой будет осуществляться вращение. Так как точка вращения по координатам и не равны 0 укажем расстояние до центра координат по этим осям.

 8

</axis>

Тег закрытия оси

<model_list>

<dmt_file>

Открытие тега модели.

<path FILE="Stanok/Os_A.dmt" />

Добавление файла модели оси A.

<rgb R="200" G="200" B="255" />

Цвет модели.

/dmt_file>

</model_list>

Закрытие тега модели.

    9) Теперь нам остаётся только поставить тег головы станка и закрыть теги её частей.

<machine_part NAME="head" />

Тег головы станка

</machine_part>

Закрытие пятого тега части станка.

</machine_part>

Закрытие четвёртого тега части станка.

</machine_part>

Закрытие третьего тега части станка.

</machine_part>

Закрытие второго тега части станка.

</machine_part>

Закрытие первого тега части станка.

</machine>

Закрытие головного системного тега.

    10) Наконец можно приступить к симуляции траекторий на получившейся модели станка!!!! В процессе работы можно определиться с пределами движения по осям либо сразу ввести ограничения по имеющимся для вашего станка данным.

Приложение 1

<?xml version="1.0" ?>

Версия языка

<!-- Example of 5-axis Head-Table configuration -->

Комментарий «Пример для пятиосевой конфигурации станка голова-стол»

<!-- Table moves in Z, Head moves in X & Y -->

Комментарий «Стол движется по Z, Голова движется по и Y.»

<!-- Rotary axis on head controlled by C, the other on table controlled by A -->

Коментарий «Поворотные оси С на столе, А на голове.»

<!-- Note the restricted movement on C axis -->

Примите во внимание ограничения по оси С.

<machine xmlns="x-schema:PowermillMachineTool">

Открытие тега кинеметитческой системы станка.

<!-- Where things are attached to the machine -->

Где вещи прилагаются к машине.

<table_attach_point PART="table" X="0" Y="0" Z="0" />

Точка крепления стола.

<head_attach_point PART="head" X="0" Y="0" Z="600" I="0" J="0" K="1" />

Точка крепления инструмента на голове.

<!-- The head -->

Голова – комментарий.

<machine_part>

Открытие тега Компонента станка 1 -->

<axis>

Открытие тега оси -->

<control_info ADDRESS="X" />

Контрольная информация, адрес для панели станка , пределы.

<simple_linear I="1" J="0" K="0" />

линейная ось X

</axis>

<!-- закрытие тега оси -->

<machine_part>

<!-- открытие тега Компонента станка 2 -->

<axis>

<!-- открытие тега оси -->

<control_info ADDRESS="Y" />

Контрольная информация дарес Y

<simple_linear I="0" J="1" K="0" />

Линейная ось Y

</axis>

Закрытие тега оси.

<machine_part>

Открытие тега Компонента станка 3.

<axis>

Открытие тега оси.

<control_info ADDRESS="C" MIN="-92" MAX="12"/>

Контрольная информация, адрес для панели станка , пределы.

<simple_rotary X="0" Y="0" Z="1105" I="0" J="1" K="0" />

Поворотная ось, вращение вокруг оси Y.

</axis>

Закрытие тега оси.

<model_list>

Открытие тегалист модели.

<dmt_file>

Открытие тега файла с расширением dmt.

<path FILE="machine_parts/column_a.dmt" />

Выбор файла ="Полный путь к файлу из папки гдележит MDT и сам файл ".

<rgb R="200" G="200" B="200" />

Параметр цвета

</dmt_file>

Закрытие тега файла с расширением dmt

<dmt_file>

Открытие тега файла с расширением dmt

<path FILE="machine_parts/column_b.dmt" />

Выбор файла ="Полный путь к файлу из папки гдележит MDT и сам файл "

<rgb R="255" G="255" B="255" /

Параметр цвета

</dmt_file>

Закрытие тега файла с расширением dmt

</model_list>

Закрытие тега листа модели.

<machine_part NAME="head" />

Обозначения тега стола. (Системный тег задающий принадлежность частей станка к его «голове»)

</machine_part>

Закрытие тега Компонента станка 3.

</machine_part>

Закрытие тега Компонента станка 2.

</machine_part>

Закрытие тега Компонента станка 1.

<!-- The table -->

Стол – комментарий.

<machine_part>

Открытие тега Компонента станка 1.

<axis>

Открытие тега оси.

<control_info ADDRESS="Z" VALUE="600" />

Контрольная информация, адрес для панели станка , пределы.

<simple_linear I="0" J="0" K="-1" />

Поворотная ось, вращение вокруг оси Z, обратно направленная (-1).

</axis>

Закрытие тега оси.

<machine_part>

Открытие тега Компонента станка 2

<axis>

Открытие тега оси.

<control_info ADDRESS="A" />

<!-- Контрольная информация, адрес для панели станка , пределы. -->

<simple_rotary X="0" Y="0" Z="0" I="0" J="0" K="1" />

Поворотная ось, вращение вокруг оси Z, обратно направленная (-1)

</axis>

Закрытие тега оси.

<model_list>

Открытие тега листа модели.

<dmt_file>

<!-- Открытие тега файла с расширением dmt -->

<path FILE="machine_parts/table_1.dmt" />

Выбор файла ="Полный путь к файлу из папки гдележит MDT и сам файл "

<rgb R="200" G="200" B="200" />

Параметр цвета

</dmt_file>

Закрытие тега файла с расширением dmt

</model_list>

Закрытие тега листа модели.

<machine_part NAME="table" />

Обозначения тега стола. (Системный тег задающий принадлежность частей станка к его «столу»).

</machine_part>

Закрытие тега Компонента станка 2.

</machine_part>

Закрытие тега Компонента станка 1.

</machine>

Закрытие тега кинеметитческой системы станка.

Приложение 2 

<?xml version="1.0" ?>

копируйте шапку это версия XML

<!-- Stanok -->

введите название своего станка для удобства

<machine xmlns="x-schema:PowermillMachineTool">

Открытие головного системного тега.

<table_attach_point PART="table" X="0" Y="0" Z="0" />

В этой строчке обозначается ноль станка. К этой координате потом будет крепиться стол.

head_attach_point PART="head" X="0" Y="25" Z="450" I="0" J="0" K="1" />

В этой строчке нужно указать координаты крепления инструмента через X,Y,Z, а так же её ориентацию через I,J,K.

<!-- The table -->

Комментарий

<machine_part NAME="table" />

Обозначения тега стола.

<!-- The static bits -->

Комментарий.

<machine_part>

<model_list>

<dmt_file>

Открытие системных тегов.

<path FILE="Stanok/stol.dmt" />

Путь к файлу.

<rgb R="100" G="100" B="200" />

Раскраска компонента.

</dmt_file>

</model_list>

</machine_part>

Закрытие системных тегов.

<!-- The head -->

Комментарий.

<machine_part> Открытие первого  тега компонента станка.
<axis> Тег открытия оси.
<control_info ADDRESS="Y" MIN="-1250" MAX="1250" />  Адрес для панели станка и пределы перемещения.
<simple_linear I="0" J="-1" K="0" /> Направление линейной оси. Так как по координате Y станок будет перемещать балку а не стол ориентация будет отрицательна.
</axis> Тег закрытия оси.

<model_list>

<dmt_file>

Открытие тега модели.
<path FILE="Stanok/Os_Y.dmt" /> Добавление файла модели «балки».
<rgb R="255" G="255" B="255" /> Цвет модели.

</dmt_file>

</model_list>

Закрытие тега модели.

<machine_part>

Открытие второго тега компонента станка

<axis>

Тег открытия оси.

<control_info ADDRESS="X" VALUE="0" MIN="-2350" MAX="2350" />

 Адрес для панели станка и пределы перемещения. !!! переменная VALUE задаст координату которая будет отображена в панели станка до каких либо перемещений.

<simple_linear I="-1" J="0" K="0" />

Направление линейной оси. Так как по координате X станок будет перемещать колонну, а не стол ориентация будет отрицательна.

</axis>

Тег закрытия оси

<machine_part>

Открытие третьего тега компонента станка

<axis>

Тег открытия оси

<control_info ADDRESS="Z" VALUE="0" MIN="-300" MAX="980" />

Адрес для панели станка и пределы перемещения. !!! переменная VALUEзадаст

координату которая будет отображена в панели станка при до каких либо перемещений.

<simple_linear I="0" J="0" K="1" />

Направление линейной оси Z.

</axis>

Тег закрытия оси.

<model_list>

<dmt_file>

Открытие тега модели.

<path FILE="Stanok/Os_X.dmt" />

Добавление файла модели «колонны».

<rgb R="255" G="255" B="255" />

Цвет модели.

</dmt_file>

</model_list>

Закрытие тега модели.

<machine_part>

Открытие четвёртого тега компонента станка.

<axis>

Тег открытия оси

<control_info ADDRESS="C" MIN="-360" MAX="360" />

Адрес для панели станка и пределы перемещения.

<simple_rotary X="0" Y="0" Z="0" I="0" J="0" K="1" />

Здесь указываем координату центра вращения, через параметр X,Y,Z, и ось вокруг которой будет осуществляться вращение.

</axis>

Тег закрытия оси

<model_list>

<dmt_file>

Открытие тега модели.

<path FILE="Stanok/Os_C.dmt" />

Добавление файла модели оси C.

<rgb R="255" G="50" B="50" />

Цвет модели.

</dmt_file>

</model_list>

Закрытие тега модели.

<machine_part>

Открытие пятого тега компонента станка.

<axis>

 Тег открытия оси.

<control_info ADDRESS="A" MIN="-360" MAX="360" />

Адрес для панели станка и пределы перемещения.

<simple_rotary X="0" Y="25" Z="680" I="1" J="0" K="0" />

Здесь указываем координату центра вращения, через параметр X,Y,Z, и ось вокруг которой будет осуществляться вращение. Так как точка вращения по координатам и не равны 0 укажем расстояние до центра координат по этим осям.

</axis>

Тег закрытия оси.

<model_list>

<dmt_file>

Открытие тега модели.

<path FILE="Stanok/Os_A.dmt" />

Добавление файла модели оси A.

<rgb R="200" G="200" B="255" />

Цвет модели.

</dmt_file>

</model_list>

Закрытие тега модели.

<machine_part NAME="head" />

Тег головы станка

</machine_part>

Закрытие пятого тега части станка.

</machine_part>

Закрытие четвёртого тега компонента станка.

</machine_part>

Закрытие третьего тега тега компонента станка.

</machine_part>

Закрытие второго тега чтега компонента станка.

</machine_part>

Закрытие первого тега тега компонента станка.

</machine>

Закрытие головного системного тега.

Категория:
Яндекс.Метрика ;