energyBUS – Un bus per gli impianti di climatizzazione

L’energyBus (eBUS) è uno standard aperto concepito espressamente per la comunicazione tra apparati di controllo degli impianti di riscaldamento e climatizzazione.

In questi ultimi anni la complessità degli impianti di riscaldamento e climatizzazione è notevolmente aumentata. Sempre più spesso l’impianto non è alimentato da una sola sorgente, ma si integrano diversi sistemi in grado di sfruttare diverse fonti energetiche. A causa di questa complessità crescente è necessario realizzare un sistema di controllo adeguato che permetta un rapido scambio di informazioni tra i diversi  componenti, garantisca la massima efficienza, semplifichi la manutenzione e riduca i costi di esercizio. Il sistema di comunicazione a bus è la scelta ideale che soddisfa tutti i requisiti  citati. Sul mercato si sono affermati diversi standard di comunicazione seriale, alcuni derivati da applicazioni industriali, altri realizzati espressamente per applicazioni domotiche. Generalmente le specifiche del bus sono proprietarie sviluppate da un’azienda per la propria linea di prodotti oppure sono gestite da un consorzio che le rende disponibili solo agli associati. L’eBUS (energyBUS) è invece uno standard aperto, le specifiche si possono richiedere gratuitamente al consorzio. Non nasce come bus ad alte prestazioni, la velocità di trasmissione è di 2400baud, ma il suo obiettivo principale è quello di realizzare un sistema di connessione semplice e soprattutto a basso costo.

L’eBUS

La versione iniziale del protocollo è stata redatta all’inizio degli anni 90’ dall’azienda Karl Dung Gmbh con lo scopo di semplificare la connessione dei dispositivi di controllo di un impianto termico. Successivamente è stato fondato l’eBUS interest group organismo indipendente che ha lo scopo di sviluppare e mantenere le specifiche del protocollo. Nelle specifiche eBUS sono stati implementati tre livelli dello stack ISO/OSI:  il livello fisico (livello 1), il data link ( livello  2) e il livello applicazione (livello 7).

Il livello  fisico

L’eBUS è realizzato con cavo a due fili twistati utilizzati sia per l’alimentazione dei dispositivi collegati che per la trasmissione dei dati. E’ un bus byte oriented, ogni byte inviato sul bus ha la stessa struttura standard utilizzata dalla periferica Uart e cioè 1bit di start 8bit dati e 1bit stop. In figura 1 sono riportati i livelli di tensione ammessi dal bus durante la trasmissione dati.

Figura 1: gli intervalli di tensione ammessi per eBUS. Valori tra 9V e 12V vengono interpretati come bit=0 mentre valori tra 15V e 24V vengono interpretati come bit=1. Le tensioni tra 12V e 15V non sono ammesse.

Figura 1: gli intervalli di tensione ammessi per eBUS. Valori tra 9V e 12V vengono interpretati come bit=0 mentre valori tra 15V e 24V vengono interpretati come bit=1. Le tensioni tra 12V e 15V non sono ammesse.

La minima tensione è di 9V, valori compresi tra 9 e 12V sono interpretati come bit inviato uguale a 0, stato dominante, mentre valori compresi tra 15 e 24V sono interpretati come bit inviato uguale a 1, stato recessivo.  Il bus nella condizione di riposo si trova nello stato recessivo. La lunghezza massima della linea dipende dall’assorbimento dei dispositivi collegati, si deve garantire una tensione minima di 9V nel punto di maggior caduta. I singoli dispositivi  possono essere alimentati direttamente dal bus o possono avere un’alimentazione autonoma e interfacciarsi al bus con linee opotisolate. L’alimentazione del bus può essere fornita anche da più dispositivi in parallelo, e deve essere in grado di erogare una corrente pari alla somma della correnti assorbite a riposo (idle current) da tutti i dispositivi  connessi. La specifica prevede inoltre la disponibilità di un’ulteriore corrente (excess current) di almeno 30mA fino a un massimo di 100mA. La corrente assorbita a riposo dai dispositivi dovrebbe rimanere costante per tutto l’intervallo di tensioni 9V÷24V, in realtà all’aumentare della tensione di alimentazione l’assorbimento a riposo aumenta riducendo la excess current disponibile. I dispositivi  eBUS sono suddivisi in quattro classi in funzione dell’aumento di idle current causato dalla variazione della tensione di alimentazione (tabella 1).

Tabella 1: Classi dei dispositivi eBUS in funzione della variazione della corrente a riposo (idle current) al variare della tensione di alimentazione da 9V a 24V.

Tabella 1: Classi dei dispositivi eBUS in funzione della variazione della corrente a riposo (idle current) al variare della tensione di alimentazione da 9V a 24V.

Poiché l’alimentazione, in qualsiasi condizione, deve  garantire  una  excess  current  di 30mA, la massima variazione ammessa per la idle current è 70mA. Questa requisito limita il numero massimo di dispositivi che si possono connettere al bus.

Livello 2- data  link

eBUS è un bus multimaster che si basa su trasmissione a byte con struttura identica a quella utilizzata nella periferica UART. I messaggi scambiati sono definiti telegrammi (figura 2).

Figura 2: struttura dei tre possibili telegrammi inviati da un device master eBUS. Il telegramma si conclude sempre con il byte SYN(0xAA) che segnala agli altri master la fine del messaggio corrente e il rilascio del bus.

Figura 2: struttura dei tre possibili telegrammi inviati da un device master eBUS. Il telegramma si conclude sempre con il byte SYN(0xAA) che segnala agli altri master la fine del messaggio corrente e il rilascio del bus.

Ogni telegramma inizia con l’indirizzo del mittente (il master) seguito dall’indirizzo del destinatario (slave), da due byte che identificano  il codice comando del telegramma, un byte che indica la dimensione del buffer dati che segue e, in chiusura, dalla checksum del messaggio. Lo salve indirizzato dal telegramma risponde al messaggio inviando il byte di ACK (0x00) seguito eventualmente dal buffer dati della risposta (figura 2). Quando il master riceve la risposta corretta dallo slave, conclude il ciclo della comunicazione inviando la coppia ACK + SYN (0x00 + 0xAA) sul bus. Si parlerà in seguito dell’importanza del byte SYN che appunto sincronizza tutte le trasmissioni sul bus. In caso di errore di comunicazione lo slave invia il byte NACK (0xFF), in questo caso il master può ripetere il telegramma  per una sola volta all’interno di un ciclo di trasmissione. Un particolare telegramma è quello broadcast identificato dall’indirizzo 0xFE e che non prevede ovviamente risposta da parte degli slave e termina con il byte SYN (figura 2C).

La struttura dei telegrammi

L’indirizzo master è il primo byte inviato dal master sul bus quando inizia una trasmissione. Questo byte è costituito da una sequenza particolare di bit che permette di rilevare eventuali collisioni e quindi gestire l’accesso contemporaneo al bus da parte di più master. I dispositivi master connessi alla rete possono essere al massimo 25, tanti quante sono le sequenze valide (figura 3).

Figura 3: eBUS è un bus multimaster Gli indirizzi disponibili per i dispositivi master sono solo 25 suddivisi in 5 classi di priorità. Questa struttura permette di risolvere facilmente i conflitti in caso di trasmissione contemporanea di due o più master

Figura 3: eBUS è un bus multimaster Gli indirizzi disponibili per i dispositivi master sono solo 25 suddivisi in 5 classi di priorità. Questa struttura permette di risolvere facilmente i conflitti in caso di trasmissione contemporanea di due o più master

Ogni dispositivo master può assumere anche la funzione slave ovviamente rispetto ad altri master eventualmente presenti. In questo caso il corrispondente  indirizzo slave si ottiene sommando 5 all’indirizzo master assegnato al dispositivo. L’indirizzo del dispositivo slave può assumere 254 valori diversi, non sono ammessi i valori 0xAA e 0xA9 mentre il valore 0xFEh è riservato per trasmissioni di telegrammi broadcast. La coppia di bytes comando primario e secondario identifica il telegramma  e definisce la struttura del buffer dati che segue. Anche in questo caso non sono ammessi come codici comando i valori 0xAA e 0xA9, i motivi saranno chiariti in seguito. I valori  ammessi per i codici comando e la struttura del buffer dati dei relativi telegrammi è descritto nell’application layer. Il  primo byte del buffer dati che segue indica la dimensione del buffer espressa in bytes, è seguito da un massimo di 16bytes dati ed è chiuso dalla checksum di controllo calcolata utilizzando il polinomio x8 + x7 + x4  +x3  + x + 1 su tutti i bytes del telegramma.

La sincronizzazione dei telegrammi

Ogni dispositivo master al termine di un ciclo di comunicazione  segnala il rilascio del bus inviando come ultimo byte il  byte SYN (0xAA). Per evitare errate interpretazioni del byte di sincronismo il valore 0xAA non è ammesso all’interno del telegramma e dev’essere convertito nella sequenza 0xA9 0x01, mentre il byte 0xA9 dev’essere convertito nella coppia 0xA90x00. Per questo i codici 0xAA e 0xA9 non sono codici identificativi validi per indirizzi slave o comandi. Tutti gli altri dispositivi master, ricevendo  il SYN byte, riconoscono la fine del ciclo di comunicazione attuale e, se necessario, possono impegnare  il bus per una nuova trasmissione. Se nessun master inizia immediatamente un ciclo di comunicazione si crea una condizione di stallo poiché tutti i master possono iniziare una nuova comunicazione solo negli istanti successivi alla ricezione di un SYN byte. Per evitare questa condizione di stallo si devono attivare delle procedure automatiche per la generazione periodica del byte SYN definito AUTO_SYN. La specifica prevede due diverse procedure una hardware e l’altra software. La procedura hardware utilizza un circuito monostabile triggerato dalla transazione High/Low della linea del bus. Se la linea rimane nello stato recessivo per un tempo superiore a quello previsto, l’uscita del circuito monostabile commuta e segnala la condizione al microprocessore che deve inviare un byte SYN. Il byte inviato retriggera  il circuito e garantisce la periodicità della trasmissione.  Il timeout previsto per il byte di AUTO_SYN è di almeno 35ms. La procedura software invece, ad ogni carattere ricevuto correttamente retriggera un timer interno al microcontrollore con timeout di almeno 40ms. Se non si ricevono caratteri corretti per un tempo superiore al timeout il microcontrollore  deve inviare un carattere SYN.

L’accesso  al bus

Dopo aver ricevuto  il byte SYN tutti i master della rete possono iniziare una nuova trasmissione. Poiché l’eBUS è byte oriented, al contrario di altri bus multimaster quali CAN o IIC che sono bit oriented, ogni master può controllare solamente i byte trasmessi non i singoli bit. In caso di conflitto dovuto all’accesso contemporaneo di più master il primo byte ricevuto da tutti i master risulterà corrotto dalla sovrapposizione delle trasmissioni multiple. Per risolvere il conflitto l’indirizzo del dispositivo master, che è il primo byte trasmesso di ogni telegramma, ha una struttura particolare come indicato in figura 3. I quattro bit più significativi rappresentano l’indirizzo del dispositivo master, mentre i quattro bit meno significativi rappresentano la classe di priorità del dispositivo.  I valori per la classe priorità sono cinque: 0x00, 0x01, 0x03, 0x07, 0x0F e nell’ambito della stessa classe gli indirizzi possibili sono cinque: 0x00, 0x10, 0x30, 0x70, 0xF0. In totale perciò si possono collegare all’eBUS 25 dispositivi con funzioni master. Ogni master dopo aver inviato il  proprio indirizzo sul bus esamina  il byte ricevuto se questo coincide con il proprio byte indirizzo significa che ha accesso esclusivo al bus e prosegue inviando il resto del telegramma. Se il byte ricevuto non coincide con il proprio indirizzo  il bus è conteso tra due o più master. Un nuovo tentativo di accesso al bus verrà effettuato dopo aver ricevuto il prossimo SYN byte o meglio l’AUTO_SYN inviato per timeout. A questo nuovo tentativo possono partecipare solo i master che nel tentativo precedente hanno riconosciuto la propria priority class cioè i primi quattro bit del byte indirizzo.  I master interessati possono essere al massimo cinque e, grazie alla struttura degli indirizzi master, in questo nuovo accesso solamente uno dei cinque riconoscerà  il proprio indirizzo e guadagnerà l’accesso esclusivo al bus. L’indirizzo a priorità maggiore è quello con il maggior numero di bit a zero (bit dominanti). Nella descrizione precedente è stato sottointeso un requisito fondamentale per la corretta risoluzione del conflitto e cioè che i master siano sincronizzati in modo che i byte trasmessi si “sovrappongano perfettamente”. A causa delle inevitabili variazioni tra i clock delle singole periferiche di comunicazione e dei diversi ritardi con cui ogni periferica reagisce alla ricezione del SYN byte le trasmissioni dei differenti master non sono mai “perfettamente allineate”. Ammettendo una deviazione di +1.2% sul clock delle periferiche il ritardo massimo tra l’inizio trasmissione del primo e dell’ultimo master che accedono contemporaneamente al bus è di circa 100µs.

L’accesso  sincrono  al bus

La modalità di accesso al bus descritta in precedenza è la modalità asincrona. Le specifiche eBUS prevedono anche una seconda modalità di accesso al bus di tipo sincrono. In questa gestione la comunicazione è suddivisa in cinque slot. In ogni slot possono accedere al bus solo i master con una data class priority. Questo semplifica la gestione dell’accesso multiplo da parte di più master perché all’interno della stessa class priority il bus verrà subito assegnato al dispositivo con indirizzo dominante senza attendere una successiva fase di negoziazione. Per impedire che il master dominante abbia l’uso esclusivo del bus ogni master con la stessa class priority può inviare un solo telegramma all’interno di uno slot. La sequenza di due byte SYN consecutivi (SYN+AUTO_SYN)  indica che i  cinque master abilitati non devono più inviare dati, pertanto si chiude lo slot corrente e si incrementa la priorità dello slot che ora sarà riservato ai dispositivi master con la priorità maggiore. La sequenza viene ripetuta ciclicamente per tutte le cinque priorità 0x00,0x01,0x03,0x07,0x0F previste. In ogni periferica master una variabile indica il priority level attuale assegnato allo slot. La variabile dev’essere incrementata quando il master riconosce la sequenza SYN+AUTO_SYN. Ogni master quando viene connesso al bus assegna al priority level la priorità ricavata dall’ultimo messaggio ricevuto.

L’application layer

L’application layer definisce i  comandi standard del protocollo che devono essere implementati dalle diverse classi di dispositivi. Si tratta di comandi specifici per le applicazioni e non verranno descritti nell’articolo. La tabella 2 elenca i  codici gurppo dei comandi standard definiti nella versione attuale della specifica.

Tabella 2: codici comando previsti dall’application layer della specifica eBUS.

Tabella 2: codici comando previsti dall’application layer della specifica eBUS.

Si accenna brevemente ai network managment command che permettono di gestire la funzionalità della rete eBUS. Nella tabella 3 sono elencati in dettaglio i network management commands.

Tabella 3: i Network Management Commands utilizzati per il controllo e il monitoraggio dei dispositivi connessi alla rete.

Tabella 3: i Network Management Commands utilizzati per il controllo e il monitoraggio dei dispositivi connessi alla rete.

Questi comandi vengono inviati periodicamente  sulla rete per monitorare lo stato dei dispositivi collegati. Attualmente è obbligatorio implementare solo i comandi Reset status e Failure message. La gestione della rete eBUS prevede che ogni dispositivo connesso si trovi in uno dei tre stati di funzionamento:

NMInit
NMReset
NMNormal

Un dispositivo all’accensione si trova nello stato NMInit. Quando è pronto per accedere alla rete invia il messaggio ResetCondition e si porta nello stato NMreset. Tutti gli altri dispositivi connessi alla rete che ricevono il messaggio  di Reset Condition commutano dallo stato NMnormal, stato di funzionamento normale, allo stato NMReset. Dopo aver eseguito il reset della configurazione del driver di comunicazione ogni dispositivo si riporta nello stato NMNormal. Il dispositivo incaricato di effettuare il monitoraggio  della rete deve contenere la tabella di configurazione dei nodi della rete. In questa tabella sono memorizzati gli indirizzi dei nodi da monitorare, lo stato del nodo e il tempo di ciclo. Quest’ultimo valore indica la periodicità con cui il nodo incaricato di monitorare lo stato della rete deve inviare i messaggi di diagnostica ai rispettivi nodi. Se la rete ha una struttura statica ben definita la tabella può essere statica e compilata a priori. Se la struttura della rete non è nota a priori o può cambiare nel tempo la tabella viene aggiornata dinamicamente durante il funzionamento.

 

 

Scrivi un commento