Trabajando con datos de formas de onda adquiridos en Python

Los osciloscopios de Rohde & Schwarz utilizan tecnologías de punta para conseguir resultados confiables y reproducibles.
Los osciloscopios de Rohde & Schwarz utilizan tecnologías de punta para conseguir resultados confiables y reproducibles.

Su tarea

Como ingeniero de desarrollo o de pruebas, usted utiliza un osciloscopio R&S®RTP, R&S®RTO o R&S®RTE en su trabajo diario. Almacena formas de onda adquiridas para archivarlas, documentarlas o para un procesamiento posterior que excede los límites funcionales o de rendimiento del osciloscopio. Al utilizar el formato ASCII (sufijo de archivos csv) para almacenar formas de onda se puede exceder potencialmente la capacidad de almacenamiento. Este formato también requiere una cantidad significativa de tiempo para transferir y procesar. Además, cuando se utiliza el formato ASCII en lugar del formato binario, algunas informaciones no están disponibles..

La solución de Rohde & Schwarz

Los osciloscopios de laboratorio y rendimiento (R&S®RTP, R&S®RTO, R&S®RTE) de Rohde & Schwarz comparten el mismo formato para el almacenamiento de formas de onda binarias. El paquete auxiliar Python RTxReadBin de alto rendimiento le permite manipular archivos binarios y obtener los detalles necesarios para su documentación.

Aplicación

Para transferir las formas de onda de su instrumento a un entorno Python debe preparar el IDE de Python:

  • descargue el paquete RTxReadBin del sitio web de Rohde & Schwarz
  • instale el paquete en su sistema
  • adquiera una forma de onda en su osciloscopio y almacénela como un archivo binario

Se crearán dos archivos: un archivo de descripción de la forma de onda (*.bin) y un archivo de datos de la forma de onda (*.wfm.bin). Los datos de la forma de onda (cargados mediante la función RTxReadBin) pueden consistir de lo siguiente:

  • canales analógicos
  • canales digitales (MSO)
  • buses en paralelo (adquiridos mediante MSO)
  • canales analógicos (adquiridos mediante ZVC)
  • formas de onda matemáticas entre los que figuran espectros
  • pistas (formas de onda basada en mediciones automatizadas)

Para todas estas fuentes de señal, si procede, se admiten múltiples adquisiciones y canales.

Después de adquirir los datos con el osciloscopio Rohde & Schwarz, se los puede cargar en su entorno Python para su posterior procesamiento. Para mayor comodidad, sin embargo, se puede dejar la forma de onda en donde está y permitir a la red acceder a los datos mediante el montaje de un CIFS compartido en su computadora. Realizar los siguientes pasos preparatorios en el osciloscopio:

  • ir a compartir avanzado
  • seleccionar perfil público y cambiar los siguientes parámetros:
    - activar descubrimiento de red
    - activar uso compartido de archivos e impresora
    - activar el acceso de escritura en carpetas públicas

Una vez que haya completado estos pasos, puede conectarse al osciloscopio por medio de la siguiente ruta de acceso al archivo en su script Python:

r’\\<name of scope or IP address>\Users\Public\Documents\Rohde-Schwarz\RTx\RefWaveforms\<filename>.bin’

Tenga en consideración lo siguiente: ya que Python interpreta la cadena, la secuencia de caracteres \U se interpretará y derivará en un error. Para evitar esto, solo agregue una «r» (de raw) al inicio de la cadena. Es posible que se le pidan credenciales. Asegúrese de no utilizar la autentificación contra el servidor de dominio de Windows local. Para hacer esto, anteceda el instrumento de la cuenta local con una barra invertida:

cuenta: \instrument
password: <your oscilloscope pw>

Opcionalmente, puede descargarse (arrastrar y soltar) la forma de onda desde el osciloscopio con Windows Explorer.

Una vez que se llevaron a cabo esos prerrequisitos, se puede cargar el módulo por medio de la importación de Python y aplicar RTxReadBin. La manera más sencilla de hacerlo es proporcionando el nombre del archivo. La función devuelve tres parámetros: los datos de la forma de onda vertical (y), los datos del eje horizontal (x) y la adquisición del parámetro (S).

> from RTxReadBin import RTxReadBin
>import numpy
> y, x, S = RTxReadBin(’<wfm filename>.bin’)
> y.shape

Los datos verticales (y) son una matriz NumPy con una forma de [<record Length>, <# of acquisitions>, <# of active channels>]. Para una forma de onda MSO, el tipo de datos es solo Booleano y para el bus paralelo, es un entero (16 unidades) sin signo y bit empaquetados con el más alto índice MSO (MSB). Por ejemplo, asumamos que las líneas MSO D12, D7, D2 y D0 se conectan y se configuran como un bus paralelo. Luego, los datos adquiridos se almacenarán como D12 ∙ 23 + D7 ∙ 22 + D2 ∙ 21 + D0 ∙ 20. Se utiliza float32 para todos los demás tipos de datos de formas de onda. Es muy importante mencionar que el osciloscopio utiliza una diferente manera de contar el historial de las adquisiciones en comparación con Python. El osciloscopio inicia con (1 - <# of acquisitions>) y cuenta hasta 0 como la última adquisición. En Python, el conteo es a la inversa, empieza en 0 y termina con (<# of acquisitions> - 1) como la última adquisición.

Los datos horizontales (x) son una matriz NumPy flotante de 64 bits con una forma de [<record length>]. Si los datos se almacenan en formato intercalado x/y, la matriz se extiende para cubrir todas las adquisiciones [<record length>, <# of acquisitions>]. Si se almacena un espectro, el eje x contendrá el eje de frecuencia del espectro.

La longitud de registro, los números de adquisiciones y los canales pueden recuperarse de manera fácil mediante el acceso a la propiedad de forma del valor devuelto y.

Si no se requieren todos los parámetros, se los puede ignorar mediante la utilización de las técnicas de Python estándar, p.ej. por medio de la adición de un especificador de lista (véase el siguiente ejemplo), o usando un guión bajo como parámetro de devolución posicional.

> y, x =
RTxReadBin(’<wfm filename>.bin’)[0,2]

Hay dos parámetros (opcionales) más que pueden especificarse para reducir la cantidad de memoria asignada. El primer parámetro especifica la adquisición de interés. El segundo parámetro especifica el intervalo, el tiempo o la frecuencia de interés. Ambos requieren una lista con una longitud de dos ítems. Tenga en cuenta que los parámetros de adquisición siguen la notación de Python de una lista. En el ejemplo dado, se devuelven dos adquisiciones (2,3).

> y, x, S = RTxReadBin(’<wfm filename>.bin’,
acquisitions = [2,4],
xInterval = [-2e-7,3e-7])

El parámetro-S restante brinda todos los detalles que están disponibles en el archivo de cabecera. Se implementa como un diccionario de Python. No todos estos parámetros son importantes para el usuario. Sin embargo, algunos de ellos pueden ser de mucha ayuda para la documentación y el análisis. Ya que los datos de formas de onda en el vector y son solo un flotador, el usuario no puede determinar los ajustes originales de estos datos. Sin embargo, al examinar los parámetros en el encabezamiento, el usuario puede obtener la información necesaria para la documentación y el posprocesamiento. Por ejemplo, para entender la restricción del ruido para una medición, es importante tener información sobre los ajustes en la escala vertical, el offset, la posición y el acoplamiento.

Otro ejemplo involucra el análisis del intervalo de repetición de impulso (PRI) en las aplicaciones de radar. Cuando se captura un impulso radar por adquisición mediante la memoria segmentada1), la lista de sello de tiempo de una captura segmentada proporciona los eventos de disparo en el tiempo, los cuales de otro modo no estarían disponibles (S [’Timestamps’]). La diferencia de tiempo para eventos de disparo consecutivos proporciona la secuencia PRI.

Los dos siguientes gráficos muestran datos de formas de onda cargados en el osciloscopio y en un entorno Python. Se muestran tres clases de señales:

  • señal sinusoidal de 1 MHz con offset
  • chirp de radar alternando arriba/abajo
  • ruido, ninguna señal conectada

La ventaja de la función RTxReadBin es que puede manejar archivos de formas de onda con múltiples adquisiciones (historial). Cuando se carga el mismo archivo, el osciloscopio solo reconoce la última adquisición y muestra un historial vacío.

1)Véase «Demodulating radar RF pulses with an oscilloscope» en el sitio web de Rohde & Schwarz:

Resumen

Los R&S®RTP, R&S®RTO y R&S®RTE son osciloscopios potentes. El módulo Python (RTxReadBin) amplía la funcionalidad de los instrumentos al permitirle acceder a las formas de onda almacenadas. Para aplicaciones que involucran el posprocesamiento, la documentación o los procedimientos de análisis posteriores, como las comparaciones de formas de onda, todos los datos de formas de onda ahora están disponibles en un potente entorno Python.

Tres diferentes tipos de formas de onda sin historial cargados como formas de onda referenciales.
Tres diferentes tipos de formas de onda sin historial cargados como formas de onda referenciales.
Abrir Lightbox
Tres diferentes tipos de formas de onda con historial.
Tres diferentes tipos de formas de onda con historial.
Abrir Lightbox

Soluciones relacionadas