Protocolli e dati

Timestamp della telemetria: ora della misura e ora di arrivo

Timestamp della telemetria: ora della misura, raccolta e arrivo, intervalli, fusi orari, sincronizzazione, dati tardivi e duplicati.

Una misura di un sensore può avere fino a tre orari: quando il valore è stato rilevato, quando un Gateway lo ha raccolto e quando il sistema destinatario lo ha ricevuto. In condizioni normali questi orari distano pochi secondi e la scelta sembra irrilevante. Dopo un’interruzione di rete possono distare ore: se un sistema conserva quello sbagliato, attribuisce il carico di ieri all’intervallo di oggi.

Questa guida fa parte della serie sulla qualità e sulla trasmissione dei dati.

Tre orari

OrarioImpostato daUtilizzo
Ora della misuraDispositivo o contatore, quando rileva il valore o quando questo cambiaAnalisi, intervalli energetici, ordine degli eventi
Ora della raccoltaGateway, quando legge o riceve il valoreStato delle interrogazioni; sostituto dell’ora della misura se il dispositivo non la fornisce
Ora di arrivoPiattaforma destinatariaStato della connessione; ritardo dei dati

I protocolli differiscono per le informazioni temporali che trasportano:

  • OPC UA DataValue può includere un SourceTimestamp e un ServerTimestamp, come definito nella parte 4 della specifica. Il timestamp della sorgente può mancare se la sorgente non lo fornisce.
  • I tipi IEC 60870-5 con marcatura temporale trasportano l’ora della stazione remota; gli altri non ne trasportano alcuna.
  • Modbus non trasporta un timestamp. L’ora della raccolta è la migliore disponibile.
  • MQTT non trasporta l’ora della misura. Inseriscila nel payload.

Per ogni punto, registra quale orario porta e da dove proviene.

Regole che evitano la maggior parte degli errori

  1. Usa UTC oppure un offset esplicito. RFC 3339 definisce formati come 2026-09-23T14:05:00Z o 2026-09-23T15:05:00+01:00. Senza offset, l’ora locale diventa ambigua quando gli orologi tornano indietro in autunno: in Italia l’ora dalle 02:00 alle 03:00 si presenta due volte.
  2. Etichetta gli intervalli in modo coerente. Specifica se un valore su 15 minuti porta l’ora di inizio o quella di fine dell’intervallo e applica la stessa regola in tutti i sistemi. Una discrepanza sposta ogni valore di un intervallo e colloca il picco di potenza nel quarto d’ora sbagliato.
  3. Sincronizza gli orologi. Ogni dispositivo che assegna l’ora della misura ha bisogno di una fonte oraria affidabile. Registra quale usa e genera un allarme quando il suo orologio deriva o perde la sincronizzazione.
  4. Non sostituire mai l’ora della misura con quella di arrivo. Quando una misura non porta l’ora della misura, conserva l’ora della raccolta e indica che si tratta di questa.

Dati arrivati in ritardo dopo un’interruzione

Quando la connessione torna disponibile, un Gateway che ha conservato le misure le invia in ritardo. Il sistema destinatario deve collocare ciascuna misura in base alla sua ora originale:

La guida alla memorizzazione e al successivo inoltro mostra quanto tempo occorre per smaltire i dati arretrati. Verifica come la piattaforma destinataria tratta i dati in ritardo: alcune li accettano solo entro una finestra temporale, altre ricalcolano totali e allarmi già elaborati, altre ancora li ignorano. Concorda il comportamento e provalo con un’interruzione pianificata.

Duplicati

A causa dei nuovi tentativi, la stessa misura può arrivare due volte: una prima che venga rilevato un guasto e un’altra dalla coda di ritrasmissione. Assegna a ogni misura un’identità, per esempio l’identificatore del punto insieme all’ora della misura, affinché il destinatario ne conservi una sola copia. Senza questa identità, un intervallo ritrasmesso raddoppia l’energia conteggiata. La guida alla QoS di MQTT spiega perché la consegna «almeno una volta» produce duplicati.

Un valore che non è cambiato

Un valore costante non è necessariamente obsoleto, e un’ora della misura vecchia non significa sempre che la sorgente si sia fermata. Un server OPC UA può mantenere il SourceTimestamp di un valore invariato, pur confermandolo con un nuovo ServerTimestamp. Valuta l’attualità del dato in base all’ultima conferma del valore e del suo stato di qualità da parte del server, insieme all’ora della misura e a quella di arrivo. Un server può confermare un valore invariato senza ricevere un nuovo messaggio dalla sorgente. La guida ai dati obsoleti spiega come decidere quando un punto è obsoleto.

Specificare i timestamp in un progetto

Per ogni punto, registra:

  • quale orario porta la misura e quale componente lo imposta;
  • il fuso orario e la fonte di sincronizzazione di tale componente;
  • per i valori aggregati per intervallo, se l’etichetta ne indica l’inizio o la fine;
  • l’identità usata per eliminare i duplicati;
  • come il destinatario gestisce le misure arrivate in ritardo e qual è il ritardo massimo accettato.

I timestamp con Edge

Edge sul Gateway ZGW-20 assegna un timestamp a ogni misura e lo invia insieme a essa a ogni destinazione. Se una destinazione a monte non è disponibile ed Edge ritrasmette le misure in seguito, queste mantengono i timestamp originali. Per i protocolli interrogati, come Modbus, BACnet e OPC UA, il timestamp è l’ora della lettura. Verifica che la piattaforma destinataria archivi le misure arrivate in ritardo in base a quell’ora.

Domande frequenti

Qual è la differenza tra ora della misura e ora di arrivo?

L’ora della misura indica quando il valore è stato rilevato o è cambiato nel dispositivo. L’ora di arrivo indica quando il sistema destinatario lo ha ricevuto. Normalmente distano pochi secondi; dopo un’interruzione di rete possono distare ore. Per l’analisi usa l’ora della misura, per monitorare la connessione l’ora di arrivo.

I timestamp della telemetria devono essere in UTC?

Sì. Memorizza e trasmetti gli orari in UTC, oppure con un offset esplicito come consente RFC 3339; converti nell’ora locale solo per la visualizzazione. Senza offset, l’ora locale è ambigua per un’ora ogni autunno, quando gli orologi tornano indietro.

Come si indica l’orario dei dati aggregati per intervallo?

Specifica se il timestamp indica l’inizio o la fine dell’intervallo e applica la stessa convenzione in tutti i sistemi. Un valore di 15 minuti etichettato 10:15 può riferirsi a 10:00–10:15 oppure a 10:15–10:30.