Memo, 3/2012 - Osservatorio di Arcetri

Transcript

Memo, 3/2012 - Osservatorio di Arcetri
INAF-OAA Gruppo Strumentazione Infrarossa
Progetto Giano
Comandi sintetici di stato per la GUI IDL di Giano
E.Giani, C.Baffa
Memo Versione 1.0, Firenze Marzo 2012
Revision : 1.5
Sommario
Nel presente memo descriviamo l’implementazione dello stato sintetico dei
sotto-sistemi di Giano (acquisizione, pre-slit e motori) pubblicato da Balor/Gbridge
e destinato al programma di controllo Giano-IDL, la Graphical User Interface
di Salvo Scuderi.
1
Introduzione
La comunicazione tra Balor/Gbridge e la nuova interfaccia di alto livello di Giano,
Giano-IDL, prevede che tutti i messaggi e gli errori provenienti dalle applicazioni server Iron-Golem/Server104, Xill e Couatl o generati dallo stesso Balor/Gbridge, siano
trascritti in un file apposito 1 e che lo stato dei vari sotto-sistemi venga spedito in forma
sintetica al programma Giano-IDL come pacchetto di risposta dei comandi ASTATUS
(acquisition status), MSTATUS (motor status) e XSTATUS (pre-slit status).
2
Il comando ASTATUS
Il comando ASTATUS può essere inviato dall’applicazione Giano-IDL in qualunque momento e il software di medio livello Balor/Gbridge si incarica di produrre la risposta
utilizzando i dati aggiornati in suo possesso.
1
/var/softir/GuiSS.out
1
Campo
header[0]
header[1]
header[2]
header[3]
header[4]
header[5]
header[6]
header[7]
area dati
Contenuto
0xA50F
0x1002
0x0010
0x0401
0
0
numero pacchetto
checksum
Tabella 1: Esempio di pacchetto ASTATUS
Questo comando non viene reindirizzato da Balor/Gbridge al sistema embedded. In
questo modo il programma di alto livello può chiedere informazioni sullo stato anche
quando Iron-Golem/Server104 è impegnato nelle operazioni di acquisizione, momento
in cui il sistema embedded risulta sordo a qualunque richiesta che non corrisponda ad un
comando di STOP o ABORT.
Il comando ASTATUS (vedi Tab.1) non specifica alcun parametro nell’area dati. Questo
comando ottiene come risposta lo stato sintetico del sistema di acquisizione.
2.1
ACK ASTATUS
Il pacchetto di risposta del comando ASTATUS fornisce due informazioni nell’area dati:
• il tempo di sistema espresso in secondi a partire dalla data dell’ epoca
• lo stato sintetico del sistema di acquisizione formattato come una lista di 6 stringhe
In Tab.2 riportiamo un esempio di questo pacchetto.
2.2
Rappresentazione sintetica dello stato del sistema di acquisizione
Lo stato del sistema di acquisizione è rappresentato da una lista di 6 stringhe, che
riportano:
• lo stato complessivo del sistema di acquisizione
• lo stato della connessione tra Balor/Gbridge e Iron-Golem/Server104
2
Campo
header[0]
header[1]
header[2]
header[3]
header[4]
header[5]
header[6]
header[7]
area dati
Contenuto
0xA50F
0x1001
0x0006
0x0401
lunghezza in bytes dell’area dati
0
numero pacchetto
checksum
1309784185 NOTOK DOWN NOTOK IDLE FAIL NOINIT
Tabella 2: Esempio di pacchetto ACK STATUS
• lo stato dell’elettronica analogica
• lo stato di attività del sistema di acquizione
• la presenza di una situazione di errore generica
• se la procedura di inizializzazione è in corso.
Per semplicità si è cercato di minimizzare le informazioni necessarie a determinare lo stato
di funzionamento del sistema e di seguito è riportato il significato.
2.2.1
stringa 1: OK/NOTOK
la prima stringa riassume lo stato di tutte le altre: se il sistema di acquisizione nel suo
complesso non manifesta malfunzionamenti, la stringa è uguale a OK: la presenza della
stringa NOTOK in questa posizione implica necessariamente la presenza di un problema nel
sistema di acquisizione. In caso di malfunzionamento, per ottenere dettagli di maggiore
utilità è necessario andare a esaminare il valore delle stringhe successive.
2.2.2
stringa 2: UP/DOWN
La seconda stringa rappresenta lo stato di attività del sistema embedded.
Risulta uguale a UP quando Balor/Gbridge e Iron-Golem/Server104 sono connessi e in
grado di comunicare attraverso il protocollo. La presenza della stringa DOWN in questa
posizione può corrispondere a condizioni diverse di errore come, ad esempio:
• il pc embedded è spento
• l’applicazione Iron-Golem/Server104 non è in esecuzione
3
• un’altra istanza di Balor/Gbridge è connessa al sistema embedded
• la rete non è funzionante
Quale tra queste condizioni si sia verificata è determinabile in un secondo momento andando ad analizzare la lista dei messaggi/errori riportati nel file di output /var/softir/GUISS.out.
2.2.3
stringa 3: OK/NOTOK
Se tutte le schede analogiche e le alimentazioni dei quattro quadranti del sensore sono
correttamente funzionanti, la stringa in posizione 3 vale OK. Risulta essere uguale a NOTOK
se uno o piú link ottici non sono attivi, se esistono problemi sulle alimentazioni o sulla
memoria del sequencer.
2.2.4
stringa 4: BUSY/IDLE
Quando il sistema è occupato in un’operazione che non consente l’esecuzione di comandi di
acquisizione e/o di configurazione dell’elettronica, la stringa in posizione 4 assume valore
BUSY altrimenti se il sistema è pronto ad accettare comandi, la stringa in questa posizione
è uguale a IDLE.
2.2.5
stringa 5: FAIL/OK
La presenza della stringa FAIL in questa posizione sta a significare che si è verificato un
problema generico. Questo stringa è sempre uguale a FAIL non solo quando una delle
stringhe precedenti non è OK (o UP),ma anche in casi non riconducibili ai precedenti.
A titolo di esempio, leggeremo la stringa FAIL quando la lettura di un’immagine viene
interrotta per timeout sulla fifo, o si è verificato un errore di fifo overflow oppure una
condizione di timeout sul socket di lettura.
Se risulta essere uguale a OK, il sistema funziona regolarmente.
2.2.6
stringa 6: INIT/NOINIT
La stringa in sesta posizione sarà uguale a INIT se il sistema embedded è in fase di
inizializzazione. In questo caso troveremo anche la stringa BUSY. Quando il sistema ha
terminato la procedura, la stringa diventa uguale a NOINIT.
3
Il comando XSTATUS
Il comando XSTATUS restituisce lo stato complessivo del sistema di pre-slit, fornendo
informazioni sui sottosistemi della PowerBoard e del sistema Thorlabs.
4
stringa
1
2
3
4
5
6
Significato
sistema funzionante
stato della connessione con Balor/Gbridge
stato elettronica analogica
sistema occupato
errore generico
sistema in fase di inizializzazione
Valori
OK/NOTOK
UP/DOWN
OK/NOTOK
BUSY/IDLE
FAIL/OK
INIT/NOINIT
Tabella 3: Lo stato sintetico del sistema di acquisizione
Il comando può essere inviato dall’applicazione Giano-IDL in qualunque momento: il software middleware Balor/Gbridge inoltra il comando al server Xill che genera la risposta
utilizzando i dati aggiornati in suo possesso.
Il programma Giano-IDL può inviare la richiesta di stato anche quando Xill è occupato
a controllare le operazioni di posizionamento della pre-slit.
Il comando XSTATUS (vedi Tab.4) non specifica alcun parametro nell’area dati.
3.1
Risposta del comando XSTATUS
La payload del pacchetto di risposta ACK del comando XSTATUS (vedi Tab.5) contiene
le seguenti informazioni:
• il tempo di sistema espresso in secondi a partire dalla data dell’ epoca
• lo stato sintetico del sistema di pre-slit organizzato come una lista di 7 stringhe
• lo stato dei sotto-sistemi della PowerBoard composto da otto coppie di valori in
cui il primo valore è il numero del device e il secondo lo stato del sotto-sistema,
rappresentato da un valore che puó essere 0 o 1.
• la posizione in step del device Thorlabs(intero con segno a 32-bit)
• il nome corrispondente alla posizione in step (string)
• la temperatura in Celsius (double)
• l’intensità della lampada di calibrazione (intero senza segno a 16-bit)
• il valore dell’accelerometro nella direzione x (intero a 32-bit)
• il valore dell’accelerometro nella direzione y (intero a 32-bit)
• il valore dell’accelerometro nella direzione z (intero a 32-bit)
• l’angolo di rotazione (double)
5
3.2
Rappresentazione sintetica dello stato del sistema di pre-slit
Lo stato complessivo del sistema di pre-slit è descritto da una lista di 7 stringhe la cui
interpretazione è riassunta nella Tab. 6.
Campo
header[0]
header[1]
header[2]
header[3]
header[4]
header[5]
header[6]
header[7]
area dati
Contenuto
0xA50F
0x1009
0x0010
0x0900
0
0
numero pacchetto
checksum
Tabella 4: Esempio di Pacchetto XSTATUS
3.2.1
stringa 1: OK/NOTOK
Questa stringa riassume tutte le altre: se il sistema di pre-slit nel suo complesso non
manifesta malfunzionamenti, la stringa vale OK, altrimenti NOTOK.
La presenza della stringa NOTOK alla prima posizione implica necessariamente la presenza
di un problema nel sistema di pre-slit. In caso di malfunzionamento, per ottenere dettagli
di maggiore utilità è necessario andare a esaminare il valore assunto dalle altre stringhe.
3.2.2
stringa 2: UP/DOWN
La stringa 2 rappresenta lo stato di attività di rete del sistema Xill
La seconda stringa è uguale a UP quando Balor/Gbridge e Xill sono connessi e in grado di comunicare attraverso il protocollo. Una stringa NOTOK in questa posizione può
corrispondere a condizioni diverse di errore come, ad esempio:
• il pc su cui il server Xill è in esecuzione è spento
• l’applicazione Xill non è in esecuzione
• un’altra applicazione è connessa al sistema
• la rete non è funzionante
Quale tra queste condizioni si sia verificata è determinabile in un secondo momento andando ad analizzare la lista dei messaggi/errori presenti nel file di output /var/softir/GUISS.out.
6
Campo
header[0]
header[1]
header[2]
header[3]
header[4]
header[5]
header[6]
header[7]
area dati
Contenuto
0xA50F
0x1001
0x0006
0x0900
lunghezza area dati in bytes
0
numero pacchetto
checksum
1302700280 OK UP OK OK IDLE OK NOINIT
0 0 1 0 2 0 3 1 4 0 5 0 6 1 7 0 2000 HOME 30.5 100 24500 32700 26289 0.00
Tabella 5: Esempio di Pacchetto ACK di XSTATUS
Stringa
1
2
3
4
5
6
7
Significato
sistema funzionante
stato della connessione con Balor/Gbridge
comunicazione con il sistema Thorlabs
comunicazione con la PowerBoard
sistema occupato
errore generico
sistema in fase di inizializzazione
Valore
OK/NOTOK
UP/DOWN
OK/NOTOK
OK/NOTOK
BUSY/IDLE
FAIL/OK
INIT/NOINIT
Tabella 6: Lo stato sintetico del sistema di pre-slit
7
3.2.3
stringa 3: OK/NOTOK
La terza stringa è uguale a OK quando il sistema Thorlabs è correttamente rilevato e la
comunicazione con esso funzionante. Vale NOTOK se il device non è rilevato oppure esistono
problemi di comunicazione con il bus USB.
3.2.4
stringa 4: OK/NOTOK
La stringa in posizione 4 sarà uguale a OK quando la comunicazione con la PowerBoard è
attiva e funzionante. Viceversa sarà uguale a NOTOK.
3.2.5
stringa 5: BUSY/IDLE
La stringa alla quinta posizione risulta uguale a BUSY quando il sistema sta operando sui
sotto-sistemi della pre-slit, ad esempio quando lo stage rotazionale della Thorlabs è in
movimento. Sarà uguale a IDLE quando il sistema è pronto ad eseguire immediatamente
il comando ricevuto.
3.2.6
stringa 6: FAIL/OK
La presenza di una stringa uguale a FAIL nella posizione 6 sta a significare che si è
verificato un problema generico. La stringa assume sempre valore FAIL quando sono
presenti contemporaneamente problemi sulle stringhe 2, 3 e/o 4, ma puó risultare uguale
a FAIL anche in casi non riconducibili ai precedenti: ad esempio quando la procedura di
homing non è stata portata a termine, oppure i parametri ricevuti non sono corretti.
Se vale OK il sistema funziona correttamente.
3.2.7
stringa 7: INIT/NOINIT
La stringa 7 è uguale a INIT se il sistema Xill è in fase di inizializzazione. In questo
caso risulta presente anche la stringa BUSY in quinta posizione. Quando il sistema ha
terminato la procedura, l’ultima stringa dello stato sintetico sarà uguale a NOINIT.
3.3
Lo stato dei sotto-sistemi della PowerBoard
La PowerBoard comprende piú device:
• una lampada di calibrazione che può essere accesa/spenta e di intensità variabile
• un dimmer per regolare le diverse intensità della lampada di calibrazione
• una lampada alogena che puó essere accesa/spenta e inserita/disinserita
• due filtri grigi che vengono inseriti/disenseriti
8
• un sensore di temperatura
• un accelerometro che restituisce il valore lungo i tre assi e, una volta calibrato,
l’angolo del derotatore
• uno shutter da inserire/disinserire
• un relay per accendere/spengere il device Thorlabs
Lo stato di ogni sotto-sostema della PowerBoard è rappresento da una coppia di numeri: il
primo corrisponde al numero del device, il secondo allo stato di questo che sarà on/inline
se vale 1, off/offline se uguale a 0 (vedi Tab.7).
N.B: per il device 7, i valori 0 e 1 corrispondono ai due livelli di intensità
della lampada di calibrazione (10% e 100%)
Num
0
1
2
3
4
5
6
7
Device
alimentazione lampada di calibrazione
alimentazione lampada alogena
lampada alogena
filtro 1
filtro 2
shutter
alimentazione Thorlabs
intensità della lampada di calibrazione
Valore
1 = On
1 = On
1 = Online
1 = Online
1 = Online
1 = Open
1 = On
1 = 100%
Tabella 7: Stato della PowerBoard
Riferendosi al contenuto dell’area dati del pacchetto ACK di XSTATUS, la stringa 0 0
1 0 2 0 3 1 4 0 5 0 6 1 7 0 rappresenta il seguente stato dei sotto-sistemi della PowerBoard.
- device 0 status 0 → lampada di calibrazione spenta
- device 1 status 0 → lampada alogena spenta
- device 2 status 0 → lampada alogena non inserita
- device 3 status 1 → filtro 1 inserito
- device 4 status 0 → filtro 2 non inserito
- device 5 status 0 → shutter chiuso
- device 6 status 1 → thorlabs alimentata
- device 7 status 0 → intensità al 10% della lampada di calibrazione
9
4
Il comando MSTATUS
Il comando MSTATUS richiede al server Couatl le informazioni sullo stato e le posizioni
dei motori di Giano.
Il comando può essere inviato dall’applicazione Giano-IDL in qualunque momento: il
software middleware Balor/Gbridge inoltra il comando al server Couatl che genera la
risposta utilizzando i dati aggiornati in suo possesso.
Il programma Giano-IDL può inviare la richiesta di stato anche quando Couatl è occupato a controllare le operazioni di movimento: la risposta sarà fornita in questo caso
direttamente da Balor/Gbridge con le informazione più recenti in suo possesso.
Il comando MSTATUS (vedi Tab.8) non specifica alcun parametro nell’area dati.
Campo
header[0]
header[1]
header[2]
header[3]
header[4]
header[5]
header[6]
header[7]
area dati
Contenuto
0xA50F
0x1006
0x0010
0x0601
0
0
numero pacchetto
checksum
Tabella 8: Esempio di pacchetto MSTATUS
4.1
ACK MSTATUS
Il pacchetto di risposta del comando MSTATUS (vedi Tab.9) fornisce le seguenti informazioni nell’area dati:
• il tempo di sistema espresso in secondi a partire dalla data dell’ epoca
• lo stato sintetico del sistema dei motori rappresentato da una lista di 5 stringhe
• il numero (vedi Tab.10), la posizione logica (stringa di caratteri) e la posizione in
ohm (numero float) di ciascun motore
10
Campo
Contenuto
header[0]
header[1]
header[2]
header[3]
header[4]
header[5]
header[6]
header[7]
area dati
0xA50F
0x1003
0x0006
0x0601
lunghezza in bytes dell’area dati
0
numero pacchetto
checksum
1302698996 NOTOK DOWN IDLE FAIL NOINIT 1 HR 6478.70
2 HR 3589.20 3 Z1 FS6 4199.20
4 Z2 FS6 5797.10 5 Z3 FS6 3997.10
6 OPEN 4563.00 7 S050 3336.80 8 LOCKED 5901.60
Tabella 9: Esempio di pacchetto ACK MSTATUS
4.2
Rappresentazione dello stato del sistema dei motori
È stato stabilito che lo stato sintetico del sistema dei motori sia rappresentato da una
lista di 5 stringhe e il loro significato è riassunto in Tab.11.
4.2.1
stringa 1: OK/NOTOK
La prima stringa è riassuntiva di tutte le altre: se il sistema di controllo dei motori (Couatl
+ gianoMotors) nel suo complesso non manifesta malfunzionamenti, questa è uguale a OK.
La presenza di una stringa uguale a NOTOK in questa posizione implica necessariamente la
presenza di un problema. In caso di malfunzionamento, per ottenere dettagli di maggiore
utilità è necessario andare a esaminare il contenuto delle stringhe nelle posizioni successive.
4.2.2
stringa 2: UP/DOWN
La seconda stringa rappresenta lo stato di attività di rete di Couatl.
Il valore di questa è UP quando Balor/Gbridge e Couatl sono connessi e in grado di
comunicare attraverso il protocollo. Un valore DOWN in questa posizione può corrispondere
a condizioni diverse di errore come, ad esempio:
• l’applicazione Couatl non è in esecuzione
• la rete non è funzionante
11
Nome
Numero
GRATING Z1
GRATING Z2
ARRAY Z1
ARRAY Z2
ARRAY Z3
FILTER
SLIT WHEEL
SLIT FORK
1
2
3
4
5
6
7
8
Tabella 10: Corrispondenza tra numero e nome simbolico del motore
Stringa
1
2
3
4
5
Significato
sistema funzionante
stato della connessione con Balor/Gbridge
motore in movimento o inizializzazione in corso
errore generico
sistema in fase di inizializzazione
Valore
OK/NOTOK
UP/DOWN
BUSY/IDLE
FAIL/OK
INIT/NOINIT
Tabella 11: Stato sintetico del sistema di motori di Giano
Quale tra queste condizioni si sia verificata è determinabile in un secondo momento andando ad analizzare la lista dei messaggi/errori riportati nel file di output /var/softir/GUISS.out.
4.2.3
stringa 3: BUSY/IDLE
La terza stringa è uguale a BUSY quando uno dei motori dei filtri, fenditure o reticolo
è in movimento. Vale IDLE quando il sistema è pronto ad eseguire immediatamente il
comando ricevuto.
4.2.4
stringa 4: FAIL/OK
La quarta stringa uguale a FAIL sta a significare che si è verificato un problema generico.
Questa stringa è sempre FAIL quando una o entrambe le stringhe 1 e 2 valgono rispettivamente NOTOK e DOWN, ma puó assumere lo stesso valore anche in casi non riconducibili ai
precedenti: a esempio quando la procedura di movimento non è stata portata a termine.
Se vale OK, il sistema di cotrollo dei motori funziona regolarmente.
12
4.2.5
stringa 5: INIT/NOINIT
L’ultima stringa vale INIT quando Couatl è in fase di inizializzazione. In questo caso
risulta presente anche la stringa BUSY alla posizione 3. La stringa assume valore NOINIT
una volta che il sistema ha terminato la procedura.
13