08-22-2023 04:42 AM
LabVIEW初心者です。真空計をPCと接続してLabVIEWで制御しようと思いプログラムを作成していたのですが読み込みがうまくいかずここに相談してみることにしました。
目的・状況
真空計の値をLabVIEWで読み込み、表示するというプログラムを作成したいと思っています。
NI-MAXでは真空計の値を読み込むことはできました。添付するLabVIEWのプログラムを動かすと「Possible reason(s): VISA: (Hex 0xBFFF0015) Timeout expired before operation completed.」というエラーメッセージが表示されます。
VISAリソースネームや各定数の値はいろいろ変更したりはしてみましたが解決はしませんでした。
使用しているツール・デバイス
真空計m-601gc(ANELVEA)
LabVIEW2022 Community Editor
ドライバー USB Serial Port (COM3)
PCと真空計をつなげる際にbuffaloのBSUSR06のシリアルコードを用いています。
その他
真空計のマニュアルは以下です、検索していただけると出てくると思います。
M-601GC 1CHコントローラ 取扱説明書 (u-tokyo.ac.jp)
質問
このエラーの解消方法・発生理由(NI-MAXで読み込めてLabVIEW上で読み込めない理由など)を教えていただけると幸いです。
解決済! 解決策の投稿を見る。
08-22-2023 08:23 AM
VISAテストパネルでもタイムアウトエラーが出ていますね。これは読み取っている文字を見ると「\r」(0xD=13)が終端文字になっていることが分かります。一方でVISAシリアルポート構成関数はデフォルトで\n(=0xA=10)が終端文字となっているため、受信文字列の終端を検出できずにタイムアウトしているのかな、と思いました。
ただ、VISAテストパネルで受信している文字は12文字あるので、8文字指定で読み取った場合は読み取れるのでは?という気もしているので、ちょっと状況が分かりかねています。
ひとまず終端文字の部分で右クリックし、作成→定数として、「13」を設定して状況が変わるか試して頂けますか?
よろしくお願いいたします。
08-23-2023 01:25 AM
返信ありがとうございます。テストパネル上でタイムアウトエラーが起きているのは確かに気になってはいました。先ほど、終端文字数の設定をして実行してみましたがやはり同じエラーが生じてしまいました。以下のように定数をつけて実行してみました、どうぞよろしくお願い致します。
08-23-2023 05:13 AM
エラーメッセージのスクリーンショット、ならびにフロントパネルのスクリーンショットも頂けますでしょうか。
フロントパネルの文字列表示器は、右クリックから「¥コード表示」として制御文字も見れる状態にしてください。
VISA Test Panelで以下の様に終端文字を設定してコマンド書き込み・読み取りを実行したスクリーンショットも頂けると幸いです。
ちなみにVISAシリアルポート構成関数は内部にVISAオープン関数を含んでいるので、先にVISAオープンを置く必要がありません。
LabVIEWのサンプルプログラム(ヘルプ→サンプルを検索→ハードウェア入力と出力→シリアル→簡易シリアル」が参考になります。
ご参考まで。
08-25-2023 12:20 AM
返信遅れてしまい申し訳ございません。
上から1枚目がフロントパネルの画像(¥コード表示の設定はしました)。制御文字のすぐ横に表示器を付けたら「$PRD¥¥r¥¥n」と表示されてたのが少し気になりました。
2枚目がずっと表示されているエラー文です。
3・4枚目がテストパネルになります。
ちなみにVISAシリアルポート構成関数は内部にVISAオープン関数を含んでいるので、先にVISAオープンを置く必要がありません。
LabVIEWのサンプルプログラム(ヘルプ→サンプルを検索→ハードウェア入力と出力→シリアル→簡易シリアル」が参考になります。
ご参考まで。
>>>ご指摘ありがとうございます。今は混乱を避けるためあえて直してはいませんが次回からは参考にさせていただきます。
どうぞよろしくお願いいたします。
08-25-2023 04:27 AM
なるほど、コマンドの終端文字(\r)が計測器に認識されていない状況ですね。コマンド文字列定数の上で右クリックして「\コード表示」としたうえで、VISAテストパネルと同様に「\r\n」となるように修正してみてください。
(返り値の終端を見ると、\rだけで良い気がします。マニュアルにも「EOM … CR文字(0x0D)とありますね。)
これで解決するのでは、と思っているのですがVISAテストパネルが依然としてタイムアウトエラーになっているのですね。いざとなればサンプルのように「Byte at Port」プロパティでポートに存在している文字数だけ読み取るようにすればタイムアウトは出なくなるので、ひとまず上記送信コマンドをお試しください。
08-25-2023 04:28 AM
VISA Test Panelの、Enable Termination Characterのチェックを入れてみてください。
08-27-2023 12:03 AM
こんにちは、先ほど試してみたところ無事エラーがなくなり真空計を読むことができました。これまで丁寧でわかりやすい解答、ありがとうございました。とても勉強になりました、これからもLabVIEWなどより学ぶよう努めていきます。これで大学の研究も進みそうです、改めて誠にありがとうございました。
08-28-2023 01:46 AM
無事読み取れたようで何よりです。実際に通信できるようになるといろいろとできるようになるかと思います。LabVIEWプログラミングはNIさんのトレーニングやYoutubeでいろいろと学べるはずです。