INAF-OAA Gruppo Strumentazione Infrarossa Progetto Giano Comandi sintetici di stato per le applicazioni server di Giano E.Giani, C.Baffa Memo Versione 1.07, Firenze Febbraio 2012 Sommario Nel presente memo si descrive l implementazione dello stato sintetico dei sottosistemi di Giano (acquisizione, pre-slit e motori) pubblicato da Balor/Gbridge e destinato al programma di controllo GuiSS (Graphical User Interface Salvo Scuderi). 1 Introduzione La comunicazione tra Balor/Gbridge e la nuova interfaccia di alto livello di Giano, GuiSS, 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 scritti in un file apposito e che lo stato dei vari sotto-sistemi venga spedito in forma sintetica al programma GuiSS come pacchetto di risposta dei comandi ASTATUS (acquisition status), MSTATUS (motor status) e XSTATUS (pre-slit status). Il nome del file di comunicazione con la GuiSS è /var/softir/guiss.out. 2 Il comando ASTATUS Il comando ASTATUS può essere inviato dall applicazione GuiSS in qualunque momento e il software di medio livello Balor/Gbridge si incarica di produrre la risposta utilizzando i dati aggiornati in suo possesso. 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.
Campo Contenuto header[0] 0xA50F (MAGICKMASK) header[1] 0x1002 (GBSERVER) header[2] 0x0010 (COMANDO) header[3] 0x0401 (ASTATUS) header[4] 0 (lunghezza in bytes area dati) header[5] 0 header[6] 17 (numero pacchetto) header[7] checksum area dati (nessuna) Tabella 1: Esempio di pacchetto ASTATUS 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 In Tab.2 riportiamo un esempio di questo pacchetto. Campo Contenuto header[0] 0xA50F (MAGICMASK) header[1] 0x1001/(GUICLIENT) header[2] 0x0006 (ACK) header[3] 0x0401 (ASTATUS) header[4] 16 (lunghezza in bytes dell area dati) header[5] 0 header[6] 17 (numero pacchetto) header[7] checksum area dati 1309784185 0x5 Tabella 2: Esempio di pacchetto ACK STATUS 2.2 Rappresentazione sintetica dello stato del sistema di acquisizione Lo stato del sistema di acquisizione è rappresentato da una parola a 16 bit, dove solo alcuni tra i bit meno significativi hanno significato. Per semplicità si è cercato di minimizzare le informazioni necessarie a determinare lo stato di funzionamento del sistema; i bit usati sono cinque e di seguito è riportato il loro significato.
2.2.1 bit 0: S104 OK Questo bit è riassuntivo di tutti gli altri: se il sistema di acquisizione nel suo complesso non manifesta malfunzionamenti, il bit meno significativo è posto a 1. La presenza di uno 0 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 lo stato degli altri bit. 2.2.2 bit 1: S104 ACTIVE Questo bit rappresenta lo stato di attività del sistema embedded. Il valore di questo bit è 1 quando Balor/Gbridge e Iron-Golem/server104 sono connessi e in grado di comunicare attraverso il protocollo. Un valore 0 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 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 stampati nel file di output. 2.2.3 bit 2: S104 ANALOG Questo bit assume valore 1 se tutte le schede analogiche e le alimentazioni sono correttamente funzionanti. Vale 0, invece, se uno (o piú) link ottico non è attivo, se esistono problemi sulle alimentazioni o sulla memoria del sequencer. 2.2.4 bit 3: S104 BUSY Quando questo bit ha valore 1 il sistema è occupato in un operazione che non consente l esecuzione di comandi di acquisizione e di configurazione dell elettronica. Il sistema è nuovamente pronto ad accettare comandi quando questo bit torna al valore 0. 2.2.5 bit 4: S104 FAILURE Questo bit a 1 sta a significare che si è verificato un problema generico. Questo bit è sempre 1 quando risultano problemi sul bit S104 ANALOG e/o sul bit S104 ACTIVE, ma vale 1 anche in casi non riconducibili ai precedenti. A titolo di esempio, questo bi si attiva 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 vale 0, non si sono verificate condizioni di errore.
2.2.6 bit 5: S104 INIT Questo bit viene posto a 1 se il sistema embedded è in fase di inizializzazione. In questo caso risulta configurato anche il bit S104 BUSY. Il bit diviene 0 una volta che il sistema ha terminato la procedura. 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. Il comando può essere inviato dall applicazione GuiSS in qualunque momento: il software middle-ware Balor/Gbridge inoltra il comando al server Xill che genera la risposta utilizzando i dati aggiornati in suo possesso. Il programma GuiSS può inviare la richiesta di stato anche quando Xill è occupato a controllare le operazioni di posizionamento della pre-slit. Il comando XSTATUS (vedi Tab.3) 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.4) 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 nel suo complesso (intero senza segno a 16-bit) lo stato dei sotto-sistemi della PowerBoard (intero senza segno a 16-bit) la posizione in step del device Thorlabs(intero con segno a 32-bit) il nome corrispondente alla posizione in step (string) la temperatura (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) 3.2 Rappresentazione sintetica dello stato del sistema di pre-slit Lo stato complessivo del sistema di pre-slit è descritto da un numero senza segno a 16-bit, in cui solo i primi 7 bit sono significativi e la loro interpretazione è riassunta nella Tab. 5. 3.2.1 bit 0: XILL OK Questo bit è riassuntivo di tutti gli altri: se il sistema di pre-slit nel suo complesso non manifesta malfunzionamenti, il bit meno significativo è posto a 1.
Campo Contenuto header[0] 0xA50F header[1] 0x1009 (XILL) header[2] 0x0010 (COMANDO) header[3] 0x0900 (XSTATUS) header[4] 0 (lunghezza area dati in bytes comprensiva del carattere NULL) header[5] campo vuoto header[6] (numero di pacchetto) numero incrementale [1-65635] header[7] checksum area dati nessuna Tabella 3: Esempio di Pacchetto XSTATUS Campo Contenuto header[0] 0xA50F header[1] 0x1001 (GUICLIENT) header[2] 0x0006 (ACK) header[3] 0x0900 (XSTATUS) header[4] lunghezza area dati in bytes comprensiva del carattere NULL header[5] campo vuoto header[6] numero pacchetto header[7] checksum area dati 1302700280 0x0F 73 100000 FILTER1 30.5 100 24500 32700 26289 0.00 Tabella 4: Esempio di Pacchetto ACK di XSTATUS La presenza di uno 0 in questa 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 lo stato degli altri bit. 3.2.2 bit 1: XILL ACTIVE Questo bit rappresenta lo stato di attività del sistema Xill Il valore di questo bit è 1 quando Balor/Gbridge (o Iron-Golem/server104) e Xill sono connessi e in grado di comunicare attraverso il protocollo. Un valore 0 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
Bit Significato Nome Valore 0 sistema ok XILL OK 1 = OK 1 server connesso XILL ACTIVE 1 = ATTIVO 2 comunicazione con il sistema Thorlabs XILL THLABS 1 = OK 3 comunicazione con la PowerBoard XILL PWB 1 = OK 4 sistema occupato XILL BUSY 1 = BUSY 5 errore generico XILL FAILURE 1 = FAILURE 6 sistema in inizializzazione XILL INIT 1 = INIT Tabella 5: Lo stato sintetico del sistema di pre-slit Quale tra queste condizioni si sia verificata è determinabile in un secondo momento andando ad analizzare la lista dei messaggi/errori stampati nel file di output. 3.2.3 bit 2: XILL THLABS Questo bit assume valore 1 quando il sistema Thorlabs è correttamente rilevato e la comunicazione con esso funzionante. Vale 0 se il device non è rilevato oppure esistono problemi di comunicazione con il bus USB. 3.2.4 bit 3: XILL PWB Quando questo bit vale 1 quando la comunicazione con la PowerBoard è attiva e funzionante. Viceversa vale 0. 3.2.5 bit 4: XILL BUSY Il bit è posto a 1 quando il sistema sta operando sui sotto-sistemi della pre-slit, ad esempio quando lo stage rotazionale della Thorlabs è in movimento. Vale 0 quando il sistema è pronto ad eseguire immediatamente il comando ricevuto. 3.2.6 bit 5: XILL FAILURE Questo bit a 1 sta a significare che si è verificato un problema generico. Questo bit è sempre 1 quando sono presenti contemporaneamenti problemi sui bit XILL THLABS, XILL PWB e XILL ACTIVE, ma vale 1 anche in casi non riconducibili ai precedenti: quando la procedura di homing non è stata portata a termine, oppure i parametri ricevuti non sono corretti. Se vale 0, non si sono verificate condizioni di errore.
3.2.7 bit 6: XILL INIT Questo bit viene posto a 1 se il sistema Xill è in fase di inizializzazione. In questo caso risulta configurato anche il bit XILL BUSY. Il bit diviene 0 una volta che il sistema ha terminato la procedura. 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 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 dei sotto-sostemi della PowerBoard è un numero senza segno a 16-bit, espresso come una maschera in cui ogni bit rappresenta lo stato di uno di questi: 1 corrisponde al device on/inline, 0 al device off/offline (vedi Tab.6). N.B: per il bit 7, i valori 0 e 1 corrispondono ai due livelli di intensità della lampada di calibrazione (10% e 100%) Riferendosi al contenuto dell area dati del pacchetto ACK di XSTATUS, il valore 73 (0x49) corrisponde dunque a: - bit/device 0 status 1 lampada di calibrazione accesa - bit/device 1 status 0 lampada alogena spenta - bit/device 2 status 0 lampada alogena non inserita - bit/device 3 status 1 filtro 1 inserito - bit/device 4 status 0 filtro 2 non inserito - bit/device 5 status 0 shutter non inserito - bit/device 6 status 1 thorlabs alimentata - bit/device 7 status 0 intensità al 10% della lampada di calibrazione
Bit Significato Valore 0 alimentazione lampada di calibrazione 1 = ON 1 alimentazione lampada alogena 1 = ON 2 lampada alogena 1 = Online 3 filtro 1 1 = Online 4 filtro 2 1 = Online 5 shutter 1 = Online 6 alimentazione Thorlabs 1 = ON 7 intensità della lampada di calibrazione 1 = 100% Tabella 6: Stato della PowerBoard 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 GuiSS in qualunque momento: il software middle-ware Balor/Gbridge inoltra il comando al server Couatl che genera la risposta utilizzando i dati aggiornati in suo possesso. Il programma GuiSS può inviare la richiesta di stato anche quando Couatl è occupato a controllare le operazioni di movimento: la risposta fornita conterrà le informazione relative allo stato più recente del sistema. Il comando MSTATUS (vedi Tab.7) non specifica alcun parametro nell area dati. Campo Contenuto header[0] 0xA50F (MAGICKMASK) header[1] 0x1006 (COUATL) header[2] 0x0010 (COMANDO) header[3] 0x0601 (MSTATUS) header[4] 0 (lunghezza in bytes area dati) header[5] 0 header[6] 11 (numero pacchetto) header[7] checksum area dati (nessuna) Tabella 7: Esempio di pacchetto MSTATUS
4.1 ACK MSTATUS Il pacchetto di risposta del comando MSTATUS (vedi Tab.8) 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 un numero intero senza segno a 16-bit il numero (vedi Tab.9), la posizione logica (stringa di caratteri) e la posizione in ohm (numero float) di ciascun motore Campo Contenuto header[0] 0xA50F (MAGICMASK) header[1] 0x1001/(GUICLIENT) header[2] 0x0006 (ACK) header[3] 0x0601 (MSTATUS) header[4] 142 (lunghezza in bytes dell area dati) header[5] 0 header[6] 11 (numero pacchetto) header[7] checksum area dati 1302698996 0x02 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 8: Esempio di pacchetto ACK MSTATUS Nome Numero GRATING Z1 1 GRATING Z2 2 ARRAY Z1 3 ARRAY Z2 4 ARRAY Z3 5 FILTER 6 SLIT WHEEL 7 SLIT FORK 8 Tabella 9: Corrispondenza tra numero e nome simbolico del motore
Bit Significato Valore 0 sistema funzionante 1 = COUATL OK 1 stato della connessione con Balor/Gbridge 1 = COUATL ACTIVE 2 motore in movimento o inizializzazione in corso 1 = COUATL BUSY 3 errore generico 1 = COUATL FAILURE 4 sistema in fase di inizializzazione 1 = COUATL INIT Tabella 10: Stato dei motori di Giano 4.2 Rappresentazione dello stato del sistema dei motori È stato stabilito che lo stato sintetico del sistema dei motori sia rappresentato da una parola a 16 bit, dove solo i primi 5 bit hanno significato e la loro interpretazione è riassunta in Tab.10. 4.2.1 bit 0: COUATL OK Questo bit è riassuntivo di tutti gli altri: se il sistema di controllo dei motori (Couatl + giano- Motors) nel suo complesso non manifesta malfunzionamenti, il bit meno significativo è posto a 1. La presenza di uno 0 in questa posizione implica necessariamente la presenza di un problema. In caso di malfunzionamento, per ottenere dettagli di maggiore utilità è necessario andare a esaminare lo stato degli altri bit. 4.2.2 bit 1: COUATL ACTIVE Questo bit rappresenta lo stato di attività di Couatl. Il valore di questo bit è 1 quando Balor/Gbridge e Couatl sono connessi e in grado di comunicare attraverso il protocollo. Un valore 0 in questa posizione può corrispondere a condizioni diverse di errore come, ad esempio: l applicazione Couatl non è in esecuzione la rete non è funzionante Quale tra queste condizioni si sia verificata è determinabile in un secondo momento andando ad analizzare la lista dei messaggi/errori stampati nel file di output. 4.2.3 bit 2: COUATL BUSY Il bit è posto a 1 quando il sistema muove uno dei motori dei filtri, fenditure o reticolo. Vale 0 quando il sistema è pronto ad eseguire immediatamente il comando ricevuto.
4.2.4 bit 3: COUATL FAILURE Questo bit a 1 sta a significare che si è verificato un problema generico. Questo bit è sempre 1 quando `presente un problema sui bit COUATL OK e COUATL ACTIVE, ma vale 1 anche in casi non riconducibili ai precedenti: quando la procedura di movimento non è stata portata a termine. Se vale 0, non si sono verificate condizioni di errore. 4.2.5 bit 4: COUATL INIT Questo bit viene posto a 1 quando Couatl è in fase di inizializzazione. In questo caso risulta configurato anche il bit COUATL BUSY. Il bit diviene 0 una volta che il sistema ha terminato la procedura