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:
driver(s) di comunicazione con i dispositivi del campo (PLCs, registratori, server OPC o altri sistemi SCADA);
servizi “core” SCADA (database di processo, navigazione grafica nel sistema);
servizi di storicizzazione dati, allarmi ed eventi;
strumenti di reportistica e analisi dati.
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:
la responsabilità di interfacciarsi con teams di periti elettronici per definire, per esempio, gli ingressi e le uscite utilizzate da un PLC per l’interfacciamento tra il campo (ciò che dev’essere monitorato/controllato) e il sistema SCADA;
la responsabilità di interfacciarsi con ingegneri di processo per definire i parametri critici e le logiche di funzionamento di un sistema, servendosi di diagrammi di flusso e specifiche documentali, le quali assicurano il funzionamento del sistema stesso nel rispetto degli standard del cliente e di quelli europei/internazionali;
la responsabilità di interfacciarsi con ingegneri di validazione, insieme ai quali creare documenti di progetto come manuali operatore, specifiche di dettaglio software, liste segnali, protocolli di convalida testare e validare i sistemi, e molti altri documenti.
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:
ho imparato e affinato le mie abilità in sette linguaggi di programmazione, tra i quali Python, VBA e T-SQL;
ho imparato l’uso di terminologie nel settore in cui lavoro;
ho imparato a lavorare in team, ma specialmente a lavorare da solo;
ho imparato i concetti e realizzato servers, clients, APIs, configurazioni di rete e molte altre cose.
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:
possibilità di lavorare da remoto, azienda permettendo;
possibilità di conoscere ambienti e sistemi differenti, grazie ai quali ci si arricchisce a livello personale e lavorativo;
possibilità di sviluppare competenze di team working (azienda permettendo);
possibilità di sviluppare competenze di team leading (azienda permettendo);
possibilità di sviluppare competenze sociali in diversi ambiti (interfacciamento con diversi teams, interfacciamento con i clienti);
possibilità di continuo studio di tecnologie per realizzare sistemi SCADA rispettanti norme dei clienti e/o internazionali (azienda permettendo).
Contro:
continue trasferte, per via del fatto che la maggior parte delle attività devono essere svolte presso lo stabilimento del cliente, tranne in alcuni casi in cui il cliente predispone un sistema di accesso remoto alla propria infrastruttura di rete;
lavorare in smart working non sempre viene concesso, e nel caso in cui venga concesso, gli strumenti per accedere ai servers aziendali sono legacy e non user-friendly;
salario basso rispetto alle responsabilità e alle mansioni, con RAL raramente superiore a € 25.000;
possibilità di essere vittime di overworking, per via del fatto che ci si può trovare a gestire contemporaneamente più progetti diversi tra di loro;
bassa probabilità di crescita all’interno dell’azienda, specialmente in quelle più piccole, dato che le tecnologie utilizzate sono sempre le stesse, e delle volte sono tecnologie obsolete;
valore non immediatamente riconosciuto nel mercato del lavoro, dato che è un ruolo di nicchia, nel quale vengono utilizzate tecnologie poco conosciute rispetto ad altri profili in ambito programmazione.
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.