Frezer_PU

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

160 сообщений в этой теме

Здравствуйте коллеги. Хочу добавить высокоскоростную обработку (G05.1Q1) в свой пост. Поиск по форуму не дал результатов. Просто тупо новый блок в начале и в конце программы не подходит, так как известно, что G05.1 в циклах сверление нельзя использовать, и убирать потом из циклов сверления этот код так же тупо, как и писать его вручную. Поэтому нужно сделать так, чтобы исключить этот код в циклах сверления. Я прикинул несколько вариантов, хочу спросить у вас возможно ли это:

1. Добавить зависимость: Добавлять G5.1 если "цикл сверления" то не добавлять. (    if job_type not @drill then 
    {nb, 'G5.1Q1 '}    ) Так не получается, может неправильно что то делаю.

Вариант второй

Использовать процедуру @usr_HSM_mode

5147363127484297ff1950e223790540.png

Смог добиться добавления G05.1Q1 при изменение доп параметров в переходе, но реализовать выключение G05.1Q0 через эту процедуру даже не знаю как сделать. 

Буду рад любым подсказкам. Спасибо!

Поделиться сообщением


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

 

@drill
    ; Handle output for drill cycles
    local logical skipZpos
    skipZpos = false
    if job_type eq '3-d drill' and prev_command eq '@drill_point'
        skipZpos = true
    endif
    if !skipZpos
        {nb,cDrZp'Z'zpos' 'cDrZs}
    endif
    if drill_type eq G81
        iDrillmode = 81
            

     {nb, 'G5.1Q1 '}     

 

    {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' F'feed ' 'cDrCys}
    endif
    if drill_type eq G82
        iDrillmode = 82
        {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' P'P_Dwell' F'feed' 'cDrCys}
    endif
    if drill_type eq G83
        iDrillmode = 83
        if P_Dwell eq 0
            change(P_Dwell) = false
        endif
        if I_FirstPeck eq 0
            {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' Q'Q_Peck,[' P'P_Dwell],' F'feed' 'cDrCys}
        else
            {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' I'I_FirstPeck' J'J_ReduceAmount' K'K_MinimumDepth,[' P'P_Dwell],' F'feed' 'cDrCys}
        endif
    endif
    if drill_type eq G73
        iDrillmode = 73
        if P_Dwell eq 0
            change(P_Dwell) = false
        endif
        if I_FirstPeck eq 0
            {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' Q'Q_Peck' K'K_MinimumDepth,[' P'P_Dwell],' F'feed' 'cDrCys}
        else
            {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' I'I_FirstPeck' J'J_ReduceAmount' K'K_MinimumDepth,[' P'P_Dwell],' F'feed' 'cDrCys}
        endif
    endif
    if drill_type eq G84
        iDrillmode = 84
        if cG84p ne ''
           {nb,cG84p}
        endif
        if bG84spin
            change(spin) = true
        else
            change(spin) = false
        endif
        if iG84feed eq 1
            nG84feed = tool_drill_lead*spin
        endif
        if iG84feed eq 2
            nG84feed = tool_drill_lead
        endif
        {nb, cDr,cG84 ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z,[' S'spin:fG84spin],' F'nG84feed ' 'cDrCys}
    endif
    if drill_type eq G84_Peck
        iDrillmode = 84
        if cG84p ne ''
           {nb,cG84p}
        endif
        if bG84spin
            change(spin) = true
        else
            change(spin) = false
        endif
        if iG84feed eq 1
            nG84feed = tool_drill_lead*spin
        endif
        if iG84feed eq 2
            nG84feed = tool_drill_lead
        endif
        {nb, cDr,cG84 ' Z'drill_lower_z' R'drill_upper_z' 'cCycs,['S'spin:fG84spin' '],'F'nG84feed ' 'cDrCys}
    endif
    if drill_type eq G85
        if P_Dwell eq 0
            iDrillmode = 85
            {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' F'feed ' 'cDrCys}
        else
            iDrillmode = 89
            {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' P'P_Dwell' F'feed' 'cDrCys}
        endif
    endif
    if drill_type eq G86
        iDrillmode = 86
        {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' F'feed ' 'cDrCys}
    endif
    if drill_type eq G87
        if P_Dwell eq 0
            iDrillmode = 87
            {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' F'feed ' 'cDrCys}
        else
            iDrillmode = 88
            {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' P'P_Dwell' F'feed' 'cDrCys}
        endif
    endif
endp

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

@drill_point
    ; Handle output for drill positions
    local integer i
    if drill_type eq G84_Peck
        iNumpecks = (drill_depth/Q_Peck)+1.
        nCorrectedpeck = drill_depth/iNumpecks
        i = 1
        while i <= iNumpecks
            {nb,'X'xpos ' ', 'Y'ypos ' ', 'Z'(drill_upper_z-(nCorrectedpeck*i))' 'cDrPts}
            i = i + 1
        endw
    else
        if !first_drill then
            {nb,['X'xpos ' '], ['Y'ypos ' '], ['Z'zpos ' ']cDrPts}
        endif
    endif
endp


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

@end_drill
    ; Handle output to cancel drill cycles 
    iDrillmode = 80
    if change(iDrillmode)
        {nb, 'G'iDrillmode' '}
    endif
    if (cG84endl ne '') and (drill_type eq G84_Peck or drill_type eq G84)
        {nb,cG84endl}
    endif

 

    {nb, 'G5.1Q1 '}  

 

endp

 

 

 

так же можно добавить условие при использовании G05 ставить G5.1q1 

через файл настройки станка добавьте свою переменную и используйте её в своём условии..

Изменено пользователем LessNICKoff

Поделиться сообщением


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

 

@drill
    ; Handle output for drill cycles
    local logical skipZpos
    skipZpos = false
    if job_type eq '3-d drill' and prev_command eq '@drill_point'
        skipZpos = true
    endif
    if !skipZpos
        {nb,cDrZp'Z'zpos' 'cDrZs}
    endif
    if drill_type eq G81
        iDrillmode = 81
            

     {nb, 'G5.1Q1 '}     

 

    {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' F'feed ' 'cDrCys}
    endif
    if drill_type eq G82
        iDrillmode = 82
        {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' P'P_Dwell' F'feed' 'cDrCys}
    endif
    if drill_type eq G83
        iDrillmode = 83
        if P_Dwell eq 0
            change(P_Dwell) = false
        endif
        if I_FirstPeck eq 0
            {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' Q'Q_Peck,[' P'P_Dwell],' F'feed' 'cDrCys}
        else
            {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' I'I_FirstPeck' J'J_ReduceAmount' K'K_MinimumDepth,[' P'P_Dwell],' F'feed' 'cDrCys}
        endif
    endif
    if drill_type eq G73
        iDrillmode = 73
        if P_Dwell eq 0
            change(P_Dwell) = false
        endif
        if I_FirstPeck eq 0
            {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' Q'Q_Peck' K'K_MinimumDepth,[' P'P_Dwell],' F'feed' 'cDrCys}
        else
            {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' I'I_FirstPeck' J'J_ReduceAmount' K'K_MinimumDepth,[' P'P_Dwell],' F'feed' 'cDrCys}
        endif
    endif
    if drill_type eq G84
        iDrillmode = 84
        if cG84p ne ''
           {nb,cG84p}
        endif
        if bG84spin
            change(spin) = true
        else
            change(spin) = false
        endif
        if iG84feed eq 1
            nG84feed = tool_drill_lead*spin
        endif
        if iG84feed eq 2
            nG84feed = tool_drill_lead
        endif
        {nb, cDr,cG84 ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z,[' S'spin:fG84spin],' F'nG84feed ' 'cDrCys}
    endif
    if drill_type eq G84_Peck
        iDrillmode = 84
        if cG84p ne ''
           {nb,cG84p}
        endif
        if bG84spin
            change(spin) = true
        else
            change(spin) = false
        endif
        if iG84feed eq 1
            nG84feed = tool_drill_lead*spin
        endif
        if iG84feed eq 2
            nG84feed = tool_drill_lead
        endif
        {nb, cDr,cG84 ' Z'drill_lower_z' R'drill_upper_z' 'cCycs,['S'spin:fG84spin' '],'F'nG84feed ' 'cDrCys}
    endif
    if drill_type eq G85
        if P_Dwell eq 0
            iDrillmode = 85
            {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' F'feed ' 'cDrCys}
        else
            iDrillmode = 89
            {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' P'P_Dwell' F'feed' 'cDrCys}
        endif
    endif
    if drill_type eq G86
        iDrillmode = 86
        {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' F'feed ' 'cDrCys}
    endif
    if drill_type eq G87
        if P_Dwell eq 0
            iDrillmode = 87
            {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' F'feed ' 'cDrCys}
        else
            iDrillmode = 88
            {nb, cDr'G'iDrillmode ' X'xpos' Y'ypos' Z'drill_lower_z' R'drill_upper_z' P'P_Dwell' F'feed' 'cDrCys}
        endif
    endif
endp

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

@drill_point
    ; Handle output for drill positions
    local integer i
    if drill_type eq G84_Peck
        iNumpecks = (drill_depth/Q_Peck)+1.
        nCorrectedpeck = drill_depth/iNumpecks
        i = 1
        while i <= iNumpecks
            {nb,'X'xpos ' ', 'Y'ypos ' ', 'Z'(drill_upper_z-(nCorrectedpeck*i))' 'cDrPts}
            i = i + 1
        endw
    else
        if !first_drill then
            {nb,['X'xpos ' '], ['Y'ypos ' '], ['Z'zpos ' ']cDrPts}
        endif
    endif
endp


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

@end_drill
    ; Handle output to cancel drill cycles 
    iDrillmode = 80
    if change(iDrillmode)
        {nb, 'G'iDrillmode' '}
    endif
    if (cG84endl ne '') and (drill_type eq G84_Peck or drill_type eq G84)
        {nb,cG84endl}
    endif

 

    {nb, 'G5.1Q1 '}  

 

endp

 

 

Мне кажется или при таком раскладе G5.1 будет выводиться в цикле сверления, что не нужно. Да еще в конце будет G5.1 Q1 вместо G5.1Q0?

Поделиться сообщением


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

я вам показа где поставить команды и выше написал добавьте IF

1 пользователю понравилось это

Поделиться сообщением


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

я вам показа где поставить команды и выше написал добавьте IF

Не могли бы вы сделать пример на стандартном посте g_milling3x и файле станка. Не понимаю, какой доп параметр создавать, LOGICAL, INTEGER, NUMERIC? Созданный параметр нужно описать в посте? Как это сделать? Заранее благодарю.

Поделиться сообщением


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

Спасибо, больше не нужно. Все сделал красиво)))

Поделиться сообщением


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

 

Спасибо, больше не нужно. Все сделал красиво)))

 

Теперь колись! 

Поделиться сообщением


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

я вам показа где поставить команды и выше написал добавьте IF

Уважуха! Держи +! 

Поделиться сообщением


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

Ну чтож. К сожалению на этом форуме развернутые ответы дают единицы, я постараюсь дать развернутый ответ чтобы всем было понятно потому что понимаю как это сложно, когда не шариш нихрена, а хочется. Эту всю затею я посвящаю пользователю данного форума Игорю Макаренко, который послал меня править пост ручками мол это было на форуме иди учи и тд. и т.п., когда я у Израильского коллеги попросил постпроцессор в котором была реализована эта функция 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

 

 

Изменено пользователем sudomex2016
4 пользователям понравилось это

Поделиться сообщением


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

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

Ну вот видишь наоборот он помог тебе не подсматривать у кого то а самостоятельно разобраться в посте да еще и на таком уровне чтоб дописывать процедуры ! А если бы ты просто содрал с другого поста то не было бы такого эффекта и голова не заботилась бы о том как решить этот вопрос! 

Так что скажем так это был волшебный пендаль :biggrin: и теперь ты понимаешь на сколько это не просто делается без определенных знаний!

А вот теперь представь что когда ты потратив огромное  количество времени  на правку поста просто по первому запросу кому то его отдашь, так просто, при том что человек и палец о палец не ударил чтоб что-то сделать самостоятельно и в дальнейшем делать не будет!

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

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

 

 

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

 

 

 

Изменено пользователем Frezer_PU

Поделиться сообщением


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

спасибо LessNICKoff  и sudomex2016 !

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

 

Изменено пользователем pavel-kpll

Поделиться сообщением


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

@sudomex2016

Вы в цикле сверление смогли реализовать отключение HSM ? Вопрос у вас звучал так. А по вашему развёрнутому ответу вы совсем в другом месте изменили пост. И задача у вас оказалась другая.

Поделиться сообщением


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

В NC210 есть подобные режимы включается через G27- замедление на углах. G28-сохранять скорость G29- от точки к точке происходит останов. 

Я в настройках ввёл переменную STRING(не сразу пришёл к такому решению), где я выбираю режим при настройки операции G27 G28 и в начале циклов и конце операции, смена инструмента стоит {nb,'G29'}. без всяких IF.

Если переменная определена в файле станка её не обязательно объявлять в глобальных переменных.

1 пользователю понравилось это

Поделиться сообщением


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

@sudomex2016

Вы в цикле сверление смогли реализовать отключение HSM ? Вопрос у вас звучал так. А по вашему развёрнутому ответу вы совсем в другом месте изменили пост. И задача у вас оказалась другая.

это был ваш так сказать "пинок", а дальше @sudomex2016 просто взлетел в умении редактировать пост))) по ходу утирая носы некоторым участникам форума ))..

1433840059_217606508.gif

Изменено пользователем pavel-kpll

Поделиться сообщением


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

по ходу утирая носы некоторым участникам форума ))..

знаешь такую пословицу :

Плох тот ученик который не превзошел своего учителя и плох тот учитель ученик которого не превзошел его!

 

Поделиться сообщением


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

знаешь такую пословицу :

Плох тот ученик который не превзошел своего учителя и плох тот учитель ученик которого не превзошел его!

 

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

 

klichko_54009919_orig_.png

Изменено пользователем pavel-kpll

Поделиться сообщением


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

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

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

 

Поделиться сообщением


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

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

 

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

1 пользователю понравилось это

Поделиться сообщением


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

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

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

Поделиться сообщением


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

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

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

Изменено пользователем pavel-kpll

Поделиться сообщением


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

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

Вот допиливаю стандартный пост g_Milling_3x под свой фрезер (YCM NDV66A стойка Fanuc - 32i), 4-осевой, 4 ось съемная (ось А). По вашему видео на Ютубе допилил фрагмент

@start_program
    ; Handle any safety G/M codes for top of program
    if !bSimpleformat
        {' G00'}
        call @usr_abs_inc_output
         {' G94'}
        call @usr_mp_output
        side = COMP_OFF
        call @compensation
        call @usr_compensation_output
        skipline = false
        call @end_drill
    endif
    if sHomestrbegin ne ''
        sHomestr = sHomestrbegin
        call @usr_prep_home_axis
    endif   

endp

 

Но возник смешной вопрос: строка безопасности выводится попарно без пробелов, вот так:

G00G90 G94G40

Где что дописать в посте для корректного отображения пробелов, не подскажете?

 

И еще момент. В видео был очень полезный момент про добавление строки для одинарного отображения корректора D в блоке программы.

cDoffset              = 'D'

Но SC ругается на неопределенную переменную, если ее предварительно не задать выше, в шапке поста, в строке:

 global string cDrCys cDrPts cG84endl cPn cHoffset cDoffset

Изменено пользователем Metalfrezer

Поделиться сообщением


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

Но возник смешной вопрос: строка безопасности выводится попарно без пробелов, вот так:

G00G90 G94G40

Где что дописать в посте для корректного отображения пробелов, не подскажете?

5361bc2fc4da432920e20d58b72301e4.png

Только что, Metalfrezer сказал:

И еще момент. В видео был очень полезный момент про добавление строки для одинарного отображения корректора D в блоке программы.

cDoffset              = 'D'

Но SC ругается на неопределенную переменную, если ее предварительно не задать выше, в шапке поста, в строке:

 global string cDrCys cDrPts cG84endl cPn cHoffset cDoffset

А вы наблюдательны это похвально! 

добавьте еще вот в этих местах и попробуйте если в подводе будет выводить то надо будет где то еще удалить лишнее  процедуре линейного перемещения точно не помню делалось  давно :

06227a1fc0adf583f60ca5712f034168.png

499c45e0b6ed1e64c4a851659588e59a.png

 

Изменено пользователем Frezer_PU

Поделиться сообщением


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

Приветствую коллеги. Подскажите как решить такую проблему:

В посте прописан увод всех осей по G53 в машинный ноль в начале и конце программы, но если обработки идут подряд одним и тем же инструментом, то G53 вставляется после каждой обработки. Тратится много лишнего времени и откровенно действует на нервы. Как можно это убрать, оставив вывод только в начале и в самом конце?

P.S. Если в следующей обработке задействован другой инструмент то этого не происходит.

убрать лишнее.jpg

Поделиться сообщением


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

Какой пост?

Осмелюсь предложить поиграться с этими настройками:

               ;--------- Optional Stops (M01) ---------
    bOptstpbegin          = false      ;0.70: True = Outputs Optional Stop at beginning of program
    bOptstptc             = true       ;0.70: True = Outputs Optional Stop between Tool Changes
    bOptstpend            = false      ;0.70: True = Outputs Optional Stop at end of program

Поделиться сообщением


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

В посте прописан увод всех осей по G53 в машинный ноль в начале и конце программы, но если обработки идут подряд одним и тем же инструментом, то G53 вставляется после каждой обработки. Тратится много лишнего времени и откровенно действует на нервы. Как можно это убрать, оставив вывод только в начале и в самом конце?

Капайте здесь: 

25d5ad1ff6416a9e69afb1e17d0cf096.png

 

Поделиться сообщением


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

Спасибо за ответы!

К сожалению тут всё несколько сложнее и в лоб не получается...

9 часов назад, LessNICKoff сказал:

Какой пост?

Осмелюсь предложить поиграться с этими настройками:

               ;--------- Optional Stops (M01) ---------
    bOptstpbegin          = false      ;0.70: True = Outputs Optional Stop at beginning of program
    bOptstptc             = true       ;0.70: True = Outputs Optional Stop between Tool Changes
    bOptstpend            = false      ;0.70: True = Outputs Optional Stop at end of program

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

 

Установка настроек подсказанная @Frezer_PU тоже к сожалению не помогает, прежде чем написать на форум я всё это пробовал...

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

1. В самом начале программы жестко идёт G53 z0 x0 y0

2. В конце программы тоже идёт G53 z0 x0 y0

3. При смене инструмента начинают работать условия и процедуры с этим связанные и вывод осей в 0 по G53 подавляется

4. А вот если смены инструмента нет, то по всей видимости окончание обработки воспринимается как конец программы и начинает действовать п.2

Вот как то так... И куда рыть?

 

Поделиться сообщением


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

Какой пост?

скинуть можешь? kooll@inbox.ru

Поделиться сообщением


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

Вот как то так... И куда рыть?

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

Если не хотите сюда кидайте в личку! 

Поделиться сообщением


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

Ну вот все правильно у вас и написано ! 

Вы пробовали делать перевод на русский язык комментариев ?

У вас написано что вывод G53 так как стоит цифра 3 будет осуществлен в начале УП и  конце УП если их удалить то они не будут выводится  ! 

a1233ed9aa2006bab71ef5a42fd9bb46.png

Поделиться сообщением


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

Ну вот все правильно у вас и написано ! 

Вы пробовали делать перевод на русский язык комментариев ?

У вас написано что вывод G53 так как стоит цифра 3 будет осуществлен в начале УП и  конце УП если их удалить то они не будут выводится  ! 

a1233ed9aa2006bab71ef5a42fd9bb46.png

Так а я про что! То что Вы написали всё верно, но конец обработки и переход к следующей это не конец программы. Меня вполне устраивает G53 в начале и конце программы, не устраивает, что G53 выводится между обработками там где он на хрен не нужен! Ну представьте черновую обработку в четвертой оси написанную методом трансформации. Там каждое действие это отдельная обработка и вот после каждого станок уходит в нули, сколько времени тратится на никому не нужные перебеги...

Поделиться сообщением


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

Так а я про что! То что Вы написали всё верно, но конец обработки и переход к следующей это не конец программы. Меня вполне устраивает G53 в начале и конце программы, не устраивает, что G53 выводится между обработками там где он на хрен не нужен! Ну представьте черновую обработку в четвертой оси написанную методом трансформации. Там каждое действие это отдельная обработка и вот после каждого станок уходит в нули, сколько времени тратится на никому не нужные перебеги...

С этого надо было и начинать ! 

С помощью поиска той программы в которой правите пост находите эти параметры и роете в тех процедурах в которых они определены :

76d51f0e22e9371be71463e413e8e404.png

9f4aaa4cf4035297acdb9c5054481370.png

b15512e9989cc6b24e8673f245d275a1.png

dd62391a56fbf8df24ae7e07be30e092.png

В процедуре @usr_ct_before_firsttool скорее всего и сидит ваш вопрос так как то что там указанно это не со стокового поста!

Изменено пользователем Frezer_PU

Поделиться сообщением


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

Да, именно там и рою, но знаний к сожалению не хватает. Ну не программист я, приходится методом тыка...

Поделиться сообщением


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

Вопрос то какой бы задан? У вас пост стандартный или кем то правленый? Вам объяснять на основе стандартного поста. 

Поделиться сообщением


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

Ну не программист я, приходится методом тыка...

Я делаю точно так же и когда потыкаешь пару раз не туда в итоге что-то да получается, а потом от туда и появляются знания ! 

Попробуйте просто забанить эту строку ! 

1 пользователю понравилось это

Поделиться сообщением


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

Вопрос то какой бы задан? У вас пост стандартный или кем то правленый? Вам объяснять на основе стандартного поста. 

Пост написан под меня, но некоторые моменты меня не устраивают, хочу сам разобраться.

Поделиться сообщением


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

@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
    bSkipxyrapid = false
    bStopM00difftool = false
    iPworkoffset = iWorkoffset

    
endp

 

здесь смотрите...

Если пост писали под вас спросите того  кто писал его вам. А так гадаем.

Поделиться сообщением


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

Коллеги спасибо за помощь! Вопрос решился.

 

Отдельное огромное спасибо @Frezer_PU !!!

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

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

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

  • реклама

  • Реклама

  • Ближайшие события

    Предстоящих событий не найдено
  • Дни рождения сегодня

    1. 1s4astie
      1s4astie
      (35 лет)
    2. Alex5531756
      Alex5531756
      (32 года)
    3. devid
      devid
      (41 год)
    4. katalex-3
      katalex-3
      (45 лет)
    5. olegvklimanov
      olegvklimanov
      (53 года)
    Просмотреть все