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

Время работы инструмента в списке инструмента через PB_CMD_create_tool_list


traktorbek

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

Доброго дня, коллеги.

Задача стоит вывести список инструмента в шапку программы с указанием времени работы каждого инструмента. Для вывод воспользовался имеющейся в NX процедурой PB_CMD_create_tool_list. Но время работы инструмента не выводится.

В PB_CMD_init_tool_list есть переменная $tool_time, которая по логике и собирает время работы со всех операций, но не удалось её вывести, т.е. процесс не читает программу вперёд. Если вывести PB_CMD_create_tool_list, то все необходимые данные получим, и машинное время там есть. Но по ТЗ, оно должно быть в шапке...

 

Подскажите, пожалуйста, как поправить процедуру, чтобы она собрала данные о машинном времени и вывела в начале кода УП

 

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


UnPinned posts

@traktorbek

10 часов назад, traktorbek сказал:

В PB_CMD_init_tool_list есть переменная $tool_time

По этому поводу чуть выше написано:

  #*******************************************************************************
  # Fetch tool time data from the post.
  # This info is only available when tool list is created at the end of a program.
  #*******************************************************************************

Выводите в буфер список инструмента вместе со временем в end of a program и перезаписывайте этот буфер в начало файла.

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

Я уже спрашивал мне отвечали, но я все равно не понял как это делается(правда и искал не сильно на этот счет). Если можно, то подробнее для человека не особо понимающего программирование.

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

перезаписывайте этот буфер в начало файла.

 

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

Если можно, то подробнее для человека не особо понимающего программирование.

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

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

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

прям хочется вставить мем "Ничего не понятно, но очень интересно"))) 

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

Во время обучения делали процедуры, которые позволяли собирать список операций в начале УП. Один и тот же код на фанук посте работает, при работе с постом хайденхайн выдаёт ошибки.

 

#==============================================================
proc USER_COLLECT_DATA {} {
#==============================================================
	PB_CMD_StoreMomVars
	
	MOM_cycle_objects {SETUP {PROGRAMVIEW{MEMBERS}}}
	
	PB_CMD_RestoreMomVars
	
	global user_operation_list
	
	foreach i $user_operation_list {
		MOM_output_literal "(OPERATION : $i)"
	}
	
}

# =====================================================
proc PB_CMD_StoreMomVars {} {
# =====================================================
  global BNL_mom_list
  set BNL_mom_list [lsort [info globals "mom_*"]]
  
  foreach var $BNL_mom_list {
    global $var BNL_STORED_$var
    if {[array exist $var]} {
      array set BNL_STORED_$var [array get $var]
    } else {
      set BNL_STORED_$var [set $var]
    }
  }
}

# =====================================================
proc PB_CMD_RestoreMomVars {} {
# =====================================================
  global BNL_mom_list

  if {![info exists BNL_mom_list]} return
  
  foreach var $BNL_mom_list {
    global $var BNL_STORED_$var
    if {[array exist BNL_STORED_$var]} {
      array set $var [array get BNL_STORED_$var]
      array unset BNL_STORED_$var
    } else {
      set $var [set BNL_STORED_$var]
      unset BNL_STORED_$var
    }
  }
  unset BNL_mom_list
}

# =====================================================
proc MOM_OPER_BODY {} {
# =====================================================

global mom_operation_name
global user_operation_list
global mom_toolpath_time
global user_total_time
global mom_mcsname_attach_opr

lappend user_operation_list $mom_operation_name

#MOM_output_to_listing_device "mom_toolpath_time : [expr floor($mom_toolpath_time)] | $mom_toolpath_time"


}

 

вероятно, таким же подходом можно собрать и данные о времени работы инструмента, но пока не победил этот код

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

вероятно, таким же подходом можно собрать и данные о времени работы инструмента, но пока не победил этот код

Занятно. Надо будет глянуть.

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

@traktorbek У вас вполне рабочий пример. По крайней мере у меня получилось собрать время обработки со всех операций. Потребовался минимум доработок. Тоже хочу на такое обучение)

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

@traktorbek У вас вполне рабочий пример. По крайней мере у меня получилось собрать время обработки со всех операций. Потребовался минимум доработок. Тоже хочу на такое обучение)

можете поделиться результатом?

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

можете поделиться результатом?

Я не заморачивался. Просто убедился что это работает.

В start of program

Скрытый текст

    uplevel #0 {

        # =====================================================
        proc MOM_OPER_BODY {} {
        # =====================================================

        global mom_operation_name
        global user_operation_list
        global mom_toolpath_time
        global user_total_time
        global mom_mcsname_attach_opr

        set mom_toolpath_time [format "%.3f" $mom_toolpath_time]
        set min [format "%.0f" [expr floor($mom_toolpath_time) ] ]
        set sec [format "%.0f" [expr ($mom_toolpath_time-$min)*60] ]
        lappend user_operation_list "${mom_operation_name}_${min}m:${sec}s"

        }

    }

    MOM_cycle_objects {SETUP {PROGRAMVIEW{MEMBERS}}}

    global user_operation_list
    foreach i $user_operation_list {
        MOM_output_literal "(OPERATION : $i)"
    }

 

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

Я не заморачивался. Просто убедился что это работает.

В start of program

  Скрыть содержимое

    uplevel #0 {

        # =====================================================
        proc MOM_OPER_BODY {} {
        # =====================================================

        global mom_operation_name
        global user_operation_list
        global mom_toolpath_time
        global user_total_time
        global mom_mcsname_attach_opr

        set mom_toolpath_time [format "%.3f" $mom_toolpath_time]
        set min [format "%.0f" [expr floor($mom_toolpath_time) ] ]
        set sec [format "%.0f" [expr ($mom_toolpath_time-$min)*60] ]
        lappend user_operation_list "${mom_operation_name}_${min}m:${sec}s"

        }

    }

    MOM_cycle_objects {SETUP {PROGRAMVIEW{MEMBERS}}}

    global user_operation_list
    foreach i $user_operation_list {
        MOM_output_literal "(OPERATION : $i)"
    }

 

 

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

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

Попробовал запустить это в одной программе с базовой процедурой create_tool_list - не работает.

Так это и не было готовым решением. Я просто убедился что так действительно можно получить время обработки. Со списком инструмента это никак не связано. 

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

Так это и не было готовым решением. Я просто убедился что так действительно можно получить время обработки. Со списком инструмента это никак не связано. 

не в этом дело.

Отдельно ваш код я проверил, работает.

 

Я в принципе про эту конструкцию. Не ожидал, что она может конфликтовать с tool_list, даже если он не вызывается, а просто есть в кастом команд

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

@traktorbekInit tool list не вызывается ли?

если есть в посте init_tool_list, то приведённый ранее код просто крашит постпроцессирование

 

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

@traktorbekМожет потому что в  init идет переопределение своей MOM_OPER_BODY? 

Нет такого? 

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

@traktorbekМожет потому что в  init идет переопределение своей MOM_OPER_BODY? 

Нет такого? 

всё может быть. Перебивается переменная current_program_name и всё под откос.

 

Нет примера, как из хвоста программы перенести данные в начало?

 

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

А как вообще правильно тестировать какую либо процедуру? Ну или перефразирую, а как вы тестируете работу какой либо процеДуры?

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

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

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

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

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

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

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

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

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

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

    • mr_Voden
  • Сообщения

    • FreierMann
      Добрый день. Чтобы не плодить лишние темы, решил задать здесь аналогичный вопрос. Имеется обрабатывающий центр UCP 600 Vario Micron со стойкой Heidenhain iTNC 530. Станок по механике в плачевном состоянии. Очень сильные вибрации по осям X, Y. Есть ли возможность со стойки изменить коэффициент усиления по этим осям? Со стойкой почти не знаком. Понимаю, что надо механику ремонтировать, но придется бороться со следствием.  
    • Guhl
      Я это понимаю. Пока даже нормальный мануал не нашел  
    • Killerchik
      Скажем так - параметров её включения там не один и не два, и параметров её настройки тоже не один и не два. И для интерполяции надо будет серво параметры вбивать. Короче это не опция типа "автоматическое измерение длины концевых фрез", которой включил один RB бит и она заработала :(
    • Дмитрий2000
      Добрый день, на сегодняшний день существует проблема с станком. Сразу после загрузки системы она уходила автоматом перезагружалась. Из-за этого было подозрение, что умирает HDD, было принято решение его снять и проверить. Проверка показала, что он рабочий, но сразу после проверки система перестала видеть HDD. Отдельно на компе он всё так же определяется. Есть подозрение, что что-то с платой EXM-HD которая является переходником с IDE на EXM потому что опять же есть подозрение что ее пробовали запустить с PCI слота материнской платы компьютера. Производитель этой платы писал про электрическую совместимость EXM c ISA, но просмотрев их распиновку я могу точно сказать, что совместимостью там и не пахнет. Есть ли у кого опыт ремонтных работ с модулями EXM?
    • Hikoo_1918
      Как это обычно и происходит- когда попросил помощи, сразу же находишь самостоятельно решение этой проблемы. Для тех у кого возникнет такая же проблема, что нужно делать: 1) меняем положение линии масштаба за левый розовый маркер ( https://disk.yandex.ru/i/qHGl2FM9IVQEXw) 2) Розовый маркер слева должен стать голобуго цвета ( https://disk.yandex.ru/i/qHGl2FM9IVQEXw ) 3) Далее перемещаем правый маркер и после его перемещения вновь станет доступно диалоговое окно изменения размера (https://disk.yandex.ru/i/qjN0ve0znz0evA) Интересно, для чего они изменили это в 2024 версии - не ясно... 1) UPD (https://disk.yandex.ru/i/VG-oCAzgZ-1a0Q)
    • Guhl
      Я видел в списке опций плк 4ю ось. Если ее активировать, тотна экране она появится? Или там надо имя ее вводить и тп?
    • gudstartup
      @ope@gusarm.ru если еще хотите отключить то укажите модель чпу и выложите параметры потому как для разных метода отличается 
    • Killerchik
      @Guhl  Да написали бы в Мазак.... С вероятностью более 50% они ответят на такой простой вопрос без проблем. Вот неплохая сводная страничка https://www.mazakcanada.com/machines/technology/cnc-controls/#tab-5 Открывайте через ТОР или хороший прокси, у меня иначе выпадающий список не октрывается. Я не помню в списке опций ничего про 4ю ось, но могу конечно запамятовать. Пятиосевая - да, там много для неё. На нашем простеньком Мазатрол Смарт 4я ось включается как опция ПЛК.
    • Hikoo_1918
      Всем привет. SW 2024  Проблема с инструментом масштабирования. В SW 2023 при перемещении линии масштабирования сразу вы всплывало окно изменения размера (https://disk.yandex.ru/i/mvmqGEaRC6PcfA - скрин из интернета взят) Сейчас же, обновив солид до более новой версии при попытке произвести те же самые манипуляции, установив линию масштабирования куда нужно- диалоговое акно с изменением размера не всплывает. А когда курсор ставишь на эту линию всплывает подсказка : "перетащите это местоположение для масштабирования. для определения длины линии масштабирования отпустите..".. Пробовал и переустанавливать SW, и устанавливать более новые SP - результат один и тот же. Может быть кто-то уже поборол эту проблему?)  
    • 5axisCNC
      А как вообще правильно тестировать какую либо процедуру? Ну или перефразирую, а как вы тестируете работу какой либо процеДуры?
×
×
  • Создать...