---
title: "Noname Generic 8DI/8DO module"
description: "8 interruttori e 8 contatti da un modulo I/O Modbus RTU generico via RS-485, letti come maschere di bit di due holding register. Verifica i registri."
url: "https://taphome.com/it/compatibility/noname-generic-8di-8do-module/"
language: it
lastmod: 2026-11-10
generator: hugo
ai:
  topics: ["modbus-rtu","rs485","i/o-module","digital-io","holding-registers","bitmask"]
  questions: ["Come integrare un modulo Modbus RTU 8DI/8DO generico con TapHome?","Che cosa controlla il template TapHome per il modulo Generic 8DI/8DO?","Come collegare un modulo RS-485 8DI/8DO a TapHome tramite Modbus RTU?","Il template Generic 8DI/8DO funziona con moduli che usano coil e discrete input?","Quali indirizzi di registro inserire per DO Register e DI Register?","Perché il modulo 8DI/8DO risponde con l'errore Illegal data address?"]
---

# Noname Generic 8DI/8DO module

Comunicazione: Modbus RTU

## Guida all'integrazione

Questo template collega a TapHome tramite RS-485 un modulo I/O Modbus RTU generico, senza marca, con **8 uscite digitali e 8 ingressi digitali**. Crea otto dispositivi **Interruttore** (DO1–DO8) e otto dispositivi **Contatto reed** (DI1–DI8). Il template non ha un produttore né un modello fisso: è adatto solo a un modulo la cui tabella dei registri corrisponde allo schema descritto sotto, quindi prima di usare il template devi controllare la tabella dei registri del modulo.

## Prima di usare questo template

Il template legge e scrive **solo holding register** (funzione Modbus 03 per la lettura, funzione 06 per la scrittura). Si aspetta questo schema dei registri:

| Dati | Tipo di registro | Registro | Contenuto |
|---|---|---|---|
| Uscite DO1–DO8 | Holding | un registro, parametro di importazione **DO Register** | bit 0–7 = stato di DO1–DO8 |
| Ingressi DI1–DI8 | Holding | un registro, parametro di importazione **DI Register** | bit 0–7 = stato di DI1–DI8 |

> [!WARNING]
> Molti moduli RS-485 8DI/8DO economici documentano le uscite come **coil** (funzioni 01, 05, 0F) e gli ingressi come **discrete input** (funzione 02), e usano gli holding register solo per la configurazione. Un modulo di questo tipo non può essere comandato da questo template senza modifiche. Prima di installare il modulo, verifica nella sua tabella dei registri che le uscite siano disponibili come maschera di bit in un holding register e gli ingressi come maschera di bit in un holding register.

Il tipo di registro è fisso negli script del template; all'importazione puoi modificare solo i due indirizzi dei registri e lo Slave ID.

## Collegamento hardware

Il modulo si collega al bus RS-485 dell'unità di controllo Core:

- **A con A, B con B.** Le sigle dei morsetti variano da produttore a produttore (A/B, A+/B−, D+/D−). Se il modulo non risponde, inverti i due fili.
- **Massa comune:** sulle linee più lunghe collega il GND del modulo al GND del bus, se il modulo ha un morsetto apposito.
- **Topologia del bus:** bus lineare con terminazione a entrambe le estremità. Se il modulo ha una resistenza di terminazione integrata e come si attiva dipende dal modulo: verificalo sul modulo.
- **Slave ID univoco:** ogni dispositivo sulla stessa linea RS-485 deve avere il proprio Slave ID.

Prima del cablaggio verifica sul modulo: tensione di alimentazione, tipo di ingresso (contatto pulito, NPN o PNP, ingresso in tensione) e tipo di uscita (relè o transistor) con i relativi valori nominali. Il template non dipende da questi dati, ma il collegamento di carichi e sensori sì.

## Configurazione

### Impostazioni di comunicazione sul modulo

Il template suggerisce questi parametri di linea per l'interfaccia Modbus RTU di TapHome:

| Parametro | Valore |
|---|---|
| Baud rate | 9600 |
| Bit di dati | 8 |
| Parità | Nessuna |
| Bit di stop | 1 |

Il modulo deve usare lo stesso baud rate e lo stesso formato di trama, e il suo Slave ID deve corrispondere al parametro di importazione. Dove si impostano questi valori (DIP switch, registro di configurazione o software di configurazione del produttore) dipende dal modulo; verificalo nella documentazione del modulo o sul modulo stesso.

### Parametri di importazione

| Parametro | Predefinito | Significato |
|---|---|---|
| **DO Register** | `1` | indirizzo dell'holding register con i bit delle uscite |
| **DI Register** | `2` | indirizzo dell'holding register con i bit degli ingressi |
| **Slave ID** | `1` | indirizzo Modbus del modulo |

TapHome invia al modulo l'indirizzo del registro senza modificarlo e conta da 0. Se la tabella dei registri del modulo numera i registri da 1 (ad esempio 40001, 40002), sottrai 1: vedi [indirizzamento dei registri Modbus](https://taphome.com/it/docs/integration/modbus/). Il parametro di importazione **Indirizzo IP** non ha effetto su un'interfaccia Modbus RTU e può restare al valore predefinito.

In TapHome aggiungi un'interfaccia Modbus RTU con i parametri di linea indicati sopra e importa il template con lo Slave ID e i due indirizzi dei registri del modulo.

## Funzionalità del dispositivo

### Uscite digitali DO1–DO8

Ogni uscita è un dispositivo **Interruttore**. Il suo stato viene letto ogni 1000 ms dai bit da 0 (DO1) a 7 (DO8) del **DO Register**. La commutazione non è gestita dalle singole uscite, ma dallo script di scrittura del modulo TapHome: quando cambia una qualsiasi uscita, TapHome scrive nel **DO Register** la maschera di bit di tutte e otto le uscite con un'unica scrittura (funzione 06), e solo quando il valore cambia. I bit 8–15 del valore scritto sono sempre 0.

### Ingressi digitali DI1–DI8

Ogni ingresso è un dispositivo **Contatto reed** che mostra un bit del **DI Register**, dal bit 0 (DI1) al bit 7 (DI8), letto ogni 1000 ms. È adatto a contatti di porte e finestre, interruttori a galleggiante o contatti ausiliari di relè collegati agli ingressi del modulo.

> [!NOTE]
> Verifica sul modulo che il bit 0 corrisponda davvero al primo canale e che il modulo accetti una maschera di bit scritta con la funzione 06 nel registro delle uscite.

## Risoluzione dei problemi

### Il modulo non risponde

1. Controlla il cablaggio RS-485 e, se necessario, inverti A e B.
2. Verifica che lo Slave ID del modulo corrisponda al parametro di importazione **Slave ID**.
3. Verifica che baud rate, parità e bit di stop del modulo corrispondano all'interfaccia Modbus RTU (suggerito 9600, 8N1).
4. Controlla la terminazione a entrambe le estremità del bus.

### Errore "Illegal data address"

L'indirizzo del registro è spostato di 1 (la documentazione del modulo numera i registri da 1), oppure il modulo non ha affatto questo schema dei registri, ad esempio quando le sue uscite sono coil e i suoi ingressi discrete input. Confronta i parametri di importazione con la tabella dei registri del modulo.

### Uscite o ingressi associati ai canali sbagliati

L'ordine dei bit del modulo è diverso da quello del template (bit 0 = canale 1). Verifica l'assegnazione dei bit nella tabella dei registri del modulo.

## Dispositivi disponibili 16

Questi dispositivi compaiono in TapHome dopo l'importazione.

Generic 8DI/8DO module Modulo

Scrittura (modulo)

```taphome
MODBUSWNE(SH, $[DORegister], Int16, St2 | (St3 << 1) | (St4 << 2) | (St5 << 3) | (St6 << 4) | (St7 << 5) | (St8 << 6) | (St9 << 7))
```

DO1 Interruttore

Valori / Stati: ON · OFF

Lettura stato interruttore

```taphome
MODBUSR(H, $[DORegister], Int16) & 1
```

DO2 Interruttore

Valori / Stati: ON · OFF

Lettura stato interruttore

```taphome
(MODBUSR(H, $[DORegister], Int16) & 2 )>>1
```

DO3 Interruttore

Valori / Stati: ON · OFF

Lettura stato interruttore

```taphome
(MODBUSR(H, $[DORegister], Int16) & 4)>>2
```

DO4 Interruttore

Valori / Stati: ON · OFF

Lettura stato interruttore

```taphome
(MODBUSR(H, $[DORegister], Int16) & 8)>>3
```

DO5 Interruttore

Valori / Stati: ON · OFF

Lettura stato interruttore

```taphome
(MODBUSR(H, $[DORegister], Int16) & 16)>>4
```

DO6 Interruttore

Valori / Stati: ON · OFF

Lettura stato interruttore

```taphome
(MODBUSR(H, $[DORegister], Int16) & 32)>>5
```

DO7 Interruttore

Valori / Stati: ON · OFF

Lettura stato interruttore

```taphome
(MODBUSR(H, $[DORegister], Int16) & 64)>>6
```

DO8 Interruttore

Valori / Stati: ON · OFF

Lettura stato interruttore

```taphome
(MODBUSR(H, $[DORegister], Int16) & 128)>>7
```

DI1 Contatto reed

Lettura

```taphome
MODBUSR(H, $[DIRegister], Int16) & 1
```

DI2 Contatto reed

Lettura

```taphome
(MODBUSR(H, $[DIRegister], Int16) & 2)>>1
```

DI3 Contatto reed

Lettura

```taphome
(MODBUSR(H, $[DIRegister], Int16) & 4)>>2
```

DI4 Contatto reed

Lettura

```taphome
(MODBUSR(H, $[DIRegister], Int16) & 8)>>3
```

DI5 Contatto reed

Lettura

```taphome
(MODBUSR(H, $[DIRegister], Int16) & 16)>>4
```

DI6 Contatto reed

Lettura

```taphome
(MODBUSR(H, $[DIRegister], Int16) & 32)>>5
```

DI7 Contatto reed

Lettura

```taphome
(MODBUSR(H, $[DIRegister], Int16) & 64)>>6
```

DI8 Contatto reed

Lettura

```taphome
(MODBUSR(H, $[DIRegister], Int16) & 128)>>7
```

**Connessione:** Modbus RTU • 9600 baud• 8N1 • Slave ID: $\[SlaveId]

## Parametri di importazione

Inserisci questi valori quando importi l'XML.

| Richiesto nell'app | Predefinito   |
|--------------------|---------------|
| DO Register        | `1`           |
| DI Register        | `2`           |
| Slave ID           | `1`           |
| Indirizzo IP       | `192.168.0.1` |

## Documentazione correlata

- [Modbus Integration](https://taphome.com/it/compatibility/modbus-guide/)
- [Modbus - Configurazione](https://taphome.com/it/docs/integration/modbus/)
- [Configurazione semplice utilizzando modelli](https://taphome.com/it/docs/integration/modbus/templates/)
- [Script Modbus e prefetch](https://taphome.com/it/docs/script/modbus-scripts/)
- [Funzioni Modbus](https://taphome.com/it/docs/script/modbus/)
- [Tipi di dati Modbus](https://taphome.com/it/docs/script/modbus-data-types/)

