ハードウェアタイミングでDCとAC出力切替

Tips

スポンサーリンク

この記事で扱っていること

  • ハードウェアタイミングでDCとAC出力を切り替える方法

を紹介しています。

注意:すべてのエラーを確認しているわけではないので、記事の内容を実装する際には自己責任でお願いします。また、エラー配線は適当な部分があるので適宜修正してください。

LabVIEWでDAQ製品を操作する際に、まず決めなければいけないのは、タイミングの指定方法です。

大きく分けて、ソフトウェアタイミングとハードウェアタイミングがあります。

タイミングにはあまりこだわらず、手軽に信号を切り替えたいという場合にはソフトウェアタイミングを使用する選択肢もあると思います。

が、多くの場合には出力する信号は厳密さを求める(例えば120 Hzの正弦波を正確に出す、など)ことが多いと思います。これに加えて、ある程度柔軟に信号を切り替えるためにDCとAC信号をプログラムを止めることなく切り替えられると便利だと思います。

NIサンプルファインダの中に「連続出力」という名称でサンプルはあるのですが、AC信号しか選べません。

そこで、プログラムを止めなくてもDCとACを切り替えられるような仕組みを作ってみました。

スポンサーリンク

どんな結果になるか

フロントパネルはサンプルファインダのサンプルをほぼ踏襲し、チャンネルごとに選べる選択肢としてDC信号も追加したクラスタ(の配列)を用意しました。DCかACの切替にはブールを使用するようにしました。

あとは使用するチャンネルの数の分だけ配列を初期化するのはもともとのサンプル同様で、プログラムを走らせたら途中で自由に信号を変えることができます。

下の図は、実際に今回のプログラムから出力した信号を、NIサンプルファインダの電圧連続入力のサンプルで実機を使用して測ったときの例です。

プログラムの構造

サンプルをほぼそのまま使うだけのシンプルな構造としています。DCかACかを切り変える部分のアルゴリズムのみ変えていますが、DCに変えるのは波形のYを単一の値に切り替えるだけなので特に難しいことはありません。

DCかどうかを判定するブールの結果によってケースストラクチャを切替、DCの場合にはその値をサンプル数分もった配列を用意して波形データとするだけです。

波形の初期化を忘れてエラーが起こることを防ぐ

元々のサンプルでもそうですが、信号出力のプログラムの場合は指定したチャンネルの数と出力値の数を一致させる必要があります。

例えば、チャンネル指定で2チャンネル指定しているのに、出力値を決める配列が1つしか初期化されていない場合にはチャンネルの数と書き込みの数が異なるということでエラーが起きます。

いちいちこのエラーに引っかかるのはうっとうしいという場合には、チャンネルの数を自動的に読み取って初期化自体をプログラム的に行わせる方法が有効です。

やり方は簡単で、出力の配列にプログラム的に値を入れるだけです。

ハードウェアタイミングで信号を扱う際には信号を変化させてもすぐに切り替わらないことがありえますが、それはサンプリングレート(出力の場合にはアップデートレートと呼んだほうがそれっぽいですが)が遅すぎることが原因となるので、このレートを大きな値にして実行すれば、DCもACも瞬時に切り替えられます。

プログラムの途中で自由に出力信号を切り替えるプログラムがサンプルにあるものだけでは物足りない!という方にこの記事の内容が参考になれば嬉しいです。

ここまで読んでいただきありがとうございました。

コメント

タイトルとURLをコピーしました