まず最初に,測定機器のコマンドをPyVISAパッケージを使って送信するケースを紹介します.
下記は,あるファンクション・ジェネレータの振幅を設定する際のコマンド例です.
inst.write(":SOURce1:VOLTage:LEVel:IMMediate:AMPLitude 10VPP") --- (A)
上記のコードを見て,(振幅に10[Vp-p]を設定していると)分かりやすいかどうかです.
これに対し,振幅を設定するラッパー関数を定義してみます.ラッパー関数というのは,元の処理をラップする(包み込む)関数という意味です.
引数は振幅値ampとして,下記のようなラッパー関数を定義しました(関数名は元のコマンドのVOLTageから取りました).
def set_voltage(inst, amp):
command = ":SOURce1:VOLTage:LEVel:IMMediate:AMPLitude %gVPP" % (amp)
inst.write(command)
このラッパー関数の使い方は,
set_voltage(inst, 10) --- (B)
となります.
実際に,ファンクション・ジェネレータをコントロールするには,振幅の設定のみならず,数々の処理を,コマンドを使って実施していきます(AやBで示したコードが何十行にも渡って繰り返されます).
あくまで,PyVISAを使った測定機器のコントロールのPythonスクリプトのサンプルとしては,(A)のように,コマンドを直に記述するだけで良いでしょうが,実際に,測定機器をコントロールするシステムを開発するとなると,(B)のように,ラッパー関数を定義して,そのラッパー関数を使うようにした方が,どんな手順を実施しているのか,後々判断しやすいんじゃないでしょうか.
もちろん,ラッパー関数を定義(実装)するための工数は増えてしまうので,必ずしもメリットだけではありません.
本ブログでも,自動測定システムの開発には,ラッパー関数を使って構築しますが,Pythonスクリプトの紹介例としては,(ブログの行数の関係上)測定機器のコマンドを直に記述する(A)の例が多くなってしまうと思います.この点はご了承下さい.
0 件のコメント:
コメントを投稿