Connettore OPC UA
Panoramica
Sezione intitolata “Panoramica”Il connettore OPC UA (Open Platform Communications Unified Architecture) abilita la comunicazione con server OPC UA, il protocollo standard industriale per l’automazione industriale e lo scambio dati.
Tipi Connettore:
OpcuaReader- Leggi dati da server OPC UAOpcuaWriter- Scrivi dati su server OPC UA
Caratteristiche
Sezione intitolata “Caratteristiche”- ✅ Protocollo standard industriale per automazione industriale
- ✅ Metodi di autenticazione multipli (Anonimo, Basic, Certificato)
- ✅ Modalità di sicurezza (None, Sign, SignAndEncrypt)
- ✅ Frequenze di polling configurabili
- ✅ Supporto per strutture nodi complesse
- ✅ Operazioni di lettura e scrittura
Configurazione Base
Sezione intitolata “Configurazione Base”OPC UA Reader
Sezione intitolata “OPC UA Reader”{ "type": "OpcuaReader", "config": { "endpoint": "opc.tcp://localhost:4840", "pollingRate": 1000 }, "variables": [ { "key": "temperature", "nodeId": "ns=1;s=Temperature" }, { "key": "pressure", "nodeId": "ns=1;s=Pressure" } ]}{ "type": "OpcuaReader", "config": { "endpoint": "opc.tcp://localhost:4840", "pollingRate": 1000, "auth": { "mode": "Basic", "username": "opcuser", "password": "opcpassword" } }, "variables": [ { "key": "temperature", "nodeId": "ns=1;s=Temperature" } ]}{ "type": "OpcuaReader", "config": { "endpoint": "opc.tcp://localhost:4840", "pollingRate": 1000, "auth": { "authCertificateFile": { "mode": "DirectPath", "fileName": "certificate.pem", "path": "/path/to/certificate.pem" }, "authKeyFile": { "mode": "DirectPath", "fileName": "key.pem", "path": "/path/to/key.pem" } }, "security": { "mode": "SignAndEncrypt", "policy": "Basic256Sha256" } }, "variables": [ { "key": "temperature", "nodeId": "ns=1;s=Temperature" } ]}OPC UA Writer
Sezione intitolata “OPC UA Writer”{ "type": "OpcuaWriter", "config": { "endpoint": "opc.tcp://localhost:4840", "auth": { "mode": "Basic", "username": "opcuser", "password": "opcpassword" } }, "variables": [ { "key": "setpoint", "nodeId": "ns=1;s=Setpoint" }, { "key": "control_mode", "nodeId": "ns=1;s=ControlMode" } ]}Parametri di Configurazione
Sezione intitolata “Parametri di Configurazione”Endpoint
Sezione intitolata “Endpoint”L’URL endpoint del server OPC UA.
{ "endpoint": "opc.tcp://192.168.1.100:4840"}Formato: opc.tcp://[host]:[porta][/percorso]
Frequenza di Polling
Sezione intitolata “Frequenza di Polling”Per i reader, l’intervallo in millisecondi tra le letture dati.
{ "pollingRate": 1000 // Leggi ogni 1 secondo}Valori raccomandati:
- Veloce: 100-500ms
- Normale: 1000ms (1 secondo)
- Lento: 5000ms (5 secondi)
Autenticazione
Sezione intitolata “Autenticazione”Anonimo (Default)
Sezione intitolata “Anonimo (Default)”Nessuna autenticazione richiesta:
{ // Nessun campo auth necessario}Autenticazione Basic
Sezione intitolata “Autenticazione Basic”Username e password:
{ "auth": { "mode": "Basic", "username": "your-username", "password": "your-password" }}Autenticazione Certificato
Sezione intitolata “Autenticazione Certificato”Certificati X.509:
{ "auth": { "authCertificateFile": { "mode": "DirectPath", "fileName": "client-cert.pem", "path": "/path/to/client-cert.pem" }, "authKeyFile": { "mode": "DirectPath", "fileName": "client-key.pem", "path": "/path/to/client-key.pem" } }}Sicurezza
Sezione intitolata “Sicurezza”Configura modalità e policy di sicurezza:
{ "security": { "mode": "SignAndEncrypt", "policy": "Basic256Sha256" }}Modalità di Sicurezza:
None- Nessuna sicurezza (default)Sign- Solo firma messaggiSignAndEncrypt- Firma e cripta messaggi
Policy di Sicurezza:
NoneBasic128Rsa15Basic256Basic256Sha256(raccomandato)
Variabili
Sezione intitolata “Variabili”Le variabili definiscono quali nodi OPC UA leggere o scrivere.
Struttura Variabile
Sezione intitolata “Struttura Variabile”{ "key": "temperature", "nodeId": "ns=1;s=Temperature"}Campi:
key- Il nome chiave nel payload MeddlenodeId- L’identificatore nodo OPC UA
Formati Node ID
Sezione intitolata “Formati Node ID”OPC UA supporta diversi formati node ID:
{ "key": "sensor1", "nodeId": "ns=1;s=SensorName"}{ "key": "sensor2", "nodeId": "ns=1;i=1001"}{ "key": "sensor3", "nodeId": "ns=1;g=12345678-1234-1234-1234-123456789012"}{ "key": "sensor4", "nodeId": "ns=1;b=AQIDBAUGBwg="}Formato: ns=[namespace];[tipo]=[identificatore]
Dove:
ns- Indice namespace (0-65535)tipo- Tipo Node ID:s- Stringi- Numericog- GUIDb- Opaco (Base64)
Flusso Dati
Sezione intitolata “Flusso Dati”Flusso Dati Reader
Sezione intitolata “Flusso Dati Reader”Server OPC UA → OpcuaReader → Payload MeddleEsempio:
Nodi OPC UA:
ns=1;s=Temperature= 25.5ns=1;s=Pressure= 101.3
Payload output:
{ "temperature": 25.5, "pressure": 101.3}Flusso Dati Writer
Sezione intitolata “Flusso Dati Writer”Payload Meddle → OpcuaWriter → Server OPC UAEsempio:
Payload input:
{ "setpoint": 30.0, "mode": "auto"}Scrive su:
ns=1;s=Setpoint← 30.0ns=1;s=Mode← “auto”
Casi d’Uso Comuni
Sezione intitolata “Casi d’Uso Comuni”1. Monitoraggio Temperatura
Sezione intitolata “1. Monitoraggio Temperatura”Leggi sensori temperatura da un PLC:
{ "type": "OpcuaReader", "config": { "endpoint": "opc.tcp://plc.local:4840", "pollingRate": 1000 }, "variables": [ { "key": "zone1_temp", "nodeId": "ns=2;s=Zone1.Temperature" }, { "key": "zone2_temp", "nodeId": "ns=2;s=Zone2.Temperature" }, { "key": "ambient_temp", "nodeId": "ns=2;s=Ambient.Temperature" } ]}2. Controllo Processo
Sezione intitolata “2. Controllo Processo”Scrivi setpoint per controllare un processo:
{ "type": "OpcuaWriter", "config": { "endpoint": "opc.tcp://plc.local:4840", "auth": { "mode": "Basic", "username": "operator", "password": "secure123" } }, "variables": [ { "key": "temperature_setpoint", "nodeId": "ns=2;s=Control.TempSetpoint" }, { "key": "pressure_setpoint", "nodeId": "ns=2;s=Control.PressureSetpoint" } ]}3. Monitoraggio Linea Produzione
Sezione intitolata “3. Monitoraggio Linea Produzione”Monitora più macchine:
{ "type": "OpcuaReader", "config": { "endpoint": "opc.tcp://scada.local:4840", "pollingRate": 500 }, "variables": [ { "key": "machine1_status", "nodeId": "ns=3;s=Machine1.Status" }, { "key": "machine1_speed", "nodeId": "ns=3;s=Machine1.Speed" }, { "key": "machine1_count", "nodeId": "ns=3;s=Machine1.ProductCount" }, { "key": "machine2_status", "nodeId": "ns=3;s=Machine2.Status" }, { "key": "machine2_speed", "nodeId": "ns=3;s=Machine2.Speed" } ]}Risoluzione dei Problemi
Sezione intitolata “Risoluzione dei Problemi”Problemi di Connessione
Sezione intitolata “Problemi di Connessione”Problema: Impossibile connettersi al server OPC UA
Soluzioni:
- Verifica che l’URL endpoint sia corretto
- Controlla connettività di rete:
ping [server-ip] - Verifica che la porta sia aperta:
telnet [server-ip] 4840 - Controlla regole firewall
- Assicurati che il server OPC UA sia in esecuzione
Errori di Autenticazione
Sezione intitolata “Errori di Autenticazione”Problema: Errori di autenticazione
Soluzioni:
- Verifica che username e password siano corretti
- Controlla se l’utente ha permessi appropriati
- Per auth certificato, assicurati che i certificati siano validi e non scaduti
- Verifica che i percorsi certificati siano corretti
Nodo Non Trovato
Sezione intitolata “Nodo Non Trovato”Problema: Errori “Nodo non trovato”
Soluzioni:
- Usa un client OPC UA (come UaExpert) per esplorare il server
- Verifica che l’indice namespace sia corretto
- Controlla che il formato node ID corrisponda al formato del server
- Assicurati che il nodo esista e sia accessibile
Mancata Corrispondenza Policy Sicurezza
Sezione intitolata “Mancata Corrispondenza Policy Sicurezza”Problema: Errori policy di sicurezza
Soluzioni:
- Controlla quali policy di sicurezza supporta il server
- Abbina
security.policya una policy supportata - Assicurati che i certificati siano configurati correttamente per connessioni crittografate
Problemi di Prestazioni
Sezione intitolata “Problemi di Prestazioni”Problema: Aggiornamenti dati lenti o alto utilizzo CPU
Soluzioni:
- Aumenta
pollingRateper ridurre la frequenza - Riduci il numero di variabili lette
- Usa lettura basata su sottoscrizione se supportata
- Controlla latenza di rete
Best Practice
Sezione intitolata “Best Practice”1. Usa Frequenze di Polling Appropriate
Sezione intitolata “1. Usa Frequenze di Polling Appropriate”Non fare polling più veloce del necessario:
- Dati critici: 100-500ms
- Monitoraggio normale: 1000ms
- Valori a lento cambiamento: 5000ms+
2. Proteggi le Tue Connessioni
Sezione intitolata “2. Proteggi le Tue Connessioni”Usa sempre autenticazione e crittografia in produzione:
{ "auth": { "mode": "Basic", "username": "user", "password": "pass" }, "security": { "mode": "SignAndEncrypt", "policy": "Basic256Sha256" }}3. Raggruppa Variabili Correlate
Sezione intitolata “3. Raggruppa Variabili Correlate”Mantieni variabili correlate nello stesso connettore per migliore organizzazione:
{ "variables": [ // Sensori temperatura {"key": "temp1", "nodeId": "ns=1;s=Temp1"}, {"key": "temp2", "nodeId": "ns=1;s=Temp2"}, // Sensori pressione {"key": "press1", "nodeId": "ns=1;s=Press1"}, {"key": "press2", "nodeId": "ns=1;s=Press2"} ]}4. Gestisci Perdita Connessione
Sezione intitolata “4. Gestisci Perdita Connessione”Meddle gestisce automaticamente perdita connessione e riconnessione, ma considera:
- Usare un connettore
Mergecon timeout per gestire dati mancanti - Aggiungere connettori
Alertper notificare problemi di connessione
5. Testa Prima con Anonimo
Sezione intitolata “5. Testa Prima con Anonimo”Inizia con autenticazione anonima per verificare connettività, poi aggiungi sicurezza:
- Testa senza auth
- Aggiungi username/password
- Aggiungi crittografia
- Aggiungi autenticazione certificato
Esempi Flussi di Lavoro
Sezione intitolata “Esempi Flussi di Lavoro”Flusso di Lavoro Monitoraggio Completo
Sezione intitolata “Flusso di Lavoro Monitoraggio Completo”OpcuaReader → Filter → Reshape → InfluxDb2Writer ↓ Trigger → Alert (email su temp alta)- OpcuaReader: Leggi temperatura e pressione
- Filter: Mantieni solo campi rilevanti
- Reshape: Aggiungi metadati (posizione, unità)
- InfluxDb2Writer: Archivia in database time-series
- Trigger: Controlla temperatura alta
- Alert: Invia email se soglia superata
Connettori Correlati
Sezione intitolata “Connettori Correlati”- Modbus - Protocollo industriale alternativo
- Siemens S7 - Comunicazione diretta PLC Siemens
- Filter - Filtra dati OPC UA
- Trigger - Logica condizionale su dati OPC UA
Risorse Aggiuntive
Sezione intitolata “Risorse Aggiuntive”- OPC Foundation
- Specifica OPC UA
- UaExpert - Client OPC UA gratuito per test