NI製品ディスカッション

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

MGCplusをLabviewドライバでコマンドを送受信したい

こんにちは。

さっそくですが皆様の知恵と知識をお貸しください。

 

MGCplusのLabviewドライバを使いコマンドの送受信をしたいのですが

それを司る

「Send & Receive.vi」にて

HBM公式HPにあるCommandSetに記載されているコマンドを送信したところエラーが返ってきます

そうするとどうやら「Read.vi」に不具合があるようなのですが、何が不具合を出しているのかわかりません。

 

どうかご協力お願いいたします。

0 件の賞賛
メッセージ1/18
2,624件の閲覧回数

どうやら「VISAの読み取り」部分でエラーをはいているようで

エラー内容は「タイムアウトエラー」で時間内に読み取ることができないそうです。

 

そこで遅延させるためにVISAのカウント関数を使い遅延させてやったのですがそれでも

「タイムアウトエラー」がでます。

 

以降試したエラー対策(すべて効果なし)

・送信したコマンドの終端に復帰改行文字をいれなければなない

 ┗コマンド文字列の後に「文字列連結」で「復帰改行文字」を連結

・そもそも接続設定が間違っている

 ┗NIMAXにてIDN?でWriteはエラーなしQueryとReadでタイムアウトエラー

 ┗今回はシリアル通信でボーレートは9600、パリティはnone、ストップビットは1にMGCplus側も

   設定済み

 

以上のことからコマンドの送信はできていそうで測定器であるMGCplusからの計測結果が返ってこないという感じです。

 

どうしたら計測結果が返ってくるようになるのでしょうか?

皆様のお力をお貸しください

0 件の賞賛
メッセージ2/18
2,603件の閲覧回数

設定のデータビットを書き忘れていました。

8です

なので設定自体は

9600/8/n/1となります

0 件の賞賛
メッセージ3/18
2,601件の閲覧回数

私はMGCplusを使用したことがないので、検討違いの話をするかもしれませんがご了承ください。

 

まず「コマンドの送信ができている」と結論付けるのは早いと思います。

たとえば以下のコードではデスクトップPCに組み込まれた「COM1」に変なコマンドを送っていますが、

エラーは返ってきません。当然、COM1には何も接続されていません。

Write関数は正しく機器にコマンドを送信できたか確認まではしないので、現時点ではWriteが正しくできているかわかりません。
VISA Send.png

正しくWriteできているかを確認するためには、戻り値がないコマンドを送る方法がよいと思います。

たとえば機器上のLEDを点灯させるなどのコマンドはないでしょうか?

 

そもそもMGCplusとの接続は何でしょう?TCPですか?

でしたらその接続自体は確認できているのでしょうか。

 

 

Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

GCentral
メッセージ4/18
2,592件の閲覧回数

VISA書き込み関数に何らかのコマンドと終端文字を入れているのかと思うのですが、文字列定数(もしくは制御器)を右クリックすると、表示形式は「標準」になっていますか?あるいは「¥マーク」ですか?

もし標準になっているのであれば¥マーク表示にしてみてください。おそらく終端文字の間違いが原因と思われます。

よくあるのは、標準で「*IDN?\n」と記述していて、実際にシリアル通信で送信されるコマンドが「*IDN?\\n」になってしまい終端文字を正しく機器が認識できないということです。

メッセージ5/18
2,579件の閲覧回数

助言ありがとうございます!

 

正しくWriteできているかを確認するためには、戻り値がないコマンドを送る方法がよいと思います。

たとえば機器上のLEDを点灯させるなどのコマンドはないでしょうか?

実際にMGCplusに変化があるようなコマンドを送って確認してみるということですね!

実際にMGCplus側のIPアドレスを変えるようにコマンドを投げてみたところ

IPアドレスは変わっていなかったのでEmboar様のおっしゃっているとおりそもそも「コマンドを送信できていない」という状況のようです・・・!

 

そもそもMGCplusとの接続は何でしょう?TCPですか?

シリアル通信(RS232)で制御しようとしています。

 

でしたらその接続自体は確認できているのでしょうか。

LabviewについているNiMAXにて接続を確認しています

もしかするとこれがそもそも接続できていると思い込んでいるだけで

実際のところ接続できていないのかもしれません・・・

 

 

 

 

 

 

0 件の賞賛
メッセージ6/18
2,569件の閲覧回数

助言ありがとうございます!

pipipi0405様がおっしゃっている「*IDN?」というものが恥ずかしいながら私がよくわかっていないのですが

MGCplusのドライバサンプルでは画像のようにID Query.viにて「*IDN?」が標準で送られていそうです。

またそのあとにSend&Receive.viにてコマンドを送った後、改行復帰文字列が追加されてMGCplusに送られているようなのでpipipi0405様がおっしゃっている「*IDN?//n」になっているというのは考えにくそうです・・・。

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

NI MAXで認識されているのはPCのCOMポートであって、その先につながっている機器を認識しているわけではありません。

ID Query.viは何か返答がありますか?IDNはSCPIコマンドのひとつで、機器の名前を返してくれるコマンドです。

まずはLabVIEWでテストする前に、NI MAXのCOMポートを選択し、VISAテストパネルを開いてコマンドをいろいろとテストしてみればいかがでしょうか。

メッセージ8/18
2,559件の閲覧回数

再度助言ありがとうございます!

NiMAXのVISAテストパネルでIDN?をQueryしてみたところ

画像のようにタイムアウトエラーが返ってきました。

これはpipipi0405様が仰っているようにやはりそもそも接続ができていない状況ということになっていそうです・・・

 

それと気になったのが画像にも出ている

「Data block to send to device」

という文字です。

これも気になっていまして、計測器側からPCの操作を許可する設定があるのですがそれは許可の状態になっているのにもかかわらずこの文字が出てくることが気に掛かっています。

単にデータが送れないからこの文字が出てきている可能性もあるのかもしれませんが・・・

 

もう一つ気になっているのが、現在私はWindows7でMGCplusを制御してようとしているのですが、Labview側が提供しているMGCplus側のドライバーで対応しているデータを見るとWindowsXPまでしか対応していなさそうなのですがこれもやはり接続ができていなさそうな要因の一つになるのでしょうか?

すべてをダウンロード
0 件の賞賛
メッセージ9/18
2,553件の閲覧回数

「Data block to send to device」という文字は、マウスカーソルを「*IDN?」を入力する欄に合わせると、

自動で表示される文字です。特に気にされる必要はないと思います。

「Select or Enter Command」の制御器上でも同じ機能が実装されています。

 

ところで通信はRS-232とのことですが、変換器を使われてますか?

NI製以外の変換器を使っている場合、もしかすると相性が悪いかもしれません。

Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

GCentral
メッセージ10/18
2,547件の閲覧回数