Trabajar con datos de formas de onda adquiridos en Python

Los osciloscopios de Rohde & Schwarz incorporan tecnologías punteras para alcanzar resultados fiables y reproducibles.
Los osciloscopios de Rohde & Schwarz incorporan tecnologías punteras para alcanzar resultados fiables y reproducibles.

Su misión

Usted es ingeniero de desarrollo o de pruebas y utiliza un osciloscopio R&S®RTP, R&S®RTO o R&S®RTE en su trabajo diario. En este contexto, guarda formas de onda adquiridas para fines de archivo y documentación o para un procesamiento posterior más allá de las funciones del osciloscopio o de sus límites de rendimiento. El formato ASCII (archivos con extensión csv) para almacenar las formas de onda puede exceder la capacidad de memoria. Además, este formato requiere mucho tiempo para la transferencia y el procesamiento, e incluye menos información en comparación con el formato binario.

Solución Rohde & Schwarz

Los osciloscopios de laboratorio y de alto rendimiento de Rohde & Schwarz (R&S®RTP, R&S®RTO, R&S®RTE) utilizan todos ellos el mismo formato de almacenamiento binario de formas de ondas. El paquete complementario de alto rendimiento Python RTxReadBin le permite administrar archivos binarios y obtener toda la información necesaria para su documentación.

Aplicación

Para transferir la forma de onda de su instrumento a su entorno Python deberá preparar el IDE Python:

  • Descargue el paquete RTxReadBin del sitio web de Rohde & Schwarz
  • Instale el paquete en su sistema
  • Grabe una forma de onda en el osciloscopio y guárdela como archivo binario

Se crearán dos archivos: un archivo de descripción de forma de onda (*.bin) y un archivo de datos de forma de onda (*.wfm.bin). El archivo de forma de onda (cargado a través de la función RTxReadBin) puede constar de:

  • Canales analógicos
  • canales digitales (MSO)
  • buses paralelos (adquiridos mediante MSO)
  • canales analógicos (con el ZVC)
  • formas de onda matemáticas incluyendo espectros
  • pistas (formas de onda basadas en medidas automáticas)

Para todas estas fuentes de señal se admiten, dado el caso, diversas adquisiciones y varios canales.

Tras la adquisición de los datos con el osciloscopio Rohde & Schwarz puede cargarlos en su entorno Python para el procesamiento posterior. Pero también puede, para mayor comodidad, dejar la forma de onda donde está guardada y activar el acceso de red a los datos montando un recurso compartido CIFS en su ordenador. Siga los siguientes pasos de preparación en el osciloscopio:

  • Vaya a Uso compartido avanzado
  • Seleccione el perfil público y cambie los siguientes parámetros:
    - active Detección de redes
    - active Compartir archivos e impresoras
    - active el acceso de escritura a carpetas públicas

Una vez realizados estos pasos puede conectar el osciloscopio utilizando la siguiente ruta de acceso en su archivo de comandos de Python:

r’\\<nombre del osciloscopio o dirección IP>\Users\Public\Documents\Rohde-Schwarz\RTx\RefWaveforms\<nombre de archivo>.bin’

Tenga en cuenta que, puesto que Python interpreta la cadena, la secuencia de caracteres \U se interpretará y dará lugar a un error. Para evitarlo, añada simplemente una “r” (de «raw») delante de la cadena. Es posible que el sistema solicite sus credenciales. Asegúrese de no utilizar la autenticación para el servidor de dominio Windows local. Para ello, anteponga una barra diagonal inversa a la cuenta local instrumento:

cuenta: \instrumento
contraseña: <contraseña de su osciloscopio>

Alternativamente, también puede descargar (arrastrando y soltando) la forma de onda del osciloscopio a través del Explorador de Windows.

Una vez cumplimentados estos requisitos previos podrá cargar el módulo a través de la función de importación de Python e invocar RTxReadBin. La forma más sencilla de hacerlo es indicando el nombre de archivo. La función devuelve tres parámetros: los datos de forma de onda verticales (y), los datos de eje horizontal (x) y el parámetro de adquisición (S).

> importar RTxReadBin de RTxReadBin
> importar numpy
> y, x, S = RTxReadBin(’<nombre de archivo wfm>.bin’)
> y.shape

Los datos verticales (y) son una matriz NumPy con la forma [<longitud de registro>, <n.° de adquisiciones>, <n.° de canales activos>]. Para una forma de onda de un MSO, el tipo de datos es booleano y para el bus paralelo es un entero sin signo (uint16), en paquetes de bits con el índice del MSO más alto (bit más significativo). Por ejemplo, supongamos que las líneas del MSO D12, D7, D2 y D0 están conectadas y configuradas como bus paralelo. En este caso, la palabra registrada se guardará como D12 ∙ 23 + D7 ∙ 22 + D2 ∙ 21 + D0 ∙ 20. Para todos los demás tipos de datos de forma de onda se utilizará float32. Es importante mencionar que el osciloscopio utiliza una forma de cómputo diferente para el historial de adquisiciones en relación a Python. El osciloscopio empieza con (1 - <n.° de adquisiciones>) y cuenta hasta 0 como última adquisición. En Python, el cómputo se desplaza y empieza con 0 y termina con (<n.° de adquisiciones> - 1) como última adquisición.

Los datos horizontales (x) son una matriz flotante NumPy de 64 bits con la forma [<longitud de registro>]. Si los datos están guardados en formato x/y intercalado, la matriz se amplía para cubrir todas las adquisiciones [<longitud de registro>, <n.° de adquisiciones>]. Si está almacenado un espectro, el eje x contendrá el eje de frecuencia del espectro.

La longitud de registro, el número de adquisiciones y los canales se pueden recuperar fácilmente accediendo a la propiedad de forma del valor devuelto y.

Si no se necesitan todos los parámetros, pueden pasarse por alto por medio de los métodos estándar de Python, p. ej. agregando un especificador de lista (véase el ejemplo más abajo) o utilizando un guion bajo como parámetro de devolución posicional.

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

Se pueden especificar otros dos parámetros (opcionales) para reducir la cantidad de memoria asignada. El primer parámetro especifica las adquisiciones de interés. El segundo parámetro especifica el intervalo, el tiempo o la frecuencia de interés. Para ambos se requiere un alista con una longitud de dos elementos. Tenga en cuenta que el parámetro de adquisición sigue la notación de Python de una lista. En el ejemplo mostrado, se devuelven dos adquisiciones (2,3).

> y, x, S = RTxReadBin(’<nombre de archivo wfm>.bin’,
adquisiciones = [2,4],
xIntervalo = [-2e-7,3e-7])

El parámetro restante S aporta todos los detalles disponibles en el archivo de encabezado. Este está implementado como diccionario Python. No todos estos parámetros son importantes para el usuario. Sin embargo, algunos de ellos pueden resultar útiles para la documentación y el análisis. Puesto que los datos de forma de onda en el vector y son solamente un número flotante, el usuario no puede determinar los ajustes originales de estos datos. Examinando los parámetros del encabezado, sin embargo, el usuario puede obtener la información necesaria para la documentación y el posprocesamiento. Por ejemplo, para comprender las restricciones de ruido de una medida es importante disponer de información sobre los ajustes de la escala vertical, el offset, la posición y el acoplamiento.

Otro ejemplo se refiere al análisis del intervalo de repetición de impulsos (PRI) en aplicaciones de radar. Si se capta un impulso radar por adquisición con la memoria segmentada1), la lista de sellos de tiempo de una captura segmentada proporciona los eventos de disparo a lo largo del tiempo que de otro modo no estarían disponibles (S[’sellos de tiempo’]). La diferencia de tiempo para eventos de disparo consecutivos aporta la secuencia de PRI.

Los dos diagramas siguientes muestran los datos de forma de onda cargados en el osciloscopio y en un entorno Python. Se visualizan tres señales:

  • señal sinusoidal de 1 MHz con offset
  • chirp radar con alternacia ascendente/descendente
  • ruido – sin conexión de señal

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

1)Véase «Demodulación de pulsos de RF de radar con un osciloscopio» en el sitio web de Rohde & Schwarz:

Resumen

El R&S®RTP, el R&S®RTO y el R&S®RTE son osciloscopios de alto rendimiento. El módulo Python (RTxReadBin) amplía la funcionalidad de los instrumentos proporcionando acceso a formas de onda almacenadas. Para aplicaciones que requieren posprocesamiento, documentación o procesos de análisis subsiguientes, como comparaciones de formas de onda, ahora se dispone de todos los datos de forma de onda en el marco de un potente entorno Python.

Tres formas de onda diferentes sin historial cargadas como formas de onda de referencia.
Tres formas de onda diferentes sin historial cargadas como formas de onda de referencia.
Abrir Lightbox
Tres formas de onda diferentes con historial.
Tres formas de onda diferentes con historial.
Abrir Lightbox

Soluciones relacionadas