MODBUS TCP

Modbus TCP: i 5 errori che mandano in tilt l'integrazione (e come fixarli)

Slave ID sbagliati, registri letti con offset errato, byte order invertito. Lista pratica dei sintomi e dei rimedi.
📅 22 marzo 2026 ⏱ 6 min lettura · Modulo: Connessione PLC Modbus TCP

Modbus TCP è il protocollo industriale più semplice in assoluto. Ed è anche quello dove ci si perde di più, perché chi lo implementa lato macchina usa convenzioni diverse e nessuno le documenta.

1. Slave ID (Unit ID) sbagliato

Modbus TCP eredita dal Modbus RTU il campo Unit ID nel header. Su molti gateway IP→RTU lo Unit ID identifica lo slave RTU dietro al gateway. Su CPU "native TCP" spesso è 1 o 255 e ignorato dal device — ma a volte è 0, a volte è quello configurato in CPU. Se non leggi niente, il sospettato numero uno è lo Unit ID.

2. Offset registri: 0-based vs 1-based

Lo standard Modbus dice indirizzi 0-based. Molti device legacy (e tutti i manuali italiani) li espongono 1-based. Il tag "Holding Register 40001" della documentazione corrisponde all'indirizzo Modbus 0, non 40001. Sbagliare il mapping vuol dire leggere dati con offset di +1 o leggere zone di memoria sbagliate.

3. Tipo di dato: Word, DWord, Float

I registri Modbus sono di 16 bit (Word). Un Float a 32 bit occupa 2 registri consecutivi. Un DWord pure. Ma l'ordine dei due registri non è definito dallo standard: alcuni device mettono prima il word alto (big-endian), altri prima il basso (little-endian). I client seri permettono di scegliere fra ABCD, CDAB, BADC, DCBA.

Sintomo tipico: leggi un float che dovrebbe valere 3.14 e ti esce 1.6e+20. Cambia il byte order e riprova.

4. Function code sbagliato

Se il device risponde con eccezione 01 (Illegal function), hai usato il codice sbagliato per quel tipo di registro.

5. Timeout vs polling rate

Molti device economici hanno solo una coda di richieste Modbus profonda 1 e rispondono in 50-200 ms. Se si pollano 30 tag ogni secondo, alcuni vanno in timeout. La cura: polling rate diviso per il numero di tag, oppure raggruppamento dei registri contigui in un'unica richiesta multi-register (Modbus la supporta nativamente).

Domande frequenti

Esiste un tool per testare Modbus senza scrivere codice?
Sì: ModScan, Modbus Doctor, QModMaster (gratuiti). Si lanciano dal PC dell'agente e si verifica che la lettura grezza funzioni prima di configurare il MES.
Quanto sono affidabili i gateway Modbus IP→RS-485?
Molto, se di marca (Moxa, Lantronix, Wago). I cinesi economici hanno latenze variabili e a volte perdono pacchetti. Per ambienti critici usare gateway industriali certificati.
Posso scrivere registri Modbus dal MES?
Sì, function code 0x06 (single register) o 0x10 (multiple registers). Sempre con cautela: scrivere sul registro sbagliato di un device di processo può causare un fermo non programmato.

Vuoi vedere PLCinCloud all'opera?

Demo gratuita di 30 minuti sul tuo caso d'uso. Nessun impegno.

Richiedi una demo →