software:qview:qview_6:qcl_library:dc22rotcut

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 = **//Funzioni di Calcolo//
 +
 +===== 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'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\\
 +{{.:dc22rotcut:dc22rotcut_01.png?nolink650|}}
 +
 +===== DESCRIZIONE DETTAGLIATA =====
 +
 +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.
 +
 +==== 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.
 +
 +==== 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'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).
 +
 +==== COMANDO DI TAGLIO DISSINCRONIZZATO (o manuale) ====
 +
 +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.
 +
 +==== 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.  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:dc22rotcut_02.png?nolink450|}}|
 +
 +===== IMPLEMENTAZIONE =====
 +
 +**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/OUT^TIPO VARIABILE^NOME DI ESEMPIO^DIM^^
 +|  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)
 +
 +==== Errore ====
 +
 +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:
 +
 +<code QCL>
 +;                        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    2.INP08 1     2.AN02  X.X
 +</code>
 +{{.:dc22rotcut:dc22rotcut_03.png?nolink300|}}
 +
 +__**IMPLEMENTAZIONE DELLA FUNZIONE SU UN TASK **__
 +
 +__SENZA FOTOCELLULA SU MATERIALE__
 +
 +<code QCL>
 +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
 +</code>
 +
 +__CON FOTOCELLULA SU MATERIALE__
 +
 +<code QCL>
 +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
 +</code>
  
  • Ultima modifica: 2019/08/29 17:01