07-26-2010 02:33 AM
学生のYoshihitoと申します。
なかなか解決の糸口が見つからないため、質問させていただきます。
現在、電圧を制御するデバイス(外部電源)を用いて任意の電圧を実験装置に印加して、実験を行っています。
LabVIEWでは電圧を印加している際に実験装置に流れる電流値を、デバイス内で電圧値に変換してからPCに取り込み、それを時間積分することで累積電荷量を求めています。
これまでは印加電圧がひとつの値だったので必要がなかったのですが、次に行う実験では異なる2つの印加電圧を指定して、任意の電荷量になったら、デバイスにパルスを出力して印加電圧のスイッチングを行う必要がでてきました。
なお、異なる2つの印加電圧値はデバイスで直接指定することができるので、指定した条件(任意の電荷量)になったらスイッチングできるようにしたいと思っています。
実験に使用している装置のことなどを出してしまって、わかりにくくなりすみません。
わからないことは「任意の条件になったら、パルスを出力する方法」です。
基本的なことだと思いますが、何卒よろしくお願いいたします。
07-28-2010 07:42 PM
Yoshihito 様
平素よりNI製品をご利用頂きまして誠に有難うございます。
日本ナショナルインスツルメンツ技術部の伊藤と申します。
興味深いご質問をご投稿頂き誠に有難うございます。
パルスを出力する方法についてですが、データ集録等を行う上で必要なドライバDAQmxをインストール
すると、ご使用頂いているLabVIEWのサンプルファインダにサンプルが追加されます。
サンプルファインダを立ち上げるには、LabVIEWを起動し、Help>サンプルを検索を選択します。
パルスを出力するサンプルは、ハードウェア入力と出力>DAQmx>デジタルパルスを生成する のフォルダ内にございます。
スクリーンショットをご用意致しましたので添付致します。
また、ある条件になったら出力する、ということですがパルスを出力する方法につきまして、
条件の部分によってプログラム内容が少々ことなります。具体的には、Whileループ内で何か処理を行っていて、
あるパラメータの値が設定した閾値を超えたら、ということであればケースストラクチャを使用して、ソフトウェアトリガ
としてパルス生成を開始する方法があります。
また、ある条件によって何かトリガ信号が立ち(例えばエンコーダを回す)、その信号をトリガとしてパルス生成を開始する
という方法もございます。状況、ご希望、そしてお手持ちのDAQデバイスによって方法は多少ことなるかと思いますので、
サンプルをご参考にして頂き、ご検討頂けますようお願い致します。
上記に関しまして何かご不明点等ございましたら、お気軽にご連絡下さいますようよろしくお願い致します。
今後とも何卒よろしくお願い申し上げます。
日本ナショナルインスツルメンツ株式会社
技術部 伊藤
08-09-2010 09:50 PM
h.ito様、お礼が遅くなりすみません。
アドバイスありがとうございました。
その後、サンプル検索をして「デジタルパルスを生成する」のフォルダ内のサンプルを確認しました。
いくつかのサンプルに手を加えてみたのですが、思ったように動作させることができず、またどのサンプルを用いればよいのかもはっきり分かりませんでした。
そのような状況ですので、まずは簡単のため条件などをつけずに、パルスを生成して、デバイスでパルスの生成を確認するところから始めたいと思っています。
わからないことが多く、上手く説明できずすみませんが、また教えていただけると幸いです。
よろしくお願いいたします。
08-10-2010 03:09 AM
Yoshihito 様
お忙しい中、ご連絡頂きまして誠にありがとうございました。
>まずは簡単のため条件などをつけずに、パルスを生成して、デバイスでパルスの生成を確認するところから始めたいと思っています。
承知いたしました。おそらく、添付させて頂いたプログラム「Gen Dig Pulse Train-Finite.vi」が最も始めやすいかと思います。
フロントパネル上で、リソース(例:Dev1/ctr0)を選択してプログラムを実行します。DevというのはDeviceの略で、Measurement&AutomationExplore(MAX)が、ご使用頂いてるPC上で正常に認識しているDAQデバイスに対しデバイス番号を割り振ります。ctrはCounterの略で、DAQデバイスに搭載されているカウンタのことになります。MシリーズのDAQデバイスであれば一般的に2つのカウンタが搭載されております。
また何かございましたら、どうぞお気軽にご連絡頂けますようお願い致します。
今後とも何卒よろしくお願い申し上げます。
日本ナショナルインスツルメンツ株式会社
技術部 伊藤
08-16-2010 02:26 AM
回答ありがとうございました。
お礼が遅くなりました。
DAQデバイスに搭載されているカウンタというのが、どこにあたるのかよくわかりませんでした。
使用しているDAQデバイスが「USB-6221」なので、カタログによればあると思うのですが。
自分が誤解しているかもしれないので確認させていただきたいのですが、例えば「ctr0」とは配線するDAQデバイス内の端子のことでしょうか。
たびたびすみませんが、回答していただけると幸いです。
よろしくお願いいたします。
08-17-2010 04:17 AM
Yoshihito 様
お忙しい中、ご連絡頂きまして誠にありがとうございます。
ご使用いただいている「USB-6221」にはカウンタ0とカウンタ1の2つのカウンタが搭載されています。
「ctr0」とは、このカウンタ0というリソースになります。カウンタを使用してできる一般的なタスクとしては、エッジカウント・周波数測定・パルス生成が挙げられます。
「Gen Dig Pulse Train-Finite.vi」にて、フロントパネルのリソースでDev1/ctr0を選択すると、カウンタ0のOutの端子からパルスが生成されます。
カウンタ0のOutの端子は、ピン番号89になります(添付画像参照)。また何かございましたら、どうぞお気軽にご連絡頂けますようお願い致します。
日本ナショナルインスツルメンツ株式会社
技術部 伊藤
08-18-2010 01:45 AM
h.ito様、ご丁寧な回答ありがとうございました。
すぐにパルスの生成を確認することができました。
また、デバイスのスイッチングができることも確認できました。
次に、条件をつけていきたいと思うのですが、
閾値が2つある場合は、類似の処理を行う場合でもWhileループは2つ必要なのでしょうか。
2つの閾値を閾値①、閾値②とすると
「閾値①に達したところで、パルスを生成してスイッチング→次の閾値②に達したら、パルスを生成して再びスイッチング・・・」
となるように、繰り返し実行できるようなプログラムを組みたいと考えています。
Whileループは添付した画像のようになっており、赤丸で囲んだ部分に閾値を設けたいと思っています。
また、フォーミュラの内容が2種類の動作でそれぞれ異なるため、Whileループが2つ必要なのではないかと考えています。
上手く説明できずすみませんが、何かヒントをいただけると幸いです。
よろしくお願いいたします。
08-26-2010 12:06 AM
「パルスを出力する方法について」は解決しましたので、以後のことはまた別途質問させていただきます。
質問項目の範疇を超えてしまいすみません・・・。
08-27-2010 01:17 AM
Yoshihito 様
お忙しい中、ご投稿頂きまして誠にありがとうございました。
>質問項目の範疇を超えてしまいすみません・・・。
お役に立てて光栄です、誠に勝手ながら大変嬉しく思っております。
出来る限りのお力添えをさせて頂きたい所存ですので、何かございましたら
どうぞお気軽にご連絡頂けますようお願い申し上げます。
日本ナショナルインスツルメンツ株式会社
技術部 伊藤