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:dc12rotcut [2019/08/29 17:01] (versione attuale) – creata - modifica esterna 127.0.0.1 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | ====== DC12RotCut ====== | ||
+ | |||
+ | **D = **//Device( camming3, camming4)// | ||
+ | |||
+ | **C = **// | ||
+ | |||
+ | ===== DESCRIZIONE GENERALE ===== | ||
+ | |||
+ | La funzione DC12RotCut __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 ha, inoltre, la possibilità di sincronizzare il taglio sul materiale tramite una fotocellula, | ||
+ | |||
+ | fig.1\\ | ||
+ | {{.: | ||
+ | |||
+ | ===== DESCRIZIONE DETTAGLIATA ===== | ||
+ | |||
+ | La risoluzione dell' | ||
+ | Il parametro " | ||
+ | Nello spazio tra un tratto di taglio e l' | ||
+ | Nel file di configurazione deve essere configurato (__obbligatoriamente in ogni caso__) anche un device COUNTER3 che viene utilizzato dalla funzione per la gestione della fotocellula sul materiale. Tale device dovrà avere come riferimento di ingresso il conteggio encoder del master.\\ | ||
+ | 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)\\ | ||
+ | Dopo l' | ||
+ | QUOTA_POS = ANG_GIRO - (SPAZIO_SYNC/ | ||
+ | Dove:\\ | ||
+ | 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 la risoluzione dell' | ||
+ | Una limitazione dell' | ||
+ | |||
+ | ==== 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 ===== | ||
+ | |||
+ | **DC12RotCut (cmCam, cnContM, aslParam, sfChangeExe, | ||
+ | |||
+ | Parametri: | ||
+ | |||
+ | L' | ||
+ | Master = Asse che trasporta il materiale della linea\\ | ||
+ | Slave = Asse del 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 | ||
+ | | OUT | SYSTEM | ||
+ | | OUT | SYSTEM | ||
+ | |||
+ | (*) = Opzionale. Da impostarsi solo nel caso di utilizzo di fotocellula per la lettura della tacca sul materiale. | ||
+ | |||
+ | ==== 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: Misura del raggio o numero delle lame non corretti\\ | ||
+ | 3: Risoluzione asse Slave non corretta\\ | ||
+ | 4: Spazio di sincronismo (parametro aslParam[6]) troppo piccolo\\ | ||
+ | 5: Spazio Master (del materiale) tra un tratto di sincronismo e l' | ||
+ | 6: Spazio di sincronismo (parametro aslParam[6]) errato\\ | ||
+ | 7: Percentuale di velocità (parametro aslParam[10]) nel tratto di sincronismo errata\\ | ||
+ | 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 | ||
+ | |||
+ | === 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 (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 | ||
+ | </ | ||
+ | {{.: | ||
+ | |||
+ | <code QCL> | ||
+ | ; TCamp Count IntL | ||
+ | cnContM | ||
+ | </ | ||
+ | {{.: | ||
+ | |||
+ | __**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] = 2 ;Tempo di campionamento del device " | ||
+ | |||
+ | |||
+ | MAIN: | ||
+ | |||
+ | DC12RotCut (cmCam, cnContM, 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: | ||
+ | | ||
+ | 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] = 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] = 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 " | ||
+ | |||
+ | MAIN: | ||
+ | |||
+ | IF gfStart | ||
+ | DC12RotCut (cmCam, cnContM, 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 | ||
+ | </ | ||