高性能の電圧監視ICにより、産業分野向け機能安全規格への準拠度を高める【Part 4】ウォッチドッグ・タイマによるプログラム・シーケンスの監視

概要

多くのデジタル・デバイスでは、プログラムによってあらかじめ定義された順序で一連の処理が実行されます。本稿では、実行される一連の処理をプログラム・シーケンスと呼ぶことにします。現実のシステムでは、プログラム・シーケンスの実行中にハードウェアの故障が発生する可能性があります。機能安全(FS:Functional Safety)について定めた基本的な規格であるIEC 61508-2は、そのような故障も対象としています。同規格の附属書Aの表A.10には、その種の故障を制御するために推奨されるいくつかの診断手法と対策が示されています。それらの手法では、独立した時間ベースを備えるウォッチドッグ・タイマ(時間ウィンドウに対応するものと対応していないもの)や、プログラム・シーケンスの時間的な監視と論理的な監視の組み合わせが使用されます。本連載のPart 3で説明したように、各手法には主張可能な診断カバレッジ(DC:Diagnostic Coverage)の最大値が対応づけられています。そして、いずれの手法においてもウォッチドッグ・タイマ(Watchdog Timer、以下 WDT)が使用されます。WDTは、マイクロコントローラ(MCU)をはじめとするデジタル・コントローラの安全な動作を保証する上で重要な役割を果たします。そこで、今回(Part 4)は、WDTを使用してそれらの診断機能を実装する方法について説明します。

はじめに

安全関連システム(SRS:Safety-related System)では、処理用のユニットとしてMCUが広く使用されています。それに伴い、システムの安全な動作を保証するためのMCUの診断手法の必要性が高まっています。IEC 61508-2は、処理用のユニット向けに推奨される診断手法をいくつか規定しています。その1つが、ハードウェア(1チャンネル)によるセルフテストです。そのセルフテストでは、テストの迅速化と故障検出範囲の拡大を実現するための特別なハードウェアが使用されます。代表的なハードウェアとして挙げられるのが、MCUが出力する特定のビット・パターンを周期的に監視するWDTです。

IEC 61508-2では、この用途で使用すべきものとして2種類のWDTを取り上げています。1つは、時間ウィンドウには対応しておらず、独立した時間ベースだけを備えるWDTです。もう1つは時間ウィンドウも備えるWDTです。また、同規格ではWDTを使用する方法だけでなく、プログラム・シーケンスの時間的な監視と論理的な監視を組み合わせる手法についても定めています。アナログ・デバイセズは、WDTの機能を備える高性能の監視ICを数多く提供しています。本稿では、それらのICを使用した場合に、プログラム・シーケンスを監視する診断手段の動作やDCがどのようなものになるのかを明らかにします。

時間ウィンドウには対応しておらず、独立した時間ベースだけを備えるWDT

IEC 61508の第2部では、独立した時間ベースを備える外部タイミング要素としてシンプルなWDTを取り上げています。WDTを使用すれば、MCUなどのコンピュータ・デバイスにおけるプログラム・シーケンスの障害を、指定された時間間隔内で検出する(指定された時間に基づく周期的な動作によって検出する)ことができます。その検出は2つのメカニズムによって実現されます。1つは、MCUがタイムアウトに達する前にWDTをリセットする信号を発行するというものです。これは、プログラム・シーケンスがスムーズに実行されていることを表します。もう1つは、WDTのタイムアウト期間に達したらWDTがMCUにリセット信号を発行するというメカニズムです。これはプログラム・シーケンスがスムーズに実行されていないということを意味します。

ここで図1(a)をご覧ください。この回路で使われている「MAX6814」は低消費電力のWDT ICです。この実装例は、時間ウィンドウには対応しておらず、独立した時間ベースだけを備えるWDT ICの使用法を表しています。周知のとおり、一般的なMCUはWDTを内蔵しています。しかし、MCUが故障したケースを想定すると、そのMCUが内蔵するWDTだけに頼って障害を検出するのは適切ではありません。これについては、CCF(Common Cause Failure)を考慮すると問題になることがわかります。CCFに関する懸念に対処するために、MCUが確実にリセットされた状態になるよう、独立したWDTを使用するということです1、2

図1(b)のフローチャートは、MCUのプログラムを実行した際のWDTの動作を表しています。この一連の流れが開始する前に、WDTのタイムアウト期間、つまりWDTの最大リセット間隔を設定しておかなければなりません。タイムアウト期間を定義すると、プログラムを実行する際にWDTも作動します。MCUは、タイムアウト期間に達する前にMAX6814のWDI(WDTの入力)ピンに信号を送信する必要があります。タイムアウト期間に達すると、MAX6814はMCUに対してリセット信号を発行します。MCUがリセットされると、システムは安全な状態になります。

図1. シンプルなWDTの動作
図1. シンプルなWDTの動作

このようなWDTのタイムアウト期間を活用すれば、プログラム・シーケンスの問題を検出できます。つまり、プログラム・シーケンスがループに陥ったり、割り込みサービス・ルーチンが時間内に復帰しなかったりした場合、その問題を把握できるということです。例えば、ソフトウェアのループごとに実行されるべき10個のサブルーチンのうち、実際に実行されたのは5個だけだったといった問題を検出することが可能になります。但し、プログラム・シーケンスに関するすべての問題を検出できるというわけではありません。例えば、プログラムの実行時間が予想以上に長かったり短かったりしたとしても、そのことが問題として扱われることはありません。あるいは、プログラム・セクションのシーケンスが正しく実行されたか否かといったことも検出されません。次のセクションでは、これらの問題に対処可能なWDTについて説明します。

独立した時間ベースと時間ウィンドウを備えるWDT

時間ウィンドウに対応するWDTはウィンドウWDTと呼ばれます。時間ウィンドウを使用すれば、プログラムの実行時間が過度に長かったり短かったりしたことを検出することが可能です。つまり、ウィンドウWDTを使えば、指定された有効ウィンドウ(オープン・ウィンドウ)と比べて、MCUがより長い応答を示すことと、より短い応答を示すことを禁止できます。また、シンプルなWDTを使用する場合とは異なり、すべてのサブルーチンがプログラムによって適切に実行されることも保証可能です。適切に実行されなかった場合には、WDTがMCUをリセットします3

図2に示したのは、MCU用の監視IC「MAX6753」を使用した実装例です。この構成により、MCUのプログラム・シーケンスを監視することができます。MAX6753は、上述したウィンドウWDTの機能を内蔵しています。タイムアウト期間は、外付けのコンデンサによって設定可能です。一方、図3に示したのは電源用の監視IC「MAX42500」を使用した別の実装例です。このICもウィンドウWDTの機能を備えています。WDTに関する時間はI2Cを介して設定可能です。そのため、外付け部品の数を効果的に削減できます。それだけでなく、パケット・エラー・チェック(PEC)バイトによって障害の検出範囲を拡大できるようになっています(図4)。PECバイトを使用すれば、バスのエラー、スタック・バス、タイミングの問題、不適切な設定など、I2Cによる通信に関連する障害を検出可能です。それによりDCが向上します。

図2. ウィンドウWDTの動作
図2. ウィンドウWDTの動作
図3. ウィンドウWDTを用いた別の実装例。I2Cによって設定/制御を実施します。
図3. ウィンドウWDTを用いた別の実装例。I2Cによって設定/制御を実施します。
図4. PECバイトによるI2Cインターフェースの障害の検出
図4. PECバイトによるI2Cインターフェースの障害の検出

時間的な監視と論理的な監視を組み合わせる

上述したとおり、独立した時間ベースと時間ウィンドウを備えるWDTを使用すれば、シンプルなWDTを使用する場合と比べてDCが向上します。但し、ソフトウェアのサブルーチンが正しいシーケンスで実行されたか否かを診断することはできません。そこで、以下ではこの問題に対処可能な診断技術を紹介します。それは、時間的な監視と論理的な監視を組み合わせるというものです。この診断技術を使用すれば、IEC 61508-2に準拠したプログラム・シーケンスに対して高いDCが得られます。では、上記の診断技術はどのように実装すればよいのでしょうか。その例としては、ウィンドウWDTと、プログラム・シーケンスが正しい順で実行されたか否かを確認する機能を組み合わせる方法が挙げられます。これについては、図2の回路と図5のシーケンスを組み合わせると考えれば視覚的に理解できるでしょう。この例において、MCUの各プログラム・ルーチンでは文字と数字の一意的な組み合わせを使用します。それらの組み合わせは、ルーチンが実行されるたびに配列に格納されます。最後のルーチンが実行されたとき、すべてのワードが配列に正しく設定されている場合だけ、MCUはWDTにリセット信号を送信します。

図5. マーカによるシーケンスのロジックの確認
図5. マーカによるシーケンスのロジックの確認

チャレンジ・レスポンス型のアーキテクチャ

システムによっては、MCUの障害を検出するために、より高いDCが必要になることがあります。単にウィンドウ時間内にパルスを送り返すだけでは不十分なケースがあるということです。そのような場合には、MCUに複雑な計算などのタスクを実行させることによって完全に動作していることを確認する方法が有効です。この方法には、MAX42500が備えるチャレンジ・レスポンス型のWDT機能を利用できます。このWDT機能では、同ICが備えるキー値のレジスタをチャレンジ・メッセージの開始点として読み取ります。MCUは、このメッセージを利用して、有効なウィンドウ内でWDTを起動するためにMAX42500に送り返す必要がある適切なレスポンスを算出します。この種のチャレンジ・レスポンス型のWDTは、通常のウィンドウWDTと同様に動作します。但し、WDTが立ち上がりエッジでリフレッシュされるのではなく、キー値のレジスタが更新されます。この点が大きく異なります。特に、MAX42500の場合、WDTの入力はI2Cを使用して実装されます。WDTの出力としては、リセット出力ピンが使われます(図6)。

図6. チャレンジ・レスポンス型のウィンドウWDT
図6. チャレンジ・レスポンス型のウィンドウWDT

MAX42500は、LFSK(Linear-feedback Shift Key:線形フィードバック・シフト・キー)レジスタを備えています。このレジスタは、x8 + x6 + x5 + x4 + 1の多項式に対応しています。そしてこのレジスタは、すべてのビットをMSBの方向にシフトし、計算されたビットの値を新たなLSBとして挿入します。MCUは、この方法によってレスポンスを算出します。その結果は、I2Cを介してMAX42500のレジスタに返されます。この多項式は原始多項式であると同時に、最大長が8ビットのフィードバック多項式でもあります。この式により、すべてのビットの値の組み合わせ(1~255)が生成され、数値の順序が擬似ランダムなものになることが保証されます4、5

このようなチャレンジ・レスポンス型のアーキテクチャを利用すれば、MCUによって引き続き実際の計算を実行できることが明らかになります。そのため、時間的な監視と論理的な監視を組み合わせたプログラム・シーケンスの監視方法を使用する場合よりも、高いDCが得られます。これは、WDTをリセットする信号を発行する前にワードの配列が正しいか否かを確認するだけの意思決定用ルーチンをMCUに実装する方法とは対照的です。

主張できるDC

IEC 61508-2は、SRS内のブロックごとに推奨される各診断手段について、主張可能な最大のDCを定めています。表1は、同規格に準拠するプログラム・シーケンスにWDTを適用した場合のDCについてまとめたものです。

表1. WDTを適用したプログラム・シーケンスのDC。IEC 61508-2の附属書Aの表A.10をベースにしています。
診断技術 達成可能だと考えられる最大DC
時間ウィンドウには対応せず、独立した時間ベースだけを備えるWDT
独立した時間ベースと時間ウィンドウを備えるWDT
プログラム・シーケンスの時間的な監視と論理的な監視の組み合わせ

但し、実際には同規格に対応しているわけではない様々な実装が存在します。そのため、どれだけのDCを主張できるのかという検証は障害挿入試験によってのみ行えます。

まとめ

本稿では、WDTを使用してプログラム・シーケンスの障害を診断する方法を3つ紹介しました。それらの手法は、いずれもIEC61508-2で推奨されているものです。最初に取り上げたWDTは、時間ウィンドウには対応しておらず、独立した時間ベースだけを備えていました。このタイプのWDTは容易に実装できます。但し、この診断手法を用いた場合、低いレベルのDCしか主張できません。2つ目に紹介した方法は、独立した時間ベースと時間ウィンドウの両方を備えるWDTを使用することで実装できます。この方法であれば、中程度のDCを主張できます。高いDCを実現するには、WDTを使用した通常の時間的な監視に論理的な監視を組み合わせます。更にチャレンジ・レスポンス型のウィンドウWDTを使用すれば、MCUの計算能力をチェックすることも可能になります。この機能を利用すれば、プログラム・シーケンスの障害に対するDCを更に高められます。

参考資料

1 「IEC 61508 All Parts, Functional Safety of Electrical/Electronic/Programmable Electronic Safety-Related Systems(IEC 61508 電気・電子・プログラマブル電子安全関連系の機能安全 - 全パート)」国際電気標準会議(IEC:International Electrotechnical Commission)、2010年

2Top Misunderstandings About Functional Safety(機能安全に関するよくある誤解)」TÜV SÜD、2025年

3Basics of Windowed Watchdog Operation(ウィンドウ・ウォッチドッグの動作の基本)」Analog Devices、2021年12月

4Pseudo Random Number Generation Using Linear Feedback Shift Registers(線形フィードバック・シフト・レジスタを使用して擬似乱数を生成する)」Maxim、2010年6月

5 Mohammed Abdul Samad AL-khatib、Auqib Hamid Lone 「Acoustic Lightweight Pseudo Random Number Generator based on Cryptographically Secure LFSR(暗号論的にセキュアなLFSRをベースとする音響式の軽量な擬似乱数生成器)」International Journal of Computer Network and Information Security、Vol. 2、2018年2月

著者

Bryan Borres

Bryan Borres

Bryan Angelo Borresは、アナログ・デバイセズのシニア・アプリケーション・エンジニアです。TÜV認定の機能安全エンジニアとして、産業分野向けの機能安全対応製品を開発する複数のプロジェクトに参画。また、システム・インテグレータがIEC 61508などの産業分野向け機能安全規格に準拠した電源のアーキテクチャを設計できるよう支援しています。これまで約7年間にわたり、効率が高く堅牢性に優れるパワー・エレクトロニクス・システムの設計に携わってきました。IEC TC65/SC65Aを対象とするIECのフィリピン国内委員会とIEEEの機能安全規格委員会のメンバーも務めています。大学院ではパワー・エレクトロニクスに関する学位を取得しました。

christopher macatangay

Christopher Macatangay

Christopher Macatangayは、アナログ・デバイセズのシニア・プロダクト・アプリケーション・エンジニアです。産業用の電源製品群のサポートを担当しています。2015年に入社。それ以来、お客様を成功に導くために、アナログ製品/ミックスド・シグナル製品の技術サポート、システム検証、アプリケーション開発の面で重要な役割を果たしてきました。アナログ・デバイセズに入社する前は、6年間にわたり電源メーカーでテスト開発エンジニアとして業務に従事。信頼性の高い製品を対象とする自動テスト・ソリューションの設計/実装に注力していました。