(57)【要約】【課題】電気的にともに接続され、制御下の少なくとも１つの装置への入力として提供される複数の出力を有する冗長コントローラ間のアービトレーションを行うアービトレーション機構を提供すること。【解決手段】アービトレーション機構は、冗長コントローラのうちのどのコントローラがアクティブ・コントローラであるかを自動的に決定するロジック、およびアクティブ・コントローラのみによって制御される出力を少なくとも１つの装置への入力として確実に使用可能にする冗長コントローラのハードウェア出力インターロックを含む。アービトレーション機構は、アクティブ・コントローラを障害について監視し、障害の検出に基づいて、アクティブ制御を、少なくとも１つの装置に透過的である冗長コントローラのうちの別のコントローラに自動的に切り替えるロジックも含む。【選択図】図１
2005302024.tif 000002
【特許請求の範囲】
【請求項１】
冗長コントローラのアービトレーションを提供する方法であって、
冗長コントローラのうちのどのコントローラがアクティブ・コントローラであるかを自動的に決定するステップのためのロジックを提供するステップであって、前記冗長コントローラによって制御される複数の出力がともに電気的に接続され、少なくとも１つの装置への入力として提供されるステップと、
前記アクティブ・コントローラのみによって制御される出力を前記少なくとも１つの装置への入力として確実に使用可能にする前記冗長コントローラのハードウェア出力インターロックを提供するステップと
を含む方法。
【請求項２】
前記冗長コントローラのコントローラごとに一意の識別を提供するステップをさらに含み、前記自動的に決定するステップが前記一意の識別を使用して、前記冗長コントローラのうちのどのコントローラがアクティブ・コントローラであるかを自動的に決定するステップを含む請求項１に記載の方法。
【請求項３】
前記冗長コントローラの一意の識別を提供する前記ステップが、前記冗長コントローラのコントローラごとにハードワイヤード識別ビットを提供するステップを含む請求項２に記載の方法。
【請求項４】
前記アクティブ・コントローラを可能性のある障害について監視するステップ、および、障害の検出に基づいて、アクティブ制御を前記冗長コントローラのうちの別のコントローラに自動的に切り替えるステップのためのロジックを提供するステップをさらに含む請求項１に記載の方法。
【請求項５】
前記監視するステップが前記冗長コントローラのうちの前記アクティブ・コントローラのウォッチ・ドッグ・タイマを使用して、前記アクティブ・コントローラの前記ウォッチ・ドッグ・タイマが期限切れになると、前記アクティブ・コントローラの障害を検出するステップを含む請求項４に記載の方法。
【請求項６】
前記ハードウェア出力インターロックを提供するステップが、前記冗長コントローラの各コントローラによって制御される出力を使用可能／使用不可にし、前記アクティブ・コントローラのみの出力を前記少なくとも１つの装置への入力として確実に使用可能にする状態マシンを提供するステップを含む請求項１に記載の方法。
【請求項７】
前記冗長コントローラの各コントローラのウォッチ・ドッグ・タイマを使用し、前記冗長コントローラの前記コントローラから前記状態マシンに、入力としてウォッチ・ドッグ・タイマ信号の状況を提供するステップをさらに含み、前記状態マシンが、前記冗長コントローラの前記ウォッチ・ドッグ・タイマ信号の状況を使用して、前記冗長コントローラのうちのどのコントローラが前記少なくとも１つの装置への入力として出力を使用可能にするかを決定する請求項６に記載の方法。
【請求項８】
前記ハードウェア出力インターロックを提供するステップが、前記冗長コントローラのコントローラごとに前記状態マシンを提供するステップを含み、各状態マシンが関連するコントローラの一意の識別を入力としてさらに使用する請求項７に記載の方法。
【請求項９】
冗長コントローラ間のアービトレーションを行う方法であって、
前記冗長コントローラのうちのどのコントローラがアクティブ・コントローラであるかを自動的に決定するステップであって、前記冗長コントローラによって制御される複数の出力がともに電気的に制御され、少なくとも１つの装置への入力として提供されるステップと、
前記アクティブ・コントローラの障害について監視するステップと、
障害の検出に基づいて、アクティブ・コントローラを前記冗長コントローラのうちの別のコントローラに自動的に切り替えるステップであって、アクティブ制御を前記冗長コントローラのうちの前記別のコントローラに自動的に切り替えるステップは、前記少なくとも１つの装置に透過的であるステップと
を含む方法。
【請求項１０】
前記冗長コントローラのコントローラごとに一意の識別を提供するステップをさらに含み、前記自動的に決定するステップは、前記一意の識別を使用して、前記冗長コントローラのうちのどのコントローラがアクティブ・コントローラであるかを自動的に決定するステップを含む請求項９に記載の方法。
【請求項１１】
前記監視するステップが、前記冗長コントローラのうちの前記アクティブ・コントローラのウォッチ・ドッグ・タイマを使用し、前記ウォッチ・ドッグ・タイマが期限切れになると前記アクティブ・コントローラの障害を検出するステップを含む請求項９に記載の方法。
【請求項１２】
前記アクティブ・コントローラのみの出力を前記少なくとも１つの装置への入力として確実に使用可能にする前記冗長コントローラの出力インターロックを提供するステップをさらに含む請求項９に記載の方法。
【請求項１３】
前記提供するステップが、前記冗長コントローラのコントローラごとにウォッチ・ドッグ・タイマを提供し、前記冗長コントローラの前記出力インターロックを容易にするために用いる、前記冗長コントローラの各コントローラに関連付けられたウォッチ・ドッグ・タイマ信号の状況を提供することを含む請求項１２に記載の方法。
【請求項１４】
冗長コントローラのアービトレーションを提供するシステムであって、
冗長コントローラのうちのどのコントローラがアクティブ・コントローラであるかを自動的に決定するロジックであって、前記冗長コントローラの複数の出力がともに電気的に接続され、少なくとも１つの装置への入力として提供されるロジックと、
前記アクティブ・コントローラのみによって制御される出力を前記少なくとも１つの装置への入力として確実に使用可能にする前記冗長コントローラのハードウェア出力インターロックと
を含むシステム。
【請求項１５】
前記冗長コントローラのコントローラごとに一意の識別を提供する手段をさらに含み、自動的に決定する前記ロジックが、前記一意の識別を使用して前記冗長コントローラのうちのどのコントローラがアクティブ・コントローラであるかを自動的に決定する手段を含む請求項１４に記載のシステム。
【請求項１６】
前記冗長コントローラの一意の識別を提供する前記手段が、前記冗長コントローラのコントローラごとにハードワイヤード識別ビットを提供する手段を含む請求項１５に記載のシステム。
【請求項１７】
前記アクティブ・コントローラの可能性のある障害について監視し、障害の検出に基づいて、アクティブ制御を前記冗長コントローラのうちの別のコントローラに自動的に切り替えるロジックをさらに含む請求項１４に記載のシステム。
【請求項１８】
監視するための前記ロジックが前記冗長コントローラのうちの前記アクティブ・コントローラのウォッチ・ドッグ・タイマを使用して、前記アクティブ・コントローラの前記ウォッチ・ドッグ・タイマが期限切れになると、前記アクティブ・コントローラの障害を検出する手段を含む請求項１７に記載のシステム。
【請求項１９】
前記ハードウェア出力インターロックが、前記冗長コントローラの各コントローラによって制御される出力を使用可能／使用不可にし、前記アクティブ・コントローラのみの出力を前記少なくとも１つの装置への入力として確実に使用可能にする状態マシンを含む請求項１４に記載のシステム。
【請求項２０】
前記冗長コントローラの各コントローラのウォッチ・ドッグ・タイマを使用し、前記冗長コントローラの前記コントローラから前記状態マシンに、入力としてウォッチ・ドッグ・タイマ信号の状況を提供する手段をさらに含み、前記状態マシンが、前記冗長コントローラの前記ウォッチ・ドッグ・タイマ信号の状況を使用して、前記冗長コントローラのうちのどのコントローラが前記少なくとも１つの装置への入力として出力を使用可能にするかを決定する請求項１９に記載のシステム。
【請求項２１】
前記ハードウェア出力インターロックが、前記冗長コントローラのコントローラごとに状態マシンを含み、各状態マシンが関連するコントローラの一意の識別を入力としてさらに使用する請求項１４に記載のシステム。
【請求項２２】
冗長コントローラ間のアービトレーションを行うシステムであって、
冗長コントローラのうちのどのコントローラがアクティブ・コントローラであるかを自動的に決定する手段であって、前記冗長コントローラの複数の出力がともに電気的に接続され、少なくとも１つの装置への入力として提供される手段と、
前記アクティブ・コントローラを障害について監視する手段と、
障害の検出に基づいて、アクティブ制御を前記冗長コントローラのうちの別のコントローラに自動的に切り替える手段であって、アクティブ制御を冗長コントローラのうちの別のコントローラに自動的に切り替える手段が前記少なくとも１つの装置に透過的である手段と
を含むシステム。
【請求項２３】
前記冗長コントローラのコントローラごとに一意の識別を提供する手段をさらに含み、前記自動的に決定する手段が前記一意の識別を使用して、前記冗長コントローラのうちのどのコントローラがアクティブ・コントローラであるかを自動的に決定する手段を含む請求項２２に記載のシステム。
【請求項２４】
前記監視する手段が前記冗長コントローラのうちの前記アクティブ・コントローラのウォッチ・ドッグ・タイマを使用して、前記ウォッチ・ドッグ・タイマが期限切れになると前記アクティブ・コントローラの障害を検出する手段を含む請求項２２に記載のシステム。
【請求項２５】
前記アクティブ・コントローラのみの出力を前記少なくとも１つの装置への入力として確実に使用可能にする前記冗長コントローラの出力インターロックを提供する手段をさらに含む請求項２２に記載のシステム。
【請求項２６】
前記提供する手段が、前記冗長コントローラのコントローラごとにウォッチ・ドッグ・タイマを提供し、前記冗長コントローラの前記出力インターロックを容易にするために用いる、前記冗長コントローラの各コントローラに関連付けられたウォッチ・ドッグ・タイマ信号の状況を提供する手段を含む請求項２５に記載のシステム。
【請求項２７】
マシンによって読取り可能であり、冗長コントローラ間のアービトレーションを行う方法を実行するために、前記マシンによって実行可能な命令のうちの少なくとも１つのプログラムを確実に記憶する少なくとも１つのプログラム記憶装置であって、前記方法が
前記冗長コントローラのうちのどのコントローラがアクティブ・コントローラであるかを自動的に決定するステップであって、前記冗長コントローラによって制御される複数の出力がともに電気的に接続され、少なくとも１つの装置への入力として提供されるステップと、
前記アクティブ・コントローラを障害について監視するステップと、
障害の検出に基づいて、アクティブ制御を前記冗長コントローラのうちの別のコントローラに自動的に切り替えるステップであって、アクティブ制御を前記冗長コントローラのうちの前記別のコントローラに自動的に切り替える前記ステップは、前記少なくとも１つの装置に透過的であるステップと
を含むプログラム記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、冗長制御システムの分野に関し、より詳細には、冗長コントローラのためのハードウェア出力インターロック、および冗長コントローラ間の自動切り替え機能を使用する冗長コントローラのためのアービトレーション機構に関する。
【背景技術】
【０００２】
信頼性を向上させるために、多くのタイプのシステムにおける冗長性が提供される。例えば、コントローラによって稼働されるシステム複合体（system complex）では、コントローラを冗長にすることができる場合、システムの可用性を大幅に向上させることができる。サーバ・システムのコントローラは、システムの電源をオン／オフすることや、システムを構成すること、ならびにセットアップ情報および状況情報をプロセッサ、メモリ、および入出力（Ｉ／Ｏ）要素へ伝達することなどの機能を果たすことができる。こうしたコントローラの障害は、サーバ・システムを動作不能にすることになり得る。
【０００３】
冗長コントローラを実装するために、選択機構は、どのコントローラが制御下の装置またはシステムを管理するアクティブ・コントローラとなるか、またどのコントローラがバックアップとして待機しているアイドル・コントローラであるかを決定することが求められる。選択機構またはアービトレーション機構（arbitration function）は、冗長コントローラの複数の出力がともに電気的に外部で接続され、制御下の装置／システムへの入力として提供される環境において複雑になる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
出願人は、こうした環境では、可能性のある競合データまたは制御下の装置に対する潜在的な損傷を回避するために、冗長コントローラの出力を同じ瞬間に使用可能にすることができないように設計を実施すべきであると理解している。本発明は、冗長コントローラによって制御される複数の出力がともに電気的に接続され、制御下の装置への入力として提供される上記の環境内でこれらのアービトレーションの必要性に対処する機構を提供することを対象としている。
【課題を解決するための手段】
【０００５】
一態様では、本明細書には、冗長コントローラのアービトレーションを提供する方法が提供されている。この方法は、冗長コントローラのうちのどのコントローラがアクティブ・コントローラであるかを自動的に決定するロジックを提供するステップであって、冗長コントローラによって制御された複数の出力がともに電気的に接続され、少なくとも１つの装置への入力として提供されるステップと、アクティブ・コントローラのみによって制御される出力を少なくとも１つの装置への入力として確実に使用可能にする冗長コントローラのハードウェア出力インターロックを提供するステップとを含む。
【０００６】
別の態様では、冗長コントローラ間のアービトレーションを行う方法が提供される。この方法は、冗長コントローラのうちのどのコントローラがアクティブ・コントローラであるかを自動的に決定するステップであって、冗長コントローラによって制御された複数の出力がともに電気的に接続され、少なくとも１つの装置への入力として提供されるステップと、アクティブ・コントローラを障害について監視するステップと、障害の検出に基づいて、アクティブ制御を冗長コントローラのうちの別のコントローラに自動的に切り替えるステップであって、アクティブ制御を冗長コントローラのうちの別のコントローラに自動的に切り替えるステップが少なくとも１つの装置に透過的であるステップとを含む。
【０００７】
上記に概説した方法に対応するシステムおよびコンピュータ・プログラムについても、本明細書で説明する。
【０００８】
さらに、別の特徴および利点は、本発明の技術によって実現される。本発明の他の実施形態および態様を、本明細書で詳しく説明する。
【０００９】
本発明の上記および他の目的、特徴、および利点は、以下の詳細な説明を添付の図面と併せ読めば明らかになる。
【発明を実施するための最良の形態】
【００１０】
概説したように、本明細書では、一態様として、装置、システム、システム複合体、ハードウェア構成要素、バスなど（本明細書では一般に、「装置」または「制御下の装置」と呼ぶ）を制御する冗長コントローラのアービトレーション機構が提供されている。冗長コントローラによって制御される複数の出力がともに電気的に接続され、１つまたは複数の制御下の装置への入力として提供される。アービトレーション機構によれば、ソフトウェア・ロジックは、冗長コントローラのうちのどのコントローラがアクティブ・コントローラであるかを自動的に決定し、ハードウェア出力インターロックは、アクティブ・コントローラのみの出力を１つまたは複数の制御下の装置への入力として確実に使用可能にする。アービトレーション機構は、アクティブ・コントローラの障害を検出し、アクティブ制御を冗長コントローラのうちの別のコントローラに自動的に切り替えるロジックも含み、アクティブ制御の別のコントローラへの自動切り替えは、１つまたは複数の制御下の装置に透過的である。
【００１１】
以下で詳述するように、本発明の一態様によるアービトレーション機構の一実施形態は、冗長コントローラの各コントローラのハードワイヤード識別ビット（hardwired identification bit）、アクティブ・コントローラおよびアイドル・コントローラを決定するソフトウェア・アービトレーション構成要素（component）またはアルゴリズム、さらにアクティブ・コントローラが故障した場合の切り替え機能、各コントローラのウォッチ・ドッグ・タイマ（例えばハードウェア・アービトレーション構成要素内に実装されている）、および状態マシン（これもまたハードウェア・アービトレーション構成要素の一部として実装されている）を使用して、フェール・セーフ（failsafe）としてコントローラの出力を使用可能または使用不可にして、１つのコントローラのみによって制御される出力を確実に同時に使用可能にする。ハードワイヤード識別ビットを使用するものとして示したが、コントローラを識別する任意の技術を、どのコントローラがデフォルトでアクティブ・コントローラかを決定する決定論的手法とともに使用することができる。冗長コントローラによって制御される出力は、ともに結合され、制御下の装置への単一の組の入力として提供されるため、コントローラが少なくとも２つの完全に冗長なコントローラを含むことを前提として、１つのコントローラから別のコントローラへのアクティブ制御の切り替えは、装置に透過的であるようにすることができる。
【００１２】
図１に、本発明によるアービトレーション機構の一例を示している。この例では、２つの冗長コントローラ１００（すなわちコントローラ０、コントローラ１）は、それぞれ出力１１０を制御する。出力１１０は、コントローラからの直接の出力、またはそれぞれのコントローラによって制御される他の回路からの出力を含み得る。図示したように、出力１１０はともに電気的に接続され、制御下の装置／システム１２０への１組の入力として提供される。この実施形態では、（本発明による）アービトレーション機構１３０は、ソフトウェア・アービトレーション構成要素１４０、およびハードウェア・アービトレーション構成要素１５０を含む。図５および図６を参照して後述するように、信号１５２は、コントローラ１００、およびアービトレーション機構１３０の間で交換される。各ハードウェア・アービトレーション構成要素１５０からの出力は、どの出力１１０が制御下の装置／システム１２０への入力として提供されるかを制御するフェール・セーフのハードウェア・インターロック使用可能（イネーブル）信号（hardware interlock enable signal）である使用可能／使用不可信号（enable/disable sigal）１５１である。
【００１３】
図２〜図４は、図１のソフトウェア・アービトレーション構成要素１４０によって実施されるロジックの一例を示している。ロジックは、図２で、２０２で「カウント」とラベル付けされたカウンタを時間１に等しく設定することによって開始する。以下で詳述するように、４つの時間間隔、すなわち時間１、時間２、時間３、および時間４がこのロジックによって使用される。特定の例によって、時間１は１０秒、時間２は１．５秒、時間３は０．５秒、および時間４は１秒を含み得る。「カウント」は、処理が図２のロジックを進む時間量である。
【００１４】
処理は次に、２０４で第２の時間、時間２よりも長く待つ。時間２は、本明細書では通信タイマ（すなわち「comm timer」）とも呼び、処理は最初に、通信タイマ期間が進行する前に確実に期限切れになるように十分な時間を待つ。
【００１５】
２０６で関連するコントローラの識別（id）ビットがチェックされてコントローラの識別を決定する。この例では、２つの冗長コントローラが図１に示したように使用されるとする。コントローラは、ハードワイヤード識別ビットによって識別することができる。例えば、ボードピンを使用して、どの位置にコントローラがあるか、すなわちコントローラがコントローラ０であるか、コントローラ１であるかを決定することができる。処理は、２０８で関連するコントローラがコントローラ０の位置にあるかどうかを決定する。そうである場合、処理は、２１０でそれ自体がアクティブ候補コントローラであると宣言し、２１２で関連するコントローラが故障したかどうかを決定する。「いいえ」である場合、２１４で他方のコントローラとの通信が試行される。処理は、２１６（図３参照）でコントローラが通信することができることを確認する。通信できる場合、２１８、２２０で他方のコントローラがアクティブであるかどうかの決定が行われる。「いいえ」の場合、処理は、２２２でそのコントローラがアクティブ・コントローラであることを宣言し、２２４で可変の「カウント」が時間１未満であるかどうかを決定する。「はい」の場合、処理は、２２６で「カウント」を「カウント＋１」に等しくなるように設定し、時間４を待った後で、照会（inquiry）２１２（図２参照）に戻って関連するコントローラが故障したかどうかを決定する。
【００１６】
図２に示すように、関連するコントローラが故障した（すなわち壊れている）場合、ロジックは、２４０でそれがアクティブ・コントローラになるべきことを他方のコントローラに通知し、２４２でそれらのコントローラが通信を行ったことを確認する。通信を行った場合、処理は、２５０でそれ自体がアイドル・コントローラであることを宣言する（図４）。それらのコントローラが通信を行わなかった場合、処理は、２４４で時間１＋時間２（図２）を待って、第１のコントローラが故障した（すなわちタイム・アウトした）ことを第２のコントローラが確実に認識するようにする。次いで処理は、２５０でそれ自体がアイドル・コントローラであることを宣言する。
【００１７】
図３に示すように、照会２１６で２つのコントローラが通信を行えなかった場合、処理は、２５２で他方のコントローラのウォッチ・ドッグ・タイマをチェックする。後述するように、選択されたアクティブ・コントローラのアービトレーション・ソフトウェア構成要素のみがその組のハードウェアのウォッチ・ドッグ・タイマの設定に取りかかり、これによってその関連する出力が使用可能になる。アイドル・コントローラのアービトレーション・ソフトウェア構成要素は、そのハードウェア・アービトレーション構成要素のウォッチ・ドッグ・タイマを設定せず、それによってその制御された出力を使用不可に維持する。したがって処理は、２５４で他方コントローラのウォッチ・ドッグ・タイマが設定されているかどうかを決定し、「はい」である場合、１つのコントローラのみがアクティブ制御を有することができるため、２５０（図４）でそれ自体がアイドル・コントローラであることを宣言する。他方のウォッチ・ドッグ・タイマが設定されていない場合、処理は、２２２でそれ自体がアクティブ・コントローラであることを宣言し、上述したように次に進む。
【００１８】
それ自体がアクティブ・コントローラであることを宣言した後、カウント値が時間１以上である場合、処理は、２３０（図３）でカウントを１に設定し、２３２でそのウォッチ・ドッグ・タイマを設定する。任意選択で、次いで２３４でそのウォッチ・ドッグ・タイマを読み、２３６でそれが正しく設定されていることを確認し、正しく設定されている場合、処理は２２８で時間４を待った後で戻って、２１２（図２）で関連するコントローラが故障したかどうかを決定する。ウォッチ・ドッグ・タイマが正しくない場合、処理は、２３８でコントローラの障害を宣言する。
【００１９】
関連するコントローラが制御０位置以外にある場合、処理は、２０８（図２）の照会から、２６０でコントローラが制御１位置にあることを確認する。「いいえ」の場合、処理は、２６２（図４）で他のコントローラと通信して明らかに無効な識別（id）からの回復を試行する。２６４で他方のコントローラが制御０の位置にある場合、アービトレーション・ソフトウェアは、２５０でその関連するコントローラがアイドル・コントローラであることを宣言する。そうでない場合、処理は、２１０（図２）でそれ自体がアクティブ候補コントローラであることを宣言し、上述したようにアクティブ制御の取得を試行する。
【００２０】
コントローラがコントローラ１の位置にあると仮定すると、処理は、２５０（図４）でそれ自体がアイドル・コントローラであると宣言し、２７０でそのウォッチ・ドッグ・タイマをクリアして、再度そのコントローラの制御された出力を確実に使用不可にする。次いで処理は、２７２で通信タイマを時間２に等しくなるように設定し、２７４で時間３を待つ。時間３は、通信タイマの時間未満である。上述したように、通信タイマは、１．５秒に設定され得る。これは、コントローラがそれ以内で通信する周期である。次いで処理は、２７６で、他方のアクティブ・コントローラが、その関連するコントローラがアクティブであることを要求したかどうかを決定し、「いいえ」である場合、２７８で通信タイマをチェックする。２８０で通信タイマが期限切れである場合、処理は戻って、２７４で時間３を待つ。そうでない場合、処理は、２８２で他方のコントローラのウォッチ・ドッグ・タイマをチェックし、２８４で他方のコントローラのウォッチ・ドッグ・タイマが設定されているかどうかを決定する。「はい」の場合、処理は戻って、２７４で時間３を待つ。そうでない場合、処理は、２２２（図３）でその関連のコントローラがアクティブ・コントローラであることを宣言する。第１のコントローラが第２のコントローラをアクティブ・コントローラにした場合、照会２７６から、第２のコントローラは、２２２でそれ自体がアクティブ・コントローラであることを宣言する。
【００２１】
図５および図６は、アービトレーション・ハードウェア構成要素１５０の一実施形態を示している図１の回路のより詳細な例を示している。図示したように、各アービトレーション・ハードウェア構成要素１５０は、関連するコントローラ１００（コントローラ０、コントローラ１）のアービトレーション・ソフトウェア構成要素１４０と通信する。アービトレーション・ハードウェア回路の１つのみが、関連するコントローラ１００によって制御される出力１１０に使用可能信号を提供する。次いでこれらの出力１１０は、制御下の装置／システム１２０への入力として提供される。
【００２２】
アービトレーション・ハードウェア１５０内には、通信制御されるデジタルの入力／出力（communicationcontrolled digital inputs/output）（ＤＩＯＳ）３００が示されている。ＤＩＯＳ３００からの出力は、信号Ｙ４およびＹ３であり、それぞれウォッチ・ドッグ・タイマ回路３１０のクリア（ＣＬＲ）入力および設定（ＳＥＴ）入力に送信される。ＤＩＯＳ３００からの設定出力およびクリア出力は、上述したロジックに従って、アービトレーション・ソフトウェア１４０によって制御される。ウォッチ・ドッグ・タイマ回路３１０からの出力は、電源オン時にロー（low）でなければならない信号「ＷＤ」である。信号「ＷＤ」は、状態マシン（statemachine）３２０への１つの入力として提供され、またＤＩＯＳ３００の入力Ｙ１として提供される。入力Ｙ１は、それ自体のウォッチ・ドッグ・タイマ出力の状態をアービトレーション・ソフトウェアに通知する。また、状態マシン３２０への入力は、関連するコントローラの識別「ＩＤ」、および他方側の状態「ＳＯＳ」である（すなわち、冗長コントローラのアービトレーション・ハードウェア構成要素のウォッチ・ドッグ・タイマの状態）。また、ＤＩＯＳ３００には、「ＳＯＳ」信号が入力Ｙ２として、および状態マシン３２０から出力される「ＥＮ」信号が入力Ｙ０として提供される。これらの信号は、再度、図２〜４に関して上述したアービトレーション・ソフトウェア・ロジックで使用される。ウォッチ・ドッグ・タイマ出力「ＷＤ」は、状態マシン３２０からこちら側の「ＳＴＳ」信号の状態によって制御されるインバータ３３０にも提供される。インバータ３３０からの出力は、図示したように、他方のハードウェア・アービトレーション構成要素１５０への「ＳＯＳ」信号として提供される。関連するコントローラが故障した場合、「ＳＯＳ」信号は、図示したように、抵抗およびＶＣＣによって他方のアービトレーション・ハードウェアに供給される。
【００２３】
図７は、アービトレーション・ハードウェア構成要素１５０の状態マシン３２０の一例を示している。一般に、各コントローラ・ハードウェアからのウォッチ・ドッグ・タイマ信号の状況を状態マシンへの入力として使用して、関連するコントローラによって制御される出力を使用可能にすべきかどうかを決定する。アクティブ・コントローラのウォッチ・ドッグ・タイマの設定は、設定されていないアイドル・コントローラのウォッチ・ドッグ・タイマと連動して、アクティブ・コントローラによって制御される出力を使用可能にする。状態マシンは、このハードウェア・インターロック機構が、両方のコントローラによって制御される出力をほんの瞬間であっても決して同時に使用可能にしないように設計される。アイドル・コントローラのアービトレーション・ソフトウェア構成要素は、アクティブ・コントローラのウォッチ・ドッグ・タイマの状況を頻繁に監視する。アクティブ・コントローラが故障すると、アービトレーション・ソフトウェア構成要素は、アイドル・コントローラがアクティブ・コントローラと交代して、アクティブ・コントローラとなることができるようにする。古いアクティブ・コントローラのウォッチ・ドッグ・タイマがもはや設定されていない結果としてその出力が使用不可である限り、新しいアクティブ・コントローラは、そのウォッチ・ドッグ・タイマを設定し、それによってその出力を使用可能にすることができる。
【００２４】
図７に示すように、状態マシンで可能な４つの状態がある。すなわち、アイドル・デフォルト４００、アクティブ候補４１０、アクティブ４２０、および未使用状態４３０である。状態マシンへの入力は、ＩＤ（例えば０はコントローラ０スロットに、１はコントローラ１スロットに等しい）、１＝アイドル、０＝アクティブまたはアクティブ候補であるＳＯＳ（他方側の状態）、および０＝アイドル、１＝アクティブになろうと試行する、またはアクティブのままであるＷＤ（ウォッチ・ドッグ・タイマ）である。状態マシンからの出力は、関連するコントローラによって制御される出力を使用可能にする使用可能信号（ＥＮ）、および状態がアクティブ候補またはアクティブ・コントローラであるときに設定されるこちら側の状態（ＳＴＳ）信号である。図７の「Ｘ」入力は、状態マシンの状態間で移動する、値が決まっていない（don't care）入力を示す。
【００２５】
起動すると、状態マシンは、アイドル・デフォルト状態４００になり、ＳＯＳおよびＷＤが両方１に等しくなるまでその状態に留まり、両方１に等しくなった時点でアクティブ候補状態４１０になる。アクティブ候補４１０からアクティブ・コントローラ状態４２０に移行するということは、コントローラがコントローラ０であり、そのウォッチ・ドッグ・タイマが設定されているか、ＩＤがコントローラ１であり、ＳＯＳが１に等しく、ＷＤが１に等しい必要がある。その状態に入ると、状態マシンは、そのウォッチ・ドッグ・タイマ４１０がタイム・アウトするまでアクティブ状態４２０に留まり、タイム・アウトした時点で、アイドル・デフォルト状態４００に戻る。状態マシンは、そのＩＤがコントローラ１であり、他方側の状態がアクティブである場合、またはそのウォッチ・ドッグ・タイマがアイドルである場合、アクティブ候補状態４１０からアイドル・デフォルト状態４００に戻ることもできる。未使用状態４３０には、電源投入時に偶然に入る可能性があり、入力に関係なく、状態マシンが最初にアイドル・デフォルト状態４００にジャンプすることができる自動機能がある。
【００２６】
要約すると、当業者は上記の説明から、本明細書に提供したのは、両方の冗長コントローラの状況と、どのコントローラがアクティブ・コントローラであり、どれがアイドル・コントローラであるかを自動的に決定するアービトレーション方式とに基づいて出力使用可能信号を提供する冗長コントローラのアービトレーション機構であることに留意されたい。コントローラの障害について自動的に監視し、制御を冗長コントローラのうちの別のコントローラに切り替える手段も提供されている。アービトレーション機構は、一方のコントローラのみによって使用可能になる出力が同時にアクティブになるようにハードウェア出力インターロックを使用することができ、それによってデータの競合、または出力または制御下の装置、あるいはその両方への潜在的な損傷（damage）を回避する。一実施形態では、アービトレーション機構は、コントローラを識別するための各冗長コントローラのハードワイヤード（hardwired；配線した）制御ビット、アクティブ・コントローラおよびアイドル・コントローラを決定するソフトウェア・アービトレーション構成要素、さらに切り替え機能、各コントローラのハードウェア・アービトレーション構成要素のウォッチ・ドッグ・タイマ、および冗長コントローラによって制御される出力の使用可能性を制御する状態マシンを使用する。
【００２７】
本発明は、例えばコンピュータ使用可能媒体を有するシステム（例えば１つまたは複数のコンピュータ・プログラム）に含めることができる。媒体は、例えば、本発明の機能を提供し、容易にするコンピュータ可読プログラム・コード手段などをそこに組み込んでいる。
【００２８】
さらに、本発明の機能を実行するためにマシンによって実行可能な命令の少なくとも１つのプログラムを記憶する、マシンによって読取り可能な少なくとも１つのプログラム記憶装置を提供することができる。
【００２９】
本明細書に記載したフロー図は、単に例にすぎない。本発明の意図から逸脱することなくそこに記載したこれらの図またはステップ（または操作）への多くの変形がある。例えば、ステップを異なる順序で実行することができ、またはステップを追加、削除、または変更することができる。これらの変形のすべては、本発明の一部としてみなされる。
【００３０】
好ましい実施形態を本明細書に詳しく示し、記載しているが、様々な変更、追加、置換などを、本発明の意図から逸脱することなく加えることができ、これらは、したがって特許請求の範囲で定義したような本発明の範囲内であるとみなされることは、当業者には明らかであろう。
【図面の簡単な説明】
【００３１】
【図１】本発明の一態様による、電気的にともに接続され、制御下の装置への入力として提供される制御された出力を有し、アービトレーション機構を有する冗長コントローラの一実施形態を示すブロック図である。
【図２】本発明の一態様による、冗長コントローラ間のアービトレーションを行って、アクティブ・コントローラを自動的に決定し、アクティブ・コントローラが故障すると一方のコントローラから別のコントローラに制御を自動的に切り替えるアービトレーション・ロジックの一実施形態を示すフロー図である。
【図３】本発明の一態様による、冗長コントローラ間のアービトレーションを行って、アクティブ・コントローラを自動的に決定し、アクティブ・コントローラが故障すると一方のコントローラから別のコントローラに制御を自動的に切り替えるアービトレーション・ロジックの一実施形態を示すフロー図である。
【図４】本発明の一態様による、冗長コントローラ間のアービトレーションを行って、アクティブ・コントローラを自動的に決定し、アクティブ・コントローラが故障すると一方のコントローラから別のコントローラに制御を自動的に切り替えるアービトレーション・ロジックの一実施形態を示すフロー図である。
【図５】本発明の一態様による、冗長コントローラ間の出力インターロックを提供するアービトレーション・ハードウェアの一実施形態を示す図１の冗長コントローラをより詳しく示す図である。
【図６】本発明の一態様による、冗長コントローラ間の出力インターロックを提供するアービトレーション・ハードウェアの一実施形態を示す図１の冗長コントローラをより詳しく示す図である。
【図７】本発明の一態様による、図５および図６の出力インターロックの状態マシンの一実施形態を示す図である。
【符号の説明】
【００３２】
０  コントローラ
１  コントローラ
１００  冗長コントローラ
１１０  出力
１２０  制御下の装置／システム
１３０  アービトレーション機構
１４０  ソフトウェア・アービトレーション構成要素
１５０  ハードウェア・アービトレーション構成要素
１５１  使用可能／使用不可信号
１５２  信号
３００  ＤＩＯＳ（デジタル入力／出力）
３１０  ウォッチ・ドッグ・タイマ回路
３２０  状態マシン
３３０  インバータ
４００  アイドル・デフォルト状態
４１０  アクティブ候補状態
４２０  アクティブ・コントローラ状態
４３０  未使用状態
【図１】
2005302024.tif 000003
【図２】
2005302024.tif 000004
【図３】
2005302024.tif 000005
【図４】
2005302024.tif 000006
【図５】
2005302024.tif 000007
【図６】
2005302024.tif 000008
【図７】
2005302024.tif 000009