SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à 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
 

Similaire à 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
 

Plus de 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
 

Plus de 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
 

Dernier

CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docxCRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
geuster2
 
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
 
Catalogo de tazas para la tienda nube de dostorosmg
Catalogo de tazas para la tienda nube de dostorosmgCatalogo de tazas para la tienda nube de dostorosmg
Catalogo de tazas para la tienda nube de dostorosmg
dostorosmg
 
GUIA UNIDAD 3 costeo variable fce unc.docx
GUIA UNIDAD 3 costeo variable fce unc.docxGUIA UNIDAD 3 costeo variable fce unc.docx
GUIA UNIDAD 3 costeo variable fce unc.docx
AmyKleisinger
 
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocxCARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
WILIANREATEGUI
 
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
 

Dernier (20)

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
 
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
 
Correcion del libro al medio hay sitio.pptx
Correcion del libro al medio hay sitio.pptxCorrecion del libro al medio hay sitio.pptx
Correcion del libro al medio hay sitio.pptx
 
Reporte Tributario para Entidades Financieras.pdf
Reporte Tributario para Entidades Financieras.pdfReporte Tributario para Entidades Financieras.pdf
Reporte Tributario para Entidades Financieras.pdf
 
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
 
Ficha de datos de seguridad MSDS Ethanol (Alcohol etílico)
Ficha de datos de seguridad MSDS Ethanol (Alcohol etílico)Ficha de datos de seguridad MSDS Ethanol (Alcohol etílico)
Ficha de datos de seguridad MSDS Ethanol (Alcohol etílico)
 
Contabilidad Gubernamental guia contable
Contabilidad Gubernamental guia contableContabilidad Gubernamental guia contable
Contabilidad Gubernamental guia contable
 
CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docxCRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
CRITERIOS DE EVALUACIÓN - NIVEL INICIAL.docx
 
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
 
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
 
CONSTITUCIÓN POLÍTICA DEL PERÚ al 25082023.pdf
CONSTITUCIÓN POLÍTICA DEL PERÚ al 25082023.pdfCONSTITUCIÓN POLÍTICA DEL PERÚ al 25082023.pdf
CONSTITUCIÓN POLÍTICA DEL PERÚ al 25082023.pdf
 
____ABC de las constelaciones con enfoque centrado en soluciones - Gabriel de...
____ABC de las constelaciones con enfoque centrado en soluciones - Gabriel de...____ABC de las constelaciones con enfoque centrado en soluciones - Gabriel de...
____ABC de las constelaciones con enfoque centrado en soluciones - Gabriel de...
 
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
 
Catalogo de tazas para la tienda nube de dostorosmg
Catalogo de tazas para la tienda nube de dostorosmgCatalogo de tazas para la tienda nube de dostorosmg
Catalogo de tazas para la tienda nube de dostorosmg
 
GUIA UNIDAD 3 costeo variable fce unc.docx
GUIA UNIDAD 3 costeo variable fce unc.docxGUIA UNIDAD 3 costeo variable fce unc.docx
GUIA UNIDAD 3 costeo variable fce unc.docx
 
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocxCARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
CARPETA PEDAGOGICA 2024 ARITA.sadasdasddocx
 
Sostenibilidad y continuidad huamcoli robin-cristian.pptx
Sostenibilidad y continuidad huamcoli robin-cristian.pptxSostenibilidad y continuidad huamcoli robin-cristian.pptx
Sostenibilidad y continuidad huamcoli robin-cristian.pptx
 
CORRIENTES DEL PENSAMIENTO ECONÓMICO.pptx
CORRIENTES DEL PENSAMIENTO ECONÓMICO.pptxCORRIENTES DEL PENSAMIENTO ECONÓMICO.pptx
CORRIENTES DEL PENSAMIENTO ECONÓMICO.pptx
 
CAMBIO DE USO DE SUELO LO BARNECHEA - VITACURA - HUECHURABA
CAMBIO DE USO DE SUELO LO BARNECHEA - VITACURA - HUECHURABACAMBIO DE USO DE SUELO LO BARNECHEA - VITACURA - HUECHURABA
CAMBIO DE USO DE SUELO LO BARNECHEA - VITACURA - HUECHURABA
 
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
 

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