Jump to content

Встроенные циклы Shop Turn для Sinumeric 840D SL


Recommended Posts

В Shop Turn есть встроенные циклы 
Фрагмент УП с одним из циклов:
...
;USTUP D16O RPOHODNOY 80GR
F_ROUGH("PROHOD","",1,0.22,3,150,2,0,52225,1,265,90,0,90,159.7,90,-26,90,159.7,90,-26,90,0,0.5,0,0,2,0.5,0.1,1,90,90,0,0,0);*RO*
G0 Z5
X300
M1
...

Стоит задача научиться симулировать этот цикл F_ROUGH (и другие) сторонним симулятором, т.е. вне станка.
Можно ли скачать со станка текст программы этого цикла, чтобы понять его работу?

Link to post
Share on other sites


UnPinned posts
gudstartup
1 час назад, UAV сказал:

Можно ли скачать со станка текст программы этого цикла, чтобы понять его работу?

Кроме того чтобы скачать нужно еще и суметь декомпилировать как на heidenhain или Fanuc никто не выкладывает текст циклов в открытом виде.

Link to post
Share on other sites
Vladislav-dobrynin
2 часа назад, UAV сказал:

Стоит задача научиться симулировать этот цикл F_ROUGH (и другие) сторонним симулятором, т.е. вне станка.

 

В SinuTrain пробовали?

Link to post
Share on other sites
andref
18 часов назад, UAV сказал:

Можно ли скачать со станка текст программы этого цикла, чтобы понять его работу?

На Sinumerik 810d c ShopTurn файл F_ROUGH находится в стандартных циклах и его можно извлечь и посмотреть. Посмотрите NC архив на 840dsl и извлеките файл  из каталога CST.DIR.

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

FROUGH.png

 

Link to post
Share on other sites
mannul
Скрытый текст

PROC F_ROUGH(STRING[32] _T,STRING[32] _TF,INT _DD,REAL _F,INT _FAA,REAL _S,INT _SA,INT _TMOD,INT _BA,INT _L,REAL __X0,INT _X0A,REAL _Z0,INT _Z0A,REAL __X1,INT _X1A,REAL _Z1,INT _Z1A,REAL __XM,INT _XMA,REAL _ZM,INT _ZMA,INT _XZA,REAL _RF1,REAL _RF2,REAL _RF3,REAL _D,REAL _UX,REAL _UZ,INT _NR,REAL _A1,REAL _A2,REAL _BETA,INT _BETAA,REAL _GAMA) SBLOF DISPLOF
;VERSION: 04.05.57.00 ;DATE: 2014-03-13
;CHANGE : 04.05.51.00 ;DATE: 2013-08-21
;ShopTurn: Roughing edge cycle
DEF AXIS _XX,_ZZ,_YY
DEF INT _VARI,_PM,_AI,_LP,_I,_XPM,_ZPM,_LF[8],_P29,_TYP,_SL,_MAN,_LAGE,_AMODE[8],_DMODE,_RFNR
DEF INT _LT[8]=set(0,1,2,3,3,1,2,0)
DEF INT _SLT[2,10]=set(0,1,2,3,4,5,6,7,8,9,0,2,1,4,3,7,6,5,8,9)
DEF INT _SLX[2,10]=set(0,1,2,3,4,5,6,7,8,9,0,4,3,2,1,5,8,7,6,9)
DEF REAL _F2,_FAK1,_FAK2,_X,_Z,_XS,_ZS,_SC,_OF,_Y,_X0,_X1,_XM
IF(_E_S_LINE)AND(_E_S_LINE<>$P_LINENO[0]) GOTOF _RETS
IF($P_GG[13]<3)
_FAK1=1
IF($MN_SCALING_SYSTEM_IS_METRIC)
IF($P_GG[13]==1)
_FAK1=1/$MN_SCALING_VALUE_INCH
ENDIF
ELSE
IF($P_GG[13]==2)
_FAK1=$MN_SCALING_VALUE_INCH
ENDIF
ENDIF
ELSE
_FAK1=1
ENDIF
_FAK2=1
IF($MN_SCALING_SYSTEM_IS_METRIC)
IF($P_GG[13]==1)OR($P_GG[13]==3)
_FAK2=1/$MN_SCALING_VALUE_INCH
ENDIF
ELSE
IF($P_GG[13]==2)OR($P_GG[13]==4)
_FAK2=$MN_SCALING_VALUE_INCH
ENDIF
ENDIF
_X0=__X0 _X1=__X1 _XM=__XM
IF(_BA B_AND 'H8000' == 'H8000')
IF(_X0A==90)
_X0=_X0/2
ENDIF
IF(_X1A==90)
_X1=_X1/2
ENDIF
IF(_XMA==90)
_XM=_XM/2
ENDIF
ENDIF
IF(_F_BAR_START==0)
GOTOF _RET
ENDIF
_MAN=(_TMOD DIV 10)MOD 10
IF(_BA B_AND 'B010000000')
IF(_BA B_AND 'B100000000')
_MAN=2
ELSE
_MAN=1
ENDIF
ENDIF
IF(_MAN)
F_SP_INI(0)
ENDIF
_P29=$P_GG[29]
DIAMCYCOF
IF(_BA B_AND 'B11' == 'B01')
_VARI=10
ELSE
IF(_BA B_AND 'B11' == 'B10')
_VARI=20
ELSE
GOTOF _FEHL1
ENDIF
ENDIF
IF(_L<0)OR(_L>7) GOTOF _FEHL6
IF(_L<4)
_VARI=_VARI+1
ELSE
_VARI=_VARI+2
ENDIF
_LAGE=_LT[_L]
IF(_BA B_AND 'B00001000')
_VARI=_VARI+1000
ENDIF
_RFNR=1
_AMODE[5]=0
IF(_BA B_AND 'H600'=='H000')
IF(_RF1<0)
_RF1=ABS(_RF1) _AMODE[5]=10000
ENDIF
ELSE
IF(_BA B_AND 'H600'=='H400')
IF(_RF1<0) GOTOF _FEHL7
_AMODE[5]=10000
ELSE
IF(_RF1<0) GOTOF _FEHL8
ENDIF
ENDIF
_RFNR=2
_AMODE[6]=0
IF(_BA B_AND 'H1800'=='H0000')
IF(_RF2<0)
_RF2=ABS(_RF2) _AMODE[6]=100000
ENDIF
ELSE
IF(_BA B_AND 'H1800'=='H1000')
IF(_RF2<0) GOTOF _FEHL7
_AMODE[6]=100000
ELSE
IF(_RF1<0) GOTOF _FEHL8
ENDIF
ENDIF
_RFNR=3
_AMODE[7]=0
IF(_BA B_AND 'H6000'=='H0000')
IF(_RF3<0)
_RF3=ABS(_RF3) _AMODE[7]=1000000
ENDIF
ELSE
IF(_BA B_AND 'H6000'=='H4000')
IF(_RF3<0) GOTOF _FEHL7
_AMODE[7]=1000000
ELSE
IF(_RF3<0) GOTOF _FEHL8
ENDIF
ENDIF
N10 G40 G90
F_SP_TRA(2040)
IF(NOT((_FAA==1)OR(_FAA==3))) GOTOF _FEHL4
IF(_MAN)
_F_RELEAS=0
_VARI=_VARI+10000
IF(_MAN==2)
_F_MASPI=2
ELSE
_F_MASPI=0
ENDIF
_F_INIT=1
IF(_F_AX_EXISTS[6])AND($MCS_FUNCTION_MASK_TECH B_AND 'H01')
N23 F_TFS(_T,,_DD,,,,,_F_MASPI+1,8)
N24 F_SP_BC(104,_BETA,_GAMA)
N29 F_TFS(_T,,_DD,_F,_FAA,_S,_SA,_F_MASPI+1,7)
ELSE
N31 F_TFS(_T,,_DD,_F,_FAA,_S,_SA,_F_MASPI+1,8)
ENDIF
ELSE
IF(_F_AX_EXISTS[6])AND($MCS_FUNCTION_MASK_TECH B_AND 'H01')
N25 F_TFS(_T,_TF,_DD,,,,,1,0)
N26 F_SP_BC(4,_BETA,_GAMA)
N27 F_TFS(_T,_TF,_DD,_F,_FAA,_S,_SA,1,7)
ELSE
N28 F_TFS(_T,_TF,_DD,_F,_FAA,_S,_SA,1,0)
ENDIF
ENDIF
IF($P_TOOLNO==0) GOTOF _FEHL0
IF($P_TOOL==0) GOTOF _FEHL2
_TYP=$P_AD[1]
IF(_TYP<500)OR(_TYP>599) GOTOF _FEHL3
_XX=$P_AXN2 _ZZ=$P_AXN1
IF(_MAN==0)
F_SP_RPT(0,_L)
ENDIF
_X=$P_EP[_XX]*_FAK1 _Z=$P_EP[_ZZ]*_FAK1
IF(_MAN)
IF(_F_Y_AXIS==1)
_YY=$P_AXN3
_Y=$P_EP[_YY]*_FAK1
ENDIF
ENDIF
IF(SUBSTR($P_PROG[0],3,11)=="MA_JOG_STEP")OR(SUBSTR($P_PROG[1],3,11)=="MA_JOG_STEP")
_F_INIT=1
_SC=$SCS_MAJOG_SAFETY_CLEARANCE*_FAK1
ELSE
_SC=_E_SC*_FAK2
ENDIF
_I=_L
_PM=1-(_I MOD 2)*2
_I=_I DIV 2
_AI=1-(_I MOD 2)*2
_LP=1-(_I DIV 2)
IF($P_TOOLNO>0)
_SL=$P_AD[2]
IF(NOT(($MC_TOOL_PARAMETER_DEF_MASK B_AND 'H00200000')AND($P_CUTMOD)))
_SL=_SLT[$P_ACTFRAME[_ZZ,MI],_SL]
_SL=_SLX[$P_ACTFRAME[_XX,MI],_SL]
ENDIF
IF(_SL>0)
_LF[0]=4 _LF[1]=3 _LF[2]=1 _LF[3]=2
_LF[4]=2 _LF[5]=3 _LF[6]=1 _LF[7]=4
IF(_LF[_L]<>_SL) GOTOF _FEHL5
ENDIF
ENDIF
_XPM=-_AI _ZPM=_PM
IF(_LP) GOTOF _MI
_XPM=_PM _ZPM=-_AI
_MI:
IF(_X0A<>90)
_X0=_X0+_X
ENDIF
IF(_Z0A<>90)
_Z0=_Z0+_Z
ENDIF
IF(_X1A<>90)
_X1=_X0+ABS(_X1)*_XPM
ENDIF
IF(_Z1A<>90)
_Z1=_Z0+ABS(_Z1)*_ZPM
ENDIF
IF(_XMA<>90)
_XM=_X0+ABS(_XM)*_XPM
ENDIF
IF(_ZMA<>90)
_ZM=_Z0+ABS(_ZM)*_ZPM
ENDIF
_AMODE[0]=0+_AMODE[5]+_AMODE[6]+_AMODE[7]
_SC=ABS(_SC)
IF(_AI==1)
IF($SCS_TURN_ROUGH_O_RELEASE_DIST==-1)
_OF=_SC
ELSE
_OF=ABS($SCS_TURN_ROUGH_O_RELEASE_DIST)*_FAK1
ENDIF
ELSE
IF($SCS_TURN_ROUGH_I_RELEASE_DIST==-1)
_OF=_SC
ELSE
_OF=ABS($SCS_TURN_ROUGH_I_RELEASE_DIST)*_FAK1
ENDIF
ENDIF
IF(_OF>_SC)
_OF=_SC
ELSE
_SC=_OF
ENDIF
IF(_LP)
_XS=_X0+_OF*_AI _ZS=_Z0-_OF*_PM
ELSE
_ZS=_Z0+_OF*_AI _XS=_X0-_OF*_PM
ENDIF
IF(_MAN)
SBLON
IF(_F_Y_AXIS==0)
N35 G0 G90 AX[_XX]=_XS AX[_ZZ]=_ZS
ELSE
N36 G0 G90 AX[_XX]=_XS AX[_ZZ]=_ZS AX[_YY]=0
ENDIF
SBLOF
ELSE
IF(_F_RELEAS==0)
IF(_AI==-1)
N40 F_SP_RP(3,_XS,_ZS)
ENDIF
N45 F_SP_RP(0,_XS,_ZS,0)
SBLON
IF(_LP==1)
N50 G0 G90 AX[_XX]=_F_RP_ACT*_FAK2 AX[_ZZ]=_ZS
ELSE
N51 G0 G90 AX[_XX]=_XS AX[_ZZ]=_F_RP_ACT*_FAK2
ENDIF
SBLOF
ELSE
N54 F_SP_RP(0,,,0)
SBLON
N55 G0 G90 AX[_XX]=_XS AX[_ZZ]=_ZS
SBLOF
ENDIF
ENDIF
F_SP_TRA(1040)
IF(NOT(($P_SEARCH)OR($AC_SERUPRO)))OR($P_SIM)
N100 CYCLE951(_X0*2,_Z0,_X1*2,_Z1,_XM*2,_ZM,_LAGE,_D,_UX,_UZ,_VARI,_RF1,_RF2,_RF3,_SC,_F,_NR,0,_AMODE[0])
ENDIF
SBLON
IF(_MAN==0)
IF(_LP==1)
N110 G0 G90 AX[_XX]=_X0+_SC*_AI
ELSE
IF(_L==5)OR(_L==6)
N115 G0 G90 AX[_ZZ]=_Z0-_SC*_PM
ELSE
N120 G0 G90 AX[_ZZ]=_Z0+_SC*_PM
ENDIF
ENDIF
IF(_AI==-1)
F_SP_RP(4,$P_EP[_XX]*_FAK1,$P_EP[_ZZ]*_FAK1)
ENDIF
ELSE
IF(_F_Y_AXIS==1)
N180 G90 G0 AX[_XX]=_X AX[_ZZ]=_Z AX[_YY]=_Y
ELSE
N185 G90 G0 AX[_XX]=_X AX[_ZZ]=_Z
ENDIF
ENDIF
SBLOF
G[29]=_P29
_RET:
_F_BAR_START=-1
_E_S_LINE=0
_RETS:
_F_RELEAS=0
SBLON
RET
_FEHL0: STOPRE
N995100 SETAL(61009)
RET
_FEHL1: STOPRE
N995101 SETAL(61002)
RET
_FEHL2: STOPRE
N995102 SETAL(61000)
RET
_FEHL3: STOPRE
N995103 SETAL(61212)
RET
_FEHL4: STOPRE
N995104 SETAL(61240)
RET
_FEHL5: STOPRE
N995105 SETAL(61608)
RET
_FEHL6: STOPRE
N995106 SETAL(61532)
RET
_FEHL7: STOPRE
N995107 SETAL(61022,"(FS"<<_RFNR<<")  ")
RET
_FEHL8: STOPRE
N995108 SETAL(61022,"(R"<<_RFNR<<")  ")
RET

 

Link to post
Share on other sites
gudstartup
3 часа назад, UAV сказал:

Спасибо, огромное! Буду пробовать разобраться.

Интересно как вы будете определять все циклы которые в свою очередь он использует Ваш симулятор поймет такое параметрическое программирование (этот толи бейсик то ли паскаль от сименса не каждый прожует)

 

7 часов назад, mannul сказал:

CYCLE951(_X0*2,_Z0,_X1*2,_Z1,_XM*2,_ZM,_LAGE,_D,_UX,_UZ,_VARI,_RF1,_RF2,_RF3,_SC,_F,_NR,0,_AMODE[0])

 

Link to post
Share on other sites
Vladislav-dobrynin
7 минут назад, gudstartup сказал:

этот толи бейсик то ли паскаль от сименса не каждый прожует

 

Это стандартный язык стойки Sinumerik. Модуль симуляции в NX его полностью поддерживает как и расширенные возможности языков остальных стоек ЧПУ. Только что за симулятором пользуется автор - неизвестно.  Я бы использовал симулятор стойки SinuTrain как писал ранее 

Link to post
Share on other sites
gudstartup
25 минут назад, Vladislav-dobrynin сказал:

Модуль симуляции в NX его полностью поддерживает как и расширенные возможности языков остальных стоек ЧПУ.

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

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.




  • Сообщения

    • an_rushin
      нет, не думаю, что полное. будь оно так, было бы очень непрактично раскладывать на статическое и динамическое.
    • Krusty
      Под рукой ТЦ нет, попробую на память
    • shodan
      Если нужен какой-то более конкретный совет, покажите деталь.
    • gudstartup
      Да это только первый круг мучений которыми может обеспечить станкостроитель сторонние сервисные организации! Почему то раньше это было менее  актуально и это не встречалось так часто. Теперь сплошь и рядом всякого рода защиты как от CNC производителя так и от MTB! Непонятно они этим хотят лишить неавторизованных сервисников которые им отчисления не делают извести и надеются что все их станки будут обслуживаться во всем мире только подконтрольными сервис центрами?!
    • Kiolis
      А можете скинуть Ваш файл. Посмотреть бы как вы построили эксизы и что делали дальше. А то пока для меня это сложно. Хотелось разобрать Ваш пример построения и потом уже построить своё.
    • Viktor2004
      ну, сами знаете что есть издевательства и более изощренные. Так что я философски к этому отношусь
    • gudstartup
      @Viktor2004 И все таки делать такое (закрывать ладдер паролем с нечитаемыми и даже читаемыми символами) это издевательство над сервисом ведь не у всех есть программа для их определения а довольно часто надо посмотреть и понять логику работы программы pmc чтобы устранить неисправность! Хотя благодаря вам мы теперь знаем что бывают и такие подленькие станкостроители. Спасибо @Viktor2004 !
    • Krusty
      те UGPART из ревизии забрать надо да?  
    • Dmitry_C
      Да, хороший вариант.
    • Viktor2004
      Нет. Отображаются пусть как ранее, с точками, а в буфер обмена будет заноситься реальный код. А ниже красным будет предупреждение Attention! Unreadable characters Что бы копировали только через Cliboard, а не копировали выделением строчки
×
×
  • Create New...