Technology
ウォッチドッグタイマ
(ウォッチドッグタイマ)
ウォッチドッグタイマとは、マイコンやCPUのプログラムが正常に動作し続けているかを監視し、一定時間内に所定の処理が行われなかった場合に、リセットや安全処理を実行する機能です。英語のWatchdog Timerを略してWDTと呼ばれます。
組込機器では、ノイズ、ソフトウェア不具合、メモリ破損、処理の競合などによってプログラムが停止することがあります。ウォッチドッグタイマを使用すると、制御処理が停止した状態のまま機器が放置されることを防ぎやすくなります。
ハカルプラスでは、マイコン、入出力、通信、制御対象を確認し、監視周期、リセット後の出力状態、異常履歴を含むウォッチドッグ機能を検討します。
基本的な仕組み
ウォッチドッグタイマは、設定された時間を計測する独立したタイマです。プログラムが正常に動作している間は、タイマが満了する前に定期的なクリア処理を行います。
プログラム停止などによってクリア処理が実行されなくなると、タイマが満了し、マイコンをリセットします。このクリア操作は、ウォッチドッグの更新、キック、フィードなどと呼ばれます。
ソフトウェア停止の原因
- 無限ループへの入り込み
- 割込み処理から復帰できない
- メモリ破損や不正アドレスへのアクセス
- タスク間のデッドロック
- 処理負荷増加による応答停止
- 外来ノイズによるCPU誤動作
リセットによって一時的に復旧しても、原因が残っていれば再発するため、発生記録と原因調査が必要です。
内蔵型と外付け型
多くのマイコンにはウォッチドッグタイマが内蔵されています。追加部品が不要で、ソフトウェアから設定できます。
外付けウォッチドッグICは、CPUとは独立した電源・回路で監視できる点が特長です。マイコン内部のクロック停止や、内蔵監視回路まで影響する故障を考慮する場合に使用します。
監視時間の設定
監視時間が短すぎると、正常な処理時間のばらつきや一時的な高負荷でリセットが発生します。長すぎると、制御停止を検出するまでの時間が長くなります。
通常処理、通信、メモリ保存、起動処理などの最大時間を確認し、必要な余裕を持たせます。
更新処理の配置
メインループの先頭で無条件にウォッチドッグを更新すると、その後の重要処理が停止していても監視できない場合があります。
入力処理、制御演算、出力更新、通信など、必要な処理がすべて正常終了した後に更新する構成が有効です。
複数タスクの監視
リアルタイムOSを使用する場合は、一つのタスクだけが正常でも、別のタスクが停止している可能性があります。
各タスクが正常完了フラグを更新し、監視タスクがすべての状態を確認した後にウォッチドッグを更新します。応答が必要なタスクごとに個別タイムアウトを設ける場合もあります。
ウィンドウウォッチドッグ
ウィンドウウォッチドッグは、更新が遅すぎる場合だけでなく、早すぎる場合も異常とする方式です。
異常ループで更新処理だけが高速に繰り返される状態を検出できます。指定された時間範囲内でのみ更新を許可します。
リセット後の動作
ウォッチドッグによるリセット後は、出力端子が一時的に不定状態になったり、初期値へ戻ったりする場合があります。
モーター、ヒーター、バルブなどの出力が危険側へ動かないよう、ハードウェアのプルアップ・プルダウン、出力禁止回路、リレー構成を検討します。
安全側への移行
リセットによって制御が一時停止するため、設備を安全側へ移行させる必要があります。例えば、ヒーターをOFF、モーターを停止、供給ゲートを閉止します。
マイコンが再起動するだけでは安全を確保できない場合は、外部監視回路やリレーで出力を遮断します。
リセット原因の判別
マイコンには、電源投入、低電圧、外部リセット、ウォッチドッグなどのリセット原因を示すレジスタが用意されている場合があります。
起動時に原因を読み取り、不揮発性メモリへ保存します。ウォッチドッグリセット回数が増えている場合は、プログラムやノイズの調査を行います。
連続リセットへの対策
異常原因が残っていると、起動、停止、再起動を繰り返すリセットループになる可能性があります。
一定回数以上のウォッチドッグリセットが発生した場合は、通常動作を開始せず、限定機能や保守モードで起動する方法があります。
データ保存時の注意
不揮発性メモリへの書込み途中でリセットされると、データが破損する可能性があります。書込み中の状態を管理し、チェックサムや二重化データを使用します。
ウォッチドッグ監視を一時的に延長する場合もありますが、無効化したまま戻さない不具合を防ぐ設計が必要です。
デバッグ時の扱い
デバッガでプログラムを一時停止すると、ウォッチドッグタイマだけが動作し続けてリセットされることがあります。
開発時にはデバッグ停止中の動作設定を使用しますが、製品版では監視が有効になっていることを確認します。
定期試験
プログラムで意図的に更新を停止し、ウォッチドッグリセットが発生することを確認します。リセット後の出力、異常表示、履歴保存まで点検します。
外付け監視回路を使用する場合は、マイコンからの監視信号を停止して動作を確認します。
ハカルプラスの対応
ハカルプラスでは、マイコンの処理周期、制御対象、通信処理を確認し、ウォッチドッグタイマの監視時間と更新条件を設計します。
リセット後の安全出力、リセット原因記録、連続再起動制限、外部監視回路まで含めた組込機器の信頼性向上を検討します。
よくある質問
Q. ウォッチドッグタイマがあればソフトウェア不具合は解決しますか?
A. 停止状態から復旧しやすくなりますが、不具合原因そのものを修正する機能ではありません。
Q. ウォッチドッグはどこで更新すればよいですか?
A. 重要な処理がすべて正常終了したことを確認した後で更新するのが有効です。
Q. 内蔵ウォッチドッグと外付けICはどちらがよいですか?
A. 必要な信頼性、監視範囲、コストに応じて選定し、重要設備では併用する場合もあります。
Q. リセット後に自動運転を再開してよいですか?
A. 機械位置や出力状態を確認できない場合があるため、安全な初期状態と再開条件が必要です。
Q. ウォッチドッグによるリセット履歴を残せますか?
A. リセット原因レジスタを読み取り、不揮発性メモリや上位機器へ保存できます。
関連ワード
同じカテゴリの『ハカル技術辞典』を見る