ウォッチドッグ
ウォッチドッグは、組込み機器や産業機械、サーバなどでソフトウェアのハングや制御系の暴走を自動的に検出し、復帰させるための監視機構である。典型的にはタイマ(WDT: Watchdog Timer)を用い、所定の期限内に「キック(リセット)」が行われなければ異常とみなしてシステムをリセットまたは安全側へ移行させる。信頼性・可用性・機能安全を高める基本技術であり、IEC 61508やISO 26262などの安全規格においても、制御ソフトウェアの共通的な故障検出手段として扱われる。ハードウェア実装・OSレベル・アプリケーションレベルなど多層に配置することで、単一点故障に強いアーキテクチャを構成できる。
目的と基本原理
ウォッチドッグの目的は、異常停止やデッドロック、過負荷で周期処理が止まる事態を早期に検出し、被害拡大を防止することである。基本原理は単純で、正常時に周期処理がWDTを定期的にキックし、期限超過(タイムアウト)時に割込み・NMI・システムリセット・フェールセーフ遷移などの是正措置を発動する。キックは「正常に必要処理が完了した」ことの証跡として行い、無条件キックは避ける。
種類
- ウォッチドッグ(ハードウェアWDT): MCU内蔵の独立WDTや外付けスーパバイザIC。独立発振源を持つIWDGはCPU停止やクロック喪失にも有効。
- ソフトウェアWDT: OS/RTOSやサービスマネージャ(例: systemd)のタイマ監視。ユーザ空間の健全性を高頻度に見張れる。
- ウィンドウWDT: 早過ぎるキックも異常と判定。暴走ループの無意味な連打を検出できる。
- デュアル/クロス監視: 2系統で相互監視し、単一故障での見逃しリスクを下げる。
設計パラメータ
タイムアウト値は最悪実行時間(WCET)とジッタ、割込み遅延、GC/ページフォルト等を含めて設定する。起動時の初期化や通信確立を考慮した「ベースライン延長」や、期限直前の警告割込み(EWI)でダンプ・ログ保存を行う設計も有効である。リセット種別(コアのみ/全体)、リセットツリー、BOD(Brown-Out Detect)との連携も合わせて決める。
実装パターン
- チャレンジ&レスポンス: WDT管理タスクが可変パターンを提示し、各タスクが正答で応答。単純ループの誤キックを抑制。
- ヘルスモニタ/ハートビート集約: 重要タスクから心拍を集約し、全件揃ったときのみキック。
- 状態遷移完了フラグ: クリティカル区間の終了時だけキックし、途中停止を捕捉。
- 多段防護: アプリWDT→OS WDT→ハードWDTの順で厳しさを上げる。
故障モードと対策
典型的な落とし穴は、割込みハンドラ内での無条件キック、暴走ループ内での高速キック、WDTと同一クロック源依存による同時故障である。対策として、低優先度の監視タスクでキックする、ウィンドウWDTを用いる、独立発振のIWDGや外付け監視ICを併用する。異常時にはログ保存・安全出力OFF・機械停止などのフェールセーフを実行する。
規格と評価
ウォッチドッグは機能安全における診断手段の一つであり、DCavg(診断カバレッジ)やPFH/PFDavgの改善に寄与する。SIL/ASIL要求に応じて、独立性、冗長度、多様化(別実装/別クロック)を確保し、故障注入試験で検出率を実証する。証跡としてテスト手順、ログ、FMEA/FTAの更新を残す。
Linux/RTOSでの実装
Linuxでは/dev/watchdogと各種WDTドライバ、systemdのWatchdogSecでプロセス健全性を監視できる。RTOS(例: FreeRTOS)では「タスク監視」や「タイムスライス欠落」の検出を組み合わせ、致命的異常時はハードWDTへエスカレーションする。ユーザ空間の監視は細やか、ハードWDTは最終防護という位置づけで使い分ける。
マイコン実装の要点
MCUのWDT有効化、プリスケーラ設定、ウィンドウ閾値、キック手順(キー書込み)を正確に実装する。ブートローダやFW更新時は一時的に猶予を与えるか、セーフブートモードで確実に復帰できるようにする。電源不良やクロック逸脱を捕捉するため、BODやクロック監視(CLKMON)も同時に有効化する。
外付け監視ICの利点
外付けスーパバイザはVcc監視、リセット整形、WDT、ウィンドウ機能を一体で提供し、MCU暴走や内部WDT停止に対して独立した最後の砦となる。I2C/SPIでステータス読出し可能な製品は保守性も高い。
テストと検証
故障注入(無限ループ、ミューテックス競合、割込み嵐)、タイムアウト境界試験、電圧ディップ試験、温度ストレスで再現性を確認する。ログタイムスタンプと復帰時間(MTTR)を計測し、現場運用に必要な診断情報を最小限のフラッシュ書込みで確保する。
運用と保守
ウォッチドッグの閾値は製品の使用態様やソフト更新で変動する。現場計測による周期分布を基に、余裕度を保ちながら誤動作を抑える再設定が望ましい。遠隔監視では再起動回数やタイムアウト要因を可視化し、根本原因の除去につなげる。正しい設計・実装・検証・運用を通して、停止時間の最小化と安全確保を両立できる。