07-19-2011 11:44 PM
Labviewを使い始めて2週間の初心者です
現在、分光器 SOLAR TII MS3504I をLabviewで制御(スリット、ミラー等)しようと思っています。
インターフェイスはRS232Cで、現在分光器の制御は付属ドライバのDLLファイルから制御ウィンドウを呼び出してくる形となっているのですが、これをLabviewでの制御にすることは可能なのでしょうか?
また、Labviewでのプログラムはどのようなものになるのでしょうか?
よろしくお願いします
07-25-2011 03:51 AM
キットカット様
平素より、NI 製品をご利用頂きまして誠にありがとうございます。
日本ナショナルインスツルメンツ技術部のワカスと申します。
分光器 SOLAR TIIをLabviewでどのように制御されますでしょうか。
LabVIEWで「ライブラリ関数呼び出しノード」関数を用いて、DLLファイルを読み取り、実行することができますので、こちらをご利用頂ければ、以前と同様にLabVIEWでも分光器を制御することができると思います。
LabVIEWでDLLファイルの呼び出し方法について下記のリンクを参照ください。
Win32ダイナミックリンクライブラリ(DLL)の作成とLabVIEWからの呼び出し:
http://zone.ni.com/devzone/cda/tut/p/id/12339
なお、LabVIEWは、グラフィカルプログラミングで、アイコンとワイヤを使用するフローチャートに似た直感的なインタフェースになっております。多数のハードウェアデバイスとの統合が可能で、高度な解析やデータの可視化が行えるライブラリも数多く内蔵されており、その全てを使ってVIを作成することができます。
LabVIEWの詳細について弊社の下記リンクをご参考して頂ければと思います。
http://www.ni.com/labview/whatis/ja/
また、LabVIEWツールメニューのヘルプから「サンプルを検索」をクリックするとNIサンプルファインダが開きます。「参照」タブで「基本機能」にあるサンプルプログラムが用意されていますので、是非こちらをご参照して頂ければ、と思います。
以上、宜しくお願い致します。
09-02-2011 02:32 AM
返信ありがとうございます
ワカス様のおっしゃるとおり「ライブラリ関数呼び出しノード」 関数を用いたところ、いくつかうまく実行することができました。
しかしこの方法で実行させたところ、いくつかのライブラリ関数呼び出しノードでエラー 1097 と出てしまい、現在原因がわからない状態です。
具体的には添付いたします分光器のマニュアルに記載されている ShowWindowDevice 、 GetWaveLength 、 SetSlitWidth 等の部分になります。
もし陥りやすい部分等あればご教授していただけると助かります
09-02-2011 04:20 AM
キットカット様
日本ナショナルインスツルメンツ技術部のワカスと申します。
ご連絡頂きましてありがとうございます。
この問題はご使用されているDLLに依存している可能性がございます。
こちらのエラー(1097)は読み込まれるDLLが使用中のメモリを被害させたことを意味しております。
現在ご使用されているDLLの呼び出し設定をお確かめいただけますでしょうか。
特に,関数プロトタイプ,変数のデータタイプがご目的のものであるかどうかお確かめくださいませ。
以上、宜しくお願い致します。
09-04-2011 10:55 PM
ワカス様
返信ありがとうございます
今回DLLの呼び出しにはLabview内にある共有ライブラリのインポート機能を用いて呼び出しを行ないました。
この場合でも 関数プロトタイプ、変数データタイプ等の呼び出し設定が誤っている可能性はあるのでしょうか?
よろしくお願いします
09-05-2011 01:39 AM
キットカット様
ご連絡頂きましてありがとうございます。
仰る通り、共用ライブラリーをインポートする手法でも、DLLを呼び出すことができます。
この場合、ライブラリーをインポートされる最中、関数のコンフィグレーションという設定があります。
通常は、インポートウィザードは自動的に関数のタイプを読み込みますが、ユーザにより変更を加えることも可能です。
共用ライブラリーをご利用頂き、ライブラリーをインポートする手法は下記のリンクに記載されておりますので、ご参照頂けますでしょうか。
英語記載の資料になりますがご了承下さい。
http://zone.ni.com/devzone/cda/tut/p/id/2818
共用ライブラリーをご利用頂いて、今回正常にDLLをご利用頂けましたでしょうか、経過をお知らせ頂ければと思います。
09-05-2011 09:59 AM
ワカス様
返信頂きありがとうございます
経緯といたしましては、 まず始めに共有ライブラリのインポートを用いたのですが、① いくつかインポートできない関数があった、② インポート後、いくつか実行できずにエラーを生じる関数があった この2点の理由から、インポート機能を使用せずに「ライブラリ関数呼び出しノード」を用いてDLLを呼び出し、実行しようと考えたのですが同じエラーに行き着いてしまい現在にいたるといった状態です
やはり関数タイプ等に過ちがあると考えてよろしいのでしょうか?
よろしくお願いします
09-07-2011 02:38 AM
キットカット様
ご連絡頂きましてありがとうございます。
そうですね。ライブラリ関数呼び出しノードでご使用中のDLLの関数タイプ等には間違いがある可能性が高いです。
この場合、実行可能なDLLがあれば、実行できないDLLを見直す必要があります。
分光器側に用意されたDLLが対応するLabVIEWバージョン等は指定されておりますでしょうか、ご確認頂けますでしょうか。
以上、宜しくお願い致します。
09-08-2011 09:23 PM
ワカス様
返信ありがとうございます。
マニュアル等にLabviewのバージョンに関する記述を探したものの特に指定はありませんでした。
やはり変数データの間違いが濃厚とのことなのでそこをもう一度見直していきたいと思います。
09-20-2011 01:30 AM
ワカス様
分光器のマニュアルを読み込んだところ一部の配線にミスがあったためうまく実行できなかったようで、現在は動作可能となりました。
ありがとうございます
また一つ問題が出てきたので質問させていただきます
ある関数を実行すると動作はするのですがその後Labview自体が落ちるといったことが起こってしまいます
この原因について何かわかることはないでしょうか?
よろしくお願いいたします