> 自動計測Webトップページに戻る

プログラムを作成しても、望んだように動かない場合、デバッグ作業が必要です。しかし、ただ、闇雲に、デバッグ作業を実施すると、時間が掛かる場合があります。以下の視点でデバッグしていただくと、デバッグにかかる作業時間を短くできると思います。 

■ 問題の部分だけを抜き出す、プログラムを簡素化する

大きいプログラムになればなるほど、プログラマーが意図しない動きが混入する場合があります。そのため、まずは、問題の部分だけを抜き出したプログラムにすることが肝要です。

また、複数の測定器を同時に動かす制御プログラムの場合には、やはり、問題の測定器のみに抜き出してみることも有効です。
ループや条件分岐が入り組んだプログラムの場合には、ループや条件分岐を止めてみると良いでしょう。問題部分の絞り込みを実施することで、デバッグ作業を楽にすることができます。

プログラムだけではなく、ハードウェアの問題が疑われる場合も、PCと問題の測定器を1対1で接続し、その上で、切り分けを行います。
これらは、手間のかかる作業ではありますが、問題を切り分けやすくなり、原因の特定が早くなります。 

■ ステップ実行で1行1行実施してみる

問題部分を絞り込んだ後は、プログラムを、ステップ実行で動作させ、明確に問題箇所を特定します。1行毎に、ステップ実行をさせながら、測定器の動作と、プログラムへの返り値を確認していきます。

よくある事として、

(良くある例1) コマンドを送ったのに、設定がされない!?

→ コマンドの記述ミス
      → Undefined Header , Syntax Error=コマンドの記載ミス
           → コマンドの記述ミスは、:SYST:ERR? で確認

→ 他に必要なコマンドが送られていない

→ コマンドの送る順番
     → 設定するのに、決められた順番で、コマンドを送る必要がある
     → 他のコマンドで設定が変更されてしまっている

→ タイミングミス、測定器の動作が追い付いていない
     → waitや *OPC?を入れ、タイミングを調整する

 

(良くある例2) タイムアウトエラーが発生してしまう!?

→ 測定器との接続がされていない
      → Connection Expertで測定器との通信ができるか再確認

→ 動作/処理に時間が掛かるのにタイムアウトが短い
  (例:長い波形データの取り込みをしているのに、タイムアウト時間の設定値が短い)

 

がありますが、ステップ実行により、明らかにしていくことができます。 

■ ステップ実行時でわかる測定器のエラー

ステップ実行時、測定器から”ピッ”という警告音や、画面上にエラーメッセージが表示されている場合には、測定器でエラーが発生しています。エラーが発生した場合には、まず、エラーメッセージを確認し、その次に、そのメッセージが何を意味しているかを調べます。ステップ実行時に、”ピッ”という警告音や画面上のエラーメッセージが確認できた場合には、すぐに、ステップ実行を止めて、":SYST:ERR?"を送り、エラーメッセージを確認します。":SYST:ERR?"は、プログラム言語や、Keysight Connection ExpertのInteractive IOから送ります。確認したエラーメッセージは、各測定器のユーザーズガイドやプログラマーズガイドで、その意味を調べ、必要な修正を行っていきます。

■ コマンドを送るタイミングを疑う

ステップ実行で、問題がない場合には、コマンドを送るタイミングを疑います。

例えば、測定器の設定直後に、測定を開始する場合には、測定器によっては、ある程度時間が経たないと、安定しない場合があります。このような場合は、ステップ実行では、逆に、上手くWaitが入ってしまうために、問題が発生しなくなることがあります。設定コマンドを送った後や、トリガが掛かった後など、タイミングが疑われる部分に、十分なWaitを入れ、動作を確認します。 

■ 測定器のバグと思われる場合には、ファームウェアを更新する

測定器の動作が、プログラマーズガイドの説明通りではない場合、測定器のバグであることがあります。バグは、ファームウェアの更新で、修正されている場合があります。

キーサイトでは、最新のファームウェアをWebサイトで公開しており、すぐに、ユーザーにてファームウェアの更新ができるようになっています。

更新後も、現象が再現し、バグと思われる場合には、サポート窓口までお問い合わせください。その際、問題個所を特定したプログラム、コードと、使っている測定器、ファームウェアバージョンをご連絡頂くと、サポートでの作業もスムーズになります。 

■ IOモニタの活用

キーサイトでは、IO Libraries Suiteのユーティリティとして、IOモニタをご用意させて頂いています。

IOモニタとは、測定器に出力したコマンド、測定器から読み込んだ返り値、それらのタイミングなどをログし、後で、確認するためのツールです。これにより、予期せぬ返り値が返ってきている事や、実際に予想していたようなコマンドの送り方、タイミングになっていないことを確認することができます。
 

実際の使い方について説明します。

  1. Keysight Connection Expertを起動します。スタートボタンから [スタートボタン]>[Keysight IO Libraries Suite]>[Keysight Connection Expert]を実行します。

  2. 起動後、メニュより[Tools]>[IO Monitor]を選択します。

                 図  IO Monitorの起動

  3. IO Monitorのメニュより [Tools]>[Options]を選択し、IO Monitor Optionsを表示させます。

            図  IO Monitor Optionの画面

    Monitoring Optionでは、モニタするレイヤ(Monitor Message)、画面に表示するレイヤ(Display Message)を選択します。ライブラリは、上位、下位のレイヤに分かれており、上位レイヤ(VISA-COM)を指定すると、最も、アプリケーションに近いレイヤをモニタすることを意味し、下位レイヤ(SICL Detail)を指定すると、最も、ハードウェアに近いレイヤをモニタする事を意味します。
    Message Limitでは、モニタするメッセージ数を指定します。100から10000メッセージまでを指定できます。
    Capture up to…bytes of a Buffer parameterでは、記録するバイト数を指定します。32から65536バイトまでを指定できます。

  4. 実際に記録を開始するには、Start Capturing Messages ボタンを押します。


  5. 下記は、USBにて接続したオシロスコープとPCとのやり取りをIO Monitorで観測した例です。

                       図  IO Monitor Optionの観測
1,2行目:*IDN?\n (\nは、コマンドのデリミタ) が送られ、その返り値として、測定値の名前が返ってきている事が分ります。

3-5行目: :WAV:DAT?\n という間違ったコマンド(最後のAが足りない)が送られ、その返り値を求めていますが、測定器が返り値を出さなかったために、タイムアウトになっています。そのため、4行目は、赤い文字になり、5行目で、タイムアウトが発生している事を表示しています。

6,7行目: :WAV:DATA?\nという正しいクエリコマンド(波形データを求めるコマンド)が送られ、その返り値として、#800001000から始まるバイナリデータ(バイナリブロックデータ転送)が返ってきている事が分ります。

IO Monitorは、強力なデバッグツールの一つです。デバッグ原因の特定などに活用する事ができますので、デバッグの際には、是非、ご利用下さい。

 

> 自動計測Webトップページに戻る

Related Links