LabVIEWは、ナノ秒エンジンと呼ばれるソフトウェアコンポーネントを使用して、プログラム内の時間を記録します。ナノ秒エンジンは背後で実行され、OSに接続して時間を管理します。LabVIEWには、待機機能やタイミングループストラクチャなど、時間管理にナノ秒エンジンを使用するさまざまな機能と構造があります。ナノ秒エンジンは、ローカルリアルタイムクロック (RTC) を使用することも、NI時間同期フレームワーク (NI-TimeSync) を介して統合された外部の基準クロックによって駆動することもできます (図1)。
図1:LabVIEWのナノ秒タイミングメカニズムとNI-TimeSyncは連携して、アプリケーションにクロックを供給します。
LabVIEW 2010には、NI-TimeSyncで利用できる新しいクロックが追加されています。NI-TimeSync 1.1で利用可能なIEEE規格1588プラグインは、1 msの分解能で同期する基準クロックを供給します。同じIEEE 1588の基準クロックを使用するようネットワーク上で複数のデバイスを構成できるため、標準的なEthernetネットワークで複数のプラットフォームを同期させることができます。また、NI Measurement&Automation Explorer (MAX) ユーティリティで、Software 1588 Precision Time Protocolを使用することもできます (図2)。
図2:MAXユーティリティでのデバイス向け時間同期ソースの構成
タイミングループは、構成したタイミングソースにイベントがあるときに実行されるループ構造です。タイミングループには、このチュートリアルの後半で説明するさまざまなタイミングソースがあります。タイミングループは次のような要件を満たすアプリケーションを開発する場合に使用します。これには、マルチレート処理、正確なタイミング制御と同期機能、ループ実行のフィードバック、動的に変化するタイミング特性、またはいくつかのレベルの実行優先度を持つアプリケーションの開発が該当します。タイミングループは精密なタイミング特性を持つ一方、その構造を使用してマルチコアプログラミングにプロセッサアフィニティを割り当てることができます。タイミングループを使用すれば、周期、優先度、期限、オフセット、タイムアウトなど、さまざまなタイミング属性を指定することができます。これらの属性と幅広いタイミングソースを組み合わせることで、必要なタイミング制約に関係なく、高度なアプリケーションを作成することができます (図3)。
図3:タイミング制約のあるコードを実行するためのLabVIEWタイミングループストラクチャ |
タイミングソースは、タイミングストラクチャの実行を制御します。内部、ソフトウェアトリガ、外部の3つのクラスのタイミングソースから選択することができます (図4)。
図4:タイミングループストラクチャのタイミングソース:組み込みの内部タイミングソース、ソフトウェアトリガソース、および外部ソース
内部タイミングソースは、ナノ秒エンジンを使用して時間を記録します。サポートされているリアルタイム (RT) ターゲットで、1 kHzクロックまたは1 MHzクロックを使用するようタイミングループを構成することができます。1 kHzクロックを使用すると、タイミングストラクチャをミリ秒の分解能でスケジューリングすることができます。タイミングストラクチャを実行できるすべてのLabVIEWプラットフォームは、1 kHzのタイミングソースをサポートしています。1 MHzのタイミングソースを使用すると、マイクロ秒の分解能でタイミングストラクチャをスケジューリングすることができます。また、タイムスタンプを使用してストラクチャの実行を開始するための絶対時間リファレンスとして、これらの組み込みタイミングソースのいずれかを使用するようタイミングループストラクチャを構成することもできます。たとえば、毎日正確な時刻に開始するようにタイミングループを構成することができます。
別の内部タイミングソースとして、スキャンエンジンへの同期があります。これは、タイミングストラクチャをNIスキャンエンジンに同期させるものです。このタイミングソースを使用すると、タイミングストラクチャは各スキャンの最後に実行されます。反復の周期は、NIスキャンエンジンページで構成したスキャン周期 (µs) の設定に対応します。
ソフトウェアトリガタイミングソースを作成し、ソフトウェアで定義されたイベントに基づいてタイミングストラクチャをトリガすることができます。ソフトウェアトリガのタイミングソースを作成するには、「タイミングソースを作成」VIを使用します。「ソフトウェアトリガのタイミングソースを生成」VIを使用して、ソフトウェアトリガのタイミングソースで制御されているタイミングループをプログラムでトリガします。ソフトウェアトリガタイミングソースは、RT対応のイベントハンドラとして、または生産者/消費者アプリケーションで新規データが利用可能となったときに消費者タイミングループに通知する手段として使用することができます。
NI-DAQmxバージョン7.2以降を使用して、タイミングストラクチャを制御する外部タイミングソースを作成することができます。「DAQmxタイミングソースを作成」VIを使用して、外部タイミングソースをプログラムで選択します。頻度、デジタルエッジカウンタ、デジタル変化検出、タスクソースからの信号など、さまざまなタイプのNI-DAQmxタイミングソースを使用してタイミングストラクチャを制御することもできます。DAQmxの使用 - データ収集VIを使用して以下のタイプのNI-DAQmxタイミングソースを作成し、タイミングストラクチャを制御します。
頻度 - 一定の頻度で実行するタイミングストラクチャのタイミングソースを作成します。
デジタルエッジカウンタ - デジタル信号の立ち上がりまたは立ち下がりエッジで実行するタイミングストラクチャのタイミングソースを作成します。
デジタル変化検出 - 1つまたは複数のデジタルラインの立ち上がりまたは立ち下がりエッジで実行すタイミングストラクチャのタイミングソースを作成します。
タスクからの信号―タイミングストラクチャが実行されるタイミングを決定するように指定する信号を使用するタイミングソースを作成します。
言語固有のタイミングストラクチャ、ナノ秒タイミングエンジン、およびタイミングループストラクチャを備えたLabVIEWは、システムに不可欠なタイミング制御と同期機能を提供します。