NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

バイナリデータ保存の際のエラー

お返事ありがとうございます。

 

>>転置しても変化がないのはそう見えるだけと思われます。

添付していただいた画像を見るとよくわかりました。ありがとうございます。

 

現在以下のように考えています。

(0,0)の判断をやめて、保存ボタンを押した瞬間から保存を始めます。保存ボタンを押した瞬間からのx,y,z(トンネル電流値)のデータを3つずつほど表示させる(例えば(25,40)で保存ボタンを押したら、(25,40)(26,40)(27,40)のように)、(押した瞬間からx,y,zのデータを3つずつほど表示するのは、xの増減でトレースかリトレースを判断するため)。保存するのはzの値のみにする。保存するデータ数を131072(トレース256×256、リトレース256×256)に設定する。例えば、トレースの(25,40)の位置で保存ボタンを押したら次のトレースの(25,40)で保存が止まるはず。zの保存した時系列で並んでいるデータをトレースリトレースに分けて、トレースは(25,40)の位置から並べる。リトレースの1番目のデータは、(255,40)の位置のデータになるはず。リトレースは(255,40)~(0,40)のように配置していく。

上記の通りに変更するにはどのようにすればよいでしょうか。また、hostでトレース側をリアルタイムで描写し続けるにはどのようにすればよいでしょうか。(最終的には、リアルタイムの描画を手動でトレースリトレースの切り替えできるように考えている。)

リアルタイムで描画し続けているトレース画像と「ファイル確認」で映るトレース画像は同じものになるはずです。

 

アドバイスいただけたら幸いです。

よろしくお願いいたします。

0 件の賞賛
メッセージ41/45
48件の閲覧回数

それは原子像を作っているところでやっているではありませんか。256×256のバッファを用意して、XYのインデックス位置のデータをZ値で置き換えています。そのデータを保存することもやっていますね。

 

0 件の賞賛
メッセージ42/45
42件の閲覧回数

お返事ありがとうございます。

 

まさに原子像作成のところでやっていることでした。申し訳ございません。

 

その原子像をリアルタイムで描写している箇所で、トレースリトレース分けて描写し続けるように変更しようとしています。保存プログラムの個所を参考にトレースリトレース分けて描写し続けるように変更しようとしましたが、うまくいきませんでした(以下添付)。

アドバイスいただけたら幸いです。

6.png

 

また、少し話は変わりますが、先日いただいたfpga_test.viの方でお聞きしたいことがあります。現在は1pixelを300μs(xy freq=300)で動いていて、300μs間隔で1点のトンネル電流値をFIFOに書き込んでいます。これをまず、xy freq=200にします。トンネル電流値を取得する針は外部からの円運動の信号+LabVIEWで作ったラスター走査で動いています。円運動は1周0.2msなので、0.2ms×256でx軸方向の片道にかかる時間は51.2msとなります。円運動を1周終えるときに次のpixelへ動くイメージで、x軸方向の片道で円が256個あるイメージです。各円運動で198点のトンネル電流値を保存しようと考えています。x,yの値をシフトレジスタで保持して、200μsの間に198点保存するためにxy freq2を用意しました。

 

質問①

元のプログラムから、上記の内容に変更してviを動かした際に、FIFOの書き込みでタイムアウトを起こしてしましました。原因がわからないので、お分かりになる範囲でご教授いただければ幸いです。

 

質問②

各円運動で198点のトンネル電流値を保存するためにxy freq2は、0.2ms/198=1.01010101μsという計算になりますが、どの程度の小数点まで設定できるのでしょうか。いろいろ試したのですが、整数にしかなりません。

 

つたない説明で申し訳ございませんがアドバイスいただけたら幸いです。

よろしくお願いいたします。

 

(添付)元のプログラム:fpga_test5.vi  変更後のプログラム:fpga_dither_198nomi.vi

すべてをダウンロード
0 件の賞賛
メッセージ43/45
32件の閲覧回数

「256×256バッファを用意して、XYインデックスのデータをZ値に入れ替える」コードが理解できていません。失礼ながら「何かわからないけどトレースを分離していそうだからコピペした」としか見えません。

 

質問①:FIFOの読み取りが間に合わずオーバーフローしています。

質問②:xy freq2は整数なので小数点以下は入りません。

PXIのFPGA AIモジュールの最高サンプリングレートは1MS/s(変換時間=1μs)だったと思います。1μsでFIFOに突っ込んだデータをhost側で非同期に取り出して処理するのは無理があります。

fpgaのコードはインタレーススキャンのままですね。私はxの折り返しスキャンと思っていました。質問とコードに齟齬があります。

 

LabVIEWというよりも計測処理プログラミングに不慣れとお見受けします。構想は理解できますがハードウェアの仕様も含めて整理し直さないとゴールは遠いと思います。

コンサルタントを雇うことをお勧めします。

0 件の賞賛
メッセージ44/45
19件の閲覧回数

お返事ありがとうございます。

 

私の理解が足りず申し訳ございません。

 

>>質問①:FIFOの読み取りが間に合わずオーバーフローしています。

198点保存の点数を少なくしてサンプリングレートを変えようと思います。

 

>>質問②:xy freq2は整数なので小数点以下は入りません。

整数になるように保存点数を調整しようと思います。

 

様々なアドバイスありがとうございます。

いったん整理し直そうと思います。

0 件の賞賛
メッセージ45/45
9件の閲覧回数