2014年1月25日土曜日

Communication Box 22 (GPIB IPの作成 11)

先日入手したGPIBアダプタを相手にして動作確認を始めたところ、コマンドモードでのハンドシェイクは行うのだが、データモードになるとNDACがHレベルに上がりっぱなしになりハンドシェイクしない。 このGPIBアダプタはレギュレータ電源用GPIBアダプタだが電源本体は持って無いので、アダプタ単体のみを通信相手として使ってみている。それが原因かとも思ったのだが、どうもおかしい。こちらのIPからGPIBアダプタに対してLA_MSGでリスナ指定をしているのだが、それが正しく行われないためにGPIBアダプタがリスナにならず、NDACをLにドライブしていないようだ。やはり、原因はこちらのIP側にある筈である。。。。あれこれ思案した結果、データバスの論理が逆なのでは無いか?との考えに至った。  GPIBバスの信号は負論理なのだが、データバスに関してはデータなのだから正論理も負論理も無いだろう、だからそのまま、つまり正論理だろうと思い込んでいたのだ。ところが、実際はデータバスも負論理にする必要があるようだ。 実際、改めて参考資料を読み直したところ、プロトコルハンドブックにDIOも負論理との記述があった。つまり、GPIBの規格について一つ誤解していた。そこで、データバスを負論理に修正した結果データモードでもハンドシェイクするようになった。

以下はハンドシェイクの波形で、上がDAV、下がNRFDである。


こちらは、上がDAV、下がNDAC


測定は以下の状態で行った。 GPIBアダプタ側のコネクタ側から1.5mのケーブルで信号を引いてきてその先の(治具)基板の信号をオシロで観測している。上記で信号反射のような波形が見えているのはその所為ではないかと思う。


ハンドシェイクが正常に行われるようになったので、GPIBアダプタにPWIBという問い合わせコマンドを送って機種名を取得できるかやってみたが、結果は取得できなかった。 電源装置が繋がっていないのだから返信すべき機種情報が判るはずもないので、この反応は当然といえば当然であろう。

ということで、今度は通信相手をAgilentのE3631Aに変えて動作確認するしてみることにした。
以下のプログラムで6Vチャンネルの出力電圧を制御してみた。


電源側の動作の様子


出力


電圧設定部をforループにして繰り返してみた。


プログラム通りの出力が得られている。

今度は、HPの54616C(デジタルオシロ)と通信を試してみた。
以下のようにしてオシロの画面に文字列を表示させる。




以下のプログラムで*IDN?コマンドを送って機種名を取得してみた。


取得できた。


一応通信は出来ていそうであるが、一つ不可解な現象が見つかった。
問い合わせコマンドを連続すると2回目のコマンド通信時にハンドシェイクが上手くいかなくなるようで、いつまで待ってもコマンドFIFOが空にならない。




うーむ…

でも、まぁ、昨年の8月頃に始めてから漸く実機で通信ができる段階まで来れた。いつものIP作成と違い今回は筐体の加工や回路作成もあったのでそれなりに時間がかかってしまったが、あともう少しで完成しそうだ。

先日入手したTektronixのデジタルオシロだが非常に使いやすい。
いやーー、良い買い物をした! って言う感じだ。

0 件のコメント:

コメントを投稿

自作CPUで遊ぶ 25

まだ制御ソフトが完成していないので今まではスピンドルを移動するために一々簡単なプログラムを書いて移動させていたのだが、非常に面倒なのでCNCペンダント的なものを作ることにした。 右側の縦に2つ並んでいるスイッチ...