LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

LabVIEW GP-IBスレーブプログラムにおける受信待ちについて

現在、LabVIEWによる、GP-IBスレーブ(コントローラ機能を持たない)プログラムを製作中ですが、分からないことがあります。
以下のURLから情報、およびサンプルを得まして、サンプルを基に、コントローラから送信されるコマンド("*idn?")を受信し、
画面に表示するプログラムを作成し、正常に表示することができました。
しかし、ひとつ問題が出てきました。
受信の際は、以下のURLの情報に従い、ステータスビットのATN(注意)がOFFで、なおかつLACS(リスナアクティブ)がONの場合に
(応答メッセージ受信パレットにより)受信するようにしてますが、("*idn?")を受信した後も、ステータスの状態が変わらないため、再び、受信(応答メッセージ受信パレット)
のところに来てしまい、タイムアウトが発生するまで待たされてしまいます。
受信してもATNとLACSの状態は変わらないものなのでしょうか。もし変わらないのであれば、受信で一時的にダンマリにならない、何か良い方法を教えていただけないでしょうか。
スレーブプログラムのサンプル
http://zone.ni.com/devzone/cda/epd/p/id/3374
GPIB を介したコンピュータ同士の通信
http://digital.ni.com/public.nsf/websearchj/CF5854533A7B38DD86256EC300103ED3?OpenDocument
システムコントローラとしてGPIBインタフェースを無効にする。
http://digital.ni.com/public.nsf/websearchj/FC4F4F3A7BEFCA8186256F510005D2E0
0 Kudos
Message 1 of 10
(4,859 Views)
I would like to help...

But I really don't Understand Your language..
0 Kudos
Message 2 of 10
(4,825 Views)
71100791 様

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


現在LabVIEWで作成してるスレーブプログラムの詳細が分からないため
十分な回答が出来かねますことをご了承願います。
よろしければ、スレーブ側のプログラムの詳細をお知らせ願います。

本件の動作につきましては
スレーブ側でデータを受信した際に、NDACのステータスをスレーブ側が変化させて
その変化をコントローラから監視してステータスを変更させるという方法が一般的かと思います。
LabVIEWよりNDACのステータスを変更させる方法につきましては現在調査中ですので
方法が分かり次第、再度、書き込みさせて頂きます。


よろしくお願い申し上げます。

日本ナショナルインスツルメンツ技術部
櫻田
0 Kudos
Message 3 of 10
(4,806 Views)
Only English................. Prabhu !!!!!!!
0 Kudos
Message 4 of 10
(4,798 Views)
櫻田様、返信ありがとうございます。
スレーブ側のプログラムの詳細ですが、LabVIEWで計測器(スペアナ)を模擬したソフトを製作します。
従来は専用のスペアナを使用していたところを、スペアナは使わずに、"LabVIEWスペアナ模擬ソフト"に置き換えます。
(当然、従来のスペアナの機能を全て装備するわけではなく、必要最低限の機能だけをLabVIEWで作りこみます。)
上位CPU(コントローラ)の仕様は今回変更しませんので、上位CPUからはスペアナに送るコマンドと同じもの
が送られてきます。LabVIEWソフトは、このコマンドを受信、翻訳し、対応する処理(レンジを変更する等)を行います。
また、従来、上位のCPUは、波形のアベレージングが終了するまで待つ処理を、SRQを使用して行ってますので
LabVIEWソフトは、SRQを発行したり、また、測定値の問い合わせコマンド(末尾に"?"が付くコマンド)が送られてきた時は、
測定値を返信することができなければなりません。
それから、櫻田様が書かれているNDACとは何でしょうか?
すみませんが何か分かりましたら回答のほうをお願いいたします。
0 Kudos
Message 5 of 10
(4,779 Views)
NDACはGPIBの信号線の一つで、データ未受信を表します。
受信側がDIOラインに乗っているデータをまだ読んでいないことを示すために、受信側によってアサートされます。
ですので、今回の場合、LabVIEW側から受信したかどうかによって、NDAC信号線のステータスを変更すれば、コントローラ側がこれを判断できるのだと考えております。

LabVIEW側からの信号線の直接的な制御方法につきましては、もう少し、お時間頂ければと思います。


日本ナショナルインスツルメンツ
技術部 櫻田
0 Kudos
Message 6 of 10
(4,746 Views)
櫻田様、返信ありがとうございます。
NDACにつきましては、スレーブ側からON/OFFを行う、ハンドシェイク用の信号であることを理解しました。
NDAC以外にも、NDAC同様にスレーブからON/OFFを行うNRFDや、コントローラからON/OFFを行う、DAVがあることも理解しました。
本日、LabVIEWでヘルプを見ながらいろいろ試みましたが、やはりNDACやNRFDを制御する方法やDAVを参照する方法が分からず、行き詰まっております。
お忙しいところ申し訳ございませんが、早急の回答をお願い申し上げます。
0 Kudos
Message 7 of 10
(4,738 Views)

以下の、"GPIB を介したコンピュータ同士の通信"を参考にして、LACSがONで、ATNがONになるのをトリガにして受信することができましたが、

受信後も、LACSがONで、ATN がONのままのため、受信データがもう無いのに、再び受信関数のところが実行されてしまいます。

http://digital.ni.com/public.nsf/websearchj/CF5854533A7B38DD86256EC300103ED3?OpenDocument

LACSやATNは、コントローラ側で制御するものと把握しておりますが、どのようにすれば、コントローラ側がLACSをOFFにしてくれるものなのでしょうか。

0 Kudos
Message 8 of 10
(4,606 Views)
71100791 様

日本ナショナルインスツルメンツ技術部の櫻田です。
連絡が遅れまして、大変に失礼いたしました。

調査の結果をご報告させて頂きます。
現在ご使用頂いておりますドライバがNI-488.2の場合には、NDAC等のラインの状態をハードウェア的に直接制御することは出来ません。
そのため、コントローラ側にLACSラインの変更を要求することも出来ないことになります。
非コントローラとしてのデバイス使用のためには、NI Deviceというソフトが必要になります。
しかし、現在、LabVIEWにてご所望の動作に近いプログラムを既に作成されておりますので
おそらく、上記のNI Deviceへの変更よりも、コードの変更の方が工数が節約できるかと思います。

コードの変更点としましては、現在はLACSがONの時に受信処理を行う構成になっておりますが
LACSがOFFからONに「変化」した時に受信処理を行う構成はいかがでしょうか。


よろしくお願い申し上げます。

日本ナショナルインスツルメンツ技術部
櫻田
0 Kudos
Message 9 of 10
(4,579 Views)

回答ありがとうございます。

まず最初に上記のATNがONと書きましたのはOFFの誤りでした。

それからLACSの件は、上位のコントローラ側で、コマンドを送信のたびにLACSをOFFにすることにより、一応繰り返し受信できるようになりました。

LACSがOFFからONになるのをトリガにすることも一案として了承いたしました。

どうもありがとうございました。

0 Kudos
Message 10 of 10
(4,572 Views)