10-15-2014 03:10 AM
現在、NI cRIO-9024とNI9401、LabVIEW2014を使って、任意の周波数のデジタルパルスを生成するプログラムを作成しています。
サンプルプログラムの PWM Generation.lvproj に少しだけ手を加えただけではありますが、添付画像のような、指定した時間だけONの状態で待機し、その後同じ時間だけOFFの状態で待機するプログラムを作成・実行したところ、低い周波数(1Hz程度)ではきちんと動作したものの、周波数を上げていくと10~100Hz辺りでパルスが出なくなり、1kHzの辺りで待機時間がバラバラなパルスが出るようになってしましました。
試しにNI9401の特殊デジタル構成の特殊モード「パルス幅変調」を使って、1kHのパルスを出力してみましたが、こちらはきれいにパルスを出力できたので、機械側の不調ということではなさそうです。
当方、まだLabVIEWどころか、プログラミングにも慣れておらず、また、このフォーラムで質問させていただくのも初めてですので、足りない情報や、破綻している個所もあるかとは思いますが、どうかご助言いただけたらと思います。
よろしくお願いいたします。
10-17-2014 03:41 AM
こんにちは
添付されたスクリーンショットで使用されている待機関数はm秒の単位で入力値のデータタイプとして整数のみ使用可能ですので、1より小さい値は使用できません。
なので1より小さい値を入力しているので、パルス生成のタイミングがまちまちになっています。
より小さな値を使用したいのであれば、RealTimeOS専用の待機関数を使用してください。パレットの中にReal-Time という項目があるかと。
こちらはμ秒単位で指定可能です
11-11-2014 02:03 AM
返事が遅くなてしまい、申し訳ありません。アドバイスありがとうございます!
アドバイスを参考に、リアルタイムのタイミングのパレットにある「次の倍数まで待機」を使い、μ秒単位に設定して組み込んでみましたが、やはり同じような症状になります。信号の乱れは若干減ったように見えますし、10Hz程度なら出力は出来るようになりましたが、100Hzを超えると前回と同じく待機時間がバラバラになってしまいます。
他のリアルタイムタイミングパレットのブロックも使ってみましたがうまくいきませんでした……
11-13-2014 03:33 AM
計算も特に問題がなさそうですので、あとはcRIO-9024 の設定でしょうか。
現在の設定ではcRIO 内のFPGA用のコードを必要としないスキャンモードというものになっています。
プロジェクトエクスプローラに現在使用されているcRIO のIPアドレスが表示されている項目があるかとおもいます。
その項目を右クリックしてプロパティを選択してください。新しく表示されるウィンドウの左側にスキャンエンジンという項目がありますのでそれをクリックしてください。
スキャンエンジンをあまり使用したことがないので詳しくはわかりませんが、そこに表示されるスキャン周期を10ms からより小さい値に変更してみてください。(たとえば100us)
そうすれば、RealTimeOSがより早い頻度で値を更新しても、cRIO のハードも同じ速度でデジタル値を更新してくれるかとおもいます
11-19-2014 05:02 AM
ご助言ありがとうございます!
早速設定してみましたが、スキャン周期を500μsより小さくするとパルスがうまく出なくなってしまいました。このあたりがCompactRIOの限界ということなんでしょうか……?
この状態で1kHzまでは出力できるようになりましたが、出来れば20kHzは出せるようにしたいと考えています。
重ね重ね申し訳ないのですが、ご助言いただけたらと思います。