banner dic23-mouser-728x90-price-availability-italian
Sistemi Real Time: Cosa Sono e Come Funzionano

Sistemi Real Time: Cosa Sono e Come Funzionano

I sistemi di controllo real-time svolgono un ruolo di primaria importanza nell’automazione industriale, garantendo un controllo chiaro e ben definito dell’intero processo produttivo. In questo articolo, esploreremo i concetti chiave legati ai sistemi di controllo real-time, le loro architetture, la classificazione e gli algoritmi di scheduling utilizzati. Vedremo anche l’importanza dei sistemi operativi real-time e un’opzione versatile come RTAI Linux.

Cos’è un sistema real-time?

Un sistema real-time è caratterizzato dal suo comportamento strettamente correlato all’andamento del tempo e dalla sua capacità di fornire una risposta adeguata entro un limite di tempo definito. La tempestività della risposta è essenziale, poiché il mancato rispetto dei tempi prestabiliti può avere conseguenze più o meno gravi sul processo produttivo.

Bilancia velocità di elaborazione e correttezza logica e temporale di un sistema di controllo real-time

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

Tuttavia, è importante sottolineare che “tempo reale” non significa necessariamente “veloce”. Non riuscire a calcolare una risposta entro una determinata deadline può essere altrettanto disastroso quanto calcolarla troppo presto. Pertanto, oltre alla correttezza logica dei feedback forniti, è essenziale garantire la correttezza temporale, ovvero che i risultati vengano prodotti entro i limiti temporali programmati.

Per garantire la corretta implementazione di tali sistemi, è fondamentale adottare un approccio rigoroso sin dalle prime fasi di sviluppo, supportato da servizi e strumenti di sviluppo, come un apposito software di simulazione.

Soft real-time vs Hard real-time

I sistemi real-time possono essere classificati in due categorie principali: sistemi soft real-time e sistemi hard real-time.

CTA MOS 2

Sistema soft real-time

Un sistema viene considerato soft real-time quando, sebbene non riesca a produrre il risultato richiesto entro il tempo previsto (quindi non rispetta una deadline), non comporta conseguenza catastrofiche.

Ad esempio, consideriamo un sistema di assemblaggio robotizzato in una fabbrica. In un’implementazione soft real-time, se il sistema non riesce a completare l’assemblaggio di una parte entro una determinata deadline potrebbe comportare solo problemi limitati al prodotto, senza influire sull’intero impianto di produzione o sul suo funzionamento generale.

Sistema hard real-time

Quando si ha a che fare con un sistema hard real-time, le prestazioni del sistema devono essere prevedibili e non devono per nessun motivo violare le deadline. Quindi tali sistemi devono essere in grado di eseguire le azioni richieste in ogni condizione con un tempo di risposta adeguato, altrimenti le operazioni eseguite potrebbero essere errate.

Il non rispetto delle deadlines temporali (missed deadline) non è ammesso, altrimenti potrebbe verificarsi un danneggiamento dell’intero sistema o di altri apparati.

Un esempio di sistema hard real-time potrebbe essere un sistema di controllo della temperatura del reattore di una centrale nucleare. Il mancato rispetto dei vincoli temporali può avere conseguenze disastrose.

In tali casi, il sistema deve essere in grado di eseguire l’azione richiesta senza compromessi, al fine di garantire la sicurezza e l’integrità del processo.

Esempi e applicazioni dei sistemi real-time

I sistemi di controllo real-time sono ampiamente utilizzati in diversi settori industriali. Ecco alcuni esempi di applicazioni:

  1. Automazione di linee di produzione: In un’azienda manifatturiera, un sistema di controllo real-time può monitorare e regolare i processi di produzione, ottimizzando la velocità, la qualità e la sicurezza delle operazioni. Ad esempio, può controllare il flusso di materie prime, attivare macchinari e verificare la corretta esecuzione dei passaggi di produzione.
  2. Controllo di impianti energetici: Nelle centrali elettriche o negli impianti di generazione di energia, un sistema di controllo real-time è fondamentale per monitorare i parametri operativi, regolare i livelli di potenza, gestire le emergenze e garantire la sicurezza dell’impianto.
  3. Controllo del traffico: Nei sistemi di gestione del traffico urbano, un sistema di controllo real-time può controllare i semafori in base al flusso di veicoli e alle condizioni del traffico, ottimizzando i tempi di percorrenza e riducendo la congestione stradale.
  4. Robotica industriale: I robot utilizzati in ambito industriale richiedono un controllo preciso e tempestivo. Un sistema di controllo real-time gestisce i movimenti dei robot, monitora i sensori e garantisce la sicurezza durante le operazioni di manipolazione e assemblaggio.

Le diverse architetture

I sistemi real-time possono essere classificati in base alle loro caratteristiche di funzionamento intrinseche e al ruolo che svolgono nella salvaguardia dell’integrità del processo produttivo e/o dello stabilimento.

Le due principali architetture sono l’architettura time-driven e l’architettura event-driven.

Architettura time-driven

L’architettura time-driven viene generalmente utilizzata per attività cicliche o periodiche in un impianto di produzione. In questi sistemi di controllo real-time, la frequenza di campionamento dei feedback dipende dalla costante di tempo del processo controllato.

La costante di tempo viene calcolata in base al tempo necessario all’impianto per rispondere a una variazione dei parametri. Pertanto, la frequenza di campionamento sarà più elevata per costanti di tempo più piccole.

Architettura event-driven

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

D’altra parte, l’architettura event-driven prevede l’esecuzione delle azioni al verificarsi di un evento specifico (trigger) senza considerare intervalli di tempo per l’esecuzione dei task. In questo caso, il sistema è in grado di pianificare un task nel preciso istante in cui si verifica l’evento che lo ha scatenato. Anche se questa configurazione non rientra direttamente nella categoria dei sistemi real-time, svolge comunque un ruolo importante nel contesto più ampio dell’automazione industriale.

Un requisito fondamentale in un sistema event-driven è la rapida risposta al verificarsi degli eventi previsti.

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.

Parallelismo e programmazione concorrente

Il parallelismo e la programmazione concorrente sono concetti fondamentali nel contesto dei sistemi real-time. Un sistema real-time deve gestire diverse attività indipendenti tra loro, come il controllo di un sistema e il monitoraggio degli allarmi. Queste attività, chiamate task o processi, vengono innescate da eventi e devono essere completate entro determinate deadline temporali. La finestra di tempo tra l’evento che scatena il task e la sua deadline è chiamata time scope.

Dato che gli eventi possono accadere in modo indipendente e che possono essere attivati contemporaneamente diversi task, sorge la necessità di trovare il miglior modo possibile per eseguire le attività in modo parallelo. Per questo motivo sono state messe a punto delle strategie in grado di ottimizzare l’esecuzione dei task, in base alle caratteristiche dell’unità di elaborazione del sistema di controllo industriale.

Scelta dell’unità di elaborazione dei sistemi real-time

L’elaborazione dei compiti di ogni task viene affidata alle unità di elaborazione o processori presenti nel sistema. È importante utilizzare processori con una velocità di elaborazione adeguata e tempi di esecuzione delle istruzioni noti. Anche l’accesso alla memoria e ai dispositivi di I/O deve essere veloce e affidabile.

In un’architettura multiprocessore, ci sono più processori che possono eseguire simultaneamente i compiti richiesti dai vari task, consentendo il parallelismo reale.

Tuttavia, quando si dispone di un singolo processore, si deve ricorrere al parallelismo logico. In questo caso, è necessario definire una strategia di gestione che sequenzializzi l’uso della risorsa fisica, ovvero il processore stesso. Questo approccio è conosciuto come programmazione concorrente o scheduling.
Nel contesto dei sistemi real-time, la programmazione concorrente diventa necessaria quando il numero di task da eseguire supera il numero limite di unità di elaborazione disponibili.

Per raggiungere prestazioni ottimali, i requisiti hardware dei sistemi real-time devono essere considerati attentamente. Inoltre, può essere utile prevedere delle funzioni di autodiagnostica ed un sistema ridondante per garantire la continuità operativa in caso di guasti.

Processo di dispatching, vincoli di precedenza e vincoli di mutua esclusione per l’automazione industriale Real-Time

Il processo di dispatching è un aspetto chiave della programmazione concorrente. Si tratta di un meccanismo che seleziona i task da eseguire e assegna loro il processore disponibile. Il dispatching tiene conto delle priorità dei task e delle deadline temporali associate ad essi, garantendo che i compiti più urgenti vengano eseguiti prima. I task in attesa di esecuzione vengono generalmente mantenuti in una coda dei processi, che rappresenta l’ordine in cui verranno eseguiti.

Inoltre, i sistemi real-time devono affrontare i vincoli di precedenza e i vincoli di mutua esclusione su risorse condivise. I vincoli di precedenza stabiliscono l’ordine in cui i task devono essere eseguiti, ad esempio, quando un task dipende dai risultati di un altro task. I vincoli di mutua esclusione gestiscono l’accesso alle risorse condivise, garantendo che un solo task alla volta possa utilizzare una determinata risorsa per evitare conflitti o inconsistenze.

Interrupt ed ottimizzazione dei sistemi di controllo real-time

In alcuni sistemi, viene prevista anche una funzione di preemption, che permette l’interruzione momentanea di un task già in esecuzione, per consentire l’esecuzione di altre operazioni più importanti. Il task interrotto torna in coda ed in seguito riprenderà dal punto in cui era stato interrotto.

Attraverso l’implementazione di algoritmi di scheduling appropriati e l’uso di tecniche di sincronizzazione e comunicazione tra task, è possibile ottenere una gestione ottimale delle risorse e massimizzare l’efficienza del sistema. Ma è importante ricordare che diversi task potrebbero essere strettamente collegati e dipendenti tra loro. Questo significa che questi processi non sempre possono essere eseguito in base ad un ordine arbitrario, ma possono essere presenti dei vincoli su risorse condivise (di precedenza o di mutua esclusione).

Algoritmi di scheduling real-time

Algoritmi di scheduling real-time

Nei sistemi real-time più semplici in cui i task e i loro tempi di esecuzione sono noti, è possibile gestire i task uno alla volta senza un vero e proprio scheduler. Tuttavia, 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.

Nei sistemi real-time in cui il carico di lavoro cambia frequentemente a causa di eventi esterni, è consigliabile utilizzare un algoritmo di scheduling dinamico. È necessario programmare regole sulla priorità di esecuzione dei task, ad esempio dando la precedenza al lavoro più breve o a un task prioritario, e sulla gestione e l’utilizzo delle risorse.

Quando si ha a che fare con delle applicazioni di controllo semplici, l’assegnazione dei task e delle risorse può essere determinata semplicemente dal programma utente. Tuttavia, per operazioni più complesse, è indispensabile prevedere un sistema operativo che si occupi della pianificazione ed esecuzione dei processi.

Quali sono i Sistemi Operativi Real-time

L’efficienza e la corretta gestione dei task real-time sono possibili grazie all’impiego di sistemi operativi real-time appositamente progettati.

Ma tutti i SO real-time presentano delle criticità di progettazione, soprattutto quando non è possibile testarli direttamente sul campo, come ad esempio in una centrale nucleare. Pertanto, per garantirne il corretto funzionamento, è necessario simulare diversi scenari utilizzando software specifici per eseguire tutti i test necessari.

Requisiti di un SO real-time

Il primo requisito per un sistema operativo real-time è la capacità di pianificare l’esecuzione dei processi assegnando loro un livello di priorità.

Inoltre, deve essere in grado di gestire il multitasking pre-emptive, gestire gli interrupt, evitare situazioni di stallo (deadlock) e fornire un meccanismo di sincronizzazione tra i processi.

Dato che ogni campo di applicazione richiede funzionalità specifiche, un sistema operativo real-time deve anche mettere a disposizione degli strumenti atti a semplificare il richiamo delle funzioni delle quali si ha bisogno in fase di programmazione.

RTAI Linux: Un sistema operativo real-time versatile

Un’opzione per lo svolgimento di attività più complesse che richiedono funzionalità di un sistema operativo tradizionale, come un file system e protocolli di rete, è l’utilizzo di RTAI Linux.

Sebbene Linux non sia stato progettato come un sistema operativo real-time, la versione RTAI è stata modificata per renderla adatta a tale scopo.

Questo particolare sistema operativo, offre funzionalità di scheduling preciso e deterministico, consentendo la gestione di task con vincoli temporali rigidi.
In poche parole, funziona come un dispatcher di interrupt: rileva gli interrupt e li reindirizza a Linux quando necessario.

RTAI mette a disposizione gli stessi servizi del kernel Linux, ma ha delle funzioni caratteristiche che lo rendono un sistema operativo industriale real-time ed utilizza il concetto di Hardware Abstraction layer (HAL) che semplifica la portabilità da una versione all’altra di Linux.

Un altro aspetto interessante, è la presenza nativa di alcune librerie utili per l’interfacciamento tra schede di acquisizione dati e diversi software (RTAILab).

Altri sistemi operativi real-time

Esistono anche altri sistemi operativi real-time ampiamente utilizzati, come:

Libreria RTAI Linux per sistemi di automazione industriale real-time
Libreria RTAI Linux real-time

1. FreeRTOS: un sistema operativo real-time open source, leggero e altamente portabile. FreeRTOS offre una vasta gamma di funzionalità per la gestione di task, semafori, code di messaggi e altro ancora. È ampiamente utilizzato in applicazioni embedded e IoT.

3. VxWorks: un altro sistema operativo real-time ampiamente utilizzato, che offre elevate prestazioni e una vasta gamma di funzionalità. VxWorks è spesso impiegato in settori come l’aerospaziale, la difesa e le telecomunicazioni, in cui sono richieste affidabilità e determinismo.

2. QNX: un sistema operativo real-time noto per la sua affidabilità e prestazioni in tempo reale. QNX è stato progettato per fornire una piattaforma sicura e stabile per applicazioni critiche, come sistemi di controllo industriale, automobili e dispositivi medici.

4. INTEGRITY RTOS: un sistema operativo real-time basato su microkernel, noto per la sua robustezza e capacità di isolamento dei task. INTEGRITY RTOS è spesso utilizzato in applicazioni critiche, come sistemi di avionica e controlli industriali complessi.

Questi sono solo alcuni esempi di sistemi operativi real-time disponibili sul mercato. La scelta del sistema operativo dipende dalle esigenze specifiche dell’applicazione, considerando fattori come la criticità delle operazioni, i requisiti di tempo reale, la complessità del sistema e le risorse hardware disponibili.

Servizi e strumenti per i sistemi di controllo real-time

Per sviluppare e implementare sistemi di controllo real-time efficaci, è importante disporre di servizi e strumenti adeguati.

Ecco alcuni esempi:

  1. Software di simulazione: I software di simulazione consentono di testare e validare il comportamento dei sistemi di controllo real-time prima della loro implementazione effettiva. Possono fornire una rappresentazione virtuale dell’impianto o del processo produttivo, consentendo di identificare eventuali problemi o inefficienze prima che si verifichino nella realtà.
  2. Piattaforme di sviluppo hardware: Esistono diverse piattaforme hardware specifiche per lo sviluppo di sistemi di controllo real-time. Queste piattaforme offrono prestazioni elevate, tempi di risposta rapidi e funzionalità integrate per il controllo dei dispositivi e la comunicazione in tempo reale
  3. Framework di programmazione: I framework di programmazione real-time forniscono strumenti, librerie e modelli di sviluppo per semplificare l’implementazione dei sistemi di controllo real-time. Consentono di gestire il scheduling dei task, la sincronizzazione dei processi e la gestione delle risorse in modo efficiente.

Conclusione

In conclusione, i sistemi di controllo real-time sono fondamentali nell’automazione industriale per garantire un controllo preciso e tempestivo dei processi produttivi. Attraverso l’utilizzo di architetture adeguate, algoritmi di scheduling e sistemi operativi real-time, è possibile monitorare e controllare i processi in tempo reale, garantendo prestazioni ottimali, sicurezza e efficienza. Nel contesto dell’Industria 4.0, l’applicazione di soluzioni real-time diventa ancora più cruciale per sfruttare appieno i vantaggi della digitalizzazione e dell’interconnessione dei sistemi industriali.

CTA MOS 2

Rimani sempre aggiornato. Iscriviti alla nostra Newsletter

Ivan Scordato
progettista elettrico e appassionato di nuove tecnologie. Scrive articoli di approfondimento tecnico e conosce anche tecniche SEO per la scrittura su web.