🛠️ Architettura ScadaInterface

⚙️ Scopo

Per garantire una comunicazione robusta e manutenibile tra il PLC e il sistema SCADA, è stata creata una struttura dati dedicata e unificata.
Questa struttura, un’istanza di ST_ScadaInterface, funge da unica fonte di verità per tutti i dati scambiati tramite OPC UA.

È una struttura di tipo NJ, progettata per sfruttare la comunicazione basata su “tag”, ed è suddivisa in due parti logiche:

  • Egress: Dati che fluiscono DAL PLC ALLO SCADA (sola lettura per lo SCADA).
  • Ingress: Dati e comandi che fluiscono DALLO SCADA AL PLC (scrivibili dallo SCADA).

⚙️ Struttura Master

Per prima cosa, definiamo la struttura principale che conterrà i due flussi di dati.

(* Struttura master per l'interfaccia SCADA *)
TYPE ST_ScadaInterface :
STRUCT				NJ
    Ingress	: ST_Ingress; // Dati IN ENTRATA dallo SCADA
    Egress	: ST_Egress;  // Dati IN USCITA verso lo SCADA
END_STRUCT
END_TYPE

⚙️ Struttura ST_Egress (PLC → SCADA)

Questa struttura contiene tutte le informazioni di stato, le analisi di produzione e i dati macchina che il PLC rende disponibili al sistema SCADA.

⚙️ Flag di Stato Macchina

Nome Variabile Tipo Dati Descrizione
IsRunning BOOL Flag VERO quando la macchina è in uno stato di marcia.
IsStopped BOOL Flag VERO quando la macchina è ferma.
IsInEmergency BOOL Flag VERO quando un’emergenza è attiva.
IsWaitingDownstream BOOL Flag VERO quando in attesa di un segnale dalla macchina a valle.
IsWaitingUpstream BOOL Flag VERO quando in attesa di un prodotto dalla macchina a monte.
IsAlarmActive BOOL Flag VERO quando un qualsiasi allarme macchina è attivo.

⚙️ Flag di Handshake e Controllo

Nome Variabile Tipo Dati Descrizione
AckChangeRecipe BOOL Conferma (Ack) del PLC a un comando di cambio ricetta.
RemoteControlEnable BOOL Flag che indica se il controllo remoto da SCADA è abilitato.
ProductionChangeOK BOOL Conferma del PLC che il cambio produzione è avvenuto con successo.
RecipeChangeOK BOOL Conferma del PLC che il cambio ricetta è avvenuto con successo.
RecipeChangeReject BOOL Flag che indica che il cambio ricetta è stato rifiutato dall’Operatore.
RecipeChangePostpone BOOL Flag che indica che il cambio ricetta è stato rimandato dall’Operatore.
MesCommunicationFault BOOL Flag VERO se c’è un errore di comunicazione con il MES.

⚙️ Informazioni Ricetta e Produzione

Nome Variabile Tipo Dati Descrizione
ActualRecipeIndex DINT Indice della ricetta attualmente attiva.
ActualRecipeName STRING[38] Nome della ricetta attualmente attiva.
ActualProductionInfo STRING[38] Descrizione del lotto/ordine di produzione attuale.
ActualProductionCode DINT Codice del lotto/ordine di produzione attuale.
MachineStatus DINT Codice di stato generale della macchina (come da visualizzazione HMI).

⚙️ Watchdog di Comunicazione

Nome Variabile Tipo Dati Descrizione
PlcWatchdog DINT Contatore di watchdog del PLC inviato allo SCADA.

⚙️ Strutture Dati di Analisi

Nome Variabile Tipo Dati Descrizione
TimeAnalytics ST_MachineTimers Statistiche dettagliate basate sul tempo.
ProductionAnalytics ST_ProductionAnalytics Statistiche dettagliate basate sulla produzione.

⚙️ Dati Allarmi

Nome Variabile Tipo Dati Descrizione
AlarmAnalytics ARRAY[0..1399] OF ST_AlarmAnalytics Dati analitici per ogni singolo allarme.
TopAlarms_ByFrequency ARRAY[0..99] OF ST_TopAlarmEntry Classifica degli allarmi più frequenti.
TopAlarms_ByDowntime ARRAY[0..99] OF ST_TopAlarmEntry Classifica degli allarmi che causano più downtime.
Alarms_Packed ARRAY[0..80] OF WORD Array compatto per visualizzazione rapida degli allarmi.

⚙️ Struttura ST_Ingress (SCADA → PLC)

Questa struttura contiene tutti i comandi e i setpoint che il sistema SCADA può inviare al PLC.

⚙️ Comandi di Controllo Produzione

Nome Variabile Tipo Dati Descrizione
ProductionChangeRequest BOOL Comando da SCADA per richiedere un cambio produzione/lotto.
RecipeChangeRequest BOOL Comando da SCADA per richiedere un cambio ricetta.
ResetCounters BOOL Comando da SCADA per resettare le statistiche.
RemoteStopMachine BOOL Comando da SCADA per arrestare la macchina da remoto.

⚙️ Richieste Dati Ricetta e Produzione

Nome Variabile Tipo Dati Descrizione
RequestRecipeIndex DINT Indice della ricetta richiesta.
RequestProductionQuantity DINT Quantità di produzione richiesta.
RequestProductionCode DINT Codice del lotto/ordine di produzione richiesto.
RequestProductionInfo STRING[38] Descrizione del lotto/ordine richiesta.

⚙️ Watchdog di Comunicazione

Nome Variabile Tipo Dati Descrizione
ScadaWatchdog DINT Contatore di watchdog dello SCADA ricevuto dal PLC.