はじめに
当方は弊社において、電源ユニットの検証・解析業務に携わっています。
測定器の計測結果を活用しようと考えたとき、測定器メーカーから提供されているフリーまたは有料のソフトウェアを利用することがあります。しかし、自分の目的にぴったり合った測定方法や分析が用意されていなかったり、好みのフォーマットで自動的にレポート化できるツールが見つからなかったりするのが、実情ではないでしょうか。
一方で、自分でプログラミングを行えば、こうした課題の多くは解決できます。
今回は、Excel VBAを用いて測定器からデータを取り込む方法について綴ります。
Excel VBAで測定器を制御する利点
私の場合、以下のような用途を想定してExcel VBAを用いたアプリケーションを作成しました。
単に測定を自動化するだけでなく、解析・判定からレポート作成までを一連の流れとして自動化できる点が大きな利点です。
-
Excel VBAのユーザーフォームを利用し、オリジナルのUIを作成
直感的で使いやすいUIによる運用が可能
-
200ms間隔で、最大1週間分の電圧/電流/電力データを記録
-
最大消費電力の測定
機銘板電力を超えていないことを確認
- 安全規格上、5秒間保持できる最大電力は、機銘板電力の20%を超えてはならない
-
EuP省エネ規制対応
スタンバイ電力の測定および自動レポート作成
-
動作モードを遷移させながらの電力測定
- 例:スタンバイ → Windows起動 → ベンチマークソフト動作 → シャットダウン
Excel VBA のユーザーフォームを利用したオリジナルのUIの例
Excel VBAのユーザーフォームを活用し、ボタン操作だけで直感的に扱えるオリジナルUI
を作成しています。
専門的な操作を意識することなく、必要な処理を簡単に実行できる点が特徴です。
最大消費電力測定の例
図中のオレンジ色の線は、5秒間保持された最大消費電力値を示しています。
なお、測定精度を高めるために以下の条件でフィルタ処理を行っています。
- 5秒間の測定区間において、95%以上のサンプルが最大値の電力値をオレンジ色の線として表示させています。
電力のように大きく変動する値は、目視による確認では測定結果にばらつきが生じやすくなります。
測定から判定までを自動化することで、こうしたばらつきを抑え、安定した評価結果を得ることが可能になります。
縦軸は消費電力(W)、横軸は時間(分)を示しています。
EuP省エネ規制対応 – スタンバイ消費電力レポートの例
EuP省エネ規制では、15分以上の測定を行い、電力が安定して変動量が十分に小さくなった状態から、任意の5分以上のデータの平均値を取得することが求められています。
本例では、その安定判定・対象時間の抽出・平均値の算出までを自動で行い、レポートとしてまとめています。
赤塗りの項目のみを手書きで追記することで、レポートが完成する構成としています。
動作モードを遷移させながら電力測定したグラフの例
弊社製のインテル® Xeon® スケーラブル・プロセッサー搭載スリムシャーシ型産業用PC「IPC-E741SPC-TX」にGPUを搭載し、動作モードを切り替えながら電力測定を行った例です。
縦軸は消費電力(W)、横軸は時刻を示しています。
スタンバイ状態から電源投入、Windows起動、デスクトップ表示、負荷(OCCT)実行といった各動作モードに応じて、消費電力がどのように変化するかを確認できます。
実践
それでは、ここからはExcel VBAを使用して測定器からデータを取り込む具体的な手順を見ていきましょう。
動作環境
今回の記事の執筆および検証に使用した動作環境は、以下のとおりです。
-
電力計:HIOKI PW3335
-
USB → RS-232C変換ケーブル:Amazonにて1,000円台で購入
-
PC:Windows 11 PC
- Office:Microsoft 365
- Excel
- 入出力ポート:USB Type-A
- Office:Microsoft 365
-
VBAモジュール:RS-232C にコマンドを送信するための Excel VBA モジュールには、いくつか選択肢があります。
- KEYSIGHT VISA COM
- National Instruments NI-VISA
これらはいずれも、RS-232CやGPIB、USBなどをほぼ共通の記述で扱えるAPIを提供しており、測定器との通信を容易にしてくれます。
今回は、以前に作成したプログラムを流用・改造する形だったため、「EasyComm」を使用しました(元:複数測定器とのGPIB接続 → 改造後:1台の測定器をRS-232Cで接続)。
EasyCommは、20年以上前に秋月電子で購入した「GP232」に付属していたソフトウェアです。すでに公式サービスは終了していますが、再配布が許可されており、「EasyComm」で検索すれば現在でも入手可能です。
なお、私の環境ではダウンロードしたEasyCommをそのままでは使用できず、64bit環境向けにコードの修正が必要でした。
複数の測定器を同時に制御する場合には、並列接続が可能なGPIBの利用がお勧めです。
ただし、変換ケーブルの価格が高めなのが難点です。
準備
EasyCommのモジュールのインポート
まず、「EasyComm」を検索してダウンロードします。
Excelを起動し、「Alt + F11」を押して「Microsoft Visual Basic for Applications」を開きます。
ダウンロードした以下の2つのファイルをインポートしてください。
-
ec.bas / ecDef.bas
RS-232C通信用のVBAモジュールです。
-
eg.bas / egDef.bas
GPIB通信用のモジュールです。
今回はRS-232Cで接続するため、使用するのはec.bas / ecDef.basのみとなります。
これらのモジュールを利用することで、VBAから測定器を比較的簡単に制御できるようになります。
「プロジェクト」ウインドウ内で右クリックし、「ファイルのインポート」から先ほどの2つのファイルを追加します。
64bit環境への対応
本モジュールはそのままでは64bit環境で動作しなかったため、コードの修正が必要でした。
具体的には、以下の変更を行います。
- Declare Function → Declare PtrSafe Function
- Declare Sub → Declare PtrSafe Sub
対象箇所が多数あるため、置換機能の使用をお勧めします。
置換手順
- Microsoft Visual Basic for Applications上で「**Ctrl + F」**を押し、「検索」画面を表示
- 「置換」を選択
- 「検索する文字列」と「置換後の文字列」を入力
- 「対象」を「カレント プロジェクト」に設定
- 「すべて置換」を実行
これで、64bit環境でも EasyCommモジュールが使用できるようになります。
USB → RS-232C変換ケーブルのポート番号を確認する
USB → RS-232C変換ケーブルをPCに接続します。
次に、デバイスマネージャーを開き、「ポート(COM と LPT)」の項目を確認してください。
※ 使用している変換ケーブル内のICによって、表示されるデバイス名は異なる場合があります。
私の環境では「COM3」として認識されていました。
動作テスト
新しい標準モジュールを挿入
「標準モジュール」を新規に挿入し、挿入したモジュールに以下のコードを記述します。
Sub EasyCommTest()
ec.COMn = 3 'COM3を指定
ec.Setting = "38400,n,8,2" '通信条件(ボーレート,パリティビット数,データビット数,ストップビット数)の設定
ec.HandShaking = ec.HANDSHAKEs.RTSCTS '通信ハンドシェークの設定
ec.Delimiter = ec.DELIMs.CrLf 'データの区切りを示す文字列を設定します
ec.OutBuffer = 100& * 1024& '現在処理の対象になっているポートの送信バッファを100kBに設定します
ec.AsciiLine = ":MEAS?" '":MEAS?" という文字列をデリミタ付きで送信します
a$ = ec.AsciiLine 'デリミタの手前までの受信文字列をA$に代入します
ec.InBufferClear '受信バッファをクリア
MsgBox a$ '受信した文字列を表示
ec.COMn = -1 '終了処理
End Sub
注意点
- ボーレートは、測定器側の通信設定と同じ値に合わせる必要があります。
- 「ec.COMn = 3」の数値は、事前に確認したUSB → RS-232C変換ケーブルのCOMポート番号を指定してください。
補足
HIOKI PW3335は、購入時の「出荷時指定オプション」により、通信インターフェースとしてGP-IB、またはRS-232Cを選択できます。
ただし、弊社所有の機器はRS-232Cのみ対応となっていました。
本体の「INTERFACE」ボタンを押して、通信方式を「RS-232C」に設定し、併せてボーレートの設定値を確認してください。
実行
「▶」の実行ボタン、またはF5キーを押してマクロを実行します。
実行すると、以下のような結果が表示されます。
必要なデータの抜き出し
受信した文字列から必要なデータを取り出すために、VBAのMid関数を使用します。
以下の例では、3文字目から10文字分を抜き出して電圧値を取得しています。
volt = Val(Mid(A$, 3, 10))
上記の実行結果の例では、抽出される文字列は「+104.55E+0」となります。
この文字列をVal関数で数値に変換すると、電圧値は「104.55」として扱うことができます。
なお、測定器から返されるデータ形式やコマンドの詳細については、必ず該当する測定器のマニュアルを参照してください。
まとめ
今回は、測定器からのデータ取得までの流れを中心にご紹介しました。
冒頭でも触れたとおり、取得したデータをExcel上で自分の用途に合わせてプログラム化することで、グラフ化や平均値の算出はもちろん、1週間分の電圧データに異常がないかを自動判定し、そのままレポートとして出力するといったことも可能になります。
こうした処理を自動化することで業務効率は大きく向上します。
そして、そこで生まれた時間を何に使うかは――あなた次第です。
産業用コンピュータならHPCシステムズ
HPCシステムズでは信頼性の高い産業用コンピュータ/タブレットを幅広く提供しています。
要求仕様に応じたカスタマイズのほか、中小規模での量産にも対応。仕様設計・試作・検証・生産・サポートまで徹底的にお応えいたします。
AMD Ryzen 搭載ワークステーション「WS-GR870PA-T」

用途にあわせてカスタマイズ可能!
お見積りシミュレーション

















