Errori del software di sicurezza delle macchine: come evitarli?

Le funzioni di sicurezza delle macchine sono sempre più frequentemente controllate da equipaggiamenti programmabili; quindi il funzionamento sicuro è legato alla correttezza del software, elemento essenziale per evitare comportamenti pericolosi delle macchine.

Essendo il software caratterizzato dalla presenza di guasti sistematici — e non casuali — l’unica misura attuabile per limitare l’eventualità che il software (sia applicativo che di sistema), che controlla funzioni di sicurezza, provochi comportamenti pericolosi della macchina è evitare, per quanto possibile, l’introduzione di errori durante le fasi di sviluppo del software (incluse revisioni e correzioni).

Uno degli elementi più critici è la compresenza di software che svolge funzioni di sicurezza e di software necessario al normale funzionamento della macchina.

La norma UNI EN ISO 13849-1:2016 prescrive che le parti di software che non svolgono funzioni di sicurezza non influenzino in modo negativo quelle che controllano circuiti di comando che devono raggiungere un livello di prestazione richiesto.

Più in generale il software dedicato a funzioni di sicurezza che devono raggiungere un livello di prestazione richiesto minore non deve influire su parti del software di funzioni per le quali il livello di prestazione richiesto è più alto.

Tale rischio è maggiore per i PLC integrati che controllano il normale funzionamento della macchina e che svolgono anche funzioni di sicurezza, in quanto in questo caso diverse parti del software (sicuro e non) convivono sullo stesso equipaggiamento programmabile.

Un caso che capita di riscontrare, nel software di controllo delle macchine, è l’utilizzo di variabili non sicure in rami di software che svolgono funzioni di sicurezza.

A seconda di come — e dove — vengono usate queste variabili, potrebbe essere che, intere sezioni di software, non vengano eseguite e — di conseguenza — le funzioni che controllano, ad esempio il monitoraggio di una pressione o una temperatura, non siano attive.

Anche se gli strumenti di programmazione normalmente evidenziano gli elementi del software sicuri e quelli funzionali, essi non impediscono (e non possono impedire) che parti del software non sicuro siano introdotte nelle sezioni che svolgono funzioni di sicurezza.

Infatti è molte volte necessario, ad esempio, che uno stesso attuatore sia arrestato sia come parte del normale ciclo di lavoro della macchina, che per ragioni di sicurezza (ad esempio a seguito dell’apertura di un riparo mobile interbloccato).

È quindi essenziale eseguire attività di verifica della corretta scrittura del software — come prescritto dal §4.6 della norma UNI EN ISO 13849-1:2016 — tese ad individuare errori che possano compromettere il funzionamento sicuro della macchina.

Infatti le criticità insite in una scrittura non corretta del software non si manifesterebbero durante il normale funzionamento della macchina o nel corso di collaudi funzionali.

Ad esempio, una variabile non sicura non compromette il corretto funzionamento della macchina finché il PLC funziona regolarmente: in caso di guasto o di condizioni anomale, però, tale variabile potrebbe assumere valori non desiderati e causare comportamenti pericolosi della macchina.

Dunque è fondamentale che venga effettuata anche una validazione del software esaustiva, che simuli anche condizioni anomale e di guasto, in modo da evidenziare eventuali comportamenti non sicuri dei circuiti di comando della macchina.

In mancanza di queste attività, gli errori presenti nei software sono difficili da scovare in quanto “nascosti” all’interno del codice; la complessità del comportamento di un equipaggiamento programmabile lo rende decisamente più critico rispetto a circuiti cablati, analizzabili con maggiore semplicità.

Se vuoi approfondire l’argomento software di sicurezza, ti consiglio di partecipare a questo corso:

Torna in alto