NI製品ディスカッション

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

出力停止で0V

解決済み
解決策を見る

サンプルVIでDAQMXのアナログ電圧出力のVIがいくつかありますが、これらの使用の際、出力波形を停止する際に必ず0Vで終わるようにしたいと思っております。似たような質問が何件かあり、最後にもう一度0Vの命令にする、ハードウェアのDAQをリセットするなどありましたが、具体的にどのようにすれば良いのか判りません。できればこのサンプルVIをモディファイして波形発生プログラムを構築しようと考えておりますので、それに見合った手法はありませんでしょうか?

DAQMXの関数で一発リセットみたいなのがあると便利なのですが・・・

 

0 件の賞賛
メッセージ1/7
4,583件の閲覧回数
解決策
トピック作成者Soulflyが受理

タスク単位でなく、デバイスをリセットして良いなら、DAQmxデバイスリセットを使ってはいかがでしょうか?

「DAQmxデバイス構成VIおよび関数」サブパレットにあります。

 

使用する時には「DAQmxデバイス」を指定する必要がありますので、

「DAQmx上級」の「DAQmx定数&プロパティノード」にある「DAQmxタスクプロパティノード」でタスクで使われているデバイスを調べて得られたデバイスのリストをリセットします。

0 件の賞賛
メッセージ2/7
4,573件の閲覧回数

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

添付していただいたDAQmxのデバイスリセットで期待通りの動作をすることが確認できました。

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

こんにちは。

 

ちなみに製品のシリーズによってリセット後の動作は異なるので(電源投入時の出力電圧が仕様で決められていない)、

出力停止で0Vと設定したいのであれば、プログラム動作中はなんらかの電圧値を出力しつづけるという処理をお勧めします。

 

下記の様な流れをステートマシンで実装してみてください。

 

プログラム開始時に、初期状態として0Vの波形データを出力する

ユーザーが出力ボタンを押したら、任意の波形データを出力する。

ユーザーが停止ボタンをおしたら、0Vの波形データを出力する。

 

 

0 件の賞賛
メッセージ4/7
4,531件の閲覧回数

doradorachan様、アドバイス恐縮です。私にとってなかなか難しい課題を・・・

添付のようなプログラムを作成しました。波形を生成してスタートボタンでで波形出力となりますが、STOPで波形出力が停止しそのままプログラムも終了してしまいます。

これ、停止でプログラム終了しないで、また波形生成部にもどりたいのですけど、どうしたら良いかお聞かせ願えますでしょうか?

Whileループを使用してやろうとしてもなかなかうまいこといきません。どうかよろしくお願いいたします。

0 件の賞賛
メッセージ5/7
4,522件の閲覧回数

添付サンプルを見てみてください。

動作確認はしていないので直接動作するかわかりませんが、この様なステートマシンであれば、前回説明した流れが簡単に実装できます。

 

一般的な設計テクニック

 

簡易ステートマシン

0 件の賞賛
メッセージ6/7
4,496件の閲覧回数

doradorachan様、アドバイスありがとうございます。恥ずかしながら簡易ステートマシンという設計手法の存在すら知りませんでした。

テンプレートを使用して云々とありますね。

すぐに答えが知りたくて、自分の中で「プログラム設計がよく判らない」→「深く考えないでディスカッションに投稿」という流れができてしまっています。

もう少し落ち着いて、ちゃんと考えて進めてみたいと思います。その前にまず基礎をちゃんと理解するというのがありますね。

0 件の賞賛
メッセージ7/7
4,482件の閲覧回数