07-15-2011 03:10 AM
添付したVIは、シリアル通信を用いて、ピエゾステージとカメラを制御するプログラムです。
VISA Write関数を用いてピエゾステージを移動させ、VISA READ関数を用いてピエゾステージの位置を読み取っています。
ピエゾステージは、たとえば0.1ミクロンずつ、0.1、0.2、0.3とZ座標を移動させていくのですが、
read関数から読み取られる値は、1つずつずれてしまいます。
どういうことかというと、たとえばwrite関数で0.3に移動させた後にRead関数で読み取られる値は0.2になります。
write関数の後にread関数があるにも関わらず、read関数で読み取られる値は、直前に指示した値ではなく、そのさらに1つ前の値になります。
この理由がよくわからないので困っているのですが、どなたか教えていただけないでしょうか?
07-23-2011 09:03 AM
Shigeru187 様
いつもお世話になっております。
日本ナショナルインスツルメンツ技術部の巳波と申します。
ご利用のピエゾステージがどういった仕様になっているかは存じ上げておりませんが、
をご確認頂けましたら、トラブルシューティングのヒントになるかと存じます。
宜しくお願い致します。
07-25-2011 03:28 AM
0.3、0.2、0.1 というふうに逆方向に動かしていった場合にも、やはり1つ手前に指示した値が表示されました。
すなわち0.2と指示した後に、0.3と表示されました。
同じ値を書き込む場合には、最初の2回は、前回のピエゾの位置が表示され、3回目の移動指示の後から正しい移動位置の値が表示されました。
高速測定を切り換えても、症状は変わりません。