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

Как вставить свой код в постпроцессируемую программу?


Pavel_WR

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

Странно, у меня 5 нулевых разных и все к этому относятся хорошо. Я так пробовал, но почему-то не получилось выводить после этого SM3M8 один раз, ещё раз попробую. Спасибо!

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


Странно, у меня 5 нулевых разных и все к этому относятся хорошо. Я так пробовал, но почему-то не получилось выводить после этого SM3M8 один раз, ещё раз попробую. Спасибо!

Кстати, у меня в вашем посте не получилось так сделать. Честно говоря, пост у вас очень сильно наворочен. Но я себе под Фанук такой писал, завтра на работе пороюсь, если я его не затёр, то выложу.

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

Заранее благодарен!! Я только учусь поэтому много ненужного в посте, а может и не правильного)

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

Чтобы не упасть лицом перед ESPRIT, выкладываю пост, в котором реализовано желание автора темы. Пост создал из стандартной библиотеки, поэтому для безопасного использования его надо дорабатывать


1-й раз прикрепить не получилось 

test_post.zip

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

Чтобы не упасть лицом перед ESPRIT, выкладываю пост, в котором реализовано желание автора темы. Пост создал из стандартной библиотеки, поэтому для безопасного использования его надо дорабатывать

1-й раз прикрепить не получилось 

Не понял, чёта не работает как надо.

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

Заранее благодарен!! Я только учусь поэтому много ненужного в посте, а может и не правильного)

Старый пост не нашёл, поэтому я свой пост переделал под ваши требования, так что проверяйте программы на выходе.

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

Старый пост не нашёл, поэтому я свой пост переделал под ваши требования, так что проверяйте программы на выходе.

attachicon.gifFANUC_G43_DH.rar

Этот вариант вывода корректора всегда я так понимаю, вне зависимости от того используется он в операциях инструмента или нет. Ну пока пусть будет так, попробую хоть остальное реализовать. Большое спасибо! Может найдётся способ когда-нибудь получить искомое.

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

Этот вариант вывода корректора всегда я так понимаю, вне зависимости от того используется он в операциях инструмента или нет. Ну пока пусть будет так, попробую хоть остальное реализовать. Большое спасибо! Может найдётся способ когда-нибудь получить искомое.

А в каких случаях вам не надо выводить D?

Ссылка на сообщение
Поделиться на других сайтах
А в каких случаях вам не надо выводить D?

 

Он в начале писал, ему нужно при смене инструмента, непосредственно в строку смены, плюс в строку с G43, при условии что хоть в одной операции с вызываемым инструментом применяется коррекция на радиус. 

Я уже сказал ему, что в NX этого сделать невозможно, нету к сожалению чтения состояния mom переменных "наперед" на несколько событий, а то и операций. 

Если только через "репроцессирование" задачи подобные решать... но шкура выделки не стоит. 

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

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

Печально если так. 

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

Не понял, чёта не работает как надо.

А по конкретней можно узнать ,что именно не работает?

 

 

Вариант УП с коррекцией :
 
(TEST_KONTUR) 
(FREZA_D6) 
... 
T5 
M6 
...
G00 
G90 X-15. Y25.981 
G43 Z5. H05 S3000 M03 D5
G17 G01 Z-5. F2000. M08 
G41 X-17.5 Y30.311 F120. 
G03 Y-30.311 I17.5 J-30.311 
X-12.5 Y-21.651 I2.5 J4.33 
G02 Y21.651 I12.5 J21.651 
G03 X-17.5 Y30.311 I-2.5 J4.33 
G40 
G01 X-15. Y25.981 
G00 Z5. 
M303 
G91 G28 Z0.0 
G91 G28 X0.0 Y0.0 
M11 
G91 G28 
M10 
M30 
 
Вариант УП без коррекции :
 
...  
(TEST_KONTUR) 
(FREZA_D6) 
...
T5 
M6 
...
G00 
G90 X-15. Y25.981 
G43 Z5. H05 S3000 M03 
G17 G01 Z-5. F2000. M08 
X-16. Y27.713 F120. 
G03 Y-27.713 I16. J-27.713 
X-14. Y-24.249 I1. J1.732 
G02 Y24.249 I14. J24.249 
G03 X-16. Y27.713 I-1. J1.732 
G01 X-15. Y25.981 
G00 Z5. 
M303 
G91 G28 Z0.0 
G91 G28 X0.0 Y0.0 
M11 
G91 G28 
M10 
M30 
Ссылка на сообщение
Поделиться на других сайтах

А по конкретней можно узнать ,что именно не работает?

 

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

assembly1.zip

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

 

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

Можно сделать следующим образом: завести массив и перед выводом в буфер, в текущий элемент этого массива заносить текущую строку (кадр УП), а затем тут-же очищать текущую строку - буфер ничего выводить не будет, и так до события коррекции. Если доходим до события коррекции, то до непосредственного вывода коррекции ищем в массиве элемент с содержанием "M6" и элемент "G43" с наибольшим порядковым номера массива, добавляем к этим двум строкам D и выводим весь массив одним разом. Если же события коррекции нет, то необходимо вывести весь накопленный массив, без изменений, прямо перед следующей сменой инструмента. 

Как-то так.... весьма нестандартное решение, но работать будет. На днях сделаю, самому интересно стало... может и самому понадобиться для каких-нибудь специфических задач.

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

За пол часа набросал, протестируй.

 

Работает это так:

 

На смене инструмента ставлю флаг отказа от буфер вывода.

И тут же проверяю есть ли что-то в массиве вывода, если есть,

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

 

PB_CMD_Dobrynin_Out_Buffer

global block_memori
global n_buffer
global out_buffer
 
if {$n_buffer >= 1} {
    set out_buffer "on"
    for {set n 1} {$n <= $n_buffer} {incr n} {
      MOM_output_literal "$block_memori($n)"
    }
}
 
set n_buffer 0
set out_buffer "off"
 

Плюс эту же процедуру ставлю в самый конец End off programm

 

Далее в буфере вывода, если включен флаг отказа, то

переписываю каждый приходящий кадр в массив вывода,

а сам буфер вывода очищаю:

 

PB_CMD_Dobrynin_INIT_Buffer

global out_buffer
global block_memori
global mom_o_buffer
global n_buffer
 
if {$out_buffer == "off"} {
  set n_buffer [expr $n_buffer+1]
  set block_memori($n_buffer) $mom_o_buffer
  set mom_o_buffer ""
}
 

Следовательно перед каждой сменой инструмента, вывод при помощи буфера будет 

отменен, каждый кадр будет переписываться в некий массив $block_memori($n_buffer)

А выводиться он будет лишь при следующей смене инструмента, а самый последний вывод

массива (т.к. смены уже не будет) будет происходить в самом конце в End off programm

 

Теперь, после каждой смены инструмента имеем в памяти накопленный массив. Если наступает событие 

включения коррекции его необходимо отредактировать. В событии Cutcom On делаем поиск 

в массиве символов М6 и G43, найдя эти кадры дополняем их (HD) и HD соответственно.

 

PB_CMD_Dobrynin_Edit_buffer

 

global mom_cutcom_adjust_register
global mom_tool_adjust_register
global block_memori
global n_buffer
 
set h [format "%.0f" $mom_tool_adjust_register]
set d [format "%.0f" $mom_cutcom_adjust_register]
 
if {$n_buffer >= 1} {
    for {set n 1} {$n <= $n_buffer} {incr n} {
         if {[string match "*G43*" $block_memori($n)] && ![string match "*D*" $block_memori($n)] && ![string match "*H*" $block_memori($n)]} {
              set block_memori($n) "$block_memori($n)H$h\D$d"
          }
         if {[string match "*M6*" $block_memori($n)] && ![string match "*D*" $block_memori($n)] && ![string match "*H*" $block_memori($n)]} {
              set block_memori($n) "$block_memori($n)\(H$h\D$d\)"
          }
    }
 
}

 

Вот и все решение!

new_post.zip

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

Спасибо огромное! Буду разбираться, но для меня пока это тёмный лес)) Но выглядит круто!

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

Когда в инструменте в операциях нет включения коррекции не выводится H в строке с G43, а так вроде всё как надо.

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

Исправил вывод H в случае если вывод происходит без коррекции

new_post.zip

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

Исправил вывод H в случае если вывод происходит без коррекции

Ну что я хочу сказать: Всё работает как нужно, буду тестить, но думаю проблем не будет. Владислав, Вы точно знаете на высоком уровне этот инструмент, спасибо большое, надеюсь на дальнейшую помощь на таком же уровне!!! Ещё пару штрихов и будет огонь) Кстати никто не выводил информацию автоматом для инструмента под CIMCO?

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

 

Там много еще чего...можно...и нужно сделать, пост пустой практически. Осваивайте... 

 

Кстати никто не выводил информацию автоматом для инструмента под CIMCO

 

Я лично редко пользуюсь CIMCO. В NX имеется встроенный модуль внестаночного контроля, очень мощная вещь по сравнению с другими верификаторами.

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • gudstartup
      то есть всяцепь готовности у вас замкнута и напряжение 24 подводиться куда следует
    • wega7777
      Это программа, было бы не плохо если бы вдруг кто поделился, а так вот   B-64174EN_04_111024.pdf
    • Maks Horhe
      Все работает, но станок снижает подачу, не успевает считать. Снижаем требования в программе к точности траектории, подача стремится к номиналу.. Эх..как быть..
    • yunoleg
      вентилятор не причем. отключили на рабочем. он готов к работе без него
    • gudstartup
      и как нибудь запихайте все эти изображения в один архив а то открывать запаришься
    • yunoleg
      привода все готовы к работе.
    • gudstartup
    • ДОБРЯК
      Вы не слышите, то что вам говорят. :=) И поэтому у вас проблемы. И Ансис и СВ и Настран и ИСПА и ... делают численную факторизацию матрицы при определении первых собственных частот незакрепленной конструкции.  Подождите немножко, я подготовил пример на две степени свободы для незакрепленной конструкции и будем его решать. Алгоритму определения первых собственных чисел ему без разница закреплена конструкция или нет. Алгоритму на вход подаются две матрицы. В данном случае матрица масс и матрица жесткости... МКЭ вам даст только две матрицы, на этом МКЭ заканчивается.  Дальше решайте любым алгоритмом. Но для определения первых собственных чисел вам придется сделать численную факторизацию матрицы ЖЕСТКОСТИ. Не матрицы масс, а матрицы ЖЕСТКОСТИ... Я уже это объяснял. :=)
    • Orchestra2603
      Нулевая собственная частота означает нулевое собственное значение матрицы M^-1 * K, а значит нулевок СЗ у К (или бесконечно большое СЗ для M, но такого я не встречал никогда в реальных задачах). Т.е. матрица К - вырожденная. Это равнозначные утверждения про вырожденность матрицы жесткости и нулевую частоту. Почитайте работу по ссылке. Там рассматривается случай вырожденной матрицы M и алгоритм получения вектров. Случай с вырожденной К также приводится к этому случаю простыми манипуляциями.   Работа опубликована в 1972 году! Модальник Ансис, например, работает с вырожденной матрицей жесткостью вполне нормально. Он показывает 6 первых нулевых СЗ (для свободно "парящей" системы) и показывает формы соответствующие перемещениям, как жесткого целого. Все остальные СЗ (в подавляющем большинстве случаев, за исключением случаев некорректной постановки расчета) соотвтетсуют ожидаемым частотам. Не работал в Simulation, но я не буду удивлен, если там это работавет так же. Матлаб и Маткад тоже вполне умеет находить СЗ и СВ для случая с одной вырожденной матрицей. У вас не возникает ощущения, что вы ищете проблему, где ее нет?   Да, где интересуют очень высокие формы, там возникают вопросы, связанные с корректностью выбора функции формы, размеров элемента и т.п.  В моей практике с этим не сталкивался, но, наверное, если кто-то стоячие волны, например, исследует в ультразвуковом диапазоне - там, наверное, действиетолно возникают проблемы. Но это проблема самого МКЭ, а не каких-то алгоритмов или методов отыскания СЗ и СВ.   Так, по-вашем, что такое я  прислал? Это какая-то не такая факторизация?  Я же показал, есть такие методы факторизации. У меня нет оснований полагать, что все вокруг по всему миру идиоты, этого не знают, и только я молодец. У вас есть?  
    • yunoleg
      https://drive.google.com/file/d/1o5b62TuvZQalbDJ9_aG81fc6I_Ojsg7d/view?usp=drive_link, https://drive.google.com/file/d/17bjDQq5UQ9HaZRu9QIGNjD5Iy9rEQ9XB/view?usp=drive_link, https://drive.google.com/file/d/1v5rY8NXGV0dsvizuyDwHdnQE53M0QlRi/view?usp=drive_link, https://drive.google.com/file/d/1xCjwwPhNUiLshQmCz5GVwO6nwrL1teew/view?usp=drive_link, https://drive.google.com/file/d/1biXChIeRXUPkyRq-vUAX7QTYDSAFajwG/view?usp=drive_link, https://drive.google.com/file/d/1hmQcWIwtIMVSaAKob7ET6JHxK9BiN1XO/view?usp=drive_link, https://drive.google.com/file/d/1wyzqJB9iwENMyWHD1EQgyUCw7iED8Blm/view?usp=drive_link, https://drive.google.com/file/d/1WCtff2C-_jPQniOz8QPRVTEZ9lNIaXIZ/view?usp=drive_link, https://drive.google.com/file/d/1PNeqoEomozDWPtBuB7_BMwNQLdkd7F13/view?usp=drive_link, https://drive.google.com/file/d/1zWW6U-gzl9ypvOWv1AQcW18Xb4AVRJXB/view?usp=drive_link, https://drive.google.com/file/d/1mtitt98SGu63Fr_db5HSVfE43-j6utgG/view?usp=drive_link, https://drive.google.com/file/d/1TeWtLQYDtWxOnOphgJ82brZWgapoftxT/view?usp=drive_link, https://drive.google.com/file/d/1zWk7w8BxpU_uwj-LP0H23eoR8nphLeNQ/view?usp=drive_link, https://drive.google.com/file/d/1YCZDInHYxQyLo_xQQgc0sUOcuUNrv1c9/view?usp=drive_link, https://drive.google.com/file/d/16bIqWYg8ryKRFa8LTfSpaIySo1_4VdGs/view?usp=drive_link, https://drive.google.com/file/d/1x2xqlaFCfXRIwoTxvSjxciKuJ04Ao7-0/view?usp=drive_link, https://drive.google.com/file/d/18YxxWmy2zgUzbMai9lD4XTgQeJUbGVrd/view?usp=drive_link, https://drive.google.com/file/d/16ZBXioHIXFtlYMhBQFopycwDPRdDYC_x/view?usp=drive_link, https://drive.google.com/file/d/112_xqezNot4ecDOMbmvtLN_nOnEQR_tR/view?usp=drive_link, https://drive.google.com/file/d/1Qx6eOwQqD9dcxrpeudbXJL8HQTZzQe2l/view?usp=drive_link, https://drive.google.com/file/d/1tUJ14IpIHF49EXBQ85tdrEzrWDQ0zZSK/view?usp=drive_link, https://drive.google.com/file/d/1fJarfkIcPR1B2_pMod10R8iO09HqqpEn/view?usp=drive_link, https://drive.google.com/file/d/1LsWkJXPuwBL3HlhbzehJpCOjZ0Gf6Eaq/view?usp=drive_link, https://drive.google.com/file/d/1Nm2j1JAn3tTXxznxdY9Y6bpD_ZNhjy0_/view?usp=drive_link c воздухом все в порядке. Все концевики проверены. тоже все в норме
×
×
  • Создать...