LabVIEW に AI がやって来た! (2)~ NI Nigel™ AIアドバイザに特定のタスクの手順を聞いてみた

こんにちはドルフィンシステムの笹生です。

今回は前回の「LabVIEW に AI がやって来た! ~ NI Nigel™ AIアドバイザをちょっと使ってみた」という記事の続きで「特定のタスクの手順を聞いてみた」という記事です。

使うためのセットアップや準備などは前回の記事を参考にしてください。


今回は Nigel の紹介ページに記載されていた主な7つの効果のうちの2つ目「特定のタスクの手順を提供」というところを試してみたいと思いますが、現在紹介ページが更新されているようで 5つに集約されておりました。



紹介ページは変更されていましたが、 LabVIEW のユーザーマニュアルでは7つの効果について記載がありましたので、今回はその2つ目を試してみたいと思います。

ちなみにレート制限についての記述を見つけました。VI に関しての相談機能は1日に 20件までだそうです。

特定のタスクの手順を提供とは何か?Nigel に聞いてみた

Nigel さんにできることを聞くのは Nigelさんに聞くのが最も適切だということで、素直に聞いてみます。

一旦、以下のようなプロンプトを作成しておいてチャットにコピペします。

「Nigelさん、NI でのあなたの紹介ページであなたは以下のような項目について良き相談相手になってくれると書いてありました。

・検索バーを使用してサンプルを検索することで、プロジェクトの開始点を明確にさせる

・特定のタスクを完了するための手順を提供する

・LabVIEWおよびVIの主な設計概念を解説する

・既存のVIの機能を説明する

・LabVIEW環境で特定の設定またはダイアログボックスの検索を支援する

・ドキュメントのトピックを要約する

・ハードウェアの機能や構成に関する質問に回答する

この中で、2番目の「特定のタスクを完了するための手順を提供する」という機能について具体的な例を挙げてどのようなことが相談できるのか教えてください。」

送信してみました。


以下 Nigel さんからの回答をそのままコピペします。
ーーーー

素晴らしいご質問です!
「特定のタスクを完了するための手順を提供する」という機能は、LabVIEWやNIハードウェアを使って具体的な作業を達成したいときに、私が手順やベストプラクティスを分かりやすく案内することを指します。
たとえば、以下のような相談が可能です。


具体例:どんな相談ができる?

相談内容具体的なタスク例私ができること
データ収集PXIやUSB DAQでアナログ信号をサンプリングしたい必要なVIや設定手順、サンプルコード、信号の保存方法を案内
ハードウェア制御リレーやモーターをLabVIEWからON/OFFしたいデジタル出力の使い方、配線例、タイミング制御の方法を説明
ファイル保存測定データをCSVやTDMSファイルに記録したいファイルI/O関数の使い方、保存形式の選び方、サンプルVIの紹介
エラー処理エラー発生時にログを残したいエラークラスタの扱い方、エラーハンドリングの設計例を解説
ユーザーインターフェース操作パネルを作りたいコントロール・インジケータの配置、イベント駆動型UIの設計手順
通信シリアル通信やTCP/IPで外部機器とやりとりしたいVISAやTCP関数の使い方、通信プロトコルの設定方法を案内
テスト自動化複数の測定を自動で繰り返したいループ構造、状態機械(ステートマシン)設計、ログ保存の流れを説明

相談の流れ(例)

  1. 「○○をしたい」と伝える
    例:「PXI-6363でアナログ入力を連続的に記録したい」
  2. 目的に合った手順やサンプルを案内
    • 必要なVIや関数の選び方
    • 設定すべきパラメータ
    • 実装例や参考リンク
  3. 追加の質問やカスタマイズにも対応
    • 「サンプリングレートを変更したい」
    • 「複数チャンネルを同時に記録したい」など

どんな相談でもOK!

  • 「LabVIEWで○○を実現したい」
  • 「NIハードウェアで△△を制御したい」
  • 「このVIの使い方が分からない」

など、目的が明確なタスクであれば、手順・設計ポイント・サンプル・注意点などを具体的に案内できます。


もし、やりたいことが決まっていれば、ぜひ「○○をしたい」と教えてください。
その内容に合わせて、最適な手順やサンプルを提案します!

ーーーーー

例を出してくれたので、それをそのまま聞いてみましょう。

Nigel に「PXI-6363でアナログ入力を連続的に記録したい」と聞いてみた

例をそのまま「PXI-6363でアナログ入力を連続的に記録したい」

とコピペして送信しました。

回答はこちらになりました。

ーーー

PXI-6363でアナログ入力を連続的に記録するには、LabVIEWとNI-DAQmx APIを使って「連続サンプリング」タスクを構成します。
この方法は、長時間にわたってデータを取り続けたり、リアルタイムで波形を監視・保存したい場合に最適です。


連続アナログ入力の基本手順

ステップ主なVI・関数ポイント
1. タスク作成DAQmx Create Virtual ChannelPXI-6363のAIチャンネルを選択、入力範囲を設定
2. タイミング設定DAQmx Timingサンプルクロック、レート、連続サンプルモードを指定
3. タスク開始DAQmx Start Taskタスクを明示的に開始(省略可)
4. データ取得DAQmx Read (例: Analog 1D Wfm NChan NSamp)ループ内で繰り返し呼び出し、バッファからデータを取得
5. データ保存ファイルI/O関数必要に応じてCSVやTDMSに保存
6. タスク停止・解放DAQmx Stop Task / DAQmx Clear Task終了時に必ず実行

LabVIEWでのプログラミング例

  1. DAQmx Create Virtual Channel

    • 例: Dev1/ai0:3(複数チャンネルも可)
    • 入力範囲(例: -10V~+10V)を設定
  2. DAQmx Timing

    • サンプルクロック: 内部クロック(空文字列"")
    • サンプリングレート: 例 10kS/s
    • サンプルモード: Continuous Samples
    • バッファサイズ: 必要に応じて指定
  3. Whileループ内でDAQmx Read

    • DAQmx Read (Analog 1D Wfm NChan NSamp)
    • 「Number of Samples per Channel」には1回で読み出すサンプル数を指定(例: 1000)
    • データを配列や波形として取得
  4. データ保存や表示

    • ファイルI/O関数やグラフ表示を組み合わせる
  5. DAQmx Stop Task / Clear Task

    • ループ終了後に必ず実行

参考画像・リソース


追加のヒント


まとめ

PXI-6363の連続アナログ入力は、DAQmxの基本VIを組み合わせてループでデータを取得するのが王道です。
LabVIEWの「サンプルを検索」バーやNI公式サンプルも活用できます。


さらに具体的なサンプルVIや、保存形式、トリガ設定など知りたい場合は、ぜひ詳細を教えてください!

ーーーー

遂に LabVIEW に AI アドバイザーが搭載されました。

Nigel さんの指示に従って VI を作成してみよう

ということで、LabVIEW と DAQmx を使って PXI-6363 でのアナログ信号の連続記録をする VI を作ってみましょう!!

まずは新規 VI を作成します。

ブロックダイアグラムで右クリックをして、検索から「DAQmx Create」ち打ち込むと、以下の図のように「DAQmx Create Virtual Channel」があるので選択してブロックダイアグラムにセットします。




そして、チャンネルの設定と入力範囲を設定するそうです。
どうやって設定するのか聞いてみましょう。

「DAQmx Create Virtual Channel でチャンネルの設定と入力範囲を設定をしたいのですがどのようにすればいいか教えてください。」

基本を押さえ、簡潔に説明をしてくれた印象です。質問の仕方でこの辺りの情報の粒度は変わると思いますね。

ーーー
DAQmx Create Virtual Channel(DAQmx 仮想チャンネル作成)VIでは、物理チャンネルの指定入力範囲(最小値・最大値)の設定が重要です。
以下に、LabVIEWでの具体的な手順とポイントをまとめます。

1. DAQmx Create Virtual Channel VI の使い方

パラメータ設定例説明
physical channelsDev1/ai0
Dev1/ai0:3
PXI-6363の物理AIチャンネル名(複数可)
name to assign to channel空欄または任意チャンネルのエイリアス名(省略可)
min value-10.0入力信号の最小電圧(例:-10V)
max value10.0入力信号の最大電圧(例:+10V)
unitsVolts単位(通常はVolts)
input terminal configurationDefault
RSE
NRSE
Differential
配線方式(差動、RSEなど)

フロントパネルでの設定例

  • physical channels:
    • PXI-6363のデバイス名がDev1の場合、Dev1/ai0(1ch)やDev1/ai0:3(4ch同時)など
  • min value / max value:
    • 測定する信号の範囲に合わせて設定(例:-5V~+5V、-10V~+10Vなど)
  • input terminal configuration:
    • 通常はDefaultでOKですが、ノイズ対策や配線方式に応じてDifferential(差動)などを選択

ブロックダイアグラムでの接続例

  1. DAQmx Create Virtual Channel VIを配置
  2. physical channels端子に「物理チャンネル名」をワイヤで接続(例:文字列定数やコントロール)
  3. min value / max value端子に数値定数やコントロールを接続
  4. input terminal configuration端子に「差動」や「RSE」などを指定(必要に応じて)

例:差動入力で-5V~+5Vを測定する場合

パラメータ設定値
physical channelsDev1/ai0
min value-5.0
max value5.0
input terminal configurationDifferential

参考画像・ドキュメント


補足

  • min/max値は、実際の信号範囲に合わせて設定してください。広すぎると分解能が下がり、狭すぎるとクリッピングします。
  • 物理チャンネル名は、NI MAX(Measurement & Automation Explorer)で確認できます。

もし、複数チャンネルや特定の配線方式での設定例が必要であれば、さらに詳しくご案内できます!
ーーー

LabVIEW や DAQmx に慣れていれば、この説明ですでに十分にわかると思います。
指示された接続例を基に作成してみましょう!

1.DAQmx Create Virtual Channel の端子「phsical channels」を右クリックして作成⇒制御器をクリックします。→フロントパネルにも制御器が表示されます。

2.DAQmx Create Virtual Channel の端子「minimum value」「maximum value」があるのでそれも制御器として右クリックで作成します。

3.フロントパネルで適宜設定します。例えば以下
パラメータ設定値
physical channelsDev1/ai0
min value-5.0
max value5.0



4.同様に次に配置する DAQmx Timing も見てみたいと思います。

最初に聞いた質問の回答を利用して、
「DAQmx Timingで以下の設定をどのように設定するか教えてください。
サンプルクロック: 内部クロック(空文字列"")
サンプリングレート: 例 10kS/s
サンプルモード: Continuous Samples
バッファサイズ: 必要に応じて指定」
と聞いてみました。

ーーー
LabVIEWのDAQmx Timing VIで、
「サンプルクロック:内部クロック」「サンプリングレート:10kS/s」「サンプルモード:Continuous Samples」「バッファサイズ:任意」
を設定する方法を具体的に解説します。

DAQmx Timing VI の主な端子と設定例

端子名設定値説明
source""(空文字列)内部クロックを使用(外部クロックの場合は物理端子名)
rate10000サンプリングレート(例:10,000サンプル/秒)
sample modeContinuous Samples連続サンプリング(Finite Samplesは一度きり)
samples per channel任意(例:1000)バッファサイズ(1回のDAQmx Readで取得するサンプル数)

設定方法(ブロックダイアグラム例)

  1. DAQmx Timing VIを配置
  2. source端子に空文字列("")を接続
    → これでPXI-6363の内部クロックが使われます
  3. rate端子に数値定数(例:10000)を接続
    → 10kS/s(10,000サンプル/秒)
  4. sample mode端子に「Continuous Samples」を選択
    → 定数または列挙型(Enum)で指定
  5. samples per channel端子にバッファサイズ(例:1000)を接続
    → 1回のDAQmx Readで取得するサンプル数

参考画像・ドキュメント


設定例まとめ

端子名設定値(例)
source""
rate10000
sample modeContinuous Samples
samples per channel1000

補足

  • samples per channel(バッファサイズ)は、PCのメモリやリアルタイム性に応じて調整可能です。
    大きくするとバッファオーバーフローしにくくなりますが、リアルタイム性は下がります。
  • sample modeは「Continuous Samples」を選択することで、DAQmx Readをループで繰り返し呼び出して連続データ取得が可能です。

もし、バッファサイズの最適値や、外部クロックの使い方など追加の設定例が必要であれば、さらに詳しくご案内できます!
ーーー
実は最初の回答での設定項目と同じ項目の端子名ではないので、どのように回答をするかと思っていたのですが、的確な回答を得ることが出来ました!!

このようにして、追加で質問をしながら配置接続をしていけば、自然と VI の構築ができると思います。
もちろん今回は簡単な例なので難しくはない内容ですが、複雑な内容でも一つ一つ聞いていけるのは非常に助かります。

最終的に作成したブロックダイアグラム


最終的にできたフロントパネル

まとめ

今回は LabVIEW に AI アドバイザーの記事2回目ということで、特定のタスクの手順を提供」というところを試してみました。

いかがでしたでしょうか。

分からないことはこれまでフォーラムに投稿したり、サポートに相談する事も多かったと思いますが、Nigel さんにまずは相談することで大部分の疑問は解消できるのではないでしょうか。



Nigel™、LabVIEW™ は National Instruments Corporation およびその関連会社の商標または登録商標です。本記事は National Instruments により承認、後援、または提携されたものではありません。

0 件のコメント :

コメントを投稿