NI製品ディスカッション

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

Digital - Finite Output.vi

解決済み
解決策を見る

LabVIEW初心者で、サンプルプログラム Digital - Finite Output.vi についてお聞きします。

 

環境

 - LabVIEW 13.0.1f2 (32bit)

 - PXIe-6363

 - ライン=PXI 1Slot3/port0/line7

  - サンプルクロックソース=OnboardClock

 - サンプルレート=1000 (デフォルト値)

 - トリガなし

 

質問

 サンプルの、

 フロントパネルで、「書き込むデータ」欄に配列があります。

 ブロックダイアグラムで、DAQmx Write.viにつながっている配列です。

 この配列はどのような意味があるのか教えてください。

 

状況

 配列には8個の値(1,2,4,8,16,32,64,128)があり、

 128以外の数値を変更しても、出力信号に変化がみられません。(オシロで観測)

 一方、128の数値を127以下にするとパルス列は出力されなくなり、

 128~255の間だけパルス列が出力されます。

 数値の意味についてヘルプ等探しましたがわかりませんでした。

 

添付図

 FrontPanel.png サンプルのフロントパネル

 8番目の値=128(デフォルト) デフォルトのまま実行したときの波形

 8番目の値=127(値を変更) 8番目の値だけを127に変更したときの波形

 

以上、よろしくお願いします。

すべてをダウンロード
0 件の賞賛
メッセージ1/8
5,563件の閲覧回数

質問に回答します。

 

 

Digital - Finite Output.viの中で呼び出されるDAQmx読み取り VIには、「ポート形式」でデータが渡されています。

(「デジタル1D U32 1チャンネルNサンプル」と書かれた箇所を左クリックすると、デジタル > 1チャンネル > 複数サンプル > 1D U32 (ポート形式) の順にチェックが入っていることが確認できるはずです)

この「ポート形式」は、指定された整数の値に応じて、複数のデジタルラインから信号を並列に出力するものです。

そして、PXIe-6363のポート1の場合、0から7までの8ラインで構成されていますが、これら8つのラインを用いて、整数値を2進法で表記した際の各ビットを伝送することとなります。

 

 

例えば、10進法で「200」という数値は、2新法では「11001000」と表わされますが、この2進法表記の最下位のビットから最上位のビットへ順にライン0, 1, …, 7が対応しています。

そのため、ライン3, 6, 7からは正論理、その他のラインは負論理となり、アクティブHIGHの状態だとライン3, 6, 7HIGHとなります。

0 件の賞賛
メッセージ2/8
5,516件の閲覧回数

n.hayataさん、ご回答ありがとうございました。

 

元の質問に戻りまして、お聞きしたいポイントは、配列の意味です。

FrontPanel.pngファイルの赤印に示した書き込むデータ欄の左側にBOXがあり、

ここに0をいれておくと、1,2,4,8,16,32,64,128の8個の数字が右側に表示されます。

ここに7をいれると、128の数字が一番上にきて、残りは0になります。

左側のBOXは何を意味しているのでしょう?

左側のBOXに0をいれると、右側の数字のどれが選択されるのでしょう?

 

例1

チャネル設定=Port0/line7として、左側のBOXに0をいれて実行すると、P0.7にパルスが観測できます。

そして、左側のBOXを7に変えても、P0.7にパルスが観測できます。

配列の表示が変わっても、P0.7にはパルスが出るので、配列の意味がわかりません。

 

例2

チャネル設定=Port0/line6に変更して、例1と同様のことをすると、P0.6にパルスが観測できます。

左側のBOXに7をいれ、右側の数字が128だけになったとき、P0.6にパルスが出るということです。

わたしの理解が不十分なのだと思われますが、

 「128」(十進)=「10000000」(二進)

ですので、ポート7に1が立っていて、ポート6は0になっていると思いますが、P0.6にパルスが出ます。

 

以上のような状況で、FrontPanel.pngファイルに示した配列の意味がわからずにいます。

どなたかご教示いただけますと幸いです。    以上

0 件の賞賛
メッセージ3/8
5,490件の閲覧回数

お聞きされたいのは、LabVIEWの配列制御器に関することなのですね。

 

左側のBOXには、配列の指標番号を指定して、どの要素を表示させるかを決めます。

例えば、要素が1, 2, 4, 8, 16, 32, 64, 128の配列がある場合、左側のBOX7を指定すると、指標7 (最初の要素は指標0なので、前から8番目の要素を指す) 128が、配列制御器の一番上に表示されます。

そのため、左側のBOXの値を変更しても、配列制御器に表示させる要素を変更しているだけで、配列データそのものは変化しません

詳しい内容はヘルプを確認してください。

 

配列やクラスタでデータをグループ化する - LabVIEW 2013ヘルプ - National Instruments

http://zone.ni.com/reference/ja-XX/help/371361K-0112/lvconcepts/grouping_data_with/

 

 

なお、DAQmx読み取り VIに、要素が1, 2, 4, 8, 16, 32, 64, 128の配列が入力されて、かつ、DAQmxタイミング VIのサンプル数に、例えば100が指定されている場合、VIを実行すると、1, 2, 4, 8, 16, 32, 64, 128, 1, 2, 4, … といった形で、出力するサンプルが100に至るまで繰り返し出力がなされます。

[1] P0.7が正論理となるのは128というサンプルが出力される際で、[2] P0.6が正論理となるのは64というサンプルが出力された際なのではないかと考えられます。

メッセージ4/8
5,483件の閲覧回数

n.hayataさん、早速のご回答ありがとうございました。

 

> VIを実行すると、1, 2, 4, 8, 16, 32, 64, 128, 1, 2, 4, … といった形で、出力するサンプルが100に至るまで繰り返し出力がなされます。

この一文で動作が理解できました。

ありがとうございます。

 

ところで、

配列には、8ライン分の情報が含まれているのに、

このVIでは、チャンネル設定欄に指定したラインにしかパルス出力が観測できませんでした。

8ラインすべてに出力するには、このVIを 8つコピーして並べるしかないのでしょうか?

0 件の賞賛
メッセージ5/8
5,478件の閲覧回数
解決策
トピック作成者S.A.M.が受理

ポート08つのラインすべてを指定するには、DAQmx物理チャンネル制御器に、「PXI1Slot3/port0/line0:7」のように指定してください。

上ではチャンネルの指定にコロン(:)を使用していますが、物理チャンネルを指定する際の構文の詳細に関しては下記のWebページをご確認ください。

 

DAQmx の物理チャンネル指定の構文について - National Instruments

http://digital.ni.com/public.nsf/allkb/89A915DE6A394DCD8625781B001B6ABC

0 件の賞賛
メッセージ6/8
5,469件の閲覧回数

n.hayataさん、いろいろありがとうございました。

 

ご教示くださった方法で解決できましたこと、報告いたします。

添付図は、VI画面とオシロ観測画面です。

オシロ画面は、

Ch1(黄色)=Port0/line0

Ch3(桃色)=Port0/line6

Ch4(緑色)=Port0/lilne7

です。

  1=00000001

  2=00000010

  4=00000100

  8=00001000

 16=00010000

 32=00100000

 64=01000000

128=10000000

の順に出力してます。

ちゃんとすべてのlineに出力できることが確認できました。

すべてをダウンロード
0 件の賞賛
メッセージ7/8
5,461件の閲覧回数

解決されたとのことで、安心しました。

ご報告ありがとうございます。

0 件の賞賛
メッセージ8/8
5,418件の閲覧回数