Il programmatore SCADA

Articolo del 21/04/2023 - Redatto da Di Muro Francesco

Qualche giorno fa mi è capitato di ricevere una chiamata per un'offerta di lavoro, durante la quale, come di consueto, mi è stato chiesto di parlare delle mie esperienze lavorative, citando le competenze apprese più rilevanti.
Dopo poco aver iniziato a parlare, l’interlocutore mi ferma, chiedendomi:

“Scusa la domanda, ma cosa fai di preciso nel tuo lavoro? Non ho mai sentito parlare di SCADA”;

così, un po’ sorpreso, ho iniziato a spiegare in cosa consistesse il mio lavoro.
Questa conversazione mi ha spinto a scrivere questo articolo, all’interno del quale voglio parlare della mia personale esperienza lavorativa da programmatore SCADA, esponendo riflessioni personali riguardo questo ruolo a molti sconosciuto.

Sicuramente, rispetto a tante altre categorie di programmatori, il programmatore SCADA (o in gergo "scadista"), è un ruolo meno conosciuto e che suscita sicuramente più confusione che curiosità quando se ne sente parlare.

Per capire al meglio il contenuto di questo articolo, è bene partire da alcune definizioni.


Cosa significa SCADA?

SCADA è l'acronimo di Supervisory Control And Data Acquiring, o in italiano, [Sistema di] Controllo [,] di Supervisione e Acquisizione Dati.
Nella definizione più generica software & hardware friendly, lo SCADA è un server virtuale o fisico sul quale vengono eseguite le applicazioni e gli applicativi, raggruppabili in quattro macro-aree, grazie alle quali è possibile soddisfare i requisiti della natura del sistema stesso.

Nello specifico, possiamo suddividere le macro-aree in:

Un esempio pratico di SCADA può essere un pannello operatore montato a fronte quadro, il quale ha come compito il monitoraggio di un impianto CIP, storicizzando allarmi ed eventi su un database MS SQL, generando reports di lavorazione e allarmi ed eventi tramite tools customizzati.

Sebbene il ruolo dello scadista possa sembrare semplice e di poco impatto, la realtà è che non lo è per nulla in entrambi i casi.
Di seguito, sono riportati degli esempi pratici relativi alle macro-aree sopra citate, per descrivere al meglio il ruolo di un programmatore SCADA quanto più dettagliatamente possibile.


Drivers di comunicazione

Quando si parla di drivers di comunicazione, si parla di una vasta gamma di servizi grazie ai quali si accede a dei dati, grezzi e non, i quali sono fondamentali per ogni sistema SCADA.
Spesso, i drivers di comunicazione hanno una logica di funzionamento diversa tra loro, motivo per cui il programmatore deve studiarne la documentazione prima di implementarne la logica strutturale grazie alla quale lo SCADA può accedere ai dati di processo.
La maggior parte dei drivers di comunicazione si stanno muovendo ormai da anni verso una direzione standard e più attuale, sebbene ci siano casi in cui si preferisca l'utilizzo di standard di comunicazione legacy, i quali costringono i programmatori a dover intervenire lato software per ottenere i dati necessari.


L'Interfaccia Uomo-Macchina (HMI)

La navigazione in un sistema SCADA è fondamentale per gli utenti che ne fanno utilizzo, motivo per cui questa dev’essere semplice, di immediata comprensione, e deve poter soddisfare le richieste del cliente e degli standard europei o internazionali;
inoltre, la maggior parte della progettazione dell'interfaccia grafica, e la totalità della realizzazione degli elementi grafici della navigazione all’interno della stessa sono a carico del programmatore SCADA.


Storicizzazione e analisi dati

I servizi di storicizzazione dati, allarmi ed eventi riguardano un aspetto fondamentale ed estremamente delicato di ogni sistema SCADA che ne richiede l’implementazione, poiché grazie a questi dati non solo si tiene traccia di cosa accade al sistema e a ciò che questo monitora, ma, integrando l’utilizzo di strumenti dedicati per creare reports e dashboards (audit trail, allarmi storici, batch), viene effettuata anche un’analisi predittiva, grazie alla quale si riduce notevolmente la probabilità di accadimento di anomalie, in modo tale da garantire sicurezza e continuità di funzionamento dell’intero sistema.


Le altre responsabilità di un programmatore SCADA

Dopo aver parlato delle responsabilità fondamentali di un programmatore SCADA, mi piacerebbe parlare di quelle che sono le responsabilità indirette, tra le quali:

In tutto ciò, nella maggior parte dei casi, un programmatore SCADA si interfaccia direttamente con il cliente, presentando la struttura della navigazione, esempi di funzionamento delle specifiche richieste, ricevendo continuamente feedback per correggere e/o migliorare il sistema.

Data la mia passione per la programmazione in generale, ho sempre cercato e cerco tutt'oggi nuovi modi di fare le cose, avvicinandomi quanto più possibile alle tecnologie ampiamente utilizzate nel mercato del lavoro per i vari profili di programmatore.

A conferma di quanto appena scritto, grazie a svariati progetti di grande entità e alla mia voglia di arricchirmi professionalmente:


Pro e Contro di questo lavoro

Come in ogni lavoro, ci sono pro e contro che possono essere più o meno soggettivi, motivo per cui elencherò quelli che personalmente ritengo appartenere alle relative categorie.

Pro:

Contro:

Personalmente, penso che il programmatore SCADA sia un buon punto di partenza per chi, come me, non ha intrapreso un percorso universitario volto a mirare a una posizione lavorativa più "prestigiosa", e dopo sette anni di esperienza in questo ruolo, posso affermare che fare il programmatore SCADA non è IL lavoro, specialmente per i giovani che hanno voglia di crescere continuamente sia lavorativamente che economicamente.

Spero che questo articolo sia stato esaustivo e ti abbia fatto capire che un programmatore SCADA può conoscere molte più tecnologie di un programmatore specializzato in un solo ambito, rendendolo una piccola perla positivamente sorprendente.