11-11-2018 10:20 PM
初めて投稿させていただきます、よろしくお願いします。
現在、LabVIEW2014を使い始めたばかりなのですが、以下のような動作をLabVIEWで考えています。
NI myDAQをLabVIEWで制御して任意のデジタル波形をDAQアシスタントを用いて4チャンネル分出力をしたいと考えています。サンプルコードなどを調べると1チャンネルのデジタル出力はありますが、4チャンネルのデジタル出力の方法は見当たりません。
どなたか参考になるプログラムや解決策を教えていただけないでしょうか?
よろしくお願いします。
11-12-2018 12:26 AM - 編集済み 11-12-2018 12:33 AM
11-12-2018 12:31 AM
DAQアシスタントであれば、下記の設定後4つの要素を持つブール配列をDAQアシスタントに入力します。
個人的には、DAQアシスタントを使用しないほうが、柔軟性の高いアプリケーションが作成できます。
C:\Program Files\National Instruments\LabVIEW 2014\examples\DAQmx\Digital Output\Digital - SW-Timed Output.vi
が最もシンプルなサンプルです。
Dev1/port0/line0:1の記述をDev1/port0/line0:3のようにして、
「書き込むデータ」のブール配列を4個有効にして(非グレーアウトにして)実行してみてください。
11-12-2018 01:09 AM
ご返答ありがとうございます。実際に試してみようと思います。
追加で質問させて頂きたいのですが、このデジタル出力の周波数を変えたい場合にはどうすればよいでしょうか?また、DAQアシスタントを使わない場合はどのようなプログラムになりますか?(VIの写真などを添付していただけると助かります。)
お手間を取らせて申し訳ありませんが、ご教授いただけないでしょうか?
11-12-2018 01:28 AM
myDAQのDIOはソフトウェアタイミングのため、精度の高い周波数設定はできません。
http://www.ni.com/pdf/manuals/373061f.pdf
"Update mode .....................................................Software-timed"
周波数は、DAQアシスタントを呼び出すループのループレートによって決まりますが、
PCの負荷によるジッタが存在し得ます。
DAQアシスタントを使用しないプログラムは、先にご紹介した通りです。
11-12-2018 09:15 PM
早々にご返答ありがとうございます。
教えて頂いたプログラムを試してみましたが所望する動作を得られませんでした。
最終的に私が行いたいことは
このような同期のとれた波形をデジタル出力し、周波数も変えることを目指しています。
しかし、myDAQでは精度の高い周波数設定ができないならば図のような動作を実現することは不可能なのでしょうか?
11-12-2018 10:12 PM - 編集済み 11-12-2018 10:15 PM
まず、ハードがソフトウェアタイミングであることの懸念点を理解されたほうがよいと思います。
Accuracy of Software-Timed Applications in LabVIEW
デジタル出力の更新はソフトウェアタイミングで行われるので、精度は最小1msecです。
しかしソフトウェアはジッタがあるため、1mが2mや5mになることもあります。
すなわち1kHz設定の周波数が900Hzになったり1100Hzになったりし得ます。
逆に周波数が低くてもよければ、それらのジッタは無視できるかもしれません。
どうしてもmyDAQで精度のよいパルスが欲しければカウンタ機能を使って下さい。
ただし1chしかありません。
How Do I Use the NI myDAQ Counter?
デジタルでPWMするようなサンプルもありますが、個人的には精度が見込めないためあまりお勧めしません。
11-13-2018 02:53 AM
ご返答ありがとうございます。
myDAQの仕様をあまり理解せず質問をしてしまい、自分の勉強の足りなさがわかりました。
引き続きLabVIEWの勉強をしていきたいと思います。
今回はいろいろとアドバイスをしてくださり本当にありがとうございました。