SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
Diseño del software de
adquisición de datos para
          ANAIS

          Miguel Oliván
              GIFNA
     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
                     SOFT RESET



   SIGNALS                    IO
              LTD    OR
                           Register   Gate Generator
             (VME)
                            (VME)
                                                           GATE



DELAYED
SIGNALS


              QDC          Matacq      Pattern Unit
             (VME)         (VME)         (VME)




                                                      CHANNEL PER SIGNAL
                                                      GLOBAL
Ejemplo de configuración
- event: Group1                                       - source: pu0

 trigger: io_reg_0                                     board: pu0

 source: [matacq1_0,matacq1_1, qdc1_0, qdc1_1, pu0]   - matacq: matacq1

 post_acquire: [ matacq1, io_reg_0]                    baseaddr: 0x10000

- source: matacq1_0                                    channels: [0, 1, 2]

 board: matacq1                                        #...

 channel: 0                                           - xdc: qdc1

- source: matacq1_1                                    baseaddr: 0xA0000

 board: matacq1                                        channel: [0, 1]

 channel: 1                                           - ltd814: ltd

- source: qdc1_0                                       baseaddr: 0xC0000

 board: qdc1                                           channel: [14 , 15]

 channel: 0                                            threshold: [20, 20]

- source: qdc1_1                                      - io_register: io_reg_0

 board: qdc1                                           baseaddr: 0xE0000

 channel: 1                                           - 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    → agosto­septiembre
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

Weitere ähnliche Inhalte

Ähnlich wie Diseño del software de adquisición de datos para ANAIS

David Meléndez Cano - Trash Robotic Router Platform (TRRP) [Rooted CON 2013]
David Meléndez Cano - Trash Robotic Router Platform (TRRP) [Rooted CON 2013]David Meléndez Cano - Trash Robotic Router Platform (TRRP) [Rooted CON 2013]
David Meléndez Cano - Trash Robotic Router Platform (TRRP) [Rooted CON 2013]
RootedCON
 

Ähnlich wie Diseño del software de adquisición de datos para ANAIS (20)

Jdbc
JdbcJdbc
Jdbc
 
Jose M Mejia - Usando computación paralela GPU en malware y herramientas de h...
Jose M Mejia - Usando computación paralela GPU en malware y herramientas de h...Jose M Mejia - Usando computación paralela GPU en malware y herramientas de h...
Jose M Mejia - Usando computación paralela GPU en malware y herramientas de h...
 
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
Javier Marcos - Detección de amenazas a escala con osquery [rooted2019]
 
Presentacion Demo Open Solaris
Presentacion Demo Open SolarisPresentacion Demo Open Solaris
Presentacion Demo Open Solaris
 
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018
Jerónimo López | Introducción a GraalVM | Codemotion Madrid  2018  Jerónimo López | Introducción a GraalVM | Codemotion Madrid  2018
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018
 
Soluciones de Oracle para la Auditoría, Seguridad y Gobierno de TI
Soluciones de Oracle para la Auditoría, Seguridad y Gobierno de TISoluciones de Oracle para la Auditoría, Seguridad y Gobierno de TI
Soluciones de Oracle para la Auditoría, Seguridad y Gobierno de TI
 
Escalabilidad - Apache y MySQL
Escalabilidad - Apache y MySQLEscalabilidad - Apache y MySQL
Escalabilidad - Apache y MySQL
 
Creando un SCADA con Python y HTML5
Creando un SCADA con Python y HTML5Creando un SCADA con Python y HTML5
Creando un SCADA con Python y HTML5
 
Zookeeper
ZookeeperZookeeper
Zookeeper
 
SDN (Software Define Networking) - The evolution of the Network
SDN (Software Define Networking) - The evolution of the NetworkSDN (Software Define Networking) - The evolution of the Network
SDN (Software Define Networking) - The evolution of the Network
 
Charla técnica comercial v3.0 junio 2014 db visit productos
Charla técnica comercial v3.0 junio 2014 db visit productosCharla técnica comercial v3.0 junio 2014 db visit productos
Charla técnica comercial v3.0 junio 2014 db visit productos
 
mantenimiento
mantenimientomantenimiento
mantenimiento
 
David Meléndez Cano - Trash Robotic Router Platform (TRRP) [Rooted CON 2013]
David Meléndez Cano - Trash Robotic Router Platform (TRRP) [Rooted CON 2013]David Meléndez Cano - Trash Robotic Router Platform (TRRP) [Rooted CON 2013]
David Meléndez Cano - Trash Robotic Router Platform (TRRP) [Rooted CON 2013]
 
Prototipo de Proveedor de SaaS para Pymes
Prototipo de Proveedor de SaaS para PymesPrototipo de Proveedor de SaaS para Pymes
Prototipo de Proveedor de SaaS para Pymes
 
SEVILLA Meetups23032023.pdf
SEVILLA Meetups23032023.pdfSEVILLA Meetups23032023.pdf
SEVILLA Meetups23032023.pdf
 
Pentaho BI
Pentaho BIPentaho BI
Pentaho BI
 
Escalabilidad en azure sql database con elastic scale
Escalabilidad en azure sql database con elastic scaleEscalabilidad en azure sql database con elastic scale
Escalabilidad en azure sql database con elastic scale
 
Cacti desde-paquetes
Cacti desde-paquetesCacti desde-paquetes
Cacti desde-paquetes
 
Cacti desde-paquetes
Cacti desde-paquetesCacti desde-paquetes
Cacti desde-paquetes
 
Proyecto de Grado
Proyecto de GradoProyecto de Grado
Proyecto de Grado
 

Mehr von miguelolivan

Adquisición de datos ADC Canberra con Arduino
Adquisición de datos ADC Canberra con ArduinoAdquisición de datos ADC Canberra con Arduino
Adquisición de datos ADC Canberra con Arduino
miguelolivan
 
Estimación tiempo muerto
Estimación tiempo muertoEstimación tiempo muerto
Estimación tiempo muerto
miguelolivan
 
Un Clúster con SLURM, uso y configuración
Un Clúster con SLURM, uso y configuraciónUn Clúster con SLURM, uso y configuración
Un Clúster con SLURM, uso y configuración
miguelolivan
 

Mehr von miguelolivan (6)

ANAIS: status and prospects
ANAIS: status and prospectsANAIS: status and prospects
ANAIS: status and prospects
 
Adquisición de datos ADC Canberra con Arduino
Adquisición de datos ADC Canberra con ArduinoAdquisición de datos ADC Canberra con Arduino
Adquisición de datos ADC Canberra con Arduino
 
Sistema de adquisición de datos para un experimento de detección directa de m...
Sistema de adquisición de datos para un experimento de detección directa de m...Sistema de adquisición de datos para un experimento de detección directa de m...
Sistema de adquisición de datos para un experimento de detección directa de m...
 
Estimación tiempo muerto
Estimación tiempo muertoEstimación tiempo muerto
Estimación tiempo muerto
 
Un Clúster con SLURM, uso y configuración
Un Clúster con SLURM, uso y configuraciónUn Clúster con SLURM, uso y configuración
Un Clúster con SLURM, uso y configuración
 
Sistemas de control de versiones. Introducción a svn
Sistemas de control de versiones. Introducción a svnSistemas de control de versiones. Introducción a svn
Sistemas de control de versiones. Introducción a svn
 

Kürzlich hochgeladen

CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocxCARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
WILIANREATEGUI
 
Comparativo DS 024-2016-EM vs DS 023-2017-EM - 21.08.17 (1).pdf
Comparativo DS 024-2016-EM vs DS 023-2017-EM - 21.08.17 (1).pdfComparativo DS 024-2016-EM vs DS 023-2017-EM - 21.08.17 (1).pdf
Comparativo DS 024-2016-EM vs DS 023-2017-EM - 21.08.17 (1).pdf
AJYSCORP
 
senati-powerpoint_5TOS-_ALUMNOS (1).pptx
senati-powerpoint_5TOS-_ALUMNOS (1).pptxsenati-powerpoint_5TOS-_ALUMNOS (1).pptx
senati-powerpoint_5TOS-_ALUMNOS (1).pptx
nathalypaolaacostasu
 
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
i7ingenieria
 
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
Evafabi
 

Kürzlich hochgeladen (20)

liderazgo guia.pdf.............................
liderazgo guia.pdf.............................liderazgo guia.pdf.............................
liderazgo guia.pdf.............................
 
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBREDISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE
DISEÑO DE ESTRATEGIAS EN MOMENTOS DE INCERTIDUMBRE
 
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocxCARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
 
Comparativo DS 024-2016-EM vs DS 023-2017-EM - 21.08.17 (1).pdf
Comparativo DS 024-2016-EM vs DS 023-2017-EM - 21.08.17 (1).pdfComparativo DS 024-2016-EM vs DS 023-2017-EM - 21.08.17 (1).pdf
Comparativo DS 024-2016-EM vs DS 023-2017-EM - 21.08.17 (1).pdf
 
Las sociedades anónimas en el Perú , de acuerdo a la Ley general de sociedades
Las sociedades anónimas en el Perú , de acuerdo a la Ley general de sociedadesLas sociedades anónimas en el Perú , de acuerdo a la Ley general de sociedades
Las sociedades anónimas en el Perú , de acuerdo a la Ley general de sociedades
 
mapa-conceptual-evidencias-de-auditoria_compress.pdf
mapa-conceptual-evidencias-de-auditoria_compress.pdfmapa-conceptual-evidencias-de-auditoria_compress.pdf
mapa-conceptual-evidencias-de-auditoria_compress.pdf
 
senati-powerpoint_5TOS-_ALUMNOS (1).pptx
senati-powerpoint_5TOS-_ALUMNOS (1).pptxsenati-powerpoint_5TOS-_ALUMNOS (1).pptx
senati-powerpoint_5TOS-_ALUMNOS (1).pptx
 
4 Tipos de Empresa Sociedad colectiva.pptx
4 Tipos de Empresa Sociedad colectiva.pptx4 Tipos de Empresa Sociedad colectiva.pptx
4 Tipos de Empresa Sociedad colectiva.pptx
 
implemenatcion de un data mart en logistica
implemenatcion de un data mart en logisticaimplemenatcion de un data mart en logistica
implemenatcion de un data mart en logistica
 
Distribuciones de frecuencia cuarto semestre
Distribuciones de frecuencia cuarto semestreDistribuciones de frecuencia cuarto semestre
Distribuciones de frecuencia cuarto semestre
 
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
260813887-diagrama-de-flujo-de-proceso-de-esparrago-fresco-verde.pptx
 
Manual de Imagen Personal y uso de uniformes
Manual de Imagen Personal y uso de uniformesManual de Imagen Personal y uso de uniformes
Manual de Imagen Personal y uso de uniformes
 
DECRETO-2535-DE-1993-pdf.pdf VIGILANCIA PRIVADA
DECRETO-2535-DE-1993-pdf.pdf VIGILANCIA PRIVADADECRETO-2535-DE-1993-pdf.pdf VIGILANCIA PRIVADA
DECRETO-2535-DE-1993-pdf.pdf VIGILANCIA PRIVADA
 
ADMINISTRACIÓN DE CUENTAS POR COBRAR CGSR.pptx
ADMINISTRACIÓN DE CUENTAS POR COBRAR CGSR.pptxADMINISTRACIÓN DE CUENTAS POR COBRAR CGSR.pptx
ADMINISTRACIÓN DE CUENTAS POR COBRAR CGSR.pptx
 
Caja nacional de salud 0&!(&:(_5+:;?)8-!!(
Caja nacional de salud 0&!(&:(_5+:;?)8-!!(Caja nacional de salud 0&!(&:(_5+:;?)8-!!(
Caja nacional de salud 0&!(&:(_5+:;?)8-!!(
 
Presentacion encuentra tu creatividad papel azul.pdf
Presentacion encuentra tu creatividad papel azul.pdfPresentacion encuentra tu creatividad papel azul.pdf
Presentacion encuentra tu creatividad papel azul.pdf
 
Analisis del art. 37 de la Ley del Impuesto a la Renta
Analisis del art. 37 de la Ley del Impuesto a la RentaAnalisis del art. 37 de la Ley del Impuesto a la Renta
Analisis del art. 37 de la Ley del Impuesto a la Renta
 
Maria_diaz.pptx mapa conceptual gerencia industral
Maria_diaz.pptx mapa conceptual   gerencia industralMaria_diaz.pptx mapa conceptual   gerencia industral
Maria_diaz.pptx mapa conceptual gerencia industral
 
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
3ro - Semana 1 (EDA 2) 2023 (3).ppt. edx
 
2 Tipo Sociedad comandita por acciones.pptx
2 Tipo Sociedad comandita por acciones.pptx2 Tipo Sociedad comandita por acciones.pptx
2 Tipo Sociedad comandita por acciones.pptx
 

Diseño del software de adquisición de datos para ANAIS

  • 1. Diseño del software de adquisición de datos para ANAIS Miguel Oliván GIFNA Universidad de Zaragoza
  • 2. 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)
  • 3. Requisitos no funcionales  Estabilidad (Cuantificar)  Maximizar tiempo vivo (Cuantificar)  Rendimiento suficiente en adquisición  Respuesta rápida a eventos  Registro de incidencias
  • 4. 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
  • 5. Un vistazo al diseño
  • 6. 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 ...
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. 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]
  • 11. Ejemplo de adquisición SOFT RESET SIGNALS IO LTD OR Register Gate Generator (VME) (VME) GATE DELAYED SIGNALS QDC Matacq Pattern Unit (VME) (VME) (VME) CHANNEL PER SIGNAL GLOBAL
  • 12. Ejemplo de configuración - event: Group1 - source: pu0 trigger: io_reg_0 board: pu0 source: [matacq1_0,matacq1_1, qdc1_0, qdc1_1, pu0] - matacq: matacq1 post_acquire: [ matacq1, io_reg_0] baseaddr: 0x10000 - source: matacq1_0 channels: [0, 1, 2] board: matacq1 #... channel: 0 - xdc: qdc1 - source: matacq1_1 baseaddr: 0xA0000 board: matacq1 channel: [0, 1] channel: 1 - ltd814: ltd - source: qdc1_0 baseaddr: 0xC0000 board: qdc1 channel: [14 , 15] channel: 0 threshold: [20, 20] - source: qdc1_1 - io_register: io_reg_0 board: qdc1 baseaddr: 0xE0000 channel: 1 - pattern_unit_259: pu0 baseaddr: 0x60000
  • 14. Detalles de implementación  Bucle de adquisición: DAQEvent.h
  • 15. Detalles de implementación  Controlador DAQBoard: hw/Matacq.h
  • 16. Detalles de implementación  Instanciar controlador: hw/DAQHardwareFactory.cxx
  • 17. 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
  • 18. 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 → agosto­septiembre
  • 19. 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