---
title: 'Protocolli di comunicazione supportati'
section: 'Reference'
weight: 1
description: Panoramica dei protocolli di comunicazione industriali e IoT supportati dalla piattaforma — Modbus, OPC UA, MQTT e DLMS/COSEM.
related:
  - architecture/data-collection-layer
  - integration
  - equipment
  - rest-api
---

import Alert from '@/components/docs/Alert.astro';

## Modbus (RTU / TCP)

### Scopo e descrizione

Protocollo industriale semplice e ampiamente diffuso per lo scambio di dati di processo tra controllori, sensori e attuatori. Sviluppato nel 1979 da Modicon (oggi Schneider Electric), è diventato lo standard de facto dell'automazione industriale. Viene utilizzato nei sistemi SCADA, nei PLC, negli azionamenti a frequenza variabile, negli strumenti di misura e nei sensori. Grazie alla semplicità di implementazione e ai requisiti minimi di risorse di calcolo, il protocollo è ideale per i sistemi embedded e i dispositivi con memoria limitata.

### Architettura e modello dei dati

Il modello dei dati basato su registri si fonda su quattro tipi di spazio di indirizzamento:

- **Coils (0x)** — uscite discrete (lettura/scrittura di valori a bit)
- **Discrete Inputs (1x)** — ingressi discreti (sola lettura)
- **Input Registers (3x)** — registri di ingresso a 16 bit (sola lettura)
- **Holding Registers (4x)** — registri di mantenimento a 16 bit (lettura/scrittura)

Architettura client-server (master-slave): il dispositivo master avvia le richieste, gli slave rispondono. Ogni dispositivo slave ha un indirizzo univoco (1–247). Il protocollo non contiene alcuna semantica dei dati integrata: l'interpretazione dei valori dei registri è definita a livello applicativo e nella documentazione del dispositivo. Supporta operazioni di lettura e scrittura per singoli e per più registri.

### Trasporto

**Modbus RTU:**

- Linee seriali RS-485 (fino a 32 dispositivi per bus, distanza fino a 1200 m) o RS-232 (punto-punto)
- Rappresentazione binaria dei dati
- Verifica dell'integrità tramite CRC-16
- Velocità di trasmissione: da 1200 a 115200 baud
- Trasmissione half-duplex

**Modbus TCP:**

- Incapsulamento dei frame Modbus in TCP/IP (porta 502)
- Intestazione MBAP (Modbus Application Protocol) per l'identificazione delle transazioni
- Trasmissione full-duplex
- Possibilità di operare contemporaneamente con più dispositivi
- Nessuna checksum richiesta (l'affidabilità è garantita da TCP)

### Funzionalità principali

- Lettura e scrittura di segnali discreti (Coils) e registri
- Supporto dei Function Code standard (FC 01–06, 15–16, 23)
- Funzioni diagnostiche (FC 08)
- Lettura dei dati di identificazione del dispositivo (FC 17, 43)
- Requisiti minimi di risorse di calcolo per i dispositivi
- Implementazione e debug semplici
- Basso costo di implementazione
- Gestione delle eccezioni e codici di errore
- Supporto dei messaggi broadcast (indirizzo 0) in RTU
- Scalabilità fino a 247 dispositivi su una linea (RTU) o illimitata tramite TCP

<Alert type="note">**Supporto completo**</Alert>

## OPC UA

### Scopo e descrizione

Standard universale e multipiattaforma (OPC Unified Architecture, IEC 62541) per lo scambio sicuro e strutturato di dati industriali, metadati e informazioni semantiche. Sviluppato dalla OPC Foundation come successore delle specifiche classiche OPC DA/AE/HDA, elimina la dipendenza dalle tecnologie Microsoft DCOM. Consente l'integrazione verticale e orizzontale nei sistemi industriali — dal livello di campo ai sistemi informativi aziendali (ERP, MES). Supporta i concetti di Industrie 4.0 e di gemello digitale grazie alle ampie capacità di modellazione delle informazioni.

### Architettura e modello dei dati

Modello dei dati orientato agli oggetti che rappresenta le informazioni come uno spazio di nodi indirizzabile (Address Space):

- **Nodi** di vario tipo: Variable, Object, Method, View, DataType, ReferenceType
- **Attributi dei nodi**: Value, DataType, AccessLevel, Timestamp, Quality, DisplayName, ecc.
- **Riferimenti** tra i nodi: gerarchici, associativi, basati su componenti
- **Tipi di dati**: primitivi, strutture, array, enumerazioni

Servizi supportati:

- **Subscription** — monitoraggio delle variazioni dei dati con intervalli di campionamento e filtri configurabili
- **Events & Alarms** — notifiche asincrone di eventi, allarmi e stati
- **Historical Access** — accesso a dati ed eventi archiviati
- **Methods** — invocazione remota di procedure sui dispositivi

Modelli informativi specifici di settore (Companion Specifications): meccanica, energia, oil & gas, farmaceutica.

### Trasporto

**UA Binary Protocol su TCP/IP:**

- Protocollo binario con serializzazione ottimizzata (porta 4840)
- Prestazioni elevate e overhead minimo

**HTTPS / SOAP:**

- Profilo Web Services per l'integrazione con i sistemi aziendali
- Codifica JSON per le applicazioni cloud

**OPC UA PubSub:**

- Modello publisher-subscriber per i sistemi distribuiti
- Trasporto: UDP Multicast, MQTT, AMQP, Ethernet TSN
- Trasmissione deterministica per le applicazioni time-critical

**Sicurezza:**

- Modalità di sicurezza multilivello (None, Sign, SignAndEncrypt)
- Certificati X.509 per l'autenticazione
- Crittografia AES, RSA

### Funzionalità principali

- **Modellazione delle informazioni**: trasmissione non solo di valori "grezzi" ma di dati complessi e strutturati con semantica, tipizzazione e metadati
- **Sottoscrizioni** con intervalli di polling configurabili, filtri deadband e buffering
- **Eventi** e sistema di allarmi con filtraggio condizionale
- **Invocazione di metodi** per il controllo dei dispositivi e l'esecuzione di operazioni
- **Accesso ai dati storici** con aggregazione
- **Service discovery** nelle reti locali
- **Sicurezza integrata**: crittografia del canale, autenticazione basata su certificati o nome utente/password, controllo degli accessi a livello di nodo
- **Ridondanza del server e tolleranza ai guasti**
- **Multipiattaforma**: Windows, Linux, VxWorks, QNX e altri sistemi operativi
- **Scalabilità**: dai microcontrollori ai sistemi distribuiti

<Alert type="note">**Supporto completo**</Alert>

## MQTT

### Scopo e descrizione

Protocollo di messaggistica leggero (Message Queuing Telemetry Transport) per telemetria, monitoraggio remoto e gestione di dispositivi IoT, ottimizzato per reti inaffidabili, larghezza di banda limitata e latenze elevate. Sviluppato nel 1999 da IBM per il monitoraggio di oleodotti, è stato standardizzato da OASIS e ISO/IEC (20922:2016). Ampiamente utilizzato nell'IoT industriale, nelle smart home, nella telematica veicolare e nelle applicazioni mobili. Il protocollo è incentrato sulla riduzione al minimo del traffico di rete e del consumo energetico dei dispositivi.

### Architettura e modello dei dati

Modello **Publish/Subscribe** asincrono con un broker centralizzato:

- **Publisher** — dispositivo o applicazione che pubblica messaggi sui topic
- **Subscriber** — dispositivo o applicazione sottoscritto per ricevere i messaggi dai topic
- **Broker** — server centrale di instradamento dei messaggi (Mosquitto, HiveMQ, EMQ X, ecc.)

**Topic** — struttura di percorso gerarchica per la categorizzazione dei messaggi:

- Separatori di livello: `/` (ad esempio, `factory/building1/temperature`)
- Caratteri jolly: `+` (singolo livello), `#` (più livelli)
- Esempio di sottoscrizione: `sensors/+/temperature` oppure `factory/#`

**Formato dei dati** definito dall'applicazione: JSON, Protocol Buffers, XML, dati binari, testo.  
**Retained messages**: il broker conserva l'ultimo messaggio di un topic e lo recapita ai nuovi subscriber.  
**Sessioni persistenti**: il broker mantiene le sottoscrizioni del client in caso di disconnessione.

### Trasporto

- Livello di trasporto: TCP/IP (porta 1883 per le connessioni non protette)
- TLS/SSL (porta 8883) per crittografia e autenticazione
- WebSocket per l'integrazione con browser e applicazioni web
- Versioni del protocollo: MQTT 3.1.1 (la più diffusa), MQTT 5.0 (funzionalità estese)
- Dimensione dell'intestazione: minimo 2 byte (fixed header)
- Meccanismo keep-alive: PINGREQ/PINGRESP periodici per il monitoraggio della connessione
- Il funzionamento basato su broker garantisce il disaccoppiamento tra publisher e subscriber, lo scaling orizzontale e la gestione centralizzata

### Funzionalità principali

- **QoS (Quality of Service)** con tre livelli di garanzia di consegna:
  - QoS 0: At most once (senza conferma)
  - QoS 1: At least once (con conferma)
  - QoS 2: Exactly once (handshake a quattro fasi)
- **Overhead di rete minimo**: fixed header di 2 byte, codifica binaria efficiente
- **LWT (Last Will and Testament)**: meccanismo di notifica automatica della disconnessione imprevista di un dispositivo — il broker pubblica un messaggio predefinito se il client termina la sessione in modo anomalo
- **Clean Session / Persistent Session**: possibilità di ripristinare sottoscrizioni e messaggi dopo la riconnessione
- **Retained Messages**: disponibilità dell'ultimo valore per i nuovi subscriber
- **Basso consumo energetico**: ideale per i dispositivi alimentati a batteria
- **Scalabilità**: supporto di milioni di connessioni simultanee su cluster di broker
- **Sottoscrizioni con caratteri jolly** per un filtraggio flessibile dei topic

<Alert type="note">**Supporto completo**</Alert>

## DLMS / COSEM (IEC 62056)

### Scopo e descrizione

Standard internazionale per lo scambio di dati con i contatori di utenze: elettricità, gas, acqua e calore (Device Language Message Specification / Companion Specification for Energy Metering). Sviluppato dalla DLMS User Association insieme all'IEC per garantire l'interoperabilità dei contatori intelligenti nei sistemi automatizzati di contabilizzazione e fatturazione (AMBS). Consente la lettura remota dei contatori, il monitoraggio della qualità dell'energia, la gestione delle tariffe e il rilevamento degli accessi non autorizzati. Ampiamente utilizzato dai gestori delle reti elettriche, dai fornitori di servizi pubblici e dagli integratori di sistemi Smart Grid.

### Architettura e modello dei dati

**Modello a oggetti COSEM (Companion Specification for Energy Metering):**

- I dati del contatore sono rappresentati come **oggetti logici (oggetti COSEM)** con classi di interfaccia
- **Codici OBIS (Object Identification System)** — identificatore a sei byte per l'indirizzamento universale dei parametri: `A-B:C.D.E*F`
  - A — tipo di energia (1=elettricità, 6=calore, 7=gas, 8=acqua)
  - B — canale di misura
  - C — grandezza fisica (ad esempio, 1=energia attiva)
  - D — tipo di misura (8=tempo di integrazione)
  - E — fascia tariffaria
  - F — profondità storica

**Protocollo DLMS:**

- Livello applicativo secondo il modello OSI
- **Associazioni** con diversi diritti di accesso: Public, Reader, Manager
- **Autenticazione**: Low Level Security (LLS), High Level Security (HLS) con challenge-response
- **Crittografia**: supporto della DLMS Security Suite con algoritmi AES-GCM-128
- **Load Profiles**: oggetti buffer per la memorizzazione di serie temporali
- **Sistema di scripting**: esecuzione di sequenze di azioni sul contatore

### Trasporto

Livello fisico e livello di collegamento dati:

- **Porta ottica (IEC 62056-21, flag)** — connessione diretta tramite testina a infrarossi per la lettura locale
- **RS-485 / RS-232** con protocollo HDLC (High-Level Data Link Control) per reti multi-drop
- **TCP/IP** (porta 4059) — DLMS su TCP o incapsulamento IP per l'accesso remoto
- **GSM/GPRS/LTE** — trasmissione dati tramite reti mobili (protocolli wrapper)
- **PLC (Power Line Communication)** — trasmissione sulle linee elettriche (PRIME, G3-PLC)
- **M-Bus** — per l'integrazione con i sistemi di contabilizzazione di acqua e calore

Profili di trasmissione a seconda dell'implementazione del contatore:

- IEC 62056-46: COSEM su HDLC
- IEC 62056-47: trasporto COSEM su TCP-UDP/IP

### Funzionalità principali

- **Lettura del contatore** — valori correnti di consumo energetico, potenza, tensione, corrente, fattore di potenza
- **Load Profiles** — dati dettagliati con marca temporale (intervalli di 15 min, orari, giornalieri)
- **Registri eventi** — registrazione di manomissioni del coperchio, interruzioni di alimentazione, sovratensioni, modifiche dei parametri
- **Autenticazione e autorizzazione multilivello**: controllo degli accessi basato sui ruoli (accesso pubblico, lettura, configurazione)
- **Gestione delle tariffe** — modifica remota di programmi tariffari e tariffe
- **Sincronizzazione oraria** per l'accuratezza delle marche temporali
- **Controllo dei relè** (connessione/disconnessione del carico)
- **Monitoraggio della qualità dell'energia** (cali di tensione, sovratensioni, armoniche)
- **Supporto delle operazioni di gruppo** su più contatori
- **Protezione crittografica dei dati** e integrità dei messaggi

<Alert type="note">**Supporto in fase di implementazione**</Alert>
