046 ファンクション・ジェネレータをコントロールする(その4)

2022/06/17

実機/ファンクションジェネレータ

t f B! P L

今回は,エヌエフ回路設計社製のファンクション・ジェネレータPyVISAパッケージを使って,任意波形データの設定を行う手順を紹介します.
但し,任意波形データの設定は非常に複雑で,詳細を個別に紹介するのは無理なので,あくまでも雰囲気だけを感じて下さい.

任意波形データの設定が複雑になるのは,下記の理由によります.

  1. 任意波形のデータは整数値のBinary配列として送受信する
  2. 任意波形は2種類あり,そのうちの1種類は縦軸成分と横軸成分の数値のバイト長が異なる
  3. 波形データを設定する際は,収納するメモリ番号,波形名(省略可能),波形データの3つのパラメータを使う

まず,2.の理由だけで,PyVISAパッケージで用意されているBinaryデータ送信用の関数をそのまま使うのでは対処できないことになります.

また,任意の波形データは実数値の値ですが,それをファンクション・ジェネレータ用に整数値に変換(正規化した2バイトおよび4バイトの整数値として変換)することが最初の難関となります.これは,PyVISAパッケージとは全く別の処理で,変換処理を実装するには,システム開発者のプログラミング技術を必要とします.
この変換は,あくまでも,今回使用しているファンクション・ジェネレータに対するものであり,別のファンクション・ジェネレータでは別の変換が必要となると思います.

1.と3.はPyVISAパッケージに関して解決すべき点なので,当方の行った試行錯誤を紹介します.
当然,技術資料はよく読んで実装に着手したのですが,どうしても,任意波形データをファンクション・ジェネレータに上手く設定できませんでした.
当初,実数値である任意の波形データを,ファンクション・ジェネレータ用の整数値のBinary配列に正しく変換できていないのが原因だと推測し,そこを重点的に調べたのですが,いっこうに解決できません.

last_statusの値をチェックしているので,コマンドの送受信に関しては問題無いと高を括っていたのですが,念のため,技術資料を調べて見ると,コマンドの送受信でエラーを検出する専用のコマンドが提供されていることに気が付きました.
専用コマンドを使って,個別にコマンドの送受信のエラーを調べてみると,任意波形のデータ送信の際に,「文字列パラメータに誤りがあります」とのことです.

つまり,Binary配列に変換した任意の波形データが間違っているのではなく,SCPIコマンドが間違っているということです.この時点で,ようやく不具合を解決する手がかりを得ることができました.また,エヌエフ回路設計社が用意してくれているエラーを検出する専用コマンドは,不具合の原因を特定する貴重な手がかりを提供してくれることが分かると思います.

原因を特定できれば,後は不具合に対処するだけです.今回は長くなってきたので,実際の対処手順に関しては,次の投稿で紹介します.


QooQ