Logiche e allarmi ================= .. figure:: logicsAndalarms.png :width: 600px :align: center .. raw:: html

Figura 363

Cliccando su Logiche e Allarmi dal menù laterale appare questa schermata che rappresenta le logiche e gli allarmi attivati in questo momento. Dettaglio colonne: .. raw:: html In questa pagina esistono diverse possibilità che sono: - Nuova logica: permette di creare una nuova logica; - Nuovo allarme: permette di creare un nuovo allarme - Duplica: permette di duplicare la logica selezionata. Dopo aver premuto il pulsante viene presentata la maschera di duplicazione dinamica degli indirizzi, in modo da poter duplicare la logica modificandone gli indirizzi a piacere. La variazione degli indirizzi si applica sia a quelli presenti nella condizione, sia ai comandi in caso di verifica, non verifica, reset e presa visione. - Elimina: permette di eliminare le logiche selezionate - Definizione: permette di modificare la definizione della logica (visibile nel dettaglio nella prossima immagine) - Genera allarmi KNX: genera un allarme per ogni indirizzo KNX definito con tipologia Allarme. Se è già presente un allarme associato a quell’indirizzo e contenente una sola condizione del tipo “INDIRIZZO = 0” o “INDIRIZZO = 1” la generazione allarmi non rigenera quell’allarme. Tutti gli allarmi generati hanno come valore di allarme il valore 1 che può essere cambiato aprendo la definizione dell’allarme. Cliccando su Definizione si può modificare la struttura della logica/allarme. .. figure:: addAND_OR.png :width: 600px :align: center .. raw:: html

Figura 364

Permette di confrontare o fare delle operazioni tra due variabili con la logica RPN. L’utente per dare un valore all’operando inserito può cliccando con il tasto destro sull’operando inserire dei valori attraverso il menù che compare. .. figure:: inputValueSection.png :width: 600px :align: center .. raw:: html

Figura 365

In alternativa è possibile trascinare direttamente gli indirizzi dall’albero degli indirizzi sulla destra nella griglia interessata. Se l’indirizzo viene trascinato nell’area vuota della griglia viene aggiunta una nuova condizione, se invece si trascina nell’operando di una condizione esistente quell’operando viene sostituito. Nella barra in alto vi è la possibilità di configurare alcuni parametri, negare i valori di output delle condizioni AND e OR spuntando la casella desiderata, impostare un numero di secondi per verificare se le condizioni immesse sono vere o false e definire una variabile di output che contenga il risultato della logica. La colonna valutazione corrente è compilata come segue: .. raw:: html È possibile inoltre filtrare gli allarmi e le logiche attraverso l’apposita voce nel menù in alto. Vediamo un’immagine di esempio .. figure:: alarmLogicsMenu.png :width: 600px :align: center .. raw:: html

Figura 366

Possiamo filtrare per **Allarme,Logica generica o Tutti.** Quindi allarme ci farà vedere soltanto gli allarmi, logica generica tutti i casi di logica oppure visualizzare tutto filtrando tutto. Dopo aver selezionato il tipo di filtro premere Filtra per visualizzare l’elenco desiderato. Notazione RPN ______________ La notazione polacca inversa (reverse polishnotation - RPN) è una sintassi utilizzata per le formule matematiche ed è dovuta a JanLukasiewicz, 1958. Con la notazione RPN è possibile effettuare qualsiasi tipo di operazione, con il vantaggio di eliminare le problematiche dovute alle parentesi e alla precedenza degli operatori (prima la divisione, poi l’addizione,ecc…) Alcune calcolatrici professionali utilizzano la RPN in quanto evita l’annotazione di risultati intermedi durante le operazioni. Nella notazione polacca inversa, detta anche notazione postfissa in contrasto con la normale notazione infissa, prima si inseriscono gli operandi e poi gli operatori: un esempio di RPN è 3 2 + che equivale al classico 3 + 2, oppure 10 2 / che fornisce 5. Quando si utilizza la notazione RPN si fa conto di possedere una pila (stack) su cui pian piano si accumulano gli operandi: prima si impila il 3,poi il 2. Un operatore invece preleva dalla cima della pila tutti gli operandi di cui ha bisogno, esegue l’operazione, e vi rideposita il risultato. L’elemento più in basso è da considerarsi sempre l’operando sinistro. Se l’espressione completa è corretta, alla fine di tutte le operazioni sulla pila si avrà un solo elemento, il risultato finale. .. figure:: whiteImage.png :width: 600px :align: center .. raw:: html

Figura 367

Questa pila permette, come già detto, di evitare l’utilizzo di parentesi per prioritizzare le operazioni, basta inserire nella parte sinistra della formula tutti gli operandi delle operazioni a parentesizzazione più esterna, al centro le operazioni più elementari, alla destra tutti gli operatori di combinazioni dei risultati delle operazioni centrali con gli operandi già presenti. Esistono infatti algoritmi di conversione sia dalla notazione infissa a quella postfissa e viceversa. Come si può notare, la RPN è facilmente implementabile sui computer. Un esempio: (10 * 2) + 5 diventa 5 10 2 * + Prima della moltiplicazione sono presenti sulla pila 5, 10, 2. Il "*" recupera i primi due elementi (10, 2) li moltiplica e modifica la pila in modo che contenga 5, 20. L'operazione "+" addiziona 5 e 20, ora presenti nella pila, sostituendoli con il risultato: 25. Altri esempi più complessi: ((10 * 2) + (4 - 5)) / 2 in RPN sarà 10 2 * 4 5 - + 2 / (7 / 3) / ((1 - 4) * 2) + 1 diventa 1 7 3 / 1 4 - 2 * / + oppure 7 3 / 1 4 - 2 * / 1 + La notazione polacca inversa prende spunto dalla notazione polacca semplice, in cui gli operatori vengono posti prima degli operandi (quindi: + 1 2 invece di 1 2 +), ma solo la prima è facilmente implementabile in modo elettronico o via software, ed è quindi diventata ben più conosciuta. Notazione RPN in BIG Studio _____________________________ Gli elementi della sintassi utilizzata in BIG Studio, che permettono di scrivere una logica in notazione RPN sono i seguenti: .. raw:: html

Costanti

BEFOREYESTERDAY, YESTERDAY, TODAY, TOMORROW, AFTERTOMORROW (1) MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY (2) NOW (data e ora corrente, nel formato HH:MM) HOUR (valore compreso tra 0 e 23), MINUTE (valore compreso tra 0 e 59), DAY(valore compreso tra 1 e 31),MONTH(valore compreso tra 1 e 12) .. raw:: html

Valore

Sulla base dell’indirizzo presente nella condizione vengono presentati i valori che l’indirizzo può assumere. .. raw:: html

Indirizzo

Per inserire un indirizzo dopo aver cliccato con il tasto destro e selezionato inserisci indirizzo compare all’utente la schermata per inserire un indirizzo. .. figure:: AND_OR_Objects.png :width: 600px :align: center .. raw:: html

Figura 368

.. raw:: html

Operatori

Gli operatori che l’utente ha la possibilità di utilizzare sono i seguenti: **<** **>** **=** **NOT** **AND** **OR** **Timer:** ferma la valutazione della logica per N secondi e al termine restituisce nello stack il valore M; prende due parametri N e M. **Timer bloccante** **Break** **Interval:** rende vera la condizione solo per un secondo ogni N; prende in input il parametro N. + - * / **ABS:** associato ad un solo operando ne restituisce il valore assoluto (ES RPN. VALORE ABS) **CALENDAR:** restituisce true se il giorno indicato è presente nel calendario indicato (ES RPN. TODAY IDCALENDAR CALENDAR) Logiche custom ______________ Compilazione tabella database: [ID] id univoco della custom logic [Kind] Tipologia: 1 fisso [Name] nome della dll da usare per la configurazione comprensivo di estensione [Config] xml per la descrizione degli indirizzi di input e output (vedi esempio) [Active] 1 se attiva, 0 se disattiva [Updated] 1 se aggiornata, 0 se non aggiornata [Deleted] 1 se cancellata, 0 se non cancellata Esempio di Config: .. code-block:: xml