blochの日記

自虐ネタ以外のぐちは書かないようにしましょう

温度モニタPCが死んだ3

12Tの温度読み取り器が壊れたのはいつだろう。このメモに載っていないので2011年以前である。WindowsXP搭載のPCと、殆どハンドメイドのリレーボックスが木箱に入って送られて来たのを見て「なんてもったいないことを!PCは日本で買えるのに!」と文句を言うとY先生に「システム全体として動作確認をしてそれをそのまま配送しているので仕方が無い。それにこのくらいの木箱(〜1m)の航空運賃はそれほどでもない」と言われて納得した覚えがある。

そのハンドメード・リレーボックスは定電流源とAD、そしてPCインタフェースまで備えた、今思えばC社のマニアなエンジニアの一生をかけた大作であって、25ピンのDIN(IBM-PCのプリンタポート)でXPと繋がれていた。残念なことにその大作は数年で壊れてしまい、S君も居なくなったあとだったような気がするが、一人で必死にHPの34970(現Tektronix)につないでモニタさせた。何で34970を買ってあったのかはもう思いだせない。

まだPC-98が現役だった頃で、簡単だろうと34970のマニュアルを見てDelphi、じゃなかったTURBO Pascalでプログラムを書いたのだが、どうやってもだんまりで応答がない。仕方なく、一行一行、デバッグモード的に進めて(単にinput文を入れただけ)行くと、ごくたまに応答する。何回か試すとコマンド投入後、4〜5秒待つことが必須だった。なんてまあとんでもない仕様だこと、と当時、あきれ返ったものだが、マグネットは順調に動いていたので自動表示の必要もなく、運転前に手動で温度確認するだけだったので、PC読み取りのことなどすっかり忘れていた。

それが、今回、Keithley2700(これも現Keysight)の読み取りプログラムを書いているうちに、34970のことを思い出し、昔のPascalプログラムをWindowsDelphiに移植してみたところ、、、、何とdelay無しで快調に動くことが分かった。おかしかったのは、PC-98のGPIBインタフェースだったのだ。どこがおかしいかは今となっては全く分からないが、もっとひどい話はいくらでもあって、SHARPのMZ用GPIBインタフェースに搭載されていたZ80ペリフェラルLSIが、最後に送られたコマンドを覚えてしまい、データ読み出しの際にそれと「or」で返される、と言うとんでもないバグを含んでいて、当時、NTTの研究員のKさんが往生していたのを覚えている。もちろん、SHARP製BASICを使っていればそのバグは回避(コマンドの最後にヌルを送るだけ)されているのだが、いざ、バイナリーデータを読もうとして自分でプログラムを書こうとすると嵌ったらしい。