La funzione in oggetto fa una cosa semplicissima , incrementando un indice si può fare in modo di scegliere cosa fare in base al valore dell'indice stesso ... esempio :
case select "Pippo"
case 1 allora vai a 1000
case 2 allora vai a 2000
case 3 allora vai a 3000
case 4 ......... ecc ecc
Pasticciando con i parametri ho scoperto che è possibile indicizzare il richiamo a sottoprogrammi utilizzando i parametri stessi :
es M98 P[100+#1] quando il parametro #1 vale 0 si richiama il sottoprogramma O0100 se vale 7 salterà al sottoprogramma O0107 ecc ecc
posto una parte di codice che sto scrivendo per fare una ghiera per l'affilatrice che sia indicizzata 0° 40° - 40° 0°
il sw dovrebbe fare la prima passata sulla linea delle decine e scrivere 0 poi passare alla linea successiva e scrivere 10 , poi 20 ecc ecc . Per ora sulla carta funziona , appena realizzata la ghiera ( ammesso che ci riesca
ps
Non ridete ... il codice è commentato per me che mi dimentico le cose, non per voi ...
Nel codice, quanto detto prima si trova nel parametro #123
alle linee
N216
N356
N507
********************************* CODICE
(tAMBURO indicizzato con GRADI 0 40 40 0 PER MONTANTE AFFILATRICE Davide 12/09/2017 revisione 1)
(INSERITO IL FATTORE DI SCALA) ok
(Material Size) (Diametro Y=48.000 )
;Una ottima leggibilità si ottiene con i valori di default che ho inserito ok!
;Controllare la profondità di passata ok!
;inserito i numeri con coordinate relative
;sostituzione della Y con A per avere la stessa profondità sui numeri
;***************************************funzioni preparatorie*************************************************
N10 G90 (programmazione in coordinate assolute)
N20 G80 (annulla esecuzione di ciclo fisso)
N30 G21 ( programma le quote assi in mm, G20 in pollici )
N40 G17 (setta il piano di lavoro XY )
N50 G49 (annulla compensazione utensile)
N60 G50 (reset fattore di scala )
N70 G40 ( percorso utensile sul profilo )
;**************************************************************************************************************
N80 M6 T1 (Utensile bulino :1) ( 7.5 Gradi conico con 0.000 mm raggio in punta e 0.1 mm raggio piano)
;**************************************DATI da inserire********************************************************
;***************APPOSTARE IL BULINO AL FILO SUPERIORE DELLA GHIERA X=0 y=DIAMETRO/2 E Z=0**********************
#5=0.0 (PARAMETRO ANGOLARE DI PARTENZA)
#10=36 (numero divisioni)
#20=[360/#10] ( distanza angolare tra le linee )
#30=1 (Parametro fattore di scala)
#50=5.5 ( lunghezza linea lunga , 10 gradi)
#60=4.5 ( lunghezza di linea media , 5 gradi)
#70=3 ( lunghezza di linea corta , 1 gradi)
#75=2.5 ( altezza del numero )
#76=1 (spaziatura linea - numero )
#550=0 ( contatore di linea lunga , 10 gradi)
#560=4 ( contatore di linea media , 5 gradi)
#570=2 ( contatore di linea corta , 1 gradi)
#580=30 ( feed rate di lavoro)
#590=15000 ( velocità mandrino )
#100= 0.05 ( inserire la massima profondità di passata permessa dall'utensile)
#101=#100 (parametro di aiuto per l'incremento di passata)
#110= 0.2 ( profondità massima di incisione )
N90 #750= [1*fix[#110 / #100]] ( calcola il numero di passate )
N100 M3 S[#590] (m3 rotazione oraria del mandrino s=speed=velocità di rotazione g/min)
N110 G51 X[#30] Y[#30] Z[#30] ( SETTA LA SCALA )
;**********************************inizio ciclo lavorazione ***************************************************
N200 G0 Z1 (porta la z a + 1 in rapido sopra la ghiera)
N210 G0 x1 y0 (porta la x FUORI BORDO ghiera in rapido)
N215 G0 A[#5] (ASSE A=0.0)
N216 #123=0 (contatore routine numeri in sequenza )
N220 M98 P0001 Q[#10] ( salta a sub 0001 e ripete per il numero di divisioni )
N230 G50 (RESET FATTORE DI SCALA)
;N300 G0 A0.0 ( riporta all'origine l'asse A, G64 è poco usato)
N310 G0 Z2 x2 Y2
N340 M5 (stop rotazione del mandrino)
N350 M30 (fine programma e reset con ritorno ritorno all'inizio )
;***********************************Routine 0001 - linea decine************************************************
; nell'esempio ci sono 36 divisioni una ogni 10 gradi
O0001
N355 M98 P0002 Q[#750]
N356 #123=[#123+1] (incrementa il contatore routine numeri in sequenza )
N357 #100=#101
G00 z1
N360 G91 A[#20]
N370 G90
N380 M99
;***********************************( inizia sub di incisione linea decine )******************************
o0002
N460 G01 Z[-1*[#100]] F[#580] (la z scende del valore max di passata )
N470 G01 X[-1*[#50]] F[#580] (la x va alla lunghezza della linea)
G00 Z1
N507 M98 P[0100 + #123] (va alle routine dei numeri )
N510 m99
;********************** ( inizio sub di incisione numeri ) ******************************
;************************************** NUMERO 0 ***********************************************************
o0100
G52 x[-1*[#76]] Y-0.835
G00 X0 Y0.425
G01 Z[-1*[#100]] F[#580] (la z scende del valore max di passata )
G01 X0 Y0.820
G01 X-0.421 Y1.245
G01 X-2.079 Y1.245
G01 X-2.5 Y0.820
G01 X-2.5 Y0.425
G01 X-2.079 Y0
G01 X-0.421 Y0
G01 X0 Y0.425
G00 Z1
G00 X-1.670 Y2.068
G01 Z[-1*[#100]] F[#580] (la z scende del valore max di passata )
G01 X-2.085 Y1.654
G01 X-2.5 Y2.068
G01 X-2.0852 Y2.483
G01 X-1.6704 Y2.068
G52 X0 Y0
G0 X1 Y0 Z1
#100=[#100+#101] (aumento la z per la passata successiva )
M99
;************************************** NUMERO 10 ***********************************************************
o0101
G52 x[-1*[#76]] Y-1.835 (nuove coordinate in y che tengono conto del doppio numero)
G00 X0 Y0
G01 Z[-1*[#100]] F[#580] (la z scende del valore max di passata )
G01 X0 Y0.83325 I0 J0
G00 Z1
G00 X0 Y0.4165 I0 J0
G01 Z[-1*[#100]] F[#580] (la z scende del valore max di passata )
G01 X-2.5 Y0.416
G01 X-2.0905 Y0
G00 Z1
G00 X0 Y1.667
G01 Z[-1*[#100]] F[#580] (la z scende del valore max di passata )
G01 X0 Y2.062
G01 X-0.421 Y2.487
G01 X-2.079 Y2.487
G01 X-2.5 Y2.062
G01 X-2.5 Y1.667
G01 X-2.079 Y1.241
G01 X-0.421 Y1.241
G01 X0 Y1.667
G00 Z1
G00 X-1.6704 Y3.31055 I0 J2.89575
G01 Z[-1*[#100]] F[#580] (la z scende del valore max di passata )
G01 X-2.0852 Y2.895
G01 X-2.5 Y3.3105
G01 X-2.0852 Y3.725
G01 X-1.6704 Y3.3105
G00 Z1
G00 X0 Y4.13385
G52 X0 Y0
G0 X1 Y0 Z1
#100=[#100+#101] (aumento la z per la passata successiva )
M99
;************************************** NUMERO 20 **********************************************************
o0102
G52 x[-1*[#76]] Y-0.835
G00 X0 Y1.67175 I0 J0
G01 Z[-1*[#100]] F[#580] (la z scende del valore max di passata )
G01 X0 Y0 I0 J0
G01 X-0.854 Y0
G01 X-1.25 Y0.4
G01 X-1.25 Y1.2275
G01 X-1.68975 Y1.67175
G01 X-2.079 Y1.67175
G01 X-2.5 Y1.2465
G01 X-2.5 Y0.42525
G01 X-2.079 Y0
G00 Z1
G00 X0 Y2.5055
G01 Z[-1*[#100]] F[#580] (la z scende del valore max di passata )
G01 X0 Y2.9005
G01 X-0.421 Y3.32575
G01 X-2.079 Y3.32575
G01 X-2.5 Y2.9005
G01 X-2.5 Y2.5055
G01 X-2.079 Y2.08025
G01 X-0.421 Y2.08025
G01 X0 Y2.5055
G00 Z1
G00 X-1.6704 Y4.14905
G01 Z[-1*[#100]] F[#580] (la z scende del valore max di passata )
G01 X-2.0852 Y3.73425
G01 X-2.5 Y4.14905
G01 X-2.0852 Y4.56385
G01 X-1.6704 Y4.14905
G00 Z1
G52 X0 Y0
G0 X1 Y0 Z1
#100=[#100+#101] (aumento la z per la passata successiva )
M99
