Metodi di rilevamento automatico degli errori di collegamento nelle reti ZigBee


8

Data una rete mesh ZigBee con diversi nodi al suo interno. Esistono collegamenti stabiliti tra ciascun nodo tramite i nodi del router.

Se il Nodo A vuole inviare un messaggio al Nodo Z per la prima volta, il Nodo A deve eseguire un Rilevamento rotte per determinare quali nodi intermedi inoltreranno il suo messaggio.

Il meccanismo di individuazione del percorso è descritto qui . In base ad esso, il percorso con il costo più basso verrà archiviato in una tabella di routing dei nodi.

Finora tutto bene, ogni nodo sa cosa fare, possono raggiungersi.


Ora, un nodo intermedio, tra il nodo A e il nodo B si rompe, quindi il percorso attualmente memorizzato diventa inutilizzabile.

Cosa succede in questo caso? Immagino che quando il Nodo A vuole inviare un messaggio, viaggerà fino al collegamento interrotto dove rimarrà bloccato. L'ultimo nodo nella rotta invierà un messaggio sull'errore che attiverà una nuova Rilevazione Rotta dal Nodo A , quindi verrà trovata una nuova rotta e tutto andrà di nuovo bene.

In genere va bene (dato che avevo ragione); la rete recupera. Ma mi chiedo se ci sono algoritmi o metodi che forniscono una funzionalità di monitoraggio della rete che controlla continuamente lo stato dei collegamenti presentati nelle tabelle di routing. Pertanto, il nodo A può essere avvisato dell'errore prima di voler inviare un altro messaggio al nodo Z e, invece di incorrere in un vicolo cieco, può iniziare subito con un rilevamento percorso. Quindi, fondamentalmente, quello a cui sto pensando è un servizio che controlla periodicamente i collegamenti.


Comprendo che, poiché ZigBee viene solitamente utilizzato su dispositivi alimentati a batteria, un tale meccanismo non sarebbe efficiente dal punto di vista energetico.

Quindi, in generale, quali sono ora i meccanismi di rilevamento degli errori di collegamento più efficaci che possono essere utilizzati in una rete di sensori wireless a bassa potenza, in particolare in una rete mesh ZigBee?

Risposte:


4

Da quello che ho trovato, sembra che alcune implementazioni (ad esempio Z-STACK di TI ) raccomandino di aggiornare la tabella di routing ogni tanto per evitare nodi "morti" :

Sì, ho aspettato da 5 a 10 minuti. Che cos'è "un po 'di tempo"? Ho visto casi in cui ci vogliono alcuni minuti per recuperare. Ad esempio, se accendo e riaccendo il gateway, occorrono forse un minuto o due per la connessione dei nodi più vicini, quindi un altro minuto o due per ciascun livello successivo. Ma ho aspettato molto più a lungo che la mesh si riprendesse da questo cambiamento di routing.


Sì, potrebbero essere necessari alcuni minuti. Quindi, se vuoi 5 o minuti, il tuo dispositivo tornerà? Si consiglia di chiamare periodicamente NLME_RouteDiscoveryRequest () per mantenere la tabella di routing.

Puoi leggere di più su cosa NLME_RouteDiscoveryRequest()fa nella guida per gli sviluppatori (vedi pagina 11/12):

La figura seguente mostra un esempio della procedura di individuazione del percorso molti-a-uno. Per avviare il rilevamento di percorsi molti-a-uno, il concentratore ha trasmesso una richiesta di percorsi molti-a-uno a tutta la rete. Alla ricezione della richiesta di percorso, ogni dispositivo aggiunge una voce della tabella di percorso per il concentratore e memorizza l'unico vicino hop che inoltra la richiesta come indirizzo hop successivo. Non verrà generata alcuna risposta al percorso.

Il comando di richiesta di instradamento multiplo è simile al comando di richiesta di instradamento unicast con lo stesso ID comando e formato di frame del payload. Il campo opzione nella richiesta di percorso è molti-a-uno e l'indirizzo di destinazione è 0xFFFC. La seguente API Z-Stack può essere utilizzata per il concentratore per inviare richieste di instradamento multiple. Per informazioni dettagliate sull'API, consultare la documentazione dell'API ZStack.

ZStatus_t NLME_RouteDiscoveryRequest( uint16 DstAddress, byte options, uint8 radius )

La tolleranza agli errori nelle reti di sensori wireless ZigBee è un documento interessante con alcune ulteriori informazioni su come le reti ZigBee tollerano l'errore del nodo. Sembra che l'implementazione usata lì abbia ricostruito la rete quando uno dei nodi è stato rimosso (il metodo esatto di questo non è chiaro, sfortunatamente), in modo che il nodo malfunzionante non sia più incluso nella mesh. In alcuni casi, ciò ha portato i sensori a "rimanere orfani" prima di richiedere di ricongiungersi alla rete mesh attraverso un percorso diverso.

In sintesi, dalle risorse che ho trovato: dipende dalla tua implementazione, ma la maggior parte rivaluterà la tabella di routing abbastanza frequentemente per evitare che i nodi rotti danneggino la rete . Ho il sospetto che sarai in grado di ottenere una risposta più accurata se chiedi al fornitore della tua specifica implementazione ZigBee, poiché l'operazione esatta varierà.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.