Sistemi di controllo real-time per l’automazione industriale

In ambito industriale i sistemi di controllo real-time hanno un ruolo di primaria importanza. Il loro impiego garantisce un controllo chiaro e ben definito dell’intero processo produttivo.
È possibile classificare i sistemi real-time in base alle loro intrinseche caratteristiche di funzionamento, ma anche in base al ruolo che hanno nel salvaguardare l’integrità di un processo produttivo e/o dello stabilimento. Questi devono comunque sempre rispettare determinate regole e deadline che vengono opportunamente e chiaramente definite durante la fase di progettazione o di implementazione.

Cosa è un sistema real-time

Un sistema può essere definito real-time se il comportamento del sistema è strettamente collegato all’espressione del tempo e se è quindi in grado di produrre una risposta adeguata entro un limite di tempo definito.

Se la risposta non avviene entro un tempo predeterminato, il processo di produzione può risentirne più o meno gravemente. Per questo motivo è molto importante che il loro sviluppo sia fin dall’inizio rigoroso ed assistito da strumenti opportuni (es: software di simulazione).

Il tempo viene misurato utilizzando un vero e proprio sistema di clock ed il sistema riceve e processa i segnali di input all’interno di una finestra temporale ben definita.

Tempo reale non vuol dire necessariamente veloce: non riuscire a calcolare una risposta entro un certo tempo (deadlines) può essere altrettanto disastroso che calcolarla prima del tempo dovuto. Per questo motivo è importante che venga garantita non soltanto la correttezza logica, riguardante la corrispondenza dei feedback forniti con quelli previsti, ma anche la correttezza temporale, facendo in modo che i risultati vengano prodotti entro certi limiti temporali programmati.

Architettura dei sistemi real-time

Architettura time-driven

Questa architettura viene generalmente utilizzata per lo svolgimento di attività cicliche o periodiche in un impianto di produzione.
In questa tipologia di sistemi di controllo real-time, la costante di tempo viene calcolata direttamente in corrispondenza al tempo necessario all’impianto per rispondere ad una variazione dei parametri.

La frequenza di campionamento dei feedback dipende dalla costante di tempo del processo da controllare, e quindi sarà molto più veloce per costanti di tempo piccole.

Architettura event-driven

Quando si è in presenza di un’architettura event-driven, le azioni vengono eseguite al verificarsi di un determinato evento (trigger) e non vengono presi in considerazione degli intervalli di tempo per l’esecuzione dei task.

In questo caso il sistema sarà in grado di schedulare un task nel preciso istante in cui si verifica l’evento che lo ha triggerato. Questa configurazione non è direttamente classificabile come real-time, ma svolge un ruolo importante nel contesto più ampio.
Un requisito fondamentale, è la celere risposta al verificarsi dell’evento previsto.

Un esempio di applicazione per questo sistema, può riguardare la supervisione di un impianto idrico, nel quale è necessario chiudere una valvola nel momento in cui si rileva una contaminazione dell’acqua.

Varsavia, controllo della qualità dell’acqua con le vongole.

Classificazione dei sistemi real-time

Sistema soft real-time

Un sistema viene considerato soft real-time quando, anche se non è in grado di produrre il risultato richiesto al momento giusto (magari una parte di esso non è in grado di soddisfare una determinata deadline), il processo di produzione non ne risente “particolarmente”.
Lo stesso non vale per i sistemi hard real-time.

Un esempio di sistema soft real-time è dato da un sistema di produzione con delle linee di assemblaggio robotizzate: se la deadline non viene rispettata, potrebbero verificarsi degli errori durante l’assemblaggio dei pezzi, ma non andrà ad influire direttamente (o indirettamente) sull’intero impianto di produzione.

Sistema hard real-time

Quando si ha a che fare con un sistema hard real-time, il non rispetto delle deadlines temporali (missed deadline) non è ammesso, in quanto questo porterebbe al danneggiamento del sistema o di altri apparati.

Questo sistema deve essere in grado di eseguire l’azione richiesta in ogni condizione, altrimenti se non producono i risultati nel momento richiesto, le operazioni risulteranno errate.

Se il tempo di risposta di un sistema real-time non è adeguato, ne risente l’intero processo: le prestazioni del sistema devono essere prevedibili e non devono violare le deadline.

Un esempio di sistema hard real-time è dato da un sistema di controllo della temperatura del reattore di una centrale nucleare, dove il mancato rispetto di determinati vincoli temporali, può provocare un disastro.

Requisiti Hardware

Dal punto di vista hardware, è importante che vengano utilizzati dei processori con un’adeguata velocità di elaborazione, che il tempo di esecuzione delle istruzioni sia noto e che l’accesso alla memoria e ai dispositivi di I/O sia veloce ed affidabile.

Non meno importante è la presenza di funzioni di autodiagnostica e in alcuni contesti può essere utile prevedere per sicurezza un sistema ridondante, in modo da scongiurare l’interruzione del funzionamento anche in caso di guasti del sistema primario.

Quando l’applicazione di controllo è semplice, l’assegnazione dei task e delle risorse viene determinato dal programma utente. Invece per operazioni più complesse è indispensabile prevedere un sistema operativo che si occupi della pianificazione dell’esecuzione dei processi e della gestione della comunicazione tra i processi.

So real-time

Requisiti di un SO real-time

I sistemi operativi real-time presentano delle criticità di progettazione, aggravate dal fatto che in alcuni casi non è possibile provarli direttamente sul campo (es. centrale nucleare).
Per questo motivo, per garantirne il corretto funzionamento, si possono simulare diversi scenari tramite dei software specifici, in modo tale da eseguire tutti i test necessari.

Il primo requisito per un sistema operativo real-time è la possibilità di poter effettuare una pianificazione dell’esecuzione che preveda un meccanismo di assegnazione di priorità ai processi.

Deve inoltre essere multitasking pre-emptive, ma anche in grado di gestire gli interrupt, poter evitare situazioni di stallo (deadlock) ed integrare un meccanismo di sincronizzazione tra i processi.

Dato che ogni campo di applicazione necessita di funzioni specifiche, un SO real time deve mettere a disposizione degli strumenti atti a semplificare il richiamo delle funzioni delle quali si ha bisogno in fase di programmazione.

RTAI Linux

Per lo svolgimento di attività più complesse che richiedono la presenza di certe funzioni di un sistema operativo (ad esempio file system e protocolli di rete), si può prendere in considerazione l’utilizzo di RTAI Linux.
Linux non è stato progettato per essere un sistema operativo real time, ma questa versione è stata modificata in modo tale da renderla utile allo scopo.

RTAI mette a disposizione gli stessi servizi del kernel Linux, ma ha delle caratteristiche che lo rendono un sistema operativo industriale real time.
Essenzialmente si tratta di un dispatcher di interrupt, infatti si occupa principalmente di rilevare gli interrupt e di reindirizzarli a Linux quando necessario.

RTAI-Lib

Questa versione di Linux utilizza il concetto di Hardware Abstraction layer (HAL) che rende semplificata la portabilità da una versione all’altra di Linux ed include delle librerie utili all’interfacciamento fra schede di acquisizione dati e diversi software (RTAILab).

Algoritmi di scheduling real-time

Nei sistemi real-time più semplici in cui i task e i loro tempi di esecuzione sono tutti noti, si può anche fare a meno di uno scheduler, gestendo i task uno per volta.

In sistemi real-time più complessi che prevedono un numero maggiore (ma comunque fisso) di task che non operano in modo pipeline, si può optare per uno scheduling statico.
In base all’elenco dei task da eseguire e al tempo di completamento previsto per ciascuno di essi, in fase di progettazione o di implementazione è possibile pianificare i tempi di esecuzione dei task.

In quei sistemi real-time dove il carico di lavoro cambia molto frequentemente a causa di eventi esterni, è invece bene prevedere un algoritmo di scheduling dinamico.
Per questo bisogna programmare alcune regole sulla priorità di esecuzione dei task (prima il lavoro più breve, task prioritario, …) e sulla gestione ed impiego delle risorse.

Industria 4.0 e controllo in real-time

Le aziende che investono in soluzioni Industry 4.0 possono aumentare la propria efficienza, favorire la collaborazione tra le varie parti interessate, effettuare un’analisi predittiva e sfruttare al meglio i dati ricavati dall’intero complesso di sensori.
In questo modo, ogni dipartimento può prendere delle decisioni migliori grazie allo studio di questi dati.

Il concetto di real-time diventa ancora più importante e versatile nel contesto di Industria 4.0, nel quale prevedere determinate soluzioni hardware e software per l’assegnazione dei task e la gestione delle risorse in modo intelligente, è l’unico modo per assicurare il raggiungimento di un alto grado di efficienza ed omogeneità.

Ivan Scordato