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

Вопросы по 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 пользователей

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




×
×
  • Создать...