Protocollo DanBus

DanBus è il protocollo di comunicazione usato nelle reti con i nodi della serie DL485x.

Con DanBus si possono collegare fino a 63 schede DL485x per distribuire gli I/O di un sistema domotico per il controllo della casa ma anche per altri usi come la gestione di serre, cantine, latterie...

I nodi sono paritari e inviano a turno i loro pacchetti dati sulla rete senza stallo, questi dati sono a disposizione di tutti i nodi connessi ed eventualmente anche ad un eventuale sistema generale di controllo quale Domoticz e/o altri sistemi domotici.

A rotazione ciascun nodo, se acceso e connesso, invia il suo pacchetto dati nel BUS, quando un nodo è spento oppure occupato e non si inserisce in rete quando è il suo turno allora il giro continua con il successivo nodo pronto a trasmettere.

Se un nodo non ha informazioni da inviare si limita ad inviare un previssimo pacchetto di ping.

 Ciascun nodo può abbandonare la rete anche durante la trasmissione di un suo pacchetto, in questo caso i nodi restanti rilevano un errore di pacchetto errato e continuano normalmente le comunicazioni

Composizione pacchetti

Ci sono 2 tipi di pacchetto:

  • pacchetto PING (quando non ci sono informazioni o richieste da inviare in rete)
  • pacchetto INFO (con informazioni)

 Pacchetto PING (lunghezza fissa):

ping

  • ID Mittente
  • CRC con flag di fine pacchetto

Pacchetto INFO (lunghezza variabile):

trama1

  • ID Mittente
  • Tipo Pacchetto
  • ID destinatario (da 1 a 63)
  • Dati (opzionali, anche 0 byte)
  • CRC con flag di fine pacchetto

Tipo pacchetti

Il secondo byte della trama indica il tipo di pacchetto trasmesso dal nodo. I comandi più utilizzati sono i seguenti:

  • 0x0E - Comunica IO, quando periodicamente (a seconda dell'impostazione), o in seguito ad un evento, un nodo invia in rete il valore dell'I/O e/o dei vari sensori I2C e/o OneWire
  • 0x07 - Comando per richiedere a un nodo il valore di un suo ingresso
  • 0x08 - Comando per settare in un nodo il valore di una sua uscita
  • 0x0B - Comando di reboot per una spedifica scheda (tutte nel caso l'ID di destinazione sia 0)
  • 0x0A - Comando di Inizializza IO con valore impostato su EEPROM, utile per rileggere la configurazione dopo averla cambiata
  • 0x03 - Comando di lettura configurazione dell'I/O presente su EEPROM
  • 0x04 - Comando di lettura della EEPROM (si deve dare l'indirizzo di partenza e il numero di byte da leggere)
  • 0x06 - Comando di scrttura della EEPROM (si deve dare l'indirizzo di partenza e il numero di byte da scrivere)
  • 0x0C - Comando di lettura del tipo di board e della versione del firmware
  • 0x0D - Comunicazione di un pacchetto con descrizione errore

Tipo di Errori

Ciascun nodo effettua un controllo di correttezza dei pacchetti ricevuti e/o la fattibilità dei comandi ricevuti e puo rilevare diversi casi di errore componendo di conseguenza un messaggio di errore che invierà in rete quando sarà il suo turno, il pacchetto inviato sarà composto come un pacchetto INFO in cui il byte tipo sarà 0x0D a cui seguirà un byte come da lista seguente e contenente il tipo di problema rilevato:

  • 0x00 - Errore inizializzazione / timeout I2C
  • 0x01 - Errore 3 zeri consecutivi in posizione non ammessa nei pacchetti
  • 0x02 - Errore 3 uni consecutivi in posizione non ammessa nei pacchetti
  • 0x03 - Pacchetto ricevuto troppo lungo
  • 0x04 - Pacchetto sentito uguale a se stesso
  • 0x05 - Indirizzo mittente fuori range
  • 0x06 - Manca indirizzo destinatario
  • 0x07 - Manca parametri
  • 0x08 - Troppi Byte pacchetto
  • 0x09 - Manca parametri
  • 0x0A - I2C occupata
  • 0x0B- Manca Byte residui
  • 0x0C - Troppi Byte dati
  • 0x0D - Errore comando a zero parametri
  • 0x0E - Errore comando a 1 parametro sconosciuto
  • 0x0F - Errore comando a 2 parametri sconosciuto
  • 0x10 - Errore comando a 3 parametri sconosciuto
  • 0x11 - Errore comando a 4 parametri sconosciuto
  • 0x12 - Errore comando n parametri non previsto
  • 0x13 - Errore CRC
  • 0x14 - I2C occupata
  • 0x15 - I2C Timeout
  • 0x16 - OneWire Occupata
  • 0x18 - OneWire Occupata
  • 0x19 - Lettura numero ingreso fuori range
  • 0x1A - Dimensione pacchetto non conforme
  • 0x1B - Lettura EE oltre limite indirizzo
  • 0x1C - Scrittura numero uscita fuori range
  • 0x1D - Numero parametro fuori range
  • 0x1E - Nodo occupato da ordine precedente

 

 

 
 

Stampa   Email