Sfida dei Controlli C.N.

ISO Fanuc, ISO Mitsubishi, Mori Seiki, Fanuc Manual Guide, etc.
claugo
Junior
Junior
Messaggi: 94
Iscritto il: sabato 24 dicembre 2011, 12:43
Località: modena

Re: Sfida dei Controlli C.N.

Messaggio da claugo » lunedì 26 marzo 2012, 15:06

:P OK siete pronti :roll:
Ciao a tutti..... Allora il disegno è così modificato.
Mantengo tutti i parametri di larghezza e lunghezza e vado a cambiare solo le profondità 
Praticamente vado a creare una sequenza di profondità  piramidale.
Questo è il disegno, naturalmente ho tolto le sezioni e le quote solo per avere un po' di chiarezza.
Vengono quotate solo le profondità  di ogni cava.
Il programma del Selca è stato modificato così.... Aggiunto due parametri P13 P14, aggiunto una mappatura delle altezze, aggiunto un parametro PP (secondo me molto interessante).

Ok, aspetto il vostro programma


O1
T10M6
S2800M3
P1=22 [ PASSO IN X
P2=22 [ PASSO IN Y
P3=6 [ NUMERO CAVE IN X
P4=6 [ NUMERO CAVE IN Y
P5=4 [ DIAMETRO UTENSILE
P11=20 [ DIMENSIONE CAVA IN X
P12=20 [ DIMENSIONE CAVA IN Y
[=========
P3=P3-1
P4=P4-1
P5=P5/2
P7=P1*P3/2
P8=P2*P4/2
P11=P11/2
P12=P12/2
P99=60
L3 [ LEGGE SOTTOPROGRAMMA MAPPATURA
L=1
P0=PP99 [ PP99 E' UNA FUNZIONE DI PARAMETRO SU PARAMETRO
[ P99=60 -----> PP99 EQUIVALE A P60
P99=P99+1 [ INCREMENTO IL P99 PER PORTARLO A 61,62,63,ECC....
G51XP7YP8 [ TRASLAZIONE ORIGINE
L2 [ RICHIAMO SOTTO PROGRAMMA L=2
P7=P7-P1
L1KP3 [ RIPETIZIONE DA L=1 PER IL VALORE DI P3
P1=-P1
P7=P7-P1
P8=P8-P2
L1KP4 [ RIPETIZIONE DA L=1 PER IL VALORE DI P4
Z200R [ SVINCOLO ASSE Z A FINE LAVORO
M30 [ FINE PROGRAMMA
L=2 [ SOTTO PROGRAMMA L=2
P13=P11-P0 [ HO AGGIUNTO QUESTI DUE PARAMETRI P13 P14 PER AVERE SEMPRE
P14=P12-P0 [LA CAVA SUL FONDO DI DIMENSIONI GIUSTE
X0Y0R [ POSIZIONAMENTO IN RAPIDO ASSI X Y
Z5R [ POSIZIONAMENTO IN RAPIDO ASSE Z
Z0F400
G49IP5 [ ATTIVAZIONE CORETTORE RAGGIO
G77XP13YP14 [ INIZIO CICLO DI CAVA MACRO G77
X-P13
Y-P14
G78XP13Z-P0F300 [ CHIUSURA CICLO CAVA CON DISCESA IN RAMPA
X0Y0
Z5R
G32 [ RITORNO DA SOTTOPROGRAMMA
L=3
[ CREO UNA MAPPATURA DELLE PROFONDITA'
[ MAPPATURA PRIMA RIGA
P60=2.2
P61=2.1
P62=2
P63=2
P64=2.1
P65=2.2
[=== SECONDA RIGA
P66=2.1
P67=2.1
P68=2
P69=2
P70=2.1
P71=2.1
[====TERZA RIGA
P72=2
P73=2
P74=2
P75=2
P76=2
P77=2
[====QUARTA RIGA
P78=2
P79=2
P80=2
P81=2
P82=2
P83=2
[====QUINTA RIGA
P84=2.1
P85=2.1
P86=2
P87=2
P88=2.1
P89=2.1
[====SESTA RIGA
P90=2.2
P91=2.1
P92=2
P93=2
P94=2.1
P95=2.2
G32 [RITORNO DA SOTTO PROGRAMMA
Non hai i permessi necessari per visualizzare i file e le foto allegati in questo messaggio. Per visualizzare tali file devi registrarti ed effettuare il Login

mik74
Junior
Junior
Messaggi: 87
Iscritto il: mercoledì 23 dicembre 2009, 19:24
Località: Marostica(VI)

Re: Sfida dei Controlli C.N.

Messaggio da mik74 » lunedì 26 marzo 2012, 20:19

A però pensavo di cavarmela molto bene col Selca , ma il PP non l'avevo mai visto.
Se permetti però il G52 sposta l'origine non da G51 ma dallo Zero che hai fatto.

Complimeti per il programma niente da dire.Certo ci risulata facile visti i cicli G77.

Ciao

claugo
Junior
Junior
Messaggi: 94
Iscritto il: sabato 24 dicembre 2011, 12:43
Località: modena

Re: Sfida dei Controlli C.N.

Messaggio da claugo » lunedì 26 marzo 2012, 21:13

mik74 ha scritto:A però pensavo di cavarmela molto bene col Selca , ma il PP non l'avevo mai visto.
Se permetti però il G52 sposta l'origine non da G51 ma dallo Zero che hai fatto.

Complimeti per il programma niente da dire.Certo ci risulata facile visti i cicli G77.

Ciao
Grazie... La G52 funziona come la G51 senza però l'opzione J(rotazione), se programmata senza
la G51.

Se io faccio
O1 (origine)
G51X100Y100 (traslazione origine)
G52X10Y10.... La nuova traslazione si troverà  a X110 Y110

Al contrario
O1 (origine)
G52X100Y100 (traslazione origine)
G52X10Y10.... La nuova traslazione si troverà  a X10 Y10

Questo serve in particolare a creare gruppi di traslazione, traslati (piccolo gioco di parole)

O1
G51X100Y100
G52X20Y20
L1
G52X-20Y20
L1
G52X-20Y-20
L1
G52X20Y-20
L1
Praticamente ho creato a X100 Y100 un punto traslato dove vado a fare 4 operazioni traslate
dal punto G51

Negli ultimi controlli mi sembra che funzioni anche al contrario e cioè
O1
G52X100Y100
G51X20Y20J30
L1
G51X-20Y20J60
L1
G51X-20Y-20J-60
L1
G51X20Y-20J-30
L1
In questo caso posso traslare dalla G52 e applicare una rotazione sulla figura.

Ciao

badade
Junior
Junior
Messaggi: 166
Iscritto il: mercoledì 5 gennaio 2011, 11:45
Località: Varese

Re: Sfida dei Controlli C.N.

Messaggio da badade » martedì 27 marzo 2012, 23:16

O1000(MATRICE 6*6 TASCA RETT.)
#100=6
#101=6
#102=0 (CONTATTORE TASCHE, #102=0 prima tasca)
(PROFONDITA TASCHE IN ORDINE DI ESECUZIONE)
#110=2.2;#111=2.1;#112=2.0;#113=2.0;#114=2.1;#115=2.2
#116=2.1;#117=2.1;#118=2.0;#119=2.0;#120=2.1;#121=2.1
#122=2.0;#123=2.0;#124=2.0;#125=2.0;#126=2.0;#127=2.0
#128=2.0;#129=2.0;#130=2.0;#131=2.0;#132=2.0;#133=2.0
#134=2.1;#135=2.1;#136=2.0;#137=2.0;#138=2.1;#139=2.1
#140=2.2;#141=2.1;#142=2.0;#143=2.0;#144=2.1;#145=2.2
T1M6
G90G0G54X-55Y55S1000M3
G43H1Z50M8
D1
WHILE[#100GT0]D02
WHILE[#101GT0]DO1
G777X20Y20Z#[110+#102]F1000 (TASCA 20*20, PROFONDITà  VARIABILE, F AVANZAMENTO)
#102=#102+1 (INCREMENTO NUMERO TASCA)
#101=[#101-1]
IF[#101EQ0]GOTO5
G91X22
N5END1
#100=[#100-1]
IF[#100EQ0]GOTO10
G90X-110Y-22
N10END2
G90G0Z100M9
M5
G91G28Z0
M30

Le variabili (#110->#145) definiscono le profondità  delle singole tasche realizzate usando il ciclo G777: x lunghezza, y larghezza, z profondità .
Se preferite, riscrivete il codice dell'esempio precedente o usate un M98. La macro considera il centro tasca come punto di partenza.
La profonidtà  è calcolata in funzione di una variabile non preventivamente conosciuta. Il valore di una variabile di variabile è conosciuto solo al momento della associazione e non della definizione. L'ordine di creazione tasca deve essere quello di definizione delle profondità .

esempio (#102=4, quinta tasca dalla partenza) #[110+#102]=#[110+4]=#114=2.1 profondità  della quinta tasca

Il ciclo di distribuzione tasche è rimasto invariato (ho corretto alcuni errori di scrittura).
Si possono escogitare diversi modi per mappare un reticolato. Dovendo però lavorare in fretta il pezzo, e non riconoscendo un valido motivo per scrivere un algoritmo di mappatura, questo mi sembra il metodo più sbrigativo.

L'esempio, per i programmatori Fanuc offre l'opportunità  di creare una macro reticolato tasca. Realizzarla non è difficile; la strategia di lavoro è già  stata scritta, cosi come la strategia di distribuzione. E' naturale che si scrive la macro se siamo nelle condizioni di ripetibilità  del pezzo.
Ecco un esempio

G777 X20 Y20 Z#110 U22 (V22) H6 (K6) (I0) (J0) (W0) F1000 (le parentesi indicano parametri opzionali)

La macro permette di realizzare reticolati di tasche di dimensioni variabili (X, Y), con una profondità  anch'essa variabile. E' possibile definire passi in X e Y differenti (U, V), e naturalmente il numero di tasche sugli assi (H, K), definendo quindi un reticolato quadrato o rettangolare. Inoltre possiamo ruotare il reticolato, rispetto all'asse X (I) e/o rispetto alla base del reticolato (J) ottenendo una figura romboidale. Come ultima opzione è prevista la possibilità  di ruotare le tasche sul proprio centro (W). L'avere a disposizione delle macro è senz'altro una opzione utile: l'operatore non deve preoccuparsi della tasca, basta solo conoscerne il funzionamento. Il Fanuc, sappiamo non possedere le mille opzioni offerte da altri controlli, ma permette di "creare" secondo esigenza tutte le macro che vogliamo ma soprattutto personalizzarle cioè adattarle alle proprie esigenze, ma non solo, con una corretta strategia degli errori è possibile effettuare diverse operazioni di controllo: controllo di interferenza, controllo di mappatura, controllo utensile, controllo degli argomenti.... riducendo al mininmo potenziali errori. Una volta scritta la macro il compito del programmatore si riduce al richiamo con gli argomenti adeguati.

O1000(MATRICE 6*6 TASCA RETT.)
(PROFONDITA TASCHE IN ORDINE DI ESECUZIONE)
#110=2.2;#111=2.1;#112=2.0;#113=2.0;#114=2.1;#115=2.2
#116=2.1;#117=2.1;#118=2.0;#119=2.0;#120=2.1;#121=2.1
#122=2.0;#123=2.0;#124=2.0;#125=2.0;#126=2.0;#127=2.0
#128=2.0;#129=2.0;#130=2.0;#131=2.0;#132=2.0;#133=2.0
#134=2.1;#135=2.1;#136=2.0;#137=2.0;#138=2.1;#139=2.1
#140=2.2;#141=2.1;#142=2.0;#143=2.0;#144=2.1;#145=2.2
T1M6
G90G0G54X-55Y55S1000M3
G43H1Z50M8
G777 X20 Y20 Z#110 U22 H6 F1000 (esegui il reticolato tasca 6*6 (H6), di dimensioni 20*20*z (X Y Z), leggendo la mappa partendo da #110
G90G0Z100M9
M5
G91G28Z0
M30

Lo ripeto, si scrive una macro se esiste una reale situazione di ripetibilità !
Certo che la potenza a vostra disposizione aumenta enormemente!
Dovete introdurre una variazione non prevista? Modificate la macro secondo esigenza!
Questo per me è un ottimo indice di flessibilità !

claugo
Junior
Junior
Messaggi: 94
Iscritto il: sabato 24 dicembre 2011, 12:43
Località: modena

Re: Sfida dei Controlli C.N.

Messaggio da claugo » mercoledì 28 marzo 2012, 10:12

[quote="badade"...........

esempio (#102=4, quinta tasca dalla partenza) #[110+#102]=#[110+4]=#114=2.1 profondità  della quinta tasca....

![/quote]

=D> Complimeni, mi piace il tuo ragionamento ed è così che io intendo un programmatore.
Se ho capito bene il Fanuc utilizza il sistema variabili #[] con qualsiasi valore calcolato
all'interno delle parentesi. Es... #[5*2] = #10?

Ti do modo di pensare a una ulteriore complicazione o per meglio dire a una perfezione del programma.
Prendiamo il programma così comè e lo rendiamo una variabile completa.

Ammettiamo che la griglia possa avere una variazione da 1*1 a 20*20 cave, con profondità 
variabili anche di 3-4 millimetri di differenza o tutte della stessa profondità .
Naturalmente diventerebbe impossibile settare 400 (20*20) variabili con profondità  variabili, ma non
per il file lungo ma perchè non credo che nessun controllo abbia 400 variabili disponibili.
Altra cosa l'utensile con cui andremo a lavorare avrà  un limite di profondità  di passata perchè anche
in questo caso non esistono utensili che possono asportare 5-6 millimeti di materiale in un colpo
solo.

Ciao.

...Spero ancora si facciano avanti altri programmatori di altri controlli

badade
Junior
Junior
Messaggi: 166
Iscritto il: mercoledì 5 gennaio 2011, 11:45
Località: Varese

Re: Sfida dei Controlli C.N.

Messaggio da badade » venerdì 30 marzo 2012, 0:24

Ciao, in primo luogo devo apportare qualche modifica al programma precedente: la #101 deve essere posta dentro il ciclo Do2, altrimenti non ci sarà  iterazione ciclica, lo spostamento alla riga successiva deve essere effettuato in G91 (quando si fanno esperimenti capita di non rimettere le cose al loro posto!)
Ecco il programma corretto, dove per comodità  pongo le variabili vicino al proprio ciclo. Il concetto è quello espresso precedentemente, non cambia!

O1000(MATRICE 6*6 TASCA RETT.)
(PROFONDITA TASCHE IN ORDINE DI ESECUZIONE)
#110=-2.2;#111=-2.1;#112=-2.0;#113=-2.0;#114=-2.1;#115=-2.2
#116=-2.1;#117=-2.1;#118=-2.0;#119=-2.0;#120=-2.1;#121=-2.1
#122=-2.0;#123=-2.0;#124=-2.0;#125=-2.0;#126=-2.0;#127=-2.0
#128=-2.0;#129=-2.0;#130=-2.0;#131=-2.0;#132=-2.0;#133=-2.0
#134=-2.1;#135=-2.1;#136=-2.0;#137=-2.0;#138=-2.1;#139=-2.1
#140=-2.2;#141=-2.1;#142=-2.0;#143=-2.0;#144=-2.1;#145=-2.2
T1M6
G90G0G54X-55Y55S1000M3
G43H1Z50M8
D1
#102=0 (CONTATTORE TASCHE, #102=0 prima tasca)
#100=6
WHILE[#100GT0]D02
#101=6
WHILE[#101GT0]DO1
G777X20Y20Z#[110+#102]F1000 (TASCA 20*20, PROFONDITà  VARIABILE, F AVANZAMENTO)
#102=#102+1 (INCREMENTO NUMERO TASCA)
#101=[#101-1]
IF[#101EQ0]GOTO5
G91X22
N5END1
#100=[#100-1]
IF[#100EQ0]GOTO10
G91X-110Y-22
N10END2
G90G0Z100M9
M5
G91G28Z0
M30

Prima di esaminare il problema proposto mi sento di dire che non credo continuerò a postare esempi di programmazione, o riflessioni, aspetterò la partecipazione di altre persone, le riflessioni di programmatori che usano altri controlli. Mi fa piacere discutere di questi aspetti, ma se il tutto si riduce a due persone sarebbe meglio farlo in privato. Spero quindi (lasciamo il tempo dovuto) che ci siano altre persone interessate all'argomento!
Veniamo a noi! Esecuzione di un reticolato di tasche rettangolari di base e altezza sconosciute e di profondità  variabile: come risolvere questo problema?
Anzitutto preciso che la mia cnc possiede un nuemro di variabili notevole, circa 600. Questo potrebbe risolvere in modo diretto la realizzazione di una matrice di 20*20 tasche (400 variabili). Probabilmente nella realtà  utilizzerei un CAM, e questo perchè la probabilità  di errore aumenta notevolmente col numero delle variabili. Potrei anche richiedere un file di nuvole di punti al fine di risparmiare del tempo e non commettere errori di lettura. Nella realtà  dicevo...
Dato che siamo in ambito accademico mi pongo nelle condizioni peggiori:
-senza CAM o software di aiuto se non un editor di testo,
-la possibilità  di usare un numero limitato di variabili, diciamo 30-50 (#100->#150)
-la necessità  di dover effettuare a bordo macchina il programma
-nessuna tasca identica in profondità  o comunque l'imposssibilità  di scrivere un algoritmo

Il programma puo essere realizzato in differenti modi, ma necessariamente dovremo avere una mappa delle profondità  delle tasche. La mappa si puo trovare all'interno del programma in uso o in un altro, o addirittura su un altro computer. Non voglio esagerare, quindi scelgo la soluzione più comprensibile a noi programmatori: il sottoprogramma.
Il punto fondamentale che dobbiamo capire molto attentamente è che una matrice è definita da righe e colonne. Ora non esiste una relazione (per quello che ci riguarda) tra i numeri di una riga ed un altra: ogni riga è a se stante. Questo significa che potremo adottare le stesse variabili ad ogni riga. Cosa significa questo?
Semplicemente che ci servono solo 20 variabili per definire una matrice 20*20 (e non 400). Se abbiamo a disposizione 40 variabili potremmo definire 1600 variabili (non vorrei essere nei panni di quel programmatore che deve scriversi tutti questi numeri......). Il nostro compito sarà  solo di leggere una riga alla volta in modo da usare i valori corretti.

prima riga #110;#111;#112;#113.....#129
seconda riga #110;#111;#112;#113.....#129
terza riga #110;#111;#112;#113.....#129
quarta riga #110;#111;#112;#113.....#129

Questo ragionamento è basato sulla corrispondenza di realizzazione delle tasche e la matrice delle profondità ; ci deve essere una relazione diretta vale a dire: prima tasca della prima riga corrisponde la #110 della prima riga, dodicesima tasca della quinta riga corrisponde la #121 della quinta riga. Se usate un sistema differente il concetto è il medesimo, dovete trovare la relazione che lega la tasca alla profondità .
Il programma che presento è logicamente uguale a quello precedente con una novità  e alcune piccole variazioni.

O1000(MATRICE 6*6 TASCA RETT.)
T1M6
G90G0G54X-55Y55S1000M3
G43H1Z50M8
D1
#100=0 (contattore righe, contattore righe mappa)
WHILE[#100LT6]D02
M98P[8000+#100] (richiamo sottoprogramma dipendente da #100: 8000, 8001, 8002....)
#101=0 (contattore di colonna, profondità  z)
WHILE[#101LT6]DO1
G777X20Y20Z#[110+#101]F1000
#101=[#101+1]
IF[#101EQ5]GOTO5
G91X22
N5END1
#100=[#100+1]
IF[#100EQ5]GOTO10
G91X-110Y-22
N10END2
G90G0Z100M9
M5
G91G28Z0
M30
(MAPPATURA PROFONDITA TASCHE)
N8000 #110=-2.2;#111=-2.1;#112=-2.0;#113=-2.0;#114=-2.1;#115=-2.2;M99
N8001 #110=-2.1;#111=-2.1;#112=-2.0;#113=-2.0;#114=-2.1;#115=-2.1;M99
N8002 #110=-2.0;#111=-2.0;#112=-2.0;#113=-2.0;#114=-2.0;#115=-2.0;M99
N8003 #110=-2.0;#111=-2.0;#112=-2.0;#113=-2.0;#114=-2.0;#115=-2.0;M99
N8004 #110=-2.1;#111=-2.1;#112=-2.0;#113=-2.0;#114=-2.1;#115=-2.1;M99
N8005 #110=-2.2;#111=-2.1;#112=-2.0;#113=-2.0;#114=-2.1;#115=-2.2;M99

Vediamo anzitutto le variazioni! L'inizializzazione delle #100 e #101 non è più 6 ma 0, questo mi permette di usare una unica variabile sia come contattore di riga
e colonna sia come contattore mappa. L'espressione precedente WHILE[#100GT0]D02 (anche per #101) si trasforma in WHILE[#100LT6]D02, rimanendo inalterato il significato (si dovrà  aumentare al posto di diminuire #100=#100+1. La scelta è stata fatta solo per non usare altre due nuove variabili. Anche le espressionei IF[#101EQ0]GOTO5 cambieranno in IF[#101EQ5]GOTO5, rimanendo inalterato il significato. La presenza di #102 non è quindi necessaria poichè sostituita da #101. (per non creare troppa confusione con i cicli ho sostituito le espressioni di ambo le variabili #100 e #101). Il programma non è quindi cambiato, rivediamolo in sintesi

#100=0 (riga)
WHILE[#100LT6]D02
#101=0 (colonna)
WHILE[#101LT6]DO1 (esegue ogni colonna di ogni riga usando la funzione G777)
G777X20Y20Z#[110+#101]F1000
#101=[#101+1]
END1
#100=[#100+1]
END2

Per poter leggere un numero elevato di variabili non avendole a disposizione possiamo ricorrere all'artifico prima esposto introducendo prima della funzione G777 la lettura delle stesse. La scelta è libera, usate la forma che preferite
- sottoprogramma esterno
- sottoprogramma interno
- GOTO

Come si fa a leggere un sottoprogramma di cui ancora non sappiamo il numero? Variabili!
M98P[costante di riferimento + contattore] esempio: volendo partire dal programma O8000 scriveremo
M98P[8000+#100] richiamo programma O8000+->variabile di riga(0->n righe)

WHILE(cilco verticale, riga)
M98P[8000+#100]
WHILE(ciclo orizzontale, colonna)
G777X20Y20Z#[110+#101]F1000

Il concetto è quindi: leggiamo la mappa con M98 (impostiamo le variabili #110->#129), facciamo partire il ciclo delle colonne e ripetiamo il tutto per ogni riga. Ad ogni iterazione verticale le #110->#129 verranno sostituite senza creare problemi dato che i due cicli sono separati. La sostituzione non crea problemi anche perchè le variabili non perdono il loro valore in quanto scritto su file. In base alla scelta fatta dovremo comunque scrivere la mappatura. Io ho pensato di non creare un programma unico ma di suddividerlo in file o righe (tanti quanti il numero di righe del reticolato) in modo da rendere più semplice e leggibile la mappatura. L'esempio riportato sopra si è fermato a 6, ma nulla vieta di aumentarlo fino a 20, 30 ,o 50.
Facciamo un ragionamento teorico! Il numero delle colonne è limitato dal numero di variabili a nostra dispoizione (diciamo 50), il numero di righe invece dipende
dalla memoria della cnc (numero max di programmi). Supponiamo di svuotare la memoria programmi e di lasciare solo il nostro, O1000; ci troveremo nella condizione di poter scrivere 9998 oppure 99999998 programmi alternativi (dipende dalla notazione in uso, se 4 cifre oppure 8). Provate a fare due calcoli e vedrete l'impressionate numero di tasche che potremmo realizzare (50*9998 oppure 50*99999998). Se avessimo utilizzato tutte le 500 variabili a disposizione?
Adesso se vogliamo rendere il file di tipo dinamico, cioè variabile, non dobbiamo far altro che sostituire le costanti con altre variabili. I valori costanti sono

6, 6, numero di tasche
X20, Y20, dimensione tasca
X22, Y22, passo
X-55, Y55, punto di artenza
X-110, ritorno

associate con delle variabili, e sostituite nel programma

#102=6
#103=6
#104=20
#105=20
#106=22
#107=22
#108=[[#102/2]-[#106/2]]
#109=[#106*#102]

Adesso per l'operatore si tratta esclusivamente di introdurre i valori corretti... il resto del programma potrebbe essere nascosto!
Per quanto riguarda la strategia di lavoro, questa è considerata come parte del G777. Questa è una macro personalizzata e presenta una sostanziale differenza con le macro che troviamo pronte nella cnc: possono essere adattate secondo esigenza. La macro sarà  quindi scritta considerando diverse strategie ed utensili: il concetto è comunque quello esposto nel primo programma, lavorare a più passate la tasca.
Non approfondisco questo argomento poichè ritengo la realizzazione di una macro personalizzata la cosa migliore per l'operatore. Conosciamo come realizzare la tasca anche con differenti utensili, consciamo come realizzare il reticolato e come leggere la mappa, possiamo introdurre ogni sorta di errore, nascondiamo dietro le quinte tutto il discorso che stiamo facendo mostrando all'operatore solo l'essenziale... possibilità  di variazioni infinite.
Non ho molto tempo a disposizione (sono preso con differenti progetti che mi tolgono tutto il tempo a disposizione) ma la scriverei cosi:

O1000(MATRICE N*N TASCA RETT.)
T1M6
G90G0G54X0Y0S1000M3
G43H1Z50M8
G777 X Y Z9000 U (V) H6 (K6) (I) (J) (W) (T) (Q) D F1000
G90G0Z100M9
M5
G91G28Z0
M30
N9000 #120=2.0; #111=3.0; #112=4.3;.....#149=5.4;M99
N9001 #120=2.3; #111=5.7; #112=3.4;.....#149=2.4;M99
N9002 #120=2.0; #111=3.3; #112=8,4;.....#149=4.8;M99
-----
-----
N90.. #120=2.0; #111=3.0; #112=4.3;.....#149=5.4M99

Smetto, vi ho già  annoiato troppo!

claugo
Junior
Junior
Messaggi: 94
Iscritto il: sabato 24 dicembre 2011, 12:43
Località: modena

Re: Sfida dei Controlli C.N.

Messaggio da claugo » venerdì 30 marzo 2012, 19:02

badade ha scritto:.....
Prima di esaminare il problema proposto mi sento di dire che non credo continuerò a postare esempi di programmazione, o riflessioni, aspetterò la partecipazione di altre persone, le riflessioni di programmatori che usano altri controlli.....!
Concordo con te che in due non stimola molto la discussione pubblica, anche se devo dire che mi
è piaciuto molto e soprattutto ho imparato qualcosa di nuovo sul Fanuc. Mi chiedo però se in questo forum ci siano dei programmatori di CN a bordo macchina, a parte i pochi intervenuti.

Ti posto il programma Selca finito e testato in grafica, si può copiare e portare direttamente sul CN. Questo lo dico a chiunque sia interessato a vedere e a provare in grafica questo piccolo programma. Solo una cosa.... sulla serie 40 non funziona G78XYZ-P0., bisogna usare la G777.
Sulla serie 30 e sul 1200, funziona benissimo..

Come ti dicevo il programma è diventato una grande variabile, e spero che sia abbastanza chiaro
da capire. Ho aggiunto anche una funzione di salto e cioè mettendo come possibilità  di saltare una o più cave inserendo un segno negativo nella profondità .

Ok, un Saluto a tutti e buon proseguimento nel Forum.

N1 O1
N2 T10M6
N3 S2800M3
N4 P20=0
N5 [ PROFONDITA' FISSA / SE 0 LEGGE MAPPA
N6 P1=22
N7 [ PASSO IN X
N8 P2=22
N9 [ PASSO IN Y
N10 P3=6
N11 [ NUMERO CAVE IN X
N12 P4=6
N13 [ NUMERO CAVE IN Y
N14 P5=4
N15 [ DIAMETRO UTENSILE
N16 P11=20
N17 [ DIMENSIONE CAVA IN X
N18 P12=20
N19 [ DIMENSIONE CAVA IN Y
N20 P21=2
N21 [ MASSIMA ASPORTAZIONE IN Z
N22 [=========++++++++++========
N23 P3=P3-1
N24 P4=P4-1
N25 P5=P5/2
N26 P7=P1*P3/2
N27 P8=P2*P4/2
N28 P11=P11/2
N29 P12=P12/2
N30 P18=1
N31 P99=60
N32 P0=P20
N33 P23=P0
N34 [=========++++++++++========
N35 {P20>0}L1
N36 L3
N37 [ LEGGE SOTTOPROGRAMMA MAPPATURA
N38 L=1
N39 {P20>0}L6
N40 [ SE P20 > 0 NON LEGGE LA MAPPA E VA A L=6
N41 P0=PP99
N42 [ PP99 E' UNA FUNZIONE DI PARAMETRO SU PARAMETRO
N43 P23=P0
N44 [ P99=60 -----> PP99 EQUIVALE A P60
N45 P99=P99+1
N46 [ INCREMENTO IL P99 PER PORTARLO A 61,62,63,ECC....
N47 L=6
N48 G51XP7YP8
N49 [ TRASLAZIONE ORIGINE
N50 L2
N51 [ RICHIAMO SOTTO PROGRAMMA L=2
N52 P7=P7-P1
N53 L1KP3
N54 [ RIPETIZIONE DA L=1 PER IL VALORE DI P3
N55 {P20>0}L7
N56 [ SE P20 > 0 NON LEGGE LA MAPPA E VA A L=7
N57 P18=P18+1
N58 P99=60
N59 L3
N60 L=7
N61 P1=-P1
N62 P7=P7-P1
N63 P8=P8-P2
N64 L1KP4
N65 [ RIPETIZIONE DA L=1 PER IL VALORE DI P4
N66 Z200R
N67 [ SVINCOLO ASSE Z A FINE LAVORO
N68 M30
N69 [ FINE PROGRAMMA
N70 [===============
N71 [====================
N72 [ SOTTO PROGRAMMA L=2
N73 L=2
N74 {P0<0}L9
N75 [ SE P0 < 0 SALTA LA LAVORAZIONE E VA A L=9
N76 X0Y0R
N77 Z5R
N78 Z0F400
N79 [ VERIFICA LA PROFONDITA' DI PASSATA
N80 {P0<=P21}L8
N81 P0=P21
N82 [ ==================================
N83 L=8
N84 [ ==== CALCOLO DEL FONDO DELLA TASCA CON ANGOLO DISCESA DI 45
N85 P13=P11-P0
N86 P14=P12-P0
N87 [ ===========================================================
N88 [ ATTIVAZIONE CORETTORE RAGGIO
N89 G49IP5
N90 [ ============================
N91 [ ==== INIZIO CICLO DI CAVA MACRO G77
N92 G77XP13YP14
N93 X-P13
N94 Y-P14
N95 G78XP13Z-P0F300
N96 [ ==== CHIUSURA CICLO CAVA CON DISCESA IN RAMPA
N97 X0Y0
N98 [ CICLO DI CNDIZIONI PER VEIFICARE LA PROFONDITA' DI LAVORO
N99 {P0=P23}L9
N100 P0=P0+P21
N101 {P0<P23}L8
N102 P0=P23
N103 {P0=P23}L8
N104 [==========================================================
N105 L=9
N106 Z5R
N107 G32
N108 [ RITORNO DA SOTTOPROGRAMMA
N109 L=3
N110 [ CREO UNA MAPPATURA DELLE PROFONDITA'
N111 [ MAPPATURA PRIMA RIGA
N112 P60=2.2
N113 P61=-2.1
N114 P62=-2
N115 P63=-2
N116 P64=-2.1
N117 P65=2.2
N118 P66=0
N119 P67=0
N120 P68=0
N121 P69=0
N122 P70=0
N123 P71=0
N124 P72=0
N125 P73=0
N126 P74=0
N127 P75=0
N128 P76=0
N129 P77=0
N130 P78=0
N131 P79=0
N132 P80=0
N133 {P18=1}L4
N134 [ 2a RIGA
N135 P60=-2.1
N136 P61=2.1
N137 P62=2
N138 P63=2
N139 P64=2.1
N140 P65=-2.1
N141 P66=0
N142 P67=0
N143 P68=0
N144 P69=0
N145 P70=0
N146 P71=0
N147 P72=0
N148 P73=0
N149 P74=0
N150 P75=0
N151 P76=0
N152 P77=0
N153 P78=0
N154 P79=0
N155 P80=0
N156 {P18=2}L4
N157 [ 3a RIGA
N158 P60=2
N159 P61=2
N160 P62=2
N161 P63=2
N162 P64=2
N163 P65=2
N164 P66=0
N165 P67=0
N166 P68=0
N167 P69=0
N168 P70=0
N169 P71=0
N170 P72=0
N171 P73=0
N172 P74=0
N173 P75=0
N174 P76=0
N175 P77=0
N176 P78=0
N177 P79=0
N178 P80=0
N179 {P18=3}L4
N180 [ 4a RIGA
N181 P60=2
N182 P61=2
N183 P62=2
N184 P63=2
N185 P64=2
N186 P65=2
N187 P66=0
N188 P67=0
N189 P68=0
N190 P69=0
N191 P70=0
N192 P71=0
N193 P72=0
N194 P73=0
N195 P74=0
N196 P75=0
N197 P76=0
N198 P77=0
N199 P78=0
N200 P79=0
N201 P80=0
N202 {P18=4}L4
N203 [ 5a RIGA
N204 P60=-2.1
N205 P61=2.1
N206 P62=2
N207 P63=2
N208 P64=2.1
N209 P65=-2.1
N210 P66=0
N211 P67=0
N212 P68=0
N213 P69=0
N214 P70=0
N215 P71=0
N216 P72=0
N217 P73=0
N218 P74=0
N219 P75=0
N220 P76=0
N221 P77=0
N222 P78=0
N223 P79=0
N224 P80=0
N225 {P18=5}L4
N226 [ 6a RIGA
N227 P60=2.2
N228 P61=-2.1
N229 P62=-2
N230 P63=-2
N231 P64=-2.1
N232 P65=2.2
N233 P66=0
N234 P67=0
N235 P68=0
N236 P69=0
N237 P70=0
N238 P71=0
N239 P72=0
N240 P73=0
N241 P74=0
N242 P75=0
N243 P76=0
N244 P77=0
N245 P78=0
N246 P79=0
N247 P80=0
N248 {P18=6}L4
N249 [ 7a RIGA
N250 P60=0
N251 P61=0
N252 P62=0
N253 P63=0
N254 P64=0
N255 P65=0
N256 P66=0
N257 P67=0
N258 P68=0
N259 P69=0
N260 P70=0
N261 P71=0
N262 P72=0
N263 P73=0
N264 P74=0
N265 P75=0
N266 P76=0
N267 P77=0
N268 P78=0
N269 P79=0
N270 P80=0
N271 {P18=7}L4
N272 [ 8a RIGA
N273 P60=0
N274 P61=0
N275 P62=0
N276 P63=0
N277 P64=0
N278 P65=0
N279 P66=0
N280 P67=0
N281 P68=0
N282 P69=0
N283 P70=0
N284 P71=0
N285 P72=0
N286 P73=0
N287 P74=0
N288 P75=0
N289 P76=0
N290 P77=0
N291 P78=0
N292 P79=0
N293 P80=0
N294 {P18=8}L4
N295 [ 9a RIGA
N296 P60=0
N297 P61=0
N298 P62=0
N299 P63=0
N300 P64=0
N301 P65=0
N302 P66=0
N303 P67=0
N304 P68=0
N305 P69=0
N306 P70=0
N307 P71=0
N308 P72=0
N309 P73=0
N310 P74=0
N311 P75=0
N312 P76=0
N313 P77=0
N314 P78=0
N315 P79=0
N316 P80=0
N317 {P18=9}L4
N318 [ 10a RIGA
N319 P60=0
N320 P61=0
N321 P62=0
N322 P63=0
N323 P64=0
N324 P65=0
N325 P66=0
N326 P67=0
N327 P68=0
N328 P69=0
N329 P70=0
N330 P71=0
N331 P72=0
N332 P73=0
N333 P74=0
N334 P75=0
N335 P76=0
N336 P77=0
N337 P78=0
N338 P79=0
N339 P80=0
N340 {P18=10}L4
N341 [ 11a RIGA
N342 P60=0
N343 P61=0
N344 P62=0
N345 P63=0
N346 P64=0
N347 P65=0
N348 P66=0
N349 P67=0
N350 P68=0
N351 P69=0
N352 P70=0
N353 P71=0
N354 P72=0
N355 P73=0
N356 P74=0
N357 P75=0
N358 P76=0
N359 P77=0
N360 P78=0
N361 P79=0
N362 P80=0
N363 {P18=11}L4
N364 [ 12a RIGA
N365 P60=0
N366 P61=0
N367 P62=0
N368 P63=0
N369 P64=0
N370 P65=0
N371 P66=0
N372 P67=0
N373 P68=0
N374 P69=0
N375 P70=0
N376 P71=0
N377 P72=0
N378 P73=0
N379 P74=0
N380 P75=0
N381 P76=0
N382 P77=0
N383 P78=0
N384 P79=0
N385 P80=0
N386 {P18=12}L4
N387 [ 13a RIGA
N388 P60=0
N389 P61=0
N390 P62=0
N391 P63=0
N392 P64=0
N393 P65=0
N394 P66=0
N395 P67=0
N396 P68=0
N397 P69=0
N398 P70=0
N399 P71=0
N400 P72=0
N401 P73=0
N402 P74=0
N403 P75=0
N404 P76=0
N405 P77=0
N406 P78=0
N407 P79=0
N408 P80=0
N409 {P18=13}L4
N410 [ 14a RIGA
N411 P60=0
N412 P61=0
N413 P62=0
N414 P63=0
N415 P64=0
N416 P65=0
N417 P66=0
N418 P67=0
N419 P68=0
N420 P69=0
N421 P70=0
N422 P71=0
N423 P72=0
N424 P73=0
N425 P74=0
N426 P75=0
N427 P76=0
N428 P77=0
N429 P78=0
N430 P79=0
N431 P80=0
N432 {P18=14}L4
N433 [ 15a RIGA
N434 P60=0
N435 P61=0
N436 P62=0
N437 P63=0
N438 P64=0
N439 P65=0
N440 P66=0
N441 P67=0
N442 P68=0
N443 P69=0
N444 P70=0
N445 P71=0
N446 P72=0
N447 P73=0
N448 P74=0
N449 P75=0
N450 P76=0
N451 P77=0
N452 P78=0
N453 P79=0
N454 P80=0
N455 {P18=15}L4
N456 [ 16a RIGA
N457 P60=0
N458 P61=0
N459 P62=0
N460 P63=0
N461 P64=0
N462 P65=0
N463 P66=0
N464 P67=0
N465 P68=0
N466 P69=0
N467 P70=0
N468 P71=0
N469 P72=0
N470 P73=0
N471 P74=0
N472 P75=0
N473 P76=0
N474 P77=0
N475 P78=0
N476 P79=0
N477 P80=0
N478 {P18=16}L4
N479 [ 17a RIGA
N480 P60=0
N481 P61=0
N482 P62=0
N483 P63=0
N484 P64=0
N485 P65=0
N486 P66=0
N487 P67=0
N488 P68=0
N489 P69=0
N490 P70=0
N491 P71=0
N492 P72=0
N493 P73=0
N494 P74=0
N495 P75=0
N496 P76=0
N497 P77=0
N498 P78=0
N499 P79=0
N500 P80=0
N501 {P18=17}L4
N502 [ 18a RIGA
N503 P60=0
N504 P61=0
N505 P62=0
N506 P63=0
N507 P64=0
N508 P65=0
N509 P66=0
N510 P67=0
N511 P68=0
N512 P69=0
N513 P70=0
N514 P71=0
N515 P72=0
N516 P73=0
N517 P74=0
N518 P75=0
N519 P76=0
N520 P77=0
N521 P78=0
N522 P79=0
N523 P80=0
N524 {P18=18}L4
N525 [ 19a RIGA
N526 P60=0
N527 P61=0
N528 P62=0
N529 P63=0
N530 P64=0
N531 P65=0
N532 P66=0
N533 P67=0
N534 P68=0
N535 P69=0
N536 P70=0
N537 P71=0
N538 P72=0
N539 P73=0
N540 P74=0
N541 P75=0
N542 P76=0
N543 P77=0
N544 P78=0
N545 P79=0
N546 P80=0
N547 {P18=19}L4
N548 [ 20a RIGA
N549 P60=0
N550 P61=0
N551 P62=0
N552 P63=0
N553 P64=0
N554 P65=0
N555 P66=0
N556 P67=0
N557 P68=0
N558 P69=0
N559 P70=0
N560 P71=0
N561 P72=0
N562 P73=0
N563 P74=0
N564 P75=0
N565 P76=0
N566 P77=0
N567 P78=0
N568 P79=0
N569 P80=0
N570 {P18=20}L4
N575 M30
N576 L=4
N577 G32

PS. Badate mi riservo un po di tempo per leggere con più calma il tuo ultimo post.... Ciao

torn24
God
God
Messaggi: 5318
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: Sfida dei Controlli C.N.

Messaggio da torn24 » lunedì 2 aprile 2012, 13:33

Ciao , rispondo sul fatto che altri utenti non hanno partecipato alla discussione , prima che concludiate che è un argomento
di poco interesse o che non esistono programmatori a bordo macchina :evil: :D

Badate è consapevole che solo una minima percentuale di programmatori fanuc usa il linguaggio macro ,ma restano degli
ottimi programmatori a bordo macchina , penso che l'opzione macro nei cnc fanuc la devi richiedere e che non sia
disponibile di default.

siete ottimi programmatori uno sul selca l'altro su fanuc , io personalmente conosco un po il linguaggio macro fanuc e quindi
capisco quello che scrive badate , ma per capire il programma selca a me , che non lo conosco, non bastano poche righe di
commento , mi dovrei prendere qualche manuale e studiarmi un po le basi .

per quanto riguarda altri controlli , conoscendo lo z16 o z32 potrei tradurre il programma di badate in un altro linguaggio
col risultato che sarebbe lo stesso identico programma , meno comprensibile per l'autore stesso , a che scopo ??
quinsi se badate avesse la curiosità  di come si scrivano le istruzioni di controllo e le variabili nello z32 lo farei con piacere
per altro non perdo tempo.
CIAO A TUTTI !

badade
Junior
Junior
Messaggi: 166
Iscritto il: mercoledì 5 gennaio 2011, 11:45
Località: Varese

Re: Sfida dei Controlli C.N.

Messaggio da badade » lunedì 2 aprile 2012, 22:37

"Ciao a tutti. La mia non è proprio una sfida ma diciamo piuttosto un confronto tra i vari sistemi C.N."

Appeno ho letto questo parole mi sono detto "qui gatta ci cova", qualcuno vuole dimostrare qualcosa, le proprie capacità  (che non è una cosa malvagia) oppure il confronto con metodi di progammazione differenti. Qualcuno vuole probabilmente capire se altri possiedono livelli di programmazione come i propri. Personalmente penso di avere espresso in modo chiaro le mie intenzioni:

"Ho sempre sostenuto che il concetto logico di programmazione è uguale su ogni cnc, quello che cambia è naturalmente la sintassi in uso (e le opzioni disponibili). Dire che uno è più semplice dell'altro l'ho sempre ritenuto un falso problema, esprimere opinioni negative in relazione ad un controllo ci può stare, ma dire che fa schifo... questo no! (per fortuna non è il caso di questo post, ma ce ne sono tanti altri...). Ben venga dunque una analisi dei vari linguaggi se questo può chiarire aspetti non compresi. Se questo può far aumentare la coscienza di cosa si usa o di cosa si potrebbe usare. Ma attenzione, se il tutto si limiterà  ad una gara, al misurarsi esclusivamente sulla potenza di calcolo o sulle opzioni attive non trarremo nessun frutto da questo post, poi già  tante volte è successo e i risultati li
conosciamo!",

ed il mio unico intento è stato quello di capire e scoprire altre realtà . Deluso? Direi di no! Affranto? Macché!
Ho scritto:

"... non credo continuerò a postare esempi di programmazione, o riflessioni, aspetterò la partecipazione di altre persone, le riflessioni di programmatori che usano altri controlli. Mi fa piacere discutere di questi aspetti, ma se il tutto si riduce a due persone sarebbe meglio farlo in privato. Spero quindi (lasciamo il tempo dovuto) che ci siano altre persone interessate all'argomento!"

e questo esclusivamente per invitare non per criticare. Appartengo come voi a questo mondo, mi ci trovi dentro, lo amo e lo odio, ma mai mi sono permesso di classificare le persone per come programmano o per i mezzi che usano. Ci sono programmatori su centri di lavoro industriali che frequentano questo forum? Certamente! Sono meglio o peggio di noi? Domanda errata! Sono programmatori come noi, forse più bravi.... Perché non hanno partecipato alla discussione?
Non posso saperlo! Conosco tante persone che programmano a bordo macchina, che non conoscono o non usano la programmazione parametrizzata, ma verso i quali nutro un profndo rispetto ed una grande amicizia, non li considero da meno ed apprezzo il loro ingegno. Io è molto che ho fatto questa scelta (certo Torn24, avendone la possibilità ) ed è logico che rispondo per quel che uso. Ricordo comunque, che l'argomento è l'analisi delle possibilità  offerte da un controllo, (qualsiasi controllo, vecchio o nuovo) al fine di adattarsi alle mutevoli condizioni. Non è una gara (per me non lo è stato) a chi riesce a scrivere il "programma più bello", ma un confronto che avrebbe dovuto portare ad esempio all'affermazione: " il mio controllo non mi permette di fare ciò, io lo svolgo cosi, questa funzione mi è strana, direi che...
Zeffiro ricordava la grande varietà  di controlli Fanuc ad indicare che il confronto Selca/Fanuc O era impari. Affermazione giusta ma ritengo non completa! E' proprio questa differenza che dovrebbe farci capire fino a quanto noi possiamo agire sul nostro controllo al limite delle possibilità . Il dover dire "basta non riesco ad eseguire la determinata lavorazione (in modo semlice e a bordo macchina) non implica una sconfitta, ma la semplice conoscenza di cosa la cnc in questione ci permette di fare (sempre che qualcuno non ci dimostri di saper fare meglio). Per me questo è il fulcro del post!
E' un discorso molto delicato che chiama in causa non solo la programmazione ma anzitutto la persona e come sappiamo bene non sempre siamo disposti
ad accettare determinarte realtà  o semplicemente a riconoscerle. Avevo in mente di postare un simile esempio (l'incapacità  di eseguire la lavorazione su determinati controlli) ma poi le cose sono andate diversamente e quindi non ne ho avuto l'occasione...
Mi sento di dover dire a chiare lettere ( e spero di risvegliare qualche animo), che spesso noi programmatori ci mettiano a confronto, o "sconfronto" se preferite, una sorta di reverenza nei confronti di coloro che dimostrano di conoscere più a fondo un determinato controllo. Se da un lato si rende onore alla conoscenza, (e alla persona) dall'altro si minimizza il nostro sapere (che non è poco). Per quale motivo un programma parametrizzato dovrebbe essere meglio del mio che non lo è? Per quale motivo lui che scrive un bellissimo programma con variabili dovrebbe essere osannato, ed io che mi sono fatto un paiolo tanto (senza variabili),
devo essere considerato di seconda serie? E' indubbiamente così, esiste una sorta di gara tra noi programmatori che ci porta a reverenze a dir poco....(metteteci quello che volete). Certamente la parametrizzazione offre soluzioni più agevoli (spesso la programmazione iso non lo permette), ma lungi dall'osannare perché la si conosce: non è il sapere ma èl'uso del sapere che rende una persona differente dall'altra! Io credo che questa forma di reverenza abbia bloccato molti programmatori (dividiamoci la colpa, dai). Quando scrivo relativamente ad un argomento mi capita di usare spesso il condizionale, è una forma espressiva ad indicare il continuo mutamento, la capacità  di sapere cogliere l'importante e non fossilizzarsi sulle cose presenti. Ma sicuramente alcune espressioni sono affermative: non si smette mai di imparare... è una di queste! Torn24, se tu postassi non solo un esempio ma una piccola guida sulla programmazione parametrica
Z16/Z32, personalmente te ne sarei grato, cosi come molte altre persone. Ho scritto un manuale, l'ho postato qui nel forum e avrei voluto che altre persone seguissero l'esempio. Chi sa, deve elargire il proprio sapere, chi non sa deve apprendere per poi divulgare.
Vabbè, vi ho già  stancato, e scusate se ho parlato tanto ma poco di programmazione. Non traggo riflessioni negative da questo post (che penso rimarrà  comunque aperto a future riflessioni), al contrario rinnovo l'invito a tutti a postare esempi, dubbi, riflessioni, e non badate alla forma o alla reverenza, il contenuto è ciò che ha valore.
Torn24, aspetto il tuo post, grazie.

torn24
God
God
Messaggi: 5318
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: Sfida dei Controlli C.N.

Messaggio da torn24 » martedì 3 aprile 2012, 14:43

Ciao , secondo me è più una sfida a scacchi usando controlli diversi :D

Per la guida ,lo z32 è un controllo italiano quindi esiste online una guida italiana per il controllo ,
non sono in grado di scriverla una migliore "o si" :badgrin: :badgrin:

per guardare solo la programmazione parametrica senza studiarti tutto il cnc
ricerca nel pdf , righe evolute condizionamenti , poi esiste la programmazione strutturata simile al basic con if elseif else
do loop ma è meno usata.
http://www.delectron.it/index.php

io di seguito , vorrei indicare alcune caratteristiche SOMIGLIANZE che danno al controllo z32 le stesse potenzialità  del linguaggio macro fanuc.

non è un controllo ne migliore ne peggiore , e io personalmente preferisco Fanuc o affini "Mizubishi haas"

Il controllo dispone di due tipi di programmazione parametrica ,con righe evolute "è il modo con cui chiamano questo tipo
di programmazione" eriditata dallo z16 e ancora la piu usata , e la programmazione strutturata -


il cnc z32 usa combinazioni di caratteri a cui attribuisce un significato preciso

ESEMPIO
AA indica il primo asse di una terna di lavoro che normalmente è xyz
AA si puo usare al posto di X
AB si puo usare al posto di Y
AC si puo usare al posto di Z
tutte le combinazioni di caratteri non usate dal controllo possono essere usate come VARIABILI
AD non è usata è puo essere usata come variabile

Quindi il controllo come fanuc dispone di variabili , di istruzioni condizionali e di salti


equivalenza con fanuc
FANUC
#100=10
IF[#100GT1] GOTO 5

Z32
XB<10>
!IFXB>1;GON5! ( SE LA CONDIZIONE IF è VERA ESEGUE IL SALTO DOPO IL ; )


FANUC
#100=1
WHILE[#100LE10]DO1

#100=#100+1
....
....
END1


Z32
HI<1>
N10
.....
.....
!HI=HI+1!IFHI<=10;GON10! (INCREMENTA HI DI 1 SE <=10 SALTA ALLA RIGHA 10 E RIPETE )





Un esempio tratto dal manuale di ciclo fisso equivalente a g83 fanuc , da precisare che non è un esempio di "macro"
ma è propio il ciclo fisso che si trova sulla macchina scritto in questo modo
per capirlo tieni presente che AC è Z
Parametri:
HA inizio foro
HB fine foro
HC uscita lunga
R raggio utensile
HE uso interno




FORATURA PROFONDA%
N1 HE<HA> mette HE a inizio foro
N2 G0 AC<HE> rapido fino a inizio foro da fare
N3 !HE=HE-2*R! incrementa HE di due volte il raggio,
N4 !IFHE<=HB;HE=HB! limitandolo a fine foro
N5 G1 AC<HE> fora fino ad HE
N6 G0 AC<HA> scarico rapido fino a inizio foro
N7 !IFHE>HB;GON2! se non ha finito il foro ripete
N8 G0 AC<HC> HE0 G26 rapido fino a uscita lunga
CIAO A TUTTI !

claugo
Junior
Junior
Messaggi: 94
Iscritto il: sabato 24 dicembre 2011, 12:43
Località: modena

Re: Sfida dei Controlli C.N.

Messaggio da claugo » mercoledì 4 aprile 2012, 11:32

Ciao a tutti
Leggendo questi ultimi post devo dire che ho raccolto una certa passione
Il fatto che la programmazione non sia fine a se stessa per la necessità  di sbarcare il lunario per me è molto positivo, e l'apprezzo molto in un programmatore.
Io personalmente non ho mai amato la competizione del più bravo, e mi sembra che in questo post
sia stato esplicitamente detto.... “Questa non vuole essere una gara ma un confronto tra le varie programmazioni dei CN”..... Un modo e uno stimolo in più per imparare qualcosa di nuovo sugli
altri CN.
Per quanto riguarda Torn64 e lo Z32 è interessante ma sinceramente si capisce poco.
Certo potrei andare a leggere il manuale ma a questo punto il post non servirebbe a niente.
Vi posto una cosa che ho fatto anni fa... in sostanza sono due interfaccie di programma,
Selca-heidenhain. Il fatto che tutti e due fanno la stessa identica cosa, c'è una minima differenza ma irrilevante, ti da l'opportunità  di capire il CN che non conosci. Se conosco bene il Selca riuscirò
a capire bene, in questo caso, i comandi dell'heidenhain. E così viceversa.

Vorrei aggiungere una cosa... qui non si tratta di vanità  o ostentazione delle proprie capacità ,
ma come dice BADATE, si tratta di imparare, insegnare agli altri ciò che sai, lasciare in rete
una competenza che potrebbe essere utile a qualcuno che si avvicina a un CN qui menzionato.

Non date a questo post una immagine di virtuosismo, perché non è così....

Grazie a tutti...

claugo
Junior
Junior
Messaggi: 94
Iscritto il: sabato 24 dicembre 2011, 12:43
Località: modena

Re: Sfida dei Controlli C.N.

Messaggio da claugo » mercoledì 4 aprile 2012, 11:43

Non sono riuscito ad allegare il file di programma....
Avevo provato a mettere un programma di fianco all'altro per un confronto diretto
ma non mi accetta il file perchè di dimensioni troppo grandi.... lo mando via testo

0 BEGIN PGM TCPR1 MM
1 BLK FORM 0.1 Z X-200 Y-100 Z-10
2 BLK FORM 0.2 X+1500 Y+100 Z+50
3 Q100 = 1
/4 ; =======================
5 CYCL DEF 7.0 POINT ZERO
6 CYCL DEF 7.1 #Q100
/7 ; =======================
8 Q0 = 4,5 ; PROF TAMPON
9 Q1 = 249,73 ; QUOTA IN X
10 Q2 = 399,82 ; qUOTA IN Y
11 Q4 = 1 ; LARGEUR DU BORD 1 POUR PS
12 Q5 = 5 ; RAYON DU PROFILE
13 Q8 = 1 ; NOMBRE DE PIECE
14 Q9 = 307,58 ; INCRIMENTATION
15 Q11 = 0 ; RAYON ANGULAIRE
/16 ; ========================
/17 ; 1) Ut per angolini Lisci
/18 ; 2) Ut per Sgross Lisci
/19 ; 3) Ut Finitura Lisci
/20 ; 4) Ut Finitura Marche
/21 ; 5) Ut Angoli Marche
22 Q99 = 45 ; 231
23 ; / ======================
24 Q96 = 1000
25 LBL 1
26 Q97 = INT (Q99 / Q96)
27 Q99 = Q99 - (Q97 * Q96)
28 Q96 = Q96 / 10
29 FN 9: IF +Q97 EQU +1 GOTO LBL 2
30 FN 9: IF +Q97 EQU +2 GOTO LBL 3
31 FN 9: IF +Q97 EQU +3 GOTO LBL 3
32 FN 9: IF +Q97 EQU +4 GOTO LBL 3
33 FN 9: IF +Q97 EQU +5 GOTO LBL 4
34 FN 12: IF +Q96 LT +1 GOTO LBL 20
35 FN 9: IF +Q97 EQU +0 GOTO LBL 1
36 STOP M30
37 LBL 2
38 CALL PGM TNC:\TAMPON\MAG.H
39 TOOL CALL Q20 Z SQ64
40 CALL PGM TNC:TAMPON\RAYON
41 L Z+100 F MAX M5
42 FN 11: IF +Q96 GT +0 GOTO LBL 1
43 LBL 3 ;
44 CALL PGM TNC:\TAMPON\MAG.H
45 TOOL CALL Q20 Z SQ64
46 CALL PGM TNC:\TAMPON\GIRO
47 L Z+100 F MAX M5
48 FN 11: IF +Q96 GT +0 GOTO LBL 1
49 LBL 4
50 CALL PGM TNC:\TAMPON\MAG.H
51 TOOL CALL Q20 Z SQ64
52 CALL PGM TNC:\TAMPON\ANGOLIM.H
53 L Z+100 F MAX M5
54 FN 11: IF +Q96 GT +0 GOTO LBL 1
55 LBL 20
56 STOP M30
57 END PGM TCPR1 MM



N1 [ New Program for Working
N2 [ Back side punch and Smooth side punch
N3 [************************************
N4 [ 9) Program Pause
N5 [ 1) External Roughing
N6 [ 2) 1st release
N7 [ 3) 2nd release
N8 [ 4) Internal Working
N9 [ 5) Finishing with air escape
N10 [ 6) Finishing without air escape
N11 [ 7) CUTS FOR SMOOTH SIDE PUNCHES
N12 [************************************
N13 P159=1246
N14 [************************************
N15 P160=112
N16 [ P160= 111-BACK SIDE PUNCH 112-SMOOTH SIDE PUNCH
N17 P251=424.18
N18 [ X FINISHED MEASURE
N19 P252=424.18
N20 [ Y FINISHED MEASURE
N21 P155=27
N22 [ PIECE HEIGHT
N23 P141=423.16
N24 [P141 MEASURE X ZERO SETTING
N25 P142=423.16
N26 [ P142 MEASURE Y ZERO SETTING
N27 P133=1
N28 [ P133 = PIECES NUMBER
N29 P198=50.01
N30 [ THICKNESS FOR PITCH
N31 P117=0
N32 [ PUNCH ANGLE RADIUS
P201=1
[ EXUCUTE FROM THE PEICE N.
N33 LAZZ:
N34 O23
N35 [************************************
N36 P109=100000000
N37 L=20
N38 P108=P159/P109
N39 {P108>=1}L21
N40 P109=P109/10
N41 {P108<P109}L20
N42 L=21
N43 P110=INT(P108)*P109
N44 P159=P159-P110
N45 P111=INT(P108)
N46 P109=P109/10
N47 {P111=9}L10
N48 {P111=1}L1
N49 {P111=2}L2
N50 {P111=3}L3
N51 {P111=4}L4
N52 {P111=5}L5
N53 {P111=6}L6
N54 {P111=7}L12
N55 {P109>=1}L20
N56 Z200R
N57 M30

mecha
Member
Member
Messaggi: 423
Iscritto il: venerdì 13 marzo 2009, 22:00
Località: udine

Re: Sfida dei Controlli C.N.

Messaggio da mecha » venerdì 6 aprile 2012, 0:58

Purtroppo il tempo e' quello che e'... non riesco a seguire e partecipare attivamente.
Questo 3d pero' penso sia molto interessante per capire come funzionano i vari cnc e valutarne i punti di forza e non.
Ora mi rendo conto che il Siemens 840d, grazie al fatto di poter dare dei nomi alle variabili, rende piu' leggibile il programma anche a distanza di tempo dalla sua stesura.
Consiglierei di fare dei "rientri" per comprendere meglio gli annidamenti anche a colpo d'occhio es:
xxx
xxx
xxx
if 001
while 003
if 002
xxxx
xxxx
else 002
xxxx
xxxx
endif 002
endwhile 003

else 001
xxxx
xxxx
endif 001


Sui manuali sono anche a disposizione tutte le variabili del cnc e quindi si puo' creare programmi che lo modificano in ogni aspetto (tanta roba da leggere :? ).
Altri cnc che ho usato (molto piu' datati pero') non davano tutte queste possibilita', Selca e Fanuc sotto questo aspetto come sono?.
C'e' da dire che Siemens ha poche funzioni azzeccate per l'uso bordo macchina e questo mi ha spinto a crearmene di mie, se un cn ha gia tutto funzionale non serve sbattersi tanto.
Programmare a bordo macchina vuol dire anche doversi sbrigare ( dato che spesso la macchina e' ferma ) e in questo le macro ben fatte fornite con il cnc aiutanoa non perdere ulteriore tempo a crearle.

Mandi Mecha

claugo
Junior
Junior
Messaggi: 94
Iscritto il: sabato 24 dicembre 2011, 12:43
Località: modena

Re: Sfida dei Controlli C.N.

Messaggio da claugo » venerdì 6 aprile 2012, 10:55

mecha ha scritto:Purtroppo il tempo e' quello che e'... non riesco a seguire e partecipare attivamente.....
Capisco e comprendo la situazione che ci appartiene un po a tutti..... il tempo.

Il Selca sotto l'aspetto di condizioni while if else è molto scarso e ha le classiche condizioni, come anche heidenhain, di > < <> = <= >=. Per avere le condizioni di If else bisogna costruirsele.

Anche il Siemens sembra molto interessante, così come lo Z32 che ha citato Torn64. E chissà  quanti altri ne esistono e noi non ne siamo neanche a conoscenza.

Vi faccio una proposta per arricchire questo post... Vi chiedo di postare un vostro programma parametrizzato, quello che ritenete vi sia venuto meglio, con allegato una spiegazione o tanto meglio un disegno. Casomai, cosa non indispensabile ma utile, che il programma tenga conto di variazioni tipo, lunghezza, larghezza, spessore, ec...

Grazie a Tutti, Ciao

riky56
Newbie
Newbie
Messaggi: 35
Iscritto il: giovedì 8 dicembre 2011, 15:40
Località: Verona

Re: Sfida dei Controlli C.N.

Messaggio da riky56 » sabato 7 aprile 2012, 0:21

io proporrei invece che chi ha aperto la discussione alleghi un disegno semplice di un particolare di fresa o di tornio
e man mano confrotare i progammi diversi fatti su molteplici controlli.
Chi è esperto di selca chi con il fanuc, simens ecc possono allegare il proprio progamma e confrontarlo con gli altri basandosi sempre sullo stesso pezzo che cosi le differenze si notano subito. E lasciamo stare il capitolo macro variabili, troppo dispersivo e non comprensibile per neofiti. Con i cicli fissi di serie su tutti i controlli si possono esegure bene o male tutti i pezzi di sto mondo, senza usare tanti if while tan goto eq

Comunque a mio avviso l'abbinata fanuc+manual guide per programmatori a bordo macchina di piccoli lotti non ha rivali 8) ....

Rispondi

Torna a “Programmazione CNC”