NI製品ディスカッション

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

制御用の出力電圧について

PCI-MIO-16E-4 (PCI-6040E) において、DAQアシスタントから出力電圧が出ません。
 
 
単純な信号シュミレーションからのデータ(sin波など)をDAQアシスタントにつないでその波形の出力電圧として出そうとしています。(まだ実際の制御用の出力信号を出すにいたっていないため、前段階のテストとして)
 
 
ao0とao1のチャンネルを使っていて、端子台にデジタルマルチメーターとオシロスコープを接続して出力電圧を捕らえようと試みているのですが、どちらの端子からも、なんの電圧も出ない状況です。
 
 
制御用のアナログ電圧出力はDAQアシスタントからどのように使えばいいのでしょうか?
0 件の賞賛
メッセージ1/25
6,854件の閲覧回数
もりおか 様

平素より弊社製品をご使用いただき誠に有難うございます。
日本ナショナルインスツルメンツ技術部の櫻田と申します。


アナログ電圧が出ない原因を探索するためには
もりおか様の現在の状況をもう少し詳しくお知らせいただきたいと思います。

1)以前のもりおか様のご投稿を拝見させて頂きましたが
 構成は、OS:WINDOWS XP、ソフト:LabVIEW8.0 もしくは8.2、ドライバ:DAQ-mx8.0でしょうか。

2)Measurement & Automation Exproler(MAX)のテストパネルのアナログ出力テストで各チャンネルの電圧出力はご確認いただけますでしょうか。

3)DAQアシスタントを使用して、ao0のみ、あるいはao1のみを設定し、1チャンネルでの電圧出力は可能でしょうか。

4)現状での ao0(pin22 - pin55)とao1(pin21 - pin54)の出力電圧の値をお知らせ下さい。
 プログラムからの動作とMAXからの動作の両方について計測をお願いします。
 0V、+5V、-5Vなどいくつかの電圧出力値を設定して計測して下さい。



また、DAQアシスタントの使用したアナログ出力の設定方法についても確認させていただきます。
1)ブロックダイアグラムにDAQアシスタントを配置すると、設定ウイザードが開始します。
2)「アナログ出力」の「電圧」をクリックします。
3)出力するチャンネルを選択し、終了をクリックします。
 (2つのチャンネルを使用する場合はShiftキーを押しながら2つのチャンネルを選択します。)
4)各チャンネルの設定を行い、OKをクリックします。
 (タスクタイミングは両チャンネル共通です。)
5)ブロックダイアグラム上でDAQアシスタントアイコンのデータ端子へ(波形)データを接続します。
 (2種類の波形データがある場合には、関数パレットのExpress>信号操作>信号を結合を使用して結合した後に接続してください。)



以上、ご不明な点等ございましたらご連絡下さい。
よろしくお願い申し上げます。

日本ナショナルインスツルメンツ技術部
櫻田
0 件の賞賛
メッセージ2/25
6,817件の閲覧回数
櫻田様 返信ありがとうございます
 
1)構成は、OS:WINDOWS XP、ソフト:LabVIEW8.0.1 ドライバ:DAQ-mx8.0.1です

2)MAXのテストパネルのアナログ出力テストの結果は明日が休みなので、金曜日に報告いたします

3)現段階ではDAQアシスタントを使用して、1チャンネルのみの電圧出力もできない状況です

4)現状での ao0(pin22 - pin55)とao1(pin21 - pin54)の出力電圧の値も、現状でLabVIEWに触れる環境にいないので、金曜日にまた報告いたします。
 
DAQアシスタントの使用したアナログ出力の設定方法については、そのように設定しております。
 
また一つのVIの中で二つのDAQアシスタントは使用できるのでしょうか? 電圧データの入力にもDAQアシスタントを使用していますし、制御用の出力にもDAQアシスタントを使用するつもりです。
 
 
詳細の値については、金曜日にまた報告いたします。
0 件の賞賛
メッセージ3/25
6,821件の閲覧回数
もりおか様


日本ナショナルインスツルメンツ技術部の櫻田です。
お世話になっております。

アナログ入力とアナログ出力を個別のDAQアシスタントで作成し
1つのVI内で合わせて2つのDAQアシスタントを使用することは可能です。

一方、同種類の入出力に対して複数のDAQアシスタントを使用することは不可能です。
例えば、2つのアナログ出力について、個別にDAQアシスタントを2個使用する場合や
複数のアナログ入力について2個以上のDAQアシスタントを使用する場合は
リソース(チャンネル、クロック、バッファ等)の競合によりエラー(-50103) が発生します。



アナログ出力の問題につきましては
DAQアシスタントでの1チャンネル出力でも出来ていないとのことですので
アナログ出力テスト結果をお待ちしております。

MAXのテストパネルで正常な電圧値を検出できなかった場合は
お手数ですが、デバイスの不具合も考えられますので
http://digital.ni.com/softlib.nsf/websearch/fea4d55e1b3da33a86257076006aa260
のサイトの「diagnostic.zip 」をダウンロードして頂き
デバイスのテストを行ってください。
(その際には、デバイスのケーブルを外して行ってください。)


以上、ご不明な点等ございましたらご連絡下さい。
よろしくお願い申し上げます。

日本ナショナルインスツルメンツ技術部
櫻田
0 件の賞賛
メッセージ4/25
6,780件の閲覧回数
櫻田様  お忙しいところ返信ありがとうございます。
 
テストパネルの結果が出ました。
MAXのテストパネルのアナログ出力テストで各チャンネルの電圧出力は正常に出ています。0V、5V、10Vなどで確認しましたがデジタルマルチメーターの値と常に一致しておりました。2チャンネルとも出力テストは正常でした。

またプログラムからの動作ではDAQアシスタントを使用し、データを電圧出力しようとすると、やはり出力電圧はほぼ0Vのまま動作しません。またDAQアシスタントを使わずにDAQmx関数を使用して出力電圧を出すプログラムを作るとちゃんと動作しています。このプログラムは添付しておきます。

なぜ自分でDAQmx関数を使ってプログラムを書くと動作し、DAQアシスタントでは動作しないのでしょうか?

 

 

もう一つプログラム的な質問があるのですが、プログラム開始を時間軸の0秒として初期の電圧出力値は0Vで、5秒後に出力電圧を小数単位(例えば0.259Vのような値)で出し、10秒後に0Vに戻すようなプログラムはどのように書けばいいのでしょうか? ケースストラクチャーを使って、経過時間を条件にするとうまく動作しないので困っています。

0 件の賞賛
メッセージ5/25
6,769件の閲覧回数
もりおか 様

日本ナショナルインスツルメンツ技術部の櫻田です。
お世話になっております。

DAQmxで動作しているということですので
DAQアシスタントの設定や使用方法に問題があると思います。

DAQアシスタントで動作しない原因としては
出力のデータ書き込みが一瞬で終わってしまっている可能性があります。

1)DAQアシスタント設定時の生成モードを変更する。
2)DAQアシスタントをループで囲む。
3)DAQアシスタントに書き込むサンプル数を増やす。
これらの方法によって解決されると思います。

お試しいただくには、お送り頂いたプログラムの3つのDAQmx関数をDAQアシスタントで置き換えて
アナログ出力>>電圧>>物理チャンネルの指定 を行い
「生成モードをNサンプル」、「波形データの時間情報を使用」にすると出力できると思いますのでお試しください。
この方法で無理な場合は、お手数ですがDAQアシスタントを使用したプログラムをご添付ください。


また、時間によって出力電圧を変化させる方法につきまして、二つご紹介いたします。
1)シーケンスストラクチャと待機関数を組み合わせる。(添付画像上部)
2)時間により変化する波形をあらかじめ作成する。(添付画像下部)
画像を参照の上、お試しください。

ただし、プログラム開始を時間軸の0秒にすることは
アナログ出力の設定などを行う必要があるため厳密には不可能だと思います。
厳密な時間軸を要求する場合には、アナログ出力の開始と他の処理を同期させる方が良いかと思います。


以上、ご不明な点等ございましたらご連絡下さい。
よろしくお願い申し上げます。

日本ナショナルインスツルメンツ技術部
櫻田
0 件の賞賛
メッセージ6/25
6,727件の閲覧回数
櫻田様  返信ありがとうございます
 
DAQアシスタントをループで囲みサンプル回数を増やす事で解決しました。
 
また平坦シーケンスストラクチャと待機関数を組み合わせて、出力電圧を時間で制御する事ができました。
 
それに伴い不具合が出たのでまた質問させていただきます。お手数かけてすみません。
 
 
櫻田様に添付して頂いた画像のように平坦シーケンスストラクチャーと待機関数とDAQmx関数を作って、出力を制御しています。
そのVIの中にDAQアシスタントの入力もつけていて、サンプル数を10000でサンプリング周波数を1キロに設定し、出力電圧を制御しているその10秒間を測定するつもりです。 しかし、プログラムを動かすと、DAQアシスタントの入力が先に実行され、10秒間の測定が終わってから、出力電圧の制御に入っています。  この出力の制御と入力の測定を同時に実行するにはどうすればいいのでしょうか?
 
プログラムの中身は、添付していただいた通りに、出力電圧制御部分を作製し、DAQアシスタントの入力とグラフ表示器を接続したシンプルな構造です。どちらもループでは囲んでいません。
0 件の賞賛
メッセージ7/25
6,694件の閲覧回数
もりおか 様

日本ナショナルインスツルメンツ技術部の櫻田です。
お世話になっております。
DAQアシスタントが無事に動作し、また、時間制御もお力添えができ嬉しく思います。


この度の現象は、おそらくDAQアシスタントのエラークラスタワイヤを
シーケンスストラクチャかアナログ出力のDAQmx関数に接続しているために
その接続順で処理が行われているのではないかと思われます。

LabVIEWはデータフローモデルに従ってVIを実行しますので
エラークラスタワイヤが接続されている関数やストラクチャは
そのエラーデータが渡されるまで処理を待ってしまいます。


具体例として、添付の画像をご参照いただきたいのですが
Time1~3の表示器は、ティックカウントが取得した時間の差を表示していますので
シーケンス前とシーケンス内の処理時間を測ることができます。

sample3-1の場合は、アナログの入力と出力が同時に動いています。
sample3-2の場合は、アナログの入力の後に出力が動いています。
そのため、Time1の表示器の値が10秒違います。

もし、エラークラスタワイヤーをsample3-2のように接続していたり
アナログ出力のDAQmx関数に接続している場合は、sample3-1のように、ご変更下さい。

もし、他に原因がありましたら、プログラムの詳細をお知らせ頂ければと思います。


以上、ご不明な点等ございましたらご連絡下さい。
よろしくお願い申し上げます。

日本ナショナルインスツルメンツ技術部
櫻田

このメッセージは 11-28-2006 07:53 PMに N.Sakurada が編集しています。

すべてをダウンロード
0 件の賞賛
メッセージ8/25
6,667件の閲覧回数
櫻田様  返信ありがとうございます
 
添付の画像を理解し、おっしゃる通りにVIを組んでみましたが、やはり入力が先に実行され、出力が入力の後に実行されてしまいます。
また、今までは出なかったVI実行にエラーが表示されるようになってしまいました。
 
サンプル3-1の画像のようにVIを組んだのですが、サンプル3-2の実行画面のように10秒遅れて出力が始まっています。
添付1にVI  添付2にフロントパネルの画面 添付3に実行時に出るエラー画面を添付しておきます。 
 
 
回避策や原因がわからないので、よろしくお願いします。
すべてをダウンロード
0 件の賞賛
メッセージ9/25
6,640件の閲覧回数
もりおか様


日本ナショナルインスツルメンツ 技術部の櫻田です。
お世話になっております。


取り急ぎ、実行結果の連絡です。
ご添付頂いたVIを実行してみましたが
私の方では、エラーも無く、10秒の遅れも確認できませんでした。
実行結果の画像を添付いたします。

原因につきましては
もう少しお時間を頂いて、調べさせていただきたいと思います。

宜しくお願いいたします。
0 件の賞賛
メッセージ10/25
6,609件の閲覧回数