-----------------------------------------------------------------------------------------------------------------------------------------------------------------
;Ut. 1 asse di lav. Z incr. SOLO IN X NEGATIVO
T160 D1 ;l'utensile deve avere fattore di forma F46
M42
G192 S80
G96 S80
M4
F2.5
;
G0 G90 X1005 Z-180 ;posizionamento iniziale
;
;P100 = punto partenza asse X
;P101= punto partenza asse Z
;P102 = punto d'arrivo sull'asse X
;P103 = punto d'arrivo sull'asse Z
;P104 = larghezza max. passata
;P120 = coefficente per modificare l'angolo di penetrazione 1 = circa 30 gradi
P100=1000
P101=-113
P102=800
P103=-279
P104=5
P120=0.8
#PCALL C:\CNC8070\USERS\Prg\SUB\SUB1xx.nc
;
N200 G0 G90 X1005 Z-180 ;uscita a fine lavorazione
;
M30
---------------------------------------------------------------------------------------------------------------------------------------------------------------E questa è la sub che viene chiamata:
#MSG ["Ciclo Ut. 1 asse di lav. Z incr. solo in X negativo"]
$IF V.[1].TM.DSUBTYPE != 13 ^ V.[1].TM.LOCODE != 2 $GOTO N355 ;se fattore di forma non corretto esce
N110 $IF P102 >= P100 $GOTO N360 ;verifica se punto iniziale e magg. di punto finale
;P100 = punto partenza asse X
;P101= punto partenza asse Z
;P102 = punto d'arrivo sull'asse X
;P103 = punto d'arrivo sull'asse Z
;P104 = larghezza max. passata
;P120 = coefficente per modificare l'angolo di penetrazione 1 = circa 30 gradi
N115 P121 = P100 - P102 ;differenza tra 1o e 2o vertice (profondita scarico) sull'asse X
N120 P122 = P101 - P103 ;differenza tra 1o e 2o vertice (lunghezza scarico) sull'asse Z
N125 P122 = -P122 ;inverte segno valore
;
N130 $IF P120 == 0 ;applica il valore di default se e a 0
P120 = 1
$ENDIF
N135 $IF P122 < 0 ;calcolo raggio ut. e direzione mov.
P105 = -V.[1].TM.TOR
$ELSE
P105 = V.[1].TM.TOR
$ENDIF
N140 P106 = P121/P104 ;numero passate
N145 P107 = FUP[P106] ;numero passate arrotondate all'intero superiore
N150 P108 = P107-1 ; numero ripetizioni ciclo RPT
N155 P109 = P121/P107 ;larghezza passata corretta
;
N160 P110 = P109/2 ;profondita penetrazione /2
N165 $IF P122 < 0
P111 = -P109*P120
$ELSE ; largrezza 2a entrata in Z
P111 = P109*P120
$ENDIF
N170 P112 = -P111 ;inverte direzione passata
N175 $IF P122 < 0
P113 = -P110*3*P120
$ELSE
P113 = P110*3*P120;largrezza 1a entrata in Z
$ENDIF
N180 P114 = -P113 ;inverte segno 1a entrata in Z
N185 P115 = P122 - P111 - P111 - P105 - P105 ;lunghezza passata senza spallare
N190 P116 = -P115 ;inverte direzione passata
;
N195 $IF P122 < 0 & P122 > P105 + P105 + P111 + P111 $GOTO N350 ;verifica larghezza minima scarico
N200 $IF P122 > 0 & P122 < P105 + P105 + P111 + P111 $GOTO N350 ;verifica larghezza minima scarico
N205 P123 = V.[1].G.PRGFPR ;assegna valore avanzamento
;
N210 P124 = P107
;
N215 G0 G90 ZP101
;N220 G1 G91 ZP105 FP123
N225 G1 G90 XP100
;
N230:P123 = V.[1].G.PRGFPR ;assegna valore avanzamento
N235 P117 = V.[1].G.PRGFPR * 0.4 ;coefficente per l'avanzamento di penetrazione retta
N240 P118 = V.[1].G.PRGFPR * 0.8 ;coefficente per l'avanzamento in spallamento
N245 P119 = V.[1].G.PRGFPR * 1.3 ;coefficente per l'avanzamento di penetrazione
N250 #MSG ["asp. %D mm, rip.manc. %D di %D",P109,P124,P107]
;
N255 G1 G91 X-P110 ZP113 FP119
;#MSG["P114-%D P115-%D P112-%D P111-%D",P114,P115,P112,P111]
;M0
N260 G1 G91 ZP114 FP118
N265 G1 G91 X-P110 ZP111 FP119
N270 G1 G91 ZP115 FP123
N275 G1 G91 XP109 ZP111 FP119
N280 G1 G91 X-P109 FP117
N285 G1 G91 ZP112 FP119
N290 G0 G91 ZP116
N295 G1 G91 ZP112 FP118
N296 FP123
N300:
P124 = P124 -1
N305 #RPT [N230, N300, P108]
N310 #MSG [""]
N350 #RET
N355: #ERROR ["Fattore di forma errato,"]
N340 M30
N345 #RET
N350: #ERROR ["Impossibile lavorare la cava, P122 TROPPO PICCOLO"]
M30
N360: #ERROR ["Questo ciclo lavora solo con X in direz. negativa"]
N370: #RET
Grazie a Tutti per eventuali suggerimenti
