

Sua tarefa
Como engenheiro de desenvolvimento ou de teste, você usa um osciloscópio R&S®RTP, R&S®RTO ou R&S®RTE em seu trabalho diário. Você armazena formas de onda gravadas para arquivamento e documentação ou para um processamento posterior que esteja além dos limites funcionais ou de desempenho do osciloscópio. O uso do formato ASCII (sufixo de arquivo csv) para armazenar formas de onda pode exceder a capacidade de armazenamento. Este formato também requer uma quantidade significativa de tempo para transferência e processamento. Além disso, algumas informações não estão disponíveis quando se usa o formato ASCII em vez do formato binário.
A solução da Rohde & Schwarz
Os osciloscópios de laboratório e alto desempenho da Rohde & Schwarz (R&S®RTP, R&S®RTO e R&S®RTE) compartilham o mesmo formato para armazenamento de formas de onda binárias. O pacote auxiliar Python RTxReadBin de alto desempenho permite que você manipule arquivos binários e obtenha todos os detalhes necessários para a sua documentação.
Aplicação
Para transferir a forma de onda do seu instrumento para o seu ambiente Python, você deve preparar o IDE Python:
- Baixe o pacote RTxReadBin do site da Rohde & Schwarz
- Instale o pacote no seu sistema
- Adquira uma forma de onda em seu osciloscópio e armazene-a como um arquivo binário
Dois arquivos serão criados: um arquivo de descrição de forma de onda (*.bin) e um arquivo de dados de forma de onda (*.wfm.bin). Os dados da forma de onda (carregados através da função RTxReadBin) podem consistir em:
- Canais analógicos
- Canais digitais (osciloscópio de sinais mistos)
- Barramentos paralelos (adquiridos através de osciloscópio de sinais mistos)
- Canais analógicos (através de ZVC)
- Formas de onda matemáticas que incluem espectros
- Faixas (formas de onda baseadas em medição automatizada)
Para todas essas fontes de sinal, múltiplos canais e aquisições são compatíveis, se aplicável.
Depois de adquirir dados com o osciloscópio da Rohde & Schwarz, você pode carregá-los em seu ambiente Python para processamento posterior. Para maior conveniência, no entanto, você também pode deixar a forma de onda onde está e habilitar o acesso à rede aos dados, ao montar um compartilhamento CIFS no seu computador. Realize as seguintes etapas preparatórias no osciloscópio:
- Acesse o compartilhamento avançado
- Selecione o perfil público e altere os seguintes parâmetros:
- Ativar a descoberta de rede
- Ativar o compartilhamento de arquivos e impressoras
- Ativar o acesso de gravação para pastas públicas
Depois de ter concluído essas etapas, você pode se conectar ao osciloscópio usando o seguinte caminho de arquivo em seu script Python:
r’\\<name of scope or IP address>\Users\Public\Documents\Rohde-Schwarz\RTx\RefWaveforms\<filename>.bin’
Saiba que, como o Python interpreta a cadeia de caracteres, a sequência de caracteres \U será interpretada e levará a um erro. Para evitar isso, basta adicionar um “r” (de "raw") na frente da cadeia de caracteres. As credenciais podem ser solicitadas. Certifique-se de não usar a autenticação no servidor de domínio local do Windows. Para fazer isso, coloque uma barra invertida antes do instrumento da conta local:
account: \instrument
password: <your oscilloscope pw>
Como alternativa, você também pode baixar (arrastar e soltar) a forma de onda do osciloscópio usando o Windows Explorer.
Quando esses pré-requisitos estiverem implementados, você poderá carregar o módulo por meio da importação de Python e invocar RTxReadBin. A maneira mais simples de fazer isso é fornecendo o nome do arquivo. A função retorna três parâmetros: os dados da forma de onda vertical (y), os dados do eixo horizontal (x) e o parâmetro de aquisição (S).
> from RTxReadBin import RTxReadBin
> import numpy
> y, x, S = RTxReadBin(’<wfm filename>.bin’)
> y.shape
Os dados verticais (y) são uma matriz NumPy com uma forma de [<record Length>, <# of acquisitions>, <# of active channels>]. Para uma forma de onda de osciloscópio de sinais mistos, o tipo de dados é apenas booliano e para o barramento paralelo, é um inteiro sem sinais (uint16), com pacote de bits com o índice de osciloscópio de sinal misto mais alto (MSB: bit mais significativo). Por exemplo, vamos supor que as linhas D12, D7, D2 e D0 do osciloscópio de sinais mistos estejam conectadas e configuradas como um barramento paralelo. Assim, a palavra de dados gravada será armazenada como D12 ∙ 23 + D7 ∙ 22 + D2 ∙ 21 + D0 ∙ 20. Para todos os outros tipos de dados de forma de onda, float32 é usado. É importante mencionar que o osciloscópio utiliza uma forma diferente de contar o histórico de aquisições em relação ao Python. O osciloscópio começa com (1 - <# of acquisitions>) e conta até 0 como última aquisição. Em Python, a contagem é deslocada e começa com 0 e termina com (<# of acquisitions> - 1) como última aquisição.
Os dados horizontais (x) são uma matriz NumPy flutuante de 64 bits com uma forma de [<record length>]. Se os dados forem armazenados no formato intercalado x/y, a matriz é estendida para cobrir todas as aquisições [<record length>, <# of acquisitions>]. Se um espectro for armazenado, o eixo x conterá o eixo de frequência do espectro.
O tamanho do registro, o número de aquisições e os canais podem ser facilmente recuperados ao acessar a propriedade de forma do valor de retorno y.
Se nem todos os parâmetros forem necessários, eles podem ser ignorados através do uso das técnicas padrão do Python, por exemplo, com a adição de um especificador de lista (veja o exemplo abaixo) ou através do uso de um sublinhado (underscore) como um parâmetro de retorno posicional.
> y, x =
RTxReadBin(’<wfm filename>.bin’)[0,2]
Existem mais dois parâmetros (opcionais) que podem ser especificados para reduzir a quantidade de memória alocada. O primeiro parâmetro especifica as aquisições de interesse. O segundo parâmetro especifica o intervalo, o tempo ou a frequência de interesse. Ambos requerem uma lista com tamanho de dois itens. Saiba que o parâmetro de aquisição segue a notação Python de uma lista. No exemplo dado, duas aquisições (2,3) são retornadas.
> y, x, S = RTxReadBin(’<wfm filename>.bin’,
acquisitions = [2,4],
xInterval = [-2e-7,3e-7])
O parâmetro S restante fornece todos os detalhes disponíveis no arquivo de cabeçalho. Ele é implementado como um dicionário Python. Nem todos esses parâmetros são importantes para o usuário. No entanto, alguns deles podem ser úteis para documentação e análise. Como os dados da forma de onda no vetor y são apenas flutuantes, o usuário não pode determinar as configurações originais a partir desses dados. Ao examinar os parâmetros no cabeçalho, no entanto, o usuário pode obter as informações necessárias para documentação e pós-processamento. Por exemplo, para entender as restrições de ruído para uma medição, é importante ter informações sobre as configurações de escala vertical, desvio, posição e acoplamento.
Outro exemplo envolve a análise do intervalo de repetição de pulso (PRI) em aplicações de radar. Quando um pulso de radar por aquisição é capturado usando a memória segmentada1), a lista de marcas temporais de uma captura segmentada fornece os eventos de disparo ao longo do tempo, que não estão disponíveis de outra forma (S[’Timestamps’]). A diferença de tempo para eventos de disparo consecutivos fornece a sequência de PRI.
Os dois gráficos seguintes mostram dados de forma de onda carregados no osciloscópio e em um ambiente Python. São apresentados três sinais:
- Sinal senoidal de 1 MHz com desvio
- Chirp do radar alternando para cima/para baixo
- Ruído – nenhum sinal conectado
A vantagem da função RTxReadBin é que ela pode manipular arquivos de forma de onda com múltiplas aquisições (histórico). Quando o mesmo arquivo é carregado, o osciloscópio reconhece apenas a última aquisição e exibe um histórico vazio.
1)Consulte “Demodulação de pulsos de radiofrequência de radar com um osciloscópio” no site da Rohde & Schwarz:
Resumo
O R&S®RTP, o R&S®RTO e o R&S®RTE são osciloscópios poderosos. O módulo Python (RTxReadBin) estende a funcionalidade dos instrumentos ao permitir que você acesse formas de onda armazenadas. Para aplicativos que envolvem pós-processamento, documentação ou procedimentos de análise subsequentes, como comparações de formas de onda, todos os dados de formas de onda estão agora disponíveis em um poderoso ambiente Python.

