07-05-2013 12:51 AM
初めて質問させていただきます。
当方、LabVIEW2012においてPXIe-6363を介しましてアナログデータ収録システムの開発を始めたところです。
現在、DAQmxタイミングの設定でPFI0に入力される外部クロック信号に同期して入力される電圧信号の入力まで確認できております。
現時点では、LabVIEWの開始ボタン、停止ボタンでデータ収録を確認しているところではございますが、今後はDAQmxタイミングの
デジタル入力設定でPFI1に開始トリガ信号、PFI2に停止トリガ信号を各々追加して、データ収録システムの自動化を考えております。
そこで、まずはDAQアシスタントを使用して停止トリガを設定したのですが、このアシスタントの出力のデータ型式が「1-D配列」で、
その接続先が現在OR機能(ブール値)となっており、データ形式が合わないという理由でうまくプログラムができていません。
DAQアシスタントが外部からの停止トリガを認識する、もしくは手動停止ボタンが押下されたとき、の何れかが成立したときにデータ収録
のWhileループを停止させるという動きをするのが上記の「OR機能」の役割です。
質問は、現在不具合の出ている「1-D配列をブール値に変換する手法」はあるのでしょうか?
また、「上記のように今回、外部トリガを開始、停止、集録同期クロックと3種類使用するわけですが、何か適したプログラミングの
コツみたいなもがありますでしょうか?」
の2点です。お手数をおかけしますが、どうかアドバイスください。よろしくお願いします。
解決済! 解決策の投稿を見る。
07-12-2013 12:48 AM
Sueon 様
平素より弊社製品をご利用頂きまして、誠にありがとうございます。
ご質問にお答えする上で、Sueon様がどのようなVIをご構築なのかを確認できないかと考えております。
ブロックダイアグラムのスクリーンショットを拝見できないでしょうか。
なお、DAQアシスタントの出力である1D配列がどのようなものかわかりかねますので、ご質問に対する的確な回答ではございませんが、1D配列がブールの配列であれば、「配列要素のOR」関数や「配列要素のAND」関数を使用すれば、ブール配列から単一のブール値を取得できます。
日本NI 早田
07-12-2013 01:17 AM
日本NI 早田様
この度は回答ありがとうございます。
参考までにVIの画像を添付しました。
現状は、前述のDAQアシスタントを使うよりはDAQmx関数を用いたほうが将来的に
より拡張性があるのではないか?と考えて、DAQmxの勉強中です。
Sueon
07-15-2013 07:29 PM
Sueon 様
スクリーンショットを拝見しました。
DAQアシスタントを使用して、PFI1に入力されるデジタル波形 (今回の場合、停止トリガとして使用されている波形でしょうか) の集録をされているのですね。
さて、「指標配列」関数の出力は「デジタル波形」データタイプとなっています。
これを最終的にブール値に変換するには、「デジタルからブール配列に変換」関数を使用して、デジタル波形データタイプのデータをブール配列に変換し、ブール配列から所望の形で単一のブール値を取得するのがよろしいかと思います。
ちなみに、DAQmxには一時停止トリガという機能もございます。
これは、例えば、トリガ波形 (デジタル) がHIGHの場合のみデータ集録を行い、LOWの場合は集録を行わない、といった動作をするものです。
LabVIEWのDAQmxのサンプルVIに「電圧 (イベント付き) - 連続入力 (もしくはVoltage (with Events) - Continuous Input)」というサンプルがございます。
データ集録のイベントを登録してイベントストラクチャで使用したりと、少々複雑なVIとなっておりますが、ご興味がございましたらご覧ください。
日本NI 早田
07-16-2013 02:42 AM
n.hayata様
この度はお世話になっております。
当方、PFI0にSTART, PFI1にSTOP, PFI2にサンプルクロック(4kHz)の外部信号を与え、
PXIe-6363のアナログラインx16chに入力する電圧を、サンプルクロックに同期して
自動で収録するシステムの構築を目指しています。
現在の課題は、サンプルクロックに同期して収録をスタートすることはできてもPFI1の信号で
停止させることができないというものです。
ご紹介いただいたサンプルプログラムを拝見しました。この場合、収録中の外部信号は
常にHIGHでなければならないため、当方のシステムには合いませんでした。
DAQアシスタントにせよ、DAQmx仮想チャンネルにせよ、デジタル入力で選択できる
信号ラインにPFIのラインが出現しないのですが、そもそもデジタル入力の選択肢に
PFIはないのでしょうか?
07-17-2013 07:34 AM
Sueon 様
ご紹介したサンプルプログラムは、Sueon様のご要件には適さないものだったのですね。
失礼しました。
さて、ご質問に関してですが、Sueon様の仰る通り、デジタル入力ラインとしてPFIはご選択いただけません。
デジタル入力を行うには、デジタル入出力用のライン端子 (P0.0, P0.1, ...) をご選択いただく必要があります。
日本NI 早田
07-18-2013 12:17 AM
n.hayata様
毎度の回答、どうも有り難うございます。
いろいろと頂いたコメントや過去の事例を見て自分の中で誤解をしていた箇所があるようでした。
失礼しました。
1つ目は、デジタル入力はP0.0...を使用するという点。
DAQmxのTiming.viでは、PFIに入力する基準クロック信号を、そしてTrigger.viでは開始トリガにPFIを
参照するので、てっきりその他の外部信号もPFIだと思い込んでしまったわけです。
マニュアルを見るとスタティックデジタル入力とありますが、通常のデジタル入力との違いは何でしょうか?
2つ目は、「停止」という機能についてです。
現在自分が想定している機能は、「停止」ではなく「一時停止」に該当するものだとわかりました。
プログラム開始とともに100μs幅のスタート信号を待機し、スタート信号受信と同時に基準クロックに
同期してアナログ信号の集録を開始、そして再び異なるCHの100μs幅のストップ信号を受信とともに
集録を停止して、再びスタート信号の入力を待機する・・・
つまり、プログラム自体は停止しているわけではなく、単に「集録」という機能が開始と停止を繰り返して
いることになるので「一時停止」が正しい認識だとわかりました。
そこで、上記を踏まえまして今一度ご紹介頂いたサンプルプログラムを拝見したところ、参照する
信号がHIGHもしくはLOWの間だけ一時停止するという動きをしていました。
今回、上記にも示したとおり、当方のハードウェアは、開始と停止が異なるCHの100μs幅のパルスで
受信いたします。したがって、RS-FFもしくはラッチ機能のような仕組みを配して、データ集録期間を示
してやる必要があると考えました。
現在考えたサンプルのVIを今回添付しました。データ集録期間を示すブール値とアナログ集録を行うWhile文
の連携ができればいいと考えたのですが、ケースストラクチャ等を使ってもうまく機能させることはできません
でした。
両者の連携についてご教授いただければ幸いです。
07-21-2013 10:08 PM
Sueon 様
ご質問に回答します。
まず、「スタティックデジタル入力」と「通常のデジタル入力」の違いとのことですが、以下の話が回答になるかと思います。
PXIe-6363には、デジタル入出力端子として、スタティックデジタル入出力 (DIO) 端子とPFI端子との2種類が用意されています。
スタティックDIO端子は、TTL信号やCMOS信号などのデジタル信号の入出力を行う端子であり、「通常のデジタル入出力」といった表現に最もふさわしい働きをする端子かと思われます。
一方、PFI端子は、下記マニュアルの8-1ページにも記載されておりますとおり、タイミング信号の入出力端子やカウンタ入出力として機能させるほか、スタティックDIO端子として機能させることもできる端子となっています。
%----------------------------------------------------------%
Xシリーズ ユーザマニュアル
http://www.ni.com/pdf/manuals/370784c_0112.pdf
%----------------------------------------------------------%
ですので、トリガ信号を入力するのであれば、PFI端子に接続する必要がありますが、「DAQmx読み取り」関数で集録を行う信号であれば、スタティックDIO端子に接続することとなります。
ただし、PFI端子はスタティックDIO端子として機能させることもできますので、例えば、マニュアルのA-16ページを参考に、PXIe-6363の11ピンに接続し、デジタル入力ラインとしてP1.0をしていただいても、デジタル信号の集録が可能です。
2点目に関しては、追って回答します。
日本NI 早田
07-21-2013 11:29 PM - 編集済み 07-21-2013 11:30 PM
Sueon 様
2つ目の質問に関して回答します。
集録の一時停止を行うのであれば、前回ご紹介したサンプルが最適かと思われますが、Sueon様のお話を伺っている所では、トリガ波形の変更は難しいようですね。
さて、添付のVIを拝見しましたが、上手くいかないというのは、具体的にどのようなことが上手くいかないのでしょうか。
また、現在Sueon様がなさっている様な方法ですと、VIの構造上、トリガを検出してから集録を開始・停止するまでに数百msの遅延が生じることが予想されますが、所要のトリガ精度はどの程度を見積もっていますか。
より正確なトリガ精度が必要なのであれば、例えば、開始・停止トリガをアナログ集録と同じクロックで連続集録し、アナログ集録データとデジタル集録データの後処理を実施することで、開始トリガを検出してから停止トリガを検出するまでの時区間のアナログ集録データを切り出す、といった方法も考えられます。
例えば、開始トリガ、停止トリガが下記の様に集録された際に、アナログ集録波形のサンプルのうち、下記の "o" で示したサンプルのみを抽出し、"-"で示したサンプルを破棄するようなイメージです。
%----------------------------------------------------------%
0001110000000000 (開始トリガ)
0000000000011100 (停止トリガ)
---oooooooo----- (アナログ集録波形の各サンプルの保存/破棄)
%----------------------------------------------------------%
日本NI 早田
07-22-2013 12:22 AM
NI早田様
こんにちは。毎度のご回答どうも有り難うございます。
入力信号の取り扱いの違いについて、おかげさまで理解しました。
マニュアルA-16のピン配列は、当方以前から確認しておりましたが、
「PFI1/P1.1」という表記の意味が読み取れずにおりました。
この度のご助言により、P1.1とは、「port1/line1」からも集録ができる
ことを実機で確認しました。
従いまして、当方が開発中に使用する1)集録開始トリガ、2)集録停止
トリガ、3)集録基準クロックの3つの信号は、各々PFI0~2の端子
を使用することにしました。
入力信号仕様の件に関しましては了解しました。