Microsoft Excel 2010 VBA によるシリアルデコードの取得 (InfiniiVision 編 )
内容 1. はじめに... 3 2. 制御プログラム作成の準備... 3 2.1. ソフトウェア環境... 3 2.2. ハードウェア環境... 4 2.3. 測定器の接続と VISA アドレスの確認... 4 3. 基本的なプログラムの作成... 6 3.1. 開発環境の設定... 6 3.2. VBA ウィンドウの表示... 7 3.3. 参照ライブラリの追加... 8 4. サンプルプログラム... 10 4.1. サンプルプログラムの説明... 10 4.2. サンプルプログラムの操作方法... 10 4.2.1. マクロの有効化... 11 4.2.2. 操作方法... 13 4.3. サンプルプログラムのコードの確認 カスタマイズ... 14 4.4. サンプルプログラムのコマンド... 15 4.5. サンプルプログラムのポイント... 15 4.5.1. シリアルデコードの読み取り... 16 4.5.2. 表示するリストの作成... 16 5. Excel VBA に関する Tips... 16 5.1. VBA の高速化... 17 5.2. プログラムの中断... 17 6. 測定器プログラムのサポート... 18
1. はじめに Microsoft Excel 2010 VBA によるオシロスコープ制御入門 では PC と測定器を LAN や USB 等の汎用インターフェースで接続して制御する方法を サンプルプログラムを通して紹介しました このテキストでは オシロスコープのシリアルデコード機能を用いてデコードしたデータのリストを プログラムで取得する方法をご案内いたします 測定器のコマンドや使用するライブラリについては Microsoft Excel 2010 VBA によるオシロスコープ制御入門 を参照してください また 作成するプログラムでは測定器のシリアルデコード機能を用います この機能がない測定器 DSOX/MSOX2000 シリアルデコードオプションのない InfiniiVision シリーズは 当プログラムでは想定されない動作やエラーを起こすことがありますので使用しないでください [ ダウンロードサイト ] http://www.agilent.co.jp/find/infiniivision-sample 2. 制御プログラム作成の準備 2.1. ソフトウェア環境本文章の内容を実施するためには マイクロソフト社の Windows OS に 以下のものがインストールされている環境が必要です これらは インターネット上でも入手 購入することが可能です なお Agilent Technologies, Inc. IO Libraries Suite は 弊社測定器ではなくとも お使いになることができます マイクロソフト社 Excel 2010 がインストールされている Windows OS Agilent IO Libraries Suite ( 以下の弊社 Web から無償でダウンロードが可能 ) [IO Libraries Suite ソフトウェアダウンロードサイト ] http://www.agilent.com/find/iolib SerialDecodeCapture サンプルプログラム ( 以下の弊社 Web から無償でダウンロードが可能 ) [ ダウンロードサイト ] http://www.agilent.co.jp/find/infiniivision-sample 測定器のシリアルデコードオプションのインストール ( 評価版も可 ) オプション 評価版ライセンスの不明点は計測お客様窓口にお問い合わせください
2.2. ハードウェア環境本章の内容を実施するには PC や測定器の種類 搭載されているインターフェースにもよりますが 必要に応じて PC と測定器を接続するためのインターフェースカードや ケーブル類が必要となります 現在の Agilent 社の測定器には 制御用インターフェースとして 主に USB GPIB LAN などが搭載されています 個別の測定器に搭載されているインターフェースに関しては データシートやマニュアルをご確認ください 表 1は オシロスコープに搭載されている制御用インターフェースです モデル番号 USB GPIB LAN DSOX/MSOX3000 オプション オプション DSO5000 DSO/MSO6000 DSO/MSO7000 オプション DSO/MSO8000 DSO80000 DSO/MSO9000 オプション DSO90000 オプション 表 1 Agilent 社製オシロスコープ搭載リモート制御用インターフェース お使いの測定器に合わせて 制御に用いるインターフェースを検討します その際 LAN USB であれば 一般的なインターフェースであるため PC に搭載されている可能性が高いですが GPIB は 測定器用インターフェースであるため 一般的な PC に搭載されていません そのため GPIB にて制御を実施する場合には GPIB インターフェース GPIB ケーブルを 別途 ご購入する必要があります これらは 弊社にて販売しておりますので お気軽にお問い合わせください 2.3. 測定器の接続と VISA アドレスの確認制御する測定器を指定には 対象となる測定器の VISA アドレスを使います Agilent IO Libraries Suite の Agilent Connection Expert を使って VISA アドレスを確認する方法を説明します 1 測定器を PC と接続します ここでは USB ケーブルで接続したものとして ご説明を進めます LAN で接続する場合は PC と測定器の IP アドレスの設定 / 確認が必要です また ケーブルの種類にご注意ください PC と直接接続する場合 通常は クロスタイプのケーブルが必要です ハブ等を用いて接続した場合は 一般に使われているストレートタイプのケーブルを使用することができます 2 Agilent Connection Expert を起動します スタートボタンから [ スタートボタン ]>[Agilent IO Libraries Suite]>[Agilent Connection Expert] を
実行します ( 図 1) 図 1 Connection Expert の起動 3 ケーブルで接続されている測定器は モデル名の横に 緑色のチェック印が示されます もし! の印が付いている場合は 測定器が認識されていない事を表します 原因として 測定器の電源が入っていない ケーブルが接続されていない 測定器によっては 測定器側の設定 ( お使いになるインターフェースの選択 ) がなされていない事が考えられます 4 使用する測定器を選択し 表示される VISA アドレスを確認してください ( 図 2)
測定器 VISA アドレス 図 2 VISA アドレスの確認 3. 基本的なプログラムの作成 3.1. 開発環境の設定 Excel に開発用のタブを追加します リボン上を右クリックし [ リボンのユーザー設定 (R)] を選択してください 図 3 リボンのユーザー設定呼び出し [ リボンのユーザー設定 ] から [ メインタブ ] を選択し その下の [ 開発 ] にチェックを入れて [OK] を押下してください
図 4 開発タブの追加 [ メニュー ] に [ 開発 ] が追加されます 図 5 開発タブの確認 3.2. VBA ウィンドウの表示 Excel 上で [Alt] + [F11] キーを押すか [ リボン ]>[ 開発 ]>[Visual Basic] をクリックしてください ( 図 6) VBA ウィンドウが表示されます ( 図 7)
図 6 VBA ウィンドウの起動 図 7 VBA ウィンドウ 3.3. 参照ライブラリの追加プログラムから測定器と通信を行う際には ライブラリの参照を追加し それを用いて通信を行います このライブラリをお使いになるには IO Libraries Suite をインストールする必要があります 1 プロジェクトのプロパティを開きます VBA ウィンドウから [ ツール (T)] > [ 参照設定 (R) ] をクリックしてください ( 図 8)
図 8 ライブラリの追加 2 表示されるダイアログの [ 参照可能なライブラリファイル (A)] から [VISA COM 3.0 Type Library] にチェックを追加します ( 図 9) 図 9 VISA COM ライブラリの選択
4. サンプルプログラムここからは Agilent 製オシロスコープ (InfiniiVision シリーズ ) のサンプルプログラムに関して ご説明していきます InfiniiVision シリーズオシロスコープのサンプルプログラムは 下記よりダウンロードが可能となっております [ ダウンロードサイト ] http://www.agilent.co.jp/find/infiniivision-sample InfiniiVision シリーズ DSOX/MSOX2000,3000 DSO5000 DSO/MSO6000 DSO/MSO7000 の各シリーズ 4.1. サンプルプログラムの説明サンプルプログラムそのまま実行してご利用いただけます 以下のことが可能です 測定器との接続確認 エラーの取得 SINGle コマンドの送信 シリアルデコードの取得 リストのカーソル位置へオシロの表示位置を移動 ファイル出力 図 10 サンプルプログラム 4.2. サンプルプログラムの操作方法デジタル証明書やデジタル署名のない VBA マクロを動作させるには マクロを有効にする必要があります マクロの設定は 本プログラム以外のマクロにもセキュリティ上の影響を与えます マクロを有効にする操作は ユーザーの責任において行ってください 変更によって生じたすべての障害 損害 不具合等 ( 含 ソフトウェアのバグ ) に関しては 弊社および弊社の所属するいかなる団体 組織とも 一切の責任を負いません
4.2.1. マクロの有効化 1 Excel を開いた後 シート上のセルを選択した状態で [ リボン ]>[ ファイル ]>[ オプション ] をクリックしてください ( 図 11) 図 11 オプションを選択 2 [ セキュリティセンター ] を選択し [ セキュリティセンターの設定 ] ボタンを押下してください ( 図 12)
図 12 セキュリティセンターの設定 3 [ マクロの設定 ] を選択し [ 警告を表示してすべてのマクロを無効にする (D)] または [ すべてのマクロを有効にする (E)] を選択してください 図 13 マクロの設定
4 マクロの設定後 ファイルを開きなおしてください マクロの設定によっては 図 14 や図 15 のような警告が表示されることがあります [ マクロを有効にする (E)] や [ コンテンツの有効化 ] をクリックすると マクロが有効な状態になります 図 14 セキュリティの警告 図 15 コンテンツの有効化 4.2.2. 操作方法 マクロが有効な状態になるようにして SerialDecodeCapture.xlsm を起動してください ( 図 16)
1 5 4 2 3 図 16 サンプルプログラムの操作方法 1 VISA Address 欄に 制御するオシロスコープの VISA アドレスを入力し *IDN? ボタンを押します オシロスコープの VISA アドレスは 前述の Agilent Connection Expert にて確認できます 例 : USB0::0x0957::0x17A2::MY50500003::0::INSTR *IDN? ボタンを押すと 測定器のモデル名が表示されます 表示されない場合には VISA アドレスを再確認してください また Agilent Connection Expert にて 測定器が接続されているか確認してください 2 Capture ボタンを押します 測定器の画面をキャプチャされた後 シリアルデコードのリストが取得され リストが更新されます 3 リストに表示された時間の位置に測定器の表示位置を変更することができます 表示したいリストの行を指定して GoTo ボタンを押してください 4 測定器のデータを更新することができます SINGle ボタンを押下してください 測定器の Single ボタンを押下した場合と同様に動作します 5 必要であれば 測定器のエラー番号を取得することができます ERRor? ボタンを押してください 測定器が保持するエラー番号が表示されます 4.3. サンプルプログラムのコードの確認 カスタマイズサンプルプログラムのコードを確認 カスタマイズする場合には SerialDecodeCapture.xlsm を開き ModuleInfiniiVision や Sheet1 等のプロジェクトコードを開いてください プロジェクトはVBA ウィンドウから参照 編集することができます VBA ウィンドウの開き方については3.1 開発環境の設定を参照してください コードの表示等の基本的な捜査については ダウンロードサイトにあります Microsoft Excel 2010 VBA によるオシロスコープ制御入門 InfiniiVision 編 を参照してください
4.4. サンプルプログラムのコマンドこのサンプルプログラムには のコマンドが使われています 末尾に? がついているコマンドは クエリ コマンドと呼び 返り値を要求するコマンドとなります クエリ コマンドを送った後は 返り値の読み込みが必要となります なお コマンドの詳細に関しましては 各オシロスコープの Programmer s Guide をご参照ください 英語版ガイドのみのご提供です 日本語版はありません [InfiniiVision Oscilloscopes Programmer s Guide] DSOX/MSOX3000 Series Oscilloscopes Programmer s Guide http://www.home.agilent.com/upload/cmc_upload/all/3000_series_prog_guide.pdf DSO5000 Series Oscilloscopes Programmer s Guide http://www.home.agilent.com/upload/cmc_upload/all/5000_series_prog_guide.pdf DSO/MSO7000 Series Oscilloscopes Programmer s Guide http://www.home.agilent.com/upload/cmc_upload/all/7000b_series_prog_guide.pdf コマンド 解説 *IDN? 測定器の ID 取得 :SINGle 1 回測定する :STOP 更新停止 :LISTer:DISPlay シリアルデコードを使用する :LISTer:DATA? シリアルデコードの送信 ( ブロック転送 ) :TIMebase:POSition 指定した時間軸の位置に表示を変更する :SYSTem:ERRor? エラーを取得する :SAVE:IMAGe:FORMat 取得する画像のフォーマット指定 :SAVE:IMAGe:PALette 取得する画像の色指定 :HARDcopy:LAYout 取得する画像の方向の指定 :HARDcopy:INKSaver 取得する画像の白黒反転指定 :DISPlay:DATA? 画像データの取得 [ ブロック転送 ] 表 2 SCPI コマンド 4.5. サンプルプログラムのポイント このサンプルプログラムのポイントについて解説します シリアルデコードの読み取り 表示するリストの作成
4.5.1. シリアルデコードの読み取りサンプルプログラムでは CaptureButton_Clicked 関数に実装されています シリアルデコードのリストは :LISTer:DATA? クエリで取得できます 返信データはブロック受信で取得できます これには VISA-COMライブラリのAPIの FormattedIO488. ReadIEEEBlock (IEEEBinaryType.BinaryType_UI1) を使います クエリの返信を文字列として受け取るには この関数の返値をByte 型の配列で受け ASCII 文字列からVBAで操作するUnicode 文字列に変換する必要があります 変換はStrConv 関数にvbUnicodeパラメータを設定して行います 取得した文字列は 行と項目に切り分けることが可能です 文字列の切り分けにはSplit 関数を使うとよいでしょう ブロック受信の際 データ量が大きいと通信がタイムアウトすることがあります これは タイムアウトプロパティの値を十分大きくとっておくことで回避することができます 4.5.2. 表示するリストの作成サンプルプログラムでは CaptureButton_Clicked 関数に実装されています 4.5.1で取得した文字列は行毎に改行コード 項目ごとにカンマ, で区切られています まずは行毎の文字列配列に分割します これには文字列クラスのSplit 関数を使い 改行コードで分割します 改行コードはVBAでvbLfという定数で指定されています 最初の行は項目名です 最初の行をSplit 関数でカンマ毎に分割し 項目名毎の文字列配列が取得できます 2 行目以降は 取得したデコードの内容です こちらも同様に分割することで 最初の行で取得した項目名と同じ順番でデータの文字列配列を取得することができます 本サンプルでは 最初の行からデータの最後までをまとめてループで処理しています また 処理の高速化のため Excelのシートに対して配列を取得し データを更新しシートに設定しなおす処理を行っています 詳細については0
VBA の高速化やサンプルのコードを参照してください 5. Excel VBA に関する Tips ダウンロードサイトにあります Microsoft Excel 2010 VBA InfiniiVision 編 も参照してください [ ダウンロードサイト ] http://www.agilent.co.jp/find/infiniivision-sample によるオシロスコープ制御入門
5.1. VBA の高速化次のような高速化を行っています 次の説明のプログラムでは疑似コードを使っています 必要に応じて読み替えてください Dim targetarray As Variant Dim targetrange As Range Set targetrange = Range(Cell([ 開始行 ], [ 開始列 ]), Cell([ 終了行 ]), [ 終了列 ))) targetarray = targetrange 書き込み対象のセルを配列で取得 { For 文等で値を設定する target([ 行 ],[ 列 ]) で値を設定する [ 行 ],[ 列 ] の値は 1 から始まります 普通の配列とは異なります } targetrange = targetarray セルに配列で値を書き込む 5.2. プログラムの中断 VBA は ESC キーを押すことで中断することができます このサンプルでは実装していませんが 次のようなコードを実装することで ESC キーを押した時にプログラムを中断するだけでなく エラー処理を行うことができるようになります また Resume コマンドで中断したところに復帰することができます On Error GoTo OnError Application.EnableCancelKey = xlerrorhandler ' ESC キーでエラー処理に飛ぶ OnError: If Err.Number = 18 Then ' ESCキーでのエラートラップ ESCを押した時の処理 Resume 復帰 End If
6. 測定器プログラムのサポート このガイドやサンプルプログラムに関しては 下記まで お問い合わせください アジレント テクノロジー株式会社電子計測本部 計測お客様窓口フリーダイアル : 0120 421-345 Email : contact_japan@agilent.com 計測お客様窓口では このガイドに対する質問 サンプルプログラムに関してのインストール方法 実行方法 プログラム内容等のお問い合わせを承っております お問い合わせの際は Windows のバージョン 言語のバージョン ご利用の測定器モデル名 具体的なお問い合わせ内容をお知らせ下さい その他 Agilent 社製測定器のコマンドや動作に関する説明 他社製測定器から弊社測定器へのポーティング IO Libraries Suite による測定器の制御など 弊社製品に関してのご質問 ご相談も承っております 新規プログラム作成のご依頼や サンプルプログラムのカスタマイズのご依頼 お客様が作成 カスタマイズなされたプログラムのデバッグ作業は承っておりません Excel 2010 や VBA の使い方や文法など プログラム開発環境やプログラム言語の一般的なご質問に関しましては サポートしておりません 一般の書籍または web Help 等の情報を ご確認いただきますようお願いいたします 著作権および免責事項 著作権はアジレント テクノロジー株式会社が保有しています このガイド ソフトウェアを使用したことによって生じたすべての障害 損害 不具合等 ( 含 ソフトウェアのバグ ) に関しては 弊社および弊社の所属するいかなる団体 組織とも 一切の責任を負いません 各自の責任においてご使用ください 転載条件 無断での転載 配布はご遠慮下さい アジレント テクノロジー株式会社本社 192-8510 東京都八王子市高倉町 9-1 計測お客様窓口 受付時間 9:00-18:00( 土 日 祭日を除く ) TEL 0120-421-345 (042-656-7832) FAX 0120-421-678 (042-656-7840) Email contact_japan@agilent.com 電子計測ホームページ www.agilent.co.jp 記載事項は変更になる場合があります ご発注の際にご確認ください Agilent Technologies. Inc. 2012 Published in Japan, June 26,2012 5991-0790JAJP 0000-08A