VBAで34401A/34410Aデジタルマルチメータとシリアル通信(EasyComm)

こんにちは、Ryoです。
測定機器でデジタルマルチメータ(以降DMM)と言えば、かなり使用頻度が高いのでは
ないでしょうか?

各種データ測定に利用されることが多いので、KeySightではデータをPCで取り込むことを
主としたVISACOMやサンプルプログラムも配布してくれていますが、旧型の34401A、
34410AとなるとRS232C通信(シリアル)しか出来ません。

そこで今回はEasyCommを使用して上述モデルのDMMとシリアル通信サンプルプログラムをご紹介したいと思います。
EasyCommについては以前の記事になりますが、こちらで簡単にご紹介しています。

こんにちは、Ryoです。 工場で働いていれば必ず機械装置があって、その制御には必ずと言って良いぐらいPLC (Programma...



1.対象DMM

①34401A ・・・ 仕様詳細等はこちら

  • 6½桁分解能
  • 10種類の測定機能: DC/AC電圧、DC/AC電流、2端子/4端子抵抗、ダイオード、導通、周波数、周期
  • 基本確度: 0.0035 %(DC)、0.06 %(AC)
  • 最大1000 Vの電圧入力、最大3 Aの電流入力
  • 1000回/秒
  • 512個の読み値メモリ

②34410A ・・・ 仕様詳細等はこちら

  • 6½桁分解能
  • 基本確度: 0.0030 % DC、0.06 % AC
  • 温度、キャパシタンスなど14種類の測定機能
  • データロガー(50,000個の読み値用不揮発性メモリ)
  • 50,000回/秒@4½桁(PCへ)
  • 1Mの読み値メモリ
  • アナログレベルとプリ/ポストトリガ

画像等は準備出来ませんでしたので、KeySightのリンクを貼っています。
共に販売終了品の旧型ですが、中古ではリーズナブルの価格で流通してることもあって
今でも相当数使われているんじゃないかと思います。
34401Aと34410A・・・紛らわしいと思うのは自分だけじゃないはず。。。

それと、PCにシリアルポートがあれば良いですが無い場合は変換ケーブルが必要になります。

2.サンプルコード

EasyCommを使ってポート指定、通信条件を設定後にDMMコマンドにてデータを読み取る
単純なサンプルコードになります。
私の場合、本サンプルは製品測定プログラムの一部で受け取ったデータを別のSub
プロシージャで配列に格納しPLCを制御して測定製品のChを切り替えてから再度
DMM測定して・・・を処理するのに使っています。

Sub DMM_Serial()
'//DMM表示値のデータ取り込み//

    Dim Meas_Comm As Variant        '送信コマンド用
    Dim Data As Double              '測定データ用

'*************************************
'Serial通信条件設定/リモートモード切替
'*************************************
    '//DMM接続ポートをCOM3と仮設定//
    ec.COMn = 3
    ec.Setting = "9600,n,8,1"
    ec.WAITmS = 500
    ec.Delimiter = "CRLF"
    ec.AsciiLineTimeOut = 1500
     
    '//DMMをリモートモードに変更//
    ec.AsciiLine = Chr$(&H5) & "SYST:REM"
    ec.WAITmS = 300

'**************************************
'DC電圧測定用コマンドの設定(変数代入使用)
'**************************************
    Meas_Comm = "SENS:FUNC 'VOLT:DC'"
    '※限定して使う場合は変数としなくても可
       
'***************
'測定処理の実行
'***************
    ec.AsciiLine = Chr$(&H5) & Meas_Comm
    '//DMMの34401,10A系に於けるシリアル通信はWaitTimeが450msecが最低必要//
    ec.WAITmS = 450
    ec.AsciiLine = Chr$(&H5) & "READ?"
    ec.WAITmS = 150
    Data = ec.AsciiLine
  
    '//測定データ取り込み完了後はLocalモードに復帰させる//
    ec.AsciiLine = Chr$(&H5) & "SYST:LOCAL"
    ec.COMn = 0

End Sub

先ず注意点としては、旧型だからかもしれませんがコマンド送信した後は450msec程度のWaitを設けないと複数回こなしている間にErrorが発生します。
DMM本体側の通信設定も当然ながらRS232Cに変えて通信条件も合わせないとダメですから
ご注意ください。(意外と忘れがちなのです。。。私も)

◆DMM通信用コマンド一例

私もすべてのコマンドを使って試してはいないので動作は不明なところもありますが、
知る限りのコマンドは以下になりますので、ご参考までに。

①Meas_Comm = “SENS:FUNC ‘VOLT:DC'” ‘DC電圧測定コマンド

②Meas_Comm = “SENS:FUNC ‘VOLT:AC'” ‘AC電圧測定コマンド

③Meas_Comm = “SENS:FUNC ‘CURR:DC'” ‘DC電流測定コマンド 

④Meas_Comm = “SENS:FUNC ‘CURR:AC'” ‘AC電流測定コマンド

⑤Meas_Comm = “SENS:FUNC ‘RES'” ‘2線式抵抗測定測定コマンド

⑥Meas_Comm = “SENS:FUNC ‘FRES'” ‘4線式抵抗測定測定コマンド

⑦Meas_Comm = “SENS:FUNC ‘FREQ'” ‘周波数測定コマンド

⑧Meas_Comm = “SENS:FUNC ‘PER'” ‘周期測定コマンド

⑨Meas_Comm = “SENS:FUNC ‘TEMP'” ‘2線式RTD測定コマンド

※ VOLT:DCやRES等の部分はシングルクォーテーションなのでご注意ください。

この記述でDMMの測定表示値がData変数に入りますから、Excelのセルに書き込むなり
何なりと処理出来るかと思います。




以上がEasyCommを使ってDMMとシリアル通信を行うサンプルプログラムになります。
何かのお役に立てれば幸いです。

Ryo

スポンサーリンク
スポンサーリンク

楽天トラベル

シェアする

フォローする

スポンサーリンク

楽天トラベル