測定代行株式会社

お問い合わせ

測定代行株式会社

LabVIEWでのオーカレンス(Occurrence)の使い方と超高速同期のノウハウ

LabVIEWテクニカル解説

LabVIEWにおける「オーカレンス(Occurrence)」の基礎と使い方
ミリ秒以下の世界を同期する、最軽量・超高速のイベント通知

データの受け渡しを伴わない、純粋なタイミング制御とCPU負荷低減の最適解

LabVIEWでの並列処理同期において、キューやノーティファイアは非常に便利ですが、内部的に「データのバッファ確保」や「データのコピー」を行うため、ごくわずかながらオーバーヘッド(処理遅延)が存在します。
「データそのものは別ルートで渡す(または渡す必要がない)ので、とにかく最速で『今だ!』というトリガタイミングだけを別ループに通知したい」という極限のリアルタイム性・応答性を求めるときに最適なのが、パレットの奥深くに用意されている**「オーカレンス(Occurrence)」**関数です。

オーカレンス

◆ オーカレンスとは?(概念)

オーカレンスは、LabVIEWにおける最もシンプルかつ軽量な**「合図(スターターピストル)」**の仕組みです。「発生」と「待機」という2つの主要操作のみで構成され、データ型の定義やメモリバッファの確保を一切行いません。通知を待つ側のループは完全にスリープし、合図が鳴った瞬間に極めて鋭いレスポンスで再始動します。

◆ ノーティファイアとの決定的な違い

最大の違いは「データを載せられるか否か」です。ノーティファイアは通知と一緒に「文字列」や「数値」などのデータを送れますが、オーカレンスは「合図が起きた」というタイミングの事実しか送れません。その代わり、内部処理が極限まで削ぎ落とされているため、動作が圧倒的に軽量・高速です。

オーカレンスの基本的な使い方(3つのステップ)

オーカレンスは、関数パレット「プログラミング > 同期 > オーカレンス」にあるわずかな関数を使い、以下のミニマムな流れで実装します。

1. オーカレンスを生成

ブロックダイアグラム上で「オーカレンス」関数(丸いアイコン)を配置します。これは他の同期関数の「作成」とは異なり、アイコン単体からオーカレンスリファレンスが直接出力される特殊な構造をしています。通常は並列ループの開始前に配置し、ワイヤを各ループへと分岐させます。

2. オーカレンスを待機(受信側ループ)

通知を受け取りたい While ループ内に「オーカレンスを待機」関数を配置します。 この関数にワイヤが到達すると、スレッドは一時停止し、CPU負荷を一切かけずに「合図」を待ち受けます。タイムアウト(ミリ秒)を設定して、一定時間合図が来なかった場合の例外処理を組むことも一般的です。

3. オーカレンスを発生(送信側ループ)

ハードウェアからトリガを検出した瞬間や、計算が完了したタイミングで、「オーカレンスを発生」関数を呼び出します。これにより、待ち受けていたすべての「オーカレンスを待機」関数が一斉に解放され、後続の処理が超高速に実行されます。

実務で必ず直面する「1回きりのラッチ現象」と回避策

◆ 連続してループ内で使用する際の重大な罠
オーカレンスは、一度「発生」させると、そのVIが実行されている間、あるいは明示的にリセットされるまで「発生済みの状態(True)」が維持されてしまいます。
そのため、Whileループの2周目で再び「オーカレンスを待機」を通っても、前回の「発生」を記憶しているため、待機せずにそのまま素通り(スルー)してしまい、**無限ループやポーリング状態を引き起こす原因**になります。

【プロの対策】
・ Whileループ内でオーカレンスを繰り返し使用する場合は、「オーカレンスを待機」関数の後ろにある**「オーカレンスを無視」端子に、必ず待機直後のエラーワイヤやシグナルを正しく接続する**か、ループのトップでリファレンスを再初期化する構造にする必要があります。ここを疎かにすると、不可解な高速空回りバグが発生します。

極限のリアルタイム計測・低レイテンシ制御は「測定代行株式会社」へ

「ナノ秒・ミリ秒単位でタイミングを同期したデータサンプリングを行いたい」「プログラムの動作が重く、並列ループのオーバーヘッドを極限まで削りたい」「古いLabVIEWプログラムにあるオーカレンス構造のバグが直らない」といった高度な技術課題は、すべて測定代行株式会社にお任せください。

弊社は、元・横河電機のR&D出身エンジニアが代表を務めるLabVIEWソフト開発・実験装置システム構築の専門会社です。オーカレンスのようなプリミティブで強力な関数から、最新のデザインパターン(アクターフレームワークなど)までを網羅し、大学や公的研究所の過酷な実験環境でも24時間365日絶対にフリーズしない、超高速・超安定なソフトウェア(VI作成)を提供します。

◆ ソースコード(VI)はブラックボックス化せず完全譲渡
測定代行株式会社が納品するLabVIEWプログラムは、すべてソースコード(VIファイル)を開示し、完全譲渡いたします。開発会社による囲い込みリスクが一切ないため、納品後は大学の研究者様や企業のエンジニア様ご自身の手で、自由に仕様変更や内製化・カスタマイズを行っていただけます。

LabVIEW超高速制御・バグ改修のご相談(相談・見積無料)

明確な仕様書がない実験自動化の案件や、他社・前任者が作成したレガシーなプログラムの解析・ Windows11対応など、どんなお悩みでも大歓迎です。実務経験豊富なエンジニアが直接解決策をご提案します。

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

048-291-8807

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