06-28-2017 09:17 PM - 編集済み 06-28-2017 09:20 PM
お疲れ様です。
現在、DAQの収録方法について詰まっています。
質問項目が2点あります。
①赤枠で囲ったところがデータ収録の部分なのですが、チャンネルが8つあり、各々独立したデータを取得したいです
②集録データを保持(2週間ほどの測定)し、終了したタイミングで保存という処理をしたいのですが、どのようなテクニックがあるでしょうか...
VI(2016)を添付いたしましたのでご教示いただけたらと思います。
※VIを動作する際はAcquisition Setup and Control VI's.zip を解凍する必要があります。
接続はEthernetです。
宜しくお願いいたします。
図1:ブロックダイヤグラム図2:フロントパネルです。
解決済! 解決策の投稿を見る。
06-28-2017 09:51 PM
(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」などで検索すると情報が出てくるので参考にしてください。
もし分からないことがあれば聞いてください。
よろしくお願いします。
06-28-2017 10:46 PM
回答ありがとうございます。
①「赤枠で囲われた2D配列データを、それぞれのチャンネルの収録データに相当する1D配列に分解したい」という意味です。
VIの中身を見ても把握できませんでした...
②生産者消費者デザインパターンで作成してみます。
ご回答の程、宜しくお願いいたします。
06-28-2017 10:56 PM
それであれば、配列パレットにある「指標配列」関数に2D配列を配線して、関数の下にマウスを合わせてドラッグして8個分に拡張したのち、それぞれのチャンネルに相当するデータが取り出せるように列(または行)の指標を入れればよいです。
指標配列 関数 - LabVIEW 2014ヘルプ - National Instruments
06-29-2017 02:31 AM
06-29-2017 02:51 AM
2週間は長いので、
「任意のタイミングで、1日分のデータを保存する」は可能でしょうか?
06-29-2017 03:29 AM
生産者消費者デザインパターンでは、随時データをファイルに保存できるので、ハードの記録容量に余裕があれば計測期間は気にしなくても大丈夫だと思います。
ただ、2週間分を全て1ファイルに保存するとファイルサイズが大きくなって扱いづらいと思うので、1日ごとに分けるように保存する機能をつけたほうがいいかもしれません。
06-29-2017 04:48 AM
データ保存/日の手法は自動で可能でしょうか?
06-29-2017 05:18 AM - 編集済み 06-29-2017 05:25 AM
シフトレジスタと日付、時刻を取得する関数とケースストラクチャを使えば自動でできます。
シフトレジスタに前回ファイル作成の時間を保持しておき、24時間以上経過していたらケースストラクチャで新規ファイルを作成して、そちらに保存するようにし、ファイルを作成の時間を更新するようにすればオッケーです。
シンプルな生産者消費者デザインパターンでもできますが、この場合はキューメッセージハンドラで作ったほうがすっきりと書けると思います。
07-04-2017 04:11 AM - 編集済み 07-04-2017 04:16 AM
bungee-gum さん
返信ありがとうございます。
https://decibel.ni.com/content/docs/DOC-40751
上記のような保存方法があることを知り、参考にしようと思います。
その際、保存シーケンスは解決なのですが、並行して波形生成装置を制御したく思います。
測定の流れは以下の通りです。
①‐1 Function Generatorから電圧を測定物に印加
‐2 測定物に印加した電圧&電流値を監視
② 1日ごとに監視データをバイナリで自動保存
③ ①は並列処理...①~②をループ
④ 絶縁破壊(電流の閾値越え)を起こした際に停止、そこまでのデータを保存
【 質問 】
1.Function Generatorの並列的 組み込み方
2.1日ごとにTimeスタンプを追加しながらの監視データのバイナリ自動保存の組み込み方
以上2点でつまづいております。
ご教示の程宜しくお願いいたします。