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 dei sistemi di controllo real-time, le loro architetture, classificazioni e algoritmi di scheduling. Vedremo anche l’importanza dei sistemi operativi real-time (RTOS) e opzioni versatili come RTAI Linux.

Cos’è un sistema real-time?

Un sistema real-time è caratterizzato da un 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 processa i segnali di input all’interno di una finestra temporale ben definita. La correttezza temporale è fondamentale: i risultati devono essere prodotti entro i limiti temporali programmati.

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. Allo scopo, può essere utile prevedere delle funzioni di autodiagnostica ed un sistema ridondante per garantire la continuità operativa in caso di guasti.

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 e dei Sistemi Operativi Real-time (RTOS). Devono essere considerati attentamente anche i requisiti hardware dei sistemi Real-Time.

Ma quali sono gli aspetti fondamentali sul funzionamento dei sistemi Real-Time? Eccoli qui di seguito.

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.

CTA Lead gen Sensori

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 capace di sequenzializzare l’uso della risorsa fisica, ovvero il processore stesso. Questo approccio è conosciuto come programmazione concorrente o scheduling.

Nei sistemi Real-Time, la programmazione concorrente diventa necessaria quando il numero di task da eseguire supera il numero limite di unità di elaborazione disponibili.

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, nei sistemi Real-Time 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 e verrà riavviato in seguito 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 specificare che diversi task potrebbero essere strettamente collegati e dipendenti tra loro: i processi non sempre possono essere eseguito in base ad un ordine arbitrario, ma potrebbero essere presenti dei vincoli su risorse condivise (di precedenza o di mutua esclusione).

Tipi di Sistemi Real-Time

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. La prima classificazione può essere fatta in base alla corrispondenza temporale, in seguito in dipendenza all’architettura.

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.

Sistema Soft Real-Time

Un sistema viene considerato Soft Real-Time quando, sebbene non riesca a produrre il risultato richiesto entro il tempo previsto (non rispetta la deadline), non si verificano conseguenze 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

In un sistema Hard Real-Time, le prestazioni del sistema devono essere prevedibili e non devono assolutamente violare le deadline. Il non rispetto delle deadlines temporali (missed deadline) non è ammesso, altrimenti potrebbe verificarsi un danneggiamento dell’intero sistema o di altri apparati.

Quindi, tali sistemi devono essere in grado di eseguire le azioni richieste per ogni condizione di funzionamento e con un tempo di risposta adeguato. Altrimenti le operazioni eseguite potrebbero essere errate.

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. Il sistema deve essere in grado di eseguire l’azione richiesta senza compromessi, al fine di garantire la sicurezza e l’integrità del processo.

Architetture dei sistemi Real-Time

Le due architetture principali dei sistemi Real-Time sono: Architettura Time-Driven e 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 Real-Time Event-Driven è la risposta al verificarsi degli eventi previsti.

Un esempio di applicazione per questa architettura riguarda la supervisione di un impianto idrico, nel quale è necessario chiudere una valvola nel momento in cui si rileva una contaminazione dell’acqua.

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.

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.

Algoritmi di scheduling real-time

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 (RTOS)

L’efficienza e la corretta gestione dei task Real-Time sono possibili grazie all’impiego di sistemi operativi Real-Time appositamente progettati. Un Real-Time Operating System (RTOS) è progettato per garantire che le operazioni siano completate entro scadenze temporali precise.

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, tra i quali:

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.

Possibili Evoluzioni degli RTOS

Gli RTOS stanno attraversando un’evoluzione significativa, in gran parte guidata dalle crescenti esigenze delle tecnologie emergenti come l’Internet delle Cose (IoT) e l’edge computing. Queste tendenze stanno spingendo gli RTOS verso una maggiore scalabilità e flessibilità per gestire una vasta gamma di dispositivi connessi e distribuiti.

Integrazione con IoT

Gli RTOS vengono sempre più integrati in dispositivi IoT per garantire tempi di risposta rapidi e affidabili. Questa integrazione permette di gestire efficacemente i dati in tempo reale provenienti da sensori e attuatori, migliorando l’efficienza e la reattività delle applicazioni IoT.

Miglioramenti nella Sicurezza

Con l’aumento dei dispositivi connessi, la sicurezza è diventata una priorità. Gli RTOS di nuova generazione stanno incorporando funzionalità avanzate di sicurezza, come l’autenticazione, la crittografia dei dati e la gestione sicura delle chiavi, per proteggere le comunicazioni e i dati sensibili.

Supporto per l’Edge Computing

Gli RTOS stanno evolvendo per supportare l’edge computing, dove l’elaborazione dei dati avviene vicino alla fonte dei dati stessi, riducendo la latenza e migliorando la velocità di risposta. Questo è cruciale per applicazioni come la guida autonoma, la realtà aumentata e la manutenzione predittiva.

Machine Learning e Intelligenza Artificiale

L’integrazione di capacità di machine learning e intelligenza artificiale negli RTOS permette di creare sistemi più intelligenti che possono adattarsi e ottimizzare le loro operazioni in tempo reale. Questo è particolarmente utile in settori come l’automazione industriale e la sanità, dove i sistemi possono apprendere dai dati raccolti per migliorare le prestazioni e la precisione.

Sviluppo di Standard Aperto

L’evoluzione degli RTOS include anche lo sviluppo e l’adozione di standard aperti che promuovono l’interoperabilità tra diversi sistemi e piattaforme. Questo facilita lo sviluppo e la manutenzione di applicazioni real-time, riducendo i costi e migliorando la flessibilità.

Virtualizzazione e Containerizzazione

L’adozione di tecniche di virtualizzazione e containerizzazione negli RTOS consente di eseguire più applicazioni in modo isolato e sicuro sulla stessa piattaforma hardware. Questo aumenta l’efficienza delle risorse e semplifica la gestione delle applicazioni.

Queste evoluzioni rendono gli RTOS sempre più fondamentali per l’implementazione di sistemi complessi e ad alte prestazioni in vari settori industriali, continuando a soddisfare le rigide esigenze temporali delle applicazioni real-time.

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 RTOS, è possibile monitorare e controllare i processi in tempo reale, garantendo prestazioni ottimali, sicurezza ed efficienza. Nel contesto dell’Industria 4.0, l’applicazione di soluzioni Real-Rime diventa ancora più cruciale per sfruttare appieno i vantaggi della digitalizzazione e dell’interconnessione dei sistemi industriali.

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