Rela AIRela AI Docs
Casi d'Uso

Panificio italiano — flotta di camere di lievitazione (Modbus TCP + VPN)

Un panificio industriale italiano collega 3 camere di lievitazione Carel pCO5+ a Rela AI con un solo tunnel VPN. Setup completo, mappatura Modbus reale, alert WhatsApp in pochi minuti.

Panificio italiano — flotta di camere di lievitazione

Un panificio industriale italiano di medie dimensioni vuole monitorare le sue 3 camere di lievitazione sotto un unico tunnel VPN. Tutti e 3 i PLC sono Carel pCO5+ con scheda pCOWeb (la combinazione dominante nelle camere di lievitazione di fabbricazione italiana). Obiettivo: AHI per camera, alert su WhatsApp quando temperatura/umidità escono dal range, e ordine di lavoro automatico al tecnico di turno.

Riassunto esecutivo

Il punto di svolta: un solo .conf di WireGuard copre tutte e 3 le camere. Ogni PLC resta un asset indipendente in Rela con il suo AHI, la sua finestra di manutenzione e il suo responsabile, ma il cliente configura la rete una volta sola.

PrimaDopo
3 camere = 3 visite tecniche per aprire 3 VPN1 visita, 1 tunnel, 3 fonti
L'operatore controlla fisicamente ogni camera ogni 2 oreAvviso WhatsApp in meno di 5 min quando qualcosa esce dal range
Sonda guasta scoperta solo quando si perde un impastoL'Health Index rileva la deriva giorni prima del guasto
Nessuna tracciabilità di chi ha gestito quale cameraOgni allarme genera un task con SLA per camera

A cosa serve

  • Sorvegliare 3 camere di lievitazione distinte (linee A, B, C) senza sovraccaricare l'operatore.
  • Catturare il ciclo completo di ogni camera: setpoint contro valore misurato di temperatura, umidità, fase attiva, porta aperta.
  • Associare ogni lettura all'asset corretto (camera A, B, C) cosicché AHI e Remaining Useful Life siano per macchina, non aggregati.
  • Generare alert e ordini di lavoro diversi a seconda della camera in guasto, senza duplicare le regole.

Prima di iniziare — perché sei tu a configurare il peer

Il tuo team IT potrebbe proporre: "vi diamo le credenziali della nostra VPN aziendale, collegatevi con quelle". La risposta è ferma: no.

Tre ragioni critiche (le 9 complete sono in Perché un tunnel dedicato):

  1. Principio del minimo privilegio: la tua VPN aziendale apre l'intera rete (ERP, mail, SharePoint, OT). Rela ha bisogno solo della subnet del PLC. Una violazione lato Rela colpisce una subnet OT, non tutta l'azienda.
  2. Revoca in pochi secondi: elimini il peer dal tuo router quando vuoi, senza ticket né coordinamenti con noi. La chiave privata vive nel tuo apparato e non esce mai.
  3. Conformità (IEC 62443, NIST SP 800-82, SOC 2, ISO 27001): tutte richiedono la separazione IT/OT tramite tunnel dedicato. Condividere credenziali aziendali è un findable diretto in qualsiasi audit.

Condividere le credenziali della VPN aziendale esce dal modello self-service ed entra nel deployment enterprise custom (prezzo diverso, tunnel IPsec site-to-site dedicato).

Come funziona

flowchart LR
  PLC_A["Carel pCO5 plus<br/>Camera Linea A<br/>192.168.10.50"] --> R[("Router del cliente<br/>WireGuard + DNAT")]
  PLC_B["Carel pCO5 plus<br/>Camera Linea B<br/>192.168.10.51"] --> R
  PLC_C["Carel pCO5 plus<br/>Camera Linea C<br/>192.168.10.52"] --> R
  R -- "WireGuard tunnel" --> CONC[("Concentratore<br/>Rela VPN")]
  CONC --> WORKER[("Cloud Run worker<br/>3 modbus_listener tasks")]
  WORKER --> PIPE[("Pipeline predittiva<br/>anomaly + health + RUL")]
  PIPE --> AST_A[Asset Linea A]
  PIPE --> AST_B[Asset Linea B]
  PIPE --> AST_C[Asset Linea C]

Il flusso in una frase: ogni PLC parla Modbus TCP sulla sua LAN; il router del cliente riscrive indirizzi VPN in indirizzi LAN; il worker di Rela legge i registri come se le 3 camere fossero sulla sua stessa rete; la pipeline attribuisce ogni evento all'asset corretto.

Parametri / Configurazione

Mappatura Modbus tipica del Carel pCO5+ (firmware standard di lievitazione; gli OEM possono variare gli indirizzi — confermare sempre con il manuale del costruttore):

VariabileTipoFunzioneIndirizzoRange realistico
Setpoint temperaturafloat32 R/WHolding (FC 3)12 a 35 °C
Temperatura misuratafloat32 ROHolding (FC 3)2-5 a 45 °C
Setpoint umiditàfloat32 R/WHolding (FC 3)360 a 90 %
Umidità misuratafloat32 ROHolding (FC 3)40 a 100 %
Velocità ventilatoreuint16 R/WHolding (FC 3)50 a 100 %
Fase di ciclo (1=blocco, 2=conservazione, 3=risveglio, 4=lievitazione, 5=mantenimento)uint16 ROHolding (FC 3)101 a 5
Porta apertabool RODiscrete (FC 2)10 o 1
Allarme sonda Tbool RODiscrete (FC 2)200 o 1

Indirizzi di rete (esempio realistico):

PianoCamera ACamera BCamera C
LAN del cliente192.168.10.50192.168.10.51192.168.10.52
Indirizzo VPN (DNAT)10.200.7.5010.200.7.5110.200.7.52
Subnet assegnata10.200.7.0/24 (stessa /24 per tutte e 3)

Limite di connessioni concorrenti: la scheda pCOWeb del Carel accetta al massimo 4 client Modbus TCP simultanei. Se l'impianto ha già SCADA + HMI + tablet operatore che leggono il PLC, l'aggiunta di Rela può saturare la quota e far cadere la connessione più vecchia. Coordinare il rollout con il team di automazione.

Come usarlo

Passo 1 — Creare il tunnel VPN (una sola volta)

  1. Sidebar → SettingsConnectivity.
  2. Inserire l'etichetta: Panificio - Produzione.
  3. Cliccare Crea peer. Il backend assegna 10.200.7.0/24, IP del cliente 10.200.7.2.
  4. Scaricare il .conf di WireGuard. Importarlo nel router del cliente (Mikrotik, pfSense, OPNsense — qualsiasi router con WireGuard nativo).

Passo 2 — DNAT delle 3 camere sul router

Il cliente apre il router e aggiunge 3 regole NAT (sintassi Mikrotik):

/ip firewall nat
add chain=dstnat dst-address=10.200.7.50 dst-port=502 \
    protocol=tcp action=dst-nat to-addresses=192.168.10.50 to-ports=502
add chain=dstnat dst-address=10.200.7.51 dst-port=502 \
    protocol=tcp action=dst-nat to-addresses=192.168.10.51 to-ports=502
add chain=dstnat dst-address=10.200.7.52 dst-port=502 \
    protocol=tcp action=dst-nat to-addresses=192.168.10.52 to-ports=502

/ip firewall filter
add action=accept chain=forward in-interface=rela-vpn src-address=10.200.0.0/16

Perché è importante: il worker di Rela "vede" le camere come 10.200.7.50/.51/.52. Il router traduce questi indirizzi all'IP reale del PLC in LAN. Saltando questo passo, le 3 camere restano irraggiungibili anche con il tunnel attivo.

Passo 3 — Creare i 3 asset in Rela

Sidebar → Asset+ Nuovo. Ripetere 3 volte:

CampoCamera ACamera BCamera C
NomeCamera Lievitazione Linea ACamera Lievitazione Linea BCamera Lievitazione Linea C
Asset codeLIE-ALIE-BLIE-C
Asset typefermentation_chamberfermentation_chamberfermentation_chamber
Criticitàhighhighhigh
PlantPanificio CentralePanificio CentralePanificio Centrale
AreaProduzioneProduzioneProduzione
LineaLinea ALinea BLinea C

Passo 4 — Creare l'agente macchina

Sidebar → AllarmiAgenti macchina+ Nuovo.

Nome:                     Sorvegliante Lievitazione
Modello:                  gemini-3.1-pro-preview
Auto-assign task:         sì  → Reparto "Produzione"
Auto-notify WhatsApp:     sì  → Numero del capo turno
Escalation:               sì
  Step 1: 5 min  → Operatore di turno
  Step 2: 15 min → Capo turno
  Step 3: 30 min → Direttore di produzione
RCA enabled:              sì  → Min severity: critical

Un solo agente copre le 3 camere; le regole possono filtrare per source_id se serve un routing diverso per camera.

Passo 5 — Creare le 3 fonti Modbus

Sidebar → AllarmiSources+ Nuova fonte. Ripetere 3 volte, una per camera:

Source ID:                lievitazione-linea-a    (...-b, ...-c)
Agente:                   Sorvegliante Lievitazione
Protocollo:               Modbus TCP
Modbus host:              10.200.7.50             (.51 per B, .52 per C)
Modbus port:              502
Unit ID:                  1
Connect timeout:          5 s

Registri:
  - temperatura_misurata  addr=2  type=float32  fc=3   unit="°C"
                          emit=data_change deadband=0.5
  - umidita_misurata      addr=4  type=float32  fc=3   unit="%"
                          emit=data_change deadband=2.0
  - fase_ciclo            addr=10 type=uint16   fc=3
                          emit=data_change deadband=0
  - porta_aperta          addr=1  type=bool     fc=2
                          emit=bit_flip
  - allarme_sonda_t       addr=20 type=bool     fc=2
                          emit=bit_flip

Min interval:             10 s
Min severity:             warning

Passo 6 — Collegare ogni fonte al suo asset

Sidebar → Asset → cliccare su Camera Lievitazione Linea AModifica → campo event_source_ids: aggiungere lievitazione-linea-a. Salvare. Ripetere per B e C.

Perché è importante: senza questo collegamento, gli eventi arrivano dal PLC ma AHI, RUL e KPI non sanno a quale camera attribuirli. Con il collegamento, l'intera pipeline predittiva funziona per camera individuale.

Passo 7 — Verificare che le 3 connessioni siano attive

Tornare a AllarmiSources. Le 3 righe devono mostrare una spia verde lampeggiante. In meno di 60 secondi devono iniziare ad apparire eventi in AllarmiLive con event_type=DATA_CHANGE e i registri decodificati (temperatura, umidità, fase).

Se una camera resta rossa, vedi Troubleshooting.

Casi d'uso reali

Allarme porta dimenticata aperta

L'operatore lascia la porta della Camera B aperta a fine turno notte. In 30 secondi:

  1. Il Carel pCO5+ flippa la coil 1 a 1.
  2. Il worker riceve bit_flipMachineEventRequest{event_type: "DATA_CHANGE", metadata: {porta_aperta: true}}.
  3. La pipeline elabora; l'agente Sorvegliante Lievitazione genera il task "Chiudere porta camera B" assegnato all'operatore di turno.
  4. Il messaggio WhatsApp arriva all'operatore in meno di 1 minuto.
  5. Se non viene chiusa entro 5 min, escala al capo turno.

Deriva della sonda di umidità

La Camera A riporta umidità 80% ma il setpoint era 78%. Il rilevatore di anomalie ML (IsolationForest + LOF) impara il pattern normale in 7 giorni. Quando la sonda inizia a deviare di +5% in modo costante, prima che l'impasto venga compromesso, l'AHI scende da A a B e il RUL suggerisce ricalibrazione entro 2 settimane. Il task di manutenzione preventiva viene generato automaticamente.

Guasto elettrico parziale

Una caduta di tensione sulla Linea C spegne il ventilatore. La coil di allarme della sonda non si attiva (la sonda funziona), ma la temperatura inizia a salire di 0,3 °C/min. Le regole deterministiche rilevano temperatura_misurata > setpoint + 3°C per 3 campioni consecutivi (configurazione di recurrence) e generano severity critical. Escalation diretta al capo turno.

Limitazioni e ipotesi

  • Gli indirizzi Modbus dipendono dal firmware OEM. La mappatura della tabella è il pattern Carel standard, ma ogni costruttore di camera (Climaset, Forni Fiorini e gli altri OEM italiani tipici) personalizza il firmware. Chiedere sempre il manuale all'integratore prima di configurare i registri.
  • Le 3 camere devono essere sulla stessa LAN del cliente. Se sono in sedi diverse, servono 3 tunnel VPN distinti (un peer per sito). Il modello "1 tunnel = 1 sito fisico" resta valido.
  • Modbus TCP è in chiaro. Modbus non ha credenziali native — la sicurezza la fornisce il tunnel WireGuard. Il firewall del router deve accettare traffico solo da 10.200.0.0/16 verso i PLC, mai da Internet aperto.
  • Il listener gira su un solo worker. Un riavvio del worker (deploy o crash) riavvia tutti e 3 i listener insieme con backoff esponenziale. Il circuit breaker apre per 5 minuti in caso di fallimenti sostenuti. Perdita tipica di dati a un riavvio: 30-60 secondi.

Troubleshooting

SintomoCausa probabileSoluzione
1 camera verde, 2 rosseDNAT mal configurato su 2 IPVerificare le 3 regole Mikrotik rispetto al Passo 2
Tutte e 3 rosse, timeoutWireGuard giù o filter rule che bloccawg show sul router; verificare che forward in-interface=rela-vpn sia accettato
Verde ma 0 eventi in 5 minIndirizzo Modbus errato del registroConfrontare addr con il manuale del costruttore; testare con mbpoll dalla LAN del cliente
Eventi arrivano ma niente AHIManca il collegamento event_source_ids nell'assetPasso 6
Eventi OK ma niente alert WhatsAppmin_severity della fonte maggiore della severity realeAbbassare a info per debug, controllare i log dell'agente

Vantaggi chiave

  • Setup VPN unico: 1 cliente, 1 router, 1 .conf — indipendentemente da quante camere ci siano.
  • Tracciabilità per asset: AHI, RUL, KPI e task sono calcolati per camera individuale.
  • Manutenzione predittiva dal giorno 7: il modello impara i pattern normali in una settimana e inizia a rilevare la deriva.
  • Escalation differenziata: una camera critica (Linea A, lievito madre) può avere un'escalation più aggressiva di una camera di backup.
  • Zero hardware aggiuntivo: non si vende né si installa gateway, sensore o datalogger. Si riusa il PLC e la rete esistenti.

Vedi anche

In questa pagina