LabVIEWでのデータ通信方法



LabVIEW 2018ヘルプ


発行年月: 2018年3月
製品番号: 371361R-0112
製品情報を参照

ダウンロード (Windowsのみ)


LabVIEW 2015ヘルプ
LabVIEW 2016ヘルプ
LabVIEW 2017ヘルプ
LabVIEW 2018ヘルプ
LabVIEW 2019ヘルプ

LabVIEWには、用途別に特化した、多くのデータ転送方法が用意されています。アプリケーションに適したデータ転送方法を実装するために、このトピックの概要を参照してください。特定のデータ転送方法の詳細については、そのデータ転送方法のタイトル をクリックしてください。

データ通信タイプ: データフロー要素 バッファインタフェース 変数インタフェース
使用例: ほとんどのブロックダイアグラムオブジェクト間でデータを送信する 値の上書きや損失を回避することが重要な場合に場所間でデータ送信する 主な関心が最新値である、すぐにアクセス可能な値をメモリ内に保管する。競合状態を回避するために注意して使用してください。
例: VI出力からVI入力にデータを渡す。 波形を収録する。メッセージやコマンドを送信する。 現在の温度を監視する。システムの状態を監視する。
カテゴリ:

— ワイヤ

— シフトレジスタ

— フィードバックノード

— チャンネルワイヤ


ターゲットまたはPC内

— キュー

— RT FIFO

— ユーザイベント

— 非同期メッセージ通信(AMC)リファレンスライブラリ



ネットワーク接続

— ネットワークストリーム

— TCP

— シンプルTCPメッセージング(STM)リファレンスライブラリ



FPGA内

— ターゲット指定FIFO

— VI定義FIFO

— DRAM



FPGAとホストの間

— DMA FIFO



FPGAからFPGAへ

— ピアツーピア(P2P)FIFO


ターゲットまたはPC内

— ローカル変数

— グローバル変数

— 機能的グローバル変数(FGV)

— 単一プロセスシェア変数

— データ値リファレンス

— 現在値テーブル(CVT)



ネットワーク接続

— ネットワーク共有シェア変数

— プログラム的シェア変数API

— ウェブサービス

— UDP



FPGA内

— グローバル変数

— メモリ項目

— レジスタ項目



FPGAとホストの間

— 制御器を読み取る/書き込む

— NIスキャンエンジンと変数

— ユーザ定義I/O変数




データフロー要素

LabVIEWのデータフロープログラミングを利用するには、アプリケーション内の主なデータ通信方法として、ワイヤ、シフトレジスタ、フィードバックノード、およびチャンネルワイヤを使用する必要があります。

方法 属性
ワイヤ
  • ブロックダイアグラムオブジェクト間での主なデータ転送
シフトレジスタ
  • ループ反復間での主なデータ転送
フィードバックノード
  • コード反復間での主なデータ転送(ループを必要としない)
チャンネルワイヤ
  • 並列したコードセクション間の非同期通信での主なデータ転送



バッファインタフェース

ある場所から別の場所にデータを送信しなければならないが、値を上書きしたり、失つたりしたくない場合には、バッファインタフェースを使用します。バッファインタフェースは、よくFIFO(先入れ先出し)単一要素バッファまたは複数要素バッファとして表されます。1つまたは複数のライタがバッファの一方の端にデータを書き込み、リーダが別の片方からデータを取り出します。

ターゲットまたはPC内

方法 属性
キュー
  • 自由なサイズ設定とアクセスオプション
  • 非確定的
RT FIFO(Real-Timeモジュール)
  • 確定的
  • ポーリングモード(デフォルト)は、読み書き待機時間を確定的に扱うが、CPUのオーバーヘッドが高くなる
  • ブロックモードは、読み書き待機時間中のCPU使用を最適化するが、操作を確定的に扱わない
  • サイズが固定で、アクセスオプションが限定的なので、キューよりも柔軟性が低い
ユーザイベント
  • アプリケーションの部分間でのイベント駆動型通信
  • オブジェクトへのプログラム的な変更に応答する
非同期メッセージ通信(AMC)ライブラリ

ni.comで利用可能)

  • プロセス内およびプロセス間のメッセージ通信
  • メッセージングフレームワークの設計時に、キューと比べて大幅に使いやすい
  • キューメッセージハンドラ(QMH)が含まれている

    メモ: これは、ni.com/samplecodelicenseで規定されているサンプルコードライセンス規定に従うコミュニティコンテンツです。


ネットワーク接続

方法 属性
ネットワークストリーム
  • 1:1 通信
  • TCPよりも実装が単純
  • 切断と再接続に自動対応
  • 単方向
  • Windowsシステムおよびリアルタイムシステム用のみ使用可能
TCP
  • ネットワークストリームサポートのないデバイスへのネットワーク通信が必要なアプリケーション用の幅広い機能
  • 低レベルプロトコルにより実装が複雑になる
シンプルTCPメッセージング(STM)リファレンスライブラリ

ni.comで利用可能)

  • 低レベルTCP関数のメッセージラッパー
  • 1:N、シングルサーバから複数クライアントへの通信を実装するために使用

    メモ: これは、ni.com/samplecodelicenseで規定されているサンプルコードライセンス規定に従うコミュニティコンテンツです。


FPGA内

方法 属性
ターゲット指定FIFO(FPGAモジュール)
VI定義FIFO(FPGAモジュール)
  • 実装オプションにより、FIFOが使用するストレージのタイプ(フリップフロップ、ルックアップテーブル、またはブロックメモリ)を指定する
  • インスタンスごとにリソースを複製することにより、再入可能サブVIでのリソース競合を回避する
  • 複数プロジェクトでVI用のコード再利用を促進する
  • プロジェクトエクプローラウィンドウからは表示またはカスタマイズはできない
DRAM(FPGAモジュール)
  • メモリ項目またはCLIPインタフェースを使用して、DRAM(Dynamic Random Acess Memory)にインタフェースする
  • ターゲット指定およびVI定義のFIFOと比べて、大容量のバッファされたメモリスぺースを提供する
  • 非確定的なアクセスレイテンシ
  • 一部のターゲットでのみ使用可能


FPGAとホストの間

方法 属性
DMA FIFO(FPGAモジュール)


FPGAからFPGAへ

方法 属性
ピアツーピア(P2P)FIFO(FPGAモジュール)



変数インタフェース

リーダとライタが最小のフロー制御、または、フロー制御なしでアクセスできるメモリに値を格納する必要がある場合には、変数インタフェースを使用します。変数は、主な関心が最新値であり、前の値を上書きしてもいい場合に使用してください。競合状態を回避するために注意して使用してください。

ターゲットまたはPC内

方法 属性
ローカル変数
  • 単一VIからアクセス可能なデータを格納する
グローバル変数
  • 同じLabVIEWアプリケーションインスタンスの複数のVIからアクセス可能なデータを格納する
機能的グローバル変数(FGV)
  • 初期化していないシフトレジスタを使用してグローバルデータを格納するVI
  • 単純なグローバル変数の他、スタックやキューバッファなど複雑なデータ構造の実装が可能
  • 呼び出しコードが変数に対して実行できる操作を定義することにより、競合状態を防止できる
単一プロセスシェア変数
データ値リファレンス
  • 大きなデータセットを格納する
  • メモリ管理に役立ち、データコピーを回避する
変数テーブル(CVT)

ni.comで利用可能)

  • 別々のコンポーネントをもつアプリケーションの変数用の共通データリポジトリ
  • I/O操作を集中化することで、シェア変数よりも少ないリソースで処理する

    メモ: これは、ni.com/samplecodelicenseで規定されているサンプルコードライセンス規定に従うコミュニティコンテンツです。


ネットワーク接続

方法 属性
ネットワーク共有シェア変数
  • 確定的オプションが利用可能
  • 値の監視に最適
  • 値をネットワークデータサーバ(シェア変数エンジン)に格納する
  • 1:NおよびN:1ネットワーク構成用のビルトイン接続マネージャ
プログラム的シェア変数API
  • ノードベースのスタティックバインディングではなく、変数へのダイナミックアクセスを提供することで、設計のスケーラビリティを向上する
  • 単一変数API関数で複数の変数にアクセスする
  • ネットワークで共有されているI/O変数にアクセスする
ウェブサービス
  • 標準HTTPプロトコルを使用したネットワークデータ通信
  • テキスト、画像、動画などの標準MIMEデータタイプをストリーミングする
  • LabVIEW VIを使用してウェブサービスを構築またはデプロイする
UDP
  • デバイス上のプロセス間の低レベル通信でシングルキャスト(1:1)およびマルチキャスト(1:N)をサポートする
  • ロスレスデータ転送を必要としないアプリケーションにおいてTCPよりも高性能
  • 低レベルプロトコルにより実装が複雑になる
  • クライアントによるデータ受信は保証されない


FPGA内

方法 属性
グローバル変数
  • 同じLabVIEWアプリケーションインスタンスの複数のVIからアクセス可能なデータを格納する
メモリ項目(FPGAモジュール)
  • 値を複数データポイントとして格納できる
  • メモリ項目が使用するメモリタイプをブロックメモリ、ルックアップテーブル、DRAMから実装オプションで指定する
  • ターゲット指定(プロジェクトで構成)およびVI指定(VIで再入可能用に構成)オプション
レジスタ項目(FPGAモジュール)
  • クロックサイクルごとにステータスをポストできる
  • ターゲット指定(プロジェクトで構成)およびVI指定(VIで再入可能用に構成)オプション
  • 消費するFPGAリソースがFIFOよりも少ない


FPGAとホストの間

方法 属性
制御器を読み取る/書き込む(FPGAモジュール)
  • FPGAターゲットのトップレベルFPGA VIの制御器または表示器を読み取る、または書き込む
NIスキャンエンジンと変数

(FPGAモジュール + ターゲットでのNIスキャンエンジンのサポート)

  • RTホストとの間のFPGA I/Oデータの定期的で単純な通信
  • FPGAターゲットとRTホストとの間のI/Oデータ転送に必要なコードが減る
ユーザ定義I/O変数(FPGAモジュール)
  • スキャンエンジンをハイブリッドモードで使用するときにユーザ定義データを送信する
  • FPGA VIとLabVIEW RTホストVI間でデータを転送する
  • カスタムFPGA処理されたI/Oデータを転送する




この記事は役に立ちましたか。

役に立たなかった