01-09-2006 03:35 AM
01-09-2006 10:49 PM
01-10-2006 09:51 PM
03-27-2016 08:32 PM
同様の問題に対しまして、一つ目の方法として紹介がありますDQQmx Create Virtual Channel.vi を直列に接続する方法を試みていますが、汎用的なデータロガーソフトを構築しており、16個のviを配置し、その時使用するチャンネルのみに各々の設定値を与えようとすると、使わないチャンネルに対してphysical channels(有効にする物理チャンネル)制御器が空欄となりタスクエラーとなってしまいます。プログラム的にはフロントパネルに入力欄を残しつつ、その時使用するチャンネル数に対してのみ設定値を入力するためにはどのようにすれば良いでしょうか?
03-28-2016 10:21 AM
ぱっと思いつくものでは以下のような方法がありますが、いかがでしょうか。
チャンネル名を配列にしてForループに渡し、空文字列の場合にはTrueケースで何も実行せずに、空のTask nameを渡しています。
空のTask nameは後の処理に必要ないので、条件付きトンネルで空でないものだけ取り出しています。
03-29-2016 08:16 PM
gustav2525様
返信ありがとうございます。
Trueケースの処理について、
無処理のためトンネル出入口をワイヤしようとしましたが、
入り口が物理チャンネルで出口がタスク名となり配線できませんでした。
また、上図のTask name outを次のタスク(DAQmxタイミング)に渡してあげると理解したのですが
これもデータタイプが異なり配線できませんでした。
このあたりを詳しく教示いただけませんでしょうか?
03-29-2016
09:57 PM
- 最終編集日:
05-06-2025
06:09 PM
、編集者:
Content Cleaner
Trueケースを表示してタイミングの処理を加えたものを添付します。
(あと、前のはMacで作っておりDAQmxの仕様が少し違いましたので、WindowsのLabVIEW2012で作り直しました。Falseケースは前回と同様です。)
タイミングの例にあるように、各処理はパラメータを配列化してForループで行ってください。各DAQmx関数への入力はタスク名で大丈夫だと思います。
また、添付している画像はVIスニペットなので、画像をブロックダイアグラムにドラッグアンドドロップで貼り付ければTrue、Falseケースともに見ることができます。
参考URL: VIスニペットで再利用を促進 - National Instruments
https://knowledge.ni.com/KnowledgeArticleDetails?id=kA03q000000x2PkCAI&l=en-US
04-18-2016 04:49 AM
Merly様
レスポンス遅くなってしまいましたが、投稿頂きましたサンプルを参考に自分なりに検討しまして、
題記の問題を解決するVI構築することができました。
VIスニペットの件もありがとうございました。
ですが、私のVIにも不完全な箇所があり、継続して検討する必要があります。
Merly様のサンプルですが、
最終的なタスクアウトが配列となると思うのですが、
タイミング関数の次に来る「DAQmxタスクを開始関数」を配列処理できませんでした。
また、「チャンネル作成関数」の次にチャンネルごとのレンジ設定処理を配置したかったのですが、
この処理方法だと、なぜか最後のチャンネルに設定したレンジが全てのレンジに割り当てられてしまい、
思った動作となりませんでした。
そこで、ループトンネルをシフトレジスタにしないと、各ループ処理がタスクに継承されないことに気づき、
今回私が構築したような形になりました。
この方法で一応動くものとなりましたが、
シフトレジスタとした事で、条件付きトンネルで無くなったため、
Physical channel が空欄であるかどうかの判定ができず、
ケースストラクチャが無意味な状態となっています。
Physical channel に空欄があるとタスクエラーとなるので、
使わない欄はフロントパネル上で「要素を削除」をする必要があります。
(つまりTRUEケースに入らない)
このあたりを改善する必要があり、継続して検討して行きます。
ですがMerly様のおかげで配列処理等に関しまして、大変勉強になりました。
どうもありがとうございました。
04-18-2016 04:53 AM
スニペットを添付ではなく挿入にして再投稿致します。