捕捉した波形をPythonで処理する方法

ローデ・シュワルツのオシロスコープは、最先端のテクノロジーを利用して信頼性と再現性に優れた結果を実現しています。
ローデ・シュワルツのオシロスコープは、最先端のテクノロジーを利用して信頼性と再現性に優れた結果を実現しています。

課題

開発エンジニアやテストエンジニアは、R&S®RTP、R&S®RTO、またはR&S®RTE オシロスコープなどを日々の業務で使用しています。記録した波形を保存して、アーカイブやレポート作成、またはオシロスコープの機能や性能の制限を超えて、さらなる処理を実行するために活用します。ASCIIフォーマット(csvファイル拡張子)を使用して波形を保存すると、保存波形が記憶容量を超えてしまう場合があります。それだけでなく、このフォーマットでは、転送と処理にかなりの時間が必要になります。さらに、バイナリーフォーマットではなくASCIIフォーマットを使用することで、一部の情報が使用できなくなります。

ローデ・シュワルツのソリューション

ローデ・シュワルツのすべてのラボ用高性能オシロスコープ(R&S®RTP、R&S®RTO、R&S®RTE)は、バイナリー波形ストレージに共通のフォーマットを使用します。高性能の補助的なPython RTxReadBinパッケージを使用すれば、バイナリーファイルを取り扱って、レポート作成に必要なすべての詳細情報を取得することができます。

アプリケーション

測定器からPython環境に波形を転送するには、以下の手順に従ってPython IDEを準備する必要があります。

  • ローデ・シュワルツのウェブサイトからRTxReadBinパッケージをダウンロードします。
  • パッケージをシステムにインストールします。
  • オシロスコープで波形を捕捉して、それをバイナリーファイルとして保存します。

波形記述ファイル(*.bin)と波形データファイル(*.wfm.bin)の2つのファイルが作成されます。波形データ(RTxReadBin機能を介してロードしたもの)には、場合に応じて以下の情報が含まれます。

  • アナログチャネル
  • デジタルチャネル(MSO)
  • パラレルバス(MSO経由で捕捉したもの)
  • アナログチャネル(ZVC経由)
  • スペクトラムを含む演算波形
  • トラック(波形に基づく自動測定)

このようなすべての信号ソースでは、該当する場合、複数の捕捉と複数のチャネルがサポートされています。

データは、ローデ・シュワルツのオシロスコープで捕捉した後、Python環境にロードしてさらに詳細な処理を行うことができます。しかし、さらに便利な使い方は、コンピューター上でCIFS共有をマウントして、波形を機器に残したまま、データにネットワークアクセスする方法です。オシロスコープで以下の準備手順を実行します。

  • "advanced sharing" に移動します。
  • public profile" を選択して、以下のパラメータを変更します。
    - "network discovery" をオン
    - "file and printer sharing" をオン
    - "write access to public folders" をオン

上記の手順を完了したら、Pythonスクリプトで次のファイルパスを使用してオシロスコープに接続します。

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

Pythonは文字列をインタープリター処理するため、\U以降の文字列は変換され、これによりエラーが発生することに注意が必要です。これを避けるために、"r"(「raw」の頭文字)を文字列の先頭に追加してください。資格情報を要求される場合があります。ローカルのWindowsドメインサーバーに対する認証を決して使用しないようにします。これを確実にするには、ローカルアカウントのinstrumentの前にバックスラッシュを付加します。

account: \instrument
password: <your oscilloscope pw>

あるいは、Windows Explorerを使用して、オシロスコープから波形をダウンロード(ドラッグアンドドロップ)することもできます。

以上の前提条件を満たしたら、Pythonのimport構文を使用してモジュールをロードし、RTxReadBinを呼び出すことができます。これを実行する最も簡単な方法は、ファイル名を提供することです。機能は次の3つのパラメータを返します。垂直波形データ(y)、水平軸データ(x)、捕捉パラメータ(S)。

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

垂直データ(y)は、[<record Length>, <# of acquisitions>, <# of active channels>]という形のNumPy配列です。データ型は、MSO波形の場合はブーリアン型のみで、パラレルバスの場合は符号なし整数型(uint16)です。これは、最上位のMSOインデックス(MSB)によってビットパック処理されます。例えば、MSOのD12、D7、D2、およびD0のラインを接続して、パラレルバスとして構成するとします。この場合、記録データワードは、D12 ∙ 23+D7 ∙ 22+D2 ∙ 21+D0 ∙ 20として保存されます。上記以外のすべての波形データ型には、32ビット浮動小数点型が使用されています。オシロスコープは、Pythonとは異なる方法で捕捉履歴をカウントしていることに注意する必要があります。オシロスコープでは、最初が(1 - <# of acquisitions>)で、最終捕捉を最大0としてカウントします。Pythonでは、カウントがずれて0から始まり、最終捕捉を(<# of acquisitions> - 1)として終了します。

水平データ(x)は、64ビット浮動小数点のNumPy配列で、その形は[<record length>]です。データがx/yインターリーブフォーマットで保存されている場合、配列はすべての捕捉[<record length>, <# of acquisitions>]をカバーするように拡張されます。スペクトラムが保存されている場合、x軸にはスペクトラムの周波数軸が含まれます。

レコード長、捕捉回数、およびチャネル数は、戻り値yの "shape property" にアクセスすれば容易に読み取ることができます。

すべてのパラメータが必要でない場合は、標準的なPython手法を使用してそれらを無視することができます。例えば、リスト指定子(次の例を参照)を追加するか、またはその位置の戻りパラメータにアンダースコアを使用します。

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

さらに2つの(オプション)パラメータを指定して、割り当てられるメモリ量を減らすことができます。第1のパラメータで、対象の捕捉を指定します。第2のパラメータで、対象のインターバル、時間、または周波数を指定します。両者に、2つの項目をもつリストが必要です。捕捉パラメータは、リストのPython表記に従うことに注意してください。下の例では、2つの捕捉(2,3)が戻されます。

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

最後のパラメータであるSは、ヘッダーファイルで使用できるすべての詳細情報を提供するものです。これは、Pythonの辞書(dict型オブジェクト)として実装されます。以上のパラメータのすべてが、ユーザーにとって重要になるわけではありませんが、そのうちのいくつかは、レポート作成や解析に有用な場合があります。yベクターの波形データは単なる浮動小数点型なので、ユーザーはこのデータの元の設定を特定することができません。ただし、ユーザーは、ヘッダーのパラメータを調査することで、レポート作成や後処理に必要な情報を取得することができます。例えば、測定のノイズ制約を把握するためには、垂直軸スケール、オフセット、位置、および結合の設定に関する情報を入手することが重要です。

別の例に、レーダーアプリケーションでのパルス繰り返し間隔(PRI)解析があります。セグメントメモリを使用して、1回の捕捉で1つのレーダーパルスを捕捉した場合1)、セグメント化された捕捉のタイムスタンプリストは、経時的なトリガイベントを提供します。これは、別の方法では確認できません(S[’Timestamps’])。連続したトリガイベントの時間差により、PRIシーケンスがわかります。

以下に示した2つのプロットは、波形データをオシロスコープにロードしたものと、Python環境にロードしたものです。3つの信号が表示されています。

  • オフセットのある1 MHzの正弦波信号
  • アップ/ダウンが交互に切り替わるレーダーチャープ
  • 信号接続なしの場合のノイズ

RTxReadBin機能の利点は、複数の捕捉(履歴)の波形ファイルを取り扱えることです。同じファイルをロードした場合、オシロスコープでは、最後の捕捉しか確認できず、空の履歴が表示されます。

1)ローデ・シュワルツのウェブサイトに掲載の「Demodulating radar RF pulses with an oscilloscope」を参照してください。

まとめ

R&S®RTP、R&S®RTO、R&S®RTEはいずれも、パワフルなオシロスコープです。Pythonモジュール(RTxReadBin)は、測定器の機能を強化するために、保存済みの波形へのアクセスを提供します。後処理、レポート作成、またはそれに続く波形比較などの解析手順を必要とするアプリケーションのために、波形データをパワフルなPython環境内で利用できるようになっています。

基準波形としてロードされた3種類の波形(履歴なし)
基準波形としてロードされた3種類の波形(履歴なし)
ライトボックスを開く
3種類の波形(履歴あり)
3種類の波形(履歴あり)
ライトボックスを開く

関連ソリューション