V-Star ( http://www.forest-line.com )  

 История этого постпроцессора началась здесь NCSoft: SGPost

Сам постпроцессор состоит из нескольких частей:  vstar.zip  
Некоторые подпрограммы со станка: Vstar_with_mach.zip   FRONT_ROOF.SPF
  PARKING.SPF
  REAR_ROOF.SPF
  Spec_Ugv.spf
  TIME_OFF.SPF
  TIME_ON.SPF
  Tool_Break_Check.spf
  TOOL_CHANGE.SPF
  Trans_Cor.spf
Оптимизация,
 смена инструмента,
 подсчет времени выполнения,
 проверка на корректность инструмента,
 .....
---------
 

Расширение для Лазерной головки.

Изнасилование постпроцессора под лазерную головку происходило без меня и касалось ниже описанных элементов, которые мне пришлось исправить:
  Введен адрес M_laser
  Формат вывода адреса N
расширен до 6 знаков.   - это видно из-за того, что размер ЧПУ-шнух программ сильно вырос
  MOM_first_move 
fix создана PB_CMD_first_move
  MOM_coolant_on  - ONCE убрано
  MOM_cutcom_off
- убран блок  cutcom_off (вообще странная позиция. убирают все , что касается коррекции)
  MOM_rapid_move
 
MOM_set_modes  - fix создана PB_CMD_set_modes
  Убрал белеберду про время.
  ROTARY_AXIS_RETRACT - слегка изменил.

 MOM_before_motion - слегка изменил.
if {$mom_arc_mode=="LINEAR"} {
  set mom_arc_mode "CIRCULAR"
  MOM_set_modes
  MOM_reload_kinematics
}

    - интересная лабуда, это видно связано с тем, что технологи второпях, при создании UDE не смотрят, что по мимо установки режима станка, там есть еще режимы для кругового движения, подачи :):):). А ведь можно просто сделать так: отредактировать UDE.

#------------------------------------------------------------
EVENT set_modes
{
UI_LABEL "Set Modes"
# CATEGORY MILL DRILL LATHE
PARAM command_status
{
TYPE o
DEFVAL "Active"
OPTIONS "Active","Inactive","User Defined"
UI_LABEL "Status"
#
# Need Toggle on Option Menu .
# In V13.0 , these are off by default on all the following items.
#
}
PARAM machine_mode
{
TYPE o
DEFVAL "Mill"
OPTIONS "Mill","Turn","Punch","Laser","Torch","Wire","Inactive"
UI_LABEL "Machine Mode"
}

PARAM feed_set_mode
{
TYPE o
DEFVAL "MMPM"
OPTIONS "Off","IPM","MMPM","IPR","MMPR","Inverse","Inactive"
UI_LABEL "Feedrate Mode"
}
PARAM output_mode
{
TYPE o
DEFVAL "Absolute"
OPTIONS "Absolute","Increment","Inactive"
UI_LABEL "Output Mode"
}
PARAM arc_mode
{
TYPE o
DEFVAL "Circular"
OPTIONS "Linear","Circular","Inactive"
UI_LABEL "Arc Mode"
}
PARAM parallel_to_axis
{
TYPE o
DEFVAL "Zaxis"
OPTIONS "Zaxis","Waxis","Vaxis","Inactive"
UI_LABEL "Parallel Axis"
}
PARAM modes_text
{
TYPE s
TOGGLE Off
UI_LABEL "Text"
}
}
#---------------------------------------------------------------
EVENT set_modes
{
UI_LABEL "Set Modes"
# CATEGORY MILL DRILL LATHE
PARAM command_status
{
TYPE o
DEFVAL "Active"
OPTIONS "Active","Inactive","User Defined"
UI_LABEL "Status"
#
# Need Toggle on Option Menu .
# In V13.0 , these are off by default on all the following items.
#
}
PARAM machine_mode
{
TYPE o
DEFVAL "Inactive"
OPTIONS "Mill","Turn","Punch","Laser","Torch","Wire","Inactive"
UI_LABEL "Machine Mode"
}

PARAM feed_set_mode
{
TYPE o
DEFVAL "Inactive"
OPTIONS "Off","IPM","MMPM","IPR","MMPR","Inverse","Inactive"
UI_LABEL "Feedrate Mode"
}
PARAM output_mode
{
TYPE o
DEFVAL "Inactive"
OPTIONS "Absolute","Increment","Inactive"
UI_LABEL "Output Mode"
}
PARAM arc_mode
{
TYPE o
DEFVAL "Inactive"
OPTIONS "Linear","Circular","Inactive"
UI_LABEL "Arc Mode"
}
PARAM parallel_to_axis
{
TYPE o
DEFVAL "Inactive"
OPTIONS "Zaxis","Waxis","Vaxis","Inactive"
UI_LABEL "Parallel Axis"
}
PARAM modes_text
{
TYPE s
TOGGLE Off
UI_LABEL "Text"
}
}

Расширение для угловой головки.

  Однажды в цехе решили использовать угловую головку, для использования постпроцессора под неё, необходимо было переопределить кинематику.

set mom_kin_4th_axis_ang_offset "0.0"
set mom_kin_4th_axis_center_offset(0) "-33.0" ;# длина угловой головки от поворота до места крепления инструмента
set mom_kin_4th_axis_center_offset(1) "0.0"
set mom_kin_4th_axis_center_offset(2) "-480.0" ;# (-300)+(-180)-длина от точки поворота до торца шпинделя плюс длина угловой головки от торца шпинделя до поворота
set mom_kin_4th_axis_zero "-270.0"
set mom_kin_5th_axis_ang_offset "0.0"
set mom_kin_5th_axis_center_offset(0) "0.0"
set mom_kin_5th_axis_center_offset(1) "0.0"
set mom_kin_5th_axis_center_offset(2) "0.0"

set mom_kin_pivot_dist_vec(0) "480.0"
set mom_kin_pivot_dist_vec(2) "33.0"
set mom_kin_pivot_guage_offset ""

Но насадок для этой головки было несколько, поэтому расчет для каждой должен был произведен примерно по такой схеме:

set mom_kin_4th_axis_center_offset(0)    -P
set mom_kin_4th_axis_center_offset(2)    -L - 300.043
set mom_kin_pivot_dist_vec(0)                 L + 300.043
set mom_kin_pivot_dist_vec(2)                 P
Е.И - создала новый постпроцессор (сделав копию рабочего). Я молчу. То, что делает начальник, подчиненные не обсуждают.

Дальше стал проблема, каким образом Технолог будет вводить значения L, P - при выборе головки.
Моя начальница вместе с Е.И. пошла к программисту - электронщику (у нас в стране есть и такие). И..... под их чутким руководством на свет появилась программа на Delphi, по выбору параметров для угловой головки. Запускалась она в постпроцессоре через exec, записывала параметры в C:\\temp\\MP_angle_head.tmp, после скрипт на TCL - читал этот файл.

  Я молчу. Моего мнения - никто не спрашивает.
  Сижу.... жду.... я знаю, что будет происходить... :((

 Результаты не заставили себя ждать, то один Технолог, то второй, стали жаловаться на то, что при запуске постпроцессора для угловой головки - происходило "мертвое" зависание Unigraphics.
 Я молчу. Я ведь знаю, что вызов exec в постпроцессоре может приводить к таким результатам.

Ладно.  Не доверяя этому человеку переписал с нуля его программу, добавил *.ini файл, для того, чтобы менять настройки угловой головки и программы, из него не влазия каждый раз в код.
 Программа: .vstar_MP_angl_head.zip

 Ситуация повторилась еще раз.
 Еще раз.
 Я ругнулся.
 Никакой реакции граждан, участвующих в создании, не было.
 

 Зачем создавать такую программу? И такой вызов в Постпроцессоре?

Ведь можно было сделать проще..
 
Создаем программу (dll) на UGOPEN,
    технолог запускает, вносит (выбирает нужные значения), выбирает нужные операции (программы),
    нажимает APPLY, OK
  программа создает в них (операциях\инструменте) атрибуты ( примерно, UGLOV_L=L  UGLOV_P=P ).
  И ВСЕ!!! При запуске постпроцессора, МОМ - автоматически создаст мом - переменные с данными атрибутами.
 данную программу можно объединить и дополнительно вносить параметры X-OFFSET, ORIGIN.

 Атрибуты и МОМ-переменные создаются согласно давно известной таблице:

Переменная МОМ

Событие

Класс

Описание

mom_attr_PROGRAMVIEW_<имя>

MOM_start_of_group
MOM_end_of group

Общие/задаваемые пользователем

Атрибуты программы задаваемые пользователем.

mom_attr_TOOL_<имя>

MOM_machine_mode

Общие/задаваемые пользователем

Атрибуты инструмента задаваемые пользователем.

mom_attr_OPER_<имя>

MOM_machine_mode

Общие/задаваемые пользователем

Атрибуты операции задаваемые пользователем.

mom_<имя>

MOM_start_of_program

Общие/задаваемые пользователем

Атрибуты детали задаваемые пользователем

В таблице выше <имя> соответствует определяемым пользователем имени атрибута.
 

 
Делать нечего. Надо исправлять ситуацию.

 Поэтому я сделал, МОМ - расширение, вызываемое в постпроцессоре. И сократил ПП. Старый вызов оставил как запасной вариант.
 После запуска ПП, появлялось диалоговое окно:


Технолог выбирал параметры. OK. В MOM - интерпретаторе создавались переменные mom_param_l, mom_param_p. Ну, а дальше, все просто.
 set user_dll_file "${path}\\pivot_offsets${user_dll}.dll"
 global mom_load_dir_dlg ; эта переменную мы создаем для загрузки dlg (формы диалога)
 set mom_load_dir_dlg "${path}\\pivot_offsets.dlg" 
 if {[file exists $user_dll_file]} {
   global mom_param_l
   global mom_param_p
   set mom_param_l 0
   set mom_param_p 0

   catch { MOM_run_user_function "${user_dll_file}" ufusr } errMes ;

   set angle_head_L_param [ expr double($mom_param_l) ]
   set angle_head_P_param [ expr double($mom_param_p) ] 
 }

Исходники: pp_pivot_offsets.zip

Весь основной код умещается в строчки:

/*Полный путь до файла диалога*/
UF_MOM_ask_string ( mom,"load_dir_dlg",&valuepath);
pathfile[0]='\0'; sprintf(pathfile,"%s",valuepath); printf("\n mom_load_dir_dlg=%s ",pathfile);
/****************************************************************************/
if ( ( errorCode = UF_STYLER_create_dialog (
pathfile,
CS_cbs, /* Callbacks from dialog */
CS_CB_COUNT, /* number of callbacks*/
NULL, /* This is your client data */
&response ) ) != 0 )
{
   UF_print_syslog(" ufusr_main DLL - Ошибка загрузки шаблона диалога\n -Ошибка памяти- \n",FALSE);
}
/****************************************************************************/
/*******Запись переменных в mom*********************************/
UF_MOM_set_double ( mom,"param_l",param_l );
UF_MOM_set_double ( mom,"param_p",param_p );
.....

На начало 2012 года - помимо рабочего, было еще 5! - версий для разного рода отладок.

 


Copyright © 2001—2009 че