Ciao a tutti, come da oggetto sono riuscito a costruire il costrutto del titolo senza utilizzare le macro ( che hanno un loro linguaggio
da studiare ... ).
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
) posto il codice completo . intanto se qualcuno più pratico di me avesse qualche suggerimento, ben venga ... ad esempio ho cominciato scrivendo il numero delle righe ma ben presto mi sono rotto le balle
servono ? i codici dei numeri li ho presi utilizzando il Wizard di mach3 e mi da coordinate da con 5 decimali e I e J con codice G1 che non servono ad una beneamata io ho cominciato a toglierli ... e a ridurre i decimali a 3 poi mi è venuto un dubbio ...
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