CNC_SKILL

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

344 posts in this topic


Здравствуйте коллеги. Хочу добавить высокоскоростную обработку (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 через эту процедуру даже не знаю как сделать. 

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

Share this post


Link to post
Share on other sites

ID: 123   Posted (edited)

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

 

@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 

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

Edited by LessNICKoff

Share this post


Link to post
Share on other sites
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?

Share this post


Link to post
Share on other sites

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

1 person likes this

Share this post


Link to post
Share on other sites
1 час назад, LessNICKoff сказал:

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Только что, sudomex2016 сказал:

 

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

 

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

Share this post


Link to post
Share on other sites
4 часа назад, LessNICKoff сказал:

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

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

Share this post


Link to post
Share on other sites

ID: 130   Posted (edited)

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

 

 

Edited by sudomex2016
6 people like this

Share this post


Link to post
Share on other sites

ID: 131   Posted (edited)

5 часов назад, sudomex2016 сказал:

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

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

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

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

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

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

 

 

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

 

 

 

Edited by Frezer_PU

Share this post


Link to post
Share on other sites

ID: 132   Posted (edited)

спасибо LessNICKoff  и sudomex2016 !

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

 

Edited by pavel-kpll

Share this post


Link to post
Share on other sites

@sudomex2016

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

Share this post


Link to post
Share on other sites

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

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

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

1 person likes this

Share this post


Link to post
Share on other sites

ID: 135   Posted (edited)

23 минуты назад, LessNICKoff сказал:

@sudomex2016

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

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

1433840059_217606508.gif

Edited by pavel-kpll

Share this post


Link to post
Share on other sites
Только что, pavel-kpll сказал:

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

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

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

 

Share this post


Link to post
Share on other sites

ID: 137   Posted (edited)

11 минуту назад, Frezer_PU сказал:

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

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

 

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

 

klichko_54009919_orig_.png

Edited by pavel-kpll

Share this post


Link to post
Share on other sites
Только что, pavel-kpll сказал:

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

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

 

Share this post


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

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

 

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

1 person likes this

Share this post


Link to post
Share on other sites
Только что, pavel-kpll сказал:

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

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

Share this post


Link to post
Share on other sites

ID: 141   Posted (edited)

7 минут назад, Frezer_PU сказал:

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

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

Edited by pavel-kpll

Share this post


Link to post
Share on other sites

ID: 142   Posted (edited)

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

Edited by Metalfrezer

Share this post


Link to post
Share on other sites

ID: 143   Posted (edited)

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

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

G00G90 G94G40

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

5361bc2fc4da432920e20d58b72301e4.png

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

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

cDoffset              = 'D'

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

 global string cDrCys cDrPts cG84endl cPn cHoffset cDoffset

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

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

06227a1fc0adf583f60ca5712f034168.png

499c45e0b6ed1e64c4a851659588e59a.png

 

Edited by Frezer_PU

Share this post


Link to post
Share on other sites

спасибо, попробую!

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

Какой пост?

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

               ;--------- 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

Share this post


Link to post
Share on other sites
6 часов назад, Andrey410 сказал:

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

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

25d5ad1ff6416a9e69afb1e17d0cf096.png

 

Share this post


Link to post
Share on other sites

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

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

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

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

 

Share this post


Link to post
Share on other sites

Какой пост?

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

Share this post


Link to post
Share on other sites
Только что, Andrey410 сказал:

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

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

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

Share this post


Link to post
Share on other sites

Вот скрин:

 

процедура.jpg

Share this post


Link to post
Share on other sites

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

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

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

a1233ed9aa2006bab71ef5a42fd9bb46.png

Share this post


Link to post
Share on other sites
Только что, Frezer_PU сказал:

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

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

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

a1233ed9aa2006bab71ef5a42fd9bb46.png

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

1 person likes this

Share this post


Link to post
Share on other sites

ID: 154   Posted (edited)

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

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

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

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

76d51f0e22e9371be71463e413e8e404.png

9f4aaa4cf4035297acdb9c5054481370.png

b15512e9989cc6b24e8673f245d275a1.png

dd62391a56fbf8df24ae7e07be30e092.png

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

Edited by Frezer_PU

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Только что, Andrey410 сказал:

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

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

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

1 person likes this

Share this post


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

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

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

Share this post


Link to post
Share on other sites

@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

 

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

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.



  • Сообщения

    • David123
      Уважаемый @andrey2147 ! Вы уверены, что на станке 1)  PCU-20 с HDD (с жестким диском) 2) NCU 810 D 3) Есть физически контроллер S7-200   Советую разобраться  по документации Сименса, что такое OP, PCU, MCP,  и их функции. 
    • piden
      @ДОБРЯК , кароч, про часы задачу ты ниасилил, теперь про кирпичи в инете нашел?
    • ingener1
      Благодарю за помощь.
    • jul.23059
      Добрый день. Подскажите, пожалуйста, при измерении расстояний между элементами, в программе есть выбор 3D или 2D. Между плоскостями меряем в 3D, между окружностями в 2D. А как необходимо измерять расстояние от окружности до плоскости?  
    • AlexKaz
      Не обязательно, 2-й вариант по-сути аналогичен, но нужна небольшая правка. Физично задать начальный "глубокий плюс" плёнки, а конечную выбрать как "температура каркаса". КТР сильно зависит от температуры, забейте табличный.
    • РоманВ
      во-первых не вижу штрихованной области. во-вторых выделяешь эскиз и пользуешься операцией масштабирование (Инструменты-Инструменты эскиза-Масштабирование)
    • ДОБРЯК
      Если вы не знаете силы натяжения, то вы не решите эту задачу. Если знаете силы натяжения, то начните с простого теста. С квадратной или прямоугольной рамки. Попробуйте для простой рамки правильно промоделировать внешнюю нагрузку. Для начала решите линейную статическую задачу. Если будете моделировать с использованием температур, то решайте стационарную тепловую задачу.
    • ДОБРЯК



           
        Рассмотpим идеальное одноpодное веpтикальное гpавитационное поле. Пусть мы имеем неогpаниченный запас одинаковых идеально одноpодных киpпичей фоpмы пpямоугольного паpаллелепипеда. Один киpпич (А) можно положить на дpугой (Б) так, чтобы центp тяжести киpпича А пpоектиpовался в пpеделах основания киpпича Б (то есть, чтобы киpпич А не падал с киpпича Б). Тепеpь возьмем вместе киpпичи А и Б и положим их свеpху на киpпич В, так, чтобы общий центp масс киpпичей А и Б пpоектиpовался в пpеделах основания киpпича В. Пpи этом констpукция останется устойчивой. Если пpодолжать этот пpоцесс до бесконечности, какого максимального pасстояния по гоpизонтали можно достичь между левыми гpанями самого веpхнего и самого нижнего киpпича, чтобы ни один кирпич не упал?
    • bv87@me.com
      Спасибо Andrey2147 , перезогрузил NC И PLC файлы с архива станок ожил :) ура .
    • boberbob
      Как называется и можно ли уменьшить поле (подогнать размер штрихованной области под вид) вида импортированного dxf?