Как исправить постпроцессор

  • Назад
  • 1
  • 2
  • Вперёд
  • Страница 1 из 2  

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


NmmmEG

NmmmEG

0


    • Жалоба
    • Рассказать

Доюрый день!!!

В спруткам имеется постпроцессор на ДМГ – Heidenhain (CNC Pilot 4290)_TurnMill, у нас имеются станки с такой же стойкой, сам код программы совпадает, но в программе которую выдает постпроцессор нехвает описание контура изделия, без которого станок не хочет принимать программу. Код который выдает постпроцессор выглядет следующим образом:

PROGRAMMKOPF [ PROGRAM HEAD]
#MASCHINE                CTX-310        [ MACHINE ]
#WERKSTUECK              DMG ПРОБА 2    [ WORKPIECE ]
#FIRMA                   VIMPEL         [ DEPT. ]
#AUTOR                   PG             [ AUTOR ]
#DATUM                   23.07.2015     [ DATE ]
#EINSPANNDURCHM          150            [ CLAMP. DIAM. ]
#AUSSPANNLAENGE          6              [ CLAMP. LENGTH ]
#SPANNDRUCK              25             [ CLAMP. PRESS. ]
#KOMMENTAR               DMG ПРОБА 2    [ COMMENT ]
#SYNCHRO                 0              [ SYNCHRO ]
#SCHLITTEN               $1             [ SLIDE ]

REVOLVER 1 [ TURRET ]
[ T   5 ID”New  l16, Ti1.98″ ]

SPANNMITTEL 1

ROHTEIL [ BLANK ]
N   1 G20 X7.6 Z33.3 K23

BEARBEITUNG [ MACHINING ]
[ Tоkаrnyj kоntur ]
N   2 G14 Q0
N   3 T5 G96 S150 M3 G95 F0.5
N   4 G0 X4.6 Z0.7
N   5 G1 G42 X6 Z0 M108
N   6 G1 X7.2 Z-0.9
N   7 G1 Z-10.1
N   8 G1 G40 X8.8 Z-10.9
N   9 M5 M109
N  10 G14 Q0
N  11 G0

ENDE [ END ]

В данной программе присутствует описание заготовки Rohteil, что очень хорошо, и следом за заготовкой для станка должно быть описание контура детали “FERTIGTEIL [ FINISHED PART ]”, которого как вы видите нет, в самом посте подпрограммы выдачи контура тоже нет и как я понимаю его необходимо дописать в виде подпрограммы или где то в командах!! подскажите как сделать этот контур с чего вообще начать??

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


SNick

SNick

51


    • Жалоба
    • Рассказать

Мне кажется в этой УП просто не хватает строчки   FERTIGTEIL [FINISHED PART], а описание образующего контура,  после FERTIGTEIL, не обязательно.
Другое дело если вы обрабатываете деталь циклом. Думаю, в этом случает постпроцессор отработает нормально и выведет этот контур в УП.
А пока попробуйте организовать вывод строки FERTIGTEIL [FINISHED PART] 
Скорее всего это делается в PPFUN командой    Output “FERTIGTEIL [FINISHED PART]”
В общем, в любом случае, сообщите что получилось, постараюсь помочь.

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


NmmmEG

NmmmEG

0


  • Автор
    • Жалоба
    • Рассказать

Да так и есть, нехватало строчки FERTIGTEIL [FINISHED PART], добавил вывод в постпроцессоре, пока все нормально. Спасибо!!))

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


NmmmEG

NmmmEG

0


  • Автор
    • Жалоба
    • Рассказать

Добрый день!

Вопрос по постпроцессору Морисеики!

При выполнении подряд 2 операций (2д контур) с одной осевой фрезой и используя ось С, постпроцессор на Мори (да и все остальные), к сожалению, после первой операции не возвращают ось в С=0 и имея поворотные преобразования, получается так что точка отсчета по оси С начинается (во второй операции) не в нуле и после включения G12 происходит смещение траектории обработки, подскажите как это можно исправить в постпроцессоре в каких командах!. Показал для наглядности в скриншоте:post-49150-0-72195700-1438145214_thumb.jpg


Изменено 29 июля 2015 пользователем NmmmEG

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


Dantist

Dantist

64


    • Жалоба
    • Рассказать

Добрый день!

Вопрос по постпроцессору Морисеики!

При выполнении подряд 2 операций (2д контур) с одной осевой фрезой и используя ось С, постпроцессор на Мори (да и все остальные), к сожалению, после первой операции не возвращают ось в С=0 и имея поворотные преобразования, получается так что точка отсчета по оси С начинается (во второй операции) не в нуле и после включения G12 происходит смещение траектории обработки, подскажите как это можно исправить в постпроцессоре в каких командах!. Показал для наглядности в скриншоте:attachicon.gifВопрос.jpg

Может воспользоваться правилами подводов/отводов ? Например указать, что после отработки операции необходимо делать отвод (по умолчанию в станке прописан вроде как такой: X;Z; а потом дописать еще следом C0.

хотя допустим если несколько пазов в одной операции делается, то ось С сбрасывать в 0 что неужто после каждого надо?

а можете Ваш проект приложить ? 

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


NmmmEG

NmmmEG

0


  • Автор
    • Жалоба
    • Рассказать

Заметил  что пост реализован так, что если в этих двух операциях были бы разные инструменты, то после первой операции ось С по умолчанию ушла бы в ноль, если один инструмент. то действительно приходится в правилах отвода, в первой операции, прописать С0, но на это, в принципе, можно закрыть глаза. Основная проблема в том, что G12 включается после того как ось С проворачивается в начало обработки и получается так, что начальное значение оси С станок принимает за ноль и происходит смещение. Для нормальной работы необходимо, чтобы G12 выводилось до того как ось С провернется в начало обработки, но как это сделать я пока не понял, дело в том что G12 выводится в команде Interp, а данная команда В СLDATA всегда идет после Multigoto.

post-49150-0-51486600-1438238174_thumb.jpg

Проект.zip

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


SNick

SNick

51


    • Жалоба
    • Рассказать

Установите галочку, как показано на рисунке. В результате в начале операции ось С принудительно выводится в ноль. А внутри полярной интерполяции (между G12 и G13) ускоренные перемещения интерполируются со скоростью перемещения 10000.
post-717-0-92220400-1438247068_thumb.png
 

Станок который вы используете с противошпинделем, а пост морисейки – без. Поэтому высылаю в личку пост где в Multigoto прописана ось С противошпинделя. Имейте ввиду на станке не проверялось, поэтому, если в УП что то не так сообщите, подправим или скажу что подправить. 

Насчет лички погорячился.  Сообщите куда можно выслать постпроцессор.

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


NmmmEG

NmmmEG

0


  • Автор
    • Жалоба
    • Рассказать

Установите галочку, как показано на рисунке. В результате в начале операции ось С принудительно выводится в ноль. А внутри полярной интерполяции (между G12 и G13) ускоренные перемещения интерполируются со скоростью перемещения 10000.

attachicon.gifРис1.png

Станок который вы используете с противошпинделем, а пост морисейки – без. Поэтому высылаю в личку пост где в Multigoto прописана ось С противошпинделя. Имейте ввиду на станке не проверялось, поэтому, если в УП что то не так сообщите, подправим или скажу что подправить. 

Насчет лички погорячился.  Сообщите куда можно выслать постпроцессор.

Почта: eppavel105@yandex.ru

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


NmmmEG

NmmmEG

0


  • Автор
    • Жалоба
    • Рассказать

Установите галочку, как показано на рисунке. В результате в начале операции ось С принудительно выводится в ноль. А внутри полярной интерполяции (между G12 и G13) ускоренные перемещения интерполируются со скоростью перемещения 10000.

attachicon.gifРис1.png

Станок который вы используете с противошпинделем, а пост морисейки – без. Поэтому высылаю в личку пост где в Multigoto прописана ось С противошпинделя. Имейте ввиду на станке не проверялось, поэтому, если в УП что то не так сообщите, подправим или скажу что подправить. 

Насчет лички погорячился.  Сообщите куда можно выслать постпроцессор.

Касаемо моего вопроса, добавление Оси С2 по большому счету ничего не изменило и для работы в противошпинделе тоже, так как помимо вывода С2 , нужен вывод соответствующих М-функций, которые не прописаны. Мой вопрос был не в выводе оси, с осями в постпроцессоре все нормально, проблема в том что G12.1 в операциях выводится после того как ось поворачивает шпиндель в начало обработки и в итоге G12 воспринимает угол на который повернулся шпиндель как ноль, и далее происходит смещение, показывал на скрине в сообщении выше. Мне надо сделать так, чтобы G12 выводилось в начале обработки до вывода каких либо значений оси С, но как это сделать я пока не пойму.

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


Xetron

Xetron

6


    • Жалоба
    • Рассказать

Заметил  что пост реализован так, что если в этих двух операциях были бы разные инструменты, то после первой операции ось С по умолчанию ушла бы в ноль, если один инструмент. то действительно приходится в правилах отвода, в первой операции, прописать С0, но на это, в принципе, можно закрыть глаза. Основная проблема в том, что G12 включается после того как ось С проворачивается в начало обработки и получается так, что начальное значение оси С станок принимает за ноль и происходит смещение. Для нормальной работы необходимо, чтобы G12 выводилось до того как ось С провернется в начало обработки, но как это сделать я пока не понял, дело в том что G12 выводится в команде Interp, а данная команда В СLDATA всегда идет после Multigoto.

Ведь при полярной интерполяции, ось Y меняется на C.  И вот так вот с бухты-барахты переставлять команду я бы не советовал.

Скорее всего, надо разделить начальную строку на части

т.е допустим сейчас выводится так…

G0X0.Y51.369Z-11.C115.444

Z20.375

G12.1

а надо проверить вот такую конструкцию..

G0Z-11.

C115.444

G12.1

G1X0.C51.369F10000.

Z20.375

Возможно смещение даже не столько из-за С, сколько из-за Y

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


NmmmEG

NmmmEG

0


  • Автор
    • Жалоба
    • Рассказать

Ведь при полярной интерполяции, ось Y меняется на C.  И вот так вот с бухты-барахты переставлять команду я бы не советовал.

Скорее всего, надо разделить начальную строку на части

т.е допустим сейчас выводится так…

G0X0.Y51.369Z-11.C115.444

Z20.375

G12.1

а надо проверить вот такую конструкцию..

G0Z-11.

C115.444

G12.1

G1X0.C51.369F10000.

Z20.375

Возможно смещение даже не столько из-за С, сколько из-за Y

Если перед G12.1 стоит ось С, то он ее будет принимать как точку отсчета, т.е. в нашем случае С115.444 после кадра G12.1 будет восприниматься станком как С0, что не совсем правильно…

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


Dantist

Dantist

64


    • Жалоба
    • Рассказать

Если перед G12.1 стоит ось С, то он ее будет принимать как точку отсчета, т.е. в нашем случае С115.444 после кадра G12.1 будет восприниматься станком как С0, что не совсем правильно…

да команды местами поменять – дело то житейское  :smile:


Изменено 10 августа 2015 пользователем Dantist

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


NmmmEG

NmmmEG

0


  • Автор
    • Жалоба
    • Рассказать

Посмотрел пост, также выводит G12.1 после кадра с осью С.post-49150-0-52764400-1439188266.jpg

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


Dantist

Dantist

64


  • 2 недели спустя…


Dantist

Dantist

64


    • Жалоба
    • Рассказать

Посмотрел пост, также выводит G12.1 после кадра с осью С.attachicon.gifБезымянный.jpg

ну и как, подошло? все-таки ждем продолжения этой саги 🙂

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


NmmmEG

NmmmEG

0


  • Автор
    • Жалоба
    • Рассказать

ну и как, подошло? все-таки ждем продолжения этой саги 🙂

Почти)) G12 выдается в нужном месте, теперь проблема со следующей строчкой, она немного изменилась по отношению к старой программе, было бы хорошо ее вернуть, показал в скрине:

post-49150-0-35368500-1440143080_thumb.jpg

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


Dantist

Dantist

64


    • Жалоба
    • Рассказать

Почти)) G12 выдается в нужном месте, теперь проблема со следующей строчкой, она немного изменилась по отношению к старой программе, было бы хорошо ее вернуть, показал в скрине:

attachicon.gif1111.jpg

А отработает ли G0 при включенной полярной интерполяции?

И второй вопрос: 

При включенной полярной интерполяции зачем выводить Y? (пусть даже и равной нулю)

MoriSeiki_TurnMill_experimenten_v3.rar 

  • Цитата
Ссылка на сообщение
Поделиться на других сайтах
  • 10 месяцев спустя…


Rinats

Rinats

25


    • Жалоба
    • Рассказать

Всем привет!

Вопрос по генератору постпроцессоров. В управляющей программе  нужно вывести подачу раньше чем она появляется в тексте CLD т.е в кадре перемещения до строки FEDRATE. Как из программки GOTO посмотреть вперед по тексту CLD в FEDRATE, запомнить значение подачи, и вывести его в текущем кадре?  Станочник достал уже, говорит что не красиво… эстет чертов.

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


SNick

SNick

51


    • Жалоба
    • Рассказать

Всем привет!

Вопрос по генератору постпроцессоров. В управляющей программе  нужно вывести подачу раньше чем она появляется в тексте CLD т.е в кадре перемещения до строки FEDRATE. Как из программки GOTO посмотреть вперед по тексту CLD в FEDRATE, запомнить значение подачи, и вывести его в текущем кадре?  Станочник достал уже, говорит что не красиво… эстет чертов.

Можно сделать так

В программе AbsMov пропиши следующее:

  a: Array of Real 

  b: Integer    

  b = GetCld(1, a)                !  читаем параметры следующей за GOTO команды (предполагаем что это FEDRAT) 

  if b=CodeOfCmd(“FEDRAT”) then  Feed=Str(a[1]) 

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


Rinats

Rinats

25


    • Жалоба
    • Рассказать

Можно сделать так

В программе AbsMov пропиши следующее:

  a: Array of Real 

  b: Integer    

  b = GetCld(1, a)                !  читаем параметры следующей за GOTO команды (предполагаем что это FEDRAT) 

  if b=CodeOfCmd(“FEDRAT”) then  Feed=Str(a[1]) 

а если FEDRAT не сразу после?

  • Цитата
Ссылка на сообщение
Поделиться на других сайтах
  • Назад
  • 1
  • 2
  • Вперёд
  • Страница 1 из 2  

Присоединяйтесь к обсуждению

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

Если у вас есть аккаунт, войдите в него для написания от своего имени.

Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Продолжаем разбираться в CAM-системах. Сегодня поговорим о том, как отредактировать постпроцессор под определенный станок или ЧПУ систему.

Как отредактировать постпроцессор под станок или ЧПУ систему?

В зависимости от ситуации возможны несколько вариантов:

  • Чаще всего производители ЧПУ системы поставляют уже настроенный постпроцессор под конкретную CAM-систему, либо говорят, какой нужно выбрать, чтобы получить совместимый G-код.
  • Если постпроцессор не входит в комплектацию, пользователю необходимо обратиться к производителю станка или ЧПУ-системы, чтобы он предоставил готовый постпроцессор.
  • Некоторые CAM-системы поставляются со встроенным редактором постпроцессоров, в котором пользователь может создать новый или отредактировать имеющийся, не углубляясь непосредственно в программирование (кодирование). Такие редакторы, как правило, представляют собой графические оболочки, автоматически генерирующие код постпроцессора на основе настроек, введенных пользователем.
  • Системы, не имеющие доступного для рядового пользователя редактора постпроцессоров требуют написания последнего в виде исходного кода на определенном системой языке программирования. Самостоятельное редактирование постпроцессора – достаточно сложный процесс, доступный далеко не всем пользователям. Некоторые разработчики могут написать постпроцессор под заказ. Например, совсем недавно в отдел разработки PUMOTIX поступил заказ от клиента из Индии. Необходимо было отредактировать постпроцессор для 3D печати домов.
Как отредактировать постпроцессор под станок или ЧПУ систему?

Напомним, что постпроцессор является неотъемлемой и обязательной частью CAM-системы. Без постпроцессора генерировать управляющую программу для ЧПУ системы не получится.

#purelogic #cam #cnc #cad #постпроцессор

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

Подготовка файлов к фрезеровке у меня идёт в программе 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 и могут быть отличая в расположении/размерах, т.к. я вносил изменения в свой станок. Если что-то будет сильно отличаться — измерьте и напишите, внесу изменения. Либо можете всё сделать самостоятельно исходники все в архиве.

Содержание

  1. Не удается запустить powermill из за ошибки файла авторизации paf error 52 line 17
  2. Прикрепленные изображения
  3. Прикрепленные изображения
  4. Подготовка к восстановлению
  5. Проверка файловой системы
  6. Попытка 1: zero_damaged_pages
  7. Попытка 2: reindex
  8. Попытка 3: SELECT, LIMIT, OFFSET
  9. Попытка 4: снять дамп в текстовом виде
  10. Попытка 5: SELECT, FROM, WHERE > Неудачи делают нас сильнее. Не стоит никогда сдаваться, нужно идти до конца и верить в себя и свои возможности. Поэтому я решил попробовать ешё один вариант: просто просмотреть все записи в базе данных по одному. Зная структуру моей таблицы (см. выше), у нас есть поле id, которое является уникальным (первичным ключом). В таблице у нас 1 628 991 строк и id идут по порядку, а это значит, что мы можем просто перербрать их по одному:

Не удается запустить powermill из за ошибки файла авторизации paf error 52 line 17

Отредактировано Monlen (16-11-2009 18:12:12)

Power Mill 8 уроки на русском

Для тех кто не нашёл: PowerMILL 10 (PM10006_RC4_Full_200907)

Отредактировано Посетитель (17-02-2010 00:34:37)

и конечно пилюля :

приветствую всех форумчан! мне нужна помощь. Я работаю на токарном станке ТПА 1200. И мне уже очень надоела встроенная управляющая программа. хочется найти программу, которая работает под управлением windows xp. Кто-нибудь сможет мне в этом помочь или хотя бы дать совет куда мне обратиться?

Если у вас установлен вылеченный ArtCam 2009 то пелюля для PowerMILL 10 работать скорее всего не будет.Если у вас стоит вторая операционка тогда все будет OK.

Если у вас установлен вылеченный ArtCam 2009

ArtCam 2009 и PowerMILL 10, конечно вместе не работают. смотря как запускать и нужно ли вам это? Лично мне нравится ArtCam(время и простота написания УП) , но приходится и PowerMILL использовать, некоторые УП пишутся дольше, но отличаются почти в двое по времени обработки и могое другое.

Скачал PM10006_SP5_Full_201002+delcam_flexlm_new_crk. пробовал ставить отправляет к производителю за новым кодом авторизации, не знаю что делать. помогите ПЛЗ

к производителю за новым кодом авторизации — сам ответил на свой вопрос.

Скачивай что угодно и ставь что хочешь, только для себя определи сначала зачем это те надо.
Зачем Арт и зачем Милл? А не работает, ПОТОМУ ЧТО ЧИТАТЬ НАДО.
Для кого это пишут ? flexlm_new_crk — СМОТРЕЛ, если ДА, то ПРОЧЕСТЬ НАДО.
Как устанавливать, что б работало.
. купил комп, принес домой, а он работает , что делать? — В розетку включи! -О спасиб заработал

а у рм10 сколько траекторий для 4хосевой?

лабаю в 8.
10 пока не смотрел-работы много
сильно отличается ))))

. это что-то между калькулятором и компьютером, примерно так .

не нашел таблетку на 10
просьба поделиться.
заранее благодарен

так искать и себя на форуме потеряете.

таблетка в посте №8 выше , проверил только что — всё работает, а если вам не видно ссылку , так это всё просто:
выложите ТУТ что не жалко , но и не бред.
или без флудеразма ответь или .
А нужно ещё и правила форума почитать — удачи.

я работаю по металу.
сильно вам завидую,глядя на ваши работы!

покажите вои , очень интерестно что вы делаете на метале

Каката ваенка. китайцы на такое не способны.

Отредактировано valb (07-05-2010 10:32:52)

Вопрос по постпроцессору. У меня станок RJ 1212 програмное обеспечение Type3D в ArtCam постпроцессор указывать не надо но вPowerMill нужно .Вопрос какой и где его взять.

А CNC router попрет на этой проге?

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

А мы в милле венеру фрезернули

А материал какой?

Машина какая? DMV с Haidenhain 530?

Отредактировано MiRu (10-06-2010 18:00:57)

ВT-1500 Economic, дюралюминий

Сейчас будет бан.Исправляйтесь.

Всем привет! Назрела необходимость освоить PowerMILL , но никак немогу всунуть свой постпроцессор в эту прогу . Станок у меня китаец WOODPECKER HS 1325

Материал стопудово алюминий, станок вероятно maho (не принципиально, главное вектор отклонения достаточный шоб был), знакомая моделька, видел в DELCAME-Москва, есть модификации по круче, с головой и крыльчаткой в виде шляпы. Делалась в софте для моделирования таких вещей ( именно торс тела, статуэтки).

Совет:
Лучше лицензии бывает только лицензия. Те кто серъезно занимается лучше брать софт в опытную эксплуатацию, у оф диллера, (только для предприятий)

дорогое оно зараза. у мя 10ка стоит весч хорошая,
в москве даа они там извращались будь здоров, коллега тогда фотку прислал ))) причем вроде бы говорил что они данную фигню на каком то токарном делали :О
Мне в милле больше всего нравится использование 3D модели заготовки и детали и стратегий обработки дофига,
конкурентом до их уровня еще растиии. жалко только фрезерная (((

травы накурилса? Или тебе 7 лет?

почитав отзывы — повермил и арткам не совместимы, и надо сервера безопасности переключать

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

* Intel® Core™2 Quad Q9550 (2.83GHz, 1333MHz FSB, 12MB L2 Cache, Quad Core) 375W
* 8GB (4 x 2.0GB DIMM) 800MHZ ECC Dual Channel Memory (требует 64-bit O/S)
* 512MB PCIe x16 nVidia Quadro FX 3700 (MRGA15), DualMonitor DVI или VGA Graphics Card
* 2 x 320GB (7,200 rpm) SATA 3.0Gb/s Hard Drive с NCQ и 16MB DataBurst Cache™
* Genuine Windows Vista® Business x64 SP1

Если главным моментом для вас является время вычисления, то два четырехъядерных процессора помогут выполнять вычисления в фоновом и активном режиме на максимальной скорости .

* 2 x Intel® Xeon® X5450 (3.00GHz, 1333MHz, 2x6MB Cache, Quad Core)
* 16GB, 667MHz, ECC Memory (8x2GB)
* 512MB PCIe x16 nVidia Quadro FX 3700 (MRGA15), Dual Monitor DVI или VGA Graphics Card
* 2 x 320GB (7,200 rpm) SATA 3.0Gb/s Hard Drive с NCQ и 16MB DataBurst Cache™
* Genuine Windows Vista® Business x64 SP1 WITH Media

пост 37 там написано, поиск там не умер , и гугл поможет
и зачем писать в разных темах одно и тоже

В пилюле из поста №7 касперский нашел троян-блокиратор.

как импортировать модель в формате igs.

почитав отзывы — повермил и арткам не совместимы, и надо сервера безопасности переключать
гугля случайно наткнулся на описание железа для нормальной работы этих прог (чуть не офигел, игровые сервера меньше требуют )

На самом деле необязательно такую тачку иметь, начиная с 10 Milla идет поддержка многоядерности, по сравнению с 9 Millom 10 работает на порядок быстрее, в 11 версии оптимизировали и добавили стратегии обработки, поменяли интерфейс, а движок вычислений практически неизменился от 10 milla. у меня ноут ACER 9330 (1.6 turion 64×2. 4 gb оперативы , тянет нормально и в фоне и так. ArtCam у меня 2008SP5 у него таблетка отдельная(не flex), вместе работают.

PowerMill2010RC1 (relise candidate) не рекомендую использовать в работе, а только в ознакомительных целях (он же кандидат), иногда не корректно считает траектории (остаются недорезы), не стабильно работает.

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

и кстати в фоновом режиме считается вроде прилично быстрее. только пока считает комп лучше не трогать

но пиратской 10ки рабочей я не видел. представленную тут ставил все работает но построцессировать прогу не хочет. обидно.
но может у мя руки нетуда растут.. больно установка замудреная..

Ну может Unigraphics NX7 поможет? Описание установки есть, все работает отлично, есть встроенный Post Builder для написания собственных постпроцессоров, или правки имеющихся (что проще). Плюс еще и импортировать в NX7 можно очень многое, моделировать, рассчитывать бог знает сколько. все что нужно — в одной программе. Я начинал еще с 4-й версии, и не собираюсь менять. Хотя как-то пробовал Power Mill, но количество задаваемых параметров при обработке детали меня никак не устроило.

Здрасти всем извините за глупый вопрос PowerMill может работать с самодельным станком?

Тихо сам с собою я веду беседу.
Предупреждение Вам.
Если никто не ответил-значит либо вопрос действительно глупый или не кто не может дать 100% ответ.Флудить не надо.

PowerMill может работать с самодельным станком?

Ему все равно какой станок, лишь бы постпроцессор соответсвующий был.

Господа!
Ни у кого не завалялся 4-х или 5-ти осевой постпроцессор Powermill?

Нужен для Mach3, но можно и любой другой.
Желательно с расширением *.pmopt (Postprocessor)

Все, всем спасибо за участие, уже написал сам.

для начала нужно почитать описаловку к установке, типа файла ReadMe.txt или Install.nfo, или что там было вместе с Вашей крякой.

Решил переходить с ArtCAM на PowerMill, пока изучаю новый, для меня софт, но уже впечатляет.
Автор ПО тот-же, но разница — просто поразительная. (стратегии, доработки, многоосевые. )
Если все получится — выложу отчет!

Отредактировано as-mechanic (24-10-2010 00:29:12)

as-mechanic, Я тоже решил подсесть на етот софт но исключительно из за многоосевой обработки, подцепил к станку поворотную ось, а к проге постпроцессор под мач найти не получается , а у тебя как успехи с поиском постпроцессора, нашел или еще нет?

Отредактировано Vektor_Z (25-10-2010 23:44:42)

Есть ли у кого документация по постпроцессорам, как их пишут и т.д., в чем разница между 3х и 4х осевым (то, что в количестве осей, это я понимаю). Несколько раз смотре PowerMill но где взять пост процессор под 4х осевую не знаю, 3 оси из арткама работают через G-code (tap).&?

Написал!
Взял за основу Fanuc.pmopt (идет в комплекте с Delcam Postprocessor), поковырялся денек, и добился чтобы он выдавал текст программы такой, как мне нужно. Чего и Вам советую.

Есть ли у кого документация по постпроцессорам, как их пишут и т.д., в чем разница между 3х и 4х осевым (то, что в количестве осей, это я понимаю). Несколько раз смотре PowerMill но где взять пост процессор под 4х осевую не знаю, 3 оси из арткама работают через G-code (tap).&?

Я тоже не нашел документации, но разобраться можно и самому.

Отредактировано as-mechanic (26-10-2010 18:04:13)

Разобраться то можно, но без документации это дело затянется на долго, без гарантии получения результата. Я сам PowerMill давно не устанавливал, там вместе с дистрибутивом совсем никакой доки, даже на английском нет?

И так, у меня — получилось.
вот первая деталь:
моделировалась в 3DsMax, генерация УП — PowerMill.
Размер изделия:
1200х270х99 мм
Материал — Ольха

И, собственно отчет, как обещал, прошу не придираться — это лично мое мнение:
1. Недостатки программы
— отсутствие встроенного моделировщика.
— плохо (почти никак) реализована возможность ручного ввода контуров, линий (простейших элементов построения) для операций 2D и 2.5D.
— для нормальной работы необходимо ещё иметь и уметь пользоваться PowerShape (вот это точно не входило в мои планы, но может все изменится).

2. Достоинства
— Высочайшая скорость работы с фасетными моделями, по сравнению с MasterCAM и NX (Unigraphics) (сравниваю с тем, с чем приходилось либо столкнуться(MasterCAM) либо работать(NX)). а в многоосевой обработке — ИМХО -лидер.
— Ввод исходных данных более понятен, но и более прост чем в NX.
— Весьма гибкая программа в плане работы со стратегиями 3D обработки.
— Очень понравилась возможность обрезки сгенерированной УП (например не обрабатывать какой либо участок поверхности)
— Впечатлило построение границ доработки, как по диаметрам фрез(указываются диаметры первой и второй фрезы и все — контура готовы), так и по модели материала (генерируется модель оставшегося материала).
— При переходе с ArtCAM явно заметно повышение качества обработанной поверхности, очень хорошо реализована стратегия 3D смещения.
— Очень понравилась стратегия однопроходной доработки углов, особенно пространственных.

3. Просто понравилось.
— После постпроцессирования корректно выводятся дуги (G2, G3) во всех плоскостях (G17, G18, G19) автоматом.
— В стратегии 3D Выборки плавность врезания между проходами, переход от прохода к проходу идет по дуге, за счет этого появляется, эдакая, танцевальная плавность в движениях станка.
— Скругление траектории в переходах — тоже красиво, при больших значениях радиуса скругления.
— Возможность использования в качестве заготовки отдельную модель (скажем ступенчатую, как для для детали на фото)

Анатолий, чтоб голову не ломать, достаточно посмотреть готовый G-код. там скорости идут после команды F

я не силен в g кодах, но как я понимаю там указан маршрут с командой f. а как определить, что маршрут по дуге и маршрут по прямой?

Если стандартный ISO-вский код, то по прямой -G1 команда, по радиусу G2,G3 в зависимости от направления. Открываешь в обычном блокноте готовый файл, в строку поиска букву F и смотришь где какие скорости

Анатолий,
Читайте документацию по g-кодам. Все основные понятия достаточно просты и в интернете море информации на эту тему.
При визуализации в power mill фреза перемещается по точкам (кнопка «Показать точки» чтобы их увидеть). Соответственно если имеется длинный отрезок с начальной и конечной точкой, то вы увидите скачок от точки к точке. Если точек будет много, то будет казаться что он движется медленно и плавно.
Скорости движения инструмента при работе на станке и визуализация никак не связаны.
На станке есть понятия режимов точного останова (G61) и постоянной скорости (G64).В режиме точного останова, станок отрабатывает каждый кадр выполняя полный цикл ускорения и замедления двигателей. Т.е. если будет движение по прямой запрограммированной не двумя, а к примеру четырьмя точками, то инструмент будет двигаться по этой прямой полностью останавливаясь в каждой этой точке и заново ускоряясь. В режиме постоянной скорости станок будет поддерживать постоянную заданную вами скорость перемещения на всем пути. По умолчанию всегда активна постоянная скорость.
В документации это все есть. Настоятельно рекомендую ознакомиться с g-кодами.

Дмитрий, в первой части по визуализации я догадался почему так происходит, спасибо за подтверждение моей теории. я листал литературу с G- кодами, но ничего там не понятно. поэтому желание лезть туда пропало. да и и где найти внятные видео уроки по этим кодам? что интересно, я пару месяцев назад самостоятельно осваивал спрут кам, и уже стал понимать что к чему, но постоянно выскакивала какаято ошибка, очень мешала, даже не успевал сохраняться. как вдруг увидел ваши уроки в пауэрмиле. мне стало настолько понятно, настолько разжовано, что решил скачать эту прогу пару дней назад. сегодня благодаря вам я даже сделал обработку двух деталей. если так пойдет , то останется развивать разные способы настройки и нюансы программы. сейчас насохраняю эти обработки с постами для разных станков и пойду пробовать подбирать под свой. купил станок, надо осваивать.

В руссифицированных версиях (даже той, которую пытается поствить Ivan и которые тут не обсуждаются ) есть отличный русский хелп. Так что с отдельным мануалом можно не заморачиваться. Все версии, начиная с 8.0. прекрасно встают на Win7

ах ты ленивый редуктор, гугли сам чего ты людей по пустякам напрягаешь

ах ты ленивый редуктор, гугли сам чего ты людей по пустякам напрягаешь

Прикрепленные изображения

Все замечания и нравоучения носят исключительно юмористический характер.Ни коим образом не затрагивают честь и достоинство собеседника облезлого Кота с форточки.

Кто людям помогает — тот тратит время зря.

Хорошими делами прославиться нельзя.

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

Прикрепленные изображения

Флешка должна стоять в USB

всем привет.устанавил POWER MILL 2012 SP4. у меня XP SP3.нормально запускается.ощибок не выдает.модель открывается,выбираю заготовку,фрезу,стратегию обработки потом ВЫЧИСЛЕНИЕ и все.и ничего не происходит.как будто программа виснет и все.(фото прилагаю).
посоветуйте,может кто сталкивался.
спасибо.

только вот в программе не могу модель в нижний левый угол ставить

Когда выберете надо будет загрузить. Если выбрали PowerMill 2010 RC1 или PowerMILL 10.0.06 , то после установки у многих появляется ошибка «PAF. «. Это если Вы создали не правильно «Server» или «Переменные среды». Как создать, «Server» , там всё разложено по картинкам. С созданием, «Переменные среды», не каждый поймёт. Я попробую Вам с этим помочь. Начнём:

На рабочем столе компа ярлык «компьютер», на него нажимаем с начало левую кнопку мышки, а потом правую. На появившемся окне нажимаем «свойства». Выходит вот это окно

На этом нажимаем «изменить параметры». Появляется вот это

На нём нажимаем «дополнительно», выходит вот это окно

нажимаем «переменные среды», появляется вот это окно

На этом окне мы создаём «переменные среды пользователя» и «системные переменные».
С начало нажимаем «создать. » на «переменные среды пользователя», появляется вот это

В этом окне на первой строке записываем всё как на картинке, без пробелов. На второй пишем 1700@?, знак вопроса это имя вашего компьютера. На примере в этом окне я написал имя master. Всё пишем без пробелов и нажимаем «ок».
Потом создаём «системную переменную». Делаем всё тоже самое как на окне, что выше.
Перезагружаем комп и запускаем программу. Должно получится.

Как устанавливать PowerMill_2012_sp4 в папках написано всё подробно, главное внимательно читать.

И ещё, «Когда устанавливаете прогу и сервер, всё открывайте от имени администратора, особенно касается у кого Windows 7 64 bit»

Хочу поделиться с вами моим первым успешным опытом восстановления полной работоспособности базы данных Postgres. С СУБД Postgres я познакомился пол года назад, до этого опыта администрирования баз данных у меня не было совсем.

Я работаю полу-DevOps инженером в крупной IT-компании. Наша компания занимается разработкой программного обеспечения для высоконагруженных сервисов, я же отвечаю за работоспособность, сопровождение и деплой. Передо мной поставили стандартную задачу: обновить приложение на одном сервере. Приложение написано на Django, во время обновления выполняются миграции (изменение структуры базы данных), и перед этим процессом мы снимаем полный дамп базы данных через стандартную программу pg_dump на всякий случай.

Во время снятия дампа возникла непредвиденная ошибка (версия Postgres – 9.5):

Ошибка «invalid page in block» говорит о проблемах на уровне файловой системы, что очень нехорошо. На различных форумах предлагали сделать FULL VACUUM с опцией zero_damaged_pages для решения данной проблемы. Что же, попрробеум…

Подготовка к восстановлению

ВНИМАНИЕ! Обязательно сделайте резервную копию Postgres перед любой попыткой восстановить базу данных. Если у вас виртуальная машина, остановите базу данных и сделайте снепшот. Если нет возможности сделать снепшот, остановите базу и скопируйте содержимое каталога Postgres (включая wal-файлы) в надёжное место. Главное в нашем деле – не сделать хуже. Прочтите это.

Поскольку в целом база у меня работала, я ограничился обычным дампом базы данных, но исключил таблицу с повреждёнными данными (опция -T, —exclude-table=TABLE в pg_dump).

Сервер был физическим, снять снепшот было невозможно. Бекап снят, двигаемся дальше.

Проверка файловой системы

В моём случае файловая система с базой данных была примонтирована в «/srv» и тип был ext4.

Останавливаем базу данных: systemctl stop postgresql@9.5-main.service и проверяем, что файловая система никем не используется и её можно отмонтировать с помощью команды lsof:
lsof +D /srv

Мне пришлось ещё остановить базу данных redis, так как она тоже исползовала «/srv». Далее я отмонтировал /srv (umount).

Проверка файловой системы была выполнена с помощью утилиты e2fsck с ключиком -f (Force checking even if filesystem is marked clean):

Далее с помощью утилиты dumpe2fs (sudo dumpe2fs /dev/mapper/gu2—sys-srv | grep checked) можно убедиться, что проверка действительно была произведена:

e2fsck говорит, что проблем на уровне файловой системы ext4 не найдено, а это значит, что можно продолжать попытки восстановить базу данных, а точнее вернуться к vacuum full (само собой, необходимо примонтирвоать файловую систему обратно и запустить базу данных).

Если у вас сервер физический, то обязательно проверьте состояние дисков (через smartctl -a /dev/XXX) либо RAID-контроллера, чтобы убедиться, что проблема не на аппаратном уровне. В моём случае RAID оказался «железный», поэтому я попросил местного админа проверить состояние RAID (сервер был в нескольких сотнях километров от меня). Он сказал, что ошибок нет, а это значит, что мы точно можем начать восстановление.

Попытка 1: zero_damaged_pages

Подключаемся к базе через psql аккаунтом, обладающим правами суперпользователя. Нам нужен именно суперпользователь, т.к. опцию zero_damaged_pages может менять только он. В моём случае это postgres:

psql -h 127.0.0.1 -U postgres -s [database_name]

Опция zero_damaged_pages нужна для того, чтобы проигнорировать ошибки чтения (с сайта postgrespro):

При выявлении повреждённого заголовка страницы Postgres Pro обычно сообщает об ошибке и прерывает текущую транзакцию. Если параметр zero_damaged_pages включён, вместо этого система выдаёт предупреждение, обнуляет повреждённую страницу в памяти и продолжает обработку. Это поведение разрушает данные, а именно все строки в повреждённой странице.

Включаем опцию и пробуем делать full vacuum таблицы:

К сожалению, неудача.

Мы столкнулись с аналогичной ошибкой:

pg_toast – механизм хранения «длинных данных» в Postgres, если они не помещаются в одну страницу (по умолчанию 8кб).

Попытка 2: reindex

Первый совет из гугла не помог. После нескольких минут поиска я нашёл второй совет – сделать reindex повреждённой таблицы. Этот совет я встречал во многих местах, но он не внушал доверия. Сделаем reindex:

reindex завершился без проблем.

Однако это не помогло, VACUUM FULL аварийно завершался с аналогичной ошибкой. Поскольку я привык к неудачам, я стал искать советов в интернете дальше и наткнулся на довольно интересную статью.

Попытка 3: SELECT, LIMIT, OFFSET

В статье выше предлагали посмотреть таблицу построчно и удалить проблемные данные. Для начала необходимо было просмотреть все строки:

В моём случае таблица содержала 1 628 991 строк! По-хорошему необходимо было позаботиться о партициирвоании данных, но это тема для отдельного обсуждения. Была суббота, я запустил вот эту команду в tmux и пошёл спать:

К утру я решил проверить, как обстоят дела. К моему удивлению, я обнаружил, что за 20 часов было просканировано только 2% данных! Ждать 50 дней я не хотел. Очередной полный провал.

Но я не стал сдаваться. Мне стало интересно, почему же сканирование шло так долго. Из документации (опять на postgrespro) я узнал:

OFFSET указывает пропустить указанное число строк, прежде чем начать выдавать строки.
Если указано и OFFSET, и LIMIT, сначала система пропускает OFFSET строк, а затем начинает подсчитывать строки для ограничения LIMIT.

Применяя LIMIT, важно использовать также предложение ORDER BY, чтобы строки результата выдавались в определённом порядке. Иначе будут возвращаться непредсказуемые подмножества строк.

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

Попытка 4: снять дамп в текстовом виде

Далее мне в голову пришла, казалось бы, гениальная идея: снять дамп в текстовом виде и проанализировать последнюю записанную строку.

Но для начала, ознакомимся со структурой таблицы ws_log_smevlog:

В нашем случае у нас есть столбец «id», который содержал уникальный идентификатор (счётчик) строки. План был такой:

  1. Начинаем снимать дамп в текстовом виде (в виде sql-команд)
  2. В определённый момент времени снятия дампа бы прервалось из-за ошибки, но тектовый файл всё равно сохранился бы на диске
  3. Смотрим конец текстового файла, тем самым мы находим идентификатор (id) последней строки, которая снялась успешно

Снятия дампа, как и ожидалось, прервался с той же самой ошибкой:

Далее через tail я просмотрел конец дампа (tail -5 ./my_dump.dump) обнаружил, что дамп прервался на строке с id 186 525. «Значит, проблема в строке с id 186 526, она битая, её и надо удалить!» – подумал я. Но, сделав запрос в базу данных:
«select * from ws_log_smevlog where обнаружилось, что с этой строкой всё нормально… Строки с индексами 186 530 — 186 540 тоже работали без проблем. Очередная «гениальная идея» провалилась. Позже я понял, почему так произошло: при удаленииизменении данных из таблицы они не удаляются физически, а помечаются как «мёртвые кортежи», далее приходит autovacuum и помечает эти строки удалёнными и разрешает использовать эти строки повторно. Для понимания, если данные в таблице меняются и включён autovacuum, то они не хранятся последовательно.

Попытка 5: SELECT, FROM, WHERE > Неудачи делают нас сильнее. Не стоит никогда сдаваться, нужно идти до конца и верить в себя и свои возможности. Поэтому я решил попробовать ешё один вариант: просто просмотреть все записи в базе данных по одному. Зная структуру моей таблицы (см. выше), у нас есть поле id, которое является уникальным (первичным ключом). В таблице у нас 1 628 991 строк и id идут по порядку, а это значит, что мы можем просто перербрать их по одному:

Если кто не понимает, команда работает следующим образом: просматривает построчно таблицу и отправляет stdout в /dev/null, но если команда SELECT проваливается, то выводится текст ошибки (stderr отправляется в консоль) и выводится строка, содержащая ошибку (благодаря ||, которая означает, что у select возникли проблемы (код возврата команды не 0)).

Мне повезло, у меня были созданы индексы по полю id:

А это значит, что нахождение строки с нужным id не должен занимать много времени. В теории должно сработать. Что же, запускаем команду в tmux и идём спать.

К утру я обнаружил, что просмотрено около 90 000 записей, что составляет чуть более 5%. Отличный результат, если сравнивать с предыдущим способом (2%)! Но ждать 20 дней не хотелось…

Источник

Аватара пользователя

Автор темы

Денис#

Вопросы по структуре G-кода и правке постпроцессора

Всем привет!
Все кто делает станки с ЧПУ рано или поздно сталкиваются с такими вопросами. Писать пост с нуля дело муторное и не перспективное как мне кажется. Правка же наше всё :)
Но вот со структурой возникли некие вопросы.
Допустим хочется мне что бы при окончании программы стол уезжал в машинный 0 по Z и в машинный 0 по Y.
Сейчас он уезжает в Z40Y0 в координатах обработки. Выглядит это примерно так:

N4296 M05
N4298 G0 Z40.
N4300 G0 Y0.
N4302 M30
%

Правильно ли я понимаю что для перемещения в машинный 0, а точнее в 5 (так мне хочется), хвост программы должен выглядеть так?:

N4296 M05
N4298 G0 G90 Z5
N4300 G0 G90 Y5.
N4302 M30
%

Как я понимаю вводя G90 это работа в абсолютных координатах и если я не задаю координатную систему то работа ведется от машинных нулей?

Заниматься стОит только тем, что считается невозможным.


Аватара пользователя

Автор темы

Денис#

Вопросы по структуре G-кода и правке постпроцессора

Сообщение #2 Денис# » 01 май 2018, 23:24

Что то как то неактивно тут у нас…
Сам себе отвечу: был не прав, ни хрена оно так не сработало. Вернул в постпроцессоре все назад. Но мне категорически не нравится что там прописано.
Получается что в конце программы инструмент поднимается по Z до 45 и потом начинает перемещаться по горизонтали. А если у меня деталь 50? Тогда в помойку если вылетело из головы? А оно вылетит, как пить дать…

Так что вопрос открытый.

Сегодня помимо прочего обратил внимание что станок как то странно по G00 катается. По Y шустро так, а вот по X и Z явно медленнее. С вертикалью фиг с ней, а вот Х надо перенастроить. Пойду искать где зарыто :)

Заниматься стОит только тем, что считается невозможным.


Аватара пользователя

РЕКЛАМА

Вопросы по структуре G-кода и правке постпроцессора

Сообщение #3 РЕКЛАМА » 02 май 2018, 00:38

А разве это не в CAM программе задается?
В арткаме задаешь точку возврата самостоятельно при желании.


Аватара пользователя

Автор темы

Денис#

Вопросы по структуре G-кода и правке постпроцессора

Сообщение #4 Денис# » 02 май 2018, 01:40

Тут несколько иное как мне кажется.
Во первых в постпроцессоре это есть, ибо я это только что правил в очередной раз :)
Во вторых САМ не может знать где у станка машинный ноль, он знает только в своих системах координат если я все правильно понимаю. Мне же хочется в конце программы (или при смене инструмента как вариант) что бы стол опускался максимально вниз по G0 и Y так же шустро отъезжал назад.
Это упростит работу с заготовкой, смену инструмента и пр.
Именно по этому пытаюсь понять как это прописать именно в машинных координатах.

Отправлено спустя 1 час 24 секунды:
Так, вроде разобрался.
Команда G53, действует только в той строке в которой прописана. По идее должно быть так:

N57546 M05
N57548 G0 G53 Z5
N57550 G0 G53 Y5.
N57552 M30

Постпроцессор поправил, завтра на станке проверю.

Заниматься стОит только тем, что считается невозможным.


Аватара пользователя

Автор темы

Денис#

Вопросы по структуре G-кода и правке постпроцессора

Сообщение #5 Денис# » 02 май 2018, 12:45

Есть ещё G28, но там курить надо…

Заниматься стОит только тем, что считается невозможным.


Аватара пользователя

Автор темы

Денис#

Вопросы по структуре G-кода и правке постпроцессора

Сообщение #6 Денис# » 06 май 2018, 05:02

В общем докладываю:
k-flop отказался жрать G0 G28 G91 Z0, посему вбил
G0 G53 Z0 и станок таки уехал в машинный ноль :yahoo:
Только почему то следующая строка выбила его в ошибку
G0 G53 Y0 :wall: Причем он ещё и поехал не в ту сторону… В общем ещё у станка покурить придется малость :)

Отправлено спустя 12 минут 26 секунд:
Ещё прикол: после обновления прошивки фуфлоп почему то при загрузке встает в дюймовую систему. Где это переключить в нем что то не нашел, посему строку безопасности тоже малость поправил:
N1
N106 G0 G53 Z5
N108 G00 G90 G21 G94 G17 G40 G80

Заниматься стОит только тем, что считается невозможным.


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

Подготовка файлов к фрезеровке у меня идёт в программе 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 и могут быть отличая в расположении/размерах, т.к. я вносил изменения в свой станок. Если что-то будет сильно отличаться – измерьте и напишите, внесу изменения. Либо можете всё сделать самостоятельно исходники все в архиве.

Добавить комментарий