Перейти к публикации

Вопросы по Pm-post.


dtsyplov

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

Доброго времени суток всем, прошу помощи!!! Я уже не знаю что делать, начал изучать обработку по 4-ой оси вдоль оси Х в Powermill (Обработать с одной стороны, а после перевернуть на 180 градусов и обработать с другой стороны). Но каждый раз получаю сообщение "Направление оси Z траектории изменилось." Изучал по видео уроку сия процесс, там делали все просто, а это меняли направление оси Z на противоположный, а у меня он ругается на такие действия. Помогите кто чем может, прошу!(

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


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

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

Вопрос знатокам можно ли создать файл карты наладки в самом постпроцессоре? Если можно то как это сделать?

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

Всем день добрый кому то вечер добрый! Приобрели чпу фрейзер ручного изготовления рабочим полем 205 по Х и 305 по Y, шильдик на нем Авиор-15М. и вот дошла очередь работать на 4 оси, расположили ее вдоль оси Y. Четвертая ост полноценная, УП делал в PowerMill 2019. Дошла очередь до записи НЦ и понял что нету постпроцессора под 4 ось повермил со станком была папка с файлами но там постпроцессоры для арткам. Второй день ползаю по интернету скачиваю разные файлы которые предлогают на форумах но при записи выдает ошибку!) кто нибуть может помоч, с чего начать куда плясать может быть как то можно написать свой! Я уверен каждый из вас это проходил!)

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

Всем день добрый кому то вечер добрый! Приобрели чпу фрейзер ручного изготовления рабочим полем 205 по Х и 305 по Y, шильдик на нем Авиор-15М. Плата кправления матч3!и вот дошла очередь работать на 4 оси, расположили ее вдоль оси Y. Четвертая ост полноценная, УП делал в PowerMill 2019. Дошла очередь до записи НЦ и понял что нету постпроцессора под 4 ось повермил со станком была папка с файлами но там постпроцессоры для арткам. Второй день ползаю по интернету скачиваю разные файлы которые предлогают на форумах но при записи выдает ошибку!) кто нибуть может помоч, с чего начать куда плясать может быть как то можно написать свой! Я уверен каждый из вас это проходил!)

 

Ссылка на сообщение
Поделиться на других сайтах
  • 8 лет спустя...
UnPinned posts

Вы можете объяснить, почему я пытаюсь присвоить переменной значение : SetParam("%p(Machine C)%",c_ax);

SetParam("%p(Last_C)%", last);

и это не работает?

Ошибку выдает или в УП не выводит?

И если использовать Ваш совет, то что подставлять в переменную res? Вычисленные координаты оси С? И куда они дальше будут идти в самом постпроцессоре? Я не понимаю как это работает, и поэтому спрашиваю.

Зависит от вашего желания. 2 варианта:

1. Вы пишете:

SetParam("%p(Last_C)%", last);
Значит ничего в res писать не надо. В функции вы присвоили результат параметру Last_C, значит в блоке перемещений нужно этот параметр вставить. И этот вариант для вас лучше, т.к. в функции у вас вычисляется два параметра.

2. Вы присваиваете функции результат ваших вычислений. Тогда у вас

res = ...
Затем в блоке выводите параметр, далее "назначить" => "функция", и выбираете нужную. Результат функции присваивается параметру. Но тогда для каждого параметра нужно иметь свою функцию.

Как это должно выглядеть, так: (т.е. делаем вычисления и говорим возвратить эти вычисления в постпроцессор)?

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

Показываю скрипт, он пока что не работает, хотя что-то выводит.

Я хочу сделать вычисления, и занести результат вычислений в Machine C и в Last_C.

Создана пользовательская переменная Last_C. Ей присвоен тип действительный, доступ чтение-запись.

function ControlC ( )
{
var res = "";
res += StandardResponse();

 var a1 = 0.0;
 var a2 = 0.0;
 var cw = 0.0;
 var sw = 0.0;
 var last = 0.0;
 var c_ax = 0.0;
      c_ax = GetParam("%p(Machine C)%");
     last = GetParam("%p(Last_C)%");

if ( c_ax > last )
  {
    cw = 1;
    sw = 1;
  }                                         
  else
  {
     if ( c_ax == last )
       {
       if ( sw == 1 ) cw = 1; else cw = -1; 
       }
     else
       {
       cw = -1 ; sw = -1 ;
       }
  }

if ( ( c_ax > 360.0 ) || ( c_ax < -360.0 ) )
{
a1 = c_ax % 360.0;
}
else
{ 
a1 = c_ax ;
}

if ( a1 < 0.0 ) a2 = a1 + 360 ; 
else 
 {
 if ( a1 == 0.0 && sw == -1 ) a2 = a1 + 360.0; else a2 = a1 ;
 }
 last = c_ax ;
 c_ax = a2 * cw ;
SetParam("%p(Machine C)%",c_ax);
SetParam("%p(Last_C)%", last);

return res ; 
}

Запускается он отсюда (на картинке скрипт не подключён):

post-443-1317975718_thumb.jpg

Скрипт пока что не совсем верный, но подразумевается, что он вычисляет угол и заносит его сразу в Machine C ну, и соответственно, выводит в программу.

Выводит пока что совсем не то, что нужно.

Вопрос: правильно ли построение кода?

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

Что за параметр А2 в кадре? Если подразумевается, что его значение берется из скрипта, то это неверно. Переменная А2 и параметр А2 - это разные вещи. Как я уже писал, либо присваиваем параметру значение функции непосредственно в блоке, либо в описании функции присваиваем параметру какое-то значение, при этом оставляя значение самой функции пустым (как делаете вы).

В кадре есть Machine C - он должен выводиться в блоке так, как рассчитан скрипте.

Зачем нужна пользовательская функция Last_C - неясно, ведь в блоке ее нет.

По поводу построения кода - надо вникнуть, подумать, с ходу не скажу.

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

А2 - она во первых не выводится, а во вторых, я на неё назначил комментарии для отладки (выводятся).

Насчёт построения кода - вникать не стоит, т.к. ошибки в логике, это сам разгребу.

Ну, пока что понял, как выводить.

Но, не понял, почему нужно было объявить переменную res , и вернуть её в конце скрипта чтобы он заработал.

Куда, кстати в моём варианте она возвращается?

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

Но, не понял, почему нужно было объявить переменную res , и вернуть её в конце скрипта чтобы он заработал.

Куда, кстати в моём варианте она возвращается?

Потому что функция всегда должна возвращать какое-то значение. Вначале пишем

res += StandardResponse();
(кстати, есть второй вариант - AdvancedResponce).

Тем самым определяем, что результатом функции является значение переменной res.

У нас функция возвращает пустое значение. Получается, что таким образом мы используем функцию как процедуру (последовательность выполняемых команд).

Результат функции у вас никуда не возвращается, т. к. вы из описанных мною вариантов используете вариант №2.

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

Спасибо за помощь, скрипт заработал.

Больше скажу: большое спасибо.

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

неужели так жалко постпроцессор ? мне в качестве учебного примера он нужен!! блин ведь форумы и создаются с целью обмена опытом и информацией!

Изменено пользователем torrent.uf
Ссылка на сообщение
Поделиться на других сайтах

Тестировал готовый пост, и нашёл проблему, решить которую не знаю как. И не понимаю, почему она происходит.

На картинке простая обработка цилиндра по спирали, центр фрезы направлен к оси вращения, наклон фрезы 30 градусов.

post-443-1318178608_thumb.jpg

Программа выводится правильно:

G16 X Y
(UOT,1, X0 , Y0 , Z0 )
N10 ; ================= 
N20 ;  TOOLPATH : 0_degree  
N30 ;  STRATEGY USED : Surface_proj  
N40 ;  TOOLPATH WP : 2_1  
N50 ; ================= 
N60 ;  TOOL TYPE : BALLNOSED
N70 ;  TOOL NAME : D19SFER  
N80 ;  TOOL DIA.: 19  &  TIP RAD.: 9.5  & LENGTH : 115  
N90 G0 G79 Z0
N100 T1 M6
N110 G300
N120 h1
N130 (TCP,1) 
N140 (UIO,Z-278.25)
N150 S20000 M3
N160 G1 G90 X6.063 Y0 F15000
N170 C0
N180 B30.
N190 Z70.
N200 X-1.249 Z57.335
N210 X-4.749 Z51.273 F2000
N220 Z51.272 F5000
N230 C-359.088
N240 Z51.273 C-358.475
N250 C-357.248

Если поворачиваем эту обработку на 180 градусов относительно оси вращения,post-443-1318178901_thumb.jpg

и пытаемся постпроцессировать, то код выводится не правильно, ось Z в минусе зеркально, оси С и В тоже не верно (должно быть С180 В30):

G16 X Y
(UOT,1, X0 , Y0 , Z0 )
N10 ; ================= 
N20 ;  TOOLPATH : 180_degree  
N30 ;  STRATEGY USED : Surface_proj  
N40 ;  TOOLPATH WP : 2_2_1  
N50 ; ================= 
N60 ;  TOOL TYPE : BALLNOSED
N70 ;  TOOL NAME : D19SFER  
N80 ;  TOOL DIA.: 19  &  TIP RAD.: 9.5  & LENGTH : 115  
N90 G0 G79 Z0
N100 T1 M6
N110 G300
N120 h1
N130 (TCP,1) 
N140 (UIO,Z-278.25)
N150 S20000 M3
N160 G1 G90 X6.063 Y0 F15000
N170 C0
N180 B150.
N190 Z-70.
N200 X-1.249 Z-57.335
N210 X-4.749 Z-51.273 F2000
N220 Z-51.272 F5000
N230 C-359.088
N240 Z-51.273 C-358.475
N250 C-357.248

Причём, если поворачивать на 179 или 181 градус, то всё в порядке:

G16 X Y
(UOT,1, X0 , Y0 , Z0 )
N10 ; ================= 
N20 ;  TOOLPATH : 181_degree  
N30 ;  STRATEGY USED : Surface_proj  
N40 ;  TOOLPATH WP : 0_degree_1_2  
N50 ; ================= 
N60 ;  TOOL TYPE : BALLNOSED
N70 ;  TOOL NAME : D19SFER  
N80 ;  TOOL DIA.: 19  &  TIP RAD.: 9.5  & LENGTH : 115  
N90 G0 G79 Z0
N100 T1 M6
N110 G300
N120 h1
N130 (TCP,1) 
N140 (UIO,Z-278.25)
N150 S20000 M3
N160 G1 G90 X6.063 Y0 F15000
N170 C0
N180 B30.
N190 Z70.
N200 X-1.249 Z57.335 C179.
N210 X-4.749 Z51.273 F2000
N220 Z51.272 F5000
N230 C-178.088

Что пропустил?

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

Эта проблема возникает только при стартовом положении инструмента на 180 градусов относительно СК, от которой постпроцессируем. Если вставить промежуточную СК, то проблема исчезает. Можно, конечно, в уме держать это и не допускать , но всё таки, это не есть хорошо. Лучше пофиксить это.

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

неужели так жалко постпроцессор ? мне в качестве учебного примера он нужен!!

В качестве учебного примера на форуме есть отличная документация, и даже на русском (!!!) и даже для многоосевой обработки. Возьмите эту документацию, любой пост, добавьте в кинематику ещё одну ось, и пробуйте. Сложного нет ничего.

Форумы предназначены для задания вопросов и получения ответов. А Вы просите готовое решение на блюдечке. Что Вам не понятно в создании поста? Как добавить ось?

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

Тестировал готовый пост, и нашёл проблему, решить которую не знаю как. И не понимаю, почему она происходит.

Заданный вектор инструмента при пятиосевой обработке может быть достигнут двумя различными положениями осей станка, что мы и видим. Вы хотите, чтобы угол B был 30 градусов и положительный Z, постпроцессор рассчитал 150 градусов и отрицательный Z. При этом результат один и тот же - фреза придет в нужную точку при требуемой ориентации относительно детали.

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

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

Да, я пробовал играться с разными опциями в раздере "Конфигурация многоосевой". Не получилось. При установке пределов перемещения тех, что мне нужно (для оси В это -15/+30) , пост пишет такие ошибки: Can't reset axis limit B=150.000 degrees during reconfiguration without a retract procedure as the interval between the limits is too narrow., или : Retract and Reconfigure cannot be processed.

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

Я понимаю, что с точки зрения логики ориентация инструмента относительно детали правильная, но заставить пост сделать это при помощи опций Rezet angles only, Retract and Reconfigure - не удалось. Пост хочет вращать ось В, но не трогает ось С. Хотя, с точки зрения человека провернуть ось токарки - более логично.

Там есть ещё настройка ручная, но насколько я понимаю, там описывается порядок команд при отводе/подводе инструмента вручную, как хочет пользователь. Но как описать какую ось вращать - нет.

Я в тупике.

Ведь пост делает правильную реконфигурацию, когда поворот на 179 или 181 градус. Но, не хочет это делать, когда ровно 180. Тут вроде как в другом проблема. А?

Пока что не вникал в команды в постпроцессоре в разделе "Режимы контроллера". Вкл/выкл мультиакцис, вкл/выкл рабочую плоскость, настройки рабочей плоскости. Может, там собака порылась?

Или это просто глюк софта? Тоже запросто может быть. (PMPost4800).

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

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

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

Пробовал разные варианты.

Хотите посмотреть пост?

Не откажусь, вместе с постпроцессируемой CL-Data.
Ссылка на сообщение
Поделиться на других сайтах

Каким-то чудесным образом, но проблема с поворотом на 180 градусов (<noindex>здесь писал</noindex>) решилась. Вроде ничего нового не вводил в пост, но проблема исчезла, делает всё как нужно.

Сейчас жду от производителя станка правильных программ с режимом RTCP, чтобы включить этот режим. Но они что-то тупят...

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

У ПоверМИЛЛа есть одна интересная "фишка". То, что он показывает красным цветом - это перемещения по G0, а то,что показано сиреневым цветом (напр. относительные перемещения) - это перемещения по G1 с подачей быстрых перемещений. В ПМ-Посте такая фишка исправляется только скриптом.

Подключите следующий скрипт к команде "Move Linear" и все будет исправлено.

function Moving_Correct()

{

var res = "";

var mt = GetParam("%p(Move Type)%");

var fr = GetParam("%p(Feed Rate)%")

var mr = GetParam("%p(Skim Rate)%")

if (mt == "LINK" && fr == mr)

{ res += StandardResponse("%b(Move Rapid)%")}

else { res += StandardResponse("%b(Move Linear)%")};

return res;

}

Спасибо !

У меня нет опыта работы на многоосевой машине и написания УП для нее ,

поэтому такой вопрос .

Какие могут быть неприятности , если упростить скрипт ?

{

var res = "";

var fr = GetParam("%p(Feed Rate)%")

var mr = GetParam("%p(Skim Rate)%")

if (fr == mr)

{ res += StandardResponse("%b(Move Rapid)%")}

else { res += StandardResponse("%b(Move Linear)%")};

return res;

}

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

Благодарю !

Дело в том , что пока у меня все траектории выводятся как :

APPROACH->CUT/LINK/...CUT->RETRACT

и при условии LINK начало и конец программы выводятся в G1 .

Не очень принципиально , конечно , но для единообразия

хотелось бы G0 при fr==mr .

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

Уважаемые господа заседатели!

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

N 23 x15;y15;I=AC(12);J=AC(12)

символы I=AC, J=AC и скобки вокруг значения

зараннее благодарен

Ссылка на сообщение
Поделиться на других сайтах
  • SHARit закрепил это тему

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

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

Гость
Ответить в тему...

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

  Разрешено не более 75 эмодзи.

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

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

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

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.



  • Сообщения

    • Mr_Gray
      Если и расфрезеровывать, то обязательно с коррекцией радиуса инструмента G41, чтобы попасть в середину поля допуска. Но лучше все же разверткой или расточной головкой.
    • lem_on
      При хорошей геометрии станка, можно и расфрезеровать. Если неглубокие отверстия, можно и тс сверлом сразу размер получить.
    • Snake 60
      Скорее всего исправляли в конкретной сборке, для конкретных тел. Насколько я помню, надо в самом эскизе профиля заполнить свойство Description
    • Snake 60
      Делаете дырку в свае - вставляете в нее трубу и 2 человеко-силы крутят сваю ) Дёшево и сердито и не нужен никакой планетарный редуктор ))
    • gudstartup
      вы всегда ищите свой путь или будете делать то что вам советуют? с самого начала прежде чем приступать к экспериментам вам нужно было вынуть носитель и сделать образ. diskcopy делает копию гибкого диска на другой а вам надо сделать образ жесткого диска или карты памяти. делайте как советует @Viktor2004 иначе еще чего нибудь сломаете или вам станок не нужен и вы его приобрели для экспериментов ? вот а печатной машинке из прошлого нельзя а вот на синумерике можно - удивительные вещи в настоящем происходят!! на 100 % уверен что там не модуль а либо писимиси ай либо жд @mircomax81 хотите работать в дос почитайте помощь по командам 
    • PuKoLLleT
      Доброго дня всем. Поделитесь опытом,раньше такое не доводилось делать. На торце фланца нужно сделать  восемь отверстий ф17H7 на токарно-фрезерном станке с осью Y ,имеется ManualGuide.В моем понимании нужно просверлить,а затем торцевой фрезой расточить нужный диаметр.Получится такой фокус,или надо разверткой доводить нужный размер?  Стойка Fanuc 0i-Tf.
    • Snake 60
      Всё верно, я даже русификатор делал для него (ушло на это где-то около года). Хороший софт был, я всех знакомых на него подсадил в свое время :) У меня даже где-то образ на виртуалке лежит с SW2014+MechSoft, Жаль, что автодеск его поглотил, а не DS :( А по сути вопроса, проектировал двухступенчатый планетарный редуктор в свое время. Что было нужно: Справочник по планетаркам (автора не помню, если надо поищу), из софта MathCAD + GearTeq (софтина идет вместе с GearTrax, только рассчитывает и моделирует несколько зацеплений согласно выбранной схеме, в том числе планетарки) Ой и ошибаетесь. Звездочки - не равно зубчатые колеса в планетарке) Мы намучились с малой точностью изготовления на эл.эрозии, а Вы лазером ))) Был собран опытный образец редуктора с незакаленными деталями, чисто проверить геометрию, отладить сборку. Так потом начальство этот редуктор сказало испытать в бою, как я не противился)) Помер за пару дней интенсивных нагрузок ))) Материал, термообработка и точности изготовления решают )
    • Snake 60
      @Тихоход  Ещё один вариант - изучать программирование и писать свою программу/макрос. Вот пример конфигуратора двери: https://www.youtube.com/watch?v=wv4HryWQBSk
    • mircomax81
      Посредством Diskcopy можно сделать адекватную копию на флоппи диск?
    • Andrey_kzn
      Да, ведь советовали автору вытащить жёсткий диск и сделать образ. Неужели самому не интересно, как устроен этот старый промкомпьютер? Там может стоять как жёсткий диск, так и CF-карта, или же Disc-on-chip или Disc-on-module.  Как-то очень давно, на подобном промышленном оборудовании (большая печатная машина) я не смог перенести  ПО с родной CF - карты на другую, такого же размера но другой фирмы. Была также станочная оболочка под досом.  Образ я делал Нортон гостом, развернул его на другую CF-карту без проблем. Машина загрузилась нормально и работала ровно 2 дня, на неродной CF-карте,  потом зависла, и отказалась загружаться. Пришлось вызывать сервисника. От него мы узнали, что нельзя просто так взять и заменить карту  - носитель системного ПО, на другую. А полезли мы туда, так как руководство захотело печатать отчёты по работе машины. В станочном ПО такая функция была. Вот только принтер надо было купить у фирмы - производителя этой самой машины. В попытках заставить работать другой принтер мы редактировали файл  AUTOEXEС.BAT, на предмет загрузки драйвера принтера, ничего не получилось, зато перестали открываться некоторые страницы станочного ПО.  Образ у нас был давно снят, и мы развернули его на другую карту памяти. Родную карту я трогать не стал (как чувствовал, что нельзя ). Сервисник восстановил ПО с архивной дискеты на родную карту памяти, и всё заработало. Дискеты с архивами ПО шли вместе с документацией к машине.  Там были дискеты с Досом, станочной оболочкой, параметрами приводов, программой ПЛК. Он же и предупредил нас о предельно аккуратном обращении с родной картой памяти, и посоветовал немедленно сделать образы с архивных дискет, что мы сразу и проделали.. Вот такой сюрприз от машины эпохи Дос.
×
×
  • Создать...