software:qview:qview_6:qcl_library:dc12rotcut

DC12RotCut

D = Device( camming3, camming4)

C = Funzioni di Calcolo

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'asse di taglio rotativo (Slave) tramite un ingresso di rifasamento che può essere normale o ad interrupt, posto in un punto noto della corsa dell'asse stesso.
La funzione ha, inoltre, la possibilità di sincronizzare il taglio sul materiale tramite una fotocellula, posizionata prima del taglio, che legge una tacca sul materiale stesso.

fig.1

La risoluzione dell'asse Slave (parametri measure e pulse) va impostata in modo che l'unità di misura del conteggio sia gradi, gradi/10, gradi/100 oppure gradi/1000.
Il parametro “Spazio di sincronismo” (aslParam[6]) stabilisce per quanto spazio (in gradi) il cilindro di taglio mantiene la sua velocità periferica uguale alla velocità della linea (tratto di taglio).
Nello spazio tra un tratto di taglio e l'altro, il cilindro di taglio accelera o decelera la sua corsa in modo da farsi trovare pronto all'appuntamento con il taglio successivo. Se la lunghezza pezzo da tagliare è grande, è probabile che, in questi spazi intermedi, il cilindro di taglio effettui una fermata. La fermata avviene sempre nel punto intermedio tra una lama e la successiva (nel caso di un monolama, a metà cilindro nel punto opposto alla lama).
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'applicativo che venga eseguito continuamente (ad ogni giro logico del Qmove). Per agganciare lo Slave al movimento del Master è sufficiente dare un comando di STARTCAM dopo aver eseguito il preset.

L'operazione di preset (ricerca del punto di zero) dell'asse cilindro di taglio, deve essere fatta ad ogni riaccensione del sistema. Il preset prevede l'utilizzo di un sensore la cui dichiarazione deve essere fatta nella riga di configurazione del device CAMMINGx, sul file di configurazione. Questo sensore (che può essere lo stesso di quello utilizzato per il rifasamento dell'asse stesso) va dichiarato come “IAZero” (ingresso abilitazione impulso di zero).
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'operazione di Preset, si deve comandare un posizionamento dell'asse cilindro alla quota:
QUOTA_POS = ANG_GIRO - (SPAZIO_SYNC/2)
Dove:
ANG_GIRO = 360° (nell'unità di misura utilizzata, cioè, 360 se gradi, 3600 se decimi, ecc…)
SPAZIO_SYNC = è il parametro aslParam[6] (“Spazio di sincronismo”)
Per chiarimenti vedere gli esempi in calce.

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'encoder (rapporto tra il numero di impulsi giro dell'encoder e lo spazio periferico percorso dal cilindro di taglio), non è un numero finito, oppure nel caso in cui ci siano degli slittamenti tra il movimento del cilindro e l'encoder stresso.
Una limitazione dell'ingresso di rifasamento si ha quando si utilizza un cilindro monolama. In questo caso è infatti necessario che nel momento dell'attivazione del sensore di rifasamento, il cilindro di taglio si trovi con la lama in fase di taglio (e cioè mentre sta eseguendo il tratto di sincronismo).

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. La fotocellula fa in modo che il sistema tenga conto di eventuali slittamenti del materiale sul proprio encoder, utilizzando la tacca come riferimento di posizione. Nel caso, su un pezzo, la tacca non venga rilevata, viene posta in esecuzione la lunghezza del pezzo impostata, più l'eventuale correzione rilevata nel pezzo precedente.
Nel caso di utilizzo della fotocellula di rilevamento tacca su materiale, non è più necessario dare il comando di STARTCAM allo slave, in quanto l'aggancio viene effettuato automaticamente in corrispondenza della prima tacca rilevata.

GRAFICO VELOCITA'-TEMPO DELLA CAMMA PER IL TAGLIO CIRCOLARE (fig.2)

DC12RotCut (cmCam, cnContM, aslParam, sfChangeExe, sbErrore)

Parametri:

L'array “aslParam” deve essere di almeno 16 elementi
Master = Asse che trasporta il materiale della linea
Slave = Asse del Cilindro di taglio

IN/OUTTIPO VARIABILENOME DI ESEMPIODIM
IN CAMMING3
CAMMING4
CmCam Tipo di device a cui si può applicare la funzione
IN COUNTER3 cnContM Tipo di device da dichiarare sul file di configurazione (obbligatorio)
IN ARRSYS aslParam[1] L Lunghezza pezzo da tagliare (UM Master)
IN ARRSYS aslParam[2] L Numero di lame nel cilindro di taglio [1 ÷ 6]
IN ARRSYS aslParam[3] L Raggio del cilindro di taglio (UM Master) (per calcolo veocità nel tratto di sincronismo)
IN ARRSYS aslParam[4] L UM Slave (1=gradi, 10=dec.grado, 100=cent.grado, 1000=mill.grado)
IN ARRSYS aslParam[5] L Tipo di rampe per acc/decel Slave (0=trapezoidali, 1=epicicloidali)
IN ARRSYS aslParam[6] L Spazio Slave di sincronismo di velocità per il taglio (UM Slave)
IN ARRSYS aslParam[7] L Tipo di ingresso di rifasamento Slave (0=nessuno, 1=ingr.interrupt, 2=ingr.normale)
IN ARRSYS aslParam[8] L Fronte dell'ingresso di rifasamento (0=discesa, 1=salita)
IN ARRSYS aslParam[9] L Valore da caricare sul conteggio all'attivazione del sensore di rifasamento (UM Slave)
IN ARRSYS aslParam[10] L Percentuale di extravelocità del cilindro di taglio rispetto alla linea, nel tratto a velocità costante (%) [-99 ÷ 99]
IN ARRSYS aslParam[11] L Tipo di ingresso per la cattura tacca su materiale (0=nessuna, 1=ingr.interrupt)
IN ARRSYS aslParam[12] L Fronte dell'ingresso per la cattura tacca su materiale (0=discesa,1=salita) (*)
IN ARRSYS aslParam[13] L Distanza tra la fotocellula di rilevamento tacca e il centro del cilindro di taglio (UM master) (*)
IN ARRSYS aslParam[14] L Sul pezzo da tagliare: Distanza tra la tacca e la fine del pezzo. (UM Master) (*)
IN ARRSYS aslParam[15] L Valore di 'CodeM' da impostare sul settore di taglio. Questo valore si può leggere durante il funzionamento dinamico sulla variabile 'codeMex'. (i valori: -99 e -100 sono utilizzati internamente alla funzione e non possono essere impostati)
IN ARRSYS aslParam[16] L Velocità massima della linea (UM master/sec)
IN ARRSYS aslParam[17] L Tempo di campionamento del device camming (msec)
OUT SYSTEM sfChangeExe F Flag che quando vale 1 indica che il cambio di parametri al volo è in corso di esecuzione. Una volta completato il cambio parametri, il flag torna a 0.
OUT SYSTEM sbErrore B Variabile contenente l'eventuale errore scaturito dalla funzione (vedere il paragrafo relativo)

(*) = Opzionale. Da impostarsi solo nel caso di utilizzo di fotocellula per la lettura della tacca sul materiale.

Ad ogni richiamo della funzione se intervengono degli errori, questi vengono riportati sulla variabile di errore (indicata come “sbErrore” nella tabella).
I valori della variabili dal 10 in poi sono da considerarsi “warnings”, segnalazioni cioè che non causano una emergenza all'asse Slave. I valori inferiori al 10, invece, pregiudicano il funzionamento causando, in caso di comparsa in fase dinamica, una fermata dell'asse.
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'altro, troppo piccolo
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'altro, troppo piccolo
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'interno dell'applicativo, una sola volta ed in modo continuo (in una porzione di codice che viene eseguita ad ogni giro-task).
  • 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], aslParam[5], aslParam[6], aslParam[10].
  • Nel caso di utilizzo della fotocellula di rilevamento tacca su materiale, non è più necessario dare il comando di STARTCAM allo slave, in quanto l'aggancio viene effettuato automaticamente in corrispondenza della prima tacca rilevata dalla fotocellula.
  • La funzione alloca in memoria 6 array composti da 60 long l'uno (totale 1440 byte), invisibili all'utente.

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:

;                        TCamp  CountS  CountMA CountMB IntL IAZero IntLM IAZeroM  InG   InGInt  IoutA   Out
cmCam CAMMING3  1     2.CNT02  2.CNT01     X.X      1   2.INP01   X        X.X    2.INP08 1     2.AN02  X.X

;                                TCamp    Count      IntL     IAZero  InG  InGInt
cnContM  COUNTER3       1       2.CNT01     2         X.X          X.X

IMPLEMENTAZIONE DELLA FUNZIONE SU UN TASK

SENZA FOTOCELLULA SU MATERIALE

INIT:
aslParam[1] = 10000	;Lunghezza pezzo (UM Master)
aslParam[2] = 3		;Numero lame di taglio nel cilindro di taglio
aslParam[3] = 4000	;Raggio del cilindro di taglio (per tratto a vel kost)(UM Master)
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'ingresso di rifasamento (1=salita)
aslParam[9] = 0		;Quota da caricare su sensore di rifasam. (gradi/10)
aslParam[10] = 5	;Percentuale di vel in + o - nel tratto di sincronismo (% vel sync)
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	;Valore di codeM da impostare sul settore di taglio
aslParam[16] = 10000	;Velocità massima Linea (1000 UMMaster/sec)
aslParam[17] = 2	;Tempo di campionamento del device "cmCam"
 
 
MAIN:
 
DC12RotCut (cmCam, cnContM, aslParam, sfChangeExe, sbErrore)	;Chiamata a funzione
 
IF ifPreset							;Gestione Preset
	IF gfFrn01
		gfFrn01 = 0
		IF (NOT cmCam:st_camex)
		PRESET cmCam
		gfPresetOn = 1
	ENDIF
ENDIF
ELSE
	gfFrn01 = 1
ENDIF
 
IF gfPresetOn							;Posizionamento dopo il Preset
	IF cmCam:st_prsok
		cmCam:setpos = 3600 - (aslParam[6] / 2)	        ;Quota_pos = ang_giro - (spazio_sync/2)
		cmCam:setvel = (10 * cmCam:maxvel) / 100	;10% di vel.max.
		START cmCam
		gfPresetOn = 0
	ENDIF
ENDIF
 
IF ifStart                  					;Gestione ingresso di start
	IF gfFrn02
		gfFrn02 = 0
		IF (NOT cmCam:st_camex) AND (NOT sbErrore)
            		STARTCAM cmCam
		ENDIF
        ENDIF
ELSE
	gfFrn02 = 1
ENDIF
 
IF ifStop			        			;Gestione ingresso di stop
	IF gfFrn03
		gfFrn03 = 0
		IF cmCam:st_camex
         		STOPCAM cmCam
		ENDIF
        ENDIF
ELSE
	gfFrn03 = 1
ENDIF
 
WAIT 1
JUMP MAIN
 
END

CON FOTOCELLULA SU MATERIALE

INIT:
aslParam[1] = 10000	;Lunghezza pezzo (UM Master)
aslParam[2] = 3		;Numero lame di taglio nel cilindro di taglio
aslParam[3] = 4000	;Raggio del cilindro di taglio (per tratto a vel kost)(UM Master)
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'ingresso di rifasamento (1=salita)
aslParam[9] = 0		;Quota da caricare su sensore di rifasam. (gradi/10)
aslParam[10] = 5	;Percentuale di vel in + o - nel tratto di sincronismo (% vel sync)
aslParam[11] = 1	;Tipo di ingresso per la cattura tacca su materiale (1=inp interr.)
aslParam[12] = 1	;Fronte dell'ingresso per la cattura tacca su materiale (1=salita)
aslParam[13] = 1000	;Distanza tra la fotocellula di rilevamento tacca e il centro del cilindro di taglio
aslParam[14] = 200	;Sul pezzo da tagliare: Distanza tra la tacca e la fine del pezzo (UM Master)
aslParam[15] = 1000	;Valore di codeM da impostare sul settore di taglio
aslParam[16] = 10000	;Velocità massima Linea (1000 UMMaster/sec)
aslParam[17] = 2	;Tempo di campionamento del device "cmCam"
 
MAIN:
 
IF gfStart  AND cmCam:st_prsok
      DC12RotCut (cmCam, cnContM, aslParam, sfChangeExe, sbErrore)	;Chiamata a funzione 
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							;Gestione Preset
	IF gfFrn01
		gfFrn01 = 0
		IF (NOT cmCam:st_camex)
        		PRESET cmCam
	        	gfPresetOn = 1
		ENDIF
        ENDIF
ELSE
	gfFrn01 = 1
ENDIF
 
IF gfPresetOn							;Posizionamento dopo il Preset
	IF cmCam:st_prsok
 
		cmCam:setpos = 3600 - (aslParam[6] / 2)	        ;Quota_pos = ang_giro - (spazio_sync/2)
		cmCam:setvel = (10 * cmCam:maxvel) / 100	;10% di vel.max.
		START cmCam
		gfPresetOn = 0
	ENDIF
ENDIF
 
IF ifStop				        		;Gestione ingresso di stop
	IF gfFrn03
		gfFrn03 = 0
		IF cmCam:st_camex
          		STOPCAM cmCam
		ENDIF
        ENDIF
ELSE
	gfFrn03 = 1
ENDIF
 
WAIT 1
JUMP MAIN
 
END
  • Ultima modifica: 2019/08/29 17:01