Verifica variabili doppie

Sezione Fanuc
Rispondi
Guerzo
Newbie
Newbie
Messaggi: 12
Iscritto il: sabato 10 giugno 2017, 13:39

Verifica variabili doppie

Messaggio da Guerzo » giovedì 2 giugno 2022, 10:17

Vorrei capire come controllare se l'operatore ha inserito due utensili con la stessa numerazione, il CN è Fanuc 16M.
Premetto che non sono un programmatore e che l'uso della programmazione parametrica non è il mio pane quotidiano.
L'esempio riportato è puramente didattico perché bisogna modificare il PMC e trasferire i Data Table degli utensili alle variabili, ma è un problema che si è verificato e sono curioso di capire se può essere la direzione giusta per la risoluzione del difetto.
La M.U. assegna la tabella utensili alle variabili #700 fino alla #780 per un totale di 80 utensili che possono avere una numerazione illimitata a scelta. ES: #700 = 1 oppure #700 = 150
Mi piacerebbe riuscire a torvare il sistema per verificare che gli utensili associati alle variabili non siano stati inseriti due volte e scatenare un messaggio di allarme.
ES: #740 = 3 e #750=3, il sistema a questo punto legge due volte lo stesso numero utensile e scatena allarme #3000 = 1 (Errore UT Doppio)
Grazie in anticipo a chi potrebbe aiutarmia capire.

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

Re: Verifica variabili doppie

Messaggio da torn24 » giovedì 2 giugno 2022, 11:35

Il programma si può fare abbastanza facilmente. Un ciclo che ripete il numero unsile, con annidato un ciclo che ripete per tutte le variabili. A seconda dei numero utensile usati es T1000, ci potrebbe volere tempo, maggiore il numero. Maggiori le ripetizioni. Se l errore si ripete più volte diventa complicato, ossia tante volte utensili uguali. In pratica si fa prima con i messaggi di errore del CNC.
CIAO A TUTTI !

Guerzo
Newbie
Newbie
Messaggi: 12
Iscritto il: sabato 10 giugno 2017, 13:39

Re: Verifica variabili doppie

Messaggio da Guerzo » giovedì 2 giugno 2022, 12:19

Provo a spigarmi meglio:
La numerazione illimitata è vincolata alle 80 variabili, quindi sono sempre 80 le variabili da controllare che non ce ne siano due aventi la stessa numerazione.
La variabile #700 può avere qualsiasi valore, ma deve essere sempre diversa dalle altre fino alla #780.
Spero di essere stato più esaustivo.
Grazie

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

Re: Verifica variabili doppie

Messaggio da torn24 » giovedì 2 giugno 2022, 16:49

Avevo capito, cerco di essere più chiaro. Con le macro fanuc al massimo arrivi a fare quello che.fa adesso il CNC, niente di più, niente di meglio. Puoi arrivare ad eseguire un programma e ottenere lo stesso messaggio. Capisci che farlo non ha senso.
CIAO A TUTTI !

Guerzo
Newbie
Newbie
Messaggi: 12
Iscritto il: sabato 10 giugno 2017, 13:39

Re: Verifica variabili doppie

Messaggio da Guerzo » giovedì 2 giugno 2022, 18:28

Il difetto dello stato attuale è che se chiamo lo stesso utensile con correttore differente, quindi caratteristiche differenti, ho la certezza di avere una collisione tra utensile e pezzo, cosa che è accaduta.
La libertà di scelta da parte dell'operatore di gestire separatamente utensile e usura, lunghezza ect..ect.. può, per colpa di una distrazione, creare danno.
Dopo la collisione prima di lanciare i programmi, eseguono un controllo per verificare che non ci siano doppioni.
Per evitare il controllo per ogni cambio di produzione o cambio programma, all'inizio del ciclo, faccio lanciare il programma macro di controllo che se termina correttamente lascia proseguire il programma di lavorazione.

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

Re: Verifica variabili doppie

Messaggio da torn24 » venerdì 3 giugno 2022, 7:15

Proviamo a fare una macro B FANUC , un normale programma con codice macro B. Forse non funziona al primo colpo e bisognerà correggerlo :D

Codice: Seleziona tutto

O1000 (Si scelga il numero programma che si vuole)
#100=1 (Contatore numero utensile)
#101=700 (Variabile che indica la variabile utensile da #700 a #780)
#102=0 (Variabile uso interno macro)

WHILE[#100 LE 200] DO1 (Ripete fino a utensile T200 cabiare 200 con numero massimo utensile)
   
    #101=700
    #102=0
    WHILE[#101 LE 780] DO2 (Ripete per le variabili utensile)
        IF[[#[#101] EQ #100] AND [#102 EQ 0]] THEN #102=1 (Se la variabile utensile è uguale al numero utensile utensile trovato una volta)
        IF [[#[101] EQ #100] AND [#102 EQ 1]] GOTO10 (Utensile trovato la seconda volta)
        GOTO50
        N10  3000=1 (Utensile programmato due volte)
        N50
    END2
END1

M2
Come funziona, esegui il programma se trova due utensili uguali da messaggio di errore, e tu vai a controllare manualmente la tabella utensili e correggi, devi eseguire di nuovo il programma finché non da più messaggi di errore perché potrebbero esserci più coppie di utensili uguali.
Esempio trovo due volte 3, ma potrebbe esserci un altro 3, oppure avere anche due 4. Praticamente devi ripetere il programma finché non da più messaggio di errore, allora sai che non ci sono utensili doppi.
CIAO A TUTTI !

Guerzo
Newbie
Newbie
Messaggi: 12
Iscritto il: sabato 10 giugno 2017, 13:39

Re: Verifica variabili doppie

Messaggio da Guerzo » venerdì 3 giugno 2022, 7:59

Non ho capito bene dove incrementa il conteggio del numero UT, la #100 rimane sempre a 1, la #101 non incrementa e non esegue una comparazione con le altre variabili.
Ieri ho studiato alcuni cicli e ho trovato questa soluzione:

Codice: Seleziona tutto

O9xxx
 #781=0 (VARIABILE COPIA DI VERIFICA)
 #782=0 (VARIBILE DI CONTROLLO)
 #783=0 (VARIABILE NUMERO PARTENZA CONTEGGIO)
 #784=80 (VARIABILE NUMERO MAX UT)
 #785=700 (VARIABILE PRIMO UT)
 #786=780 (VARIABILE ULTIMO UT)
 #787=#785 (VARIABILE TEMPORANEA PER CONTEGGIO)
 #788=#786 (VARIABILE TEMPORANEA PER CONTEGGIO)

N1 WHILE [#783EQ#784]DO1
    #781=#[#787]
	#782=#[#788]
	IF [#787EQ#788] GOTO10
	IF [#781EQ#782] GOTO999
	#783=[#783+1]
	#788=[#788-1]
N10 END1
	#783=0
	#788=#786
	#787=[#787+1]
	IF [#787LT#788]GOTO1
M99
N999
#3000=1 (UTENSILE DOPPIO CONTROLLA E RIPETI)	
M99

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

Re: Verifica variabili doppie

Messaggio da torn24 » venerdì 3 giugno 2022, 8:14

Si infatti mi sono scordato di incrementare le variabile, se hai una macro già fatta quale sarebbe il problema?
Le variabile
Correzione al codice che ti ho postato #100 e #101 sono contatori usati nelle condizioni del while, la prima conta gli utensili, la seconda le variabili da 700 a 780.

Codice: Seleziona tutto


O1000 (Si scelga il numero programma che si vuole)
#100=1 (Contatore numero utensile)
#101=700 (Variabile che indica la variabile utensile da #700 a #780)
#102=0 (Variabile uso interno macro)

WHILE[#100 LE 200] DO1 (Ripete fino a utensile T200 cabiare 200 con numero massimo utensile)
   
    #101=700
    #102=0
    WHILE[#101 LE 780] DO2 (Ripete per le variabili utensile)
        IF[[#[#101] EQ #100] AND [#102 EQ 0]] THEN #102=1 (Se la variabile utensile è uguale al numero utensile utensile trovato una volta)
        IF [[#[101] EQ #100] AND [#102 EQ 1]] GOTO10 (Utensile trovato la seconda volta)
        GOTO50
        N10  3000=1 (Utensile programmato due volte)
        N50
        #101=[#101+1]
    END2
    #100=[#100+1]
END1

M2





CIAO A TUTTI !

Guerzo
Newbie
Newbie
Messaggi: 12
Iscritto il: sabato 10 giugno 2017, 13:39

Re: Verifica variabili doppie

Messaggio da Guerzo » venerdì 3 giugno 2022, 11:02

torn24 ha scritto:
venerdì 3 giugno 2022, 8:14
Si infatti mi sono scordato di incrementare le variabile, se hai una macro già fatta quale sarebbe il problema?
Fino a ieri non l'avevo, l'ho creata ieri... a dire il vero quando ho postato la richiesta di aiuto credevo fosse più complesso crearla.
Ora mi rimane solo testarla e poi capire come gestire il PMC per estrapolare le variabili utili.
In ogni caso grazie per l'aiuto.

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

Re: Verifica variabili doppie

Messaggio da torn24 » lunedì 6 giugno 2022, 5:42

Dopo giorni ripensandoci mi sono accorto di un BUG, nel primo IF trova una volta l'utensile, ma viene eseguito subito il secondo IF, per cui da sempre messaggio di errore. Una correzione trova l'utensile e salta il secondo IF, cosi il secondo IF viene eseguito solo alla successiva variabile utensile.

Codice: Seleziona tutto



O1000 (Si scelga il numero programma che si vuole)
#100=1 (Contatore numero utensile)
#101=700 (Variabile che indica la variabile utensile da #700 a #780)
#102=0 (Variabile uso interno macro)

WHILE[#100 LE 200] DO1 (Ripete fino a utensile T200 cabiare 200 con numero massimo utensile)
   
    #101=700
    #102=0
    WHILE[#101 LE 780] DO2 (Ripete per le variabili utensile)
        IF[[#[#101] EQ #100] AND [#102 EQ 0]] GOTO5 (Se la variabile utensile è uguale al numero utensile utensile trovato una volta)
        IF [[#[101] EQ #100] AND [#102 EQ 1]] GOTO10 (Utensile trovato la seconda volta)
        GOTO50
        N5 #102=1
        GOTO50
        N10  3000=1 (Utensile programmato due volte)
        N50
        #101=[#101+1]
    END2
    #100=[#100+1]
END1

M2











CIAO A TUTTI !

Rispondi

Torna a “Fanuc”