測定代行株式会社

お問い合わせ

測定代行株式会社

LabVIEWでのノーティファイア(Notifier)操作の使い方とタスク間同期のノウハウ

LabVIEWテクニカル解説

LabVIEWにおける「ノーティファイア(Notifier)」操作の基礎
ループ間でイベント発生を一斉通知する同期制御

CPU負荷を最小限に抑え、処理のタイミングを完全に同期させるプログラム設計

LabVIEWで「データ収集ループ」と「データ解析・画面描画ループ」など、複数の処理を並列で実行させる際、ループ間で『特定のイベントが今発生した』というタイミングを伝える必要があります。
このとき、ローカル変数やグローバル変数をWhileループ内でひたすら読み込んでチェックする構造(ポーリング)にすると、CPU使用率が100%に張り付き、システム全体のパフォーマンスが著しく低下します。これを極めてエレガントかつ低負荷で解決するのが**「ノーティファイア(Notifier)」関数**です。

ノーティファイア関数

◆ ノーティファイアとは?(概念)

ノーティファイアはいわば**「電子掲示板」や「ブロードキャスト(一斉放送)」**です。通知を受け取る側のループは、「通知が来るまで何もせず眠った状態(待機)」になり、通知を出す側がメッセージを書き込んだ瞬間に、一斉に目を覚まして処理を再開します。これにより、不要なCPU負荷をゼロに抑えることができます。

◆ 「キュー」との決定的な違い

よく混同される「キュー」との最大の違いは、データの保持機能と通知対象の数です。キューはデータを「歴史(履歴)」として溜め込み、1つのデータは1つのタスクしか受け取れません。一方、ノーティファイアは常に「最新データのみ」を上書き保持し、複数のループに対して同時に一斉通知(ブロードキャスト)することが可能です。

ノーティファイアとキューの仕様比較

項目 ノーティファイア(Notifier) キュー(Queue)
主な目的 タイミングの同期・最新状態の一斉通知 データの受け渡し・バッファリング(履歴の保護)
受信者の数 複数(一斉通知・ブロードキャストが可能) 単一(1つのデータは1つのループしか取得できない)
データの挙動 新しい通知があると古いデータは消える(最新値のみ) 読み取られるまでデータは順番に蓄積される(FIFO)

ノーティファイアの基本的な使い方(4つの基本操作)

LabVIEWのパレット「プログラミング > 同期 > ノーティファイア」に配置されている主要関数を用いて、以下の流れで設計します。

1. ノーティファイアを作成

「ノーティファイア作成」関数を使用します。このとき、通知として送りたいデータの型(ボリオン、数値、文字列、クラスタなど)を入力端子に接続して定義します。

2. 通知を送信(送信側ループ)

何かイベントが発生したタイミング(例: 計測が完了した、エラーが起きた、停止ボタンが押された)で、「通知を送信」関数を呼び出します。引数に定義したデータを載せて送ることで、受信側に状態を渡せます。

3. 通知を待機(受信側ループ)

別スレッドで走るWhileループ内に「通知を待機」関数を配置します。通知が届くまでは、この関数部分でスレッドの実行が一時停止し、CPUリソースを一切消費しません。通知が送信されると即座にミリ秒単位の応答性で復帰し、後続の処理を行います。

4. ノーティファイアを解放

アプリケーションの終了時に「ノーティファイア解放」関数を実行して、メモリリソースを適切にクリーンアップします。

◆ プロの実践テクニック:システムの一斉停止(シャットダウン)への応用
マルチループ構造のLabVIEWプログラムで最も苦労する「すべてのループを安全かつ同時に停止させる」処理において、ノーティファイアの「一斉通知」特性は完璧にフィットします。メインループから「停止メッセージ」を1回送信するだけで、裏で動いている3つも4つもあるサブ操作ループの「通知を待機」が同時に解除され、美しく安全にプログラム全体を終了させることができます。

洗練されたLabVIEW並列プログラミングは「測定代行株式会社」にお任せください

「プログラムを作ってみたが、ループの同期がうまくいかずタイミングがズレる」「複数のループ間でデータを安全にやり取りしたいが、キュー、ノーティファイア、セマフォのどれを選ぶべきか分からない」といった技術的な課題でお困りではありませんか?

測定代行株式会社は、元・横河電機のR&D部門で光ファイバ strain 計測などの最先端機器開発に携わってきた技術者が率いる、LabVIEW受託開発・システム構築のプロ集団です。単に動くだけのプログラムではなく、CPU負荷が低く、将来の拡張やメンテナンスが容易に行える「美しいアーキテクチャ」でのVI作成を提供します。

◆ ソースコード(VI)は完全譲渡・完全開示
弊社では、開発したLabVIEWのソースコードをお客様の財産としてすべて開示・完全譲渡しております。プログラムがブラックボックス化しないため、納品後はお客様ご自身での内製化・カスタマイズが自由に行えます。

LabVIEW開発・自動化システム構築のご相談(相談・見積無料)

仕様書や設計図がない研究開発初期フェーズからの具現化、既存システムのバグ修正や最適化など、経験豊富なエンジニアが直接ヒアリングを行い、最適な計測制御システムを構築いたします。

お電話での受付:平日 9:00~18:00

048-291-8807

LabVIEW開発・自動化について無料相談する
```