組込リアルタイムシステムは、自立的である必要があります。ソフトウェアに障害が発生するたびに人手による組込システムの再起動を必要とすることは、往々にして非実用的です。このような場合、組込システム自身が障害状態を検出して回復手順を実行できなければなりません。多くの組込システムでは、ソフトウェアの障害を検出して回復するために、ウォッチドッグタイマまたはデッドマンスイッチと呼ばれるハードウェアタイマが内蔵されています。ウォッチドッグタイマを使用すると、組込ソフトウェアプロセスの正常な実行を監視し、応答しなくなった場合に回復手順を開始できます。

ハードウェア/ソフトウェアインタフェースを理解する

ウォッチドッグタイマは、組込ソフトウェアアプリケーションと通信するハードウェアカウンタで、ソフトウェアの障害を検出して回復するために使用されます。通常の操作では、ソフトウェアアプリケーションは、特定の数から既知のインクリメントでハードウェアタイマのカウントダウンを開始し、タイマがゼロに達した場合に実行する動作を定義します。アプリケーションによって開始されたウォッチドッグタイマは、以下の図に示すように、タイマがゼロに達しないように周期的にリセットします。

ソフトウェアの障害によってタイマのリセットが行われないと、ハードウェアカウンタはソフトウェアから独立しているためにゼロに達するまでカウントダウンを継続し、最終的にゼロ (タイムアウト) となります。ウォッチドッグタイマがタイムアウトすると、ハードウェアは以下の図で示すように回復手順を開始します。

RTシリーズPXI、CompactRIO、Compact FieldPointコントローラは、RT Watchdog VIによって操作可能なウォッチドッグタイマハードウェアを内蔵しています。ウォッチドッグのタイムアウトを設定し、タイムアウトになった場合に実行する操作を指定するには、「Watchdog Configure」VIを使用します。タイムアウト発生前に周期的にカウンタをリセットするには、「Watchdog Whack」VIを使用します。

メモ Real-Time Watchdog VIは、RTシリーズPXI、CompactRIO、およびCompact FieldPointコントローラに共通する特定のハードウェアの機能に依存するため、他社製のウォッチドッグハードウェアに対する使用はお勧めしません。

タイムアウトを適切に設定する

適切なタイムアウト値の範囲は、各組込アプリケーションのパフォーマンス特性やアップタイム要件に応じて異なります。許容レベルのシステムジッタによって時間切れにならないように、タイムアウトを十分な長さに設定する必要があります。一方、システムのアップタイム要件を満たすため、早急に回復できるようにタイムアウトの設定が長くなりすぎないように注意してください。

Advanced Watchdog VIを使用する

高レベルなWatchdog VIである「Watchdog Configure」VI、「Watchdog Whack」VI、「Watchdog Clear」VIは、それより低レベルなAdvanced Watchdog VIを元に作成されています。高レベルなWatchdog VIを使用してアプリケーション要件を満たせない場合は、これらのAdvanced Watchdog VIを使用してカスタムウォッチドッグアプリケーションを実装することができます。

複数のウォッチドッグオブジェクトを作成する

「Watchdog Configure」VIや上級ウォッチドッグVIを使用して、異なるプロパティを持つ複数のウォッチドッグオブジェクトを作成することができます。異なる操作のステートでさまざまなタイミング特性を持つアプリケーションでは、複数のウォッチドッグオブジェクトが有効です。たとえば、ステートAとステートBのあるステートマシンアーキテクチャを実装する場合、ステートAではタイムアウト値が5秒であるウォッチドッグオブジェクトを使用し、ステートBではタイムアウト値が10秒であるウォッチドッグオブジェクトを使用することができます。

ただし、RTターゲットには通常1つのハードウェアウォッチドッグタイマしかないため、一度に1つのウォッチドッグオブジェクトだけが使用できます。1つのウォッチドッグオブジェクトを使用した後は、「Watchdog Clear」VIまたは上級ウォッチドッグVIを使用して現行のウォッチドッグオブジェクトを閉じなければ別のウォッチドッグオブジェクトを使用できません。