Перейти к публикации

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


Рекомендованные сообщения

В 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 (и другие) сторонним симулятором, т.е. вне станка.
Можно ли скачать со станка текст программы этого цикла, чтобы понять его работу?

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


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

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

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

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

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

 

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

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

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

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

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

FROUGH.png

 

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

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

 

Ссылка на сообщение
Поделиться на других сайтах
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])

 

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

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

 

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

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

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

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

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

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

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

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




×
×
  • Создать...