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

Как в PostBuilder сделать чтобы кординаты поворота оси выводились с меньшей дискретизаацией?


_vlad_ng_

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

Здравствуйте, пишу собственный пост под  токарно-фрезерный станок на Sinumeric 840d, по ходу уперся в проблему - координаты поворота оси выводятся с дискретизаацией примерно в 2-3 градуса (код приложил ниже), может кто сталкивался с таким? Еще выводятся не нужные координаты Y и точки где нужно и нет, что не делал ничего не помогает, если поможете будет не плохо, заранее спасибо!

 

;L1001
;DATE : Sat Sep  4 19:31:40 2021
;T0  : DRILLING : DRILL_D10     : D=10.00     
N10 G18 G40 G54 G90
N20 G59 Z0 X0
N30 L710(1)  ;Move to tool change position, axes: X=>Z
;
N40 MSG("METHOD // DRILLING_COPY_COPY")
N50 T="DRILL_D10"
N60 TC(1)  ;Tool change
N70 SETMS(1)
N80 L707(0)  ;C4 - Switch on axis
N90 M108
N100 G17
N110 G0 C4=DC(0)
N130 G97 S1=0 M1=03 ;check rotation: M1=04-clockwise, M1=03-counterclockwise!!!
N140 G0 G19 G94 X120. Y0.0 Z-15. C60.
N150 F250.
N160 MCALL CYCLE81(120.,73.,5.,49.268)
N170 Y0.0 Z-15.
N180 MCALL
N190 X120. Y0.0 Z-15. C57.447
N200 C54.894
N210 C52.34
N220 C49.787
N230 C47.234
...
N610 C-49.787
N620 C-52.34
N630 C-54.894
N640 C-57.447
N650 C-60.
N660 MCALL CYCLE81(120.,73.,5.,49.268)
N670 Y0.0 Z-15.
N680 MCALL
N690 X120. Y0.0 Z-15. C-62.553
N700 C-65.106
N710 C-67.66
N720 C-70.213
N730 C-72.766
N740 C-75.319
...
N1110 C-169.787
N1120 C-172.34
N1130 C-174.894
N1140 C-177.447
N1150 C-180.
N1160 MCALL CYCLE81(120.,73.,5.,49.268)
N1170 Y0.0 Z-15.
N1180 MCALL
N1200 G54
N1210 M1=05 M109
N1220 L710(1)  ;Move to tool change position, axes: X=>Z
N1230 L708  ;C4 - Switch on spindle
N1240 M17

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


UnPinned posts

@_vlad_ng_ Знать бы еще что за траекторию Вы пытаетесь вывести своим постом. 

Поворот по С - переход на следующую позицию? Сделайте переход между отверстиями "по прямой" и посмотрите что выведет пост.

 

Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, mr_Voden сказал:

@_vlad_ng_ Знать бы еще что за траекторию Вы пытаетесь вывести своим постом. 

Поворот по С - переход на следующую позицию? Сделайте переход между отверстиями "по прямой" и посмотрите что выведет пост.

 

Да, сверление отверстия - переход к следующему.
https://drive.google.com/file/d/14R6vr2A3JOCl1yQmrZAV1fCgf_jA4n2Z/view?usp=sharing

Поставил переход по прямой - выводиться тот же код.
...
N160 MCALL CYCLE81(120.,73.,5.,49.268)
N170 Y0.0 Z-15.
N180 MCALL
N190 X120. Y0.0 Z-15. C57.447
N200 C54.894
N210 C52.34
N220 C49.787
N230 C47.234
N240 C44.681
...

Знаю что выводиться блок "rapid_traverse", возможно в ускоренных перемещениях нужно что-то изменить?
https://drive.google.com/file/d/1ZJ4ChSMhjIcLhjKSJDB1yhJyoD1AiWug/view?usp=sharing

Ссылка на сообщение
Поделиться на других сайтах
04.09.2021 в 19:39, _vlad_ng_ сказал:

Здравствуйте, пишу собственный пост под  токарно-фрезерный станок на Sinumeric 840d, по ходу уперся в проблему - координаты поворота оси выводятся с дискретизаацией примерно в 2-3 градуса (код приложил ниже), может кто сталкивался с таким? Еще выводятся не нужные координаты Y и точки где нужно и нет, что не делал ничего не помогает, если поможете будет не плохо, заранее спасибо!

 

А зачем с наименьшей дискретизацией выводить?

Вообще переход от одного отверстия к другому делается через специальную функцию, которая отслеживает изменение угла в операциях "3+2", если происходит изменение углов, то она сбрасывает все трансформации, выводит безопасные отходы в машинных координат в крайние положения и отключает вывод промежуточных значений углов поворотных осей - до тех пор пока не выведется угол следующего отверстия, затем необходимые трансформации включаются и производится безопасный подход.

Ну а уменьшить дискретизацию, можно непосредственно перед генерацией траектории, в меню NX "максимальное изменение оси инструмента"

Ссылка на сообщение
Поделиться на других сайтах
11 минут назад, Vladislav-dobrynin сказал:

 

А зачем с наименьшей дискретизацией выводить?

 

Ну а уменьшить дискретизацию, можно непосредственно перед генерацией траектории, в меню NX "максимальное изменение оси инструмента"

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

Пимерно так:

;model2_setup_1
;DATE : Sun Sep  5 21:14:43 2021
;T0  : DRILLING : DRILL_D10     : D=10.00     
N10 G18 G40 G54 G90
N20 G59 Z0 X0
N30 L710(1)  ;Move to tool change position, axes: X=>Z
;
N40 MSG("METHOD // DRILLING_COPY_COPY")
N50 T="DRILL_D10"
N60 TC(1)  ;Tool change
N70 SETMS(1)
N80 L707(0)  ;C4 - Switch on axis
N90 M108
N100 G17
N110 G0 C4=DC(0)
N130 G97 S1=0 M1=03 ;check rotation: M1=04-clockwise, M1=03-counterclockwise!!!
N140 G0 G19 G94 X120. Y0.0 Z-15. C60.
N150 F250.
N160 MCALL CYCLE81(120.,73.,5.,49.268)
N170 Y0.0 Z-15.
N180 MCALL

N650 C-60
N660 MCALL CYCLE81(120.,73.,5.,49.268)
N670 Y0.0 Z-15. ;UTIL_CP1
N680 MCALL

N1150 C-180.
N1160 MCALL CYCLE81(120.,73.,5.,49.268)
N1170 Y0.0 Z-15.
N1180 MCALL
N1200 G54
N1210 M1=05 M109
N1220 L710(1)  ;Move to tool change position, axes: X=>Z
N1230 L708  ;C4 - Switch on spindle
N1240 M17

Только желательно без Y0.0 (это вторая проблема) так как ось Y не физическая и без трансформации она стопорит стойку...

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, _vlad_ng_ сказал:

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

 

Как я и писал выше необходимо разработать специальную функцию в постпроцессоре

В процедуре PB_CMD_before_motion (перед каждым движением) проверяем условие: если тип обработки 3+2 и выполняется условие: если mom_pos(3) не равно mom_prev_pos(3) или mom_pos(4) не равно mom_prev_pos(4), то блокируем вывод адреса командой MOM_disable_address С А (пишем те адреса поворотных осей какие нужно). Далее в маркере событий всех осевых циклов, перед их выводом: MOM_enable_arddress С A. Далее, перед выводом всех осевых циклов добавляем движение по оси C. 

Это упрощенно конечно, рабочий код данной функции сложнее, но попробуйте так.

А вот по Y вопрос - он всегда 0? на станке нет физической оси? тогда в маркере начала start of program пишем  MOM_disable_address Y

Если Вам по какой то причине необходимо убрать вывод адреса перед циклом, то перед его выводом пишем - MOM_suppress Always Y - адрес Y не будет выведен только в текущем перемещении

 

 

Изменено пользователем Vladislav-dobrynin
Ссылка на сообщение
Поделиться на других сайтах
55 минут назад, Vladislav-dobrynin сказал:

 

Как я и писал выше необходимо разработать специальную функцию в постпроцессоре

В процедуре PB_CMD_before_motion (перед каждым движением) проверяем условие: если тип обработки 3+2 и выполняется условие: если mom_pos(3) не равно mom_prev_pos(3) или mom_pos(4) не равно mom_prev_pos(4), то блокируем вывод адреса командой MOM_disable_address С А (пишем те адреса поворотных осей какие нужно). Далее в маркере событий всех осевых циклов, перед их выводом: MOM_enable_arddress С A. Далее, перед выводом всех осевых циклов добавляем движение по оси C. 

Это упрощенно конечно, рабочий код данной функции сложнее, но попробуйте так.

Спасибо, буду разбираться, может что-то по tcl можете посоветовать, желательно с большим уклонов на PostBuilder?!

57 минут назад, Vladislav-dobrynin сказал:

А вот по Y вопрос - он всегда 0? на станке нет физической оси? тогда в маркере начала start of program пишем  MOM_disable_address Y

Если Вам по какой то причине необходимо убрать вывод адреса перед циклом, то перед его выводом пишем - MOM_suppress Always Y - адрес Y не будет выведен только в текущем перемещении

В данном Y0 так как он не меняется, но я не могу понять почему он выводиться, X к примеру же нет, хотя он в блоке есть, а так то в других случаях Y выводится правильно.

И еще хотел спросить за не нужные точки, их как то убрать можно?

 

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, _vlad_ng_ сказал:

Спасибо, буду разбираться, может что-то по tcl можете посоветовать, желательно с большим уклонов на PostBuilder?!

Уклона как такового то и нет. Есть специальные готовые команды MOM - они tcl никакого отношения не имеют - как например "MOM_disable_address или MOM_output_literal и т.д" Их описание Вы найдете в MOM Variables Browser в меню PostBuilder Utilities. mom переменные также не являются атрибутами tcl их описание смотреть там же. 

Много книг по tcl можно посоветовать - но на мой взгляд, все они излишни для пользователя PostBuilder

Вот сайт http://tclstudy.narod.ru/tcl/index.html с уроками, я его всем рекомендую

 

1 час назад, _vlad_ng_ сказал:

В данном Y0 так как он не меняется, но я не могу понять почему он выводиться, X к примеру же нет, хотя он в блоке есть, а так то в других случаях Y выводится правильно.

Возможно стоит команда усиленного вывода MOM_foce once Y или что равнозначно - в отдельном блоке на адресе включена настройка Force Output (на адресе отображается белый квадратик)

1 час назад, _vlad_ng_ сказал:

И еще хотел спросить за не нужные точки, их как то убрать можно

У каждого адреса есть формат. Формат это обобщенный атрибут для группы адресов, войдите в соответствующий формат и отредактируйте его

Изменено пользователем Vladislav-dobrynin
Ссылка на сообщение
Поделиться на других сайтах
29 минут назад, Vladislav-dobrynin сказал:

У каждого адреса есть формат. Формат это обобщенный атрибут для группы адресов, войдите в соответствующий формат и отредактируйте его

Это знаю, там все настроено, но мне не нравиться что точка выводиться даже если число целое, к примеру возьмем вывод цикла: CYCLE81(120.,73.,5.,49.268) - по факту точки только путают, а если я уберу вывод точки в формате то когда число будет с дробью, оно будет выводиться слитно без точки (ну или я ока в этом еще не разобрался), может какое то условие прописать но знаний пока маловато...

40 минут назад, Vladislav-dobrynin сказал:

Возможно стоит команда усиленного вывода MOM_foce once Y или что равнозначно - в отдельном блоке на адресе включена настройка Force Output (на адресе отображается белый квадратик)

 

Force Output выключен, скорое всего где-то стоит MOM_foce once Y .

 

Ссылка на сообщение
Поделиться на других сайтах
04.09.2021 в 20:39, _vlad_ng_ сказал:

координаты поворота оси выводятся с дискретизаацией примерно в 2-3 градуса

ещё один которого это :boff:....

теперь нас двое, но это не намёк на :boff: ...

:boff: нужно сименс...

переход идеально сделать через максимум 30гр. А то он может крутануть не в ту сторону. Был случай, когда сто раз отработанная программа сделала брак. Поворот на 180гр. произошёл не по часовой а против.
Можно приколоться и поставить допуск мегаохринительный, такой, что при отрисовке окружности будет отображаться шестигранник :blush:

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Чингачгук сказал:

переход идеально сделать через максимум 30гр. А то он может крутануть не в ту сторону. Был случай, когда сто раз отработанная программа сделала брак. Поворот на 180гр. произошёл не по часовой а против.
Можно приколоться и поставить допуск мегаохринительный, такой, что при отрисовке окружности будет отображаться шестигранник :blush:

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

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

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

Процедуры PB_CMD_combine_rotary_init PB_CMD_combine_rotary_check PB_CMD_combine_rotary_output. Работает вызывая MOM_abort_event.

Какието, возможно не самые свежие версии, есть в папке NX,,,\POSTBUILD\pblib\custom_command

Я дернул версии посвежее из пятиосевого шаблонного поста для Fanuc.

Объединяет движения поворотных осей, если отсутствуют движения по осям XYZ, до значения в 180 градусов.

PB_CMD_combine_rotary_init нужно вставить в начало программы.

PB_CMD_combine_rotary_output вставить в линейное и ускоренное перемещения перед любым выводом чего либо.

Вызов PB_CMD_combine_rotary_check нужно вставить в процедуру PB_CMD_before_motion. Если PB_CMD_before_motion отсутствует, создать пустую с таким именем (к ней обращается событие MOM_before_motion, если она есть).

Описание что куда вставлять есть и в комментах к процедурам.

 

На четырехосевом Generic посте у меня это все заработало сразу, поэтому в логику особо не вникал. Единственно, в PB_CMD_combine_rotary_check уменьшил объединение до +-170 градусов во избежинии таксказать.

Где что менять ищется просто, в процедуре это единственные цифры. )

По эффекту, это просто праздник какойто и писать ничего не надо. )

 

Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, Shershen сказал:

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

Процедуры PB_CMD_combine_rotary_init PB_CMD_combine_rotary_check PB_CMD_combine_rotary_output. Работает вызывая MOM_abort_event.

Какието, возможно не самые свежие версии, есть в папке NX,,,\POSTBUILD\pblib\custom_command

Я дернул версии посвежее из пятиосевого шаблонного поста для Fanuc.

Объединяет движения поворотных осей, если отсутствуют движения по осям XYZ, до значения в 180 градусов.

PB_CMD_combine_rotary_init нужно вставить в начало программы.

PB_CMD_combine_rotary_output вставить в линейное и ускоренное перемещения перед любым выводом чего либо.

Вызов PB_CMD_combine_rotary_check нужно вставить в процедуру PB_CMD_before_motion. Если PB_CMD_before_motion отсутствует, создать пустую с таким именем (к ней обращается событие MOM_before_motion, если она есть).

Описание что куда вставлять есть и в комментах к процедурам.

 

На четырехосевом Generic посте у меня это все заработало сразу, поэтому в логику особо не вникал. Единственно, в PB_CMD_combine_rotary_check уменьшил объединение до +-170 градусов во избежинии таксказать.

Где что менять ищется просто, в процедуре это единственные цифры. )

По эффекту, это просто праздник какойто и писать ничего не надо. )

 

Огромное спасибо, буду пробовать!

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

Кстати, ежли не знаете. Процедуры можно импортировать в пост или экспортировать из поста прям кучей. А править в редакторе поудобнее встроенного. Например в нотепад++. Кнопки импорта-экспорта сверху над общим списком на вкладке Program&toolpath \ Custom command в постбилдере.

Так удобнее.

Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, Shershen сказал:

Кстати, ежли не знаете. Процедуры можно импортировать в пост или экспортировать из поста прям кучей. А править в редакторе поудобнее встроенного. Например в нотепад++. Кнопки импорта-экспорта сверху над общим списком на вкладке Program&toolpath \ Custom command в постбилдере.

Так удобнее.

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

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • gudstartup
      а вы хоть станок проверяли по программе на изделии на точность прежде чем товарищей этих выгнать? если нет то грешите на самих себя! система в наших краях еще не распространенная поэтому и тем тут нет надо в поднебесную писать
    • AlexArt
      Ну допустим, ты и на другом ресурсе это опубликовал. А не коммуниздил. Но вот продвигать воровство от государства, ворующее из Вики, это верх мерзости.
    • maxx2000
      Ах, да. Фильтры выбора добавили. Теперь можно выбрать только то что видно на первом плане, а не вместе с тем что с обратной стороны детали. В общем надо обновляться. Как раз работёнка на прессформу нарисовалась 
    • maxx2000
      Причина того - Кроилово. Кроилово всегда приводит к попадалову. Месяц простоял сколько мильонов деревянных потеряли? Вопрос риторический. И ещё будет стоять. Как памятник человеческой глупости и жадности.
    • AlexKaz
      "9 июля 1968 года на мышах был проведен самый знаменитый эксперимент американского ученого-этолога Джона Кэлхуна «Вселенная-25». Суть опыта заключалась в создании идеальных условий, где мыши могли бы жить и размножаться, не ведая никаких забот, вдали от хищников и в отсутствие эпидемий и заболеваний. Для этих целей ученый построил специальный загон, куда были помещены четыре пары белых мышей (самцов и самок). В распоряжении мышей всегда была чистая вода и еда в изобилии, специальные гнезда, где можно обустроить себе жилище ― гнезд в загоне хватало для проживания нескольких тысяч мышей. Температура в загоне в среднем составляла около 20 ℃ и была комфортной для мышей. Животные не подвергались никаким влияниям извне и жили в идеальных условиях в свое удовольствие. А дальше началось самое интересное. На первом этапе эксперимента мыши хорошо размножались, вели активный образ жизни, охотно играли. На следующей фазе эксперимента мыши стали есть меньше, перестали наедаться до отвала. На третьей фазе эксперимента, когда в загоне были уже сотни мышей, произошло распределение социальных ролей, стала ярко выраженной иерархия, клановость. Появились так называемые отверженные ― молодые особи, которых другие, взрослые мыши сгоняли в центр загона, не давали им вести нормальный образ жизни, причиняли физический вред. В природе такое, наверное, было бы невозможно, ведь эти мыши-агрессоры просто не дожили бы до старости: их бы съели хищники. Но в загоне Кэлхуна хищников не было, и взрослые мыши начали попросту издеваться над молодняком. Образовались две большие группировки: самцы-одиночки и самки-одиночки. При этом самки-одиночки отказывались спариваться <с менее статусными многочисленными молодыми самцами и с оставшимися старыми статусными> и отвергали ухаживания самцов. У мышей стал проявляться тотальный индивидуализм, мыши не стремились создать семью. На последней, четвертой стадии мышиная популяция стала сокращаться. Появились самцы, которых сам Кэлхун назвал «красивыми» (англ. beautiful ones), из-за отсутствия ран и рубцов. <В оригинале: They never engaged in sexual approaches toward females, and they never engaged in fighting, and so they had no wound or scar tissue. Thus their pelage remained in excellent condition. - Дословный перевод: Они никогда не прибегали к сексуальным подходам к самкам, и они никогда не участвовали в боях, и поэтому у них не было ран или рубцовой ткани. Таким образом, их шерсть сохранилась в отличном состоянии.> Эти мыши не вступали в борьбу за самок и территорию, не проявляли активности к размножению и только питались, спали и чистили шёрстку. У мышей стали проявляться различные формы девиантного поведения, вспышки агрессии. Самки стали проявлять агрессию, защищать себя сами, стали умерщвлять своих детенышей, а затем окончательно отказались размножаться. На пике эксперимента в загоне одновременно проживало чуть более двух тыс. мышей. Еды и гнезд было достаточно для дальнейшего роста популяции, но через четыре года после начала эксперимента Кэлхун остановил свой опыт, потому что в загоне осталось чуть более сотни мышей, и все они уже вышли из репродуктивного возраста. По итогам эксперимента Кэлхун пришел к выводу, что достижение определенной плотности населения и заполнение социальных ролей в популяции приводит к распаду общества" https://physicsoflife.pl/dict/pic/calhoun/calhoun.. https://scientificrussia.ru/articles/utopiya-dlya-mys.. https://ru.wikipedia.org/wiki/Кэлхун,_Джон_(этолог)
    • gudstartup
      @Koels вот в чем дело пока ds609 это предупреждение поэтому F может и не появится если sv601 это значит ошибка. возможно при нагреве радиатора серво определяет это как предупреждение или ваш вентилятор крутиться медленнее чем оригинальный и серва думает что он встал хотяпри этом обычно на экране в строке состояния FAN.мигает больше у меня вариантов нет....  
    • ДОБРЯК
      Решите любым алгоритмом. Тогда будет конструктивный разговор. :=)
    • Fedor
      https://en.wikipedia.org/wiki/List_of_numerical_analysis_topics#Eigenvalue_algorithms     :) 
    • Юрий К.Ф.
      Добрый день. Не нашёл тут тему по стойке Китайско Китайской)) Lynuc N3ME. Видать мне так повезло с её наличием)) Приобрели 5-ти осевой Китаец. В б/у состоянии после удара по оси Z. Отремонтировали по механике, заменили батареи на драйверах, выставили лимиты. Всё Ок. Пригласили со стороны людей которые бы разобрались по операторской части. Те два выходных ковырялись, после сказали покажут расскажут, но за огромные деньги. Не сошлись. После месяц станок простоял, когда включили перестал реагировать на регулировку скорости шпинделя. То есть в режиме Jog, включаем обороты, которые стандартно 2140-2149 об/мин. При регулировке процетности не меняются (сама процентность показывает на мониторе). Так же при включении оборотов через команду M03S300 или другое значение, скорость так же показывает 2140-2149 об/мин. Грешить на тех товарищей с которыми не сошлись по деньгам для обучения, как то не хочется. Поковырялся в настройках шпинделя, вроде всё в норме. Проводку на шпинделе прозвонил, целая. В чём причина, не понятна. Кто нибудь сталкивался с подобным, или с подобной стойкой? Может подсказать варианты причины подобного?
    • ДОБРЯК
×
×
  • Создать...