View
1.873
Download
2
Category
Preview:
DESCRIPTION
Diseño del software de adquisición de datos para ANAIS, un experimento de detección de materia oscura en el laboratorio de Canfranc.
Citation preview
Diseño del software de adquisición de datos para
ANAIS
Miguel OlivánGIFNA
Universidad de Zaragoza
Requisitos funcionales
Hardware de adquisición intercambiable Almacenamiento de los datos en formato ROOT Incorporación de nuevos módulos, vías, fuentes de
datos, cristales, de modo sencillo Almacenamiento de la configuración junto a los
datos de adquisición Monitorización (ritmos de adquisición, otros)
Requisitos no funcionales
Estabilidad (Cuantificar) Maximizar tiempo vivo (Cuantificar)
Rendimiento suficiente en adquisición Respuesta rápida a eventos
Registro de incidencias
Pautas de diseño
Keep it Simple KISS→ Fácil de entender, de modificar
Don't repeat yourself DRY→ Fácil de mantener
Fail Fast Salir rápido en caso de error, informando del motivo
Extensibilidad
Un vistazo al diseño
Un vistazo al diseño
Conceptos fundamentales: DAQSource → Fuente de datos, datos elementales DAQEvent → Evento, conjunto de fuentes
asociadas a un trigger DAQBoard → Dispositivo que puede esperar al
trigger, adquirir datos de fuentes, realizar acciones al comienzo o después de cada adquisición
Matacq, LTD, XDC, PU, IORegister ...
Hardware intercambiable
Polimorfismo: Elección de implementación en tiempo de ejecución → virtual
Requiere un interfaz común e identificar funcionalidades:
Init, WaitForTrigger, Acquire, DoPostAcquire
DAQHardwareFactory instancia las clases en función de la configuración
Hardware intercambiable
Controladores Derivan de la clase cuya funcionalidad implementa:
DAQBoard
Gestionan tiempos y estado del hardware Gestionan la relación Fuente Dispositivo↔
Gestionan los buffers internamente
Almacenamiento de datos
Ficheros ROOT Estructuras de datos sencillas con datos
elementales Legibles en tiempo de ejecución y extensibles
Usando Branch(name, address, leaflist, bufsize) y generando leaflist en tiempo de ejecución (ver TData.h)
Con los nombres de las fuentes de la configuración
Configuración
Formato YAML Legible Editable manual y automáticamente
Permite añadir y modificar hardware Esquema genérico:
- grupo: nombre
clave: valor
clave: [vector, de, valores]
Ejemplo de adquisición
LTD(VME)
Matacq(VME)
QDC(VME)
Pattern Unit(VME)
IORegister(VME)
Gate GeneratorOR
GATE
DELAYEDSIGNALS
SIGNALS
SOFT RESET
CHANNEL PER SIGNAL
GLOBAL
Ejemplo de configuración- event: Group1
trigger: io_reg_0
source: [matacq1_0,matacq1_1, qdc1_0, qdc1_1, pu0]
post_acquire: [ matacq1, io_reg_0]
- source: matacq1_0
board: matacq1
channel: 0
- source: matacq1_1
board: matacq1
channel: 1
- source: qdc1_0
board: qdc1
channel: 0
- source: qdc1_1
board: qdc1
channel: 1
- source: pu0
board: pu0
- matacq: matacq1
baseaddr: 0x10000
channels: [0, 1, 2]
#...
- xdc: qdc1
baseaddr: 0xA0000
channel: [0, 1]
- ltd814: ltd
baseaddr: 0xC0000
channel: [14 , 15]
threshold: [20, 20]
- io_register: io_reg_0
baseaddr: 0xE0000
- pattern_unit_259: pu0
baseaddr: 0x60000
Ejemplo de captura
Detalles de implementación
Bucle de adquisición: DAQEvent.h
Detalles de implementación
Controlador DAQBoard: hw/Matacq.h
Detalles de implementación
Instanciar controlador: hw/DAQHardwareFactory.cxx
Detalles de implementación
Buenas prácticas en C++: Uso de la librería estándar de C++
std::string Uso de la STL (Standard Template Library) RAII (Resource Acquisition Is Initialization) Otras herramientas: Valgrind, gdb, subversion
Puesta en marcha
Implementación buffering, datos opcionales Análisis de datos Pruebas de rendimiento y estabilidad junio→
Instalación en Canfranc ¿1º semana de julio?→
Ajuste fino de parámetros julio→
Adquisición prolongada agostoseptiembre→
Cuestiones abiertas - futuro
Estructura de datos reordenada en fichero ROOT Guardar datos opcionalmente. Condiciones Test Interrupciones vs. Polling Kernel realtime vs. Normal Threading en la adquisición Almacenamiento síncrono vs. Asíncrono Configuración gráfica
Recommended