Sincronizzazione sistemi embedded

Nei sistemi costituiti da più “nodi” autonomi (es. reti di PC o sistemi di acquisizione dati distribuiti) la sincronizzazione è importante in molte applicazioni.

Tutti i sistemi a microprocessore hanno almeno un clock che permette di misurare intervalli di tempo. Alcuni sistemi includono anche un orologio digitale (Real Time Clock – RTC) che conteggia il tempo anche quando il resto del sistema è spento. Es. Maxim DS1307.

Se non è presente un RTC sarà necessario sincronizzare il dispositivo con il resto della rete ad ogni avvio, ma anche nel caso sia presente un RTC è comunque necessario sincronizzare periodicamente i nodi del sistema per compensare gli scostamenti dei diversi RTC.

NTP e GPS

Per la sincronizzazione dei sistemi embedded è possibile utilizzare un client NTP oppure un ricevitore GPS. Solitamente tutti i nodi del sistem distribuito vengono sincronizzati prendendo come riferimento un orologio “ufficiale” (orario GPS o time server NTP).

765px-architecture_ntp_labels_ja-svg

In teoria con NTP è possibile ottenere un’accuratezza di 10 ms rispetto ad un server remoto connesso via internet e fino a circa  0,1 ms rispetto ad un server NTP in LAN. In pratica però è molto difficile raggiungere questi livelli di precisione al livello dei clinet finali su una grande distanza. Valori di relisitic ottenibili  sincronizzando rispetto ad un server remoto attraverso intenet sono di 50-100ms a seconda delle condizioni.

In teoria utilizzando un ricevitore GPS dovrebe essere possibile sincronizzare tutti i nodi del sistema con un errore inferiore al microsecondo (vedi GPS Timing Service). Questo livello di accuratezza è spesso superiore alla precisione dei clock utilizzati nei sistemi embedded economici, ma può essere utilizzato per correggere peiodicamente la deriva del clock del dispositivo.

In pratica utilizzando un ricevitore GPS ogni dispositivo può diventare un time server NTP di livello 1 (stratum 1).

Vedi ad esempio il progetto:  “building a Raspberry NTP

Una possibile applicazione pratica è quella di utilizzare un ricevitore GPS (posizionato in un punto dove sia possibile ricevere il segnale GPS) per sincronizzare il dispositivo che svolgerà il ruolo di “Time Server” all’interno della LAN e poi sincronizzare tutti gli altri dispositivi utilizzando dei client NTP attraverso la LAN.

Una soluzione a basso costo potrebbe essere quella di utilizzare uno smartphone con ricevitore GPS integrato come server NTP. La app Servers ultimate sembrerebbe utilizzabile a questo scopo.

Annunci

2 thoughts on “Sincronizzazione sistemi embedded

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...