no way to compare when less than two revisions
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
— | software:qview:qview_6:qcl_library:dc22rotcut [2019/08/29 17:01] (versione attuale) – creata - modifica esterna 127.0.0.1 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | ====== DC22RotCut ====== | ||
+ | |||
+ | **D = **//Device( camming3, camming4)// | ||
+ | |||
+ | **C = **// | ||
+ | |||
+ | ===== DESCRIZIONE GENERALE ===== | ||
+ | |||
+ | La funzione DC22RotCut __esegue i calcoli necessari e provvede alla scrittura della cam table di un device CAMMING3 o CAMMING4 per poter eseguire un //taglio al volo circolare// | ||
+ | In particolare la funzione gestisce il controllo di un asse (Slave) costituito da un cilindro di taglio mono o multi lama (massimo 6 lame) sincronizzandolo al materiale da tagliare mediante la lettura del conteggio dato da un encoder (Master) posto sul materiale stesso.\\ | ||
+ | La funzione ha la possibilità (opzionale) di rifasare il conteggio dell' | ||
+ | La funzione può, inoltre, sincronizzare il taglio sul materiale tramite una fotocellula, | ||
+ | Per il taglio di materiale da scartare, la funzione è in grado di gestire il comando di un taglio " | ||
+ | |||
+ | fig.1\\ | ||
+ | {{.: | ||
+ | |||
+ | ===== DESCRIZIONE DETTAGLIATA ===== | ||
+ | |||
+ | La risoluzione dell' | ||
+ | Il parametro " | ||
+ | Nello spazio tra un tratto di taglio e l' | ||
+ | La funzione deve essere posta su un punto dell' | ||
+ | |||
+ | ==== PRESET ==== | ||
+ | |||
+ | L' | ||
+ | Il preset deve azzerare il conteggio (o caricare una quota in esso), in modo che quando il conteggio ha valore 0 la lama (o una delle lame) si trovi esattamente sul punto di taglio (vedere la fig.1).\\ | ||
+ | Prima di porre in STARTCAM il device per agganciare lo Slave al Master è necessario portare l'asse Slave in posizione di HOME.\\ | ||
+ | In caso di Asse Slave composto da cilindro **monolama** la quota di posizionamento sarà:\\ | ||
+ | QUOTA_POS = QUOTA DI HOME | ||
+ | |||
+ | In caso Asse Slave composto da cilindro **multilama** la quota di posizionamento sarà:\\ | ||
+ | QUOTA_POS = ANG_GIRO - (SPAZIO_SYNC/ | ||
+ | |||
+ | Dove:\\ | ||
+ | QUOTA DI HOME = quota inserita nel parametro aslParam[18]\\ | ||
+ | ANG_GIRO = 360° (nell' | ||
+ | SPAZIO_SYNC = è il parametro aslParam[6] (" | ||
+ | Per chiarimenti vedere gli esempi in calce. | ||
+ | |||
+ | ==== RIFASAMENTO ASSE CILINDRO DI TAGLIO ==== | ||
+ | |||
+ | L'asse cilindro di taglio ha la possibilità di essere rifasato ad ogni giro mediante un ingresso digitale normale o veloce (ad interrupt).\\ | ||
+ | Il rifasamento è utile in tutti quei casi in cui il rapporto tra un giro del cilindro di taglio e un giro dell' | ||
+ | Una limitazione dell' | ||
+ | |||
+ | ==== COMANDO DI TAGLIO DISSINCRONIZZATO (o manuale) ==== | ||
+ | |||
+ | Impostando a 1 il valore del parametro 19 (aslParam[19]), | ||
+ | Dopo aver settato il comando di taglio manuale, se l'asse slave si trova in posizione di Home, parte subito per eseguire un taglio e riportarsi nuovamente in posizione di Home, da dove attenderà di partire nuovamente per tagliare alla misura di taglio impostata. | ||
+ | |||
+ | ==== SINCRONIZZAZIONE SU MATERIALE TRAMITE FOTOCELLULA ==== | ||
+ | |||
+ | Esiste la possibilità di sincronizzare il taglio del materiale con una tacca presente sul materiale stesso (aslParam[11] = 1).\\ | ||
+ | Tale tacca viene rilevata tramite una fotocellula veloce che entra come interrupt nel Qmove. | ||
+ | Nel caso di utilizzo della fotocellula di rilevamento tacca su materiale, non è più necessario dare il comando di STARTCAM allo slave, in quanto l' | ||
+ | |||
+ | |GRAFICO VELOCITA'/ | ||
+ | |{{.: | ||
+ | |||
+ | ===== IMPLEMENTAZIONE ===== | ||
+ | |||
+ | **DC22RotCut (cmCam, | ||
+ | |||
+ | Parametri: | ||
+ | |||
+ | L' | ||
+ | Master = Asse che trasporta il materiale della linea\\ | ||
+ | Slave = Asse che muove il Cilindro di taglio | ||
+ | |||
+ | ^IN/ | ||
+ | | IN | CAMMING3\\ CAMMING4 | ||
+ | | IN | COUNTER3 | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | IN | ARRSYS | ||
+ | | OUT | SYSTEM | ||
+ | | OUT | SYSTEM | ||
+ | | OUT | SYSTEM | ||
+ | |||
+ | (*****) = Opzionale. Da impostarsi solo nel caso di utilizzo di fotocellula per la lettura della tacca sul materiale.\\ | ||
+ | (%%**%%) = Da impostarsi/ | ||
+ | (%%**%%*) = Interrupt utilizzabile solo con rifasamento Slave o con cattura tacca su materiale (mai insieme) | ||
+ | |||
+ | ==== Errore ==== | ||
+ | |||
+ | Ad ogni richiamo della funzione se intervengono degli errori, questi vengono riportati sulla variabile di errore (indicata come " | ||
+ | I valori della variabili dal 10 in poi sono da considerarsi " | ||
+ | __La variabile di errore non deve mai essere azzerata__ (provvede automaticamente la funzione a farlo quando non ci sono più errori).\\ | ||
+ | Il significato di tali valori è riassunto di seguito:\\ | ||
+ | 0: Nessun errore\\ | ||
+ | 1: Unità di misura Slave non corretta\\ | ||
+ | 2: Lunghezza pezzo, misura del raggio o numero delle lame non corretti\\ | ||
+ | 3: Risoluzione asse Slave non corretta\\ | ||
+ | 4: Spazio di sincronismo (parametro aslParam[6]) insufficiente\\ | ||
+ | 5: Spazio Master (del materiale) tra un tratto di sincronismo e l' | ||
+ | 6: Spazio di sincronismo (parametro aslParam[6]) errato\\ | ||
+ | 7: Percentuale di Extravelocità (parametro aslParam[10]) nel tratto di sincronismo errata\\ | ||
+ | 8: Spazio di Acc o Dec Master insufficiente (spostare la quota di Home più lontano dal sincronismo)\\ | ||
+ | 9: Due catture su interrupt abilitate sullo stesso ingresso (modificare aslParam[7] o aslParam[11])\\ | ||
+ | 10: Warning: Rifasamento non possibile (settore sincronismo troppo piccolo)\\ | ||
+ | 11: Warning: Spazio Sincronismo errato (cambio parametro impossibile)\\ | ||
+ | 12: Warning: Perc.extravelocità in taglio errata (cambio parametro impossibile)\\ | ||
+ | 13: Warning: Spazio Master (del materiale) tra un tratto di sincronismo e l' | ||
+ | 14: Warning: Spazio Master negativo. Procedere con variazioni minori\\ | ||
+ | 15: Warning: Spazio Vkost troppo piccolo\\ | ||
+ | 16: Warning: Saturazione analogica Slave durante il tratto fuori sincronismo\\ | ||
+ | 17: Warning: Velocità Master eccessiva per cambio parametri | ||
+ | |||
+ | === Note di funzionamento === | ||
+ | |||
+ | *La funzione deve essere richiamata, all' | ||
+ | *La funzione, oltre a fare il calcolo dei settori, provvede anche a scrivere direttamente sul device. | ||
+ | *Nel settore di taglio il codeMex assume il valore che si imposta nel parametro aslParam[15]. | ||
+ | *Il parametro aslParam[3] (raggio del cilindro di taglio) deve essere espresso con la stessa unità di misura del Master (UM Master), per poter avere un calcolo della velocità periferica del cilindro (Slave) paragonabile con quello della Linea (Master). | ||
+ | *Il parametro aslParam[10] serve per aumentare o diminuire (in percentuale) la velocità costante nello spazio di sincronismo. | ||
+ | *I parametri che si possono cambiare al volo (cioè durante il funzionamento con camma agganciata) sono: aslParam[1], | ||
+ | *Nel caso di utilizzo della fotocellula di rilevamento tacca su materiale, non è più necessario dare il comando di STARTCAM allo slave, in quanto l' | ||
+ | *La funzione alloca in memoria 6 array composti da 60 long l'uno (totale 1440 byte), invisibili all' | ||
+ | |||
+ | === Esempio === | ||
+ | |||
+ | __**CONFIGURAZIONE DEI DEVICES NEL FILE DI CONFIGURAZIONE**__ | ||
+ | |||
+ | Nel file di configurazione devono essere configurati due device. Un CAMMING3 (o 4) e un COUNTER3.\\ | ||
+ | Eccoli descritti di seguito: | ||
+ | |||
+ | <code QCL> | ||
+ | ; TCamp CountS | ||
+ | cmCam CAMMING3 | ||
+ | </ | ||
+ | {{.: | ||
+ | |||
+ | __**IMPLEMENTAZIONE DELLA FUNZIONE SU UN TASK **__ | ||
+ | |||
+ | __SENZA FOTOCELLULA SU MATERIALE__ | ||
+ | |||
+ | <code QCL> | ||
+ | INIT: | ||
+ | aslParam[1] = 10000 ; | ||
+ | aslParam[2] = 3 ;Numero lame di taglio nel cilindro di taglio | ||
+ | aslParam[3] = 4000 ; | ||
+ | aslParam[4] = 10 ;UM (10=decimi di grado) | ||
+ | aslParam[5] = 0 ;Tipo di rampe (0=trapez.) | ||
+ | aslParam[6] = 400 ;Spazio di sincronismo per taglio (40°) | ||
+ | aslParam[7] = 1 ;Tipo di rifasamento (1=ingresso ad interrupt) | ||
+ | aslParam[8] = 1 ;Fronte dell' | ||
+ | aslParam[9] = 0 ;Quota da caricare su sensore di rifasam. (gradi/10) | ||
+ | aslParam[10] = 5 ; | ||
+ | aslParam[11] = 0 ;Tipo di ingresso per la cattura tacca su materiale (0=nessuno) | ||
+ | aslParam[12] = 0 ;Non utilizzato | ||
+ | aslParam[13] = 0 ;Non utilizzato | ||
+ | aslParam[14] = 0 ;Non utilizzato | ||
+ | aslParam[15] = 1000 ; | ||
+ | aslParam[16] = 10000 ; | ||
+ | aslParam[17] = 0 ;Quota di Home (non utilizzata in quanto cilindro di Taglio multilama) | ||
+ | aslParam[18] = 1800 ;Quota di Home Slave (non utilizzata perché multilama) | ||
+ | aslParam[19] = 0 ;Comando di Taglio dissincronizzato (non utilizzato perché multilama) | ||
+ | aslParam[20] = 0 ;Tipo di aggancio in camma (non utilizzato perché multilama) | ||
+ | aslParam[21] = 0 ; Max errore correggibile in una volta per la cattura tacca su materiale | ||
+ | |||
+ | MAIN: | ||
+ | |||
+ | DC22RotCut (cmCam, aslParam, sfChangeExe, | ||
+ | |||
+ | IF ifPreset ; | ||
+ | IF gfFrn01 | ||
+ | gfFrn01 = 0 | ||
+ | IF (NOT cmCam: | ||
+ | PRESET cmCam | ||
+ | gfPresetOn = 1 | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ELSE | ||
+ | gfFrn01 = 1 | ||
+ | ENDIF | ||
+ | |||
+ | IF gfPresetOn ; | ||
+ | IF cmCam: | ||
+ | cmCam: | ||
+ | cmCam: | ||
+ | START cmCam | ||
+ | gfPresetOn = 0 | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | |||
+ | IF ifStart ; | ||
+ | IF gfFrn02 | ||
+ | gfFrn02 = 0 | ||
+ | IF (NOT cmCam: | ||
+ | STARTCAM cmCam | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ELSE | ||
+ | gfFrn02 = 1 | ||
+ | ENDIF | ||
+ | |||
+ | IF ifStop ; | ||
+ | IF gfFrn03 | ||
+ | gfFrn03 = 0 | ||
+ | IF cmCam: | ||
+ | STOPCAM cmCam | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ELSE | ||
+ | gfFrn03 = 1 | ||
+ | ENDIF | ||
+ | |||
+ | WAIT 1 | ||
+ | JUMP MAIN | ||
+ | |||
+ | END | ||
+ | </ | ||
+ | |||
+ | __CON FOTOCELLULA SU MATERIALE__ | ||
+ | |||
+ | <code QCL> | ||
+ | INIT: | ||
+ | aslParam[1] = 10000 ; | ||
+ | aslParam[2] = 3 ;Numero lame di taglio nel cilindro di taglio | ||
+ | aslParam[3] = 4000 ; | ||
+ | aslParam[4] = 10 ;UM (10=decimi di grado) | ||
+ | aslParam[5] = 0 ;Tipo di rampe (0=trapez.) | ||
+ | aslParam[6] = 400 ;Spazio di sincronismo per taglio (40°) | ||
+ | aslParam[7] = 2 ;Tipo di rifasamento (2=ingresso digitale normale) | ||
+ | aslParam[8] = 1 ;Fronte dell' | ||
+ | aslParam[9] = 0 ;Quota da caricare su sensore di rifasam. (gradi/10) | ||
+ | aslParam[10] = 5 ; | ||
+ | aslParam[11] = 1 ;Tipo di ingresso per la cattura tacca su materiale (1=inp interr.) | ||
+ | aslParam[12] = 1 ;Fronte dell' | ||
+ | aslParam[13] = 1000 ; | ||
+ | aslParam[14] = 200 ;Sul pezzo da tagliare: Distanza tra la tacca e la fine del pezzo (UM Master) | ||
+ | aslParam[15] = 1000 ; | ||
+ | aslParam[16] = 10000 ; | ||
+ | aslParam[17] = 2 ;Tempo di campionamento del device " | ||
+ | aslParam[18] = 1800 ;Quota di Home Slave (non utilizzata perché multilama) | ||
+ | aslParam[19] = 0 ;Comando di Taglio dissincronizzato (non utilizzato perché multilama) | ||
+ | aslParam[20] = 0 ;Tipo di aggancio in camma (non utilizzato perché multilama) | ||
+ | aslParam[21] = 30 ; Max errore correggibile in una volta per la cattura tacca su materiale | ||
+ | |||
+ | MAIN: | ||
+ | |||
+ | IF gfStart | ||
+ | DC22RotCut (cmCam, aslParam, sfChangeExe, | ||
+ | ENDIF | ||
+ | |||
+ | ;gfStart è un flag che mi indica che lo Slave è abilitato a ricevere uno start e a fare il movimento | ||
+ | ;automatico | ||
+ | ;(La funzione si incarica anche dello start che avviene al primo impulso di fotocellula) | ||
+ | |||
+ | IF ifPreset ; | ||
+ | IF gfFrn01 | ||
+ | gfFrn01 = 0 | ||
+ | IF (NOT cmCam: | ||
+ | PRESET cmCam | ||
+ | gfPresetOn = 1 | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ELSE | ||
+ | gfFrn01 = 1 | ||
+ | ENDIF | ||
+ | |||
+ | IF gfPresetOn ; | ||
+ | IF cmCam: | ||
+ | cmCam: | ||
+ | cmCam: | ||
+ | START cmCam | ||
+ | gfPresetOn = 0 | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | |||
+ | IF ifStop ; | ||
+ | IF gfFrn03 | ||
+ | gfFrn03 = 0 | ||
+ | IF cmCam: | ||
+ | STOPCAM cmCam | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ELSE | ||
+ | gfFrn03 = 1 | ||
+ | ENDIF | ||
+ | |||
+ | WAIT 1 | ||
+ | JUMP MAIN | ||
+ | |||
+ | END | ||
+ | </ | ||