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