Swappa : Uni / Reti wireless - Zigbee
Creative Commons License

Torna alla pagina di Reti wireless


 :: Reti wireless - Zigbee ::

Appunti del 13 e 16 Aprile

Le immagini di questa pagina sono prese dalle slide del prof Rapacioli

Indice

  1. Introduzione
  2. ZigBee Alliance
  3. Livello fisico
  4. Livello datalink
  5. ZigBee stack architecture
  6. Tipi di dispositivo
  7. Topologie della rete ZigBee
  8. Join in una rete
  9. Cluster
  10. Comparative

Introduzione

ZigBee è un protocollo di comunicazione di alto livello, basato sullo standard wireless IEEE 802.15.4. E' stato standardizzato principalmente per l'automazione e la sensoristica, quindi per soluzioni che prevedono la creazione di Wireless Personal Area Network (WPAN) a basso costo e a basso consumo e con un alto numero di nodi. La lunga autonomia dei dispositivi è legata al bassissimo data rate delle trasmissioni (da 20 a 250 Kb/s), che rimane comunque sufficiente per gestire i loro modesti volumi di traffico.

Prima di addentrarci nell'argomento, vediamo quali sono le principali applicazioni del protocollo:

Torna su

ZigBee Alliance

La ZigBee Alliance è un'organizzazione formatasi nel 2002 con l'obiettivo di sviluppare e promuovere il protocollo ZigBee (dal livello MAC in su). L'utilizzo del protocollo per fini non commerciali è consentito a tutti (qui le specifiche http://www.zigbee.org/Products/DownloadZigBeeTechnicalDocuments.aspx), mentre se vuoi vendere prodotti col marchio ZigBee devi seguire una strada un po' più tortuosa. Prima di tutto devi iscriverti alla ZigBee Alliance (la sottoscrizione base costa 3500$ all'anno), che ti fornirà un id industriale per le tue soluzioni e ti schiuderà le porte dell'assistenza e delle specifiche più fighe ed utili. Per questo motivo quando dall'Alliance dicono che il protocollo è open, al nostro amico GNU gli girano le corna (la licenza GPL dice ben altro).
Ora che sei membro della ZigBee Alliance (come Adopter, Participant o Promoter), devi decidere che profilo dare alla tua applicazione, ovvero definire il ruolo e le funzioni dei dispositivi della tua rete ZigBee. Fondamentalmente puoi scegliere tra due tipi di profili:

Ci sono però due fregature: la prima è che ogni due mesi questi qua fanno uscire una versione nuova del protocollo, non necessariamente retrocompatibile, e se vuoi mantenere il marchio ZigBee sei costretto a ricertificarti (pagando di nuovo); la seconda è che se per il nostro prodotto dobbiamo utilizzare moduli certificati di terze parti, anche noi dovremo iscriverci alla ZigBee Alliance e ricertificarli!
Come alternativa alla certificazione (che dovrebbe costare sui 20-25mila euro per ogni modulo) si può commercializzare il proprio prodotto come comune protocollo wireless, rinunciando all'attestato di garanzia ZigBee.

Bei tempi quelli del Modbus, in cui dovevi limitarti a seguire le specifiche (pubbliche) del protocollo e vivere felice.

Se scegliamo di adottare un profilo pubblico per il nostro prodotto, possiamo scegliere tra i seguenti Application Profiles definiti dalla ZigBee Alliance, ognuno dei quali ha una propria chiave:

Torna su

Livello fisico

Il livello fisico è quello dello standard 802.15.4, che tra i vari compiti ha quello della gestione delle frequenze di utilizzo. Dal momento che queste cambiano a seconda dell'area geografica in cui ci si trova, bisognerà settare opportunamente il parametro Country del modulo ZigBee. Le frequenze utilizzate nel mondo sono fondamentalmente tre:

Il rapporto segnale rumore (potenza segnale / potenza rumore nel segnale) è un parametro che dà una stima sulla bontà del segnale: se è molto basso avrò percentuali di fallimento delle trasmissioni trascurabili. Lo ZigBee trasmette usando il metodo CDMA, che oltre a permettere l'invio in contemporanea da diversi trasmettitori senza provocare collisioni, ha valori più bassi di rapporto segnale rumore (quindi robustezza maggiore) rispetto a Wi-Fi e Bluetooth.

Torna su

Livello datalink

Dello standard 802.15.4, lo ZigBee eredita le specifiche anche della parte del livello datalink del Medium Access Control (MAC), che fa da tramite tra il livello fisico (che gestisce le potenze e le modalità di connessione-trasmissione della rete) e quello applicativo (che dice cosa posso fare col protocollo). In altre parole il MAC si occupa di rendere il livello applicativo del tutto trasparente alla tecnologia che c'è sotto, sollevandolo da ogni preoccupazione sul tipo di connessione che sto utilizzando (wireless o cablata che sia). Il protocollo MAC supporta fondamentalmente due tipi di rete:

I frame aggiunti al pacchetto dal livello MAC possono essere di quattro tipi: beacon, data, ack (il comune acknowledgement, che dà garanzie sulla ricezione dei dati) e command (per inviare comandi di gestione). Quest'ultimo è mantenuto separato dal frame dei dati così da favorire l'utilizzo da parte di sviluppatori diversi da quelli originari, perché più facilmente individuabile e documentabile.

Torna su

ZigBee Stack Architecture

Sui due livelli visti finora si appoggia lo Stack ZigBee vero e proprio. Vediamo lo schema complessivo dell'architettura:

La parte in rosa è quella dell'802.15.4, quindi livello fisico e MAC. Si noti che attraverso la configurazione di alcuni parametri è possibile intervenire sui consumi dei moduli. Ad esempio si può aumentare l'autonomia dei device abbassando la potenza di uscita (riducendo di conseguenza il range della rete), o diminuendo la frequenza di invio dei beacon.

La parte in giallo è quella applicativa scritta dal produttore.

La parte in azzurro è quella definita dalla ZigBee Alliance. Vediamo i vari livelli:

Concludendo, lo stack ZigBee ha tre tipi di profili:

Torna su

Tipi di dispositivo

Da un punto di vista logico, i dispositivi ZigBee possono essere di tre tipi: Coordinatore, Router ed End Device.

ZigBee Coordinator

Lo ZigBee Coordinator (ZC) è il dispositivo che crea e configura la rete, cercando un canale radio adatto e definendo tra i parametri operativi il PAN ID, cioè il numero a 16bit usato dai membri della rete per riferirsi ad essa. Una volta avviata la rete si mette in modalità Coordinatore, permettendo (o meno) a Router ed End Device di fare una join alla sua rete. Tra le altre funzioni, agisce come deposito per le chiavi di sicurezza (trust center), ed occasionalmente effettua attività di routing.
Lo ZC è unico per ogni rete, ne costituisce la radice e può fare da ponte tra più reti diverse. E' chiaramente un full function device, e dato che non può andare in modalità sleep per ottemperare ai suoi mille doveri, deve essere alimentato da rete elettrica.

ZigBee Router

Lo ZigBee Router (ZR) permette l'inoltro dei messaggi (aumentando così le distanze di copertura della rete) e ha il potere di accettare o meno richieste di join alla rete da parte di altri device. Ovviamente prima si dovrà unire a una rete già esistente, chiedendo l'autorizzazione al Coordinator o a un altro Router. L'inoltro dei messaggi avviene attraverso il mantenimento di tabelle di routing dinamiche e sempre aggiornate, in cui lo ZR può memorizzare fino a 20 percorsi diversi.
Per ogni rete può esserci più di un Router, che però essendo un full function device deve essere alimentato da rete elettrica (uno ZR in frequente sleep mode serve a poco).

ZigBee End Device

Lo ZigBee End Device (ZED) è un reduced function device, perché le sue funzionalità si riducono al dialogare col Coordinatore o col Router (non può trasmettere/ricevere dati a/da altri ZED). Richiede poca memoria, ha bassi consumi (va a batterie) e costi inferiori rispetto agli altri due tipi di dispositivi.
Al contrario di ZC e ZR, la loro presenza in una rete ZigBee non è essenziale: si possono benissimo realizzare reti con solo un Coordinatore e uno o più Router (caso tipico: supervisione di macchine industriali, in cui è richiesta massima efficienza e reattività).

Torna su

Topologie della rete Zigbee

La rete ZigBee può assumere 3 diverse topologie, ognuna con i suoi pregi e difetti. Ecco una semplice legenda per gli schemi che seguiranno:

Alcuni dettagli numerici prima di cominciare:

Topologia a stella

La topologia a stella è la topologia più semplice in quanto ogni dispositivo (Router o Device) è collegato direttamente al Coordinator.

Questa topologia è indicata per reti con pochi slave, o la sua gestione diventerebbe troppo complessa e il coordinatore sarebbe sommerso da richieste di instradamento. Presuppone inoltre la non dinamicità della rete, dato che si instaurano collegamenti univoci tra i vari ZED e lo ZC.

La topologia a stella non richiede alcun algoritmo di routing in quanto si passa sempre dal coordinatore.

Topologia ad albero

Questa rete assume le sembianze di un albero radicato nel Coordinator.

Per comunicare tra loro i device fanno risalire le richieste lungo l'albero, fino a trovare un router che abbia come figlio (o discendente) il device con cui si vuole comunicare.

Anche questa topologia non necessita di algoritmi di routing specifici, in quanto si invia il messaggio al padre, unico per ogni dispositivo. Tuttavia è poco affidabile, perché se cade uno dei Router della rete, tutta la sua sottorete sarebbe esclusa dalla comunicazione e dovrebbe ripetere l'operazione di inserimento.

Topologia Mesh

Questa è la rete che permette la dinamicità maggiore ed è indicata per reti di grosse dimensioni.

Permettendo il collegamento diretto tra molti Router, la rete consente di migliorare l'invio di messaggi tra dispositivi, in quanto è possibile scegliere tra differenti strade in base al loro carico, alla distanza e ad altri fattori.
La rete è inoltre più affidabile: se un Router cade non cade tutta la sua sottorete, ma entrano in gioco algoritmi di re-routing che si accorgono della mancanza di un nodo e ricalcolano il percorso migliore per portare a destinazione il messaggio. Questo rende però necessari algoritmi di routing specifici.

Torna su

Join in una rete

Esistono due modi in cui un dispositivo si unisce ad una rete Zigbee:

Nel primo caso il Router o Device che si unisce alla rete conosce già l'ID del dispositivo a cui chiedere la connessione (ad esempio può essere impostato fisicamente).
Nel secondo caso invece il dispositivo deve ricercare un Router o un Coordinator che gli risponda. Tra i dispositivi che rispondono ne viene scelto uno al quale si richiede la connessione. Se la connessione va a buon fine, il dispositivo che ha chiesto la join riceve il suo indirizzo dal Router con il quale si è collegato.

Torna su

Cluster

Dalle FAQ del protocollo: The ZigBee Cluster Library (ZCL) is a significant addition to revision 1.1. In ZigBee, a cluster is a message or collection of messages pertaining to a given application domain. Some devices (such as on/off switches) have the same definition and functionality whatever application profile is used. The idea behind creating the ZCL was to provide cluster reusability by abstracting clusters across several application domains and placing them in a library organized according to functional domains (e.g., lighting, closures, HVAC).

Torna su

Comparative

Vediamo ora le principali differenze tra ZigBee, Wi-Fi e Bluetooth attraverso la seguente tabella:

Qualche commento ulteriore sullo ZigBee. Anzitutto la durata delle batterie dipende dal tipo delle batterie stesse: per le normali stilo si parla di anni, mentre per quelle al litio più avanzate si parla tranquillamente di decenni. La dimensione della rete intesa come numero di nodi collegabili è sovradimensionata in modo imbarazzante rispetto alla quasi totalità delle applicazioni. E' supportata l'architettura di rete mesh, che permette l'autocostruzione della rete stessa: il device ne chiede la struttura al coordinatore e vi si adatta. Mentre per rimpiazzare un modulo Bluetooth dovrò rifare l'aggancio al dispositivo, la sostituzione di un modulo ZigBee avviene automaticamente nel modo corretto, perché è tutto demandato a livello applicativo (e non fisico o network come negli altri protocolli).
Lo ZigBee cerca quindi di prendere sia i pregi della Wi-Fi che quelli del Bluetooth.

Torna su


Torna alla pagina di Reti wireless

(Printable View of http://www.swappa.it/wiki/Uni/RW-13Aprile)