# Modbus TCP e Modbus RTU

> Collega PLC, azionamenti, contatori di energia e moduli I/O che parlano Modbus e rendi i loro valori disponibili a client OPC UA, schermate SCADA, storico e assistenti IA.

Modbus è il protocollo di campo più diffuso nell'industria: PLC, inverter, analizzatori di rete, termoregolatori e I/O remoti lo offrono quasi sempre. PLCGateway include un master Modbus per Modbus TCP, Modbus RTU incapsulato su TCP (gateway seriali) e Modbus RTU su porta seriale.

I registri adiacenti vengono raggruppati in un'unica richiesta, così un intero dispositivo si legge con pochi telegrammi; i valori a 32 e 64 bit vengono composti nell'ordine delle word del dispositivo e ogni valore porta con sé un codice di qualità. I valori possono poi essere pubblicati tramite il server OPC UA integrato, inviati via MQTT, storicizzati, associati ad allarmi e mostrati nelle schermate.

- **ID driver:** `modbus_tcp`, `modbus_rtu_tcp`, `modbus_rtu`
- **Collegamento:** TCP 502 · RTU over TCP · RS-485 / RS-232
- **Navigazione degli indirizzi:** indirizzi digitati o importati
- **Scrittura:** sì
- **Incluso in:** PLCGateway Connect, PLCGateway SCADA, PLCGateway Embedded

## Cosa legge e scrive PLCGateway

- Holding register (FC3) e input register (FC4)
- Coil (FC1) e discrete input (FC2)
- Singoli bit di un registro come BOOL
- Da INT16 a INT64, FLOAT32 / FLOAT64 e stringhe con ordine delle word selezionabile (ABCD, CDAB, BADC, DCBA)
- Scrittura con FC5, FC6 e FC16, bit di registro con read-modify-write
- Più slave dietro un unico gateway tramite lo unit id

## Esempi di indirizzi

| Indirizzo | Significato |
|---|---|
| `HR100 · %MW100` | Holding register 100 (base 0) |
| `40101` | Notazione classica in base 1 per l'holding register 100 |
| `IR5 · 30006` | Input register |
| `C12 · 00013` | Coil |
| `DI7 · 10008` | Discrete input |
| `HR20.7` | Bit 7 dell'holding register 20 |

## Controllori e dispositivi

- [Schneider Electric Modicon](https://plcgateway.com/it/controllers/schneider-electric.md)
- [Controllori basati su CODESYS](https://plcgateway.com/it/controllers/codesys-plcs.md)
- [Automazione degli edifici e contatori di energia](https://plcgateway.com/it/controllers/building-automation.md)

## Collegamento in pochi passi

1. Aggiungi un dispositivo, scegli Modbus TCP, RTU over TCP o RTU seriale e inserisci l'indirizzo IP oppure la porta seriale con baud rate e parità.
2. Imposta lo unit id e, per i valori a 32 bit, l'ordine delle word del dispositivo.
3. Crea i tag con indirizzi e tipi di dato, oppure importa un elenco di registri da CSV; testa il collegamento per vedere i primi valori.
4. Usa i valori in schermate, storico e allarmi, oppure condividili via OPC UA e MQTT.

## Domande e risposte

### PLCGateway supporta Modbus RTU su RS-485?

Sì. Il driver modbus_rtu usa direttamente una porta seriale (RS-485 o RS-232), mentre modbus_rtu_tcp invia i frame RTU attraverso un gateway seriale-Ethernet.

### I miei valori float sembrano errati. Cosa devo cambiare?

La maggior parte dei dispositivi memorizza un valore a 32 bit in due registri, ma l'ordine varia. Scegli l'ordine delle word ABCD, CDAB, BADC o DCBA sul dispositivo o sul singolo tag finché il valore non coincide con quello mostrato dal dispositivo.

### PLCGateway può funzionare anche da server Modbus?

Sì. Oltre al driver Modbus, PLCGateway dispone di un server Modbus TCP che offre tutti i tag come coil e registri, così un altro PLC o un sistema SCADA può leggere i dati raccolti via Modbus.

## Protocolli correlati

- [BACnet/IP](https://plcgateway.com/it/protocols/bacnet.md)
- [Siemens S7](https://plcgateway.com/it/protocols/siemens-s7.md)
- [Client OPC UA](https://plcgateway.com/it/protocols/opc-ua.md)
- [DNP3 (IEEE 1815)](https://plcgateway.com/it/protocols/dnp3.md)
- [Tutti i protocolli](https://plcgateway.com/it/protocols.md)

_I nomi di prodotti e modelli sono marchi dei rispettivi proprietari. Sono citati solo per indicare con quali apparecchiature comunicano i driver; PLCGateway non è affiliata a queste aziende._

---
Source: https://plcgateway.com/it/protocols/modbus
