08-31-2020 04:10 AM
現在、立ち上がりエッジで0V以下から0V以上に変わるタイミングをトリガーとして、ある両極性の電圧波形を観測しております。後の計算の都合上、正極性の電圧を必ず負極性の前に表示させたいのですが、何かアドバイスいただけないでしょうか?成功パターンが上で、失敗パターンが下になります。どちらも同じくらいの頻度で表示されます。
使用しているデバイスは以下になります。
オシロスコープ:NI USB-5132/5133
LabVIEW 2017
ご回答の程宜しくお願い致します。
解決済! 解決策の投稿を見る。
08-31-2020 06:54 PM
こんにちは。
>>
立ち上がりエッジで0V以下から0V以上に変わるタイミングをトリガーとして
とありますが、使用している関数は「niScopeトリガを構成(多態性)」でトリガレベルを「0」としていますでしょうか?
添付いただいた波形を見ると0V付近は一定しているように見えますが、
拡大すると0.01Vや-0.02Vなど、若干のばらつきがあると思います。
トリガレベルを「0V」としてしまうと0V付近のバラツキの中でトリガ検出します。
正極性電圧部はほぼ垂直に立ち上がっていますので、トリガレベルを1000V程度にしておけば良いかと思います。
09-01-2020 12:51 AM
haljionさん ご回答ありがとうございます。
完全に説明不足でしたので、補足させていただきます。
大変申し訳ございません。
条件を以下に示します。
・入力電圧:10kHz、1.5kV程度
・サンプルレート:1MS/s
・レコード長:1M
表示される波形は入力される電圧波形(1Mサンプル)のうち、部分配列で100サンプル程度ごとにforループで抽出した結果になっております。つまり、1M/100=10k個の波形(正極負極1個ずつの波形)を1秒間に取得しております。抽出される波形の内、一番最初のものはご指摘の通り、トリガを高めに設定することで成功パターンが得られたのですが、続く2個目~10k個目に至ってはバラバラになってしまいます。
トリガーviと読み取りviをforループ内に入れてみたりしたのですが、なぜか1秒間に1個の波形しか計測できませんでした。何か解決策はありますでしょうか?
ご回答いただけると幸いです。
09-01-2020 05:01 AM
take76さん
補足説明ありがとうございます。
しかしながら、十分に内容を理解できずにおります。
「正極負極1個ずつの波形」を取得するために部分配列を使用している、ということでしょうか。
どのように取得しているのかがイマイチわからないです。(ブロックダイアグラムを添付いただきましたが読み解けずに申し訳ないです。)
波形データであれば「基本レベルトリガ検出」などの関数が使えますので、そちらで試してみてはいかがでしょうか。
想定されるべき波形と実際に取得できた波形の具体的な画像(VIのフロントパネルなど)があれば他の方にもよりわかりやすいと思いますので、差し支えなければアップロードいただければ幸いです。
09-02-2020 12:39 AM
take76さん
トリガー自体は1M分のデータを取るためだけに使うので、トリガーをForループに入れてもうまく動作しないと思います。
1波形ずつ切り出すのを現在は部分配列を用いて、一定データ数xループ回数で切り出しポイントを決めていると思いますが、この一定データ数と波形の1周期が完全にマッチしていないと、徐々に差が広がって、頂いたご質問のように負が先に来るという状態になってしまうかと思います。
まず確認いただきたいのは、1Mの全波形の一番最初が必ず正の波形となっているか。 → これはトリガーが正常に動作しているか確認するためです。haljionさんのご指摘のように、トリガーを0Vにしていると微妙な電圧の揺れを感知してトリガーをかけてしまっている可能性があるので、やはり1000Vなどかならず正の波形が立ち上がったタイミングとわかるようにしてトリガーをかけたほうが良いかと思います。
上記が問題なくて、それでも波形の切り出しが固定データ数でうまくいかないのであれば、やはり固定データ数と1周期のデータ数に差があるということになります。
その場合は、適切な切り出し開始位置を探すロジックを組む必要があると思います。(例えば、1Vを立上りで超える指標を開始位置にして、データを抽出し、次のループではその指標以降から再度検索して開始位置を決める。開始位置が配列長(1M)を超えたら終了。みたいな形)
09-02-2020 04:02 AM
ke525さん、haljionさん ご回答ありがとうございました。
ke525さんがおっしゃる通り、抽出した固定データ数と波形の1周期が完全にマッチしておらず、適切な切り出しが必要でした。閾値検出VIをループの中に入れて、毎回指標を取り出すことで何とか形にすることができました。ありがとうございました。