Distributed Control Lab

il Progetto Distributed Control Lab (DCL), è l’evoluzione del precedente progetto VirtualLab. Esso mira a fornire uno strato di software atto sia al controllo remoto dei processi, sia alla pubblicazione e verifica dei dati di tale controllo. Il progetto viene gestito dagli studenti dei corsi di Controllo Digitale e Controllo dei Processi dell’Università di Pisa, e si compone di 3 parti principali:

1) Un componente server atto al controllo ed alla trasmissione dei dati che opera in ambiente Linux/RTAI, direttamente interfacciato e con processi reali e con simulazioni real-time

2) Un componente di estensione di Matlab e/o Scicos per la realizzazione di controllori/simulazioni in tempo reale

3) Una componente client Java, sia stand-alone che incapsulabile in una pagina web tramite applet, che permette la pubblicazione e/o il controllo in tempo reale dei parametri del controllo/processo.

Il Progetto è stato ideato ed implementato da Vincenzo Calabrò, Edoardo Canepa e Mirko Costa nell’ambito di varie attività progettuali della Facoltà di Ingegneria, Laurea Specialistica in Ingegneria dell’Automazione, con la supervisione del Dott. Emanuele Crisostomi, Dipartimento di Sistemi Elettrici e Automazione (DSEA)

Installazione del progetto

Il progetto è disponibile, con relativo codice sorgente, sotto licenza GPLv2, a questo indirizzo

1) Componente Server:

Requisiti Minimi:

a) librerie runtime XML-RPC: tale protocollo viene utilizzato per la comunicazione server-client; la versione utilizzata è quella presente nei repositori della Debian stable (Etch), cercate con il comando apt-cache la libreria xmlrpc, in particolare i pacchetti con i bindings per il c++

AGGIORNAMENTO: sono disponibili i pacchetti per Ubuntu 8.04 a questo indirizzo:

Pacchetti RTAI Ubuntu 8.04

b) Sistema Operativo Linux con Kernel 2.6.16 o superiore ed estensioni RTAI; sono disponibili sia il kernel già compilato, sia i pacchetti necessari al corretto funzionamento di RTAI, per il sistema GNU/Linux Debian Etch, pertanto si consiglia di utilizzare tale distribuzione. Per informazioni relative ad altre distribuzioni, consultare la pagina del progetto RTAI.
Per accedere al repositorio DCL da Debian, inserire le seguenti righe nel file /etc/apt/sources.list

#DCL repository
deb http://www.edoardo.canepa.name/debian ./

dopodichè aggiornare la lista dei pacchetti con il comando apt-get update. Se si sta utilizzando una versione di apt con supporto per chiavi gpg, apt-get presenterà il seguente warning

W: GPG error: http://www.edoardo.canepa.name ./ Release: Le seguenti firme non sono state verificate perché la chiave pubblica non è disponibile: NO_PUBKEY 22A764C625F0AC57
W: È consigliabile eseguire apt-get update per correggere questi problemi

che può essere ignorato, in quanto ininfluente. Installare quindi tutti i pacchetti presenti nel repositorio e riavviare con il nuovo kernel, prestando attenzione al fatto che sono disponibili due versioni del kernel, una compilata senza supporto SMP (Symmetric Multi-Processor), ed una con tale supporto. Si consiglia tuttavia di non utilizzare la versione con supporto SMP, in quanto è provata l’instabilità di RTAI nei confronti di tale supporto, e potrebbe portare a lockup del kernel.
Una volta installati i pacchetti (od installato RTAI su un’altra distribuzione), è possibile effettuare un test della correttezza delle procedure effettuate, lanciando i comandi cd /usr/realtime-2.6.16.29.tex1.lve-rtai/testsuite/user/latency/ e ./run. (se avete compilato RTAI, il path più probabile è /usr/realtime/testsuite/user/latency/) se tutto è andato a buon fine, dovreste visualizzare i seguenti messaggi sulla shell (in ogni distribuzione);

Test RTAI

Adesso, nel file DCL.tar.bz2, nella cartella DCL/DCL/server/bin, è stato inserito per comodità lo script start, che serve ad avviare il server sulla porta standard 8090, se tale porta è già utilizzata da un’altro servizio, cambiare lo script. Il server richiede che siano aperte anche le porte dalla 30000 alla 3000X, dove X è il numero di flussi di dati da inviare al client corrispondenti ai blocchi scope inseriti su Simulink/SCICOS. Nella sottocartella RTBin si trovano alcuni esempi già compilati di simulazioni.

2) Componente di estensione Simulink/SCICOS

Se avete installato MATLAB, per comodità ho raccolto un pacchetto con i files essenziali alla configurazione, che sono cmq reperibili nel pacchetto ufficiale di RTAI :
- create sotto la directory principale del programma $(MATLABROOT)/rtw/c una cartella chiamata rtai, ad esempio, se avete installato matlab in /usr/local/matlab, dovrete creare /usr/local/matlab/rtw/c/rtai

- copiate “rtmain.c”
“rtai.tlc”
“rtai.tmf”
“setup.m”
e la directory “devices” nella cartella appena creata $(MATLABROOT)/rtw/c/rtai

- create un link simbolico (se non è già presente) del programma rtai-config, disponibile nella cartella di installazione del pacchetto rtai-dev /usr/realtime-2.6.16.29.tex1.lve-rtai/bin nel PATH, ad esempio con il comando
ln -s /usr/realtime-2.6.16.29.tex1.lve-rtai/bin/rtai-config /usr/bin/.

- Avviate Matlab, entrate nella sottocartella che avete creato ed avviate setup.m

- Per compilare con supporto RTAI, aprite il modello simulink da utilizzare, e aprite il menù Simulation -> Configuration Parameters …
a) per prima cosa impostate un Solver a passo fisso (ad esempio ODE1, l’algoritmo di Eulero), selezionando opportunamente il passo di campionamento

Matlab RTAI solver

b) Nel Menù Real-Time Workshop, impostate i parametri come in figura:

Matlab RTAI configuration parameters

Se tutto è andato a buon fine, selezionando dal menù del modello “Tools -> Realtime Workshop -> Build Model”, dovremmo ottenere una sottocartella *project-name*_rtai con i sorgenti del nostro modello ed un eseguibile RTAI con il modello compilato con estensioni per il kernel real time di Linux.

Se avete installato Scilab/Scicos, scaricate il pacchetto scilab-rtai, contentente per comodità solo i files necessari all’installazione del supporto RTAI su scicos.
apt-get install scilab-rtai
Se non utilizzate Debian con i repositori descritti in precedenza, putroppo dovrete ricompilare RTAI. un’ottima guida si trova a questo indirizzo Guida ad RTAI-Lab.
Una volta installato il pacchetto, modificate come segue il file ${HOME}/.Scilab/scilab-4.x.x/.scilab, dove $HOME rimanda alla cartella dell’utente che state utilizzando (/root per l’amministratore, /home/*yourloginname* per gli altri); inserite le seguenti righe:

load(’SCI/macros/RTAI/lib’)
%scicos_menu($+1)=[’RTAI’,’RTAI CodeGen’,’Set Target’]
scicos_pal($+1,:)=[’RTAI-Lib’,’SCI/macros/RTAI/RTAI-Lib.cosf’]

Queste linee aggiungono:
• Il Menu RTAI all’editor di diagrammi Scicos con i menù RTAI →CodeGen e RTAI→Set Target
• La Palette RTAI-Lib nel menù Edit→Palettes, che contiene i blocchi da usare per il supporto Real-Time

In figura vedete i menù disponibili:

SCILAB-RTAI

Nella guida indicata sopra, vi sono alcuni esempi di compilazione

3) Componente Client Java
Tale componente è fornita solo in formato sorgente nella sottocartella DCL/client, con relattive libreria necessarie. Per sviluppare il progetto è stato utilizzato l’ambiente NetBeans, al quale si fa riferimento nell’esempio
Se tutto è andato a buon fine, avviano la classe principale DCL_GUI.java, è possibile visualizzare la seguente interfaccia.

DCLClient, immagine di corretta compilazione del sorgente e avvio classe DCL_GUINella scheda project

Immagine della scheda Project

i campi ip e porta per l’utilizzo locale possono rimanere immutati, mentre il campo process corrisponde al nome dell’eseguibile della simulazione/controllore presente nella sottocartella RTBin del server (nel pacchetto è stato fornito la simulazione di esempio del Cruise Control, realizzata da Vincenzo Calabrò). per connettersi ad un processo, dopo aver impostato i parametri, cliccare connect del menù network, oppure sull’icona con i 2 schermi in alto a sinistra. Se tutto è andato a buon fine, nella scheda Control Panel dovreste visualizzare questa interfaccia

Pannello di Controllo dell’esperimento Cruise Control

Dove è visualizzato lo schema a blocchi, sotto forma di albero, del modello Matlab/Scicos compilato per RTAI. Nel file DCL.tar.bz2 è presente anche una relazione più accurata sull’architettura e sul funzionamento dei vari componenti, in formato Acrobat PDF e OpenOffice OpenDocument. Per Problemi e domande, lasciate un commento e vedrò cosa si può fare…

Lascia un commento

La tua risposta: