
Nel progetto su cui sto lavorando l'impianto è nuovo, e quasi ogni trimestre arrivano una o due macchine da integrare. Nessuna è uguale alla precedente. Una parla OPC UA, una FINS, una è un PLC Siemens SIMATIC. Una scrive un CSV per ogni pezzo lavorato, un'altra un file di testo. Una espone un socket TCP/IP, l'ultima un'API REST. Ogni volta c'è qualcosa di nuovo.
Se ogni macchina nuova obbligasse a toccare tutti i sistemi che ne usano i dati, ogni trimestre si rifarebbe mezzo progetto. Quello che lo tiene in piedi è semplice da dire: per ogni macchina c'è un adattatore che parla la sua lingua, e un mapper che riporta tutto a un oggetto standard. Da lì in poi, per il resto del sistema, una macchina vale l'altra.
Sette macchine, sette lingue, un solo formato
Ogni macchina ha il suo adattatore; dopo il mapper, il resto del sistema vede solo l'oggetto standard
- OPC UA
- FINS
- SIMATIC S7
- CSV per pezzo
- file di testo
- TCP/IP
- API REST
- un adattatore per macchina
- un oggetto standard
- contesto sempre presente
- storico
- logiche applicative
- frontend
- notifiche
È questa l'idea dietro l'Unified Namespace, e quando progetto un middleware industriale ci ragiono già dall'inizio, anche se c'è una sola macchina. In italiano se ne parla poco, e in inglese ne scrivono soprattutto i vendor di broker e piattaforme. Provo a spiegarlo come lo uso io.
01Cos'è
Un Unified Namespace (UNS) è una ricetta di comunicazione comune. Macchine e software diversi si scambiano informazioni secondo le stesse regole, sia in lettura sia in scrittura.
In pratica c'è un punto centrale, di solito un broker MQTT. Ogni sistema pubblica lì quello che sa e si abbona a quello che gli serve. Le informazioni hanno un indirizzo che dice da dove vengono e di cosa parlano. Per esempio:
stabilimento-a/assemblaggio/linea-2/avvitatrice-01/stato
stabilimento-a/assemblaggio/linea-2/avvitatrice-01/allarmi
stabilimento-a/assemblaggio/linea-2/ordine/richiesta
Il vantaggio non è il broker. È che chi acquisisce i dati non deve conoscere tutti i sistemi che li useranno, e chi li consuma non deve conoscere le particolarità di ogni macchina. Gli accoppiamenti tra i componenti si riducono, e aggiungere una macchina o un sistema diventa un lavoro locale invece di una modifica a catena.
Sei sistemi, due modi di collegarli
Il caso peggiore del punto a punto, in cui ogni sistema parla con tutti gli altri
02Cosa non è
Un prodotto
Si comprano broker e piattaforme. L'UNS è il modo in cui li usi.
Uno standard
Nessuna norma lo definisce. Sono standard i mattoni: MQTT, Sparkplug B (ISO/IEC 20237:2023), ISA-95.
Un database
Lo storico è una destinazione dei dati, non qualcosa che deve stare nell'UNS.
03ISA-95 sì, ma non a macchinetta
La struttura degli indirizzi di solito ricalca la gerarchia di ISA-95: stabilimento, area, linea, macchina. È un ottimo punto di partenza, e lo standard è stato aggiornato di recente: la Parte 1 è stata rivista ad aprile 2025.
L'errore è applicarlo in modo meccanico. Prima guardo il contesto: i sistemi coinvolti, le informazioni da scambiare, le logiche da implementare. Poi adatto la convenzione al progetto. Conta che sia chiara e condivisa: chiunque deve capire dove si trova un'informazione e come va interpretata, senza una gerarchia più profonda del necessario.
04Stesse regole, non stesso posto
Standardizzo tutto quello che passa dal middleware, compresi telemetria e log. Ogni messaggio ha una struttura comune, e il contesto è sempre identificabile: per esempio il workcenter di riferimento.
A quel punto i worker possono essere generici. Ricevono un messaggio, ne leggono il contesto e decidono cosa farne in base al tipo e alla destinazione: salvarlo nello storico, attivare una logica, aggiornare il frontend, mandare una notifica.
{
"tipo": "telemetria",
"workcenter": "linea-2/avvitatrice-01",
"istante": "2026-11-03T08:15:02Z",
"dati": {
"coppia_nm": 12.4,
"esito": "ok"
}
}
Questo non vuol dire salvare tutto nello stesso posto, né dare a tutto lo stesso ciclo di vita. Ordini, ricette, allarmi e telemetria seguono lo stesso modello di comunicazione, ma ognuno con la sua gestione.
05MQTT o Sparkplug B
Oggi parto da qui
MQTT con una convenzione mia
Struttura dei topic, payload e gestione dei messaggi definiti sulle esigenze del progetto e integrati con il middleware che sto costruendo.
Ho il controllo del modello e introduco solo le regole che mi servono davvero.
Quando ha senso
Sparkplug B
Definisce anche il formato dei payload e la gestione dello stato della sessione (specifica Eclipse).
Ha senso quando devi interoperare con sistemi industriali di altri attraverso uno standard condiviso.
Sparkplug B l'ho studiato per interesse, ma non l'ho mai implementato in un progetto. Non è sbagliato: quando controllo io l'architettura e gli interlocutori, semplicemente non aggiungo vincoli senza un beneficio concreto.
06Quanto costruire
Introduco una struttura comune anche con una sola macchina. Oggi è una, domani possono essere dieci, e con buone fondamenta si cresce senza rifare tutto.
07Quando il broker non c'è
L'acquisizione deve dipendere il meno possibile dal broker e dai sistemi a valle. Se il broker non risponde, continuo a raccogliere i dati dalle macchine, nei limiti delle risorse, e gestisco in locale ciò che non richiede una risposta esterna. Per gli eventi che non posso perdere c'è un buffer persistente, con il recupero al ritorno della connessione.
Non tutto però può andare avanti. Non posso confermare un cambio d'ordine o una rischedulazione se il sistema che deve rispondere non è raggiungibile. Il guasto va gestito senza perdere informazioni e senza fingere che un'operazione sia andata a buon fine. Ne ho scritto in La rete cade, la linea no.
08L'errore più comune
Pensare che un UNS sia semplice e immediato. Prima vanno raccolti i requisiti: chi sono gli interlocutori, quali informazioni si scambiano, quali logiche vanno supportate. Solo dopo si definiscono la struttura e le regole.
Altrimenti si ottiene una struttura formalmente ordinata che non risolve niente. I sistemi restano dipendenti, i dati mantengono significati diversi, le eccezioni si accumulano nel middleware.
Da fuori sembra tutto in ordine: un punto solo, cavi puliti. Basta aprire il coperchio.

Il groviglio non è sparito: è stato spostato in un posto solo.
Se introducessi un UNS domani
Cinque regole
- Un adattatore per ogni macchina e un mapper verso un unico oggetto standard.
- Una convenzione dei nomi presa da ISA-95 e adattata al contesto, non copiata.
- Le stesse regole di comunicazione per tutto; destinazioni e cicli di vita diversi.
- MQTT con una convenzione mia, Sparkplug B quando serve interoperare con altri.
- I requisiti prima della struttura: la parte difficile è lo standard, non il broker.
Fonti (4)
- OASIS, MQTT Version 5.0, standard OASIS, 2019.
- Eclipse Foundation, Sparkplug 3.0, pubblicata anche come ISO/IEC 20237:2023 (annuncio).
- ISA, ISA-95 / IEC 62264, Enterprise-Control System Integration; revisione della Parte 1, aprile 2025.
- G. Hohpe, B. Woolf, Enterprise Integration Patterns: Message Broker, Addison-Wesley, 2003.


