ウォッチドッグタイマとは
ウォッチドッグタイマ (英: Watch Dog Timer: WDT) とは、プログラムで動作する様々な機器の異常動作を検出してWDT割り込み信号を出力する電子回路です。
制御プログラムを実行するマイコンには一般的にWDTが内蔵されています。
ウォッチドッグタイマの使用用途
スマートフォン等のデジタル機器やエアコン等の家電製品、ロボット等の産業用機器、自動車に至るまで、様々な機器がマイコンで制御されています。
このようなマイコン搭載の機器は用途に応じて動作する内容が決まっているため、デバッグ済みの決まったプログラムによって動作する仕組みです。しかし、デバッグ時に想定されなかった稀なケースや周辺デバイスの故障等により、システムが異常な動作をする可能性があります。
マイコン制御下における異常動作の場合、システムにリセットをかけて正常な状態に戻す必要があります。特に自動車や航空機、産業用機器を制御するマイコンの異常動作は重大な事故につながる可能性があります。
WDTはこのような場合に備え、異常な動作状態を検知してマイコンに割り込みをかけてリセットすることで、システムを正常状態に復帰させることが可能です。
ウォッチドッグタイマの原理
WDTは決められた時間をカウントしており、この時間内に中央処理装置からのリセット信号を受け取ると最初からカウントをやり直します。万一この時間内にリセット信号が来なければ異常状態と判断し、割り込み回路に対してWDT割り込みの信号を出力してマイコンの動作がリセットされます。
ソフトウェア側では定期的にWDTリセット信号を出力するようにプログラムを設計します。これにより、プログラムが意図通りに動いている間はWDTがリセットされ、意図から外れた状態になるとWDTがリセットされず、異常として検出されるようになります。
タイマ時間の設定にはデジタル的に設定する方法以外にアナログ的に設定する方法があり、その場合は外付けの容量を変更することによって設定時間が調整可能です。
ウォッチドッグタイマの選び方
WDTは一般にマイコンに内蔵されていますが、システムに要求される信頼性が非常に高い場合は外付けの構成を選ぶ必要があります。
WDTはマイコンの異常動作を検出するためのシステムのため、マイコンに内蔵されている場合、もしWDTが起動するまでに何かしらの異常が生じた場合はその異常を検出できなくなります。
航空機など異常動作が重大事故につながるようなシステムでは、フェールセーフの観点から不足の事態に備えた外付けWDTの併用も必要です。
ウォッチドッグタイマのその他情報
ウォッチドッグタイマの動作モード
WDTにはマイコンの様々な異常を検出するための3つの動作モードがあります。
1. タイムアウトモード
最も標準的なモードで、一定期間内にマイコンからのリセット信号入力がない場合、マイコンが異常状態にあるとみなして割り込み信号を出力するモードです。
動作モードとしては標準的ですが、例えばWDTリセット処理のルーチン中に無限ループに陥ったような場合、WDTは定期的にリセットされるため、これを異常状態として検出することはできません。
2. ウィンドウモード
前述の無限ループのような異常状態も検出するモードとしてウィンドウモードがあります。 タイムアウトモードの基本動作に加えて、一定期間内に規定回数以上の信号が入力された状態 (ダブルパルス) を異常状態として検出可能です。
ウィンドウモードではタイムアウトモードのように、タイマ上限値を越えた場合に割り込み信号を出力するだけでなく、下限値を設定してこの下限値以内にリセット信号を受けた場合も割り込み信号を出力します。
このように、下限値と上限値の間 (ウィンドウ) を正常状態とするため、その値の設定とプログラムでのリセット処理を慎重に決める必要がありますが、高度な異常検出が可能となります。人命に関わるなどのシステムで、より安全性が求められるアプリケーションにはウィンドウモードのWDTが必要といえます。
3. Q&Aモード
さらに高精度の異常検出が可能なモードです。Q&Aモードでは予め決められたデータをWDTに送信し、WDTはマイコンから送られてきた信号が予定されているものと合致しているかどうかを判断し、正常か異常かを判断します。
プログラムの中で必要に応じて適宜このような処理をするため、高精度な異常検出が可能ですが、プログラムの記述難易度が高くなります。
参考文献
https://www.ablic.com/jp/semicon/products/automotive/automotive-watchdog-timer/intro
https://ednjapan.com/edn/articles/1510/19/news009_2.html