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

Время работы инструмента в списке инструмента через 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"


}

 

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

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

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

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

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

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

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

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

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

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

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

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

    • traktorbek
      Во время обучения делали процедуры, которые позволяли собирать список операций в начале УП. Один и тот же код на фанук посте работает, при работе с постом хайденхайн выдаёт ошибки.   #============================================================== 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" }   вероятно, таким же подходом можно собрать и данные о времени работы инструмента, но пока не победил этот код
    • gudstartup
      @olegdjanнадо искать такой же станок и сливать с него бэкап . если у вас за год не сделали архив тогда обратитесь в фирму которая проводила пусконаладку пусконаладочный архив всегда нужно создавать и хранить на всякий такой как у вас случай
    • 5axisCNC
      Обработка поднутрений в старых версиях в Cavity mill NX это да там частые проблемы. Поэтому если это возможно лучше использовать planar либо перейти на более свежий NX там есть спец операция для поднутрений с ней я не испытывал проблем.
    • Guhl
      Это если они есть. Или вы их изготавливаете каждый раз? 
    • Anat2015
      Как говорил Горбачев: "И это правильно" Головная боль уменьшается наполовину.
    • Michaelss
      Контакты тут в портфолио, на первой и последней страничке. Спасибо Вам за ответ.  
    • olegdjan
      Есть возможность скинуть ссылку на пусконаладочный архив на стойку c Sinumerik 828d
    • propiston
      Мне почему-то нельзя писать личные сообщения, пришлите пожалуйста мне вашу почту, и я отвечу на вопросы.
    • tm-ares
      Мало информации. Есть предположение, что у вас в качестве заготовки используется фасетное тело. В операции CAVITY_MILL для обработки поднутрений можно использовать только солиды/твёрдые тела. Причём, смещение от детали, ограничивающие блок и цилиндр, контур детали, выпуклая оболочка детали - это тоже фасетные тела. По поводу доступа к памяти. Это распространённая ошибка самого NX, вылезает достаточно часто, особенно в САМ-модуле. Может проявится где угодно. Универсального лекарства не обнаружено.
    • Viktor2004
      Я все сторонние устройства подключаю только через "сухие" контакты. Никаких перехлестов блоков питания ни минусов ни плюсов Иначе если даже все заработает, потом можно замучиться искать неисправность
×
×
  • Создать...