Modbus è un semplice protocollo di comunicazione, spesso utilizzato per l’integrazione di dispositivi HVAC. Utilizza una comunicazione master-slave, in cui sulla stessa linea di bus possono essere collegati diversi dispositivi; ciascuno deve avere uno Slave ID univoco e il master interroga sempre i singoli slave, che rispondono.

Topologia Master - Slave

Nella maggior parte dei casi TapHome viene utilizzato in modalità in cui l’unità di controllo Core è Modbus Master e i dispositivi collegati sono Modbus Slave. Questo viene impostato nella sezione Hardware → Modbus RTU o Modbus TCP. È tuttavia possibile utilizzare anche la direzione opposta, in cui TapHome Core fornisce a un sistema superiore informazioni sui propri dispositivi. Questo è definito nella sezione Rendi disponibili i dispositivi → Modbus RTU o Modbus TCP.

Livelli fisici

Modbus può comunicare attraverso diversi livelli fisici:

  • tramite linea seriale, tipicamente RS485: questo è indicato come Modbus RTU
  • tramite rete LAN usando il protocollo TCP/IP
  • tramite rete LAN usando UDP - attualmente non supportato dal sistema TapHome

Registri Modbus

Modbus definisce 4 tipi di registri:

Registro Codice Accesso Dimensione Codici funzione
Holding Registers H Lettura-scrittura 16 bit Lettura: 03, Scrittura multipla: 16 (0x10)
- Scrittura Singolo Holding SH Lettura-scrittura 16 bit Scrittura di uno: 06
Coil (Discrete Output Coils) C Lettura-scrittura 1-bit Lettura: 01, Scrittura multipla: 15 (0xF)
- Write Single Coil SC Lettura-scrittura 1-bit Scrittura di uno: 05
Discrete Input Contacts D Solo lettura 1-bit Lettura: 02
Analog Input Registers A Solo lettura 16-bit Lettura: 04
Il numero di registro è a 16 bit, il che significa che può avere valori da 0 a 65535. Sui registri è possibile eseguire operazioni di:
  • lettura di più registri
  • scrittura di un singolo registro
  • scrittura di più registri

Alcune implementazioni Modbus aggiungono comandi aggiuntivi: report slave id, mascheramento bit, scrittura e lettura simultanea, ecc., ma questi non sono supportati da TapHome. {.is-warning}

Le informazioni su cosa è memorizzato in quale registro e in quale formato fanno parte della documentazione del dispositivo, fornita dal distributore o dal produttore. Ad esempio, la documentazione Modbus dal fornitore del dispositivo Modbus: modbus_table.png

Il tipo di registro C (Coil), indice 58, poiché ha solo 2 valori (aperto / chiuso) e oltre alla lettura permette anche la scrittura, corrisponde al tipo di dispositivo TapHome che è un’uscita digitale.

Istruzioni rapide per integrare un dispositivo Modbus in TapHome

  1. Collega il dispositivo al bus appropriato (per Modbus RTU e ASCII) o alla LAN (per Modbus TCP). Per i dispositivi TCP, assicurati di essere sulla stessa rete del controllore TapHome Core. Puoi verificarlo, ad esempio, con Fing (iOS, Android) o IP Scanner (Windows).
  2. In TapHome → Hardware aggiungi una nuova interfaccia Modbus RTU o Modbus TCP e imposta i parametri di comunicazione secondo la documentazione. Per Modbus RTU si tratta di baud rate, stop bit, parità, data bit; per Modbus TCP è l’indirizzo IP.
  3. Nella documentazione del dispositivo Modbus verifica quale Slave ID usa. Nel caso di Modbus TCP questo è talvolta indicato come Unit ID. Se vuoi utilizzare più dispositivi sullo stesso bus RTU, devi cambiare lo Slave ID di ciascuno in modo che sia univoco per quella linea di bus.
  4. Test di comunicazione - usando lo strumento Manual operations prova a leggere alcune informazioni secondo la documentazione (tabella Modbus) del dispositivo. Se tutto funziona, dovresti vedere il valore letto.
  5. Se il test di comunicazione è riuscito, crea un Modulo che rappresenti il dispositivo Modbus.
  6. Scegli quali informazioni dalla documentazione Modbus vuoi presentare nel sistema TapHome e crea i dispositivi corrispondenti. Inizia leggendo i valori (Read script) e, per gli attuatori, procedi con la scrittura (Write script).
  7. Se le funzioni di base del dispositivo funzionano, aggiungi definizioni di Error, Warning o Information negli script.
  8. Se necessario, puoi definire anche Service Attributes e Service Actions per i dispositivi e i moduli TapHome.
  9. Se tutto è configurato correttamente e comunica in modo affidabile, esporta il Modulo in un file XML in modo da poterlo riutilizzare in futuro. Puoi anche contribuire alla comunità su github.com/taphome-official/modbus_templates.

Implementazione in TapHome

Questa documentazione è rivolta allo scenario in cui l’unità di controllo TapHome Core è Modbus Master e i dispositivi fisici, aggiunti nella sezione Hardware → Modbus RTU / TCP, sono Modbus Slave.

Interfaccia

Hardware → Modbus RTU: i dispositivi sono collegati a un determinato BUS; sono definiti i parametri di trasmissione RS485 di base, come baud rate, parità, stop bit, o se i dati sono ASCII o binari. Su questo bus possono essere collegati solo dispositivi con le stesse impostazioni di comunicazione. Una corretta comunicazione funziona solo se i cavi A e B sono collegati correttamente. Hardware → Modbus TCP: i dispositivi sono collegati alla stessa LAN del controllore Core. È definita una porta TCP univoca, comune a tutti i dispositivi collegati a questa interfaccia.

Modulo

L’interfaccia può contenere uno o più moduli, che nella maggior parte dei casi coprono la comunicazione con l’intero dispositivo fisico. Dal punto di vista della configurazione, il modulo definisce uno Slave ID univoco del dispositivo collegato per Modbus RTU e, in aggiunta, l’indirizzo IP per Modbus TCP.

Dispositivo

Rappresenta un elemento di controllo specifico o un sensore nel sistema TapHome. Deve far parte sempre di un unico modulo superiore.

5 unità di climatizzazione collegate a una singola linea utilizzano una comune interfaccia Modbus RTU, che definisce la porta del bus, la velocità di trasmissione e gli altri parametri di comunicazione. L’interfaccia comprende 5 moduli, ognuno dei quali rappresenta un’unità di climatizzazione con uno Slave ID univoco. Ogni modulo ha dispositivi definiti sotto di sé, come ad esempio termostato, modalità di raffreddamento/riscaldamento, potenza della ventola o inclinazione delle lamelle. I singoli dispositivi hanno comandi definiti per la lettura e/o scrittura dei valori Modbus.

Dispositivi supportati:

  • Uscita digitale
  • Uscita analogica
  • Termostato
  • Interruttore a due posizioni
  • Sensore di temperatura
  • Elettrometro
  • Contatto di stato
  • Pulsante
  • Variabile

Script per la lettura e la scrittura dei valori Modbus

I dispositivi TapHome comunicano con i dispositivi Modbus fisici tramite script.

Per ulteriori informazioni sul linguaggio di scripting, vedere in particolare la sezione Operazioni sui bit

Per la comunicazione con i dispositivi Modbus sono definite su di essi le seguenti sezioni di scripting:

  • Script di inizializzazione: viene eseguito quando il dispositivo si avvia (ad es. dopo un riavvio del controller)
  • Script di lettura: impostazione dei valori delle variabili globali o lettura di stati di errore
  • Script di lettura del valore: script per leggere un valore specifico (una quantità) dal dispositivo Modbus (ad es. temperatura impostata sul termostato o temperatura misurata sul termostato)
  • Script di scrittura del valore: scrive il valore nel dispositivo Modbus

Funzioni di comunicazione con dispositivi Modbus

MODBUSR (Modbus Read)

Funzione per la lettura di un registro Modbus. A seconda del tipo di dato, può trattarsi di 1 registro (per tipi di dato a 16 bit), 2 registri (per tipi di dato a 32 bit) o più registri (per tipi di dato String).

MODBUSR(typ_registra, adresa_registra, dátový_typ, [VOLITEĽNÉ: numero_di_caratteri_se_data_type=String])

Esempio: MODBUSR(H, 20, Int16)/100
Lettura del registro H numero 20 e interpretazione come intero a 16 bit con segno. Infine dividere questo valore per 100 (spostare la virgola decimale di 2 posizioni a sinistra).

L’indirizzo del registro può essere specificato anche in formato esadecimale, ad es. il valore 20 può essere scritto come 0x14.

MODBUSW (Modbus Write)

MODBUSW(typ_registra, adresa_registra, dátový_typ, hodnota_na_zápis)

Esempio: MODBUSW(H, 20, Int16, Te * 100)
Nel registro H all’indirizzo 20 scrivi il valore della variabile Te moltiplicato per 100 (spostando la virgola decimale di 2 posizioni a destra).

MODBUSWNE (Modbus Write if Not Equal)

Uguale a MODBUSW con la differenza che legge il valore dal registro prima della scrittura e lo scrive solo se il valore da scrivere differisce da quello letto. L’intera operazione richiede più tempo e il suo uso tipico è quando si configurano proprietà del dispositivo Modbus, dove la configurazione viene scritta nella memoria EEPROM con un numero limitato di scritture.

Le funzioni MODBUSR, MODBUSW e MODBUSWNE possono essere usate solo negli script Modbus. Se usate in altri script, sono considerate errori.

Tipi di dati Modbus

Il contenuto dei registri è definito nella tabella Modbus. Poiché la dimensione di un registro Modbus è di 16 bit, i valori più comuni sono 16-bit Int16 o UInt16 e i decimali vengono ottenuti dividendo per 10 o 100. Alcuni dispositivi Modbus utilizzano anche registri a 16 bit con numeri a virgola mobile (Float), oppure hanno un ordine dei byte modificato (big endian, little endian) e scrivono un numero in due registri (varianti a 32 bit). A volte il modo più semplice per determinare il tipo di dato corretto è utilizzare lo strumento direttamente nell’app TapHome (Manual Operations), dove è possibile leggere 1 o più registri e passare dinamicamente a un altro tipo di dato.

  • Int16: da -32.768 a 32.767
  • UInt16: da 0 a 65.535
  • Int32: da -2.147.483.648 a 2.147.483.647
  • UInt32: da 0 a 4.294.967.295
  • Float: IEEE 754 a singola precisione con virgola mobile
  • Bool: 0 = false, 1 = true
  • BigEndianInt16 = Int16
  • LittleEndianInt16
  • BigEndianUint16 = UInt16
  • LittleEndianUint16
  • BigEndianInt32 / BigEndianInt32ByteSwap
  • LittleEndianInt32 / LittleEndianInt32ByteSwap
  • BigEndianUint32 / BigEndianUint32ByteSwap
  • LittleEndianUint32 / LittleEndianUint32ByteSwap
  • BigEndianFloat / BigEndianFloatByteSwap
  • LittleEndianFloat / LittleEndianFloatByteSwap
  • String: Il formato BCD può essere usato anche grazie alle funzioni TOBCD() e FROMBCD()

Intervallo di aggiornamento e interrogazione

Ogni dispositivo nell’interfaccia Modbus ha definito l’attributo Poll Interval. Questo determina quanto spesso l’unità di controllo TapHome deve interrogare i nuovi valori del dispositivo Modbus. La comunicazione Modbus è di tipo Master-Slave, e quindi le informazioni dal dispositivo Modbus possono arrivare a TapHome solo quando TapHome le richiede. Più è lungo l’intervallo di Poll, più tardi avverrà l’aggiornamento del valore in TapHome. Un Poll troppo breve può comportare un sovraccarico di TapHome nel recupero di valori non necessari e potrebbe non avere tempo di gestire tutti i dispositivi nel periodo di tempo specificato. Ad esempio, con Modbus RTU e velocità di trasmissione inferiore, come 9600, una richiesta/risposta può richiedere decine di ms. Per i termometri, nella maggior parte dei casi, è sufficiente un intervallo di 15000 ms (15 s); per i pulsanti, al contrario, il più breve possibile, ad es. 50 ms. Alcuni dispositivi Modbus si aspettano che il master scriva periodicamente il valore corrente nel registro. A questo serve l’attributo Periodic Write.

Definizione degli stati di errore dagli script

In alcuni script è possibile definire un errore / avviso / informazione su un dispositivo in base alle informazioni lette dai registri Modbus del dispositivo. Questi messaggi vengono visualizzati in TapHome allo stesso modo dei messaggi di errore interni di TapHome. Facoltativamente è possibile aggiungere un codice numerico di errore al messaggio di errore, se è utile per la manutenzione del dispositivo Modbus.

Su un dispositivo è possibile definire solo un messaggio di errore senza codice o solo messaggi di errore con un determinato codice di errore.

ADDERROR(), ADDWARNING(), ADDINFO()
ADDERROR([Voliteľné: custom_code], text)

Esempio: nella sezione Read Script del dispositivo Analog Output c’è il codice:

1
2
3
4
5
6
7
ADDERROR("Error without code");
ADDWARNING("Warning without code");
ADDINFO("Info without code");

ADDERROR(1, "Error with code");
ADDWARNING(1, "Warning with code");
ADDINFO(1,"Info with code");

…che verrà visualizzato sul dispositivo come messaggi: modbus_error.png

Attributi e azioni di servizio

Oltre al valore (o a più valori, come ad es. un termostato) provenienti dal dispositivo Modbus collegato, i moduli e i dispositivi TapHome possono leggere anche attributi di servizio o eseguire azioni di servizio. Questi non sono accessibili sul desktop agli altri utenti del sistema, ma servono solo a fornire informazioni più dettagliate sul dispositivo Modbus, senza sovraccaricare il sistema con un gran numero di variabili e azioni.

Attributi di servizio vengono visualizzati nelle impostazioni di servizio del modulo o del dispositivo TapHome. Vengono tipicamente usati per mostrare informazioni sul dispositivo, come Modello, Numero di Serie, Versione del firmware, Versione hardware, Tempo dall’ultimo riavvio, ecc. Sono utili per la manutenzione del dispositivo Modbus, ma non ha senso creare dispositivi TapHome separati per essi.

Azioni di servizio vengono visualizzate nelle impostazioni di servizio del modulo o del dispositivo TapHome, in fondo come pulsanti. Premendoli verrà eseguita un’azione Modbus preimpostata, che scrive le informazioni richieste nel registro. Esempi di utilizzo: impostare o cambiare lo Slave ID, sostituire il filtro, impostare un contatore al valore desiderato, resettare il dispositivo e simili.

Script e helper variables per il modulo

Variabili globali del modulo

Le variabili definite sul modulo sono utilizzabili in tutti gli script sul modulo e sono condivise con tutti i dispositivi assegnati a questo modulo.

Init Script

Facoltativo. Si avvia all’avvio del modulo. Se è compilato e non è ancora stato eseguito, non saranno disponibili altri script.

  • 💬 Valore di ritorno: ignorato
  • ⚙️ Accesso alle variabili: variabili globali del modulo
  • ⚠️ Supporto stato di errore: no

Read Script

Verrà eseguito ad ogni interrogazione del modulo.

  • 💬 Valore di ritorno: ignorato
  • ⚙️ Accesso alle variabili: variabili globali del modulo
  • ⚠️ Supporto stato di errore: sì

Write Script

Esecuzione:

  • al cambiamento della variabile dell’unità
  • se è abilitato l’attributo “Periodic Write”, viene eseguito automaticamente
  • 💬 Valore di ritorno: ignorato
  • ⚙️ Accesso alle variabili: variabili globali del modulo, valori dei dispositivi appartenenti a quel modulo (attenzione, non sono variabili globali del dispositivo - lo script del modulo non ha accesso ad esse). Questo viene usato se è necessario scrivere i valori di più dispositivi di quel modulo in un unico registro.
  • ⚠️ Supporto stato di errore: no

Attributi di servizio

Ogni modulo può avere un numero illimitato di attributi di servizio. Gli script vengono eseguiti ogni volta che un utente (con permessi di servizio) apre la schermata delle impostazioni di servizio del modulo nell’app. Sono elencati in alto, subito dopo la lettura dal dispositivo Modbus.

  • 💬 Valore di ritorno: viene mostrato come valore del relativo attributo
  • ⚙️ Accesso alle variabili: variabili globali del modulo
  • ⚠️ Supporto stato di errore: no

Azioni di servizio

Ogni modulo può avere un numero illimitato di azioni di servizio. Gli script vengono eseguiti quando un utente (con permessi di servizio) apre l’applicazione sulla schermata delle impostazioni di servizio del modulo e preme uno dei pulsanti di azione di servizio definiti. Ogni azione di servizio è definita dal nome, dai parametri e dallo script di esecuzione.

  • 💬 Valore di ritorno: ignorato
  • ⚙️ Accesso alle variabili: variabili globali del modulo, parametri forniti dall’utente
  • ⚠️ Supporto stato di errore: no

Script e variabili di aiuto per il dispositivo

Variabili globali del dispositivo

Le variabili definite sul dispositivo sono utilizzabili in tutti gli script definiti su questo dispositivo e non sono utilizzabili altrove. Il dispositivo può memorizzare il proprio stato, condividerlo tra i suoi script, ecc.

Init Script

Facoltativo. Viene eseguito all’avvio del dispositivo. Se è compilato e non è ancora stato eseguito, non saranno disponibili altri script.

  • 💬 Valore di ritorno: ignorato
  • ⚙️ Accesso alle variabili: variabili globali del modulo, variabili globali del dispositivo
  • ⚠️ Supporto stato di errore: no

Read Script

Viene eseguito ad ogni interrogazione del dispositivo, prima dei “Read Value Scripts”.

  • 💬 Valore di ritorno: ignorato
  • ⚙️ Accesso alle variabili: variabili globali del modulo, variabili globali del dispositivo
  • ⚠️ Supporto stato di errore: sì. Gli errori si riferiscono all’intero dispositivo (ad es. all’intero termostato, non solo al valore impostato o al valore attuale della temperatura).

Write Value Script

Esecuzione:

  • ad ogni cambiamento del valore
  • se è attivo l’attributo “Periodic Write”, anche ad ogni interrogazione
  • 💬 Valore di ritorno: ignorato
  • ⚙️ Accesso alle variabili: variabili globali del modulo, variabili globali del dispositivo, valore della grandezza da scrivere sul dispositivo Modbus
  • ⚠️ Supporto stato di errore: no

Read Value Script

Verrà eseguito ad ogni interrogazione del dispositivo.

  • 💬 Valore di ritorno: verrà automaticamente assegnato al valore del relativo dispositivo
  • ⚙️ Accesso alle variabili: variabili globali del modulo, variabili globali del dispositivo, ultimo valore letto della variabile, contenuto da leggere (utile ad esempio se il dispositivo indica che non è ancora stato letto)
  • ⚠️ Supporto stato di errore: sì. I messaggi di errore dovrebbero riferirsi alla variabile sul dispositivo. Ad esempio, se il comando ADDERROR(1, "Sensore non collegato") è nello script Read Temperature del dispositivo Termostato, l’utente vedrà un messaggio nell’app sul termostato con tre informazioni: Temperatura, codice 1, testo “Sensore non collegato”.

Attributi di servizio

Ogni dispositivo può avere un numero illimitato di attributi di servizio. Gli script vengono eseguiti ogni volta che un utente (con permessi di servizio) apre la schermata delle impostazioni di servizio del dispositivo nell’app. Sono elencati in alto, subito dopo la lettura dal Modbus.

  • 💬 Valore di ritorno: viene mostrato come valore del relativo attributo
  • ⚙️ Accesso alle variabili: variabili globali del modulo, variabili globali del dispositivo
  • ⚠️ Supporto stato di errore: no

Azioni di servizio

Ogni dispositivo può avere un numero illimitato di azioni di servizio. Gli script vengono eseguiti quando un utente (con permessi di servizio) apre l’applicazione sulla schermata delle impostazioni di servizio del dispositivo e preme uno dei pulsanti definiti dall’azione di servizio. Ogni azione di servizio è definita dal nome, dai parametri e dallo script di esecuzione.

  • 💬 Valore di ritorno: ignorato
  • ⚙️ Accesso alle variabili: variabili globali del modulo, variabili globali del dispositivo, parametri forniti dall’utente
  • ⚠️ Supporto stato di errore: no

Strumenti utili

Aggiungere da modello

Consente di configurare la comunicazione Modbus con un dispositivo senza alcuna conoscenza del protocollo Modbus o di come configurarlo in TapHome. Modelli predefiniti disponibili:

  • direttamente nell’app: Aggiungere da modello → selezionare un dispositivo specifico → compilare le informazioni di base e confermare. Tutti questi modelli sono gestiti nel progetto git della comunità su https://github.com/taphome/modbus_templates e chiunque può proporre nuove modifiche. Ciò che viene inserito nelle app deve essere approvato direttamente dal team TapHome.
  • nel proprio file XML: Aggiungere da modello → Aggiungere da file. È possibile creare un proprio file XML che definisca l’intero modello direttamente sul modulo Modbus, nel menu contestuale (tre puntini in alto a destra), azione Salva come modello. Saremo lieti se aiuterete ad ampliare il numero di dispositivi supportati e contribuirete con il vostro file XML al repository comunitario Git.

Ulteriori informazioni sulla configurazione della comunicazione Modbus tramite modelli

Operazioni manuali

Strumento pratico per una verifica iniziale rapida della tabella Modbus. Consente di:

  • leggere i successivi X registri dalla tabella partendo da un registro specifico e quindi passare dinamicamente i valori letti a diversi tipi di dato
  • scrivere un valore nel relativo registro

Scansione dello Slave ID

Una pratica comune durante la configurazione della comunicazione con un dispositivo Modbus è che lo Slave ID di fabbrica sia diverso da 1, e non è facile determinare il numero corretto. A questo serve questo strumento. Può scansionare un intervallo di Slave ID fornito tentando di leggere dal registro selezionato sempre con lo Slave ID testato.

Informazioni sui registri

Si trova nella parte inferiore del modulo Modbus. Per ogni registro usato, fornisce informazioni su:

  • il nome del dispositivo TapHome che legge o scrive su di esso
  • data e ora dell’ultima lettura riuscita dal registro
  • l’ultimo valore letto dal registro
  • data e ora dell’ultima scrittura riuscita nel registro
  • l’ultimo valore scritto nel registro

Impostazioni avanzate

Prefetch

TapHome crea una lista di registri da leggere e scrivere dai dispositivi Modbus in base all’intervallo Poll configurato. Prefetch è un processo che consente all’unità di controllo di caricare in memoria i valori che saranno necessari durante l’aggiornamento. L’obiettivo è ridurre al minimo il numero di richieste e di viaggi di andata e ritorno. Prefetch è influenzato da 2 impostazioni:

  • Max prefetch register group size (posizionato nelle impostazioni di servizio del modulo): determina il numero massimo di registri che possono essere letti o scritti con una singola richiesta Modbus.
  • Prefetch mode (impostabile per ogni dispositivo):
    • No prefetch. Il prefetch non verrà eseguito per questo dispositivo. Ciò significa che i valori verranno letti individualmente e precisamente quando viene eseguito lo script. Esempio d’uso: nel caso di comunicazione con un convertitore DALI non è possibile leggere direttamente il valore di una determinata luce, ma deve essere richiesto non appena possibile; il convertitore lo preparerà e poi lo restituirà. Qualsiasi prefetch è inutile in questo caso.
    • Isolated prefetch. Precarica contemporaneamente alcuni registri, ma solo quelli definiti in questo dispositivo. Ad esempio, quando ho bisogno dei registri 3 e 4 nel dispositivo termostato, mentre i registri 1, 2, 5, 6 sono usati in altri dispositivi, la richiesta per i registri 3 e 4 verrà eseguita separatamente solo per questi due registri. Alcuni dispositivi Modbus lo richiedono.
    • Normal prefetch. Tutti i registri richiesti dai dispositivi da aggiornare vengono letti con il minor numero possibile di richieste. In caso di una sequenza non contigua di registri, vengono letti anche registri non utilizzati se in passato sono stati letti con successo. Esempio: si richiedono i registri 99 e 101. Se il registro 100 è stato letto con successo in passato e Max prefetch register group size è 3 o più, vengono letti 3 registri in una singola richiesta dal registro 99. Se il registro 100 non è mai stato utilizzato e non è mai stato letto con successo, esiste il rischio che la lettura tramite tale registro possa restituire un’eccezione Modbus, ad es. “Illegal data address” come risposta all’intera richiesta.

Il prefetch può essere influenzato anche direttamente dallo script: se durante la lettura usiamo i registri SC o SH (invece di C o H), allora il valore viene letto registro per registro durante l’esecuzione dello script e non viene estratto dalla memoria cache. Allo stesso modo, durante la scrittura, se usiamo i registri SC o SH (invece di C o H), il valore viene scritto registro per registro e con un’altra funzione Modbus. Il protocollo Modbus supporta 4 funzioni di scrittura: scrittura di più H, di più C, scrittura di un solo registro H o di un solo registro C. Attenzione: non tutti i dispositivi possono supportare tutte queste funzioni. In tal modo, se necessario, è possibile combinare lettura e scrittura “uno per uno”.

TCP Port (Modbus TCP)

Nella maggior parte dei casi il valore predefinito è 502, ma è possibile che alcuni dispositivi ascoltino su una porta diversa.

Timeout di lettura / scrittura

Il tempo dopo il quale TapHome interrompe l’attesa per una risposta e segnala l’errore „Timeout“. Ciò significa che il dispositivo non ha risposto entro l’intervallo.

  • Dispositivi Modbus TCP lenti possono richiedere timeout più lunghi (1+ secondi).
  • Valori di timeout elevati possono ritardare inutilmente gli altri dispositivi Modbus in attesa di una risposta.

Ritardo tra le richieste

Il ritardo che TapHome inserisce tra le singole richieste al dispositivo Modbus.

Tipo Modbus Ritardo predefinito
Modbus TCP 0ms
Modbus RTU In base alla velocità di comunicazione (baud rate), tipicamente almeno 3,5 caratteri

📌 Informazioni importanti sui dispositivi:

  • Alcuni dispositivi Modbus TCP richiedono fino a 5000 ms tra le richieste.
  • Alcuni dispositivi Modbus RTU permettono ritardi più brevi e comunicano più velocemente.

Usare la comunicazione ASCII

Modbus ASCII è uno standard meno comune, in cui la comunicazione non è binaria, ma utilizza invece caratteri ASCII.

  • Questi dispositivi tipicamente richiedono l’impostazione di 7 bit di dati.