Installazione e Configurazione Schede DL485

Le schede hanno bisogno di una alimentazione (8-24Vcc, consigliato 12..24V) su due fili e altri due fili intrecciati per il bus.

Per semplicità si consiglia di utilizzare un cavo ethernet per collegare tutte le schede presenti nell'impianto. Un doppino collegherà i morsetti A e B del BUS RS485 e un altro doppino porterà l'alimentazione a tutte le schede. Le restanti 2 coppie possono essere usate per portare rete eterneth o altra alimentazione.

Ogni scheda dispone di un pulsante e 2 LED per impostare le configurazioni di base:

  • ID del nodo che dovrà essere univoco per ciascuna scheda (da 1 a 127)
  • Velocità del BUS
  • Velocità seriale
  • Numero massimo di nodi (board)

 Di fabbrica le schede vengono fornite con la seguente configurazione:

  • ID Nodo non impostato, quindi è una impostazione necessaria
  • Comunicazione su BUS e seriale di 9600 BAUD
  • Max numero di board sul bus uguale a 10

Come funziona la programmazione tramite pulsante e 2 LED

  1. Premendo il pulsante a bordo scheda si ha l'eco tramite il LED TX
  2. Premendo il pulsante a bordo scheda per circa 2 secondi si entra in modo programmazione
  3. Il modo programmazione è segnalato dalla accensione del LED RX
  4. se il LED RX è acceso fisso indica lo stato di programmazione in cui si puo immettere la scelta di una voce di menu
  5. se il LED RX trilla velocemente indica lo stato di programmazione in cui si puo immettere il valore per la voce scelta
  6. Entrando in modo programmazione il LED RX si accende con luce fissa, rilasciare il pulsante per poi scegliere una voce di menu.
  7. Se non si preme piu il pulsante allora dopo circa 3 secondi si esce dalla programmazione altrimenti si sceglie una voce di menu
  8. Premere e rilasciare il tasto un numero di volte corrispondente allla voce (parametro) da impostare o visualizzare
  9. Seguirà un numero di lampi del LED RX pari al valore presente nel parametro selezionato (10=0, 1=1, 2=2, 3=3...9=9)
  10. Finiti i lampeggi il LED RX trillerà velocemente per indicare che eventualmente è possibile impostare un nuovo valore premendo il pulsante il numero di volte corrispondente (10=0, 1=1, 2=2, ecc...), altrimenti aspettare il ritorno del LED RX a luce fissa
  11. Se impostato un nuovo valore, il LED RX lo replica con un corrispondente numero di lampi poi ritorna a luce fissa
  12. Con il ritorno a luce fisse del LED RX si puo ripetere la procedura dal punto 2 per visualizzare o impostare un nuovo parametro
  13. Trascorsi circa 3 secondi con il LED RX a luce fissa senza premere il pulsante, si esce dallo stato di programmazione e i due led riprenderanno ad indicare l'attività sul BUS, RX (ricezione) e TX (trasmissione).

Tabella parametri

  • 1 unita ID nodo
  • 2 decine ID nodo
  • 3 centinaia ID nodo
  • 4 velocità bus
  • 5 velocità seriale 232
  • 9 comando reset configurazione nodo

Impostazione dell'ID della scheda

L'ID da inserire è composto da 3 cifre: le unità, le dcine e centinaia.

  • Premere il tasto per 2 secondi finchè si entra in programmazione e il LED RX si accende fisso
  • Premere una volta il tasto per selezionare la programmazione delle unità, il LED RX mostrerà le unità memorizzate in memoria (10 impulsi per il numero 0)
  • attendere che il LED RX trilli velocemente
  • Premere tante volte il tasto a seconda delle unità da impostare e poi Il LED RX mostrerà con i lampeggi le unità inserite oppure attendere che il LED RX torni a luce fissa.
  • Ripetere eventualmente la procedura dal secondo punto premendo 2 volte per selezionare le decine e/o 3 volte per le centinaia
  • Aspettare 5 secondi per l'uscita dalla programmazione e memorizzazione delle impostazioni.

Installazione e configurazione software su RASPBERRY

Su Github.com all'indirizzo https://github.com/lucasub/DL485_BUS è possibile prelevare l'ultima versione del software di test da installare su RASPBERRY PI o su altro sistema LINUX.

Installare i seguenti pacchetti tramite line adi comando:

sudo apt install git pip python3

Prelevare il software da github tramite il comando:

git clone https://github.com/lucasub/DL485_BUS.git

Verrà creata la cartella DL485_BUS dove all'interno sono presenti i file neccessari:

arduinoserial.py
config.json
dl485.py

dove arduinoserial.py si occuoperà di ricevere i dati dalla seriale

config.json contiene tutta la configurazione dei nodi

dl485.py è la libreria per la gestione del BUS e NODI

File di configurazione config.json

(a destra del carattere # sono presenti i commenti alle varie voci)

La sezione GENERAL al primo livello contine le informazioni generali del BUS:

"GENERAL":
    {
        "bus_port": "/dev/ttyUSB0", # Porta seriale Raspberry PI
        "bus_baudrate": 9600, # Velocità per BUS e seriale impostata nel pc (deve corrispondere a quella dei nodi)
        "max_board_address": 24, # Numero massimo di Board presenti sul BUS (deve corrispondere a quella dei nodi)
        "board_address": 2 # ID assegnato a Raspberry. Deve avere l'ID della scheda collegata alla seriale di Raspberry PI +1 e non devono esserci altri nodi con lo stesso ID
    },

Troviamo poi la configurazione generale per ciascuna scheda DL485 (BOARDx) presente nella rete, dove x identifica l'ID della BOARD ed è un numero univoco, in ordine crescente anche non consecutivo col precedente, e va impostato anche su ogni BOARD tramite pulsante e LED.

Ogni sezione "BOARDx" va seguita dall'elenco delle impostazioni dei realtivi I/O:

"BOARD3":
    {       
        "GENERAL": # Configurazione generale della BOARD
        {
            "name": "Caldaia", # Nome della BOARD
            "boardtype": 2, # Tipo di Board: Vedi TYPEB
            "enable": 0 # Abilitazione della BOARD: 0=disabilitata, 1=abilitata
        },

dopo la sezione "BOARDx" Seguono le configurazioni dei vari I/O:

Esempio di configurazione USCITA

"OUT1": # OUT1 è la stessa voce presente SUL PCB / etichetta e fa riferimento al PIN del micro che si vuole programmare
        {
            "io_logic": 7, # Valori interi. IO LOGICO associato a "OUT1" che deve essere UNIVOCO per ciascun IO della stessa BOARD per un MAX di 25 IO logici, questo numero serve ad indentificare numericamente il morsetto in fase di programmazione parametri e funzionamento
            "direction": "output",
            "io_type": "digital",
            "default_startup_value": 1,
            "inverted": 1,
            "filter": 127,
            "time_refresh": 600,
            "n_refresh_on": 1,
            "n_refresh_off": 1,
            "linked_board_id_io_logic": ["3-3", "3-4"],
            "linked_proc": "or",
            "enable": 1,
            "name": "RELE1",
            "description": "Uscita rele1",
            "dtype": "Switch"
        },

 

Comando ValoreDescrizione
direction   Direzione I/O
  input Ingresso
  output Uscita

 

Comando ValoreDescrizione
io_type   Tipo di hardware assegnata all'IO
  digital IO Digitale
  analog IO analogico: 8 bit com uscita - 10 bit come ingresso
  i2c I2C per collegameto sensori. Solo su PIN PC4 per SDA e PC5 per SCL
  onewire Per collegamento dispositivi OneWire
  disable

Per disabilitare la funzionalità dell'IO

 

ComandoValoreDescrizione
pullup   Solo per ingressi digitali. Attiva un PULLUP (resistenza verso il positivo da circa 33Kohm)
  0 Senza pullup
  1 Con pullup

 

ComandoValoreDescrizione
filter   Filtro in lettura per atirimbalzo
  0...127 Più alto è il valore più è alto il filtro e più lenta è la risposta

 

ComandoValoreDescrizione
time_refresh   Tempo in decimi di secondo dopo il quale viene ritrasmesso periodicamente il valore dell'IO sul BUS (rinfresco periodico)
  0 Escluso, non c'è mai rinfresco periodico
  1....16383 Tempo di rinfresco periodico (decimi di secondo), attenzione valori bassi possono saturare la rete
ComandoValoreDescrizione
Rvcc   Solo per ingressi analogici. Valore in OHM della resistenza in ingresso nel partitore di tensione

 

ComandoValoreDescrizione
Rgnd   Solo per ingressi analogici. Valore in OHM della resistenza verso massa nel partitore di tensione

 

ComandoValoreDescrizione
enable   Abilitazione dell' IO
  0 Disabilitato
  1

Abilitato

ComandoValoreDescrizione
name   Nome dell'IO che apparirà nell'intefaccia di domoticz

 

ComandoValoreDescrizione
description   Descrizione dell'IO che apparirà nell'interfaccia di domoticz

 

ComandoValoreDescrizione
dtype   Nome del dispositivo del sistema domotico. Di seguito i dispositivi disponibili su Domoticz
  Air Quality -
  Alert -
  Barometer -
  Counter Incremental -
  Current/Ampere -
  Current -
  Custom -
  Distance -
  Gas -
  Humidity -
  Illumination -
  kWh -
  Leaf Wetness -
  Percentage -
  Pressure -
  Rain -
  Selector Switch -
  Soil Moisture -
  Solar Radiation -
  Sound Level -
  Switch Utilizzato per IO difgitali
  Temperature  
  Temp+Hum Utilizzato per sensori di temperatura e unidità
  Temp+Hum+Baro Utilizzato per sensori di temperatura e unidità e pressione
  Text -
  Usage -
  UV -
  Visibility -
  Voltage Utilizzato per misurare la tensione tramite ingressi analogici
  Waterflow -
  Wind -
  Wind+Temp+Chill -

 

ComandoValoreDescrizione
n_refresh_on   Numero di trasmissioni nel passaggio da OFF a ON di un I/O digitale
  0 Disabilitato
  1...7 Numero di trasmissioni dell'evento fronte ON

 

ComandoValoreDescrizione
n_refresh_off   Numero di trasmissioni nel passaggio da ON a OFF di un I/O digitale
  0 Disabilitato
  1...7 Numero di trasmissioni dell'evento fronte OFF

 

ComandoValoreDescrizione
inverted    Inverte lo stato dell'I/O digitale
  0 Non invertiro
  1 Invertito

 

ORGANIZZAZIONE DELLA MEMORIA E2 PROM DEL NODO:

0x0000..0x001F 32 byte riservati al nodo

0x0020..0x003F 32 byte riservati a I/O logico 1

0x0040..0x005F 32 byte riservati a I/O logico 2

0x0060..0x007F 32 byte riservati a I/O logico 3

.....

0x0300..0x031F 32 byte riservati a I/O logico 24

0x0320..0x03FF riservati al nodo

Ogni I/O dispone di un'area per il SETUP in EEPROM di 32 Byte e l'indirizzo di partenza decimale di ogni I/O è: 32 * numero I/O.

Es. La configurazione dell' I/O n.5 parte dall'indirizzo in EEPROM di 5 * 32 = 160 decimale

A seguire i seguenti byte di configurazione I/O:

Offset 0: n° io fisico associato (vedere tabella IO FISICI)

Offset 1: Byte con tipo I/O e varie
          b0: 0=IN, 1=OUT
          b1: 0=Digitale / 1=Analogico
          b2: 1=OneWire
          b3: 1=I2C
          b4: riservato al nodo
          b5: riservato al nodo
          b6: ENABLE I/O (se zero ignora lettura ingresso)
          b7: riservato al nodo

Offset 2: 8 bit LS per il valore di default delle uscite Analogico/Digitale o PullUP per gli ingressi allo startup
          b0: Valore di default per l'uscita DIGITALE o Pullup per ingresso DIGITALE
          b1: Valore di preset per OUT filtro digitale ingresso/uscita allo startup (il contatore viene settato opportunamente)
          b4..b7: Riservato al nodo, maschera per fare AND nel PWM (solo se direttiva PWMOUT attiva)

Offset 3: 2 bit MS di valore di default analogico, (valore di setup per PWM solo se direttiva PWMOUT attiva)

Offset 4: rinfreschi rete sui fronti e inversione fisica finale
          b0...b2: 3 bit 0-7 Numero di ritrasmissioni in caso di variazione fronte ON del segnale
          b3...b5: 3 bit 0-7 Numero di ritrasmissioni in caso di variazione fronte OFF del segnale
          b7 1=inversione fisica finale i/o, per scrivere 1 logico si scrive in realta 0 e si leggerà zero ma verrà presentato come 1

Offset 5: 8 bit LS di tempo di rinfresco periodico in rete in decimi di secondo

Offset 6: 8 bit MS di tempo di rinfresco periodico in rete in decimi di secondo

Offset 7: 8 bit Filtro di lettura IN/OUT digitale

Offset 8: numero funzione per PLC se opzione attiva, (mettere 0 se non si vuole funzione associata)

Offset 9: non usato

Offset 10: inizio definizione istruzioni per programma di campionamento periodico per I/O ONEWIRE o I2C che verrà richiamato ed eseguito periodicamente; questo programma rappresenta una serie di istruzioni I/O per 1W o I2C ed ha lo stesso formato dei comandi di lettura e scrittura I/O nei quali però non serve specificare board id e numero I/O. Nel primo byte programma in b0..b3 si indica quanti byte seguenti sono occupati dal programma, (0=programma nullo); se b7=1 si concatena questo programma con il programma seguente,  se b6=1 si interpreta il byte opzioni come comando di lettura, se b5=1 si indica che il byte seguente rappresenta in b0..b6 una pausa da fare in decine di microsecondi e se b7=1 indica di concatenare il valore a 7 bit del tempo con il valore a 8 bit seguente, il primo sarà LS e il secondo MS, per un massimo di 327670 us, poi seguiranno i dati per completare il comando di I/O.

Il byte seguente all'ultimo del programma (o alla serie di programmi concatenati) indica l'ingombro del programma di inizializzazione dispositivo che sarà eseguito all'avvio del nodo e sarà composto con le stesse regole degli altri programmi.

Quindi in caso di dispositivi 1W o I2C che non abbiano dei programmi associati bisognerà impostare il valore 0 all'offset 10 per indicare che non c'è programma di campionamento periodico, e valore 0 all'offset 11 per indicare che non c'è programma di inizializzazione

ESTENSIONE DEFINIZIONI SE PLC ATTIVO:

 offset 8: numero funzione per PLC se opzione attiva, (mettere 0 se non si vuole funzione associata)

poi da offset 31 a scendere si impostano i parametri per le funzioni plc, questo consente di scrivere i programmi di campionamento periodico per I2C e 1W a salire e le funzioni di plc a scendere per uno stesso I/O avendo gli inizi predefiniti in 10 e in 31.

 

 


Stampa   Email