A questo punto resto io fuori ISOLA

Aggiorno un pochino il Codice con la variabile NUVOLA

(mi piace "Nuvola")
e la possibilità di scegliere tutte le soglie di intervento ............
Credo che il codice sia abbastanza chiaro ,ma appena posso aggiungo una descrizione dettagliata .......e aggiungerò dei miglioramenti .......per fine settimana è fatta
VERSIONE PROVVISORIA DEL CODICE<div class=spoiler align=center><div class=code_top align=left>
SPOILER (<a href=javascript:spoiler()>clicca per visualizzare)</div><div class=code align=left>PRAGMA NO_NUM_LINE
PRAGMA EXTENDED8K_EEPROM
SETIO = &H60007 '&B1100000000000000111
'*******************************************************************************
************************
'
http://energiaalternativa.forumcommunity.net/'CONTROLLO AUTOMATICO CARICABATTERIE ED UPS PER IMPIANTI FV GRID-TIE
'By ElettroshockNow
'CADS1 (Pin2)= Ingresso tensione Batteria
'CADS2 (Pin3)= Ingresso Sensore SCT-013-030 Assorbimento
'CADS3 (Pin4)= Ingresso Sensore SCT-013-030 Produzione
'BIT6 (Pin11)=LED Verde "FV"
'BIT7 (Pin12)=LED Rosso "BATT"
'BIT8 (Pin13)=LED Giallo "ISOLA"
'BIT14 (Pin27)=Relè Controllo UPS
'BIT15 (Pin28)=Relè Controllo Caricabatterie
'*******************************************************************************
*******************************************
'****************************************** DATI DA INSERIRE *******************************************************
CONSTANT POTENZA_LUCI = 300 'Inserire Potenza Massima Illuminazione in Watt *UTENTE*
CONSTANT POTENZA_CARICA = 600 'Inserire Potenza Assorbita Caricabatterie in Watt *UTENTE*
CONSTANT TENSIONE_MINIMA = 24 'Soglia Minima tensione Batteria *UTENTE*
CONSTANT TENSIONE_OK = 26 'Soglia Minima tensione intervento UPS *UTENTE*
CONSTANT NUVOLA = 5 'Secondi che devono trascorrere per effettuare un cambio di Stato *UTENTE*
OUTBIT(UPS)=HIGH 'Settaggio di Default UPS STANDBY
OUTBIT(CARICA)=LOW 'Settaggio di Default CARICABATTERIE SPENTO
'*******************************************************************************
********************************************
'-------------- COSTANTI ----------------------
CONSTANT FV = 6
CONSTANT BATT = 7
CONSTANT ISOLA = 8
CONSTANT UPS = 14
CONSTANT CARICA = 15
CONSTANT CAMPIONAMENTI = 60 'Numero Campinamenti onda sinusoidale
CONSTANT OFFSET = 510 'Dare alla Costante OFFSET il Valore di CADS2/3 senza nessun assorbimento
CONSTANT FATT_PROPORZ_TENSIONE= 25.9
CONSTANT FATT_PROPORZ_CORRENTE= .092
' Tabella Fattori Proporzione in funzione della Resistenza di Shunt
' 100 Ohm = .118 massima Potenza misurabile 9900 Watt
' 127 Ohm = .092 massima Potenza misurabile 7700 Watt ******************
' 180 Ohm = .064 massima Potenza misurabile 5400 Watt
'------------------ PROGRAMMA ---------------
SUB MAIN
TENDENZA=0
CALL PRESENTAZIONE
WHILE TRUE
CALL MISURA_TENSIONE_BATT
CALL MISURA_CORRENTE
IF POTENZA_PRODOTTA > (POTENZA_ASSORBITA+POTENZA_CARICA) THEN :CARICA_ON
IF POTENZA_PRODOTTA < POTENZA_ASSORBITA THEN :CARICA_OFF
GOTO :UPS
:CARICA_ON OUTBIT(CARICA)=HIGH
GOTO :UPS
:CARICA_OFF OUTBIT(CARICA)=LOW
:UPS
IF VOLT<tensione_minima THEN :UPS_OFF
IF POTENZA_PRODOTTA<potenza_assorbita AND VOLT > TENSIONE_OK THEN :TENDENZA_UPS_ON
IF POTENZA_PRODOTTA>(POTENZA_ASSORBITA+POTENZA_LUCI) THEN :TENDENZA_UPS_OFF
GOTO :VISUALIZZA
:TENDENZA_UPS_ON
IF TENDENZA >= (NUVOLA*4) THEN :UPS_ON
TENDENZA++
GOTO :VISUALIZZA
:TENDENZA_UPS_OFF
IF TENDENZA <=0 THEN :UPS_OFF
TENDENZA--
GOTO :VISUALIZZA
:UPS_ON
OUTBIT(UPS)=LOW
OUTBIT(ISOLA)=HIGH
GOTO :VISUALIZZA
:UPS_OFF
OUTBIT(UPS)=HIGH
OUTBIT(ISOLA)=LOW
:VISUALIZZA
CALL LED_FV
CALL LED_BATT
CALL INVIA_USB
WAITMS 250
LOOP
SUBEND
'--------------INIZIO SUBROUTINE ---------------
'-------PRESENTAZIONE----------
SUB PRESENTAZIONE
OUTBIT(FV)=1
WAITS 1
OUTBIT(BATT)=1
WAITS 1
OUTBIT(ISOLA)=HIGH
WAITS 2
OUTBIT(FV)=LOW
OUTBIT(BATT)=LOW
OUTBIT(ISOLA)=LOW
SUBEND
'---------------LED BATT------------------
SUB LED_BATT
IF VOLT<tensione_ok THEN :ACCENDI_LED_BATT
OUTBIT(BATT)=LOW
GOTO :FINE_LED_BATT
:ACCENDI_LED_BATT
IF INPBIT(CARICA)=HIGH THEN :LAMP_LED_BATT
OUTBIT(BATT)=HIGH
GOTO :FINE_LED_BATT
:LAMP_LED_BATT
IF INPBIT(BATT)=HIGH THEN :SPENGI_LED_BATT
OUTBIT(BATT)=HIGH
GOTO :FINE_LED_BATT
:SPENGI_LED_BATT OUTBIT(BATT)=LOW
:FINE_LED_BATT SUBEND
'----------LED FV --------------
SUB LED_FV
IF POTENZA_PRODOTTA > 50 THEN :ACCENDI_LED_FV
OUTBIT(FV)=LOW
GOTO :FINE_LED_FV
:ACCENDI_LED_FV
IF POTENZA_PRODOTTA < POTENZA_ASSORBITA THEN :LAMP_LED_FV
OUTBIT(FV)=HIGH
GOTO :FINE_LED_FV
:LAMP_LED_FV
IF INPBIT(FV)=HIGH THEN :SPEGNI_LED_FV
OUTBIT(FV)=HIGH
GOTO :FINE_LED_FV
:SPEGNI_LED_FV OUTBIT(FV)=LOW
:FINE_LED_FV SUBEND
'-------LETTURA TENSIONE BATTERIA
SUB MISURA_TENSIONE_BATT CLR VOLT
FOR A=1 TO 30
VOLT+=CADS1
NEXT A
VOLT = VOLT/FATT_PROPORZ_TENSIONE/30
SUBEND
'---------LETTURA SENSORI CORRENTE --------------------
SUB MISURA_CORRENTE CLR AMPER_ASSORBITI, AMPER_PRODOTTI
FOR A=1 TO CAMPIONAMENTI
AMPER_ASSORBITI +=ABS (CADS2-OFFSET)
AMPER_PRODOTTI +=ABS (CADS3-OFFSET)
NEXT A
AMPER_ASSORBITI=(AMPER_ASSORBITI/CAMPIONAMENTI)*FATT_PROPORZ_CORRENTE
AMPER_PRODOTTI=(AMPER_PRODOTTI/CAMPIONAMENTI)*FATT_PROPORZ_CORRENTE
POTENZA_ASSORBITA=INT(INT(AMPER_ASSORBITI*230)/10)*10 'CALCOLO TEORICO
POTENZA_PRODOTTA=INT(INT(AMPER_PRODOTTI*230)/10)*10 'CALCOLO TEORICO
SUBEND
'-------------INVIA I DATI SULLA USB--------------
SUB INVIA_USB
'PRINT "CADS2= "&CADS2
'PRINT "CADS3= "&CADS3
PRINT "TENSIONE BATTERIA= " & VOLT & " V"
'PRINT "AMPER_ASSORBITI= " & AMPER_ASSORBITI & " A"
'PRINT "AMPER _PRODOTTI= " & AMPER_PRODOTTI & " A"
PRINT "POTENZA_ASSORBITA= " & POTENZA_ASSORBITA ' & " W"
PRINT "POTENZA_PRODOTTA= " & POTENZA_PRODOTTA ' & " W"
SUBEND
'--------------FINE SUBROUTINE --------------- [/quote]