NI製品ディスカッション

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

DAQ収録データを個別で取得、保存したい

解決済み
解決策を見る

お疲れ様です。

現在、DAQの収録方法について詰まっています。

質問項目が2点あります。

①赤枠で囲ったところがデータ収録の部分なのですが、チャンネルが8つあり、各々独立したデータを取得したいです

②集録データを保持(2週間ほどの測定)し、終了したタイミングで保存という処理をしたいのですが、どのようなテクニックがあるでしょうか...

 

VI(2016)を添付いたしましたのでご教示いただけたらと思います。

※VIを動作する際はAcquisition Setup and Control VI's.zip を解凍する必要があります。

接続はEthernetです。

 

宜しくお願いいたします。

 

図1:ブロックダイヤグラムキャプチャxxx.PNG図2:フロントパネルです。

キャプチャxxxx.PNG

すべてをダウンロード
0 件の賞賛
メッセージ1/28
3,816件の閲覧回数

(1)に関して、8チャンネルそれぞれのデータの同時収録自体は正しくできているということでよろしいでしょうか?「独立したデータを取得したい」というのが「赤枠で囲われた2D配列データを、それぞれのチャンネルの収録データに相当する1D配列に分解したい」という意味なのか、「そもそも複数チャンネルを使用したデータ取得が同時に行えていない」のかが分からないので教えてください。

 

(2)に関しては、いかに単精度といえども、2週間分1kHzの計測データを保持しておき、終了時にまとめて保存するようなVIをつくると、途中でメモリが足りなくなって止まってしまいますので、生産者消費者デザインパターンで作った方がよいです。

参考: http://www.ni.com/pdf/branches/ja/basics2sample.pdf

これ以上計測機能を拡張していく予定がないのであれば、添付していただいたVIにデータ保存用の消費者ループを追加するのがよいです。

今後さらに機能拡張の予定があるのであれば、DAQをお使いとのことなので、プロジェクトを作成のテンプレートの中にある、連続測定とログ(DAQmx)を元にして、NIのDAQ用の構成や読み取りVIをお使いのDAQのものに置き換えるようにすると後々楽だと思います。(もしメニューにない場合は、NI-DAQmxドライバーを入れてください。)

キューメッセージハンドラというデザインパターンを使用して書かれているので、知らないと最初は動作を追うのが難しいかもしれませんが、プロジェクトの中に作成されるhtmlドキュメントを参照したり、Googleで「キューメッセージハンドラ」や「Queued Message Handler」などで検索すると情報が出てくるので参考にしてください。

もし分からないことがあれば聞いてください。

 

よろしくお願いします。

メッセージ2/28
3,796件の閲覧回数

回答ありがとうございます。

①「赤枠で囲われた2D配列データを、それぞれのチャンネルの収録データに相当する1D配列に分解したい」という意味です。

  VIの中身を見ても把握できませんでした...

②生産者消費者デザインパターンで作成してみます。

 

ご回答の程、宜しくお願いいたします。

0 件の賞賛
メッセージ3/28
3,786件の閲覧回数

それであれば、配列パレットにある「指標配列」関数に2D配列を配線して、関数の下にマウスを合わせてドラッグして8個分に拡張したのち、それぞれのチャンネルに相当するデータが取り出せるように列(または行)の指標を入れればよいです。
指標配列 関数 - LabVIEW 2014ヘルプ - National Instruments

0 件の賞賛
メッセージ4/28
3,778件の閲覧回数

気になるのは、「2週間ほど保持してから保存」の意味するところです。

これは、PCのメモリ上に保存しておき、2週間後に一括で保存されたいという意味でしょうか?

Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

GCentral
0 件の賞賛
メッセージ5/28
3,751件の閲覧回数

2週間は長いので、

「任意のタイミングで、1日分のデータを保存する」は可能でしょうか?

0 件の賞賛
メッセージ6/28
3,743件の閲覧回数

生産者消費者デザインパターンでは、随時データをファイルに保存できるので、ハードの記録容量に余裕があれば計測期間は気にしなくても大丈夫だと思います。

ただ、2週間分を全て1ファイルに保存するとファイルサイズが大きくなって扱いづらいと思うので、1日ごとに分けるように保存する機能をつけたほうがいいかもしれません。

メッセージ7/28
3,735件の閲覧回数

データ保存/日の手法は自動で可能でしょうか?

0 件の賞賛
メッセージ8/28
3,718件の閲覧回数

シフトレジスタ日付、時刻を取得する関数とケースストラクチャを使えば自動でできます。

シフトレジスタに前回ファイル作成の時間を保持しておき、24時間以上経過していたらケースストラクチャで新規ファイルを作成して、そちらに保存するようにし、ファイルを作成の時間を更新するようにすればオッケーです。

シンプルな生産者消費者デザインパターンでもできますが、この場合はキューメッセージハンドラで作ったほうがすっきりと書けると思います。

メッセージ9/28
3,711件の閲覧回数

bungee-gum さん

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

 

https://decibel.ni.com/content/docs/DOC-40751

上記のような保存方法があることを知り、参考にしようと思います。

その際、保存シーケンスは解決なのですが、並行して波形生成装置を制御したく思います。

測定の流れは以下の通りです。

①‐1 Function Generatorから電圧を測定物に印加

  ‐2 測定物に印加した電圧&電流値を監視

②      1日ごとに監視データをバイナリで自動保存

③      ①は並列処理...①~②をループ

④      絶縁破壊(電流の閾値越え)を起こした際に停止、そこまでのデータを保存

 

【 質問 】

1.Function Generatorの並列的 組み込み方

2.1日ごとにTimeスタンプを追加しながらの監視データのバイナリ自動保存の組み込み方

 

以上2点でつまづいております。

ご教示の程宜しくお願いいたします。

キャプチャ.PNG

0 件の賞賛
メッセージ10/28
3,648件の閲覧回数