月: 2021年2月

Pythonを使ったAPx500ソフトウエア制御方法とは?

Pythonを使ったAPx500制御

スクリプトでAPx500ソフトウエアを制御する際、APx500 APIを参照して、コマンドはランタイムでコンパイルしなければなりません。APIのライブラリーは.NET assemblies (dll files)に入っており、.NETランタイム環境上でしか実行できないので、標準のPython言語は使えません。カスタマイズしたIronPythonまたは、Pythonnetを追加したパッケージを活用することで、.NETライブラリーに対応致します。

Pythonnetは標準のPythonまたは最新のバージョンを使っている環境に適しております。  2020年12月現在、IronPythonはPython2.7をベースにしており、PythonnetはVersion3.8までの複数のバージョンに対応しています。

対して、APx500ソフトウエアはAPx500アプリケーションに対応したOSでのみ利用できることから、次のステップを行う必要がございます。OSの対応に関しては、以下のリンクを参照願います。

www.ap.com/technical-library/ap-software-windows-version-compatibility

ステップ1:Pythonのインストール

インストールする前に、Pythonnet GitHub Repositoryを使って、対応するPythinnetのバージョンを確認してください。github.com/pythonnet/pythonnet

2020年12月現在、対応しているバージョンは、2.7, 3.5, 3.6, 3.7, 3.8です。(図1参照)

図1:Python対応リスト

確認後、www.Python.org.からインストールしてください。

ステップ2:Windows PathにPythonを追加します。

Pythonをインストール後、WindowsのコマンドプロンプトからPythonコマンドが使えるようにWindows Pathの設定を変更する必要がございます。Windows10の場合、

1.タスクバーでシステム環境変数の編集で検索すると、システムのプロパティが表示されます。詳細設定の環境変数をクリックします。

2.プロパティのシステム環境変数のPATHを見つけ、編集をクリックします。

3.PythonをインストールしたディレクトリをPathに追加致します。WindowsのタスクバーからPythonを検索し、右クリックで利用したいVersionを選択し、「ファイルを開く」を選択します。

4.Pythonのショートカットを選択し、ショートカットツールの「開く」を選択します。

5.エクスプローラーのアドレスバーから全ファイルのパスをコピーします。

6. システム環境変数の編集に戻って新規を開きます。

7. Pythonのパスを貼り付けて新しいパスを加えます。

8.新規をクリックし、コピーしたパスを貼り付けて、最後に\Scripts\を付け加えます。

9.OKをクリックし、システム環境変数が変更したことを確認します。

Pythonがパスが追加されているかを確認するには、Windowsのコマンドプロンプトを開き、”python-version”をタイプします。コマンドプロンプトはパスについかされたPythonのVersionを表示します。 (例、 Python 3.7.4).

ステップ3 パッケージマネージャーを使ってPythonnetをインストールする

PythonnetパッケージはPythonのパッケージマネージャーのpipを使ってインストールします。PipはPythonの新しいVersionに自動的にインストールされています。

Pipを使ってインストールするには、

  • Windowsのコマンドプロンプトを開きます。
  • pip install pythonnetをタイプします。

これでAPx500ソフトウエアを制御できる環境が整いました。

以下のリンクからPythonのスクリプトのデモが例示されています。例えば、APx500 APIを使ってソフトウェアの初期化やプロジェクトファイルのロード方法、シーケンスを走らせる、シーケンスを終えた後のデータ収集等の例になります。

www.ap.com/download/apx500-pythonnet-example

ItonPythonを使ってAPI開発を行う手順は以下のリンクを参照願います。

www.ap.com/technical-library/controlling-apx500-with-python

詳細は以下のサイトを参照願います。

www.ap.com/blog/controlling-apx500-software-using-python

何故チャープ信号は低→高周波数にスイープするのでしょうか?

チャープ信号は20Hzから20kHzまでの低い周波数から高い周波数を掃引致します。

ただし、従来のステップサイン掃引測定のような高い周波数から低い周波数の構成には対応しておりません。これは、DUTの線形、非線形性が分離されている結果であり、DUTのインパルス応答が高調波歪みの評価を決める一因になります。

図1:Chirp measurement result swept from low to high

図1はチャープ信号測定の結果です。時間-周波数ドメイン例はDUTの線形応答を示しています。高調波歪みも表示され、DUTの応答に平行な点線で表示されます。デコンボリューションという数学的プロセスを使って、DUTのインパルス応答はDUTの出力信号から引き出します。
遅延が取り除かれると、DUTの線形応答は図2の時間軸が0となる大きなインパルスになります。歪み成分はメインパルス前の小さなインパルス(h2,h3…)として表示されます。

図2:Impulse response swept low to high
図3:high to low chrip

図3のように、同じDUTと使って、高いチャープから低いチャープを適用すると、同様の結果が得られます。高調波応答も時間軸に沿って、基本周波数よりも上に表示されます。しかし、高いチャープから低いチャープへの応答がデコンボリューションの場合、高調波はDUTインパルス応答は図4のように右に移ります。

図4:Harmonics to the right of the DUT impulse response.

図からも分かりますように、高調波応答が線形応答が右に位置する場合、DUTインパルス応答は混合されます。必要な要素を分離する機能を防ぎます。この問題は、通常の部屋でアコースティック測定を行うには悪くする要因となります。この為、正確な高調波歪みがデータから引き出せません。これを防ぐために、低いチャープから高いチャープへと実行する測定となっています。

詳細は以下のサイトを参照お願い申し上げます。

www.ap.com/blog/why-are-chirps-always-swept-from-low-to-high/