Una dashboard che mostra ogni lettura come un normale numero presenta un contatore guasto come un carico costante. Una lettura può essere errata in modi diversi, ciascuno dei quali richiede un trattamento diverso: può essere obsoleta, mancante, non valida o stimata.
Questa guida fa parte della serie sulla qualità e la trasmissione dei dati.
Cinque stati
| Stato | Significato | Come mostrarlo | In un totale |
|---|---|---|---|
| Buono | Lettura attuale da una sorgente funzionante | Il valore | Inclusa |
| Obsoleto | Nessuna nuova lettura entro il tempo massimo del punto | L'ultimo valore, contrassegnato come obsoleto, con la sua età | Totali per intervallo: contato come mancante. Totali da contatore cumulativo: esatti all'arrivo della lettura successiva |
| Mancante | Nessuna lettura per il periodo | Una lacuna | Contrassegnato come incompleto, con la copertura |
| Non valido | La sorgente segnala un guasto oppure il valore è fuori dall'intervallo fisico | Un indicatore, conservando il valore grezzo nel record | Escluso |
| Stimato | Calcolato con un metodo documentato | Il valore, contrassegnato come stimato | Incluso, con il totale contrassegnato come contenente stime |
Alcuni protocolli trasmettono questi stati con ogni valore. Mappali nel sistema di raccolta e mantieni lo stato insieme al valore fino al record finale.
| Protocollo | Obsoleto | Mancante | Non valido | Stimato |
|---|---|---|---|---|
| OPC UA StatusCode | Uncertain_LastUsableValue | Bad_NoCommunication | Bad_SensorFailure, Bad_DeviceFailure | Uncertain_SubstituteValue |
| Descrittore di qualità IEC 60870-5-101/104 | NT, non attuale | Nessun aggiornamento ricevuto | IV, non valido | SB, sostituito |
| BACnet | Solo in base all'età | Nessuna risposta o notifica COV | FAULT in Status_Flags; causa in Reliability | Nessun indicatore |
| Modbus | Solo in base all'età | Timeout o eccezione 0B | Eccezione 04 o codice di valore non disponibile | Nessun indicatore |
OPC UA definisce questi codici nella Parte 8, tabelle 61 e 62. Uncertain_LastUsableValue significa che il processo che aggiornava il valore si è fermato. Uncertain_SubstituteValue indica un valore sostituito manualmente. La guida alla qualità IEC 60870 spiega i cinque indicatori IEC.
BACnet Status_Flags contiene quattro bit: IN_ALARM, FAULT, OVERRIDDEN e OUT_OF_SERVICE. FAULT viene impostato quando la proprietà Reliability assume un valore diverso da NO_FAULT_DETECTED. Leggi anche Reliability, perché ne indica la causa: NO_SENSOR, OVER_RANGE, UNDER_RANGE, OPEN_LOOP, SHORTED_LOOP o COMMUNICATION_FAILURE, fra le altre. Quando OUT_OF_SERVICE è impostato, Present_Value non segue più l'ingresso fisico. Escludilo dai totali.
Modbus non fornisce la qualità per singolo valore. Il sistema di raccolta ricava lo stato da tre segnali: timeout, risposta di eccezione e codici di valore non disponibile propri del dispositivo. L'eccezione 04 (guasto del dispositivo server) significa che il dispositivo si è guastato durante l'elaborazione della richiesta. L'eccezione 0B (mancata risposta del dispositivo di destinazione del gateway) significa che il dispositivo seriale a valle del gateway non ha risposto. La guida alla diagnosi Modbus elenca gli altri codici di eccezione.
Obsoleto
Un valore obsoleto è difficile da individuare perché sembra una lettura buona. Può provenire dalla cache di un gateway, da un registro che conserva l'ultimo valore o da una dashboard che mantiene l'ultimo valore ricevuto. Un gateway Modbus può continuare a rispondere con l'ultimo valore letto dopo che il contatore a valle ha smesso di rispondere.
Segna un punto come obsoleto quando non arriva una lettura entro un tempo massimo. Imposta tale tempo a due o tre intervalli di trasmissione. Su una rete radio è normale perdere un messaggio; perderne due o tre consecutivi indica un guasto. Con un limite di tre intervalli, un punto che trasmette ogni 5 minuti diventa obsoleto dopo 15 minuti. Il limite deve anche superare la durata dell'intera sequenza di tentativi del sistema di raccolta, altrimenti un dispositivo lento risulta obsoleto a ogni nuovo tentativo.
Valuta la freschezza in base all'ora dell'ultima lettura ricevuta dalla sorgente, non all'ultima variazione del valore. Una temperatura costante non cambia, ma resta attuale.
Una sorgente che trasmette per eccezione non ha un intervallo fisso: una sorgente inattiva sembra uguale a una guasta. Basa invece il tempo massimo su un segnale periodico garantito. Un dispositivo Zigbee configurato per la trasmissione degli attributi invia una lettura almeno una volta entro l'intervallo massimo di trasmissione, anche se il valore non cambia: imposta il limite a due o tre volte tale intervallo. Una sottoscrizione BACnet COV scade se il client non la rinnova e, una volta scaduta, non arriva più nulla. Se la sorgente non ha un segnale periodico, interrogala anche a intervalli fissi. La guida a BACnet COV spiega le verifiche.
Obsoleto è uno stato del valore in tempo reale. Nello storico non esiste uno stato obsoleto: un intervallo che termina senza una lettura è mancante.
Mancante
Mostra una lacuna come tale:
- un grafico interrompe la linea o evidenzia il periodo;
- una tabella non mostra alcun valore, non 0;
- un totale giornaliero o mensile indica la propria copertura, per esempio 44 delle 48 mezz'ore.
Per un contatore cumulativo di energia, un'interruzione delle comunicazioni non fa perdere energia. La prima lettura dopo l'interruzione comprende tutta l'energia usata durante la lacuna. È sconosciuta soltanto la distribuzione fra gli intervalli mancanti. Una lacuna nella potenza istantanea è diversa: non si può recuperare.
La possibilità di calcolare un indicatore da dati incompleti dipende dall'indicatore. Un totale giornaliero di kWh ricavato da letture del registro a inizio e fine giornata è esatto con qualunque copertura intermedia. Una domanda massima calcolata da intervalli incompleti è soltanto un limite inferiore, perché il picco può trovarsi in un intervallo mancante: indicala come «almeno». Una media o un carico di base sono distorti se le lacune si concentrano in alcuni orari. Un'interruzione notturna elimina proprio gli intervalli necessari per calcolare il carico di base. Definisci nella specifica la copertura minima per ogni indicatore e, sotto tale soglia, segnala l'indicatore o non mostrarlo. La guida a kW e kWh spiega registri e intervalli.
Non valido
Un valore non è valido quando la sorgente segnala un guasto o quando esce dall'intervallo fisicamente possibile per la grandezza. Esempi sono un'umidità relativa oltre il 100% e un fattore di potenza superiore a 1.
Molti dispositivi Modbus restituiscono un codice fisso quando non possono fornire un valore. Il modello informativo SunSpec usa 0x8000 per int16, 0xFFFF per uint16 e 0xFFFFFFFF per uint32 per indicare «non implementato», e 0 per un accumulatore acc32 per indicare «non accumulato». Senza una verifica, un registro di tensione uint16 con fattore di scala 0,1 V che restituisce 0xFFFF (65.535) viene interpretato come 6.553,5 V. Controlla questi codici nel registro grezzo prima di applicare la scala. In un dispositivo SunSpec, un accumulatore di energia che legge esattamente 0 rappresenta un codice, non un azzeramento. La guida alla mappa dei registri Modbus elenca i codici comuni di valore non disponibile.
Tre cause producono i valori non validi più grandi nei contatori di energia.
Ritorno a zero per superamento del limite: un contatore riparte da zero quando raggiunge il valore massimo. Un registro a 16 bit che conta kWh interi torna a zero a 65.535 kWh, valore che un carico costante da 50 kW raggiunge in circa 55 giorni. Correggi il passaggio al limite sommando l'intervallo del registro alla differenza, ma solo quando il risultato è plausibile per il tempo trascorso.
Azzeramento o sostituzione: un nuovo contatore parte da un valore vicino a zero. La differenza è un grande numero negativo. Applicare qui la correzione per superamento del limite crea un consumo falso grande quanto l'intervallo del registro. Registra il cambio di contatore con una lettura finale sul vecchio e una iniziale sul nuovo.
Letture separate: un contatore a 32 bit letto con due richieste distinte può combinare parole provenienti da due istanti diversi e il totale salta avanti e indietro di 65.536 unità. Leggi entrambi i registri con un'unica richiesta.
Rifiuta ogni differenza fra intervalli che sia negativa o superiore all'energia che il circuito può fornire. Un circuito trifase da 100 A a 400 V fornisce al massimo circa 69 kVA, quindi non può consumare più di circa 35 kWh in 30 minuti.
Escludi i valori non validi da totali e calcoli, mostra un indicatore e conserva il valore grezzo nel record per la diagnosi.
Stimato
Una bolletta o una relazione normativa può richiedere una serie completa. Quando colmi una lacuna:
- Usa un metodo documentato. Per un contatore, distribuisci il totale noto fra gli intervalli mancanti, in parti uguali o secondo il profilo di una giornata simile, in modo che gli intervalli sommino ancora alla differenza del registro.
- Non ricavare energia da una potenza interpolata. Una linea di kW interpolati non ha un totale da rispettare e i kWh ottenuti integrandola non coincideranno con il contatore.
- Contrassegna ogni valore stimato come tale, sia nell'archivio sia sullo schermo.
- Non sovrascrivere mai un valore misurato con una stima. Tieni le stime separate affinché possano essere sostituite.
Letture reali possono arrivare dopo che una lacuna è stata colmata: dati accumulati da uno store-and-forward durante un'interruzione, oppure il registro dei profili di carico del contatore letto in seguito. Sostituisci le stime con le misure. Ricalcola tutti i totali che le usavano e registra la revisione della relazione. La guida ai timestamp spiega come collocare le letture tardive in base all'ora della sorgente.
Effetti di ogni stato sui sistemi a valle
Decidi in anticipo il comportamento di ciascun utilizzatore e scrivilo nella specifica. Questi valori predefiniti sono adatti alla maggior parte dei progetti di monitoraggio energetico:
| Utilizzatore | Comportamento predefinito |
|---|---|
| Grafici | Interrompi la linea in un intervallo mancante. Non unire mai i punti attraverso una lacuna. Mostra l'età di un valore in tempo reale obsoleto. Disegna le stime con uno stile distinto. |
| Totali e relazioni | Escludi i valori non validi. Includi le stime, contrassegnandole. Indica la copertura e segnala un picco calcolato da dati incompleti come «almeno». |
| Allarmi | Genera un allarme di comunicazione separato quando un punto diventa obsoleto. Sopprimi gli allarmi di soglia relativi a quel punto finché è obsoleto o non valido, così un guasto genera un solo allarme. Cancella l'allarme dopo due letture buone, non una. |
| Automazione | Controlla lo stato di ogni ingresso prima di agire. Con un ingresso obsoleto o non valido, passa a un'uscita sicura definita. |
| Esportazioni | Invia un campo di qualità con ogni valore, nel payload MQTT o come colonna CSV. Invia un valore mancante come campo vuoto o null, mai 0. |
Una regola che spegne un refrigeratore quando la temperatura dell'acqua refrigerata è bassa non deve agire su una vecchia lettura bassa. Terrebbe spento il refrigeratore mentre l'edificio si riscalda. Qui l'uscita sicura consiste nel lasciare il controllo al regolatore proprio del refrigeratore. La guida ai guasti degli interblocchi spiega come scegliere uscite sicure.
Verificare ogni stato
Durante la messa in servizio, crea intenzionalmente ciascuno stato e controlla che cosa mostra ogni utilizzatore:
- Scollega il collegamento di comunicazione di un dispositivo. Verifica che i suoi punti diventino obsoleti entro il limite, che si attivi l'allarme di comunicazione e che lo storico mostri gli intervalli persi come mancanti, non come zero.
- Scollega un ingresso sensore, per esempio una sonda di temperatura. Se il dispositivo è in grado di rilevarlo, verifica che il valore sia segnalato ed escluso dai totali.
- Ripristina entrambi. Verifica che l'indicatore di obsolescenza e l'allarme scompaiano e che la prima lettura del contatore dopo il ripristino chiuda la lacuna senza creare un picco di domanda in un solo intervallo.
- Se un gateway Modbus si trova tra il sistema di raccolta e un contatore, scollega il contatore dal gateway. Verifica se il gateway restituisce l'eccezione 0B, va in timeout oppure continua a restituire l'ultimo valore.
La lista di controllo per la messa in servizio comprende queste prove.
Stati dei dati in Edge
Edge registra un timestamp con ogni lettura e uno stato di funzionamento per ogni dispositivo Modbus e OPC UA. Un dispositivo Modbus diventa offline dopo due interrogazioni previste mancate, con un minimo di cinque minuti. Il sensore attivo più veloce del dispositivo determina la cadenza prevista, quindi un contatore che trasmette ogni ora non diventa offline dopo cinque minuti. Un dispositivo OPC UA diventa offline dopo cinque minuti senza comunicazione.
Per ogni sensore Modbus e OPC UA, Edge calcola anche la percentuale delle letture previste ricevute in una finestra mobile di 15 minuti. Se l'intervallo è superiore a 15 minuti, indica invece il numero di letture. Questo indicatore misura la consegna rispetto all'intervallo configurato. Non è lo StatusCode OPC UA e non dice se un valore sia fisicamente valido.
Il riempimento delle lacune per i dispositivi Modbus e OPC UA è disattivato per impostazione predefinita. Quando viene attivato, Edge riempie lacune fino a una durata massima configurata, 15 secondi per impostazione predefinita, con zeri, ultimo valore o valori interpolati, e segna ogni punto generato come sintetico. Un database a valle potrebbe non conservare tale indicatore: lascia quindi il riempimento disattivato per i dati usati in bollette, allarmi o controllo. Un'esportazione CSV dalla pagina Dati lascia vuoti i valori mancanti, non li imposta a zero. In ogni piattaforma che riceve dati da Edge, esegui le prove precedenti per verificare che applichi le stesse regole.
Domande frequenti
Che cosa sono i dati obsoleti?
Un valore non più attuale che viene ancora mostrato come se lo fosse. Succede quando una sorgente smette di aggiornarsi e un gateway o una dashboard mantiene l’ultimo valore. Segna un punto come obsoleto se non arriva una nuova lettura entro un tempo stabilito, per esempio due o tre intervalli di trasmissione.
Come si mostrano i dati mancanti di un sensore?
Come una lacuna. Un grafico deve interrompere la linea o evidenziare il periodo, una tabella deve mostrare l’assenza del valore e un totale deve indicare la copertura del periodo. Mostrare zero per una lacuna comunica erroneamente che il consumo si è fermato.
Bisogna colmare i dati energetici mancanti?
Soltanto con un metodo documentato e marcandoli come stimati. Se il contatore ha continuato a misurare durante un’interruzione delle comunicazioni, la lettura successiva dà esattamente l’energia della lacuna: è stimata soltanto la distribuzione fra gli intervalli mancanti. Se è il contatore stesso ad aver smesso di misurare, l’energia è persa e il totale è incompleto.