Nella formula del KPI posso essere utilizzati i valori di qualsiasi impianto accessibile in lettura all’utente connesso, che può utilizzare valori dei segnali, metadati e valori fissi, ed anche altri valori speciali qui di seguito descritti.
@nomeTag
Si riferisce al valore del tag di un impianto.
Nel caso di calcolo live, ogni variazione di @nomeTag genera un datapoint del KPI.
Nel caso di calcolo periodico, il datapoint del KPI è sempre uno solo per ogni periodo, indipendentemente dal numero di variazioni che il @nomeTag ha subito.
@nomeMetadato
Si riferisce al valore del metadato di un impianto.
NOTA: in caso di KPI live, l’eventuale variazione del metadato NON fa scattare il calcolo del KPI, il quale è innescato solamente dalla variazione di una variabile legata a un tag.
Il valore del metadato, essendo un testo libero, deve necessariamente seguire queste regole, per poter essere interpretato correttamente:
- Deve contenere esclusivamente il numero, senza unità di misura o altro.
- Non deve contenere separatori delle migliaia.
- L’eventuale separatore dei decimali può essere sia la virgola che il punto. Entrambi i simboli sono considerati separatori decimali.
@@TS_UTC(@nomeTag)
@@TS_local(@nomeTag)
Rappresentano il timestamp relativo al datapoint del tag, rispettivamente in UTC e nel fuso orario dell’impianto.
Nel caso di calcolo periodico, è l’ultimo timestamp disponibile che non sfori la fine del periodo di calcolo.
Esempio con impianto con fuso orario in ora italiana:
– 2022-12-31 09:05:00 ora italiana: temperatura 20.1°
@@TS_UTC vale ‘2022-12-31 08:05:00’
@@TS_local vale ‘2022-12-31 09:05:00’
@@THIS
Indica il valore precedente del KPI, prima del calcolo in corso.
Esempio:
Ho creato un nuovo KPI, alle 8:59 del 31 dicembre 2022, con la formula:
@contatoreParziale + ISNULL(@@THIS, 0);
– 2022-12-31 09:00:00: @contatoreParziale = 100 → KPI = 100.
– 2022-12-31 09:05:00: @contatoreParziale = 80 → KPI = 180
Al momento del calcolo delle 9:05, @@THIS vale 100, e quindi il KPI delle 9:05 è uguale a 80 + 100 = 180.
@@TS_UTC(@@THIS)
@@TS_local(@@THIS)
Rappresentano il timestamp relativo al calcolo corrente del KPI, rispettivamente in UTC e nel fuso orario dell’impianto.
ATTENZIONE: per i KPI periodici è influenzato dalla direttiva @@TIMESTAMP_POSITION.
Esempio con impianto con fuso orario in ora italiana:
La formula del KPI è:
@@CALCULATE_EVERY = 1 HOUR;
IIF(DATEPART(HOUR, @@TS_local(@@THIS)) < 12, @tOut, @tIn);
Il significato è: se l’ora è tra le 00:00 e le 11:59 prendo la temperatura esterna @tOut, altrimenti prendo la temperatura interna @tIn.
– 2022-12-31 11:00:00 italiane: tOut = 10.1 , tIn = 19.8 → KPI = 10.1
– 2022-12-31 12:00:00 italiane: tOut = 10.3 , tIn = 20.1 → KPI = 20.1
@@PreviousTS_UTC(@@THIS)
@@PreviousTS_local(@@THIS)
Rappresentano il timestamp relativo al calcolo precedente del KPI, rispettivamente in UTC e nel fuso orario dell’impianto.
ATTENZIONE: per i KPI periodici è influenzato dalla direttiva @@TIMESTAMP_POSITION.
Esempio con impianto con fuso orario in ora italiana:
La formula del KPI è:
DATEDIFF(SECOND, @@PreviousTS_local(@@THIS), @@TS_local(@@THIS)) * ((@@PreviousValue(@portataLitriMinuto) + @portataLitriMinuto) / 2) / 60;
Il significato è: voglio calcolare quanti litri sono passati dal canale, a partire dalla portata, che è espressa in litri al minuto. Per fare un calcolo più preciso, calcolo comunque la differenza in secondi (DATEDIFF dà sempre un risultato intero, non frazionale), e poi divido per 60. Come valore di portata, non prendo il valore corrente, ma faccio una media tra il valore corrente e il valore precedente.
– 2022-12-31 09:00:00 italiane: portata l/min: 10
– 2022-12-31 09:05:00 italiane: portata l/min: 18
I singoli componenti per il calcolo delle 9:05 sono:
– @@PreviousTS_local(@@THIS) = 2022-12-31 09:00:00
– @@TS_local(@@THIS) = 2022-12-31 09:05:00
– @@PreviousValue(@portataLitriMinuto) = 10
– @portataLitriMinuto = 18
E quindi il risultato è:
300 * ((10 + 18) / 2) / 60 = 70 litri
Was this helpful?
0 / 0