Jump to content

Редактирование постов SolidCAM


CNC_SKILL

Recommended Posts

25.12.2021 в 18:28, StimUL88 сказал:

установить полученный список инструмента с минимальным Z и временем обработки в шапку программы и как сделать чтоб не было повторений инструмента

Для этого надо записать всю УП через open file и вставить после формирования списка с помощью функции copy file . А чтоб не было повторения инструментов нужно прописать логику чтоб список формировался не по каждому переходу в в дереве программы а периодически обновлял и объединял информацию по одинаковым инструментам.

Link to post
Share on other sites


  • 4 weeks later...
10.03.2017 в 23:29, sudomex2016 сказал:

Ну чтож. К сожалению на этом форуме развернутые ответы дают единицы, я постараюсь дать развернутый ответ чтобы всем было понятно потому что понимаю как это сложно, когда не шариш нихрена, а хочется. Эту всю затею я посвящаю пользователю данного форума Игорю Макаренко, который послал меня править пост ручками мол это было на форуме иди учи и тд. и т.п., когда я у Израильского коллеги попросил постпроцессор в котором была реализована эта функция G05.1 , может не так конечно, но все же.

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

 Для начала создаем доп. параметр в файле станка( показано на картинке)

1. GUI имя - любое

2. Имя GPP (b)любое название, пример bName

3. Тип - LOGICAL

Вот тут остановлюсь поподробнее, почему я выбрал LOGICAL. Так как нужная функция у меня не меняется, ее нужно только включить или выключить поэтому я подумал, что подойдет тип LOGICAL - Истина или лож. Истина - вкл. Лож- выкл. Позже когда я разбирался методом научного тыка я понял что если выбрал тип LOGICAL то имя GPP должно начинаться с буквы b иначе пост не видит эту переменную. В постпроцессоре, в процедуре @init_post можно заметить, что все переменные начинаются с определенной буквы logical - b, string - s, integer - i, numeric - n.

Далее нужно редактировать постпроцессор.

 Находим процедуру @init_post и в любой строчке global logical добавляем переменную в таком виде bName_gpp

  Показать содержимое

@init_post

    global string sUS_date sUS_time sUsrmsg sHomestr sHomestrbegin sHomestrtc sHomestrend sHomestrstpdiff sHomestrstpsame sHomeline
    global string sCamfilepath sSubspath cWo cPb cPe cG84 cG84p cCycs cHomep cTCcodep cTCcodes fG84spin cDr cCb cCe cDrZp cDrZs
    global string cDrCys cDrPts cG84endl cPn cHoffset
    global logical bStartFile bTlchg bSkipxyrapid bWorkoffsettc
    global logical bSubs bTlseperation bTcseperation bDateTimeOutput bStopM00difftool bToolPreselect bToolChangeAtEnd
    global logical bFromendprogram bFrombeginchangetool bFromendchangetool bFromendoffile bMultiplefixtures
    global logical bSafetyprep bSyncdrapid bFeedoutput bNnumtc 
    global logical bOptstpbegin bOptstptc bOptstpend bUseprognum bUseprogname bCoolspinaftertc bCoolAfterHeightComp bVSOFanuc_gpp
    global logical bCoolExist bCoolofftc bSpinofftc bCooloffend bSpinoffend bG84spin bTest bHeightComp bHeightCompOffset
    global logical bHeightCompZsameLine bTCSplit bSpinOnlyUseS bDiameterCompOutputD bCompTypeOutput bPostRevOutput bUseFileName
    global logical bOutputToolList bOutputToolMessage bOutputUserMessages bSimpleformat
    global integer iMplane iAbsincmode iWorkoffset iHeightcomp iStopmode iMotionmode
    global integer iDiametercomp iDrillmode iTcnumber iNumpecks iPworkoffset iSpindleDir
    global integer iSlength_g_file_name iSlength_full_g_file_name iSlengthcampartpath iDiameteroffset iArcmode iG84feed
    global integer iHomingmode iWorkOffsetmode iProgendmode iG187_P_gpp iSplit_ProgName_Num iNumSeparationLines iOperationMessage
    global integer iCoolantM1 iCoolantM2 iCoolantM3 iCoolantM4 iCoolantM5 iCoolantM6 iCoolantM7 iCoolantM8
    global integer iCoolantM1ON iCoolantM2ON iCoolantM3ON iCoolantM4ON iCoolantM5ON iCoolantM6ON iCoolantM7ON iCoolantM8ON
    global integer iCoolantM1OFF iCoolantM2OFF iCoolantM3OFF iCoolantM4OFF iCoolantM5OFF iCoolantM6OFF iCoolantM7OFF iCoolantM8OFF
    global numeric nTcXnext nTcYnext nTcZnext nTcCnext nCorrectedpeck nRapidfeed nG187_E_gpp nHeightCompcode nG84feed
 

 

 Далее нужно создать процедуру, но я взял процедуру @usr_HSM_mode удалил из нее все, так как она мне на Фануке не нужна и привел ее к такому виду:

;--------------------

@usr_HSM_mode
    ; Handle output of HSM code
    if bVSOFanuc eq true then
    {nb, 'G49'}
    {nb, 'G05.1Q1'}
    endif
endp

;--------------------

 

Далее нужно создать процедуру, тут я уже создал новую, назвал ее так, чтоб не запутаться: @usr_hsm_mode_off. 

И привел ее к такому виду:

@usr_hsm_mode_off
    if bVSOFanuc eq true then
    {nb, 'G05.1Q0'}
    endif
endp

 

Далее нужно указать место где вызывать эти процедуры начнем с первой.

Так как нам нужно вставить G49 и G05.1Q1 не вначале программы, а в начале перехода то логично, что нам нужно вызвать процедуру в процедуре @start_of_job, но нет, если вставим там, то нужные коды появятся до вызова инструмента, а нам нужно после. В процедуре @start_of_job есть вызов процедуры @usr_ct_toolchange она и отвечает за вызов инструмента там и вставляем нашу первую процедуру @usr_HSM_mode, я сделал вот так:

@usr_ct_toolchange
    ; Handle G/M code output to make tool change
    if bTCSplit
        {nb,cTCcodep'T'tool_number}
        if bOutputToolMessage
            {' 'cCb,tool_message,cCe}
        endif
        {nb,cTCcodes}
    else
        {nb,cTCcodep'T'tool_number' 'cTCcodes}
        if bOutputToolMessage
            {cCb,tool_message,cCe}
        endif   
    endif
    if bToolPreselect
        if !last_tool
            {nb,'T'next_tool_number}
        else
            if !bToolChangeAtEnd
                {nb,'T'next_tool_number}
            endif
        endif
    endif
    call @usr_HSM_mode
endp

 

Далее нужно добавить нашу созданную процедуру, которая отвечает за G05.1Q0 в процедуру @end_of_job но не все оказалось так просто, если вставить ее просто так, то при обработке двух переходов без смены инструмента между переходами в УП появится G05.1Q0, что нам не нужно. Нужно добавить зависимость, что мол если номер инструмента не такой как в следующем переходе вот тогда и вызываем нашу процедуру. Вот так:

@end_of_job
    ; Handle what happens at end of operation(job)
    ; If using Subs we do not make tool change in @start_of_job
    if bStopM00
        if tool_number eq next_job_tool_number
            call @usr_StopM00_sametool
        else
            call @usr_StopM00_difftool      
        endif
    endif
    if tool_number ne next_job_tool_number
    call @usr_hsm_mode_off
    endif

    bSkipxyrapid = false
    bStopM00difftool = false
    iPworkoffset = iWorkoffset
endp

 

Вот и все. Прошу проверить это все дело кому интересно на работоспособность. Данный способ дает много возможностей, не только с ВСО Fanuc поэтому если данный способ будет работать без ошибок предлагаю создать отдельную тему, для облегчения поиска из поисковых систем. Надеюсь я все очень понятно описал, если у кого будут вопросы я готов помочь.  

5da0fe1671028cdc7197007265eb4fd3.png

 

 

Не могу не восхитится обьемом выполенной вами работы! Применил ваш способ на своем посте и все работает, за исключением одного момента - если одним инструментом сделать переход без включенного G5.1Q1, а после создать второй переход с уже включенным G5.1Q1, то программно этот код не выводится перед вторым переходом, но G5.1Q0 В конце есть. Поэтому я переставил "call @usr_HSM_mode" в другое место в посте, и все работает на ура!

Screenshot_1.png

Screenshot_2.png

  • Нравится 1
Link to post
Share on other sites
  • 2 months later...

Всем доброго дня! Во время редактирования поста под Fanuc 0i 4 оси столкнулся с 2 проблемами:

1-генерируя программы на 2 и более инструмента происходит следующее, в строке безопасности во всех инструментах, кроме первого исчезает привязка G54 и отключение коррекции G40. Я понимаю, что скорее всего где-то стоит условие на исключение повтора или на модальность, но не пойму где

2- команда цикл сверления выводится для каждого отверстия. Скрины программы прилагаются

Будьте добры помогите разобраться с этими проблемами.

Пост и vmid  во вложение. Работаю в SC2020SP5HF1

Безымянный.png

Безымянный1.png

_Fanuc 0imateMD_4x_eval.gpp _Fanuc 0imateMD_4x_eval.vmid

Link to post
Share on other sites
rastochnik100

Здравствуйте. Необходима помощь нужно отредактировать пост. Использую стандартный пост gMilling_Haas_SS_3x отредактированный под себя необходимо немного доработать, т.е в сверильном цикле (G81) прописать подачу мм/об. где прописать G95 перед циклом знаю как поменять

мм/мин на мм/об

должно быть так

    N6G95

    N7G81Z-20I20U1F0.1(мм/об) 

Link to post
Share on other sites
09.04.2022 в 17:13, rastochnik100 сказал:

должно быть так

    N6G95

    N7G81Z-20I20U1F0.1(мм/об) 

Скинте пост в личку исправлю.

Link to post
Share on other sites
  • 1 month later...
andrei_88

Здравствуйте, подскажите пожалуйста как вот эту строку 
G00 G54 G90 X-296. Y-155. 

привести к таком виду
G00 G54 G90

G68 X0 Y0 R1.

G00 X-296. Y-155. 

Link to post
Share on other sites
alex0800

дай мне свою электронную почту я скину тебе примеры программ

рекомендую приобрести русский симулятор фрезерного станка с чпу

значительно помогает в освоении фанука.

у меня есть несколько пособий по этой системе.

если интересует отпишись

alex0800@gmail.com

Link to post
Share on other sites
  • 5 months later...

здравствуйте, товарищи. прошу помощи в консультации по редактированию постпроцессора на стойку heidenhain.

готов в онлайн режиме разобраться и оплатить потраченное время по вашему условию. 

имею стандартный постпроцессор Hermle-C30_iTNC530_5X_TZ.gpp, в котором реализована функция переменных для вывода подач в шапке программы для удобного редактирования.

 

выглядит вот так:

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

4 facemill.jpg

 

проблема возникла, когда начал работать в траекториях "Набор переходов типа паз" где мне переменные не выдавало

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

5 набор переходов.jpg

 

начал разбираться в посте и выявил, что если убрать выражение and left(job_type,8) ne 'tool_box'  со строки где задается условия переменных, то вывод в УП происходит, но переменные он берет с 2,5D траекторий и не хватает переменной Q1 которая отвечает за быстрые перемещения, которое я задаю в графе перемещений solidcam, а в УП в коде координат этот параметр присутствует, но так как в шапке он не задан, то станок читает его как 0 и останавливается. 

 

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

измен переменной паз.jpg

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

10 солидкам окно подач паза.jpg

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

9 паз с переменными но не полными.jpg

 

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

 

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

код задает переменные

2 параметры подачи.jpg

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

1 условия подачи .jpg

 

в мануале по редактированию постпроцессора узнал все значение подач и траекторий, который предлагает база солидкама и выяснил, что у меня проблемы именно с траекторией tool_box

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

feed_rate 
ramp_down_feed
ramp_up_feed
feed_rapid 
z_feed  
z_feed_safety
feed_link
finish_feed

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

pocket
profile
chamfer_3d
thread_3d
drill
slot
trans_surf
3-dmodel
thread
3-ddrill
3-dengraving
5x_advanced
5x_face
5x_engraving
5x_port_mach
5x_swarf
5x_turbine
5x_2_5_axis
5x_3axis
5x_4axis
mw_mesh_3x_rough_parallel
mw_mesh_3x_rough_offset
mw_mesh_3x_rest_rough_offset
hsm_const_stephsm_waterline
hsm_area_clearancehsm_raster_clearance
“hsm_horiz_area
hsm_raster
hsm_boundary
hsm_pencil
hsm_par_pencil
hsm_rest_mach
hsm_rest_roughing
hsm_corner_offset
pocket_3D
profile_3D
tslot
hsm_combine_const_z_horizontal
hsm_combine_const_z_linear
hsm_combine_const_z_const_step
hsm_combine_const_z_corner_offset
tool_box
mw_swarf_4x
mw_converted_3x
mw_converted_4x
mw_impeler_rough_5x
mw_impeller_floor_tc_5x
mw_impeller_floor_no_tc_5x
mw_impeller_blade_5x
mw_drill_5x
mw_drill_4x
mw_cavity_with_gouge_5x
face_milling
hsm_helical
hsm_offset_cutting
hsm_mixed_cons
t_z_const_step
drill_hr
spiral_pocket
spiral_msc
hss_const_z
hss_linear
hss_perp_to_curve
hss_morph_between_curves
hss_parallel_to_curve
hss_morph_between_surf
hss_projection
hss_parallel_to_surf
4x_const_z4x_linear
4x_perp_to_curve
4x_morph_between_curves
4x_parallel_to_curve
4x_morph_between_surf
4x_projection
4x_parallel_to_surf
4x_hatch
5x_const_z
5x_linear
5x_perp_to_curve
5x_morph_between_curves
5x_parallel_to_curve
5x_morph_between_surf
5x_projection
5x_parallel_to_surf
5x_hatch
NaviRoboDeburring
4x_parallel_cuts
5x_parallel_cuts
4x_engraving
4x_cavity
4x_electrode
4x_turbine
machinecontroloperation
inter_oper_movement
probeoperation
3x_chamfer
4x_chamfer
5x_chamfer
3x_contour
4x_contour
5x_contour
3x_const_step
4x_const_step
5x_const_step
5x_swarfing
5x_multi_blade_rough
5x_multi_blade_blade_finish
5x_multi_blade_hub_finish
5x_multi_blade_fille
t_finish
5x_port_rough
5x_port_rest_rough
5x_port_finish_along
5x_port_finish_around
5x_roughhsm_hm_rib
hsm_hm_const_z
fixture_setup
hsm_hm_roughturn
t_imachining
drill
thread
groove
groovecut
turnface
sim_turn
turn_manual
4xsim.turning
balanced_rough
4_axis
constant_angle
macro
variable_angle}

 

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

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

7 добавлени е переменных.jpg

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

8 добовление условий.jpg

 

и это дало результат, который отобразился в УП, но с косяком в виде подтягивания переменных так же с 2,5D траектории

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

11 паз с двумя переменными.jpg

 

если опять ставлю строку and left(job_type,8) ne 'tool_box' на место, то у меня пропадают все переменные, даже те тестовые. 

 

 

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

спасибо.

1 условия подачи .jpg

Edited by seneoovi
Link to post
Share on other sites

Доброго времени суток, подскажите в чем причина в 4оси делаю обработку сверления и фрезеровки одного и того же отверстия. При выводе УП поворот оси "А" в цикле сверления имеет противоположный знак. https://ibb.co/S6GrMYH http:// https://ibb.co/4mkTKqB пост процессор использую стандартный gMill_Haas_4x_eval

Link to post
Share on other sites

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

Link to post
Share on other sites
  • 5 weeks later...

Здравствуйте, как исправить пост стандартный (g_milling_3x) 3 осевой обработки чтобы при выводе УП при взятии корректора по высоте и на диаметр вместо привязанного H и D к номеру инструмента выводилось только мое значение какое укажу в посте. К примеру вместо G43H1 при T1, G41/42 D1 при T1 выводилось G43H#1.G41/42D#2.

Link to post
Share on other sites
4 минуты назад, alex0800 сказал:

вопрос на засыпку а зачем

 

Хочу использовать универсальный параметр для взятия коррекции #4120

Link to post
Share on other sites

Есть те кто может подсказать? Может помочь отредактировать за вознаграждение?

 

Edited by chelfkedah
Link to post
Share on other sites
19 часов назад, chelfkedah сказал:

Есть те кто может подсказать

Реализовать не сложно но не логичней коррекции брать в цикле смены инструмента через параметр #4120 а из поста убрать вывод Н и D.

Link to post
Share on other sites

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

Gpptool.zip

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.




  • Сообщения

    • grOOmi
      Собственно попробовал chatGPT, по итогам выводы простые: 1. 2-3 года и специалистов по CAM можно будет готовить намного меньше. Та самая большая зелёная кнопка появится. 2. Программистам уже надо искать сферы куда пойти. 3. Многие задачи по созданию текстов решаются достаточно профессионально и быстро   Вывод простой человеков надо будет меньше, но скилл их должен быть очень высоким.
    • Sabar173
      Делаю так 1. Выполняю команду "Разорвать связи\связи компонентов и элементов" 2. "Cохранить сборку во внешнем файле\Сохранить узел сборки и все вертуальные дочерние элементы во внешний файл" На этом этапе SolidWorks ругается, что отдельные файлы уже существуют и просит переименовать. Причина простая: Деталей много заимствовано из разных подсборок. Не подскажете как нужно делать, не разрушая структуру подсборок.
    • Slavdos
      интересно . только про саму оснастку на гибку ни слова)
    • The_22nik
      Приветствую! Возникла задача сделать спецификацию по форме 5 (до 3 исполнений). Через макрос такую спецификацию нет возможности сделать? Если кто поделится шаблоном таблицы для такой спецификации буду благодарен.
    • niksasa
      Значит проблема в исходнике. Оптимальный вариант переходить на 2021 инвентор, думаю проблемы исчезнут.
    • Viktor2004
      Не знаю как Вам, а для меня этот форум площадка для общения с единомышленниками. Обмен опытом. Когда сюда заходят новички с вопросами, всегда хочется помочь по быстрому. И когда в ответ читаешь что отвечаю я не в том формате, задаю лишние вопросы, что если мне что-то не нравится, могу проходить лесом, и вообще все мои проблемы в том что я русский, вот тут у меня включается внутренний протест. А какого хрена я ему вообще что-то должен.
    • andrey2147
      Зачем спалили? Будет теперь шифроваться.
    • vad0000
      Только он не дроссельный, а поддерживающий. А так - это обычный предохранительный клапан.
    • Куаныш
      Здравствуйте, Все заработала. Причина - у нас один цилиндр падал вниз постоянно, контроллер сам приподнимал постоянно, оказывается если контроллер много раз приподымает цилиндр то он заблокируется и не реагирует, что бы реагировала на команды, надо перезагружать. А опускания цилиндра самопроизвольно - это дроссельный клапан раскрутился и пропускал масло. Всем спасибо!
    • Pavel92.08
      Нету этих данных 
×
×
  • Create New...