Sistemi real-time in Labview

LabVIEW real-time è un potente linguaggio grafico di programmazione privo della complessità presente nei sistemi di sviluppo tradizionali. Combinando un’estrema facilità di utilizzo con la flessibilità di un potente linguaggio come l’ANSI C, LabVIEW real-time consente di specificare il comportamento di un sistema assemblando e connettendo singoli blocchi funzionali.

La serie di prodotti real-time di National Instruments coniuga l’ambiente di sviluppo grafico di LabVIEW (basato sul Glanguage) con la tecnologia embedded con lo scopo di ottenere sistemi dedicati real-time ed FPGA in grado di assicurare un comportamento deterministico ed elevata efficienza. Con LabVIEW RT è possibile produrre applicazioni con un comportamento predicibile nel tempo ed un ottimo livello di affidabilità. La filosofia di NI applicata al mondo dell’automazione si sintetizza nel modo seguente: “hardware robusto unito ad un software flessibile”.

Cosa si intende per real-time?

I sistemi operativi real-time sono nati dall’esigenza di risolvere due diversi tipi di problemi: risposta agli eventi e sistemi di controllo in anello chiuso. Per risposta agli eventi si intende il  requisito, per un’applicazione, di rispondere ad uno stimolo entro un ben determinato lasso di tempo; si consideri, come esempio, il sistema di controllo di un airbag di una normale autovettura.  I sistemi di controllo in anello chiuso, invece, elaborano continuamente un segnale di retroazione (feedback) con lo scopo di regolare  il valore da assegnare alle variabili di output controllate; come esempio, si consideri il sistema di stabilizzazione dell’assetto di un elicottero. Entrambi i sistemi richiedono il completamento di un’operazione entro i tempi prestabiliti, sia essa la risposta ad un evento esterno oppure il soddisfacimento di una legge di controllo: questa caratteristica viene denominata con il termine “determinismo”. Sistemi operativi quali Microsoft Windows e Mac OS costituiscono un’eccellente piattaforma su cui sviluppare ed eseguire applicazioni di misura e con trollo non critiche. Tuttavia, essi non sono adatti per eseguire applicazioni che richiedono delle prestazioni di tipo deterministico. Per contro, i sistemi operativi real-time mettono a disposizione dell’utente dei meccanismi  mediante i quali si riesce ad ottenere un’applicazione con comportamenti e tempi di risposta predicibili; un esempio di tali meccanismi è rappresentato dalla possibilità di assegnare dinamicamente la priorità ad un processo. Nei sistemi real-time deterministici esiste un’importante grandezza, denominata “jitter”, la quale misura il grado di determinismo del sistema stesso: per jitter si intende infatti il massimo scostamento del tempo di elaborazione effettivamente misurato dal tempo di elaborazione “ideale” che si vorrebbe raggiungere. Minore è il jitter, maggiore è il grado di determinismo del sistema. Con il termine “latenza” si indica invece il tempo richiesto per rispondere ad un determinato evento: nei sistemi real-time occorre sempre garantire un valore di latenza massimo da non oltrepassare nemmeno nei casi peggiori.

L’architettura di LabVIEW RT

L’architettura di LabVIEW real-time si compone dei seguenti tre elementi: LabVIEW, il sistema di sviluppo RT, ed il motore RT (figura 1).

Figura 1: l’architettura di LabVIEW RT.

Figura 1: l’architettura di LabVIEW RT.

Il modulo real-time di LabVIEW ha la caratteristica di poter indirizzare diversi tipi di microprocessore su cui eseguire un’applicazione.  Il sistema di sviluppo RT esegue il download delle VI di LabVIEW RT sul motore RT in esecuzione sul target, il quale a sua volta esegue le VI. Il motore RT fornisce delle performance real-time di tipo deterministico in quanto è stato progettato appositamente per l’hardware della serie RT ed impiega un sistema operativo real-time. Sia il sistema di sviluppo che LabVIEW possono comunicare con il motore. Quando si usa il sistema  di sviluppo, tutte le VI sono predisposte per l’hardware della serie RT e vengono eseguite dal motore. In altre parole, il sistema di sviluppo ed il motore eseguono parti diverse delle stesse VI, come mostrato in figura 2.

Figura 2: sistema di sviluppo RT e motore RT.

Figura 2: sistema di sviluppo RT e motore RT.

Il sistema di sviluppo RT visualizza  il pannello frontale della VI mentre il motore RT esegue il  codice corrispondente ai blocchi utilizzati. Il  sistema di sviluppo comunica con il  motore per mezzo di un’interfaccia utente. Durante lo sviluppo, l’utilizzo di questa interfaccia è molto prezioso. Una volta scaricate e poste in esecuzione le VI, si può mantenere aperto il sistema di sviluppo RT in modo tale da visualizzare lo stato delle VI embedded; i controlli e le indicazioni presenti sul pannello vengono aggiornati per mezzo di messaggi scambiati tra il motore ed il sistema di sviluppo. Un’altra caratteristica peculiare del sistema di sviluppo RT è che consente di eseguire  il debug delle VI mentre esse sono in esecuzione sul target; gli strumenti di debug prevedono la possibilità di usare i  probe, di impostare i breakpoint, e di eseguire  il codice in single step. In alcuni casi, si rende necessario un protocollo di comunicazione più efficiente. Si pensi ad esempio al caso in cui si voglia eseguire un’altra applicazione sul sistema host: tenendo aperto e connesso al target il sistema di sviluppo RT, non è più possibile utilizzare LabVIEW per svolgere altre attività. Oppure, al caso in cui si voglia avere un maggiore controllo sulle informazioni inviate e ricevute dal target, o sulla loro temporizzazione. In tutti questi casi (ed altri ancora) è possibile utilizzare  il Network Communication Protocol (indicato con il termine “rete” in figura 3) per aumentare l’efficienza del protocollo di comunicazione.

Figura 3: LabVIEW e motore RT.

Figura 3: LabVIEW e motore RT.

In questo caso, la VI embedded continua a girare sul motore, ma il sistema di sviluppo non è in esecuzione sull’host. L’host esegue LabVIEW per comunicare con il motore usando specifici protocolli di comunicazione come TCP/IP, VI Server, o memoria condivisa. Con questo tipo di interfacciamento, LabVIEW esegue una VI diversa da quella in esecuzione sul motore. Una VI gira sull’host, mentre due VI girano sull’hardware della serie RT. Come visibile in figura 3, la VI “critica” comunica con la VI “non critica” per mezzo di un canale di comunicazione creato con delle FIFO real-time, e comunica con il motore RT nel modo tradizionale; per contro, la VI “non critica” usa protocolli di rete (tipicamente TCP/IP) per comunicare con il  motore RT. Occorre prestare molta attenzione quando si usa un approccio di questo tipo, in quanto la comunicazione tramite protocolli come il TCP/IP è non deterministica e può pertanto compromettere i requisiti  di determinismo dell’intero sistema.

La tecnologia real-time di NI

I  moduli LabVIEW real-time e LabWindows/CVI real-time (figura 4) permettono di raggiungere l’obiettivo di un’esecuzione affidabile e deterministica su target hardware dedicati.

Figura 4: la tecnologia real-time di NI.

Figura 4: la tecnologia real-time di NI.

Il  modulo LabVIEW FPGA, abbinato ad un hardware in grado di offrire degli I/O riconfigurabili, permette di ottenere dei tempi di risposta dell’ordine della decina di nanosecondi. Il software messo a disposizione da National Instruments consente di:

» sviluppare rapidamente applicazioni deterministiche attraverso una programmazione di tipo grafico, oppure in ANSI C;

» progettare senza difficoltà sistemi di controllo e monitoraggio distribuiti: un’applicazione real-time può essere distribuita su più target collegati in rete, ed è possibile utilizzare delle robuste interfacce di comunicazione per condividere strutture dati tra target diversi;

» risparmiare tempo integrando diversi tipi di I/O quali: I/O analogici, digitali, controllo del movimento, elaborazione dell’immagine, e strumentazione di elevata accuratezza e precisione.

NI propone inoltre un’ampia gamma di hardware specializzato in grado di supportare la funzionalità real-time. Come indicato in Figura 5, con LabVIEW RT è possibile eseguire lo sviluppo su una piattaforma Windows e successivamente scaricare l’applicazione su target dedicati di tipo commerciale con a bordo sistemi operativi real-time.

Figura 5: lo sviluppo con LabVIEW RT.

Figura 5: lo sviluppo con LabVIEW RT.

LabVIEW RT include il Real-Time  Project Wizard (figura 6) con il quale, scegliendo una tra diverse architetture real-time già pre-impostate, è possibile creare in pochi minuti un’applicazione per la piattaforma host, una per il target, e definire le variabili condivise necessarie per la loro comunicazione.

Figura 6: il Real-Time Project Wizard.

Figura 6: il Real-Time Project Wizard.

Il modello di programmazione di LabVIEW è orientato al flusso dati piuttosto che alle strutture sequenziali tipiche dei linguaggi di programmazione procedurali. Poichè l’ordine di esecuzione è determinato dal flusso dei dati tra i diversi  nodi e non dalla sequenzialità delle linee di codice, si possono facilmente creare applicazioni che eseguono operazioni multiple in parallelo. LabVIEW permette inoltre di assegnare le priorità ai singoli thread (VI o loop temporizzati) tramite il Configure Timed Loop (figura 7).

Figura 7: configurazione dei loop temporizzati.

Figura 7: configurazione dei loop temporizzati.

 

LISTA DEGLI ACRONIMI
DLL: Dynamic Link Library
HMI: Human Machine Interface
NI: National Instruments
PAC: Programmable Automation Controller
PID: Proportional Integral Derivative
RIO: Reconfigurable I/O
VI: Virtual Instrument
VISA: VXI/VME Bus Interface Software

Il modulo real-time di LabVIEW

Il modulo real-time di LabVIEW estende l’intelligenza distribuita di LabVIEW all’hardware  di National Instruments, sul quale viene messo in esecuzione un vero e proprio sistema operativo real-time. LabVIEW RT si interfaccia direttamente con l’hardware RIO consentendo di eseguire un’analisi deterministica sul target e piena integrazione dell’I/O. La versione 8.20 presenta dei significativi miglioramenti in termini di prestazioni rispetto alla versione precedente, ottenuti grazie alle seguenti funzionalità:

» funzioni di controllo PID: il codice di controllo è stato ottimizzato ottenendo una maggiore efficienza soprattutto nel caso di canali multipli;

» RT FIFO: sono state introdotte delle nuove VI per consentire la comunicazione ed il trasferimento di dati interprocesso senza impatti in termini di jitter;

» single  point I/O: è stata aumentata la frequenza con cui è possibile acquisire, processare ed impostare  i singoli punti di I/O.

Il modulo FPGA di LabVIEW

Il codice generato con l’ambiente grafico di LabVIEW può essere scaricato sulle FPGA dei dispositivi della serie NI-RIO, consentendo di creare un hardware personalizzato con funzionalità di temporizzazione, trigger, sincronizzazione, e controllo. I vantaggi offerti dalla tecnologia FPGA sono i seguenti:

» riconfigurabilità del software: si ottiene un chip riconfigurabile in seguito a cambiamenti del software, creando un nuovo hardware ad ogni modifica;

» affidabilità dell’hardware: una volta programmata, la FPGA diventa un vero e proprio chip hardware, con tutte le caratteristiche di affidabilità associate;

» alta velocità: si possono ottenere delle logiche con tempi di esecuzione dell’ordine di un singolo ciclo di clock;

» determinismo: è possibile sintetizzare un hardware con comportamento deterministico e risoluzione dell’ordine delle decine di nanosecondi;

» parallelismo: essendo la FPGA una matrice di blocchi logici interconnessi, ben si presta ad implementare un processing di tipo parallelo.

Le funzionalità offerte da questo modulo si possono così riassumere:

» project wizard (figura 8): aiuta a generare velocemente  il codice funzionale per il controllo e la misura di I/O digitali ed analogici, contatori, ed encoder in quadratura;

Figura 8: il wizard del modulo FPGA.

Figura 8: il wizard del modulo FPGA.

» aggiunta di nuove opzioni relative al DMA (figura 9): consentono un trasferimento dati veloce ed efficiente tra il target e l’host senza sovraccaricare la CPU. Per attivare questa opzione, occorre creare due buffer di memoria, uno sulla FPGA del target, e l’altro sul sistema host: LabVIEW penserà poi a trasferire  I dati sul bus PCI in modo trasparente ed efficiente;

Figura 9: il DMA utilizzato nel modulo FPGA.

Figura 9: il DMA utilizzato nel modulo FPGA.

» il blocco PID e tutti i filtri relativi al modulo FPGA sono ora in grado di lavorare con canali multipli; al generatore di segnale sinusoidale sono stati aggiunti un generatore ad onda quadra e generatori di rumore (Gaussiana e bianco);

» modulo diagramma a stati: è ora possibile non solo modellare ma anche programmare  il sistema basato su FPGA tramite una rappresentazione a stati di tipo grafico. I diagrammi  a stati sono particolarmente utili per rappresentare macchine a stati complesse e sistemi basati sugli eventi, come ad esempio interfacce utente, logiche di controllo, e protocolli di comunicazione;

» rappresentazione numerica in virgola fissa: in precedenza si potevano utilizzare soltanto numeri interi.

Real-time Execution Trace Toolkit

Il  real-time Execution Trace Toolkit (figura 10) offre una visibilità di basso livello sulle applicazioni operanti sui target LabVIEW RT attraverso la visualizzazione dell’esecuzione real-time. Analizzando il comportamento dei thread in esecuzione, identificandone l’allocazione di memoria, e misurandone il carico di CPU, diventa più semplice ottimizzare le performance dell’applicazione. E’ inoltre possibile stampare i  risultati delle sessioni di trace al fine di allegarle alla documentazione oppure utilizzarle in sede di review del codice.

Figura 10: il real-time execution trace toolkit.

Figura 10: il real-time execution trace toolkit.

Il modulo  real-time di NI LabWindows/CVI

Il modulo real-time di LabWindows/CVI consente di creare delle applicazioni ANSI C deterministiche ed affidabili, in grado di riutilizzare  facilmente  il codice già esistente. LabW indows/CVI è un ambiente di sviluppo integrato che combina le doti di longevità e riusabilità dell’ANSI C con funzionalità specifiche orientate ad applicazioni quali: strumentazione e controllo, acquisizione dati, sviluppo di interfacce operatore. E’ inoltre possibile sviluppare applicazioni sia per Windows che per Linux, e viene fornito il supporto per innumerevoli tipi di bus, inclusi il PCI, PCI Express, PXI, PCMCIA, USB, Ethernet, GPIB, seriale, e IEEE 1394. In figura 11 è mostrato un bell’esempio di applicazione di LabWindows/CVI nel campo della strumentazione (controllo di un motore). Ricordiamo che dal sito NI è possibile scaricare, previa registrazione, una versione dimostrativa della versione 8.5 di LabWindows/CVI.

Figura 11: un progetto di esempio per LabWindows/CVI.

Figura 11: un progetto di esempio per LabWindows/CVI.

Real-time hardware

La serie di hardware real-time di NI è la seguente:

» controllori real-time PXI (figura 12): comprendono uno chassis molto robusto, un controllore embedded, e moduli di I/O configurabili. La piattaforma real-time PXI è spesso usata per sistemi ad elevate prestazioni, come ad esempio nei test di unità di controllo elettroniche e nel campo dell’analisi delle vibrazioni. I controllori  della serie PXI sono equipaggiati con il sistema operativo real-time ETS e software applicativo eseguito su un microprocessore dedicato. Il software embedded ha accesso a tutto l’I/O del dispositivo PXI, permettendo di raggiungere ottimi livelli di sincronizzazione e triggering;

Figura 12: hardware della serie PXI.

Figura 12: hardware della serie PXI.

» CompactRIO (figura 13): è composto da uno chassis piccolo, robusto, e riconfigurabile, un controllore real-time con a bordo il sistema operativo VxWorks, una FPGA, e moduli industriali di I/O inseribili a caldo. I dati passano dalla FPGA al controllore real-time tramite un bus interno PCI. L’hardware della serie CompactRIO, dotato anche di un potente processore in virgola mobile, è in grado di eseguire applicazioni LabVIEW real-time quali: controllo in anello chiuso, acquisizione, analisi del segnale, data logging, e protocolli di comunicazione;

Figura 13: hardware della serie CompatcRIO

Figura 13: hardware della serie CompatcRIO

» single  board RIO: si tratta di soluzioni a basso costo basate sulla tecnologia CompactRIO; integrano un processore real-time, una FPGA riconfigurabile, I/O analogici e digitali;

» compact FieldPoint (figura 14): comprende un processore embedded sul quale gira il sistema operativo real-time ETS, ed una moltitudine di moduli di I/O. La piattaforma Compact FieldPoint si basa su un hardware molto robusto, progettato per operare in ambito industriale;

Figura 14: hardware della serie Compatc FieldPoint.

Figura 14: hardware della serie Compatc FieldPoint.

» compact Vision (figura 15): si tratta di sistemi compatti e robusti ottimizzati per applicazioni nel settore dell’elaborazione dell’immagine. La configurazione minima è composta da un processore embedded con un sistema operativo real-time, connessioni per tre videocamere  IEEE 1394 DCAM, un display, una porta Ethernet, 15 input digitali e 14 output digitali;

Figura 15: hardware della serie compact vision.

Figura 15: hardware della serie
compact vision.

» altri tipi di hardware real-time (figura 16): oggi molte applicazioni nel campo dell’automazione industriale sono basate su sistemi con architettura PCI. Con LabVIEW RT è possible convertire un PC industriale, una scheda PC-104, o persino un PC desktop standard in un target real-time, purchè siano soddisfatti i requisiti hardware richiesti dal sistema operativo real-time ETS.

Figura 16: altri tipi di hardware real-time.

Figura 16: altri tipi di hardware real-time.

Compatibilità con software ed hardware di terze parti

I sistemi real-time  LabVIEW sono basati su un’architettura software e hardware di tipo aperto, nel senso che è possibile sia importare codice già esistente sotto forma di dll, che integrare moduli di I/O PXI/cPCI tramite l’utilizzo di driver VISA. LabWindows/CVI è in grado di compilare codice ANSI C generando una dll compatibile con LabVIEW RT e che può essere chiamata ed eseguita dallo stesso ambiente di LabVIEW. LabWindows/CVI esegue gli opportuni controlli sul codice per garantire che esso sia compatibile con il sistema operativo del target: nel caso venga riscontrato un accesso ad una funzione  non  supportata,  LabWindows/CVI fornisce un’opportuna segnalazione di errore, consentendo di modificare la dll rendendola pienamente compatibile con LabVIEW RT.

Supporto a Mathworks Simulink

Il Simulation  Interface  Toolkit di LabVIEW consente anche di importare i modelli  di Simulink all’interno dei sistemi real-time LabVIEW, permettendo di verificare, prototipare, e validare i modelli stessi attraverso un ambiente di programmazione grafico.

Labview nei sistemi di controllo e misura distribuiti

I sistemi di controllo distribuiti consentono di ottimizzare le applicazioni in esecuzione su più processori, creando un sistema con prestazioni ed affidabilità elevate. Un sistema distribuito è composto di due parti: una dorsale (backbone), ed uno o più nodi. La dorsale è costituita dal supporto fisico di rete e da un insieme di server; il software in esecuzione sui server si occupa del trasferimento dati sulla rete, della gestione dei dati e della loro visualizzazione, della gestione degli allarmi e degli eventi, e della sicurezza dei dati. Un requisito fondamentale della dorsale è che essa deve essere in grado di comunicare con il resto dell’hardware attraverso un protocollo comune, come ad esempio il TCP/IP. Ogni server della rete deve supportare tale protocollo, più altri protocolli per interfacciarsi con apparecchiature commerciali di vario tipo. OPC (OLE for Process Control) è uno standard di interfacciamento industriale tramite il quale software ed hardware possono comunicare indipendentemente dal proprio produttore. LabVIEW supporta OPC attraverso il modulo DSC (Datalogging and Supervisory Control). In Figura 17 è mostrato il diagramma di un tipico sistema distribuito, mentre in Figura 18 è visualizzato un esempio di configurazione degli allarmi e degli eventi tramite HMI Wizard. I nodi della rete sono in genere implementati da controllori dedicati con a bordo dei sistemi operativi real-time, in grado di offrire performance deterministiche ed elevata affidabilità. Il modulo real-time di LabVIEW (in Figura 19 un esempio di applicazione) è nato proprio con lo scopo di fornire un sistema operativo real-time deterministico ed affidabile.

Figura 17:LabVIEW nei sistemi distribuiti

Figura 17:LabVIEW nei sistemi distribuiti

 

Figura 18:configurazione degli allarmi e degli eventi.

Figura 18:configurazione degli allarmi e degli eventi.

 

Figura 19:l’ambiente di sviluppo LabVIEW.

Figura 19:l’ambiente di sviluppo LabVIEW.

 

 

Scrivi un commento

EOS-Academy
Abbonati ora!