07-04-2017 08:06 AM - 編集済み 07-04-2017 08:22 AM
質問(1)に関しては、DAQでの集録をFGの出力と同期させて行うのか、非同期で常時集録するのかで少し変わってきます。FGから波形をずっと繰り返し垂れ流しにして、非同期で常時集録する場合は、単にFG制御用の並列ループを1つ追加するだけで大丈夫だと思います。
ただ、ちょっと気になることがあるので、こちらからも質問させてください。
(1) 電圧、電流をDAQで集録されるようですが、FGからの出力電圧もDAQで集録して、記録にはDAQで読み取った値を使用するのでしょうか?
(2) DAQでの電流計測にはトランスインピーダンスアンプを使用するのでしょうか?
質問(2)に関して、「1日ごとにタイムスタンプを追加しながら」の意味するところの確認ですが、ファイルに記録するデータとして必要なものは「電圧、電流、インピーダンス」のほかに、各計測データ点での時刻も必要ということですか?それとも、1日ごとにファイル名にタイムスタンプを追加したい、といった程度の意味でしょうか?
07-04-2017 06:00 PM
① FGについては垂れ流しで、DAQで非同期・常時収録させようと思っています。並列ループを追加してみようと思います。
② 記録データ:電圧、電流、時刻、(インピーダンス)→記録間隔は1sec、自動保存間隔は1日です...
回答いたします。
(1)記載しておりませんでしたが、電圧・電流はFGに接続するAmpからモニターしようと考えております
(2)TIAは用いらないと考えております
宜しくお願いいたします。
07-04-2017 08:44 PM
以前示していただいたフロントパネルだと、計測に関してはScan RateとScans to Acquireの2つのパラメーターがありましたが、「記録間隔は1sec」とは、DAQの計測レート(Scan Rate)が1 Hzという意味でしょうか?それともScan RateとScans to Acquireを等しくして、複数データ点のFetchを1 s毎に行うということでしょうか?
もし今作成されているVIがあれば、添付で投稿していただければ改善のアドバイスができると思います。
質問に関してもご回答いただきありがとうございます。
TIAは使用されないとのこと、了解しました。あと、まだ「FGに接続するAmpからモニター」というのがいまいちイメージできていないのですが、どのように接続されるのか、お示しいただくことは可能でしょうか?
07-05-2017 03:14 AM
・複数データ点のFetchを1 s毎に、保存周期は1day毎に行いたいです
・TIAは使用します...が、あくまで箱として使用するので制御には影響しないと考えています
・FG→Ampに接続し、AmpにVoltage,Currentのモニター端子があるのでそこからモニタしようと考えていました
VIと資料を添付いたしました。
ダイヤグラム内にコメントを記載しましたので、そちらもご覧いただけると幸いです。
07-06-2017 08:49 PM - 編集済み 07-06-2017 08:59 PM
VI拝見しました。ラベルやコメントも適切に書かれていて、わかりやすかったです。
(1) ファイル保存に関して
telephoneさんのVIを編集するとわからなくなると思うので、1日ごとの別ログファイル作成のためのアルゴリズムを添付しました。参考になれば幸いです。コメントにあった任意タイミングでの別ログファイル作成は、現在使われている「データのみの単純な生産者/消費者デザインパターン」でもできないことはありませんが、ダイアグラムが少し複雑になります。キューメッセージハンドラなら楽に書けるので、どうしてもその機能が必要な場合は、以前示したサンプルプロジェクトを参考に、キューメッセージハンドラで書いてみてください。
(2) 1秒ごとのFetchに関して
お使いのDAQの詳細がわからないので間違っていたら申し訳ありませんが、複数データ点のFetchを1秒ごとに行うのは、Scan RateとScans to Acquireを同じ値にすればおそらく達成できると思います。
(3) TIAに関して
おっしゃる通り、TIAを使うかどうかはプログラムによる制御には影響しません。
ただ、計測レートと帯域によっては電流応答が遅れることがあるので、ある電圧印加時の電流が遅れて出てくると、せっかくタイムスタンプつけて保存したのに電圧と電流が対応していない、ってことになってしまいます。
それが心配になってのコメントです。お使いのシステムでそこに問題がなければOKです。
あと、1点うかがいたいのですがFG制御ループでStartとStopに別のイベントストラクチャを使われているのには何か理由がありますか?
07-07-2017 04:26 AM
丁寧な回答ありがとうございました!
一旦、回答を参考に取り組みます。
FGについては、僕のミスです...whikeループで作成できますよね><;
大変助かりました!
07-07-2017 04:40 AM - 編集済み 07-07-2017 04:41 AM
投稿後に思ったのですが、任意タイミングでの別ログファイル作成はダイアグラムまったく複雑にせずに書けますね。単にラッチ動作のブールスイッチ1つ作って、1日経過ブールとOR関数でつなげてケースストラクチャのセレクタに入れるだけです。
ただ、この場合は、任意タイミングで保存した時点から次の保存までまた1日空くので、気をつけてください。それが嫌な場合は、任意タイミングで保存した場合には作成日時が更新されないようにするために、ケースストラクチャの中に選択関数を入れて、任意保存ボタンが押されたときにはシフトレジスタに前回作成時の値をそのまま保持するようにすればOKです。選択関数はブールパレットにあります。
なんにせよ、キューメッセージハンドラを普及させたい思いが強すぎて不適切な回答となってしまったことをお詫びします。
07-07-2017 04:48 AM
回答ありがとうございます。
正直、キューメッセージハンドラをみて、複雑だなと思って敬遠している節があります...
お手数でなければ、例えばこんな感じに使う...といった例をご教示いただけませんでしょうか。
使いたい欲はあります!!
07-07-2017 06:11 AM
ご興味を示していただきありがとうございます!
キューメッセージハンドラは今回のtelephoneさんのケースにあるような「複数ループの並列制御」を行う際にとても便利なデザインパターンです。シンプルステートマシンと生産者/消費者デザインパターンを組み合わせたようなイメージです。(シンプルステートマシンと生産者/消費者デザインパターンに関しては、下記のドキュメントを参照してください。)
http://www.ni.com/pdf/branches/ja/basics2sample.pdf
「メッセージ」というのは特定のデータの型を指していて、ステート(String or Enum)とデータ(任意タイプ=バリアント)からなるクラスタです。これをキューで渡して動作させるので「キューメッセージハンドラ」という名前です。
こんな感じに使う、というのはやはりテンプレートを見ていただくのが一番早いですが、動作イメージは通常の生産者/消費者デザインパターンとほとんど同じです。
1. 並列ループ実行前に、メッセージキューを作る
2. 生産者ループで次の実行ステートを含むメッセージをエンキューする
3. 消費者ループでデキューして、メッセージに含まれたステートを実行
4. 2,3を繰り返す
5. メッセージキューを閉じる
消費者ループは生産者ループからのキューを消費するだけでなく、自分が消費するキューに自らエンキューすることもあります。つまり消費者ループは生産者ループにもなっているということです。これによって計測ループで行なっているような連続測定も可能になります。
「連続測定とログ」プロジェクトテンプレートでは複数のループ制御に使用するキューのリファレンスをクラスタ化しているので、たとえループを追加したとしても、ループ間の通信を容易にカスタマイズすることができます。
さらに便利なのは、2でメッセージを渡すときに、ステートだけでなくデータも渡せる点です。メッセージに含まれるデータはバリアントデータタイプなので、すべてのデータタイプを扱うことができます。便利さは、「連続測定とログ」の「エラー」ステートと「ステータス更新」ステートを見るとわかると思います。StringとErrorクラスタという異なるデータタイプでも、バリアントを使っているので、すべて同じエンキューVIで渡すことができます。
また、メッセージキのエンキュー、デキューを行うサブVI群はライブラリ化されており、普通のキュー関数と同じ感覚で使うことができます。
「連続測定とログ」で少し複雑に見えるのは、複数ループ間の停止に動的イベントを使用していることも原因かと思います。なので、イベント部分はいったん無視してキューの動作のみを追ってみてください。
もし英語のリスニングに問題がなければ、下記のビデオを見るとキューメッセージハンドラとはどんなものか、どうやってプロジェクトテンプレートを編集すればよいかわかると思います!
http://www.ni.com/webcast/3640/en/
http://www.ni.com/video/2728/en/
また、添付したzipは「キューメッセージハンドラ」テンプレートと「連続測定とログ」テンプレートに付属しているhtmlドキュメントをまとめたものです。同じものはプロジェクトをテンプレートから作成した際にdocumentationフォルダに入っています。こちらは日本語なので、もし上記のビデオがわからなさそうだったら読んでみてください。ただ、このドキュメント、説明がまわりくどいので私はあまり好きではありませんが。。
キューメッセージハンドラが使えるようになれば、大体のことはできるようになると思いますので、ぜひ習得されると良いかと思います!
なにかご質問があればお気軽にどうぞ!
07-10-2017 09:24 PM
丁寧なご説明ありがとうございます。
認識があっているかをご質問させてください。
実際の測定系VI(FGやDAQ)のVIループを挿入するのはイベント処理ループ、で合っていますでしょうか?