INFORME TÉCNICO PROGRAMA DE ADQUICIÓN PARA LOS RECEPTORES DIGITALES ECHOTEK GC214 Karim M. Kuyeng Ruiz Operaciones Junio, 2009 Apartado 130207, Lima 13, Perú Teléfonos (+51-1)317-2313 Fax (+51-1)317-2312
RESUMEN Este manual consiste en la descripción del software de adquisición desarrollado en sistema Windows para los receptores digitales Echotek GC214. Los drivers que requieren las tarjetas son propios del fabricante y basándose en ellos se ha procedido a desarrollar el software de adquisición que es usado para el radar principal de Jicamarca. 2
ÍNDICE 1. INTRODUCCIÓN...4 2. DESARROLLO...4 2.1 Diagrama de Flujo del programa...4 2.1.1 Lectura de parámetros...5 2.1.2 Simulación de adquisición de datos ( copperball )...8 2.1.3 Inicialización y configuración de la tarjeta receptora digital Echotek...8 2.1.4 Inicialización de Procesamiento(s)...9 2.1.5 Sincronización con controlador de radar...9 2.1.6 Adquisición de datos...9 2.1.7 Activación de procesamiento...11 3. RESULTADOS...16 4. CONCLUONES...16 5. RECOMENDACIONES...16 3
PROGRAMA DE ADQUICIÓN DESARROLLADO EN LENGUAJE C (WINDOWS) USANDO LAS TARJETAS ECHOTEK GC214 USADO PARA EL RADAR PRINCIPAL DE JICAMARCA 1. INTRODUCCIÓN El siguiente informe es la descripción del programa de adquisición desarrollado para las tarjetas Echotek GC214 (tarjetas receptoras digitales), que es, desde finales del año 2004, el programa usado en el sistema de adquisición del radar principal de Jicamarca. El anterior sistema de adquisición del radar principal está basado en receptores analógicos, los cuales tenían desventajas tales como su pobre rango dinámico y su susceptibilidad a cambios de las señales en los canales debido al hardware para hacer la conversión de los datos a banda base y la creación de los canales en cuadratura, pero teniendo tarjetas receptoras digitales todo eso se realiza sin tener problemas. 2. DESARROLLO El programa se ha desarrollado usando Visual Net 2003, usando el lenguaje C para la programación [código fuente en CD adjunto], además de usar las librerías y drivers del fabricante de la tarjeta receptora (Echotek GC214) para su manejo respectivo. El programa tiene dos grandes partes, la parte de adquisición, que involucra el manejo de la tarjeta receptora y la parte de procesamiento, que dependiendo de lo que se requiera realiza los procesamientos necesarios antes de grabar los datos. La parte de adquisición está dentro de un lazo infinito, la cual cada vez que termina de adquirir un bloque de datos, éste es entregado a la parte de procesamiento el cual se procesa y guarda los datos en el disco. El procesamiento se realiza paralelamente a la adquisición y se asume que termina antes de que la parte de adquisición tenga un nuevo bloque de datos adquirido. 2.1 Diagrama de Flujo del programa El diagrama de flujo presentado a continuación (Figura 1) muestra de manera general la estructura y funcionamiento del programa desarrollado. Cada una de las partes que lo conforman se irán describiendo a lo largo del informe. 4
PROGRAMA PRINCIPAL INICIO 1 Lectura de parametros 2 Simulación de adquisición de datos Simulación? Crear buffer de datos simulados 7 Activar Procesamiento 3 Inicializacion y Configuracion de la echotek Finalizar simulación? 4 Inicialización Procesamiento(s) 5 Sincronizar toma de datos con RC Adquirir? Cerrar variables FIN Resincronizar RC (trigger) Gate/Trig activo? 6 Adquirir Activar Procesamiento 7 Figura 1 Diagrama de flujo del programa de adquisición 2.1.1 Lectura de parámetros La lectura de parámetros es una función que lee las variables necesarias del archivo *.racp para la adquisición y procesamiento de datos y además crea la cabecera que llevarán los datos a grabar. La variables son creadas con el programa PulseDesign desarrollado en Jicamarca [ver 5
informe técnico de PulseDesign, en CD adjunto] en donde se ingresan las características propias del experimento (IPP, ancho de pulso de TX, código, ventana de datos a adquirir, archivo de configuración de la tarjeta receptora digital Echotek, canales a adquirir, etc) además de los posibles procesamientos a realizar (decodificación, integración, FFT, etc). Luego de la lectura de parámetros se procede a crear la cabecera que llevarán los datos a grabar en la cual se incluye los parámetros del experimento [ver manual Jicamarca Data Structure en CD adjunto] y a inicializar las variables para empezar la adquisición de datos (buffer de entrada de datos, buffers de procesamiento, etc). Figura 2 PULSE DEGN Parámetros del controlador de radar Figura 3 PULSE DEGN Parámetros de procesamiento 6
Figura 4 Archivo *.racp Lectura de Parámetros Inicio Abrir archivo (*.racp) Leer linea de archivo Fin de archivo? Inicializar buffers de procesamiento Es igual a Lista de Parametros? Almacenar parametro Inicializar buffers de procesamiento Fin Figura 5 Diagrama de flujo de función 7
2.1.2 Simulación de adquisición de datos ( copperball ) Esta función se usa para probar la parte de procesamiento de datos ya que lo que hace es simular el buffer de datos adquiridos para luego realizar el procesamiento deseado. Los datos simulados son generados considerando las características del experimento, es decir, si el pulso a transmitir tiene código, los datos simulados se generarán con el código correspondiente. También se le agrega ruido y se hace que el eco simulado esté dentro de la primera mitad de la ventana a adquirir. Luego de haber simulado los datos, el buffer es ingresado a la etapa de procesamiento en donde se realizarán los procesamientos especificados en el PulseDesign. La simulación continuará hasta que se termine el programa. 2.1.3 Inicialización y configuración de la tarjeta receptora digital Echotek La inicialización y configuración de la tarjeta Echotek GC214 se realiza con las funciones pertenecientes al fabricante [ver manuales de la Echotek en CD adjunto] alteradas mínimamente para poder permitir la programación y adquisición de más de una tarjeta a la vez. El archivo de configuración (*.ini) con el que la tarjeta es programada se crea con el programa DRxDesign desarrollado en Jicamarca que permite de forma rápida y amigable el cambio de filtros (CFIR, PFIR), decimación, ganancia, etc. que la tarjeta ofrece. Inicialización y configuración de la tarjeta echotek Inicio Abre tarjeta(s) a usar Abrió? Programa caracteristicas de recoleccion de datos de la tarjeta Cerrar programa principal Programa archivo de configuración (*.ini) Continuar con el programa principal Figura 6 Diagrama de flujo 8
2.1.4 Inicialización de Procesamiento(s) Se inicializa(n) el(los) procesamiento(s) a realizar según las especificaciones dadas por el PulseDesign creando los hilos correspondientes para que cuando esté listo el buffer de datos adquiridos sean transferidos al hilo de procesamiento sin dejar de seguir adquiriendo. 2.1.5 Sincronización con controlador de radar El programa de adquisición necesita sincronizarse con el controlador de radar [ver manual del controlador de radar en CD adjunto] ya que éste le proporciona el trigger/gate necesario para que la tarjeta Echotek comience a adquirir. Es por eso que cuando se va a comenzar la adquisición lo que se hace es poner en espera los pulsos del controlador de radar, se activa la adquisición de la tarjeta de recepción (a la espera del trigger/gate que la haga comenzar a adquirir) y luego se restablecen los pulsos del controlador para que comience la adquisición y así lo que el usuario a configurado como primera trama de datos a adquirir sea también la primera trama de datos adquiridos por la tarjeta y grabados en el disco. Sincronización con controlador de radar Inicio Parar pulsos del RC Limpiar FIFOS de tarjetas Habilitar toma de datos Reiniciar pulsos de RC Fin de función Figura 7 2.1.6 Adquisición de datos La adquisición de datos se inicia una vez recibido el trigger/gate del controlador de radar. Se espera que la tarjeta informe que tiene datos disponibles en sus FIFOS, éstos se chequean por si se han llenado o desbordado, y si no es así se procede a volcarlos al buffer de datos. Esto se repite varias veces hasta llegar a adquirir las muestras deseadas, ya que los datos se van adquiriendo por bloques de ¼ FIFO (o ½ FIFO, lo que se determine) hasta completar la cantidad de muestras deseadas. Una vez que el buffer de datos esté completado se le envía a la parte de procesamiento. Si es que ocurriese un desborde o llenado en alguna de las FIFOS se procede a eliminar los datos adquiridos del último buffer de datos, se limpian los FIFOS y se vuelve a sincronizar la toma 9
de datos con el controlador de radar para comenzar de nuevo con la adquisición. Adquisición de datos Inicio Bloque de datos completo? Datos tarjeta < ½ FIFO Interrupción informando datos disponibles? FIFO desbordado? Copia datos adquiridos a buffer de datos (por cada canal) Se reinicia toma de datos del bloque (resincronismo con RC*) * ver sincronización con RC Grabar Datos? Se activa Procesamiento de datos Está en la hora programada? Cierra tarjetas y limpia variables Fin Figura 8 10
2.1.7 Activación de procesamiento Una vez que el buffer de datos está completo, se activa el hilo de procesamiento en donde se realizan los procesamientos anteriormente definidos en el PulseDesign. Luego de realizar todos los procesamientos los datos resultantes son guardados en el formato Jicamarca [ver manual Jicamarca Data Structure en CD adjunto]. 2.1.7.1 Procesamiento Los procesamientos posibles van desde escoger los perfiles a procesar, hacer filtros en alturas, integraciones coherentes, decodificar hasta generar espectros (FFTs), hacer integraciones incoherentes y auto/cross correlaciones. Para el procesamiento se están usando las librerías IPP (Integrated Performance Primitives for Intel Architecture) que permite aprovechar la arquitectura del procesador para obtener mayor velocidad en diferentes operaciones matemáticas. Un ejemplo es el cálculo de FFT que es usado para obtener los espectros de los datos y también es usado para la decodificación. La forma en la que se ha decidido hacer la parte de procesamiento es de forma lineal, y una función para cada caso que se presente ya que así se obtiene mayor rapidez aunque se use mucha memoria según el número de procesamientos a hacer. Ver Figuras 9, 10, 11. 2.1.7.2 Grabado de datos El grabado de datos está incluido en la etapa de procesamiento y se realiza cada vez que se termine de hacer el procesamiento deseado. El buffer final es guardado en forma binaria no sin antes insertar en cada dato la cabecera que se generó al leer los parámetros. En cada grupo de datos, dentro de la cabecera, se incluye la hora en la que fue adquirido y el número de bloque al cual corresponde [ver manual Jicamarca Data Structure en CD adjunto]. Ver Figuras 12 y 13. 11
Inicio Nat o Ech? Configuración de tamaño de datos tamaño = float? Pre >1? Deco? Nat o Ech? Nat o Ech? Ech ProfRange or ProcfWin? _HPCh short_float Deco_ArrangeH Ech _HPCh short_float PostCoh? RawData? A ProfRange or ProcfWin? short_float C HPCh short_float C Deco? Nat o Ech? Ech ProfRange or ProcfWin? _HPCh short_float Deco_ArrangeH short_float PostCoh? RawData? HPCh RawData? Nat o Ech? C Ech ProfRange or ProcfWin? Nat o Ech? Ech ProfRange or ProcfWin? short_float short_float Arrange short_float C LEYENDA - : Integraciones Coherentes - Pre Coh: / PostCoh - Deco: decodificar - Post_Coh: # de Int Coh que faltan hacer luego de la decodificación. - Nat: Sistema National - Ech: Sistema Echotek - ProfRange: Arreglo de perfiles a escoger para el procesamiento - ProcWin: Arreglo del # de muestras a sumar (filtro en alturas) - HPCh:datos ordenados por Alturas, Perfiles, Canales - ChPH:datos ordenados por Canales, Perfiles, Aluras - short_float: datos de short a float Figura 9 datos a ser guardados con tamaño float 12
A tamaño = short Pre >1? Deco? Solo Nat ChHP_HPCh char_short Deco_ArrangeH Solo Nat PostCoh? RawData? Ech ChHP char_short B B Deco? Solo Nat Ech ChHP_HPCh char_short Deco_ArrangeH PostCoh? RawData? RawData? Nat o Ech? Ech Nat B Chs continuos? B LEYENDA - : Integraciones Coherentes - Pre Coh: / PostCoh - Deco: decodificar - Post_Coh: # de Int Coh que faltan hacer luego de la decodificación. - Nat: Sistema National - Ech: Sistema Echotek - HPCh:datos ordenados por Alturas, Perfiles, Canales - ChPH:datos ordenados por Canales, Perfiles, Aluras - char_short: datos de char a short tamaño = char Nat o Ech? Ech short_char Figura 10 datos a ser guardados con formato short o char 13
B ProfBefSpec!= ProfPerBlock Buffer Normal Buffer Continuo LEYENDA - ProfBefSpec: Perfiles antes del spectro - ProfPerBLock: Perfiles por bloque de datos - IntInc: Integraciones Incoherentes Espectros? Tamaño = float? Genera Espectros y IntInc IntInc = 0? Graba datos espectrales Tamaño = float? Tamaño = short? Graba datos crudos Tamaño = char? Fin Función Procesamiento de datos Figura 11 Generación de espectros (si es el caso) y grabado de datos 14
Grabado de datos crudos Grabado de datos espectrales Inicio Inicio Adquiere actual nombre de dato crudo a grabar Abre archivo a grabar Adquiere actual nombre de dato espectral a grabar Abre archivo a grabar Graba Header Graba Header Graba datos crudos Graba datos espectrales Graba estado del experimento Fin Grabar DC? Graba 1 bloque del experimento para chequeo rapido Graba DC de datos espectrales Figura 12 Graba estado del experimento Fin Figura 13 15
3. RESULTADOS Este programa de adquisición se ha venido usando desde finales del 2004, haciendo posible más tipos de experimentos en los que se obtienen tanto ecos fuertes como ecos débiles por el gran rango dinámico proporcionado por los receptores digitales. El ejemplo más resaltante es el experimento MST-ISR, en donde se adquieren datos tanto de la parte alta de la atmósfera, como de la parte baja, siendo los primeros usados para calibrar las distintas variables del radar y luego poder aplicar esas variables a los datos de la parte baja. Para MST ISR se tienen dos procesamientos de datos; se adquiere un bloque de datos y luego se escoge que perfiles corresponderán a cada procesamiento a realizar, ya que se usan dos procesamientos en paralelo, uno para la parte de MST (decodificación, integración coherente) y otro para la parte de ISR (filtro en alturas). Figura 14 - MST Figura 15 ISR 4. CONCLUONES El motivo principal del informe es tener un documento con la información necesaria para conocer a detalle el programa de adquisición, usado con las tarjetas de adquisición Echotek GC214, del radar principal de Jicamarca, en donde no solo se muestran las funciones principales del programa, sino también se adjuntan el código del programa, los manuales(o referencias) de los programas extras usados y diferentes manuales (archivos en el CD adjunto). Al inicio el programa solo adquiría datos crudos, pero se ha hecho un gran esfuerzo en crear la librería RdpTools (librería de procesamiento) que puede ser añadida en cualquier otro programa que se desarrolle, además de servir de base para cualquier otra versión que se le quiera hacer. Todavía el programa tiene algunas fallas que no se han podido resolver, como el iniciar la toma de datos de las diferentes tarjetas con diferentes fases, pero debido a que eso puede ser resuelto de otra manera se ha dejado así no sin tratar de descubrir la solución. 5. RECOMENDACIONES Mejorar la parte de procesamiento para que las integraciones no se realicen con lazos porque eso demora la performance del programa. (Esto se está realizando para el nuevo sistema JARS, y luego de finalizarlo será implementado en los programas de adquisición) Hacer que las fallas de memoria sean detectadas y grabadas en un registro para saber porqué y cuando sucedió. 16
BIBLIOGRAFÍA Microsoft Corporation, Microsoft Visual C++, Run-Time Library Reference, 1995 Integrated Performance Primitives for Intel Architecture Reference Manual (Ver. 3.0) 17
ANEXOS Se adjunta un CD con la siguiente información: Código fuente: Programa de adquisición: Proyecto ACQ_HF_CPP_1_0.vcproj Librería de procesamiento: Proyecto RdpTools.vcproj Manuales complementarios Manuales de la tarjeta Echotek ECDR- GC214-PCI (inglés) Jicamarca_DATAStructure.pdf: Manual del formato de datos Jicamarca (inglés) PulseDesign.pdf: Manual del programa de generación de Pulsos PULSE DEGN Manual del controlador de radar de 8 canales. 18