配列検索(ポーリング)やクラスタの限界を突破し、名前やIDによるスマートな逆引きを具現化
LabVIEWで「センサー名」や「装置ID」に紐づくデータを管理する際、2つの配列(名前の配列とデータの配列)を作って、一方の配列から「1D配列検索」関数でインデックス番号を探し、もう一方の配列からデータを取り出していませんか?
要素数が増えるほど検索速度が低下する配列処理や、実行中に動的な項目の追加・削除ができないクラスタの弱点を完全に解決するために導入されたのが、データコレクション機能の**「マップ(Map)」**です。
他言語(Python、C++ など)での「ディクショナリ(Dictionary)」や「連想配列」に相当する機能です。ユニークな**「キー(Key:名前やID)」**と、それに紐づく**「値(Value:数値、クラスタ、波形など)」**をペアにして保持します。内部的に高度に最適化(二分探索木など)されているため、要素数が膨大になっても一瞬でデータを逆引きできます。
1. 検索速度が一定かつ超高速:Forループや検索関数による順次探索(ポーリング)が不要です。
2. 実行中に動的拡張が可能:クラスタと異なり、プログラム実行中に新しいキーを自由に追加・削除できます。
3. コードの可読性(視認性)向上:「インデックス3番のデータ」ではなく「"Sensor_A" のデータ」と直感的にワイヤリングできます。
関数パレットの「プログラミング > コレクション」にある主要な関数を使い、以下の基本操作を行います。
ブロックダイアグラム上で右クリックし、「コレクション > 空のマップ」定数を配置します。定数の上で右クリックし、「キーの型」と「値の型」を設定します。例えば、キーを「文字列(String)」、値を「数値(Double)」や「クラスタ」に定義します。
「マップに挿入(Insert Into Map)」関数を使用します。マップのワイヤと、追加したい「キー」および「値」を接続します。指定したキーが既にマップ内に存在する場合は値が上書き(更新)され、存在しない場合は新しいペアとして自動的に追加されます。
データを取り出すときは、「マップ内を検索(Look Up In Map)」関数を使用します。「キー」を入力すると、該当する「値」が即座に出力されます。また、「見つかったかどうか」を示すブール(Boolean)端子も用意されているため、安全な条件分岐が可能です。
不要になったペアは、「マップから削除(Remove From Map)」関数にキーを渡すことで、メモリから即座に破棄できます。
測定代行株式会社がマルチチャンネル計測や大規模プラント制御などで導入している、実戦的な逆引きパターンです。
個々のセンサー固有のシリアル番号やチャンネル名(例: "CH_001"、"Sensor_Node_A")を「キー」、そのセンサーの校正係数クラスタ(傾き、オフセット、最終校正日)を「値」としてマップに保存します。
イーサネット通信等で、現場にある数十台の計測デバイスの接続を集中管理する場合、デバイス名(例: "Chamber_TC_1")を「キー」、接続状態や通信ソケット、IPアドレスを含むクラスタを「値」として管理します。
並列で動く複数の消費者(Consumer)ループが存在するマルチスレッドプログラムにおいて、各タスクの「キューリファレンス」をタスク名(例: "DataLogging", "GraphUI", "SafetyCheck")をキーにしてマップへ登録しておきます。
設定ファイル内に記述された「SamplingRate = 1000」「UpperLimit = 5.5」といったキー名と値のペアを、ファイル読み込み時にそのまま文字列パースしてマップに流し込みます。
"SamplingRate")」を行うことで、グローバル変数を使わずに必要なパラメータを安全に取得できます。将来的に設定ファイルへ新しいパラメータ項目が増えた場合でも、LabVIEWのソースコード側を一切修正することなく追従可能です。"Sensor-A" で、マップに登録されているのが "Sensor_A" だった場合、「マップ内を検索」はデータを特定できず見つかりません(Found = False)。「コレクション(マップやセット)を導入したいが、最適なワイヤリングやクラスタ設計が分からない」「従来の配列検索プログラムが重すぎて、数百チャンネルのデータ処理が追いつかない」「他社が作った複雑な古いプログラムを、モダンなマップ構造へリファクタリングして高速化してほしい」といったご相談は、すべて測定代行株式会社にお任せください。
弊社は、元・横河電機のR&D部門で最先端計測機器のファームウェア・ソフトウェア設計を行っていた技術者が代表を務める、LabVIEW受託開発のリーディングカンパニーです。理研や産総研などのシビアな研究現場でも実証済みの、超高速かつメモリ効率に優れた「美しいソフトウェアアーキテクチャ」をご提供いたします。
明確な仕様書やドキュメントがない研究開発初期段階からのシステム具現化、他社製プログラムのバグ改修、Windows11対応など、どんなお悩みでもお気軽にご相談ください。経験豊富なエンジニアが直接解決策をご提案します。
お電話での受付:平日 9:00~18:00
048-291-8807
LabVIEW開発・データ設計について無料相談する