08-28-2018 12:16 AM
こんにちは。
さっそくですが皆様の知恵と知識をお貸しください。
MGCplusのLabviewドライバを使いコマンドの送受信をしたいのですが
それを司る
「Send & Receive.vi」にて
HBM公式HPにあるCommandSetに記載されているコマンドを送信したところエラーが返ってきます
そうするとどうやら「Read.vi」に不具合があるようなのですが、何が不具合を出しているのかわかりません。
どうかご協力お願いいたします。
08-28-2018 09:46 PM
どうやら「VISAの読み取り」部分でエラーをはいているようで
エラー内容は「タイムアウトエラー」で時間内に読み取ることができないそうです。
そこで遅延させるためにVISAのカウント関数を使い遅延させてやったのですがそれでも
「タイムアウトエラー」がでます。
以降試したエラー対策(すべて効果なし)
・送信したコマンドの終端に復帰改行文字をいれなければなない
┗コマンド文字列の後に「文字列連結」で「復帰改行文字」を連結
・そもそも接続設定が間違っている
┗NIMAXにてIDN?でWriteはエラーなしQueryとReadでタイムアウトエラー
┗今回はシリアル通信でボーレートは9600、パリティはnone、ストップビットは1にMGCplus側も
設定済み
以上のことからコマンドの送信はできていそうで測定器であるMGCplusからの計測結果が返ってこないという感じです。
どうしたら計測結果が返ってくるようになるのでしょうか?
皆様のお力をお貸しください
08-28-2018 09:48 PM
設定のデータビットを書き忘れていました。
8です
なので設定自体は
9600/8/n/1となります
08-28-2018 11:00 PM
私はMGCplusを使用したことがないので、検討違いの話をするかもしれませんがご了承ください。
まず「コマンドの送信ができている」と結論付けるのは早いと思います。
たとえば以下のコードではデスクトップPCに組み込まれた「COM1」に変なコマンドを送っていますが、
エラーは返ってきません。当然、COM1には何も接続されていません。
Write関数は正しく機器にコマンドを送信できたか確認まではしないので、現時点ではWriteが正しくできているかわかりません。
正しくWriteできているかを確認するためには、戻り値がないコマンドを送る方法がよいと思います。
たとえば機器上のLEDを点灯させるなどのコマンドはないでしょうか?
そもそもMGCplusとの接続は何でしょう?TCPですか?
でしたらその接続自体は確認できているのでしょうか。
08-28-2018 11:39 PM
VISA書き込み関数に何らかのコマンドと終端文字を入れているのかと思うのですが、文字列定数(もしくは制御器)を右クリックすると、表示形式は「標準」になっていますか?あるいは「¥マーク」ですか?
もし標準になっているのであれば¥マーク表示にしてみてください。おそらく終端文字の間違いが原因と思われます。
よくあるのは、標準で「*IDN?\n」と記述していて、実際にシリアル通信で送信されるコマンドが「*IDN?\\n」になってしまい終端文字を正しく機器が認識できないということです。
08-29-2018 02:27 AM
助言ありがとうございます!
正しくWriteできているかを確認するためには、戻り値がないコマンドを送る方法がよいと思います。
たとえば機器上のLEDを点灯させるなどのコマンドはないでしょうか?
実際にMGCplusに変化があるようなコマンドを送って確認してみるということですね!
実際にMGCplus側のIPアドレスを変えるようにコマンドを投げてみたところ
IPアドレスは変わっていなかったのでEmboar様のおっしゃっているとおりそもそも「コマンドを送信できていない」という状況のようです・・・!
そもそもMGCplusとの接続は何でしょう?TCPですか?
シリアル通信(RS232)で制御しようとしています。
でしたらその接続自体は確認できているのでしょうか。
LabviewについているNiMAXにて接続を確認しています
もしかするとこれがそもそも接続できていると思い込んでいるだけで
実際のところ接続できていないのかもしれません・・・
08-29-2018 02:45 AM
助言ありがとうございます!
pipipi0405様がおっしゃっている「*IDN?」というものが恥ずかしいながら私がよくわかっていないのですが
MGCplusのドライバサンプルでは画像のようにID Query.viにて「*IDN?」が標準で送られていそうです。
またそのあとにSend&Receive.viにてコマンドを送った後、改行復帰文字列が追加されてMGCplusに送られているようなのでpipipi0405様がおっしゃっている「*IDN?//n」になっているというのは考えにくそうです・・・。
08-29-2018 06:14 AM
NI MAXで認識されているのはPCのCOMポートであって、その先につながっている機器を認識しているわけではありません。
ID Query.viは何か返答がありますか?IDNはSCPIコマンドのひとつで、機器の名前を返してくれるコマンドです。
まずはLabVIEWでテストする前に、NI MAXのCOMポートを選択し、VISAテストパネルを開いてコマンドをいろいろとテストしてみればいかがでしょうか。
08-29-2018 06:35 PM
再度助言ありがとうございます!
NiMAXのVISAテストパネルでIDN?をQueryしてみたところ
画像のようにタイムアウトエラーが返ってきました。
これはpipipi0405様が仰っているようにやはりそもそも接続ができていない状況ということになっていそうです・・・
それと気になったのが画像にも出ている
「Data block to send to device」
という文字です。
これも気になっていまして、計測器側からPCの操作を許可する設定があるのですがそれは許可の状態になっているのにもかかわらずこの文字が出てくることが気に掛かっています。
単にデータが送れないからこの文字が出てきている可能性もあるのかもしれませんが・・・
もう一つ気になっているのが、現在私はWindows7でMGCplusを制御してようとしているのですが、Labview側が提供しているMGCplus側のドライバーで対応しているデータを見るとWindowsXPまでしか対応していなさそうなのですがこれもやはり接続ができていなさそうな要因の一つになるのでしょうか?
08-29-2018 07:28 PM
「Data block to send to device」という文字は、マウスカーソルを「*IDN?」を入力する欄に合わせると、
自動で表示される文字です。特に気にされる必要はないと思います。
「Select or Enter Command」の制御器上でも同じ機能が実装されています。
ところで通信はRS-232とのことですが、変換器を使われてますか?
NI製以外の変換器を使っている場合、もしかすると相性が悪いかもしれません。