013 測定機器へ送受信するラッパー関数を作成する

2022/03/20

紹介/PyVISA

t f B! P L

まず最初に,測定機器のコマンドを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で示したコードが何十行にも渡って繰り返されます).

この場合,(A)のように,測定機器のコマンドを直に記述するか,(B)のように,ラッパー関数を定義しておいて,そのラッパー関数を使って記述するかです.どちらが良いかです.

あくまで,PyVISAを使った測定機器のコントロールのPythonスクリプトのサンプルとしては,(A)のように,コマンドを直に記述するだけで良いでしょうが,実際に,測定機器をコントロールするシステムを開発するとなると,(B)のように,ラッパー関数を定義して,そのラッパー関数を使うようにした方が,どんな手順を実施しているのか,後々判断しやすいんじゃないでしょうか.

もちろん,ラッパー関数を定義(実装)するための工数は増えてしまうので,必ずしもメリットだけではありません.

本ブログでも,自動測定システムの開発には,ラッパー関数を使って構築しますが,Pythonスクリプトの紹介例としては,(ブログの行数の関係上)測定機器のコマンドを直に記述する(A)の例が多くなってしまうと思います.この点はご了承下さい.

このブログを検索

自己紹介

C++やC#を使って数値解析プログラムの開発を長年行ってきました.
今は,Pythonを使った自動処理システムの開発をメインに行っています.

QooQ