Accedi Registrati

Login to your account

Username *
Password *
Remember Me

Create an account

Fields marked with an asterisk (*) are required.
Name *
Username *
Password *
Verify password *
Email *
Verify email *
Captcha *

Schede DL485 disponibili

DL485M con Danbus
DL485M

DL485M completa di DANBUS.

Danbus Si
PLC -
Contenitore Si
RS485 Si
I2C Si
OneWire Si
Alimentatore switching (7-24Vdc) Si
Numero GPIO totali 12
Dimensione 60x48x16mm

COMPRA a 26,90+IVA

 

Permette di essere collegata in parallelo ad altre schede della serie DL485 con distanze di centinaia di metri tramite doppino twistato.
Gli I/O sono comandabili/visibili tramite sistema domotico.
Disponibile libreria in python e Plaugin per Domoticz

DL485M con Danbus e PLC
DL485MPLC

DL485MPLC completa di DANBUS e PLC.

Danbus Si
PLC Si
Contenitore Si
RS485 Si
I2C Si
OneWire Si
Alimentatore switching (7-24Vdc) Si
Numero GPIO totali 12
Dimensione 60x48x16mm

COMPRA a 31,90+IVA

 

Permette di essere collegata in parallelo ad altre schede della serie DL485 con distanze di centinaia di metri tramite doppino twistato.
Il PLC permette la funzionalità standalone della scheda senza l'utilizzo di un sistema domotico che comunque può essere usato per monitorare e interagire con i vari I/O.
Disponibile libreria in python e Plaugin per Domoticz

DL485M Custom
DL485M1

DL485M1 è una scheda senza firmware

Danbus -
PLC -
Contenitore Si
RS485 Si
I2C Si
OneWire Si
Alimentatore switching (7-24Vdc) -
Numero GPIO totali 12
Dimensione 60x48x16mm

COMPRA a 17,50+IVA

 

Ideale per essere utilizzata per scopi custom, programmabile direttamente dal cliente.
A bordo il micro ATMEGA328PB-AU, semplice da programmare anche con Arduino.
Disponibile libreria in python e Plaugin per Domoticz

 

DL485B con Danbus
DL485B

DL485B completa di DANBUS.

Danbus Si
PLC -
Contenitore Si
RS485 Si
I2C Si
OneWire Si
Alimentatore switching (7-24Vdc) Si
Numero GPIO totali 9 di cui 3 uscite RELE
Dimensione 74x47x25mm

COMPRA a 26,80+IVA

 


Permette di essere collegata in parallelo ad altre schede della serie DL485 con distanze di centinaia di metri tramite doppino twistato.
Gli I/O sono comandabili/visibili tramite sistema domotico.
Disponibile libreria in python e Plaugin per Domoticz

DL485B con Danbus e PLC
DL485BPLC

DL485BPLC completa di DANBUS e PLC.

Danbus Si
PLC Si
Contenitore Si
RS485 Si
I2C Si
OneWire Si
Alimentatore switching (7-24Vdc) Si
Numero GPIO totali 9 di cui 3 uscite RELE
Dimensione 74x47x25mm

COMPRA a 31,90+IVA

 

Permette di essere collegata in parallelo ad altre schede della serie DL485 con distanze di centinaia di metri tramite doppino twistato.
Il PLC permette la funzionalità standalone della scheda senza l'utilizzo di un sistema domotico che comunque può essere usato per monitorare e interagire con i vari I/O.
Disponibile libreria in python e Plaugin per Domoticz

DL485B Custom
DL485B1

DL485B1 è una scheda senza firmware

Danbus -
PLC -
Contenitore -
RS485 Si
I2C Si
OneWire Si
Alimentatore switching (7-24Vdc) -
Numero GPIO totali 9 di cui 3 uscite RELE
Dimensione 74x47x25mm

COMPRA a 15,80+IVA

 

Ideale per essere utilizzata per scopi custom, programmabile dal cliente.
A bordo il micro ATMEGA328PB-AU, semplice da programmare anche con Arduino.
Disponibile libreria in python e Plaugin per Domoticz

 

DL485R con Danbus
DL485R

DL485R completa

Danbus Si
PLC -
Contenitore Si
RS485 Si
I2C Si
OneWire Si
Alimentatore switching (7-24Vdc) Si
Numero GPIO totali 8 di cui 2 uscite RELE
Dimensione 74x47x25mm

COMPRA a 27,50+IVA

 

Disponibile libreria in python e Plaugin per Domoticz
Permette di essere collegata in parallelo ad altre schede della serie DL485 con distanze di centinaia di metri tramite doppino twistato.
Gli I/O sono comandabili/visibili tramite sistema domotico.

DL485R con Danbus e PLC
DL485RPLC

DL485RPLC completa di DANBUS e PLC.

Danbus Si
PLC Si
Contenitore Si
RS485 Si
I2C Si
OneWire Si
Alimentatore switching (7-24Vdc) Si
Numero GPIO totali 8 di cui 2 uscite RELE
Dimensione 74x47x25mm

COMPRA a 32,90+IVA

 


Permette di essere collegata in parallelo ad altre schede della serie DL485 con distanze di centinaia di metri tramite doppino twistato.
Il PLC permette la funzionalità standalone della scheda senza l'utilizzo di un sistema domotico che comunque può essere usato per monitorare e interagire con i vari I/O.
Disponibile libreria in python e Plaugin per Domoticz

DL485B Custom
DL485R1

DL485R1 è una scheda senza firmware

Danbus -
PLC -
Contenitore -
RS485 Si
I2C Si
OneWire Si
Alimentatore switching (7-24Vdc) -
Numero GPIO totali 8 di cui 2 uscite RELE
Dimensione 74x47x25mm

COMPRA a 16,50+IVA

 

che può essere utilizzata per scopi custom, programmabile dal cliente.
A bordo il micro ATMEGA328PB-AU, semplice da programmare anche con Arduino.
Disponibile libreria in python e Plaugin per Domoticz

 

DL485P con Danbus
DL485P

DL485P completa di DANBUS.

Danbus Si
PLC -
Contenitore Si
RS485 Si
I2C Si
OneWire Si
Alimentatore switching (7-24Vdc) Si
Numero GPIO totali 13
Dimensione 41x31x12mm

COMPRA a 19,40+IVA

 


Permette di essere collegata in parallelo ad altre schede della serie DL485 con distanze di centinaia di metri tramite doppino twistato.
Gli I/O sono comandabili/visibili tramite sistema domotico.
Disponibile libreria in python e Plaugin per Domoticz

DL485P con Danbus e PLC
DL485PPLC

DL485RPLC completa di DANBUS e PLC.

Danbus Si
PLC Si
Contenitore Si
RS485 Si
I2C Si
OneWire Si
Alimentatore switching (7-24Vdc) Si
Numero GPIO totali 13
Dimensione 41x31x12mm

COMPRA a 25,90+IVA

 


Permette di essere collegata in parallelo ad altre schede della serie DL485 con distanze di centinaia di metri tramite doppino twistato.
Il PLC permette la funzionalità standalone della scheda senza l'utilizzo di un sistema domotico che comunque può essere usato per monitorare e interagire con i vari I/O.
Disponibile libreria in python e Plaugin per Domoticz

DL485P Custom
DL485P1

DL485P1 è una scheda senza firmware

Danbus -
PLC -
Contenitore -
RS485 Si
I2C Si
OneWire Si
Alimentatore switching (7-24Vdc) -
Numero GPIO totali 13
Dimensione 41x31x12mm

COMPRA a 8,50+IVA

 

che può essere utilizzata per scopi custom, programmabile dal cliente.
A bordo il micro ATMEGA328PB-AU, semplice da programmare anche con Arduino.
Disponibile libreria in python e Plaugin per Domoticz

Schede per domotica

DL485M board

Schede di espansione DL485x

Dispositivi disponibili per la domotica tramite board DL485

Vai alle schede DL485
protocollo DANBUS

Protocollo DANBUS

Caratteristiche e funzionamento del protocollo DANBUS

Descrizione protocollo
DL485 setupM

Configurazione schede DL485 con esempi

Esempi di configurazione delle varie funzioni delle schede DL485

Configurazione
DL485 plcM

PLC su schede DL485

Funzionalità automatiche aggiuntive su schede DL485

Configurazione
DL485 casi usoM

Casi d'uso con PLC

Esempi di come configurare le varie funzioni del PLC interno alle schede DL485

Esempi PLC
 
 

DOM19 - Espansione per Raspberry PI

DOM19 IO Expande per Raspberry PIDOM19 - Expander GPIO

Scheda espansione GPIO per Raspberry PI mod.2 / 3 / 3B / 3B+

Con DOM19 potrai collegare tutti i PIN presenti su RASPBERRY PI ai tuoi dispositivi in modo semplice e pratico. Inoltre potrai collegare sensori OneWire, I2C e dispositivi dotati di collegmento seriale.

A bordo disponibile alimentatore SWITCHING per alimentare direttamente RASPBERRY PI tramite alimentatore 13.8V con Batteria di Backup al piombo.

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.

Funzionamento PLC su schede DL485

Opzionalmente è possibile richiedere le BOARD della serie DL485 con un MINI PLC a bordo, capace di rendere intelligenti le varie uscite a seconda di eventi / trigger presenti su ingressi / a tempo e molto altro.

Tramite il PLC è possibile così rendere autonomo il funzionamento delle schede senza necessariamente doverle comandare da sistemi di supervisione domotici quali Domoticz, Home Assistence....... che potranno servire per monitorare i vari I/O ed eventualmente comandarli manualmente, oppure per affiancare il plc nella gestione delle funzioni piu complesse.

Funzioni PLC (opzionali)

Funzione di PLC associata all'uscita e calcolata automaticamente quando varia un suo ingresso digitale che puo essere anche un'altra uscita, se invece l'ingresso è analogico la valutazione viene fatta in occasione del campionamento periodico

L'uscita non viene presa in considerazione

Funzione "equal"

L'uscita ha lo stesso stato di tutti i suoi ingressi se sono uguali, resta inalterata se sono diversi, si puo impostare un ritardo di inseguimento programmabile separatamente per le transizioni dell'uscita 0->1 e 1->0. I tempi sono in centesimi di secondo (da 0 a 65534 con 65535=infinito). E' possibile cambiare l'unità di misura con la funzione "plc_time_unit" con le seguenti modalità:

  • "0.01" centesimi di secondo
  • "0.1" decimi di secondo
  • "1": secondi
  • "2.5": 2.5 secondi

Se "plc_time_unit" non è impostata, l'unità di misura è espressa in centesimi di secondo

Esempio di uscita OUT2 comandata dall'ingresso della BOARD:4, IO_LOGICO:11 con ritardo di accensione di 200 centesimi di secondo e ritardo di spegnimento di 500 centesimi

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "equal",
    "plc_linked_board_id_io_logic": [
        "4-11"
    ],
    "plc_delay_on_off": 500,
    "plc_delay_off_on": 200,
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},
"IO1": {
    "io_logic": 11,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 10,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO1",
    "description": "Ingresso IO1",
    "dtype": "Switch"
},
                

Funzione "not_equal"

L'uscita è invertita rispetto a equal

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "not_equal",
    "plc_linked_board_id_io_logic": [
        "4-11"
    ],
    "plc_delay_on_off": 150,
    "plc_delay_off_on": 50,
    "name": "OUT1",
    "description": "RELE1",
    "dtype": "Switch"
},
"IO1": {
    "io_logic": 11,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 10,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO1",
    "description": "Ingresso IO1",
    "dtype": "Switch"
},
                

Funzione "and" con 2 ingressi

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "and",
    "plc_linked_board_id_io_logic": [
        "4-11",
        "4-12"
    ],
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},
                

Funzione "nand" con 2 ingressi:

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "nand",
    "plc_linked_board_id_io_logic": [
        "4-11",
        "4-12"
    ],
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},
                

Esempio di funzione "or" a 1 ingresso

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "or",
    "plc_linked_board_id_io_logic": [
        "4-11"
    ],
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},
"IO1": {
    "io_logic": 11,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 10,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO1",
    "description": "Ingresso IO1",
    "dtype": "Switch"
},
                

Esempio "or" a 2 ingressi:

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "or",
    "plc_linked_board_id_io_logic": [
        "4-11",
        "4-12"
    ],
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},
"IO1": {
    "io_logic": 11,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 10,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO1",
    "description": "Ingresso IO1",
    "dtype": "Switch"
},
"IO2": {
    "io_logic": 12,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO2",
    "description": "Ingresso IO2",
    "dtype": "Switch"
},
                

Esempio funzione "or" con "not" sugli ingressi:

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "or",
    "plc_linked_board_id_io_logic": [
        "!4-11", // "!" permette di invertire lo stato dell'ingresso
        "!4-12" // "!" permette di invertire lo stato dell'ingresso
    ],
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},
                

Esempio di funzione "or" a 2 ingressi con inversione dell'ultimo ingresso che compare nell'elenco:

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "or",
    "plc_linked_board_id_io_logic": [
        "!4-11", // ! invertito IO 11 della scheda 4
        "4-12"
    ],
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},
                

Esempio di funzione "or" a 2 ingressi con inversione del penultimo ingresso che compare nell'elenco:

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "or",
    "plc_linked_board_id_io_logic": [
        "4-11",
        "!4-12"
    ],
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},
                

Funzione "nor" a 2 ingressi:

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "nor",
    "plc_linked_board_id_io_logic": [
        "4-11",
        "4-12"
    ],
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},
                

Funzione "xor" con 2 ingressi

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "xor",
    "plc_linked_board_id_io_logic": [
        "4-11",
        "4-12"
    ],
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},                    
                

Funzione "nxor" con 2 ingressi

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "nxor",
    "plc_linked_board_id_io_logic": [
        "4-11",
        "4-12"
    ],    
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},                             
                

Funzione "odd" (dispari) con 4 ingressi

L'uscita OUT2 sarà a 1 quando il numero di ingressi a livello logico 1 è dispari

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "odd",
    "plc_linked_board_id_io_logic": [
        "4-11",
        "4-12",
        "4-13",
        "4-14"
    ],
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},
"IO1": {
    "io_logic": 11,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 10,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO1",
    "description": "Ingresso IO1",
    "dtype": "Switch"
},
"IO2": {
    "io_logic": 12,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO2",
    "description": "Ingresso IO2",
    "dtype": "Switch"
},
"IO3": {
    "io_logic": 13,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO3",
    "description": "Ingresso IO3",
    "dtype": "Switch"
},
"IO4": {
    "io_logic": 14,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO4",
    "description": "Uscita IO4",
    "dtype": "Switch"
},
                

Funzione "even" (pari)

L'uscita OUT2 sarà a 1 quando il numero di ingressi a livello logico 1 è pari

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "even",
    "plc_linked_board_id_io_logic": [
        "4-11",
        "4-12",
        "4-13",
        "4-14"
    ],
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},
                

Funzione "toggle_on"

Inverte lo stato dell'uscita ad ogni transizione ON di uno dei 4 ingressi associati

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "toggle_on",
    "plc_linked_board_id_io_logic": [
        "4-11",
        "4-12",
        "4-13",
        "4-14"
    ],
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},
                

Funzione "toggle_off"

Inverte lo stato dell'uscita ad ogni transizione OFF di uno dei 4 ingressi associati

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "toggle_off",
    "plc_linked_board_id_io_logic": [
        "4-11",
        "4-12",
        "4-13",
        "4-14"
    ],
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},                    
                

Funzione "toggle_on_off"

Inverte lo stato dell'uscita ad ogni transizione di uno dei 4 ingressi associati

 

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "toggle_on_off",
    "plc_linked_board_id_io_logic": [
        "4-11",
        "4-12",
        "4-13",
        "4-14"
    ],
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},                    
                

 Funzione "timer"

La funzione TIMER può essere configurata con diverse modalità:

"plc_mode_timer" è un byte di 8 BIT b7:b0:

b7:b6 seleziona l'unità di misura per la scala dei tempi:

  • 0:0 tempi in centesimi di secondo
  • 0:1 decimi di secondo
  • 1:0 secondi
  • 1:1 2.5 secondi

i bit b7 e b6 possono essere sovrascritti tramite il comando "plc_time_unit": n

  • 0 = centesimi di secondo
  • 1 = decimi di secondo
  • 2 = secondi
  • 3 = 2.5 secondi

Il tempo massimo di uno stato è al massimo di 2.5 secondi * 65534 = 163835 secondi (circa 45 ore)

b5:b4 gestione degli inneschi sui fronti con timer già innescato e uscita ON. Se uscita OFF sono ignorati

  • 0:0 ignorati inneschi con timer innescato
  • 0:1 se arriva l'innesco reinizializza tempo timer
  • 1:0 se arriva innesco, somma tempo timer a tempo residuo
  • 1:1 se arriva innesco timer, cambia stato timer

b3:b2 gestione montalità di conteggio tempi

  • 0:0 = normale
  • 0:1 = uscita ferma con ingresso a 1 (in questo caso b0 indica lo stato di uscita ferma e b1 lo stato di partenza dell'uscita)
  • 1:0 = sospende conteggio con ingresso a 1
  • 1:1 = partenza timer con stato 0 in modalità normale

b1:b0 tipo di innesco timer:

  • 0:0 Innesca timer su fronte ON e innesca timer su fronte OFF
  • 0:1 Innesca su fronte ON
  • 1:0 Spegne timer su fronte OFF
  • 1:1 Innesca timer su fronte ON e spegne timer su fronte OFF

"plc_timer_n_transitions" numero massimo di commutazioni. Da 1 a 255 (0 = infinito)

"plc_time_on"  tempo ON da 0 a 65534 con 65535 = infinito

"plc_time_off"  tempo OFF da 0 a 65534 con 65535 = infinito

Esempio con  "plc_mode_timer" :1 che significa b'00000001' dove solo il b0 è a 1 che significa che il timer viene innescato sul fronte ON dei suoi ingressi

"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "timer", // funzione timer
    "plc_mode_timer": 1, // innesca su fronte ON dell'ingresso 
    "plc_timer_n_transitions": 4, // 4 transizioni prima di finire
    "plc_time_on": 50,
    "plc_time_off": 50,
    "plc_linked_board_id_io_logic": [
        "4-11",
        "4-12"
    ],
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},                    
                

Con "plc_mode_timer": 3 si innesca il timer su fronte ON e lo si stoppa sil fronte OFF

Stessi parametri di Timer.
"PC0": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "filter": 10,
    "inverted": 0,
    "plc_function": "autostart_timer", // funzione timer
    "plc_mode_timer": 0,
    "plc_time_unit": 1, // Tempi in secondi (Impostare tra 0.01, 0.1, 1 e 2.5 secondi)
    "plc_timer_n_transitions": 10, // 10 transizioni prima di finire. 0 per infinito
    "plc_time_on": 50,
    "plc_time_off": 50,
    "enable": 1,
    "name": "OUT 1",
    "description": "Autostart Timer",
    "dtype": "Switch"
},
                

"test_nio_>=_n" Numero IO per settare uscita a 1 (da 1 a 8)

"OUT1":
{
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 0,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "test_nio_>=_n",
    "plc_params": 1, // numero minimo di ingressi a 1 per uscita = 1
    "plc_linked_board_id_io_logic": ["4-11", "4-12", "4-13"],
    "name": "OUT1",
    "description": "Lampadine",
    "dtype": "Switch"
},

"IO1":
{
    "io_logic": 11,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 200,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO1",
    "description": "Ingresso IO1",
    "dtype": "Switch"
},

"IO2":
{
    "io_logic": 12,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 20,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO2",
    "description": "Ingresso IO2",
    "dtype": "Switch"
},

"IO3":
{
    "io_logic": 13,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 20,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO4",
    "description": "IO analogico",
    "dtype": "Switch"
},
                
"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 0,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "test_nio_into_n", // setta uscita a 1 se il numero degli ingressi è compreso nei limite impostato (estremi compresi)
    "plc_params": 33, // 0x21 0b00100001 b7:b4=estremo superiore, b3:b0=estremo inferiore
    "plc_linked_board_id_io_logic": [
        "4-11",
        "4-12",
        "4-13",
        "4-14"
    ],
    "name": "OUT1",
    "description": "Lampadine",
    "dtype": "Switch"
},
"IO1": {
    "io_logic": 11,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 200,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO1",
    "description": "Ingresso IO1",
    "dtype": "Switch"
},
"IO2": {
    "io_logic": 12,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 20,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO2",
    "description": "Ingresso IO2",
    "dtype": "Switch"
},
"IO3": {
    "io_logic": 13,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 20,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO4",
    "description": "IO3",
    "dtype": "Switch"
},
"IO4": {
    "io_logic": 14,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 20,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO4",
    "description": "IO4",
    "dtype": "Switch"
},
                
"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 0,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "test_schmitt_nio", // vedi descrizione
    "plc_params": 33, // 0x21 0b00100001 b7:b4=numero superiore, b3:b0=numero inferiore
    "plc_linked_board_id_io_logic": [
        "4-11",
        "4-12",
        "4-13",
        "4-14"
    ], // ingressi che comandano l'uscita
    "name": "OUT1",
    "description": "Lampadine",
    "dtype": "Switch"
},
                
"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 0,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "analog_in_=_n",
    "plc_params": 437, // Valore impostato (da 0 a 1023)
    "plc_linked_board_id_io_logic": [
        "4-12"
    ],
    "name": "OUT1",
    "description": "Lampadine",
    "dtype": "Switch"
},                    
                
"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 0,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "analog_in_>_n", // setta uscita a 1 se il numero degli ingressi è entro il limite impostato
    "plc_params": 437, // Valore soglia da 0 a 1023
    "plc_linked_board_id_io_logic": [
        "4-12"
    ],
    "name": "OUT1",
    "description": "Lampadine",
    "dtype": "Switch"
},                    
                
"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 0,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "analog_in_>=_n",
    "plc_params": 437, // Valore soglia da 0 a 1023
    "plc_linked_board_id_io_logic": [
        "4-12"
    ],
    "name": "OUT1",
    "description": "Lampadine",
    "dtype": "Switch"
},                    
                
"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 0,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "analog_in_schmitt_n",
    "plc_params": [
        600,
        100
    ], // Valore massimo e minimo (da 0 a 1023)
    "plc_linked_board_id_io_logic": [
        "4-12"
    ],
    "name": "OUT1",
    "description": "Lampadine",
    "dtype": "Switch"
},                                            
                
"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 0,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "if_analog_in1_=_analog_in2",
    "plc_linked_board_id_io_logic": [
        "4-12",
        "4-13"
    ],
    "name": "OUT1",
    "description": "Lampadine",
    "dtype": "Switch"
},                    
                
"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 0,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "if_analog_in1_>_analog_in2",
    "plc_linked_board_id_io_logic": [
        "4-12",
        "4-11"
    ], // La numerazione degli ingressi va da destra verso sinistra quindi in1 è il 4-11.
    "name": "OUT1",
    "description": "Lampadine",
    "dtype": "Switch"
},                    
                
"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 0,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "if_analog_in1_>_analog_in2",
    "plc_linked_board_id_io_logic": [
        "4-12",
        "4-11"
    ], // La numerazione degli ingressi va da destra verso sinistra quindi in1 è il 4-11.
    "name": "OUT1",
    "description": "Lampadine",
    "dtype": "Switch"
},                    
                
"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 0,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "if_analog_in1_-_analog_in2_schmitt_value",
    "plc_params": [
        500,
        100
    ], // Valore massimo e minimo (da 0 a 1023)
    "plc_linked_board_id_io_logic": [
        "4-13"
    ],
    "name": "OUT1",
    "description": "Lampadine",
    "dtype": "Switch"
},                                            
                
"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 0,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "last_change",
    "plc_linked_board_id_io_logic": [
        "4-11",
        "4-12",
        "4-13",
        "4-14"
    ],
    "name": "OUT1",
    "description": "Lampadine",
    "dtype": "Switch"
},                    
                
"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 0,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "last_change_all",
    "plc_linked_board_id_io_logic": [
        "4-11",
        "4-12",
        "4-13",
        "4-14"
    ],
    "name": "OUT1",
    "description": "Lampadine",
    "dtype": "Switch"
},                    
                
"VIRT1": {
    "io_logic": 2,
    "direction": "output",
    "io_type": "virtual", // uscita virtuale
    "default_startup_value": 0,
    "time_refresh": 10,
    "enable": 1,
    "plc_function": "analog_in_+_n",
    "plc_params": 100, // numero da sommare al valore dell'ingresso analogico
    "plc_linked_board_id_io_logic": [
        "4-12"
    ],
    "name": "VIRT1",
    "description": "Variabile virtuale 1",
    "dtype": "Switch"
},
                
"VIRT1": {
    "io_logic": 2,
    "direction": "output",
    "io_type": "virtual",
    "default_startup_value": 0,
    "time_refresh": 10,
    "enable": 1,
    "plc_function": "analog_in_-_n",
    "plc_params": 100, // numero da sottrarre al valore dell'ingresso analogico
    "plc_linked_board_id_io_logic": [
        "4-12"
    ],
    "name": "VIRT1",
    "description": "Variabile virtuale 1",
    "dtype": "Switch"
},                    
                
"VIRT1": {
    "io_logic": 2,
    "direction": "output",
    "io_type": "virtual",
    "default_startup_value": 0,
    "time_refresh": 10,
    "enable": 1,
    "plc_function": "analog_in_*_n",
    "plc_params": 10,
    "plc_linked_board_id_io_logic": [
        "4-12"
    ],
    "name": "VIRT1",
    "description": "Variabile virtuale 1",
    "dtype": "Switch"
},                    
                
"VIRT1": {
    "io_logic": 2,
    "direction": "output",
    "io_type": "virtual",
    "default_startup_value": 0,
    "time_refresh": 10,
    "enable": 1,
    "plc_function": "analog_in_/_n",
    "plc_params": 10,
    "plc_linked_board_id_io_logic": [
        "4-12"
    ],
    "name": "VIRT1",
    "description": "Variabile virtuale 1",
    "dtype": "Switch"
},
        
"VIRT1": {
    "io_logic": 2,
    "direction": "output",
    "io_type": "virtual",
    "default_startup_value": 0,
    "time_refresh": 10,
    "enable": 1,
    "plc_function": "analog_in_%_n",
    "plc_params": 10,
    "plc_linked_board_id_io_logic": [
        "4-12"
    ],
    "name": "VIRT1",
    "description": "Variabile virtuale 1",
    "dtype": "Switch"
},                    
                
"VIRT1": {
    "io_logic": 2,
    "direction": "output",
    "io_type": "virtual",
    "default_startup_value": 0,
    "time_refresh": 10,
    "enable": 1,
    "plc_function": "analog_in_min_n",
    "plc_params": 256,
    "plc_linked_board_id_io_logic": [
        "4-12"
    ],
    "name": "VIRT1",
    "description": "Variabile virtuale 1",
    "dtype": "Switch"
},                    
                
"VIRT1": {
    "io_logic": 2,
    "direction": "output",
    "io_type": "virtual",
    "default_startup_value": 0,
    "time_refresh": 10,
    "enable": 1,
    "plc_function": "analog_in_max_n",
    "plc_params": 256,
    "plc_linked_board_id_io_logic": [
        "4-12"
    ],
    "name": "VIRT1",
    "description": "Variabile virtuale 1",
    "dtype": "Switch"
},                    
                
"VIRT1": {
    "io_logic": 2,
    "direction": "output",
    "io_type": "virtual",
    "default_startup_value": 0,
    "time_refresh": 10,
    "enable": 1,
    "plc_function": "analog_in1_+_analog_in2",
    "plc_linked_board_id_io_logic": [
        "4-12",
        "4-13"
    ],
    "name": "VIRT1",
    "description": "Variabile virtuale 1",
    "dtype": "Switch"
},                    
                
"VIRT1": {
    "io_logic": 2,
    "direction": "output",
    "io_type": "virtual",
    "default_startup_value": 0,
    "time_refresh": 10,
    "enable": 1,
    "plc_function": "analog_in1_-_analog_in2",
    "plc_linked_board_id_io_logic": [
        "4-12",
        "4-13"
    ], // Valore uscita = "4-13" - "4-12"
    "name": "VIRT1",
    "description": "Variabile virtuale 1",
    "dtype": "Switch"
},
                
"VIRT1": {
    "io_logic": 2,
    "direction": "output",
    "io_type": "virtual",
    "default_startup_value": 0,
    "time_refresh": 10,
    "enable": 1,
    "plc_function": "analog_in1_*_analog_in2",
    "plc_linked_board_id_io_logic": [
        "4-12",
        "4-13"
    ],
    "name": "VIRT1",
    "description": "Variabile virtuale 1",
    "dtype": "Switch"
},                    
                
"VIRT1": {
    "io_logic": 2,
    "direction": "output",
    "io_type": "virtual",
    "default_startup_value": 0,
    "time_refresh": 10,
    "enable": 1,
    "plc_function": "analog_in1_/_analog_in2",
    "plc_linked_board_id_io_logic": [
        "4-13",
        "4-12"
    ], // Valore uscita = "4-12" / "4-13"
    "name": "VIRT1",
    "description": "Variabile virtuale 1",
    "dtype": "Switch"
},                    
                
"VIRT1": {
    "io_logic": 2,
    "direction": "output",
    "io_type": "virtual",
    "default_startup_value": 0,
    "time_refresh": 10,
    "enable": 1,
    "plc_function": "analog_in1_%_analog_in2",
    "plc_linked_board_id_io_logic": [
        "4-13",
        "4-12"
    ], // Valore uscita = "4-12" % "4-13"
    "name": "VIRT1",
    "description": "Variabile virtuale 1",
    "dtype": "Switch"
},                    
                
"VIRT1": {
    "io_logic": 2,
    "direction": "output",
    "io_type": "virtual",
    "default_startup_value": 0,
    "time_refresh": 10,
    "enable": 1,
    "plc_function": "analog_in1_min_analog_in2",
    "plc_linked_board_id_io_logic": [
        "4-13",
        "4-12"
    ], // Valore uscita = "4-12" - "4-13"
    "name": "VIRT1",
    "description": "Variabile virtuale 1",
    "dtype": "Switch"
},                    
                
"VIRT1": {
    "io_logic": 2,
    "direction": "output",
    "io_type": "virtual",
    "default_startup_value": 0,
    "time_refresh": 10,
    "enable": 1,
    "plc_function": "analog_in1_max_analog_in2",
    "plc_linked_board_id_io_logic": [
        "4-13",
        "4-12"
    ], // Valore uscita = "4-13" - "4-12"
    "name": "VIRT1",
    "description": "Variabile virtuale 1",
    "dtype": "Switch"
},                    
                
 
Triggercampio       passare una lista ingressi, triggera su fronte on di ogni ingresso, passare numero io logico su cui comandare il campionamento, esempio si vuole campionare un sensore i2c oltre che a tempo anche su richiesta di un ingresso.
 
 
Byte counter_mode:
b7:b6: unità di misura del tempo dopo il quale il risultato viene azzerato
0:0 centesimi di secondo
0:1 decimi di secondo
1:0 secondi
1:1 2.5 secondi
b5:b4 modalità comunicazione del risultato (solo se si usa la modalità a tempo) altrimenti ogni impulso sarà anche inviato in rete
0:0 si aggiorna il dato a tempo scaduto o prima se viene superato il conteggio relativo al tempo precedente
0:1 aggiorna il risultato solo a tempo scaduto. In ogni caso, la lettura del risultato a tempo non scaduto fornisce il dato del conteggio precedente
1:0 aggiorna il risultato solo a tempo scaduto e solo se il risultato attuale è maggiore del precedente (ricava il massimo)
1:1 aggiorna il risultato solo a tempo scaduto e solo se il risultato attuale è minore del precedente (ricava il minimo)
b3 non usato
b2    0: contatore 16bit circolare. Arrivato al massimo o al minimo, ricomincia
1: il contatore rimane agli estremi 65535 o a 0
b1 non usato
b0: 0: conta solo fronti ON
     1: conta fronti ON e OFF
 
La modalità a tempo si ottiene impostando il byte "timeout_counter" LS e MS
  • 0. = escluso
  • 65535 = escluso
La modalità a tempo si ottiene impostando il byte "counter_filter"
  • Attualmente non usato

 

Esempio di contatore semplice con conteggio di tutti i fronti ON

"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 0,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "counter_up",
    "counter_mode": 0, // contatore semplice
    "counter_filter": 0, // non usato
    "timeout_counter": 0, // escluso
    "plc_linked_board_id_io_logic": [
        "4-11"
    ],
    "name": "OUT1",
    "description": "Contatore",
    "dtype": "Switch"
},
"IO1": {
    "io_logic": 11,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 10,
    "time_refresh": 3000,
    "n_refresh_on": 0,
    "n_refresh_off": 0,
    "enable": 1,
    "name": "IO1",
    "description": "Ingresso IO1",
    "dtype": "Switch"
},
            

Esempio di contatore che si azzera ogni 10 secondi (timeout_counter = 1000 centesimi).

"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 0,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "counter_up",
    "counter_mode": 16, // Aggiorna risultato ogni tot secondi, tempi in centesimi
    "counter_filter": 0, // non usato
    "counter_timeout": 1000, // 10 secondi cioè 10*100=1000 centesimi
    "plc_linked_board_id_io_logic": [
        "4-11"
    ],
    "name": "OUT1",
    "description": "Contatore",
    "dtype": "Switch"
}, 
            
Esempio di conteggio all'indietro con valore precaricato. Arrivato a 0 riprende da 65535
"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 100, // Valore di partenza del contatore
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "counter_dw",
    "counter_mode": 0, // contatore normale
    "counter_filter": 0, // non usato
    "counter_timeout": 0,
    "plc_linked_board_id_io_logic": [
        "4-11"
    ],
    "name": "OUT1",
    "description": "Contatore",
    "dtype": "Switch"
},             
            
 
Esempio di conteggio all'indietro con valore precaricato. Arrivato a 0 resta a 0
 
"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 20,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "counter_dw",
    "counter_mode": 4, // contatore all'indietro con STOP su 0
    "counter_filter": 0, // non usato
    "counter_timeout": 0, // 5 secondi
    "plc_linked_board_id_io_logic": [
        "4-11"
    ],
    "name": "OUT1",
    "description": "Contatore",
    "dtype": "Switch"
},                
            
Esempio di contatore UP / DOWN con 2 ingressi: si possono collegare piu' ingressi e partendo da destra sono alternativamente UP e DOWN
 
"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 10,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "counter_up",
    "counter_mode": 0, // Aggiorna risultato ogni 10 secondi
    "counter_filter": 0, // non usato
    "counter_timeout": 0, // 5 secondi
    "plc_linked_board_id_io_logic": [
        "4-11",
        "4-11"
    ], // lo stesso ingresso usato 2 volte per avere incremento di 2. (E' possibile usare fino a 8 ingressi)
    "name": "OUT1",
    "description": "Contatore",
    "dtype": "Switch"
},                
            
 
Byte counter_mode:
  • b7:b6 unità di misura del tempo per il conteggio
    • 0:0 centesimi di secondo
    • 0:1 decimi di secondo
    • 1:0 secondi
    • 1:1 2.5 secondi
  • b5:b4 modo del filtro del risultato
    • 0:0 memoria del valore precedente e si aggiorna dato con media col precedente
    • 0:1 memoria del valore precedente e si aggiorna dato con periodo ottenuto
    • 1:0 memoria del valore precedente e si aggiorna dato con periodo ottenuto solo se maggiore (ricava il massimo)
    • 1:1 1:0 memoria del valore precedente e si aggiorna dato con periodo ottenuto solo se minore (ricava il minimo)
     
  • b3 1: azzera tempo ad ogni start a conteggio finito - 0: si somma tempo precedente
  • b2 1: azzera tempo ad ogni start a conteggio in corso
  • b1 1: considera end come nuovo start
  • b0 0: end su fronte OFF - 1: end su fronte ON

Byte counter_filter: non implementato

word counter_timeout

byte counter_mintime: tempo minimo per il calcolo del risulrato

Esempio di misura della durata dell'ingresso tra fronte ON e  fronte OFF (tempo ON di un ingresso)

"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 10,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "time_meter",
    "counter_mode": 24, // Aggiorna risultato ogni 10 secondi
    "counter_filter": 0, // non usato
    "counter_timeout": 0, // 5 secondi
    "plc_linked_board_id_io_logic": [
        "4-11"
    ],
    "name": "OUT1",
    "description": "Contatore",
    "dtype": "Switch"
},
        

Esempio misura del tempo tra 2 fronti ON (tempo impiegato per consumare 1 Watt/ora sul contatore dell'ENEL)

"OUT1":
{
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 10,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "time_meter",
    "counter_mode": 25, // Aggiorna risultato ogni 10 secondi
    "counter_filter": 0, // non usato
    "counter_timeout": 0, // 5 secondi
    "plc_linked_board_id_io_logic": ["4-11"],
    "name": "OUT1",
    "description": "Contatore",
    "dtype": "Switch"
},            
        
Byte powermeter:
  • b7:b6 unità di misura del tempo per il conteggio
    • 0:0 centesimi di secondo
    • 0:1 decimi di secondo
    • 1:0 secondi
    • 1:1 2.5 secondi
  • b5:b4 modo del filtro del risultato
    • 0:0 memoria del valore precedente e si aggiorna dato con media col precedente
    • 0:1 memoria del valore precedente e si aggiorna dato con periodo ottenuto
    • 1:0 memoria del valore precedente e si aggiorna dato con periodo ottenuto solo se maggiore (ricava il massimo)
    • 1:1 1:0 memoria del valore precedente e si aggiorna dato con periodo ottenuto solo se minore (ricava il minimo)
     
  • b3 1: azzera tempo ad ogni start a conteggio finito - 0: si somma tempo precedente
  • b2 1: azzera tempo ad ogni start a conteggio in corso
  • b1 1: considera end come nuovo start
  • b0 0: end su fronte OFF - 1: end su fronte ON

Byte counter_filter: non implementato

word counter_timeout

byte counter_mintime: tempo minimo per il calcolo del risulrato

Esempio di calcolo della potenza misurata dal contatore ENEL domestico: il LED presente emette 1 lampo ogni wattora consumato. Misurando il periodo in secondi la potenza in Watt vale 3600/periodo. Siccome il calcolo viene fatto tra numeri interi, per misurare con precisione i periodi brevi (quindi potenze alte), conviene usare l'unità di misura del tempo in decimi o centesini di secondo. Usando i decimi, la formula diventa 36000 / periodo. Volendo usare i centesimi, la formula diventerebbe 360000 / periodo, ma il numeratore non può essere contenuto nei 16 bit previsti (65535) quindi si può usare come numeratore il numero 60000 ottenendo così 1/6 della potenza reale.
Esempio
 
"OUT1": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 0,
    "inverted": 1,
    "filter": 127,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "powermeter",
    "counter_mode": 27, // b11011 memoria del valore precendente e aggiorna dato a periodo ottenuto, azzera tempo ad ogni start a conteggio finito. Considera end come nuovo start, end si fronte ON
    "powermeter_k": 60000, // numeratore (nel caso del contatore enel, il risultato è 1/6 della potenza attuale)
    "counter_filter": 0, // non usato
    "counter_timeout": 0, // 5 secondi
    "plc_linked_board_id_io_logic": [
        "4-11"
    ],
    "name": "OUT1",
    "description": "Contatore",
    "dtype": "Switch"
},            
        
 

 

 

 

DL485 - Espansione per domotica con DANBUS

DL485x sono delle schede di espansione per realizzare sistemi domotici.

Tramite semplici script è possibile interfacciare queste espansioni ad altri sistemi domotici.

DL485M
DL485 MAXI

DL485B
DL485 BOX

DL485R
DL485 RESET

DL485P
DL485 PCB

La comunicazione su RS485 avviene tramite protocollo DANBUS multimaster che gestisce una rete di nodi paritari (con stessa priorità) senza necessità di un nodo master, con la possibilità per ogni nodo di entrare e uscire dalla rete senza collisioni e senza stallo.

Domocontrol

Sistema DomoControl

Permette l'automazione completa della casa / bar / serre / ambienti tramite l'abbinamento di schede "Domo One", Raspberry PI3, il tutto controllato tramite il software Free/Open Source Domoticz.

Il progetto richiede:

  • Raspberry PI3 come minicomputer
  • Eventuali schede di interfaccia interconnesse tramite RS485
  • Eventuali sensori connessi tramite I2C / OneWire
  • Eventuali altri sensori / relè Wireless
  • Software Domoticz (http://domoticz.com/)
  • Script Python per l'interfacciamento tra le varie schede e domoticz

main

Per collegarsi all'interfaccia Domoticz è sufficiente un semplice browser. I vari menu sono responsive per un'ottima visione anche con display di piccole dimensioni come gli SmartPhone.

Installazione e Configurazione Schede DL485 con esempi

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 485 e seriale RS232
  • Abilitazione echo BUS485 in RS232
  • Reset programmazione I/O e set numero massimo di nodi (board) a 63

Domoticz Demo

Quando disponibile, è possibile collegarsi con una versione dimostrativa di DOMOTICZ.

Domoticz Demo

DEMO

Username: user

Password: user

 

Funzionamento PLC su schede DL485 Casi d'uso

CASI D'USO funzionalità schede DL485 (paragrafo in corso di definizione)

 esempio di alcuni casi d'uso che si possono soddisfare utilizzando le funzioni plc

 
Si definiscono un ingresso e un uscita digitale con la fuznione PLC associata "equal". Nell'esempio l'OUT2 con io_logic 1 è comandata dall'ingresso IO1 con io_logic 11 della board 4.
 
"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 0, // stato dell'uscita all'avvio della scheda
    "inverted": 1,
    "time_refresh": 30,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "equal", // l'uscita è uguale allo stato dell'ingresso
    "plc_linked_board_id_io_logic": [
        "4-11"
    ], // l'ingresso che comanda l'uscita: board 4 e io_logic 11
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},
"IO1": {
    "io_logic": 11,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 100,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO1",
    "description": "Ingresso IO1",
    "dtype": "Switch"
},
 
 
Si definiscono un ingresso e un uscita digitale con la funzione PLC associata "timer" e modalità timer  con innesco su fronte ON e spegnimento su fronte OFF . Nell'esempio l'OUT2 con io_logic 1 è comandata dall'ingresso IO1 con io_logic 11 della board 4.
"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "timer",
    "plc_mode_timer": 131, // 10 = b10000011:  innesca timer su fronte ON e spegne su fronte OFF. Conteggio in secondi
    "plc_timer_n_transitions": 2,
    "plc_time_on": 10, // tempo timer di 10 secondi
    "plc_time_off": 0,
    "plc_linked_board_id_io_logic": [
        "4-11"
    ],
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},
"IO1": {
    "io_logic": 11,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 200,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO1",
    "description": "Ingresso IO1",
    "dtype": "Switch"
},
 
Si definiscono un ingresso e un uscita digitale con la funzione PLC associata "timer" e modalità timer con innesco su fronte ON e innesco su fronte OFF . Nell'esempio l'OUT2 con io_logic 1 è comandata dall'ingresso IO1 con io_logic 11 della board 4.
"OUT2": {
    "io_logic": 1,
    "direction": "output",
    "io_type": "digital",
    "default_startup_value": 1,
    "inverted": 1,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "plc_function": "timer",
    "plc_mode_timer": 128, // 10 = b10000000:  innesca timer su fronte ON e innesca timer su fronte OFF. Conteggio in secondi
    "plc_timer_n_transitions": 2,
    "plc_time_on": 10, // tempo timer di 10 secondi
    "plc_time_off": 0,
    "plc_linked_board_id_io_logic": [
        "4-11"
    ],
    "name": "OUT2",
    "description": "RELE2",
    "dtype": "Switch"
},
"IO1": {
    "io_logic": 11,
    "direction": "input",
    "io_type": "digital",
    "pullup": 1,
    "filter": 200,
    "time_refresh": 3000,
    "n_refresh_on": 1,
    "n_refresh_off": 1,
    "enable": 1,
    "name": "IO1",
    "description": "Ingresso IO1",
    "dtype": "Switch"
},
Viene utilizzata una uscita virtuale (OUT2) che da il consenso allo spegnimento una volta trascorso un tempo di 5 secondi dall'accensione di OUT1.
"OUT1":
{
"io_logic": 1,
"direction": "output",
"io_type": "digital",
"default_startup_value": 1,
"inverted": 1,
"filter": 127,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"plc_function": "equal",
"plc_delay_on_off": 0,
"plc_delay_off_on": 0,
"plc_linked_board_id_io_logic": ["4-11", "4-2"],
"name": "OUT1",
"description": "Lampadine",
"dtype": "Switch"
}, "OUT2":
{
"io_logic": 2,
"direction": "output",
"io_type": "digital",
"default_startup_value": 1,
"inverted": 1,
"filter": 0,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"plc_function": "equal",
"plc_delay_on_off": 1000, // tempo in centesimi di secondo
"plc_delay_off_on": 0,
"plc_xor_input": 1, // inverte l'ingresso IO1
"plc_linked_board_id_io_logic": ["4-1"],
"name": "OUT2",
"description": "Uscita virtuale",
"dtype": "Switch"
}, "IO1":
{
"io_logic": 11,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 200,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO1",
"description": "Ingresso IO1",
"dtype": "Switch"
},
Viene utilizzata una uscita virtuale (OUT2) che da il consenso all'accensione insieme all'ingresso IO1 una volta trascorso un tempo di 10 secondi dallo spegnimento di OUT1.
"OUT1":
{
"io_logic": 1,
"direction": "output",
"io_type": "digital",
"default_startup_value": 1,
"inverted": 1,
"filter": 127,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"plc_function": "equal",
"plc_delay_on_off": 0,
"plc_delay_off_on": 0,
"plc_linked_board_id_io_logic": ["4-11", "4-2"],
"name": "OUT1",
"description": "Lampadine",
"dtype": "Switch"
}, "OUT2":
{
"io_logic": 2,
"direction": "output",
"io_type": "digital",
"default_startup_value": 1,
"inverted": 1,
"filter": 0,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"plc_function": "equal",
"plc_delay_on_off": 0,
"plc_delay_off_on": 1000, // tempo in centesimi di secondo
"plc_xor_input": 1, // inverte l'ingresso IO1
"plc_linked_board_id_io_logic": ["4-1"],
"name": "OUT2",
"description": "Uscita virtuale",
"dtype": "Switch"
}, "IO1":
{
"io_logic": 11,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 200,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO1",
"description": "Ingresso IO1",
"dtype": "Switch"
},
 
Viene utilizzata una uscita virtuale (OUT2) che da il consenso all'accensione e allo spegnimento insieme all'ingresso IO1 garantendo un tempo minimo ON di 10 secondi e minimo OFF di 15 secondi
"OUT1":
{
"io_logic": 1,
"direction": "output",
"io_type": "digital",
"default_startup_value": 1,
"inverted": 1,
"filter": 127,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"plc_function": "equal",
"plc_delay_on_off": 0,
"plc_delay_off_on": 0,
"plc_linked_board_id_io_logic": ["4-11", "4-2"],
"name": "OUT1",
"description": "Lampadine",
"dtype": "Switch"
}, "OUT2":
{
"io_logic": 2,
"direction": "output",
"io_type": "digital",
"default_startup_value": 1,
"inverted": 1,
"filter": 0,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"plc_function": "equal",
"plc_delay_on_off": 1500, // tempo in centesimi di secondo
"plc_delay_off_on": 1000, // tempo in centesimi di secondo
"plc_xor_input": 1, // inverte l'ingresso IO1
"plc_linked_board_id_io_logic": ["4-1"],
"name": "OUT2",
"description": "Uscita virtuale",
"dtype": "Switch"
}, "IO1":
{
"io_logic": 11,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 200,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO1",
"description": "Ingresso IO1",
"dtype": "Switch"
},
 
Si definiscono 3 ingressi e un uscita digitale con la funzione "xor". Nell'esempio l'OUT2 con io_logic 1 è comandata dagli ingressi IO1, IO2 e IO3
"OUT2":
{
"io_logic": 1,
"direction": "output",
"io_type": "digital",
"default_startup_value": 1,
"inverted": 1,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"plc_function": "xor",
"plc_linked_board_id_io_logic": ["4-11", "4-12", "4-13"],
"name": "OUT2",
"description": "RELE2",
"dtype": "Switch"
}, "IO1":
{
"io_logic": 11,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 200,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO1",
"description": "Ingresso IO1",
"dtype": "Switch"
}, "IO2":
{
"io_logic": 12,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 20,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO2",
"description": "Ingresso IO2",
"dtype": "Switch"
}, "IO3":
{
"io_logic": 13,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 20,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO3",
"description": "Ingresso IO3",
"dtype": "Switch"
},
 
 
Si definiscono 3 ingressi e un uscita digitale con la funzione "toggle_off". Nell'esempio l'OUT2 con io_logic 1 è comandata dalgli ingressi IO1, IO2 e IO3. Viene usato la funzione "toggle_off" anzichè "toggle_on" perché gli ingressi sono impostati con "pullup" a 1.
 
"OUT2":
{
"io_logic": 1,
"direction": "output",
"io_type": "digital",
"default_startup_value": 1,
"inverted": 1,
"filter": 127,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"plc_function": "toggle_off",
"plc_linked_board_id_io_logic": ["4-11", "4-12", "4-13"],
"name": "OUT2",
"description": "RELE2",
"dtype": "Switch"
}, "IO1":
{
"io_logic": 11,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 200,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO1",
"description": "Ingresso IO1",
"dtype": "Switch"
}, "IO2":
{
"io_logic": 12,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 20,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO2",
"description": "Ingresso IO2",
"dtype": "Switch"
}, "IO3":
{
"io_logic": 13,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 20,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO3",
"description": "Ingresso IO3",
"dtype": "Switch"
},
 
 
Si definiscono 3 ingressi e un uscita digitale con la funzione PLC associata "timer" e modalità timer con innesco su fronte ON e misura dei tempi in secondi . Nell'esempio l'OUT2 con io_logic 1 è comandata dalgli ingressi IO1, IO2, IO3
"OUT2":
{
"io_logic": 1,
"direction": "output",
"io_type": "digital",
"default_startup_value": 1,
"inverted": 1,
"filter": 127,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"plc_function": "timer",
"plc_mode_timer": 129, // Timer innescato su fronte ON e con impostazione del tempo in secondi
"plc_timer_n_transitions": 2,
"plc_time_on": 20, // 20 secondi per tempo a ON
"plc_time_off": 0,
"plc_linked_board_id_io_logic": ["4-11", "4-12", "4-13"],
"name": "OUT2",
"description": "RELE2",
"dtype": "Switch"
}, "IO1":
{
"io_logic": 11,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 200,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO1",
"description": "Ingresso IO1",
"dtype": "Switch"
}, "IO2":
{
"io_logic": 12,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 20,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO2",
"description": "Ingresso IO2",
"dtype": "Switch"
}, "IO3":
{
"io_logic": 13,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 20,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO3",
"description": "Ingresso IO3",
"dtype": "Switch"
},
 
Si definiscono 3 ingressi e un uscita digitale con la funzione PLC associata "timer" e modalità timer con innesco su fronte ON con reinizializzazione del timer su fronte ON e misura dei tempi in secondi . Nell'esempio l'OUT2 con io_logic 1 è comandata dalgli ingressi IO1, IO2, IO3
"OUT2":
{
"io_logic": 1,
"direction": "output",
"io_type": "digital",
"default_startup_value": 1,
"inverted": 1,
"filter": 127,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"plc_function": "timer",
"plc_mode_timer": 145, // b'10010001' b7:1 timer in secondi, b4:1 reinizializzazione timer su fronte ON, b0:1 innesco su fronte ON
"plc_timer_n_transitions": 2,
"plc_time_on": 20, // tempo ON a 20 secondi
"plc_time_off": 0,
"plc_linked_board_id_io_logic": ["4-11", "4-12", "4-13"],
"name": "OUT2",
"description": "RELE2",
"dtype": "Switch"
}, "IO1":
{
"io_logic": 11,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 200,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO1",
"description": "Ingresso IO1",
"dtype": "Switch"
}, "IO2":
{
"io_logic": 12,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 20,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO2",
"description": "Ingresso IO2",
"dtype": "Switch"
}, "IO3":
{
"io_logic": 13,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 20,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO3",
"description": "Ingresso IO3",
"dtype": "Switch"
},
 
Si definiscono 3 ingressi e un uscita digitale con la funzione PLC associata "timer" e modalità timer con innesco su fronte ON con somma del timer ad ogni fronte ON e misura dei tempi in secondi . Nell'esempio l'OUT2 con io_logic 1 è comandata dalgli ingressi IO1, IO2, IO3
"OUT2":
{
"io_logic": 1,
"direction": "output",
"io_type": "digital",
"default_startup_value": 1,
"inverted": 1,
"filter": 127,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"plc_function": "timer",
"plc_mode_timer": 161,  // 0b10100001  b5:1 somma il tempo timer al tempo residuo ogni volta che c'è un fronte ON
"plc_timer_n_transitions": 2,
"plc_time_on": 60,
"plc_time_off": 0,
"plc_linked_board_id_io_logic": ["4-11", "4-12", "4-13"],
"name": "OUT2",
"description": "RELE2",
"dtype": "Switch"
}, "IO1":
{
"io_logic": 11,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 200,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO1",
"description": "Ingresso IO1",
"dtype": "Switch"
}, "IO2":
{
"io_logic": 12,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 20,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO2",
"description": "Ingresso IO2",
"dtype": "Switch"
}, "IO3":
{
"io_logic": 13,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 20,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO3",
"description": "Ingresso IO3",
"dtype": "Switch"
},
 
 
"OUT1":
{
"io_logic": 1,
"direction": "output",
"io_type": "digital",
"default_startup_value": 0,
"inverted": 1,
"filter": 127,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"plc_function": "timer",
"plc_timer_n_transitions": 2, // numero trasnsioni ON / OFF
"plc_mode_timer": 49, // innesca su fronte ON e spegne se timer innescato
"plc_xor_input": 3, // inverte l'ingresso IO1 così innesca su fronte OFF
"plc_time_on": 1000, // tempo MAX ON 10 secondi
"plc_time_off": 1,
"plc_linked_board_id_io_logic": ["4-11", "4-12"],
"name": "OUT1",
"description": "Lampadine",
"dtype": "Switch"
}, "IO1":
{
"io_logic": 11,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 200,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO1",
"description": "Ingresso IO1",
"dtype": "Switch"
}, "IO2":
{
"io_logic": 12,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 20,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO2",
"description": "Ingresso IO2",
"dtype": "Switch"
},
"OUT1":
{
"io_logic": 1,
"direction": "output",
"io_type": "digital",
"default_startup_value": 0,
"inverted": 1,
"filter": 127,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"plc_function": "timer",
"plc_timer_n_transitions": 6, // 6 transizioni in totale ON/OFF di cui 3 ON da 10 secondi e 3 da 2 decimi di secondo
"plc_mode_timer": 1, // innesca su fronte ON
"plc_xor_input": 3, // inverte l'ingresso IO1 e IO2 così innesca su fronte OFF
"plc_time_on": 1000, // tempo ON di 10 secondi (1000 centesini di secondo)
"plc_time_off": 20, // tempo OFF di 2 decimi di secondo
"plc_linked_board_id_io_logic": ["4-11", "4-12"], // inverte lo stato degli ingressi
"name": "OUT1",
"description": "Lampadine",
"dtype": "Switch"
}, "IO1":
{
"io_logic": 11,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 200,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO1",
"description": "Ingresso IO1",
"dtype": "Switch"
}, "IO2":
{
"io_logic": 12,
"direction": "input",
"io_type": "digital",
"pullup": 1,
"filter": 20,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"name": "IO2",
"description": "Ingresso IO2",
"dtype": "Switch"
},
"OUT1":
{
"io_logic": 1,
"direction": "output",
"io_type": "digital",
"default_startup_value": 0,
"inverted": 1,
"filter": 127,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"plc_function": "or", // funzione "or"
"plc_linked_board_id_io_logic": ["1-5"], // uscita comandata da ingresso remoto su board:1 - io_logic:5
"name": "OUT1",
"description": "LED SPIA",
"dtype": "Switch"
},
"OUT1":
{
"io_logic": 1,
"direction": "output",
"io_type": "digital",
"default_startup_value": 0,
"inverted": 1,
"filter": 127,
"time_refresh": 3000,
"n_refresh_on": 1,
"n_refresh_off": 1,
"enable": 1,
"plc_function": "timer",
"plc_timer_n_transitions": 0, // infinito
"plc_mode_timer": 6, // b110 uscita ferma sullo 0 con IO a 1 e partenza con 1 quando IO va a 0
"plc_time_on": 50, // tempo ON di 50 centesimi di secondo
"plc_time_off": 50, // tempo OFF di 50 centesimi di secondo
"plc_linked_board_id_io_logic": ["7-5"],  // IO da replicare lampeggiando
"name": "OUT1",
"description": "Lampadine",
"dtype": "Switch"
},
"TEMP_ATMEGA":
{
"io_logic": 8,
"direction": "input",
"io_type": "temp_atmega",
"time_refresh": 600,
"enable": 1,
"name": "TEMP_ATMEGA",
"description": "Temperatura Board Micro",
"dtype": "Temperature"
},

Installare DOMOTICZ

domoticz screen1SDOMOTICZ è un software libero e maturo per la gestione della domotica. Permette la gestione di sensori, interruttori, meteo, creazione di scenari e molto altro. E' inoltre compatibili con molti dispositivi presenti in commercio.

 

L'installazione su Raspberry Pi con Raspbian è molto semplice e preve pochi e semplici passi:

DOM14 - Rele X4 Expander

4X Rele Expander

DOM14 è un dispositivo che permette di comandare fino a 4 carichi con potenze fino a 3A e tensione fino a 230Vac grazie ai relè interni.

E' particolarmente indicato in abbinamento a DOM13 e al sistema domotico completo DOM15.

Uso dei GPIO tramite DOMOTICZ

 Raspberry Pi versione 3 dispone di un connettore (pettine maschio doppio da 2x20 poli) dove sono collegati, oltre all'alimentazione 5V, 3.3V e 0V) vari pin di Input e Output chiamati GPIO.

Tramite DOMOTICZ è possibile interagire con questi PIN e quindi poter comandare LED e relè per accendere lampadine, sirene e altri dispoitivi.

Collegamento Telecamere IP su Domoticz

Il sistema domotico DomoOne, basato su Domoticz, è capace di leggere le immagini di telecamere IP quando avvengono degli eventi particolari impostati in fase di programmazione e inviarle tramite email.

IPC101DH  IPC102DH  IPC103DH  IPC104DH  IPC105DH 

Risulta utile ricevere le immagini in molti casi come ad esempio quando, in nostra assenza, qualcuno suona il campanello.

Raspberry Expander

DOM13ESDOM13ESDOM13 è una scheda di espansione da applicare su Raspberry Pi 2 e 3 ed è stata progettata per facilitare il collegamento con sensori, schede slave dotate di RS485, pusanti/interruttori/relè come ingressi/uscite.

Con DOM13 è possibile collegare:

  • Sensori con interfaccia I2C;
  • Sensori 1 Wire;
  • Schede periferiche dotate di RS485;
  • Eccitare direttamente le bobine per un massimo di 6 relè o in alternativa collegare fino a 6 pulsanti/interruttori (anche misti tra IN e OUT). Sono presenti anche 6 LED che indicano lo stato dei 6 I/O (IN / OUT).