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

Время работы инструмента в списке инструмента через 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 У вас вполне рабочий пример. По крайней мере у меня получилось собрать время обработки со всех операций. Потребовался минимум доработок. Тоже хочу на такое обучение)

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

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

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

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

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

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

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

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

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

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

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

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

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