        [ ALESATRICE LAZZATI HB 150 MM
        [ COSTRUTTORE: LAZZATI
        [ CLIENTE  : F.LLI ZUCCHINALI   -   LEVATE ( BG )
        [ RETROFITTING BY: IMEC S.N.C. di Foppa Pierangelo
        [ MARZO 2002
        [ CNC SELCA S3045 COMM.45010503.ITA - F
        [ ASSE X = RIGA OTTICA CODIFICATA HEIDENHAIN LB302C
        [ ASSE Y = RIGA OTTICA CODIFICATA HEIDENHAIN LB302C
        [ ASSE Z (SLITTONE) = ENCODER SIEMENS 6FX2001-2CC50 2500 IMP.
        [ ASSE W (CANOTTO)  = ENCODER SIEMENS 6FX2001-2CC50 2500 IMP.
        [ MANDRINO = ENCODER SIEMENS 6FX2001-2CB02  1024 IMPULSI
        
        [ Costanti plc
        [ --- WORD
        [ KMW(1) minuti di lubrificazione off
        [ KMW(2) secondi di lubrificazione on
        [ KMW(03) = Durata pompata lubrificazione guide asse Y/X

        
        [--- FLOAT

        [ KMF(1) % velocita' assi in lavoro (POMO)
        [ KMF(2) % velocita' assi senza zeri
        [ KMF(3) % velocita' assi in automatico (POFO)
        [ KMF(4) % velocita' assi con porte aperte

        
        [ ------------------ INGRESSI FISICI -----------
        
        INP
        AUXON   [ 1  - Segnale linea inserita
        F240    [ 2  - Segnale presenza tensione 24 VDC
        IMTER   [ 3  - Segnale intervento termici motori AC principali
        ITER    [ 4  - Segnale intervento termici motori AC 
        SBP     [ 5  - Selettore direzione + tavola
        EOLIO   [ 6  - Disponibile
        SBM     [ 7  - Selettore direzione - tavola
        IOKBV   [ 8  - Segnale OK convertitore asse B V
        IOKX    [ 9  - Segnale OK convertitore asse X   
        IOKY    [ 10 - Segnale OK convertitore asse Y
        IOKZ    [ 11 - Segnale OK convertitore asse Z
        IOKW    [ 12 - Segnale OK convertitore asse W
        IOKAL   [ 13 - Segnale OK alimentatore assi
        DMP     [ 14 - Segnale OK convertitore mandrino
        DVM     [ 15 - Segnale velocita=0 motore mandrino
        STM     [ 16 - Selettore tavola in manuale

        [-------------------------------------------

	IR0X    [ 17 - Micro riferimento 0 asse X
        IR0Y    [ 18 - Micro riferimento 0 asse Y
        IR0Z    [ 19 - Micro riferimento 0 asse Z
        IR0W    [ 20 - Micro riferimento 0 asse W
        IFCWP   [ 21 - Finecorsa W+
        IFCWN   [ 22 - Finecorsa W- 
        IFCZP   [ 23 - Finecorsa Z+
        IFCZN   [ 24 - Finecorsa Z-
        PSBLX   [ 25 - Pressostato sbloccaggio asse X
        PSBLY   [ 26 - Pressostato sbloccaggio asse Y
        PSBLW   [ 27 - Pressostato sbloccaggio asse W           
        PSBLZ   [ 28 - Pressostato sbloccaggio asse Z  
        SABBV   [ 29 - Selettore abilitazione tavola-slitta 
        I30     [ 30 - Livello basso olio centralina sostentamento 
        I31     [ 31 - Filtro sporco recupero olio sostentamento
        EG1     [ 32 - Micro gamma 1 inserita

        [--------------------------------------------

        EG2     [ 33 - Micro gamma 2 inserita 
        ETAM    [ 34 - Micro testa accessoria su asse Z
        I35     [ 35 - Micro testa accessoria su asse W
        PCOT    [ 36 - Pressostato lubrificazione testa
        I37     [ 37 - Filtro sporco lubrificazione testa
        PLG     [ 38 - Pressostato lubrificazione guide testa
        I39     [ 39 - Pressostato 1 sostentamento idrostatico asse X
        I40     [ 40 - Pressostato 2 sostentamento idrostatico asse X
        I41     [ 41 - Filtro sporco 1 sostentamento idrostatico asse X
        I42     [ 42 - Filtro sporco 2 sostentamento idrostatico asse X
        PMAX    [ 43 - Pressostato generale bloccaggi
        IFCXP   [ 44 - Finecorsa X+ 
        IFCXN   [ 45 - Finecorsa X-
        IFCYP   [ 46 - Finecorsa Y+
        IFCYN   [ 47 - Finecorsa Y-
        I48     [ 48 - Disponibile

        [---------------------------------------------

        SXP     [ 49 - Selettore direzione X+ 
        SXM     [ 50 - Selettore direzione X-
        SYP     [ 51 - Selettore direzione Y+
        SYM     [ 52 - Selettore direzione Y-
        SZP     [ 53 - Selettore direzione Z+
        SZM     [ 54 - Selettore direzione Z-
        SWP     [ 55 - Selettore direzione W+
        SWM     [ 56 - Selettore direzione W-
        BLAV    [ 57 - Pulsante start lavoro assi 
        BSTA    [ 58 - Pulsante stop lavoro assi 
        BRAP    [ 59 - Pulsante rapido assi
        ISBUT   [ 60 - Pulsante sblocco manuale utensile
        ITERTA  [ 61 - Segnale intervento termici gruppo tavola-slitta 
        IREFAP  [ 62 - Selettore inserzione refrigerante alta pressione
        ISAPED  [ 63 - Pulsante salita manuale pedana
        IDIPED  [ 64 - Pulsante discesa manuale pedana

        [---------------------------------------------

        PRMO    [ 65 - Pulsante start mandrino orario
        PRMA    [ 66 - Pulsante start mandrino antiorario
        PSTMD   [ 67 - Pulsante stop mandrino
        PIMPM   [ 68 - Pulsante impulsi mandrino
        PAVIMP  [ 69 - Pulsante avanzamento ad impulsi
        IABVOL  [ 70 - Pulsante abilitazione volantino remotato
        PJNVOL  [ 71 - Segnale Jog negativo da volantino remotato
        PRAVOL  [ 72 - Segnale Jog rapido da volantino remotato
        PJPVOL  [ 73 - Segnale Jog positivo da volantino remotato
        IAXVO1  [ 74 - Segnale codice asse selezionato bit 1 da volant.
        IAXVO2  [ 75 - Segnale codice asse selezionato bit 2 da volant.
        IAXVO3  [ 76 - Segnale codice asse selezionato bit 3 da volant.
        ISEVO1  [ 77 - Segnale sensibilita' volantino bit 1
        ISEVO2  [ 78 - Segnale sensibilita' volantino bit 2
        I79     [ 79 - Segnale arresto avanzamento assi da volantino
        I80     [ 80 - Segnale arresto mandrino da volantino

        [---------------------------------------------

        IMINRE  [ 81 - Min.livello olio vasca recupero olio sostent.
        IMAXRE  [ 82 - Max.livello olio vasca recupero olio sostent.
        ITPREC  [ 83 - Gall.troppo pieno vasca recupero olio sosten.
        IMINAC  [ 84 - Minimo livello acqua vasca refrigerante
        IEVINT  [ 85 - Micro evacuatore trucioli intasato
        IVMTRA  [ 86 - Micro volante manuale traslazione inserito
        IVMROT  [ 87 - Micro volante manuale rotazione inserito
        IDISIN  [ 88 - Pulsante divisione singola
        ITRAIN  [ 89 - Micro leva traslazione inserita
        IROTIN  [ 90 - Micro leva rotazione inserita
        ISBLB   [ 91 - Pressostato tavola sbloccata
        ISBLV   [ 92 - Pressostato slitta sloccata  
        ISOSTB  [ 93 - Pressostato sostentamento tavola 
        ISOSTV  [ 94 - Pressostato sostentamento slitta
        I95     [ 95 - Disponibile
        ERIP    [ 96 - Micro ripari operatore


        [--------------- USCITE FISICHE ----------------

        OUT
        UCNOK   [ 1  - Rele CNC OK
        UCENID  [ 2  - Rele centralina idraulica 
        USOSTX  [ 3  - Rele pompa sostentamento idrostatico asse X
        UEVCW   [ 4  - Rele avanti evacuatore trucioli
        UEVCCW  [ 5  - Rele indietro evacuatore trucioli
        UREF    [ 6  - Rele pompa refrigerante
        UROILX  [ 7  - Rele pompa recupero olio sostentamento asse X   
        UREFAP  [ 8  - Rele pompa refrigerante alta pressione
        UCENBV  [ 9  - Rele pompa centralina idraulica tavola-slitta
        UPOTMA  [ 10 - Rele potenza mandrino
        UABILC  [ 11 - Rele abilitazione mandrino
        ULUBBV  [ 12 - Rele pompa lubrific. cambio tavola-slitta

        [ ---------------------------

        UPOTAX  [ 13 - Rele potenza assi
        UPOTBV  [ 14 - Rele potenza asse B V
        UABILX  [ 15 - Rele abilitazione asse X
        UABILY  [ 16 - Rele abilitazione asse Y
        UABILZ  [ 17 - Rele abilitazione asse Z
        UABILW  [ 18 - Rele abilitazione asse W
        USBLX   [ 19 - Rele ev sbloccaggio asse X
        USBLY   [ 20 - Rele ev sbloccaggio asse Y
        USBLW   [ 21 - Rele ev sbloccaggio asse W
        USBLZ   [ 22 - Rele ev sbloccaggio asse Z
        UEVGEN  [ 23 - Rele ev by-pass pressione bloccaggi        
        UFRENY  [ 24 - Rele freno asse Y

        [-------------------------------

        ULG     [ 25 - Rele ev lubrificazione guide testa
        UGAM1   [ 26 - Rele ev gamma 1
        UGAM2   [ 27 - Rele ev gamma 2
        USAPED  [ 28 - Rele ev sollevamento pedana
        UDIPED  [ 29 - Rele ev abbassamento pedana
        UGENPE  [ 30 - Rele ev by-pass pressione su-giu pedana
        USBUT   [ 31 - Rele ev blocco-sblocco utensile 
        USOSTB  [ 32 - Rele pompa sostent.idrostatico tavola
        USOSTV  [ 33 - Rele pompa sostent.idrostatico slitta
        UVENBV  [ 34 - Rele ventilatore motore asse 
        UABIBV  [ 35 - Segnale abilitazione asse B V       
        USBLB   [ 36 - Rele ev sbloccaggio tavola

        [-------------------------------

        USBLV   [ 37 - Rele ev sbloccaggio slitta 
        U38     [ 38 - Disponibile
        U39     [ 39 - Disponibile
        U40     [ 40 - Disponibile
        UILL    [ 41 - Rele illuminazione macchina
        HHLDA   [ 42 - Rele spia hold assi e hold mandrino
        HLRMO   [ 43 - Rele spia marcia mandrino orario 
        HLRMA   [ 44 - Rele spia marcia mandrino antiorario
        HLLAV   [ 45 - Rele spia assi in lavoro
        HSBUT   [ 46 - Rele spia utensile sbloccato nel mandrino
        UHAV    [ 47 - Uscita messagio Hold assi su volantino         
        UHMV    [ 48 - Uscita messaggio Hold mandrino su volantino

                    
        [-------------------------------

        UECCBV  [ 49 - Teleruttore eccitazione tavola-slitta
        URIFBV  [ 50 - Rele commutazione riferimento tavola-slitta
        U51     [ 51 - Disponibile
        U52     [ 52 - Disponibile
        U53     [ 53 - Disponibile
        U54     [ 54 - Disponibile
        U55     [ 55 - Disponibile 
        U56     [ 56 - Disponibile
        U57     [ 57 - Disponibile
        U58     [ 58 - Disponibile 
        U59     [ 59 - Disponibile       
        U60     [ 60 - Disponibile

        [-------------------------------

        U61     [ 61 - Disponibile 
        U62     [ 62 - Disponibile
        U63     [ 63 - Disponibile
        U64     [ 64 - Disponibile
        U65     [ 65 - Disponibile
        U66     [ 66 - Disponibile
        U67     [ 67 - Disponibile 
        U68     [ 68 - Disponibile
        U69     [ 69 - Disponibile
        U70     [ 70 - Disponibile
        U71     [ 71 - Disponibile         
        U72     [ 72 - Disponibile
                                  

        [-------------------------------      

	[------ DOUBLE ------
	RAM,64
	AVSTP
        AFEED
        AFJM
	AVFF

        [---
        RAM,32
        MLY     [ Intervallo spazio max per lubrif guide Y/Z
        CORSAY  [ Spazio percorso asse Y
        CORSAZ  [ Spazio percorso asse Z
        POAOLY  [ Posizione assoluta Y vecchia
        POAOLZ  [ Posizione assoluta Z vecchia
        RPOMO   [ Appoggio variabile potenziometri
        [---

        RAM,16
        TOFLUB  [ Tempo pausa lubrificazione
        MTLY    [ Intervallo tempo max per lubrif guide Y/Z
	SG
	SG2
	SG3
	SG4
	SG5
	SG6
	SG7
	SG8
	SG9
	SG10
	SG11
	SG12
	SG13
	SG14
	SG15
	SG16
	SG17
	SG18
	SG19
	SG20
	SG21
	SG22
	SG23
	SG24
	SG25
	NMSG
	NMAX
	NRIGA
        TONLUB  [ Tempo lubrificazione
        CARATT  [ Codice ascii del caratt. di riempimento
        RSET    [ Richiesta set assi
        CRSTAU  [ Contatore max. ritardo stop ausiliari
        
	[------------------------------------------

        SRAM,8
        MM11             [ Memoria assi sbloccati

        [------------------------------------------

        RAM,8
        ASP     [ Aus. assi selezionati in manuale direzione +
        ASM     [ Aus. assi selezionati in manuale direzione -
        ASAV    [ Appoggio asse da volantino
        MOVCNP  [ Copia dei movcn vecchi per derivata
        RPZ     [ Appoggio zero assi
        ASTP

        [------------------------------------------

        SRAM
        GAM1    [ Gamma 1 inserita
        GAM2    [ Gamma 2 inserita
        M1LUBY  [ Memoria 1 intervallo lubrif guide 5m. asse Y
        M2LUBY  [ Memoria 2 intervallo lubrif guide 10m. asse Y
        M3LUBY  [ Memoria 3 intervallo lubrif guide 20m. asse Y

        [------------------------------------------

        RAM
        FLINIZ  [ Flag iniziale - accensione CNC 
        TESTL   [ Test lampade
        LAMP1S  [ Oscillatore
        FTIMED  [ Flag appoggio creazione timer alla diseccitazione
        FUNMAN  [ Flag funzionamento manuale tavola - slitta
        FUMATA  [ Flag funzionamento manuale asse B 
        FUMASL  [ Flag funzionamento manuale asse V
        FVOMAI  [ Flag volanti manuali tavola-slitta inseriti
        ANOLAV  [ Ausiliario asii non in lavoro
        AUXOFF  [ Appoggio ausiliari spenti in ritardo
        APOTM   [ Ausiliario potenziometri manuale
        AMOV    [ Ausiliario asse selezionato da manuale
        APAS    [ Allarme piu assi selezionati
        FAPPXY  [ Asse X e Y selezionati contemporaneamente
        FAPPYZ  [ Asse Y e Z selezionati contemporaneamente
        FAPPXZ  [ Asse X e Z selezionati contemporaneamente
        ANAS    [ Ausiliario nessun asse selezionato da manuale
        ACVOL   [ Ausiliario consenso assi da volantino
        MANUAL  [ Consenso comandi manuali
        ASSIKO  [ Ausiliario assi fupri servizio 
        ACAB    [ Consenso abilitazione assi
        FCASX   [ Flag finecorsa asse X
        FCASY   [ Flag finecorsa asse Y
        FCASZ   [ Flag finecorsa asse Z
        FCASW   [ Flag finecorsa asse W
        FMOVAX  [ Flag movimento asse X
        FMOVAY  [ Flag movimento asse Y
        FMOVAZ  [ Flag movimento asse Z
        FMOVAW  [ Flag movimento asse W
        FMOVAB  [ Flag movimento asse B 
        CONSX   [ Consenso avanzamento asse X
        CONSY   [ Consenso avanzamento asse Y
        CONSZ   [ Consenso avanzamento asse Z
        CONSW   [ Consenso avanzamento asse W
        CONSB   [ Consenso avanzamento asse B
        CONBX   [ Consenso asse X bloccato
        CONBY   [ Consenso asse Y bloccato
        CONBZ   [ Consenso asse Z bloccato
        CONBW   [ Consenso asse W bloccato
        CONBB   [ Consenso asse B bloccato 
        RHOLX   [ Richiesta hold asse X se 0
        RHOLY   [ Richiesta hold asse Y se 0
        RHOLZ   [ Richiesta hold asse Z se 0
        RHOLW   [ Richiesta hold asse W se 0
        RHOLB   [ Richiesta hold asse B se 0
        FSBLB   [ Flag tavola sbloccata e sostentata
        CONGAX  [ Consenso generale avanzamento assi in jog
        SJOG    [ Stato jog abilitato
        COAVAX  [ Consenso avanzamento asse X in jog
        FRAPIX  [ Richiesta rapido manuale asse X
        FRAPIY  [ Richiesta rapido manuale asse Y
        FRAPIZ  [ Richiesta rapido manuale asse Z
        FRAPIW  [ Richiesta rapido manuale asse W
        FRAPIB  [ Richiesta rapido manuale asse B
        COAVAY  [ Consenso avanzamento asse Y in jog
        COAVAZ  [ Consenso avanzamento asse Z in jog
        COAVAW  [ Consenso avanzamento asse W in jog
        COAVAB  [ Consenso avanzamento asse W in jog
        FM11A   [ Sblocco assi iniziale attivato
        RICZX   [ Flag ciclo azzeramento asse X
        RICZY   [ Flag ciclo azzeramento asse Y
        RICZZ   [ Flag ciclo azzeramento asse Z
        RICZW   [ Flag ciclo azzeramento asse W
        RICZB   [ Flag ciclo azzeramento asse B
        RICZG   [ Flag ciclo azzeramento tutti gli assi
        FFRZ    [ Flag ricerca zero assi in corso
        SEZWOK  [ Flag zero assi Z e W ok per ricerca automatica

        FIMPM   [ Flag impulsi mandrino
        RMO     [ Ausiliario mandrino orario
        RMA     [ Ausiliario mandrino antiorario
        MM8     [ Richiesta refrigerante
        AMROT   [ Mandrino in rotazione (FATTO M3-M4)
        AMAPRM  [ Fatto mandrino
        AMAPRA  [ Ausiliario hold assi
        ARAM    [ Richiesta mandrino automatico
        AAM     [ Consenso abilitazione mandrino
        AHMSG   [ Ausiliario hold da messaggi
        AHMM    [ Ausiliario hold mandrino da manuale
        AHM     [ Ausiliario hold mandrino
        AHMF    [ Ausiliario hold assi con mandrino fermo
        COGEMN  [ Consenso generale mandrino
        CONSMN  [ Consenso rotazione mandrino
        FRIRMN  [ Flag hold mandrino per mancanza consenso
        RMOMND  [ Richiesta movimento mandrino
        FMAMNM  [ Marcia manuale mandrino
        ALG     [ Ausiliario lubrificazione guide manuale
        ATMLG   [ Allarme tempo massimo lubrificazione guide
        MESS    [ Ausiliario presenza messaggi
        AREFAA  [ Predisp. refrigerante da programma
        AREFAM  [ Predisp. refrigerante manuale 
        AHLFC   [ Appoggio lamp. fine ciclo
        ACNEXE  [ Appoggio PLC in esecuzione
        AOILKO  [ Pressione lubrificazione non raggiunta
        OILALM  [ allarme lubrificazione guide
        APLUDY  [ Appoggio lubrif guide asse Y/Z insufficente
        AMSBT   [ Aus. sblocco tool
        FSBUT   [ Flag appoggio sbloccaggio utensile
        ASBT    [ Condizioni ok sblocco tool
        AFABT   [ Fatto cambio tool
        AFHBT   [ Aus. feed hold sblocco tool
        ABLA    [ Aus. assi bloccati 
        ATMST   [ Tempo max. blocco/sblocco utensile
        AOILMD  [ pressione olio testa insuf.
        MM41    [ Rich. gamma 1 mandrino 
        MM42    [ Rich. gamma 2 mandrino 
        AEVCW   [ Ausiliario evacuatore orario
        AEVOFF  [ Ausiliario arresto evacuatore
        AEINT   [ Appoggio evacuatore intasato
        FABVOL  [ Flag abilitazione volantino remotato
        RHOLV   [ Appoggio hold assi e mandrino da volantino
        ALLGEN  [ Appoggio allarmi generali
        ALLASS  [ Appoggio allarmi assi
        ALLMND  [ Appoggio allarmi mandrino
        ALLCG   [ Appoggio allarmi cambio gamma mandrino
        ALLACC  [ Appoggio

        VX4     [ Appoggio visualizzazione asse X
        VX6     [ Appoggio visualizzazione asse X
        VY4     [ Appoggio visualizzazione asse Y
        VY6     [ Appoggio visualizzazione asse Y
        VZ4     [ Appoggio visualizzazione asse Z
        VZ6     [ Appoggio visualizzazione asse Z
        VW4     [ Appoggio visualizzazione asse W
        VW6     [ Appoggio visualizzazione asse W
        VB4     [ Appoggio visualizzazione asse B
        VB6     [ Appoggio visualizzazione asse B



        ALR01   [ Allarme 01
        ALR02   [ Allarme 02
        ALR03   [ Allarme 03
        ALR04   [ Allarme 04
        ALR05   [ Allarme 05
        ALR06   [ Allarme 06
        ALR07   [ Allarme 07
        ALR08   [ Allarme 08
        ALR09   [ Allarme 09
        ALR10   [ Allarme 10
        ALR11   [ Allarme 11
        ALR12   [ Allarme 12
        ALR13   [ Allarme 13
        ALR14   [ Allarme 14
        ALR15   [ Allarme 15
        ALR16   [ Allarme 16
        ALR17   [ Allarme 17
        ALR18   [ Allarme 18
        ALR19   [ Allarme 19
        ALR20   [ Allarme 20
        ALR21   [ Allarme 21
        ALR22   [ Allarme 22
        ALR23   [ Allarme 23
        ALR24   [ Allarme 24
        ALR25   [ Allarme 25
        ALR26   [ Allarme 26
        ALR27   [ Allarme 27
        ALR28   [ Allarme 28
        ALR29   [ Allarme 29
        ALR30   [ Allarme 30
        ALR31   [ Allarme 31
        ALR32   [ Allarme 32
        ALR33   [ Allarme 33
        ALR34   [ Allarme 34
        ALR35   [ Allarme 35
        ALR36   [ Allarme 36
        ALR37   [ Allarme 37
        ALR38   [ Allarme 38
        ALR39   [ Allarme 39
        ALR40   [ Allarme 40
        ALR41   [ Allarme 41
        ALR42   [ Allarme 42
        ALR43   [ Allarme 43
        ALR44   [ Allarme 44
        ALR45   [ Allarme 45
        ALR46   [ Allarme 46
        ALR47   [ Allarme 47
        ALR48   [ Allarme 48
        ALR49   [ Allarme 49
        ALR50   [ Allarme 50

        AVAX
        OASF    [ Appoggio assi fermi

        MNC     [ Manovra non consentita

        ACMND   [ Consenso commutazione mand
        [
        SSRAM

        [-------------------------------

        [   STRINGHE
	[................ MESSAGGI ....................]

	STR
        MSG(50)         [ Testi messaggi operatore

        [-------------------------------
        [   DERIVATE IMPULSIVE

        PULSE

        PLAVA
        [ Pulse pulsante start jog lavoro assi
        PRAPI
        [ Pulse pulsante jog rapido assi
        PISBUT
        [ Pulse pulsante sbloccaggio manuale utensile
        PIABVO
        [ Pulse pulsante abilitazione volantino remotato
        HARDN
        [ Derivata della caduta arresto mandrino da volantino
        PLUBEY
        [ Pulse comando lubrificazione guide asse Y/Z

        [-------------------------------
        [   TIMER VELOCI

        FTIMER

        TTESI,TTESU
        [ Test lampade

        TMAXTI,TMAXTU
        [ Tempo comando ev by-pass bloccaggi

        TM19I,TM19U,TM19D,TM19A,TM19C
        [ Timer verifica tolleranza orientamento

        TIPSOB,TUPSOB 
        [ Timer ritardo start pompa sostent.per asse B sbloccato


	TIZER,ZERIOK,TDZER,TAZER,TWZER
        [ Tempo ritardo per fine ricerca zero assi      
	
	TIFFRZ,TUFFRZ,TDFFRZ,TAFFRZ,TWFFRZ
        [ Tempo ritardo per ricerca zero assi ok


        TIPSOV,TUPSOV 
        [ Timer ritardo start pompa sostent.per asse V sbloccato


        [-------------------------------
        [   TIMER LENTI

        STIMER

        TTII,TTIU,TTID,TTIA,TTIC
        [ Ritardo ausiliari inseriti

        TAUXI,TAUXU,TAUXD,TAUXA,TAUXC
        [ Timer diseccitazione per AUXON

        TRAUXI,TRAUXU
        [ Tempo ritardo per timer diseccitazione

        TCNEXI,TCNEXU
        [ Timer ritardo CNC in esecuzione

        TRAAI,TRAAU
        [ Ritardo per assi pronti

        T1OI,T1OU,T1OD,T1OA,T1OC
        [ Timer oscillatore clock 1 secondo

N507    TICLOL,TUCLOL,TDCLOL,TACLOL,TWCLOL
        [ Timer oscillatore clock 5 secondi

        TPOAXI,TPOAXU,TPOAXD,TPOAXA,TPOAXC
        [ Ritardo potenza assi

        TBYPAI,TBYPAU
        [ Ritardo controllo ok azionamenti assi

        TIBLX,TUBLX
        [ Timer bloccaggio asse X
        TIBLSX,TUBLSX,TDBLSX,TABLSX,TWBLSX
        [ Timout blocco/sblocco asse X
        TIFREX,TUFREX
        [ Timer ritardo sgancio abilitazione asse X
        TICOXP,TUCOXP
        [ Ritardo consenso avanzamento asse X
        TICOXN,TUCOXN
        [ Ritardo soppressione consenso asse X
        TICBXP,TUCBXP
        [ Timer ritardo asse X bloccato
        TICBXN,TUCBXN
        [ Timer ritardo asse X non bloccato

        TIBLY,TUBLY
        [ Timer bloccaggio asse Y
        TIBLSY,TUBLSY,TDBLSY,TABLSY,TWBLSY
        [ Timout blocco/sblocco asse Y
        TIFREY,TUFREY
        [ Timer aggancio freno asse Y
        TICOYP,TUCOYP
        [ Ritardo consenso avanzamento asse Y
        TICOYN,TUCOYN
        [ Ritardo soppressione consenso asse Y
        TICBYP,TUCBYP
        [ Timer ritardo asse Y bloccato
        TICBYN,TUCBYN
        [ Timer ritardo asse Y non bloccato

        TIBLZ,TUBLZ
        [ Timer bloccaggio asse Z
        TIBLSZ,TUBLSZ,TDBLSZ,TABLSZ,TWBLSZ
        [ Timout blocco/sblocco asse Z
        TICOZP,TUCOZP
        [ Ritardo consenso avanzamento asse Z
        TICOZN,TUCOZN
        [ Ritardo soppressione consenso asse Z
        TICBZP,TUCBZP
        [ Timer ritardo asse Z bloccato
        TICBZN,TUCBZN
        [ Timer ritardo asse Z non bloccato

        TIBLW,TUBLW
        [ Timer bloccaggio asse W
        TIBLSW,TUBLSW,TDBLSW,TABLSW,TWBLSW
        [ Timout blocco/sblocco asse W
        TICOWP,TUCOWP
        [ Ritardo consenso avanzamento asse W
        TICOWN,TUCOWN
        [ Ritardo soppressione consenso asse W
        TICBWP,TUCBWP
        [ Timer ritardo asse W bloccato
        TICBWN,TUCBWN
        [ Timer ritardo asse W non bloccato

                               
        TIBLB,TUBLB
        [ Timer bloccaggio asse B
        TIBLSB,TUBLSB,TDBLSB,TABLSB,TWBLSB
        [ Timout blocco/sblocco asse B
        TICOBP,TUCOBP
        [ Ritardo consenso avanzamento asse B
        TICOBN,TUCOBN
        [ Ritardo soppressione consenso asse B
        TICBBP,TUCBBP
        [ Timer ritardo asse B bloccato
        TICBBN,TUCBBN
        [ Timer ritardo asse B non bloccato


        THMI,THMU
        [ RITARDO STOP MANDRINO PER MESSAGGI

        TMRMI,TMRMU
        [ RITARDO MANDRINO COMANDATO NON GIRA

        TRMN0I,TRMN0U
        [ Timer ritardo mandrino fermo

        TRFCGI,TRFCGU
        [ Timer ritardo mandrino fermo per cambio gamma


        TINOGM,TUNOGM
        [ Ritardo gamma non inserita mandrino

        TRDVMI,TRDVMU
        [ Tempo ritardo mandrino in velocita

N935    TIPOTM,TUPOTM
N936    [ Ritardo teleruttore potenza mandrino inserito

        TSOSXI,TSOSXU
        [ Tempo ritardo controllo pressostati sostentamento
        TMLGI,TMLGU
        [ Tempo attesa livello olio ok (30min.)

        TLGI,TLGU
        [ Tempo lubrificazione guide

        TLUBI,TLUBU,TLUBD,TLUBA,TLUBC
        [ timer lubrificazione guide

        TILUBY,TULUBY,TDLUBY,TALUBY,TWLUBY
        [ Timer lubrificazione guide a metri percorsi

        TISTLY,TUSTLY


        TCNOKI,TCNOKU
        [ Ritardo per CNC OK

        
        TALLCI,TALLCU
        [ Tempo max ev by-pass bloccaggi

        TISTMN,TUSTMN
	[ Ritardo stop consenso mandrino per insuff lubrifica testa

        TRMDI,TRMDU
        [ ritardo giri mandrino raggiunti
        TRPCOI,TRPCOU
        [ Tempo ritardo controllo pressostato lubrificazione testa

        TCGMI,TCGMU
        [ Tempo max. esecuzione cambio gamma mandrino

        TGAM1I,TGAM1U
        [ Tempo ritardo controllo gamma 1 inserita
        TGAM2I,TGAM2U
        [ Tempo ritardo controllo gamma 2 inserita
        TABCI,TABCU,TABCD,TABCA,TABCW
        [ Tempo ritardo abilitazione mandrino per sgancio potenza

        TAHMI,TAHMU
        [ Ritardo Hold assi fermi
        [
        COUNT
        CSLUBY,CALUBY,CILUBY,CCLUBY,CWLUBY

        [------------  SOFTKEY ------------------

        SOFTK,1
        PLUCE,LLUCE,'  LUCE'
        POFFEV,LOFFEV,' EVACUA    TORE     STOP  '
        PCWEV,LCWEV,' EVACUA    TORE    ORARIO'
        PREFM,LREFM,' REFRIGE   RANTE   MANUALE'
        PLUBM,LLUBM,' LUBRIFI  CAZIONE'
        PSET,LSET,'   SET     ASSI',3
        PJOG,LJOG,'MANDRINO',2
        PUL3,LAM3,'SELEZIONEDISTANZA LUBRIFICA',4

        [-------------------------------
        SOFTK,2
        PMA,LMA,'MANDRINO   ANTI    ORARIO'
        PSTPM,LSTPM,'  STOP   MANDRINO'
        PMO,LMO,'MANDRINO  ORARIO'
        PM41,LM41,'  GAMMA    BASSA'
        PM42,LM42,'  GAMMA    ALTA'
        PR28,LR28,'  <===',1

        [-------------------------------
        SOFTK,3
        PSETG,LSETG,1,' GRIGLIA      ' 
        PSETB,LSETB,1,'   SET       B'
        PSETW,LSETW,1,'   SET       W'
        PSETZ,LSETZ,1,'   SET       Z'
        PSETY,LSETY,1,'   SET       Y'
        PSETX,LSETX,1,'   SET       X'
        PR48,LR48,'  <===',1

        [-------------------------------
        SOFTK,4
        PUL65,LAM65,'DISTANZA ASSI Y/Z   2 m.   '
        PUL66,LAM66,'DISTANZA ASSI Y/Z   5 m.   '
        PUL67,LAM67,'DISTANZA ASSI Y/Z   10 m.  '
        PR58,LR58,'  <===',1

        [-------------------------------
        SOFTK,6
        PLUX,LLUX,'  LUCE'
        PREFMA,LREFMA,' REFRIGE   RANTE   MANUALE'
        PREFAA,LREFAA,' REFRIGE   RANTE  AUTOMATIC'
        PEVCW,LEVCW,' EVACUA    TORE    ORARIO'
        PEVOFF,LEVOFF,' EVACUA    TORE     STOP  '
        PEVCCW,LEVCCW,1,' EVACUA    TORE    ANTIORA '
        PSICTA,LSICTA,'SICUREZZE TESTA   FRESATURA'
        [-------------------------------
        [
        [   INIZIALIZZAZIONE
        [
        INIT
        FLINIZ=1
        FTIMED=1
        SFKMEN=1
        ACNEXE=1
        NMAX=50
        LSTPM=1
        HOWSTP=1
        IF(KMW(1)<1) KMW(1)=15  [ Forza valore se zero
        IF(KMW(2)<5) KMW(2)=6   [ Forza valore se zero
        TOFLUB=600*KMW(1)       [ Timer pausa lubrificazione
        TONLUB=TOFLUB-10*KMW(2) [ Timer lubrificazione
        IF ((KMW(03)<50)~(KMW(03)>100)) KMW(03)=50
        [ Condizione default durata lubrificazione guide asse Y/Z

        
        [-------------- VARIE ---------------

        TESTL=1
        [ Test lampade alla accensione

        SPGAM(1)=1
        [ Gamma inserita mandrino principale

        [------------ ALLARMI PLC ------------

        MSG(1)='MACCHINA SPENTA'
        MSG(2)='PROTEZIONI TERMICHE PRINCIPALI INTERVENUTE'
        MSG(3)='INTERRUZIONE FUSIBILE 24V.='
        MSG(4)='AZIONAMENTO MANDRINO GUASTO'
        MSG(5)='AZIONAMENTO ASSE X GUASTO'
        MSG(6)='AZIONAMENTO ASSE Y GUASTO'
        MSG(7)='AZIONAMENTO ASSE Z GUASTO'
        MSG(8)='AZIONAMENTO ASSE W GUASTO'
        MSG(9)='ALIMENTATORE ASSI GUASTO'
        MSG(10)='ASSI IN LAVORO CON MANDRINO FERMO'
        MSG(11)='FILTRI SPORCHI SOSTENTAMENTO ASSE X'
        MSG(12)='PRESSIONE SOSTENTAMENTO ASSE X DIFETTOSA'
        MSG(13)='TERMICI AC INTERVENUTI - CONTROLLA F5/F6/F8 '
        MSG(14)='ORIENTAMENTO MANDRINO IN CORSO'
        MSG(15)='ATTENZIONE PIU ASSI SELEZIONATI'
        MSG(16)='ESEGUIRE SET ASSI'

        [ ------------------------------------

        MSG(17)='RIPRISTINA OLIO CENTRALINA'
        MSG(18)='MINIMO LIVELLO OLIO CENTRALINA IDRAULICA'
        MSG(19)='LUBRIFICAZIONE GUIDE ASSI Y/Z DIFETTOSA'
	MSG(20)='PRESSIONE LUBRIFICAZIONE CAMBIO DIFETTOSA'
	MSG(21)='MICRO GAMME MANDRINO GUASTI'
        MSG(22)='GAMMA MANDRINO NON INSERITA'
        MSG(23)='TIME-OUT CAMBIO GAMMA'
        MSG(24)='ROTAZIONE MANDRINO CON UTENSILE SBLOCCATO'
	MSG(25)='LUBRIFICAZIONE TESTA INSUFFICENTE'
	MSG(26)='FILTRO INTASATO LUBRIFICAZIONE TESTA'
        MSG(27)='TIME-OUT EV BY-PASS BLOCCAGGI'
	MSG(28)='ATTESA BLOCCO/SBLOCCO ASSE X'
	MSG(29)='ATTESA BLOCCO/SBLOCCO ASSE Y'
	MSG(30)='ATTESA BLOCCO/SBLOCCO ASSE Z'
	MSG(31)='ATTESA BLOCCO/SBLOCCO ASSE W'
	MSG(32)='BLOCCO/SBLOCCO ASSE X DIFETTOSO'
	MSG(33)='BLOCCO/SBLOCCO ASSE Y DIFETTOSO'

        [ ------------------------------------

	MSG(34)='BLOCCO/SBLOCCO ASSE Z DIFETTOSO'
	MSG(35)='BLOCCO/SBLOCCO ASSE W DIFETTOSO'
        MSG(36)='LIVELLO TROPPO ALTO VASCA RECUPERO OLIO'
        MSG(37)='FILTRO SPORCO RECUPERO OLIO SOSTENTAMENTO'
        MSG(38)='MINIMO LIVELLO ACQUA VASCA REFRIGERANTE'
        MSG(39)='MOVIMENTI MANUALI TAVOLA ABILITATI'
        MSG(40)='VOLANTINO REMOTATO ABILITATO'
        MSG(41)='HOLD ASSI DA VOLANTINO REMOTATO'
        MSG(42)='HOLD ASSI E MANDRINO DA VOLANTINO REMOTATO'
        MSG(43)='ATTESA BLOCCO/SBLOCCO ASSE B/V'
        MSG(44)='BLOCCO/SBLOCCO ASSE B/V DIFETTOSO'
        MSG(45)='SICUREZZE TESTA FRESATURA ABILITATE'
        MSG(46)='AZIONAMENTO TAVOLA GUASTO'
        MSG(47)='TERMICI TAVOLA INTERVENUTI'
        MSG(48)='TAVOLA ABILITATA -SE NON USI DISABILITA'
        MSG(49)=''
        MSG(50)=''

        [ --------------------------------------
        [ ---------- INIZIO PROGRAMMA ----------
        [ ----------   PARTE VELOCE   ----------
        [ --------------------------------------

        PROG

        FCASX=(IFCXN~JOGP(1))&(IFCXP~JOGM(1))
        [ Flag finecorsa asse X
        FCASY=(IFCYN~JOGP(2))&(IFCYP~JOGM(2))
        [ Flag finecorsa asse Y
        FCASZ=(IFCZN~JOGP(3))&(IFCZP~JOGM(3))
        [ Flag finecorsa asse Z
        FCASW=(IFCWN~JOGP(4))&(IFCWP~JOGM(4))
        [ Flag finecorsa asse W


        [----------- FINE PARTE VELOCE ---------
        END

        [---------- INIZIO PARTE LENTA ---------
        [---------------------------------------
        [   PARTE SINCRONA

        IF ("BURDY) ASINC
        DHOLD=1; FHOLD=1

        IF (STROM) CALL GEFUM
        IF (STROH) CALL GEFUH
        IF (STROT) CALL GEFUT

        BURDY=0

        ASINC:$
        [---------------------------------------
        [---------- PARTE ASINCRONA ------------

        IF("TUFFRZ)  CALL VRICZ
        IF(TUFFRZ&"ZERIOK)  CALL POTKO
        IF(TUFFRZ&ZERIOK)   CALL POTOK
        [ Richiama routine gestione valore override
	
        POMO(1)=POFO;POMO(2)=POFO
	POMO(3)=POFO;POMO(4)=POFO
        POMO(5)=POFO
        [ Gestione override manuale

        WNDINT(1)=AUXM
        WNDINT(2)=AUXH

        [---------------------------------------
        IF (BRKA~EMEA~"AUXON) CALL RESET

        [
        [------------ OSCILLATORE --------------
        T1OI(10)="T1OU
        LAMP1S=(T1OC<5)
        [ Clock 1 secondo
        TICLOL(50)="TUCLOL
        [ Clock 5 secondi

           
        TAUXI(20)="AUXON      [ Creazione tempo diseccitazione
        IF("TAUXD)FTIMED=TAUXU;ELSE FTIMED=FTIMED
        TRAUXI(10)=AUXON

        [
        [-------  ATTIVAZIONE MANUALE ----------

        MANUAL=(NCMD=5)~(NCMD=8)~(NCMD=9)
        [Attivare manuali

        [ --------------------------------------
        [ ROUTINE GESTIONE ACCENSIONE AUSILIARI
        [ --------------------------------------

        
        TTII(5)=AUXON
        [ Ritardo alla accensione

        TRAAI(50)=AUXON
        [ Ritardo per assi pronti

        RBRK=TTID
        [ BREAK all'accensione

        
        TTESI(100)=TESTL
        [ Time on
        IF (TTESU) TESTL=0
        [ Fine test lampade

        UCENID=AUXON&IMTER&"ALR18&"ALR36
        [ Pompa centralina idraulica

        USOSTX=AUXON&IMTER&"ALR18&"ALR36
        [ Pompa sostentamento idrostatico asse X

        UROILX=AUXON&IMTER&"IMINRE&(IMAXRE~UROILX)
        [ Pompa recupero olio sostentamento idrostatico asse X

        UPOTBV=AUXON&SABBV
        [ Teleruttore potenza tavola - slitta

        UVENBV=AUXON&SABBV
        [ Teleruttore ventilatore motore tavola - slitta

        UECCBV=AUXON&SABBV
        [ Teleruttore eccitazione motore tavola - slitta

        UCENBV=AUXON&SABBV
        [ Teleruttore pompa centralina idraulica tavola-slitta

        ALLGEN=ALR27~ALR02~ALR03~ALR36~ALR18~ALR47
        [ Allarmi generali macchina

        ALR01="AUXON
        [ Macchina spenta
        
	ALR02=AUXON&"IMTER~ALR02&"BRKA
        [ Protezioni termiche principali intervenute

	ALR03=AUXON&"F240~ALR03&"BRKA
        [ Interruzione fusibile 24V.=

        ALR16=AUXON&("MIZEA(1)~"MIZEA(2)~"MIZEA(3)~"MIZEA(4))
        [ Eseguire set assi

        ALR15=0
        [ Attenzione piu assi selezionati

        ALR13=AUXON&"ITER~ALR13&"BRKA
        [ Intervento termici motori ac secondari

        ALR36=AUXON&"ITPREC~ALR36&"BRKA
        [ Livello recupero olio sostentamento troppo alto

        ALR38=AUXON&IMINAC
        [ Minimo livello acqua vasca refrigerante

        ALR18=AUXON&I30~ALR18&"BRKA
        [ Livello basso olio centralina idraulica

        IF (PLUX~PLUCE) LLUX="LLUX; LLUCE="LLUCE
        [ Pulsanti accensione illuminazione macchina

        IF ("AUXON & LAMP1S & "AUXOFF ) CRSTAU=CRSTAU+1
        [ Contatore stop ausiliari

        IF (AUXON) CRSTAU=0
        [ Reset contatore stop ausiliari

        AUXOFF=(CRSTAU>200)
        [ Ausiliari spenti ritardato

        FUNMAN=STM
        [ Flag funzionamento manuale tavola-slitta

        FUMATA=FUNMAN&IVMROT&"ITRAIN&"IROTIN&IDISIN&SABBV
        [ Flag funzionamento manuale asse B 

        FUMASL=FUNMAN&IVMTRA&"ITRAIN&"IROTIN&IDISIN&SABBV
        [ Flag funzionamento manuale asse V 

        FVOMAI=IVMTRA~IVMROT
        [ Flag volanti manuali tavola-slitta inseriti

        ALR39=FUNMAN~FUMATA~FUMASL
        [ Movimenti manuali tavola abilitati

        ALR47=AUXON&"ITERTA~ALR47&"BRKA
        [ Intervento termici motori asincroni gruppo tavola

        ALR48=AUXON&SABBV
        [ Gruppo tavola abilitato

        PISBUT=ISBUT
        [ Pulse pulsante sbloccaggio manuale utensile
        FSBUT=FF(PISBUT&"FSBUT&ASBT),(PISBUT&FSBUT~BRKA~"AUXON)
        [ Flag appoggio sbloccaggio utensile
        USBUT=AUXON&FSBUT
        [ Ev blocco/sblocco utensile
        HSBUT=AUXON&USBUT~TESTL
        [ Spia utensile sbloccato nel mandrino
        
        RHOLV=I80
        [ Arresto assi e mandrino da volantino
        CYST=HOLDA&HARDN
        [ Proseguimento ciclo per caduta hold mandrino
        HARDN=AUXON &"I80
        [ Pulse arresto assi e mandrino da volantino
         
        UCNOK=FF("EMEA~"TTIU),(EMEA&TTIU)
        [ Uscita CNC pronto

        REME= FF("AUXON),(EMEA)
        [ Emergenza da CNC

   
        [ --------------------------------------
        [  ROUTINE GESTIONE RIFERIMENTO ASSI
        [ --------------------------------------    
        
        
        TIZER(100)=MIZEA(1)&MIZEA(3)
        [ Flag zeri effettuati

        TIFFRZ(100)="FFRZ
        [ Flag fine ricerca zeri

        SEZWOK=MIZEA(3)&MIZEA(4)
        [ Azzeramento asse Z e W eseguito per set automatico

        RICZX=FF(LSETX),("LSETX~MIZEA(1))
        [ Memoria ciclo azzeramento asse X

        RICZY=FF(LSETY),("LSETY~MIZEA(2))
        [ Memoria ciclo azzeramento asse Y

        RICZZ=FF(LSETZ),("LSETZ~MIZEA(3))
        [ Memoria ciclo azzeramento asse Z

        RICZW=FF(LSETW),("LSETW~MIZEA(4))
        [ Memoria ciclo azzeramento asse W


        RICZB=FF(LSETB),("LSETB~MIZEA(5))
        [ Memoria ciclo azzeramento asse W
        RICZG=FF(LSETG),("LSETG~ZERIOK)
        [ Memoria ciclo azzeramento tutti gli assi


        LSETX=FF(PSETX~(LSETG&SEZWOK)),(MIZEA(1)~BRKA~(NCMD<>5))
        [ Appoggio selezione richiesta ricerca zero asse X

        LSETY=FF(PSETY~(LSETG&SEZWOK)),(MIZEA(2)~BRKA~(NCMD<>5))
        [ Appoggio selezione richiesta ricerca zero asse Y

        LSETZ=FF(PSETZ~PSETG),(MIZEA(3)~BRKA~(NCMD<>5))
        [ Appoggio selezione richiesta ricerca zero asse Z

        LSETW=FF(PSETW~PSETG),(MIZEA(4)~BRKA~(NCMD<>5))
        [ Appoggio selezione richiesta ricerca zero asse W

        LSETB=FF(PSETB),(MIZEA(5)~BRKA~(NCMD<>5))
        [ Appoggio selezione richiesta ricerca zero asse B

        LSETG=FF(PSETG),(ZERIOK~BRKA~(NCMD<>5))
        [ Appoggio selezione richiesta ricerca zero tutti gli assi



        FFRZ=LSETX~LSETY~LSETZ~LSETW~LSETB
        [ FFRZ=LSETX~LSETY~LSETZ~LSETW~LSETB
        [ Ricerca zero assi in corso

        MICZE(1)=LSETX
        [ Selezione ricerca zero asse X

        MICZE(2)=LSETY
        [ Selezione ricerca zero asse Y

        MICZE(3)=LSETZ
        [ Selezione ricerca zero asse Z

        MICZE(4)=LSETW
        [ Selezione ricerca zero asse W

        MARK(5)=LSETB
        [ Selezione ricerca zero asse B

        MIZER(1)=IR0X
        [ Assegnazione micro di zero asse X

        MIZER(2)=IR0Y
        [ Assegnazione micro di zero asse Y

        MIZER(3)=IR0Z
        [ Assegnazione micro di zero asse Z

        MIZER(4)=IR0W
        [ Assegnazione micro di zero asse W



        [ --------------------------------------
        [   ROUTINE GESTIONE ASSI E BLOCCAGGI 
        [ --------------------------------------

        DSERV(5)=FUNMAN
                               
        TCNEXI(10)=ACNEXE
        TPOAXI(30)=AUXON & UPOTAX

        TBYPAI(20)=AUXON&UPOTAX
        [ Ritardo controllo ok azionamenti assi

        TSOSXI(20)=AUXON&("I39~"I40)
        [ Tempo controllo pressostati sostentamento

        ALLASS=ALR05~ALR06~ALR07~ALR08~ALR09~ALR12~ALR46
        [ Appoggio allarmi assi

        UPOTAX="FTIMED&TCNEXU
        [ Uscita potenza assi
                          
        IF (PSICTA) LSICTA="LSICTA
        [ Pulsante inserzione sicurezze testa fresatura

        ALR45=LSICTA
        [ Sicurezze testa fresatura abilitate

        [ ----------   GESTIONE ASSE X   ------------

        FMOVAX=MOVCN(1)&"ALR05&"ALR09&IOKX&TBYPAU&"ALR12 
        [ Flag movimento asse X
        TIBLX(8)="FMOVAX
        [ Timer bloccaggio asse X
        UABILX=(FMOVAX&USBLX&IOKX&TBYPAU~UABILX&"TUFREX)&UPOTAX
        [ Abilitazione asse X
        TIFREX(8)="USBLX
        [ Timer ritardo sgancio abilitazione asse X
        USBLX=FMOVAX~USBLX&UPOTAX&"TUBLX
        [ Ev sblocco asse X
        TIBLSX(40)=USBLX&"PSBLX~AUXON&"USBLX&PSBLX
        [ Timout blocco/sblocco asse X
        TICOXP(10)=PSBLX&USBLX&UABILX
        [ Ritardo consenso avanzamento asse X
        TICOXN(5)="TICOXP
        [ Ritardo soppressione consenso asse X
        CONSX=FMOVAX&FCASX&UABILX&USBLX&(I39&I40&"ALR12&TUCOXP $
        ~CONSX&"TUCOXN)
        [ Consenso avanzamento asse X
        TICBXP(10)="UABILX&"USBLX&"PSBLX&TUBLX
        [ Timer ritardo asse X bloccato
        TICBXN(5)="PSBLX
        [ Timer ritardo asse X non bloccato
        CONBX="UABILX&"USBLX&(TUCBXP~CONBX&"TUCBXN)
        [ Consenso asse X bloccato
        RHOLX=((MOVCN(1)&FMOVAX&((NCMD=5)&"(SXP~SXM~(HWL(1)=1)~COAVAX)$
        &"FFRZ~CONSX))~("MOVCN(1)&(CONBX~"ARAM)))&"((HWL(1)=1)&     $
        "FCASX)
        [ Richiesta hold asse X se 0
        RDMOV(1)=MOVCN(1)&CONSX~RDMOV(1)&"CONBX
        [ Risposta asse X al move CNC


        [ ----------   GESTIONE ASSE Y   ------------

        FMOVAY=MOVCN(2)&"ALR03&"ALR06&"ALR09&IOKY&TBYPAU
        [ Flag movimento asse Y
        TIBLY(8)="FMOVAY
        [ Timer bloccaggio asse Y
        UABILY=(FMOVAY&USBLY&IOKY&TBYPAU~UABILY&"TUFREY)&UPOTAX
        [ Abilitazione asse Y
        USBLY=FMOVAY~USBLY&UPOTAX&"TUBLY
        [ Ev sblocco asse Y
        UFRENY=UABILY&(FMOVAY~UFRENY&USBLY&"TUBLY)
        [ Freno asse Y
        TIFREY(2)="UFRENY
        [ Timer aggancio freno asse Y
        TIBLSY(40)=USBLY&"PSBLY~AUXON&"USBLY&PSBLY
        [ Timout blocco/sblocco asse Y
        TICOYP(10)=PSBLY&USBLY&UABILY&UFRENY
        [ Ritardo consenso avanzamento asse Y
        TICOYN(5)="TICOYP
        [ Ritardo soppressione consenso asse Y
        CONSY=FMOVAY&FCASY&UABILY&USBLY&UFRENY&(TUCOYP~CONSY&   $
        "TUCOYN)
        [ Consenso avanzamento asse Y
        TICBYP(10)="UABILY&"UFRENY&"USBLY&"PSBLY&TUBLY
        [ Timer ritardo asse Y bloccato
        TICBYN(5)="PSBLY
        [ Timer ritardo asse Y non bloccato
        CONBY="UABILY&"UFRENY&"USBLY&(TUCBYP~CONBY&"TUCBYN)
        [ Consenso asse Y bloccato
        RHOLY=((MOVCN(2)&FMOVAY&((NCMD=5)&"(SYM~SYP~(HWL(1)=2)~COAVAY)$
        &"FFRZ~CONSY))~("MOVCN(2)&(CONBY~"ARAM)))&"((HWL(1)=2)&     $
        "FCASY)
        [ Richiesta hold asse Y se 0
        RDMOV(2)=MOVCN(2)&CONSY~RDMOV(2)&"CONBY
        [ Risposta asse Y al move CNC
   
        [ ----------   GESTIONE ASSE Z   ------------
                                      
        FMOVAZ=MOVCN(3)&"ALR07&"ALR09&IOKZ&TBYPAU
        [ Flag movimento asse Z
        TIBLZ(8)="FMOVAZ
        [ Timer bloccaggio asse Z
        UABILZ=(FMOVAZ&USBLZ&IOKZ&TBYPAU~UABILZ&"TUBLZ)&UPOTAX
        [ Abilitazione asse Z
        USBLZ=FMOVAZ~USBLZ&UPOTAX&"TUBLZ
        [ Ev sblocco asse Z
        TIBLSZ(40)=USBLZ&"PSBLZ~AUXON&"USBLZ&PSBLZ
        [ Timout blocco/sblocco asse Z
        TICOZP(10)=PSBLZ&USBLZ&UABILZ
        [ Ritardo consenso avanzamento asse Z
        TICOZN(8)="TICOZP
        [ Ritardo soppressione consenso asse Z
        CONSZ=FMOVAZ&FCASZ&UABILZ&USBLZ&(TUCOZP~CONSZ&"TUCOZN)
        [ Consenso avanzamento asse Z
        TICBZP(10)="UABILZ&"USBLZ&"PSBLZ&TUBLZ
        [ Timer ritardo asse Z bloccato
        TICBZN(5)="PSBLZ
        [ Timer ritardo asse Z non bloccato
        CONBZ="UABILZ&"USBLZ&(TUCBZP~CONBZ&"TUCBZN)
        [ Consenso asse Z bloccato
        RHOLZ=((MOVCN(3)&FMOVAZ&((NCMD=5)&"(SZP~SZM~(HWL(1)=3)~COAVAZ)$
        &"FFRZ~CONSZ))~("MOVCN(3)&(CONBZ~"ARAM)))&"((HWL(1)=3)&    $
        "FCASZ)
        [ Richiesta hold asse Z se 0
        RDMOV(3)=MOVCN(3)&CONSZ~RDMOV(3)&"CONBZ
        [ Risposta asse Z al move CNC

        [ ----------   GESTIONE ASSE W   ------------
     
        FMOVAW=MOVCN(4)&"ALR08&"ALR09&"ETAM&IOKW&TBYPAU
        [ Flag movimento asse W
        TIBLW(8)="FMOVAW
        [ Timer bloccaggio asse W
        UABILW=(FMOVAW&USBLW&IOKW&TBYPAU~UABILW&"TUBLW)&UPOTAX
        [ Abilitazione asse W
        USBLW=FMOVAW~USBLW&UPOTAX&"TUBLW
        [ Ev sblocco asse W
        TIBLSW(40)=USBLW&"PSBLW~AUXON&"USBLW&PSBLW
        [ Timout blocco/sblocco asse W
        TICOWP(10)=PSBLW&USBLW&UABILW
        [ Ritardo consenso avanzamento asse W
        TICOWN(8)="TICOWP
        [ Ritardo soppressione consenso asse W
        CONSW=FMOVAW&FCASW&UABILW&USBLW&(TUCOWP~CONSW&"TUCOWN)
        [ Consenso avanzamento asse W
        TICBWP(10)="UABILW&"USBLW&"PSBLW&TUBLW
        [ Timer ritardo asse W bloccato
        TICBWN(5)="PSBLW
        [ Timer ritardo asse W non bloccato
        CONBW="UABILW&"USBLW&(TUCBWP~CONBW&"TUCBWN)
        [ Consenso asse W bloccato
        RHOLW=((MOVCN(4)&FMOVAW&((NCMD=5)&"(SWP~SWM~(HWL(1)=4)~COAVAW)$
        &"FFRZ~CONSW))~("MOVCN(4)&(CONBW~"ARAM)))&"((HWL(1)=4)&     $
        "FCASW)
        [ Richiesta hold asse W se 0
        RDMOV(4)=MOVCN(4)&CONSW~RDMOV(4)&"CONBW
        [ Risposta asse W al move CNC


                                
        [ ----------   GESTIONE ASSE B   ------------
                                      
        FMOVAB=MOVCN(5)&"ALR46&IOKBV&TBYPAU&"FUNMAN&"FVOMAI&SABBV  
        [ Flag movimento asse B
        TIBLB(8)="FMOVAB
        [ Timer bloccaggio asse B
        FSBLB=ISBLB&ISOSTB
        [ Appoggio tavola sbloccata e sostentata
        UABIBV=(FMOVAB&USBLB&IOKBV&TBYPAU~UABIBV&"TUBLB)&UPOTAX&"FUNMAN
        [ Abilitazione asse B
        USBLB=(FMOVAB~USBLB&UPOTAX&"TUBLB)~FUMATA
        [ Ev sblocco asse B
        TIPSOB(100)=ISBLB
        [ Ritardo consenso partenza pompa sostentamento asse B
        USOSTB=USBLB&TUPSOB
        [ Teleruttore pompa sostentamento asse B
        ULUBBV=UABIBV
        [ Teleruttore pompa lubrificazione cambio tavola-slitta        
        TIBLSB(40)=USBLB&"FSBLB~AUXON&"USBLB&FSBLB
        [ Timout blocco/sblocco asse B
        TICOBP(30)=FSBLB&USBLB&UABIBV
        [ Ritardo consenso avanzamento asse B
        TICOBN(8)="TICOBP
        [ Ritardo soppressione consenso asse B
        CONSB=FMOVAB&UABIBV&USBLB&(TUCOBP~CONSB&"TUCOBN)
        [ Consenso avanzamento asse B
        TICBBP(10)="UABIBV&"USBLB&"FSBLB&TUBLB
        [ Timer ritardo asse B bloccato
        TICBBN(5)="FSBLB
        [ Timer ritardo asse B non bloccato
        CONBB="UABIBV&"USBLB&(TUCBBP~CONBB&"TUCBBN)
        [ Consenso asse B bloccato
        RHOLB=((MOVCN(5)&FMOVAB&((NCMD=5)&"(SBP~SBM~(HWL(1)=5)~COAVAB)$
        &"FFRZ~CONSB))~("MOVCN(5)&(CONBB~"ARAM)))
        [ Richiesta hold asse B se 0
        RDMOV(5)=MOVCN(5)&CONSB~RDMOV(5)&"CONBB
        [ Risposta asse B al move CNC


        SJOG=(NCMD=5)~(NCMD=8)~(NCMD=9)
        [ Stato jog abilitato

        PLAVA=BLAV
        [ Pulse pulsante start jog lavoro assi

        PRAPI=BRAP
        [ Pulse pulsante jog rapido assi

        CONGAX="FFRZ&"BRAP&SJOG&"RHOLD&"HOLDA
        [ Consenso generale avanzamento assi in jog

        COAVAX=CONGAX&"FRAPIX&(PLAVA~COAVAX&(JOGP(1)~JOGM(1)))
        [ Consenso avanzamento asse X in jog

        COAVAY=CONGAX&"FRAPIY&(PLAVA~COAVAY&(JOGP(2)~JOGM(2)))
        [ Consenso avanzamento asse Y in jog

        COAVAZ=CONGAX&"FRAPIZ&(PLAVA~COAVAZ&(JOGP(3)~JOGM(3)))
        [ Consenso avanzamento asse Z in jog

        COAVAW=CONGAX&"FRAPIW&(PLAVA~COAVAW&(JOGP(4)~JOGM(4)))
        [ Consenso avanzamento asse W in jog

        COAVAB=CONGAX&"FRAPIB&(PLAVA~COAVAB&(JOGP(5)~JOGM(5)))
        [ Consenso avanzamento asse B in jog

        FRAPIX=BRAP&(SXM~SXP)&(PRAPI~FRAPIX)
        [ Flag rapido asse X in jog

        FRAPIY=BRAP&(SYM~SYP)&(PRAPI~FRAPIY)
        [ Flag rapido asse Y in jog

        FRAPIZ=BRAP&(SZM~SZP)&(PRAPI~FRAPIZ)
        [ Flag rapido asse Z in jog

        FRAPIW=BRAP&(SWM~SWP)&(PRAPI~FRAPIW)
        [ Flag rapido asse W in jog

        FRAPIB=BRAP&(SBM~SBP)&(PRAPI~FRAPIB)
        [ Flag rapido asse B in jog


        JOGP(1)=AUXON&IFCXP&SJOG&("SXM&SXP&BSTA&(FRAPIX~BLAV~ $
        PAVIMP~COAVAX)~RICZX~(PJPVOL&FABVOL&(HWL(1)=1)))
        [ Jog X+

        JOGM(1)=AUXON&IFCXN&SJOG&("SXP&SXM&BSTA&(FRAPIX~BLAV~  $
        PAVIMP~COAVAX)~(PJNVOL&FABVOL&(HWL(1)=1)))
        [ Jog X-

        JOGP(2)=AUXON&IFCYP&SJOG&("SYM&SYP&BSTA&(FRAPIY~BLAV~ $
        PAVIMP~COAVAY)~RICZY~(PJPVOL&FABVOL&(HWL(1)=2)))
        [ Jog Y+

        JOGM(2)=AUXON&IFCYN&SJOG&("SYP&SYM&BSTA&(FRAPIY~BLAV~  $
        PAVIMP~COAVAY)~(PJNVOL&FABVOL&(HWL(1)=2)))
        [ Jog Y-

        JOGP(3)=AUXON&IFCZP&SJOG&("SZM&SZP&BSTA&(FRAPIZ~BLAV~ $
        PAVIMP~COAVAZ)~RICZZ~(PJPVOL&FABVOL&(HWL(1)=3)))
        [ Jog Z+

        JOGM(3)=AUXON&IFCZN&SJOG&("SZP&SZM&BSTA&(FRAPIZ~BLAV~  $
        PAVIMP~COAVAZ)~(PJNVOL&FABVOL&(HWL(1)=3)))
        [ Jog Z-

        JOGP(4)=AUXON&IFCWP&SJOG&("SWM&SWP&BSTA&(FRAPIW~BLAV~ $
        PAVIMP~COAVAW)~RICZW~(PJPVOL&FABVOL&(HWL(1)=4)))
        [ Jog W+

        JOGM(4)=AUXON&IFCWN&SJOG&("SWP&SWM&BSTA&(FRAPIW~BLAV~  $
        PAVIMP~COAVAW)~(PJNVOL&FABVOL&(HWL(1)=4)))
        [ Jog W-


        JOGP(5)=AUXON&SJOG&("SBM&SBP&BSTA&(FRAPIB~BLAV~ $
        PAVIMP~COAVAB)~(PJPVOL&FABVOL&(HWL(1)=5)))
        [ Jog B+

        JOGM(5)=AUXON&SJOG&("SBP&SBM&BSTA&(FRAPIB~BLAV~  $
        PAVIMP~COAVAB)~RICZB~(PJNVOL&FABVOL&(HWL(1)=5)))
        [ Jog B-




        MOVMA=JOGP~JOGM
        [ Selezione assi in jog

        [ IF (AUXON&FM11A) MM11=SSA
        [ IF (MIZEA(1)&MIZEA(2)&MIZEA(3)&MIZEA(4)&AUXON&"FM11A)   $
        [ SSA=MM11; FM11A=1
        [ Richiesta sblocco assi per M11 memorizzato

        ALR05=AUXON&TPOAXU&"IOKX~ALR05&"BRKA
	[ Azionamento asse X guasto
        ALR06=AUXON&TPOAXU&"IOKY~ALR06&"BRKA
	[ Azionamento asse Y guasto
        ALR07=AUXON&TPOAXU&"IOKZ~ALR07&"BRKA
	[ Azionamento asse Z guasto
        ALR08=AUXON&TPOAXU&"IOKW~ALR08&"BRKA
	[ Azionamento asse W guasto
        ALR09=AUXON&TPOAXU&"IOKAL~ALR09&"BRKA
	[ Alimentatore assi guasto
        ALR46=AUXON&TPOAXU&"IOKBV~ALR46&"BRKA
        [ Azionamento tavola guasto



        ALR10=AUXON&"ARAM&"DVM&(COAVAX~COAVAY~COAVAZ~COAVAW)
        [ Assi in lavoro con mandrino fermo
        ALR11=AUXON&USOSTX&("I41~"I42)
	[ Filtri sporchi sostentamento asse X
        ALR12=AUXON&USOSTX&TSOSXU~ALR12&"BRKA
	[ Pressione sostentamento asse X insufficiente

        ALR37=AUXON&"I31
        [ Filtro sporco recupero olio sostentamento
        ALR28=TDBLSX
	[ Attesa blocco/sblocco asse X
        ALR29=TDBLSY
	[ Attesa blocco/sblocco asse Y
        ALR30=TDBLSZ
	[ Attesa blocco/sblocco asse Z
        ALR31=TDBLSW
	[ Attesa blocco/sblocco asse W
        ALR43=TDBLSB
        [ Attesa blocco/sblocco asse B

                                      
        ALR32=TUBLSX
	[ Blocco/sblocco asse X difettoso
        ALR33=TUBLSY
	[ Blocco/sblocco asse Y difettoso
        ALR34=TUBLSZ
	[ Blocco/sblocco asse Z difettoso
        ALR35=TUBLSW
	[ Blocco/sblocco asse W difettoso
        ALR44=TUBLSB
        [ Blocco/sblocco asse B difettoso

                               
        HLLAV=AUXON&(COAVAX~COAVAY~COAVAZ~COAVAW~COAVAB)~TESTL
        [ Spia lavoro assi

        HHLDA=AUXON&(HOLDA&"AHM~LAMP1S&AHM~ALR41)~TESTL
        [ Spia hold assi e hold mandrino lampeggiante




        [ --------------------------------------
        [ ROUTINE GESTIONE COMANDI MANUALI
        [ --------------------------------------

        [--------------------------------------

        OASF=((MOVCN&"INTOL)=0)
        ANAS=MANUAL&("SXP&"SXM&"SYP&"SYM&"SZP&"SZM&"SWP&"SWM&  $
        "SBP&"SBM&"IAXVO1&"IAXVO2&"IAXVO3)
        [ Nessun asse selezionato in jog

        IF (MANUAL&OASF&(SXP~SXM~(HWL(1)=1))) ASTP=1;ELSE $
        IF (MANUAL&OASF&(SYP~SYM~(HWL(1)=2))) ASTP=2;ELSE $
        IF (MANUAL&OASF&(SZP~SZM~(HWL(1)=3))) ASTP=3;ELSE $
        IF (MANUAL&OASF&(SWP~SWM~(HWL(1)=4))) ASTP=4;ELSE $
        IF (MANUAL&OASF&(SBP~SBM~(HWL(1)=5))) ASTP=5;ELSE $
        IF (OASF&("MANUAL~ANAS)) ASTP=0
	[Carica valore asse per lettura parametri

        
	IF (ASTP<>AXSTP) AVAX=1;ELSE AVAX=0
        [ Appoggio richiesta lettura parametri assi

	IF (AVAX) AXSTP=ASTP;ACTSTP=1
        [ Richiesta lettura parametri assi

	IF(AXSTP>0) AVSTP=ABS(VALSTP);ELSE AVSTP=0
        [ Carica valore velocita' rapido assi

        IF(AXSTP>0) VATT=ABS(VFF(ASTP));ELSE VATT=VATT
        [ Visualizza velocita' asse selezionato in manuale

        IF ("BRAP&"PRAVOL&(FEED<AVSTP)) AFEED=FEED;ELSE AFEED=AVSTP
        [ Carica valore massima feed in manuale

	IF(AVSTP>0) AFJM=(AFEED/AVSTP);ELSE AFJM=0
        
        WNDINT(1)=AUXM
        WNDINT(2)=AUXH
        

        IF (ANAS) MOVMA=0
        IF (ANAS&FABVOL) MOVMA=JOGP~JOGM
        ASP(1)=SXP
        ASP(2)=SYP
        ASP(3)=SZP
        ASP(4)=SWP
        ASP(5)=SBP


        ASM(1)=SXM
        ASM(2)=SYM
        ASM(3)=SZM
        ASM(4)=SWM
        ASM(5)=SBM


        AMOV= FF(BLAV),("BSTA~BRKA~PSTPM~"PSTMD~("SPMOV(1)&"BLAV))
        [ Ausiliario assi in lavoro 


        [ --------------------------------------
        [ ROUTINE GESTIONE VOLANTINO ELETTRONICO
        [ --------------------------------------

        
        PIABVO=IABVOL
        [ Pulse pulsante abilitazione volantino remotato
        FABVOL=FF(PIABVO&"FABVOL),(PIABVO&FABVOL~"AUXON)
        [ Flag abilitazione volantino remotato
        ALR40= FABVOL
        [ Volantino remotato abilitato
        ALR41= AUXON&I79
        [ Hold assi da volantino remotato
        ALR42= AUXON&RHOLV
        [ Hold assi e mandrino da volantino remotato

        UHAV= AUXON & HOLDA
        [ Messaggio hold assi su volantino

        UHMV= AUXON & AHM
        [ Messaggio hold mandrino su volantino


        [ ---  ASSEGNAZIONE ASSI DA VOLANTINO --- 
        
        IF (FABVOL&IAXVO1&"IAXVO2&"IAXVO3) HWL(1)=1
        [ Assegnazione asse X da volantino
        IF (FABVOL&"IAXVO1&IAXVO2&"IAXVO3) HWL(1)=2
        [ Assegnazione asse Y da volantino
        IF (FABVOL&IAXVO1&IAXVO2&"IAXVO3)  HWL(1)=3
        [ Assegnazione asse Z da volantino
        IF (FABVOL&"IAXVO1&"IAXVO2&IAXVO3) HWL(1)=4
        [ Assegnazione asse Z da volantino
        IF (FABVOL&IAXVO1&"IAXVO2&IAXVO3)   HWL(1)=5
        [ Assegnazione asse B da volantino
                
        IF ("FABVOL) HWL(1)=0
        [ Disattiva assegnazione assi da volantino

        [ ---  ASSEGNAZIONE PASSI VOLANTINO --- 

        IF (ISEVO1&"ISEVO2) STEP=1
        [ Assegnazione passo 0.25 a volantino
        IF ("ISEVO1&ISEVO2) STEP=2
        [ Assegnazione passo 1 a volantino
        IF (ISEVO1&ISEVO2) STEP=3
        [ Assegnazione passo 4 a volantino


        IF (ANAS&"BSTA~"MANUAL~BRKA) MOVMA=0;JOGP=0;JOGM=0;$
        AMOV=0; APAS=0
       
        
                                
        [ --------------------------------------
        [       ROUTINE GESTIONE MANDRINO
        [ --------------------------------------

        
        ALLMND=ALR04~ALR25
        [ Appoggio allarmi mandrino

        ALR04= AUXON&("DMP~ALR04&"BRKA)
        [ Azionamento mandrino guasto

        AAM=AUXON&DMP&"THMU
        [ Consenso abilitazione

        TRMN0I(10)="DVM
        [ Ritardo mandrino fermo

        TRDVMI(35)=DVM
        [ Ritardo mandrino in velocita

        TABCI(20)="UABILC
        [ Ritardo per sgancio potenza

        UPOTMA=AUXON&(RMO~RMA~GAM1~GAM2~FIMPM~SPORI(1))~UPOTMA&  $
        ("TABCU~"TRMN0U&"AUXOFF)
        [ Uscita potenza mandrino

        FIMPM=AUXON&MANUAL&"RMO&"RMA&PIMPM
        [ Flag appoggio mandrino ad impulsi

        ARAM=AAM&(RMO~RMA)
        [ Richiesta rotazione mandrino

        AMROT=(RMO~RMA)&"DVM&(CICFI<>84)
        [ Mandrino fermo con richiesta rotazione

        SPDIR(1)=RMA
        [ Senso rotazione mandrino

        [SPDIS(1)=EMEA

        TM19I(20)=SPTOL(1)&SPORI(1)
        [ Verifico tolleranza orientamento per 1 secondo
        IF (TM19U) SPORI=0
        [ Reset comando orientamento mandrino
        IF (LM41) SPVEOR(1)=(SPSMG1(1)-KMF(10))/SPSMG1(1)
        [ Limitazione velocita mandrino in orientamento - Gamma 1
        IF (LM42) SPVEOR(1)=(SPSMG2(1)-KMF(10))/SPSMG2(1)
        [ Limitazione velocita mandrino in orientamento - Gamma 2
        ALR14=SPORI(1)
        [ Orientamento mandrino in corso di esecuzione
        IF (LSTPM&"PIMPM) SPVEL(1)=SPEED

        IF(EG1&"LSTPM) SPVEL(1)=SPSMG1(1)
        IF(EG2&"LSTPM) SPVEL(1)=SPSMG2(1)

        IF (AUXON&PIMPM&LSTPM&"RMO&"RMA) SPVEL(1)=20
        [ Velocita mandrino ad impulsi

        SPGDA=1
        [ MANDRINO CHE UTILIZZA CICLO FISSO G84

        IF (CICFI=84) SPSSO(1)=1; $
        ELSE SPSSO(1)=ANI(3)*1.2
        [ Forza speed 100% con G84

        IF(MANUAL) SPSSO=ANI(3)*1.2

        SPROT(1)=AUXON&("AHM&ARAM~PIMPM)
        [ Richiesta rotazione al CNC

        UABILC=SPMOV(1)
        [ Uscita abilitazione mandrino

        GIRMI=INT(ABS(SPTCH(1)))
        TMRMI(10)=SPMOV(1)&ERIP&AMROT&(SPSSO(1)>0)
        [Rit. in moto
        TRMDI(40)=ARAM
        [ Ritardo mandrino giri raggiunti

        IF (FSBUT~LSICTA) CALL LM05
        [ Arresto mandrino da cambio utensile o testa fresatura mo

        IF ("AUXON~BRKA) CALL LM05


        AHMM=FF(HOLDA&(PSTPM~"PSTMD~"ERIP~ $
        SFKCNS(2))),(SFKCNS(1)~BRKA)
        [ Appoggio hold mandrino
        AHM=ARAM&(AHMM~"ERIP~RHOLV)
        [ Hold mandrino

        AHMF=TTIU&"SPPND(1)&"RAPI&"RMO&"RMA&$
        (INTOL<15)&CYON&(SSA=15)
        [TAHMI(10)=AUXON&AHMF~TAHMU&"BRKA

        IF (HOLDA) NOMAND

        IF(AUXON&MANUAL&(PRMO~PMO)) CALL LM03
        [ Rotazione oraria mandrino
         
        IF(AUXON&MANUAL&(PRMA~PMA)) CALL LM04
        [ Rotazione antioraria mandrino

        IF(("PSTMD~PSTPM)&(MANUAL~(NCMD=2))~(("LSTPM)&(LMO~LMA))&$
        (NCMD<>2)&(NCMD<>5)) CALL LM05

        NOMAND:$
        LMO=FF (MANUAL&RMO&"RMA),(PSTPM~"PSTMD~BRKA~RMA)
        LMA=FF (MANUAL&RMA&"RMO),(PSTPM~"PSTMD~BRKA~RMO)
        LSTPM=FF (MANUAL&PSTPM),(PMO~PMA~PRMO~PRMA)

        HLRMO=AUXON&(MANUAL&SPROT(1)&RMO)~TESTL
        [ Spia marcia mandrino orario

        HLRMA=AUXON&(MANUAL&SPROT(1)&RMA)~TESTL
        [ Spia marcia mandrino antiorario



        [------------ CAMBIO GAMMA -----------

        [IF(PM41~MM41~(SPEED>0)&(SPEED<SPSMG1(1))&STROS) GAM2=0; GAM1=1
        IF(PM41~MM41) GAM2=0; GAM1=1
        [ Richiesta gamma 1

        [IF(PM42~MM42~(SPEED>=SPSMG1(1))&STROS) GAM1=0; GAM2=1
        IF(PM42~MM42) GAM1=0; GAM2=1
        [ Richiesta gamma 2

        TRFCGI(30)=AUXON&(GAM1~GAM2)
        [ Tempo ritardo inserzione gamme mandrino

        TGAM1I(10)=AUXON&EG1
        [ Tempo ritardo controllo gamma 1 inserita

        TGAM2I(10)=AUXON&EG2
        [ Tempo ritardo controllo gamma 2 inserita

        [UGAM1=AUXON&TRFCGU&GAM1&"TCGMU&"UGAM2
        [ Ev inserzione gamma 1

        [UGAM2=AUXON&TRFCGU&GAM2&"TCGMU&"UGAM1
        [ Ev inserzione gamma 2
        UGAM1=AUXON&TRFCGU&GAM1~UGAM1&"GAM2
        [ Ev inserzione gamma 1

        UGAM2=AUXON&TRFCGU&GAM2~UGAM2&"GAM1
        [ Ev inserzione gamma 2

        IF (TGAM1U&"TGAM2U)  GAM1=0; MM41=0; LM41=1; LM42=0
        [ GAMMA 1

        IF (TGAM2U&"TGAM1U)  GAM2=0; MM42=0; LM42=1; LM41=0
        [ GAMMA 2

        IF (EG1&"EG2) SPGAM(1)=1
        [ Gamma 1 inserita

        IF (EG2&"EG1) SPGAM(1)=2
        [ Gamma 2 inserita

        SPPND(1)=(GAM1&"EG1)~(GAM2&"EG2)
        [ Pendolamento mandrino per cambio gamma

        [TCGMI(170)=AUXON&(UGAM1~UGAM2)
        [ Tempo max.esecuzione cambio gamma

        IF(AUXON&TCGMU) GAM1=0; GAM2=0
        [ Cambio gamma fallito

        ALLCG=ALR21~ALR22~ALR23
        [ Appoggio allarmi cambio gamma mandrino

        ALR21=EG1&EG2~ALR21&"BRKA
        [ Micro cambio gamma mandrino guasti

        TINOGM(8)="EG1&"EG2
        [ Ritardo gamma non inserita mandrino

        ALR22="GAM1&"GAM2&((RMO~RMA)&TUNOGM~ALR22&"BRKA)
        [ Gamma non inserita o fuoriuscita

        ALR23=TCGMU~ALR23&"BRKA
        [ Cambio gamma fallito
       
             
        [--------------------------------------
        [------------ REFRIGERANTE ------------
       

        IF (PREFM) LREFM="LREFM
        IF ("MANUAL) LREFM=0

        IF (PREFAA) AREFAA="AREFAA; AREFAM=0
        [ Appoggio refrigerante automatico 

        IF (PREFMA) AREFAM="AREFAM; AREFAA=0
        [ Appoggio refrigerante manuale 

        LREFAA=AREFAA&UREF~AREFAA&"UREF&LAMP1S
        [ Lampada refrigerante automatico

        LREFMA=AREFAM&UREF~AREFAM&"UREF&LAMP1S
        [ Lampada refrigerante manuale

        UREF=AUXON&"IREFAP&(LREFM~AREFAM~AREFAA&MM8)
        [ Teleruttore pompa refrigerante

        UREFAP=AUXON&IREFAP&(LREFM~AREFAM~AREFAA&MM8)
        [ Teleruttore pompa refrigerante alta pressione
       


        [---------------------------------------
        [-------- LUBRIFICAZIONE GUIDE ---------
       

        LLUBM=ULG
        [ Lampada lubrificazione manuale guide

        TLUBI(TOFLUB)="TLUBU&AUXON&"PLUBM
        [ Timer lubrificazione

        [ ULG=(TLUBC>TONLUB)&AUXON&"AOILKO
        [ Rele ev lubrificazione  guide

        TLGI(30)=ULG
        [ Ritardo non avviene lubrificazione guide

        IF (ULG&TLGU&"PLG) AOILKO=1

        IF ("AUXON~BRKA) AOILKO=0

        ALR19= AOILKO
        [ Lubrificazione guide difettosa
        
        OILALM=FF((NCMD>4)&AUXON&EOLIO),("EOLIO)

        TMLGI(18000)=AUXON&(NCMD<5)&(NCMD>1)&OILALM

        M1LUBY="PUL66&"PUL67&"M2LUBY&"M3LUBY
        M2LUBY=(PUL66~M2LUBY)&"PUL65&"PUL67
        M3LUBY=(PUL67~M3LUBY)&"PUL65&"PUL66
        [ Selezione spazio intervallo lubrificazione guide assi Y/Z
        IF (M1LUBY) MLY=2000; MTLY=60
        IF (M2LUBY) MLY=5000; MTLY=120
        IF (M3LUBY) MLY=10000; MTLY=240
        [ Caricamento spazio max di lubrificazione guide assi Y/Z
        PLUBEY=TDLUBY
        CSLUBY(MTLY)=PLUBEY
        CILUBY=(UABILY&FMOVAY~UABILZ&FMOVAZ)&((FRAPIY~    $
        FRAPIZ)&LAMP1S~"FRAPIY&"FRAPIZ&TUCLOL)
        [ Conteggio tempo intervallo lubrificazione guide assi Y/Z
        [ IF (PLUBM&"TDLUBY~RESAL&TULUBY) TWLUBY=KMW(03)+80
        IF (PLUBM&"TDLUBY) TWLUBY=KMW(03)
        TILUBY(KMW(03))=((CORSAY>=MLY)~(CORSAZ>=MLY)~CCLUBY~PLUBM $
        ~FLINIZ~ULG)&"TUSTLY&"APLUDY&AUXON
        [ Comando lubrificazione guide assi Y/Z
        IF ("INTOL(2)&MOVCN(2)~FMOVAY) CORSAY=CORSAY+ABS(POA(2)-POAOLY)
        IF ("INTOL(3)&MOVCN(3)~FMOVAZ) CORSAZ=CORSAZ+ABS(POA(3)-POAOLZ)
        [ Calcolo spazio percorso assi Y/Z
        POAOLY=POA(2)
        POAOLZ=POA(3)
        [ Aggiornamento posizioni vecchie assi Y/Z
        IF (ULG) CORSAY=0; CORSAZ=0; FLINIZ=0
        [ Azzeramento spazio percorso assi Y/Z
        ULG=TDLUBY
        [ Teleruttore lubrificazione guide assi Y/Z
        TISTLY(KMW(03))=ULG&PLG
        [ Durata pompata lubrificazione guide assi Y/Z
        [ APLUDY=TULUBY~APLUDY
        [ Appoggio controllo lubrificaz guide assi Y/Z insufficente

        LAM65=M1LUBY
        [ Spia softkey 1 spazio lubrificazione guide Y/Z
        LAM66=M2LUBY
        [ Spia softkey 2 spazio lubrificazione guide Y/Z
        LAM67=M3LUBY
        [ Spia softkey 3 spazio lubrificazione guide Y/Z


        [---------------------------------------
        [---------- EVACUATORE TRUCIOLI --------
        

        AEVCW=AUXON&"AEVOFF&((PEVCW~PCWEV)&$
        "UEVCCW~AEVCW&("PEVOFF&"POFFEV))
        [ Ausiliario avanti evacuatore trucioli

        UEVCW=AEVCW
        [ Teleruttore avanti evacuatore trucioli

        AEVOFF=UEVCW&AEINT~AEVOFF&"PEVCCW
        [ Ausiliario arresto evacuatore trucioli

        UEVCCW=PEVCCW&"UEVCW&AUXON
        [ Teleruttore indietro evacuatore trucioli

        LEVCW=UEVCW&"UEVCCW
        [ Lampada 1 avanti evacuatore trucioli

        LCWEV=LEVCW
        [ Lampada 2 avanti evacuatore trucioli

        LEVCCW=UEVCCW&"UEVCW
        [ Lampada indietro evacuatore trucioli

        LEVOFF=AEVOFF&LAMP1S~"AEVOFF&"UEVCW&"UEVCCW
        [ Lampada 1 arresto evacuatore trucioli

        LOFFEV=LEVOFF
        [ Lampada 2 arresto evacuatore trucioli

        AEINT=IEVINT
        

        [------------- GENERALI ---------------

        AHMSG=ALR01~ALLASS~ALLGEN~ALLMND~ALLCG
        [ Ausiliario richiesta Hold da messaggi

        THMI(10)=AHMSG
        [ Tempo ritardo controllo presenza messaggi
        

        AMAPRM=SPPND(1)~GAM1~GAM2~(SPROT(1)&"TRDVMU)&$
        ("TRDVMU~AMROT)&"RAPI
        [ Appoggio Hold mandrino

        AMAPRA=AHMSG~TAHMU~(NCMD<>5)&("MIZEA(1)~"MIZEA(3)$
        )~"TRAAU~I79
        [ Appoggio hold assi

        RHOLD=AHM~AHMSG~RHOLV
        FHOLD=AMAPRA~AMAPRM~"RHOLX~"RHOLY~"RHOLZ~"RHOLW~"RHOLB~SPORI(1)
        DHOLD=FHOLD

        IF (CYON~"AUXON~BRKA) AHLFC=0
        IF ("MANUAL) SFKMEN=6
        IF (MANUAL&(SFKMEN=6)) SFKMEN=1
        [
        [--------  EV BY-PASS BLOCCAGGI  -------

        TMAXTI(400)=AUXON&PMAX
        [ Rit. stop ev by-pass bloccaggi

        UEVGEN=AUXON & UCENID 
        [ UEVGEN=FF(AUXON&"PMAX&"ALR27),("AUXON~TMAXTU~ALR27)
        [ Ev by-pass bloccaggi

        TALLCI(500)=UEVGEN&"PMAX
        [ Tempo max ev by-pass bloccaggi

        ALR27=AUXON & TALLCU ~ ALR27 & "BRKA
        [ Allarme time-out ev by-pass bloccaggi

        [--------  EV SALITA-DISCESA PEDANA -----

        USAPED=AUXON & ISAPED
        [ Ev salita pedana

        UDIPED=AUXON & IDIPED
        [ Ev discesa pedana

        UGENPE=AUXON & ( USAPED ~ UDIPED )  
        [ Teleruttore pompa salita-discesa pedana
        [


        [--------  GESTIONE SLITTA GRUPPO TAVOLA IN MANUALE  ------
        USBLV=FUMASL
        [ Ev sbloccaggio slitta gruppo tavola

        TIPSOV(100)=ISBLV
        [ Ritardo consenso partenza pompa sostentamento asse V
        USOSTV=USBLV&TUPSOV
        [ Teleruttore pompa sostentamento asse V


        [---------- SBLOCCO UTENSILE -----------

        ASBT=AUXON&"RMO&"RMA&"DVM&"SPORI(1)&"FIMPM&"SPPND(1)
        [ Condizioni ok per cambio utensile

        [ AFHBT="SHLM
        [ Hold da cambio utensile

        [----  GESTIONE ALLARME OLIO TESTA  ----

        TRPCOI(90)=AUXON&"PCOT
        [ Tempo ritardo controllo pressione lubrificazione testa

        ALR25=AUXON&"ULG&(TRPCOU~ALR25&"BRKA)
        [ Allarme lubrificazione testa insufficiente

        TISTMN(30)="BRKA&("PCOT&ALR25~TUSTMN)
        [ Lubrificazione testa insufficente

        ALR26=AUXON & "I37
        [ Filtro intasato lubrificazione testa

        [--------------- LUCE -----------------

        IF (PLUX~PLUCE) LLUX="LLUX; LLUCE="LLUCE

        UILL=LLUX
        [ Rele illuminazione macchina

        
                                         
        [  ------- GESTIONE CONDIZIONAMENTI E VISUALIZZAZIONE ASSI
        VX4="MIZEA(1)
        VX6="VX4&SJOG&(SXP~SXM~(HWL(1)=1))
        [ Appoggio condizionamenti visualizzazione asse X

        VY4="MIZEA(2)
        VY6="VY4&SJOG&(SYP~SYM~(HWL(1)=2))
        [ Appoggio condizionamenti visualizzazione asse Y

        VZ4="MIZEA(3)
        VZ6="VZ4&SJOG&(SZP~SZM~(HWL(1)=3))
        [ Appoggio condizionamenti visualizzazione asse Z

        VW4="MIZEA(4)
        VW6="VW4&SJOG&(SWP~SWM~(HWL(1)=4))
        [ Appoggio condizionamenti visualizzazione asse W

        VB4="MIZEA(5)
        VB6="VB4&SJOG&(SBP~SBM~(HWL(1)=5))
        [ Appoggio condizionamenti visualizzazione asse B

        IF (VX4) CNDVIS(1)=-1;EVX
        IF (VX6) CNDVIS(1)=1;EVX
        CNDVIS(1)=0
        EVX:
        [ Condizionamenti visualizzazione asse X
       
        IF (VY4) CNDVIS(2)=-1;EVY
        IF (VY6) CNDVIS(2)=1;EVY
        CNDVIS(2)=0
        EVY:
        [ Condizionamenti visualizzazione asse Y
       
        IF (VZ4) CNDVIS(3)=-1;EVZ
        IF (VZ6) CNDVIS(3)=1;EVZ
        CNDVIS(3)=0
        EVZ:
        [ Condizionamenti visualizzazione asse Z
       
        IF (VW4) CNDVIS(4)=-1;EVW
        IF (VW6) CNDVIS(4)=1;EVW
        CNDVIS(4)=0
        EVW:
        [ Condizionamenti visualizzazione asse W
       
        IF (VB4) CNDVIS(5)=-1;EVB
        IF (VB6) CNDVIS(5)=1;EVB
        CNDVIS(5)=0
        EVB:
        [ Condizionamenti visualizzazione asse B
       
        END
        


        [-------INIZIO SEZIONE ULTRA LENTA ----

        SG(1)  = ALR01  [ Attivazione messaggio 1       
        SG(2)  = ALR02  [ Attivazione messaggio 2
        SG(3)  = ALR03  [ Attivazione messaggio 3
        SG(4)  = ALR04  [ Attivazione messaggio 4
        SG(5)  = ALR05  [ Attivazione messaggio 5
        SG(6)  = ALR06  [ Attivazione messaggio 6
        SG(7)  = ALR07  [ Attivazione messaggio 7
        SG(8)  = ALR08  [ Attivazione messaggio 8
        SG(9)  = ALR09  [ Attivazione messaggio 9
        SG(10) = ALR10  [ Attivazione messaggio 10
        SG(11) = ALR11  [ Attivazione messaggio 11
        SG(12) = ALR12  [ Attivazione messaggio 12
        SG(13) = ALR13  [ Attivazione messaggio 13
        SG(14) = ALR14  [ Attivazione messaggio 14
        SG(15) = ALR15  [ Attivazione messaggio 15
        SG(16) = ALR16  [ Attivazione messaggio 16
        SG(17) = ALR17  [ Attivazione messaggio 17
        SG(18) = ALR18  [ Attivazione messaggio 18
        SG(19) = ALR19  [ Attivazione messaggio 19
        SG(20) = ALR20  [ Attivazione messaggio 20
        SG(21) = ALR21  [ Attivazione messaggio 21
        SG(22) = ALR22  [ Attivazione messaggio 22
        SG(23) = ALR23  [ Attivazione messaggio 23
        SG(24) = ALR24  [ Attivazione messaggio 24
        SG(25) = ALR25  [ Attivazione messaggio 25
        SG(26) = ALR26  [ Attivazione messaggio 26
        SG(27) = ALR27  [ Attivazione messaggio 27
        SG(28) = ALR28  [ Attivazione messaggio 28
        SG(29) = ALR29  [ Attivazione messaggio 29
        SG(30) = ALR30  [ Attivazione messaggio 30
        SG(31) = ALR31  [ Attivazione messaggio 31
        SG(32) = ALR32  [ Attivazione messaggio 32
        SG(33) = ALR33  [ Attivazione messaggio 33
        SG(34) = ALR34  [ Attivazione messaggio 34
        SG(35) = ALR35  [ Attivazione messaggio 35
        SG(36) = ALR36  [ Attivazione messaggio 36
        SG(37) = ALR37  [ Attivazione messaggio 37
        SG(38) = ALR38  [ Attivazione messaggio 38
        SG(39) = ALR39  [ Attivazione messaggio 39
        SG(40) = ALR40  [ Attivazione messaggio 40
        SG(41) = ALR41  [ Attivazione messaggio 41
        SG(42) = ALR42  [ Attivazione messaggio 42
        SG(43) = ALR43  [ Attivazione messaggio 43
        SG(44) = ALR44  [ Attivazione messaggio 44
        SG(45) = ALR45  [ Attivazione messaggio 45
        SG(46) = ALR46  [ Attivazione messaggio 46
        SG(47) = ALR47  [ Attivazione messaggio 47
        SG(48) = ALR48  [ Attivazione messaggio 48
        SG(49) = ALR49  [ Attivazione messaggio 49
        SG(50) = ALR50  [ Attivazione messaggio 50



        IF(SJOG) WNDINT(12)=FPI(ANI(3)*100*1.2); ELSE $
        WNDINT(12)=FPI(ANI(3)*100*1.2)
        [ Visualizzazione % Speed 

        IF("MIZEA(1)~"MIZEA(2)~"MIZEA(3)~"MIZEA(4))$
        WNDINT(11)=FPI(ANI(1)*100*.3)
        [ Visualizzazione % Rapido se set assi non eseguito

        IF(MIZEA(1)&MIZEA(2)&MIZEA(3)&MIZEA(4))$
        WNDINT(11)=FPI(ANI(2)*100)
        [ Visualizzazione % Rapido se set assi eseguito

        IF(MIZEA(1)&MIZEA(2)&MIZEA(3)&MIZEA(4))$
        WNDINT(10)=FPI(ANI(1)*100*1.2)
        [ Visualizzazione % Feed se set assi eseguito

        IF("MIZEA(1)~"MIZEA(2)~"MIZEA(3)~"MIZEA(4))$
        WNDINT(10)=FPI(ANI(1)*100*.3)
        [ Visualizzazione % Feed se set assi non eseguito

                           
	CALL SCROLL
	[Richiamo visualizzazione messaggi

        
        [------ FINE SEZIONE ULTRA LENTA -------
        END
        [---------- FINE PROGRAMMA -------------


        [ +------------------------------------+
        [ |    ----    SUBROTINE    ----       |
        [ +------------------------------------+
        [


	[---------------------------------------------
	[         ROUTINE GESTIONE OVERRIDE
	[---------------------------------------------

	POTOK:$
	IF("RAPI&(AXSTP=0)) POFO=ANI(1)*1.2
	IF(RAPI&(AXSTP=0))  POFO=ANI(2)
        IF("BRAP&"PRAVOL&(AXSTP>0))  POFO=ANI(1)*(AFJM)*1.2
        IF((BRAP~PRAVOL)&(AXSTP>0))   POFO=ANI(2)*AFJM

        [   NB. Aggiungere override con volantino

        [ Potenziometri ok con riparo chiuso e zeri effettuati

	RTS

	POTKO:$
        IF("RAPI&(AXSTP=0)) POFO=ANI(1)*.3
	IF(RAPI&(AXSTP=0))  POFO=ANI(2)*.3
        IF("BRAP&"PRAVOL&(AXSTP>0))  POFO=ANI(1)*(AFJM)*.3
        IF((BRAP~PRAVOL)&(AXSTP>0))   POFO=ANI(2)*(AFJM)*.3
        [ Potenziometri ko con riparo aperto o zeri non effettuati

	RTS

	VRICZ:$
        POFO=ANI(1)*.3
        [ Potenziometri in fase di ricerca 0

	RTS


                        
        [ --------------------------------------
        [      ROUTINE GESTIONE FUNZIONI M
        [ --------------------------------------

        GEFUM:$                  
        IF (AUXM=2) LM02          [ Fine ciclo e ritorno
        IF (AUXM=3) LM03          [ Mandrino orario
        IF (AUXM=4) LM04          [ Mandrino antiorario
        IF (AUXM=5) LM05          [ Stop mandrino
        IF (AUXM=6) LM06          [ Cambio utensile
        IF (AUXM=8) MM8=1;RTS     [ Refrigerante on
        IF (AUXM=9) MM8=0;RTS     [Refrigerante off
        IF (AUXM=10) SSA=0; RTS   [ Bloccca assi
        IF (AUXM=11) CALL LM11    [ Sblocca assi
        IF (AUXM=13) CALL LM03; MM8=1;RTS [ Orario + refrigerante
        IF (AUXM=14) CALL LM04; MM8=1;RTS [ Antiorario + refrigerante
        IF (AUXM=19) CALL LM05; SPORI(1)=1;RTS [Orientamento mandrino 
        IF (AUXM=30) LM30         [ Fine ciclo lav.
        [IF (AUXM=40) LM40         [ Rich. gestione mandrino princ.
        [IF (AUXM=20) LM20         [ Rich. gestione mandrino slittone
        IF (AUXM=41) MM41=1; RTS  [ Rich. cambio gamma
        IF (AUXM=42) MM42=1; RTS  [ Rich. cambio gamma
        IF ((AUXM=50)&LSICTA) COM,1,'WTAM';RTS [ Pos.W per testa mont
        RTS

        [-----   GESTIONE COMANDI CODICI M  ----

        LM02: RMO=0; RMA=0;  AHLFC=1; SPORI(1)=0; RTS
        LM03: RMO=1; RMA=0; SPORI(1)=0; RTS
        LM04: RMA=1; RMO=0;SPORI(1)=0; RTS
        LM05: RMO=0; RMA=0; MM8=0; LSTPM=1;SPORI(1)=0; RTS
        LM06:$
        CALL LM05
        RTS
        LM11: FM11A=1; IF (AXPGM=0) SSA=00001111B;RTS; $
        ELSE SSA=AXPGM&00001111B; RTS
        [ Sblocco assi
        LM30: RMO=0; RMA=0; MM8=1;  AHLFC=1;SPORI(1)=0; RTS
        RTS

        [------------ FUNZIONI T ---------------
        GEFUT:$              [ CAMBIO UTENSILE
        CALL LM05
        [COM,1,'CUMAN'
        RTS

        [ ---------- FUNZIONI H ----------------
        GEFUH: SPPOS(1)=(IFP(AUXH)/360)//1.0; RTS

        [------------ MODO RESET ---------------
        RESET:$
        WNDINT(1)=30       [ VISUALIZZAZIONE M30
        LSTPM=1
        SPORI(1)=0
        CALL LM05; AHMF=0
        MM41=0; MM42=0
        GAM1=0; GAM2=0
        ASSIKO=0
        RTS

	[---------------------------------------------
	[      ROUTINE GESTIONE MESSAGGI SU VIDEO
	[---------------------------------------------

	SCROLL:$
	NMSG=1; NRIGA=0
	LOOVIS:IF(NMSG>NMAX)CLRSCR
        IF(NRIGA>16)RTS
        IF(SG(NMSG)) DISPL,NRIGA,MSG(NMSG);NRIGA=NRIGA+1
	NMSG=NMSG+1;LOOVIS
        CLRSCR:IF(NRIGA>16)RTS
	CLR,(NRIGA);NRIGA=NRIGA+1;CLRSCR
