09-11-2020 12:37 AM
Labviewの自動でデータをファイルに保存するプログラム作成について質問があります。現在したファイルにあるプログラムを作成していてその内容が
位相制御器とLabviewを通信させる
PHASE 1000のようにPHASE 数字という命令をNIVISAに書き込むとその分だけ信号の位相が変化する。(1回で動かせる上限あり)
必要な回数ループさせる
というものになっています。
実際にオシロスコープで信号を確認しながらプログラムを動かしたところ問題なく作動したので後はこのプログラムに
「変化した後の信号波形のデータをエクセルの形式でファイルに保存する」というプログラムを付け足したいのですが可能かどうかもわからず困っています。調べてはみたのですがエクセル形式でファイル保存するのはファイルI/OのVIでできそうなのですがNIVISAに書き込んだ結果を信号波形のデータとして出力できるのかがわかりません。具体的に知りたいのは
PHASE 7000のような命令をして位相を動かした後の信号波形のデータを取得するにはどうすればいいのか
実際に信号を観察するのにはのちのちストリークカメラを使用する予定なのでこのプログラムでファイルを保存する工程を付けるのはあ
きらめてストリークカメラとLabviewを通信できるようにする必要があるのか
ということです。何かアドバイス等ありましたらぜひよろしくお願いします。
09-11-2020 07:02 AM
Sumi616さん、度々失礼します。
ちなみに、今回利用したオシロスコープは、USBやGPIBなどでPCにつなげたりしますでしょうか。
可能であれば、実際の波形をオシロスコープから読み取ってファイルに書き込むのが良いのかなと思っています。
1. 位相を変更
2. 特定の時間待機後にオシロスコープにコマンドを投げて、現在の波形を取得
3. 文字列で返ってくるので、整形してファイルに格納(CSVに書き込むのであれば、カンマ区切りに変換したあとに書き込むなど)
今の位相制御器が出力している波形を取得できるコマンドがあればそれでも良いのですが、多分無いのかなと思っています。
ストリークカメラからどういった信号が取れるか次第ですが、ストリークカメラに外部制御できる口があれば、LabVIEWから連携も可能かと思います。
差し支えない範囲で、それぞれの機器の型番を教えていただければ、そのあたり確認できるかもしれないです。
NIから電圧を読み取るハードウェアはたくさん出ているので、仕様に合わせたハードウェアを使ってリアルタイムで波形を集録&保存することも可能かと思います。
09-16-2020 05:24 PM
解決までお付き合いできるかわかりませんが、出来る範囲で。。
ご使用されているオシロスコープのメーカーと型番をおしえてください。
もしくは、波形データ要求コマンドを教えてください。
ターミナルソフトなどから波形データ要求コマンドを投げてASCII文字列で受信できますでしょうか?
あと以下余談。
添付のブロックダイアグラム拝見しましたが、PHASExxxを書き込んだ後VISAを閉じてからのRESETを送信しています。ふつうは閉じた後の書き込みはできないはずなんですけど。さらに言うとVISAがこのVIではオープンされていない。どこか別のところでオープンされているから動いているように見えると思いますが、ふつうこれでは動かないです(^^;)
09-16-2020 09:27 PM
返信が遅くなってしまい申し訳ありません。
オシロスコープはTektronixのMDO34モデルでこちらでドライバー検索で測定するためのサンプルプログラムを入手しました。まだプログラムの全容の理解が進んでいないのですが、いま頑張って理解し実際に試運転しようとしているところです。
Candoxの位相制御器(動かしたいもの)は位相やIPアドレスを変化させる命令コマンドはあるのですが波形データを取得できるようなコマンドはないので位相制御器を動かすプログラムと結果のデータをファイルに保存するプログラムは別々に作成していこうかと考えています。
余談の部分なのですが、添削ありがとうございます。
この制御器には厄介な部分があって、例えばPHASE 100(ps)の命令コマンドを送ると信号波形の位相が100ps遅れます。ここからさらに位相を動かすには1回 RESETという命令コマンドで今信号波形がいる位置を原点と認識させるという工程を挟まないといけないのです。つまり見かけ上位相を連続的に動かすには
PHASE 100→RESET→PHASE 100→RESET→PHASE 100→RESET
と尺取虫のような形式をとらないといけないのです。実際CandoxさんのプログラムでもPHASE 100のコマンドを何回送っても最初の一回以外は位相は変わりません。
自分ではLabviewで連続的に位相を動かしたかったのでPHASEのVISA書き込みとRESETのVISA書き込みをループさせているつもりなのですがRESETのVISA書き込みの位置が違うとしたらどこが適切なのでしょうか?
オシロスコープ上では遅延量を100ps、遅延回数を10回にしてプログラムを実行すると1ns位相が動いていたのを確認したので会ているのかなあと勘違いしてしまいました。
09-16-2020 10:53 PM
Sumi616 さん、
オシロもサンプルがあるということなので、それぞれ単体でテストをして、必要であれば全体をあとでマージするのが良いかもですね。
条件変更(Phase変更)部分も自動的にできると、いろんな条件をCSVなどで管理して、一気にテストをするとかもできると思います。
SuuuSanさんの仰るとおり、本来はOpenとCloseを入れてあげると効率が良いです。
うろ覚えですが、VISA WriteがOpenの役割も担っているだけな気がします。
本来は最初と最後にOpen/Closeするのが良いので、
Forループ枠の左側にOpen、Forループ枠の右側にCloseをおいてあげると良いと思います。
ループにOpenとかCloseを入れてしまうと、操作のたびに接続し直している状態なので効率が悪くなります。
イメージは、Excelのセルに値を入力作業しているときに、1セル毎にExcelファイルをOpen/Closeしているようなニュアンスになります。
サンプルがあればなんとかなると思いますが、また何かあれば投稿してみてください。
09-16-2020 11:43 PM
返信ありがとうございます。
なるほどループの内外で処理効率が変わることまでは考えていませんでした。まだまだ未熟者ゆえ大変参考になる意見で感謝しています。早速プログラムを改良してみます。
09-17-2020 05:52 PM
ちょっと作ってみました。
期待した感じのviになってますでしょうか。。。
テクトロの機器は計測器ドライバがそろっているので、そちらから制御方法にアプローチするのも手かもしれません。
多分、ここにあるかと。
09-18-2020 12:56 AM
プログラム例を作成していただきありがとうございます。拝見させていただきました。コメント付きで分かりやすく大変助かります。tektronixの計測器ドライバは入手できましたので、それを参考にして信号波形を取得するサブviを作成し、いただいたものと組み合わせて作ってみようと思います。