software:qview:qview_6:qcl_library:dc22rotcut

DC22RotCut

D = Device( camming3, camming4)

C = Funzioni di Calcolo

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'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 può, inoltre, sincronizzare il taglio sul materiale tramite una fotocellula, posizionata prima del taglio, che legge una tacca sul materiale stesso.
Per il taglio di materiale da scartare, la funzione è in grado di gestire il comando di un taglio “manuale” ovvero non sincronizzato alla lunghezza del materiale che viene eseguito immediatamente dopo il comando (solo per monolama).

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 è maggiore dello sviluppo del cilindro di taglio più gli spazi di accelerazione e decelerazione, il cilindro di taglio effettua una fermata. La fermata avviene nel punto di Home nel caso di un monolama, a metà strada tra due lame nel caso di un multilama.
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).
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/2)

Dove:
QUOTA DI HOME = quota inserita nel parametro aslParam[18]
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 il rapporto tra un giro del cilindro di taglio e un giro dell'encoder 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è l'asse stia percorrendo il tratto di sincronismo).

Impostando a 1 il valore del parametro 19 (aslParam[19]), esiste la possibilità di comandare un taglio dissincronizzato (o manuale) all'asse Slave. Questo comando è valido solo se il cilindro di Taglio si ferma in posizione di Home durante il ciclo. Se questo non avviene, il comando viene annullato nella fase di sincronismo successiva.
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.

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)

DC22RotCut (cmCam, aslParam, sfChangeExe, slMaxVelChM, sbErrore)

Parametri:

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

IN/OUTTIPO VARIABILENOME DI ESEMPIODIM
IN CAMMING3
CAMMING4
cmCam Nome del device a cui applicare la funzione
IN COUNTER3 cnContM Nome del device da dichiarare sul file di configurazione
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 velocità 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, -100 e -9999 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)
IN ARRSYS aslParam[18] L Quota di HOME per l'asse Slave (UM Slave) (**)
IN ARRSYS aslParam[19] L Comando di taglio dissincronizzato (o manuale).
Il valore viene reimpostato a 0 internamente dalla funzione.
0 = Non attivato
1= Attivato
(**)
IN ARRSYS aslParam[20] L Tipo di aggancio in camma
0 = Con taglio immediato (intestatura)
1 = Con taglio a misura lunghezza pezzo
(**)
IN ARRSYS aslParam[21] L Max errore correggibile in una volta per la cattura tacca su materiale (0=controllo disabilitato) (UM Master) (*)
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 slMaxVelChM L Velocità Massima del Master per poter effettuare il cambio dei parametri al volo.
(UM Master/sec)
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.
(**) = Da impostarsi/utilizzare solo in caso di cilindro di taglio monolama.
(***) = Interrupt utilizzabile solo con rifasamento Slave o con cattura tacca su materiale (mai insieme)

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: 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'altro, insufficiente
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'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
17: Warning: Velocità Master eccessiva per cambio parametri

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 (cioè durante il funzionamento con camma agganciata) sono: aslParam[1], aslParam[5], aslParam[6], aslParam[10]. Nel caso il parametro modificato sia solo lunghezza pezzo (aslParam[1]) la nuova camma verrà messa in esecuzione immediatamente dopo il taglio in corso (il quale avviene con la vecchia lunghezza). Nel caso che il parametro modificato sia uno degli altri 3 la nuova camma verrà messa in esecuzione dopo 2 tagli (quello in esecuzione e il successivo).
  • 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

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] = 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, slMaxVelChM, 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] = 2		;Tipo di rifasamento (2=ingresso digitale normale)
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"
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  AND cmCam:st_prsok
            DC22RotCut (cmCam, aslParam, sfChangeExe, slMaxVelChM, sbErrore)	;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