(57)【特許請求の範囲】
【請求項１】
シリアルバスで接続する複数のスレーブユニットを制御する第１のマスタユニットと、
前記複数のスレーブユニットを制御し、前記第１のマスタユニットと二重化された第２のマスタユニットとを有し、
前記第１のマスタユニットは、
自ユニットと接続された前記スレーブユニットへのアクセスで異常を検出したとき、異常を検出した箇所に関するアクセス結果と、当該スレーブユニットと同一のスレーブユニットへの前記第２のマスタユニットからのアクセス結果との組み合わせを用いて、異常であるユニットを判定する制御部
を有することを特徴とする情報処理装置。
【請求項２】
前記制御部は、
自ユニットと接続された前記スレーブユニットへのアクセスで異常箇所があるか否かを判定する異常箇所判定部と、
前記異常箇所判定部によって前記スレーブユニットへのアクセスで異常箇所があると判定された場合に、前記スレーブユニットと同一のスレーブユニットへのアクセスを、前記第２のマスタユニットに依頼するアクセス依頼部と、
前記異常箇所判定部によって異常箇所があると判定された異常箇所に関するアクセス結果と前記アクセス依頼部による依頼の結果を示すアクセス結果との組み合わせを用いて、異常であるユニットを判定する異常ユニット判定部と
を有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１のマスタユニットは、
前記スレーブユニットへのアクセスでマスタユニット中の異常となる可能性のある箇所に関するアクセス情報について、二重化されたマスタユニットの一方の前記アクセス情報と他方の前記アクセス情報との組み合わせにより異常と判定されるユニットの候補を記憶する記憶部を有し、
前記異常ユニット判定部は、
さらに、前記記憶部に記憶された、二重化されたマスタユニットのそれぞれの前記アクセス情報の組み合わせを用いて、前記スレーブユニットへのアクセスで異常の原因となったユニットを判定する
ことを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
自ユニットとシリアルバスで接続されたスレーブユニットへのアクセスで異常を検出したとき、異常を検出した箇所に関するアクセス結果と、自ユニットと二重化された他のマスタユニットとシリアルバスで接続された当該スレーブユニットと同一のスレーブユニットへの他のマスタユニットからのアクセス結果との組み合わせを用いて、異常であるユニットを判定する制御部
を有することを特徴とする制御装置。
【請求項５】
情報処理装置によって実行される異常ユニット判定方法であって、
シリアルバスで接続する複数のスレーブユニットを制御する第１のマスタユニットが前記スレーブユニットへのアクセスで異常箇所があるか否かを判定し、
前記判定する処理によって前記スレーブユニットへのアクセスで異常箇所があると判定された場合に、当該スレーブユニットと同一のスレーブユニットへのアクセスを、前記第１のマスタユニットと二重化された第２のマスタユニットに依頼し、
前記判定する処理によって異常箇所があると判定された異常箇所に関するアクセス結果と前記依頼する処理によって依頼した結果を示すアクセス結果との組み合わせを用いて、異常であるユニットを判定する
処理を含むことを特徴とする異常ユニット判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置などに関する。
【背景技術】
【０００２】
Ｉ２Ｃ（Inter  Integrated  Circuit）バスは、二線式の双方向シリアルバスであり、シリアルクロックおよびシリアルデータの２本の信号線で構成されるシンプルな構成であるので、導入が容易である。
【０００３】
同一のＩ２Ｃバスに、複数のＩ２Ｃユニットが接続される接続状態において、いずれかのＩ２Ｃユニットが、信号線内の電圧レベルが低くなるロースタックなどが原因でハングアップすると、他のＩ２Ｃユニットは通信することができなくなる。かかる場合に、Ｉ２Ｃバスと接続されたバスマスタユニットが、Ｉ２Ｃバスのシリアルデータ線の電圧に基づいて、ハングアップしたバススレーブユニットを特定し、かつリセットする技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−５５４７２号公報
【特許文献２】特開２００５−４７４５号公報
【特許文献３】特開２０１０−２１１８１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術では、バスマスタユニットにロースタックなどが原因でアクセス異常が発生した場合、バスマスタユニット側の異常であるのかアクセス先のバススレーブユニット側の異常であるのかを判定することができない。
【０００６】
開示の技術は、上記に鑑みてなされたものであって、Ｉ２Ｃバスに接続されたＩ２Ｃユニットに異常があった場合、どのＩ２Ｃユニットに異常があるのかを判定できる情報処理装置などを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願の開示する情報処理装置は、一つの態様において、シリアルバスで接続する複数のスレーブユニットを制御する第１のマスタユニットと、前記複数のスレーブユニットを制御し、前記第１のマスタユニットと二重化された第２のマスタユニットとを有し、前記第１のマスタユニットは、自ユニットと接続された前記スレーブユニットへのアクセスで異常を検出したとき、異常を検出した箇所に関するアクセス結果と、前記第２のマスタユニットと接続された前記スレーブユニットへの前記第２のマスタユニットからのアクセス結果とを用いて、異常であるユニットを判定する制御部を有する。
【発明の効果】
【０００８】
本願の開示する情報処理装置の一つの態様によれば、Ｉ２Ｃバスに接続されたＩ２Ｃユニットに異常があった場合、どのＩ２Ｃユニットに異常があるのかを判定できるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施例に係るＩ２Ｃバス装置の構成を示す機能ブロック図である。
【図２Ａ】図２Ａは、実施例に係る異常ユニット判定を実行するためのユニット間のＩ２Ｃバスの接続について説明する図である。
【図２Ｂ】図２Ｂは、実施例に係る異常ユニット判定の方法を説明する図である。
【図３】図３は、実施例に係る異常箇所判定を説明する図である。
【図４】図４は、実施例に係る異常ユニット判定マトリクスの一例を示す図である。
【図５】図５は、実施例に係る異常ユニット判定の具体例を説明する図である。
【図６】図６は、実施例に係る異常ユニット判定の別の具体例を説明する図である。
【図７】図７は、実施例に係る異常ユニット判定の別の具体例を説明する図である。
【図８】図８は、実施例に係る異常ユニット判定の別の具体例を説明する図である。
【図９】図９は、実施例に係る異常ユニット判定を実行するためのＩ２Ｃバス装置の一例を説明する図である。
【図１０】図１０は、実施例に係る異常ユニット判定を実行するためのハードウェアの全体構成一例を説明する図である。
【図１１】図１１は、ＳＶＣと対象ユニットとのＩ２Ｃバスの接続を説明する図である。
【図１２】図１２は、ＳＶＣに搭載されたＦＰＧＡを用いたＦＰＧＡ間通信を説明する図である。
【図１３】図１３は、ＳＶＣに搭載されたＦＰＧＡを用いたリセット制御を説明する図である。
【図１４】図１４は、ＳＶＣに搭載されたＩ２Ｃ−ＭＵＸの接続方法について説明する図である。
【図１５Ａ】図１５Ａは、運用ＳＶＣのＩ２Ｃ−ＭＵＸのステータス異常判定の手順を示すフローチャートである。
【図１５Ｂ】図１５Ｂは、運用ＳＶＣの対象ユニットとの接続異常判定の手順を示すフローチャートである。
【図１５Ｃ】図１５Ｃは、運用ＳＶＣの対象ユニットからの読取異常判定の手順を示すフローチャートである。
【図１５Ｄ】図１５Ｄは、運用ＳＶＣの対象ユニットへの書込異常判定の手順を示すフローチャートである。
【図１５Ｅ】図１５Ｅは、運用ＳＶＣの対象ユニットからの切断異常判定の手順を示すフローチャートである。
【図１６】図１６は、待機ＳＶＣへのアクセス依頼の手順を示すフローチャートである。
【図１７】図１７は、異常ユニット判定の手順を示すフローチャートである。
【図１８】図１８は、待機ＳＶＣのアクセス依頼待ちの手順を示すフローチャートである。
【図１９Ａ】図１９Ａは、待機ＳＶＣのＩ２Ｃ−ＭＵＸのステータス異常判定の手順を示すフローチャートである。
【図１９Ｂ】図１９Ｂは、待機ＳＶＣの対象ユニットとの接続異常判定の手順を示すフローチャートである。
【図１９Ｃ】図１９Ｃは、待機ＳＶＣの対象ユニットからの読取異常判定の手順を示すフローチャートである。
【図１９Ｄ】図１９Ｄは、待機ＳＶＣの対象ユニットへの書込異常判定の手順を示すフローチャートである。
【図１９Ｅ】図１９Ｅは、待機ＳＶＣの対象ユニットからの切断異常判定の手順を示すフローチャートである。
【図２０】図２０は、運用ＳＶＣへのアクセス結果通知の手順を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に、本願の開示する情報処理装置、制御装置および異常ユニット判定方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例では、Ｉ２Ｃバスを備えた情報処理装置であるＩ２Ｃバス装置に適用した場合を示す。しかし、本実施例によりこの発明が限定されるものではない。
【実施例】
【００１１】
まず、本実施例では、Ｉ２Ｃバス装置は、運用中に、Ｉ２Ｃバスに接続されたいずれかのＩ２Ｃユニットに異常があった場合、どのＩ２Ｃユニットに異常があるのかを判定する。かかる判定を実現するために、Ｉ２Ｃバス装置では、マスタ側のＩ２Ｃユニットとスレーブ側のＩ２Ｃユニットとを同一のＩ２Ｃバスを用いて１対多で接続せず、必ず１対１で接続するようにする。さらに、Ｉ２Ｃバス装置は、マスタ側に２個のＩ２Ｃユニットを配置し、マスタ側の２個のＩ２Ｃユニットから異なる経路を介してスレーブ側のＩ２Ｃユニットへそれぞれアクセスし、そのアクセス結果を統合して異常のＩ２Ｃユニットを判定する。
【００１２】
図２Ａは、実施例に係る異常ユニット判定を実行するためのユニット間のＩ２Ｃバスの接続について説明する図である。図２Ａに示すように、Ｉ２Ｃマスタユニット１Ａ、１ＢとＩ２Ｃスレーブユニット３とは、同一のＩ２Ｃバスを用いて１対１で接続する。
【００１３】
また、Ｉ２Ｃマスタユニット１Ａ、１ＢからＩ２Ｃスレーブユニット３へのＩ２Ｃバスの経路は、冗長化されている。すなわち、マスタユニット１Ａは、自己に搭載されたＩ２Ｃマルチプレクサを介して、Ｉ２Ｃスレーブユニット３とＩ２Ｃバスで接続する。また、Ｉ２Ｃマスタユニット１Ｂは、自己に搭載されたＩ２Ｃマルチプレクサを介して、Ｉ２Ｃマスタユニット１Ａと異なる経路でＩ２Ｃスレーブユニット３と接続する。そして、Ｉ２Ｃマスタユニット１ＡがＩ２Ｃマルチプレクサを介して、Ｉ２Ｃスレーブユニット３と接続しているとき、他方のＩ２Ｃマスタユニット１ＢはＩ２Ｃマルチプレクサにより未接続状態にし、Ｉ２Ｃスレーブユニット３と接続しないようにする。また、Ｉ２Ｃマスタユニット１ＢがＩ２Ｃマルチプレクサを介して、Ｉ２Ｃスレーブユニット３と接続しているとき、他方のＩ２Ｃマスタユニット１ＡはＩ２Ｃマルチプレクサにより未接続状態にし、Ｉ２Ｃスレーブユニット３と接続しないようにする。
【００１４】
かかるユニット間の接続の下、Ｉ２Ｃマスタユニット１Ａは、Ｉ２Ｃマスタユニット１Ｂと協調して、Ｉ２Ｃスレーブユニット３へそれぞれアクセスした結果である２個のアクセス結果を統合し、異常のＩ２Ｃユニットを判定する。
【００１５】
図２Ｂは、実施例に係る異常ユニットの判定方法を説明する図である。図２Ｂに示すように、横軸は一方のＩ２Ｃマスタユニットの異常判定情報Ｊ０を示し、縦軸は他方のＩ２Ｃマスタユニットの異常判定情報Ｊ１を示す。異常判定情報Ｊ０、Ｊ１は、異常となる可能性のあるアクセス箇所ｊ１および当該箇所での異常内容ｊ２を含む。符号Ｊ２で表されるマトリクスは、それぞれ２個のＩ２Ｃマスタユニットの異常判定情報から推定される異常ユニット群を示す。そして、Ｉ２Ｃマスタユニット１は、Ｉ２Ｃマスタユニット１のアクセス結果（異常発生箇所）とＩ２Ｃマスタユニット２のアクセス結果（異常発生箇所）とをマトリクスＪ２上で交差（統合）して、異常のＩ２Ｃユニットを判定する。
【００１６】
［実施例に係るＩ２Ｃバス装置の構成］
次に、図１は、本実施例に係るＩ２Ｃバス装置の構成を示す機能ブロック図である。図１に示すように、Ｉ２Ｃバス装置９は、Ｉ２Ｃマスタユニット１Ａと、Ｉ２Ｃマスタユニット１Ｂと、Ｉ２Ｃスレーブユニット３とを備える。Ｉ２Ｃバス装置９は、例えば、複数のハードディスクを有するストレージデバイス格納筐体（ＤＥ）およびハードディスク以外のユニットが搭載された筐体（ＣＥ）を備えるストレージ装置である。Ｉ２Ｃマスタユニット１Ａは、サービスコントローラ（ＳＶＣ：Service  Controller）といい、Ｉ２Ｃバスで接続する複数のＩ２Ｃスレーブユニット３を制御したり、監視したりする。Ｉ２Ｃマスタユニット１Ａは、Ｉ２Ｃマスタユニット１Ｂと冗長構成であり、運用系となったり、待機系となったりする。以降の説明では、Ｉ２Ｃマスタユニット１Ａが、運用系であるものとして説明する。そして、Ｉ２Ｃマスタユニット１Ｂは、Ｉ２Ｃマスタユニット１Ａと同様の構成であるので、その説明を省略する。
【００１７】
Ｉ２Ｃスレーブユニット３は、Ｉ２Ｃスレーブとなるユニットであり、Ｉ２Ｃマスタユニット１ＡおよびＩ２Ｃマスタユニット１Ｂとそれぞれ接続される。Ｉ２Ｃスレーブユニット３には、例えば、ＦＲＴ（Frontend  Router）、ＢＲＴ（Backend  Router）、ＰＳＵ（Power  Supply  Unit）、ＢＢＵ（Battery  Backup  Unit）が挙げられる。ここで、ＦＲＴは、ユニットの動作を管理するＣＭ（Control  Module）間の通信手段を提供するユニットである。ＢＲＴは、ＣＭにハードディスクへのアクセス手段を提供するユニットである。ＰＳＵは、全ユニットに電力を供給するユニットである。ＢＢＵは、停電発生時に特定のユニットに電力を供給するユニットである。なお、図１では、説明の便宜上、Ｉ２Ｃスレーブユニット３が１台となる構成を採用しているが、Ｉ２Ｃスレーブユニット３が複数となる構成を適用しても良い。
【００１８】
Ｉ２Ｃマスタユニット１Ａは、Ｉ２Ｃマスタとなるユニットであり、ＦＰＧＡ（Field  Programmable  Gate  Array）１０と、Ｉ２Ｃ−ＭＵＸ（multiplexer）２０と、制御部３０と、記憶部４０とを備える。ＦＰＧＡ１０は、Ｉ２Ｃマスタユニット１Ｂと接続し、Ｉ２Ｃマスタユニット１ＢのＦＰＧＡ間で通信する。また、ＦＰＧＡ１０は、Ｉ２Ｃ−ＭＵＸ２０を初期化する際にリセットしたり、Ｉ２Ｃスレーブユニット３を初期化する際にリセットしたりする。
【００１９】
Ｉ２Ｃ−ＭＵＸ２０は、Ｉ２Ｃスレーブユニット３が複数ある場合、複数あるＩ２Ｃスレーブユニット３の内の１個のＩ２Ｃスレーブユニット３とＩ２Ｃバスで接続するようにし、接続したＩ２Ｃスレーブユニット３にアクセスする。かかるＩ２Ｃ−ＭＵＸ２０とＩ２Ｃスレーブユニット３とのＩ２Ｃバスの接続については、後述するものとする。
【００２０】
制御部３０は、Ｉ２Ｃデバイス制御部３１およびＩ２Ｃシーケンス制御部３２を有する。なお、制御部３０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等の電子回路である。
【００２１】
記憶部４０は、異常ユニット判定マトリクス４１を有する。記憶部４０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（flash  memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置である。異常ユニット判定マトリクス４１は、Ｉ２Ｃマスタユニットで異常となる可能性のある異常箇所に関するアクセス情報について、二重化されたＩ２Ｃマスタユニットのそれぞれのアクセス情報の組み合わせにより異常と判定されるユニットの候補を記憶する。かかる異常ユニット判定マトリクス４１の構成については、後述するものとする。
【００２２】
Ｉ２Ｃデバイス制御部３１は、Ｉ２Ｃスレーブユニット３およびＩ２Ｃマスタユニット１Ｂのデバイスを制御する。さらに、Ｉ２Ｃデバイス制御部３１は、異常箇所判定部３１ａと、アクセス依頼部３１ｂと、異常ユニット判定部３１ｃとを有する。
【００２３】
異常箇所判定部３１ａは、自ユニットと接続されたＩ２Ｃスレーブユニット３へのアクセスで異常箇所があるか否かを判定する。一例として、異常箇所判定部３１ａは、二重化された他系のＩ２Ｃマスタユニット１Ｂとの間のＦＰＧＡ間通信を用いて、運用系となるか待機系となるかを調停したうえで決定する。
【００２４】
また、異常箇所判定部３１ａは、運用系と決定された場合に、アクセス対象となるＩ２Ｃスレーブユニット３（以降、「対象ユニット」という。）との接続または切断を、Ｉ２Ｃシーケンス制御部３２を介してＩ２Ｃ―ＭＵＸ２０を制御して行う。
【００２５】
また、異常箇所判定部３１ａは、対象ユニットへのアクセスで異常となる異常箇所があった場合、異常箇所に基づいてＩ２Ｃ−ＭＵＸ２０または対象ユニットのＩ２ＣデバイスをＦＰＧＡ１０経由でリセットする。ここで、対象ユニットへのアクセスでの異常には、「Ｉ２Ｃシーケンス異常」と、「Ｉ２Ｃデバイス異常」とがある。「Ｉ２Ｃシーケンス異常」とは、後述するＩ２Ｃシーケンス制御部３２によって異常を検出した場合を示す。例えば、バスの使用権を獲得するために使用する制御信号を示すスタートコンディションまたはバスを解放するために使用する制御信号を示すストップコンディションの検出ができなかった場合、対象ユニットから正常終了であることを通知するＡＣＫを検出できなかった場合やオーバランエラーを検出した場合等がある。また、Ｉ２Ｃデバイス異常とは、異常箇所判定部３１ａによって異常を検出した場合を示す。例えば、対象ユニットのＩ２Ｃデバイスが期待した動作をしない場合がある。
【００２６】
また、異常箇所判定部３１ａは、対象ユニットのＩ２Ｃデバイスを指定し、指定したＩ２Ｃデバイスのレジスタの読み込み、および指定したＩ２Ｃデバイスのレジスタへの書き込みを、Ｉ２Ｃシーケンス制御部３を介してする。なお、異常箇所判定部３１ａは、指定したＩ２Ｃデバイスのレジスタの読み込み、および指定したＩ２Ｃデバイスのレジスタへの書き込みのどちらか一方を、Ｉ２Ｃシーケンス制御部３を介してするようにしても良い。
【００２７】
また、異常箇所判定部３１ａは、待機系と決定された場合に、運用系のＩ２Ｃマスタユニット１ＡからＦＰＧＡ間通信を介した、対象ユニットへのアクセス依頼を待ち受ける。そして、異常箇所判定部３１ａは、対象ユニットへのアクセス依頼を受け取ると、当該対象ユニットへのアクセスを実行し、アクセス結果を、ＦＰＧＡ間通信を介して運用系のＩ２Ｃマスタユニット１Ａに通知する。
【００２８】
アクセス依頼部３１ｂは、異常箇所判定部３１ａによって対象ユニットへのアクセスで異常箇所があると判定された場合に、対象ユニットと同一の対象ユニットへのアクセスを、待機系側のＩ２Ｃマスタユニット１Ｂに依頼する。
【００２９】
異常ユニット判定部３１ｃは、異常箇所判定部３１ａによって判定された異常箇所に関するアクセス結果とアクセス依頼部３１ｂによる依頼結果を示すアクセス結果との組み合わせを用いて、異常であるユニットを判定する。一例として、異常ユニット判定部３１ｃは、異常ユニット判定マトリクス４１に記憶された、Ｉ２Ｃマスタユニットのそれぞれの異常判定情報の組み合わせと、実際に実行されたそれぞれのアクセス結果の組み合わせとを用いて、異常のユニットを判定する。異常判定情報は、異常となる可能性のある箇所および当該箇所での異常内容を含むものである。例えば、異常判定情報には、Ｉ２Ｃ−ＭＵＸとアクセスした際のシーケンス異常およびデバイス異常がある。また、異常判定情報には、対象ユニットと接続した際のシーケンス異常、対象ユニットと接続後に読み書きした際のシーケンス異常およびデバイス異常等がある。かかる異常判定情報の詳細は、後述するものとする。
【００３０】
Ｉ２Ｃシーケンス制御部３２は、Ｉ２Ｃのシーケンスに用いられる各種信号や各種コマンドを対象ユニットに送信したり、検出したりする。一例として、Ｉ２Ｃシーケンス制御部３２は、スタートコンディションの制御信号またはストップコンディションの制御信号を対象ユニットに送出したり、検出したりする。また、Ｉ２Ｃシーケンス制御部３２は、ＡＣＫを対象ユニットに送出したり、検出したりする。また、Ｉ２Ｃシーケンス制御部３２は、異常箇所判定部３１ａから指定された対象ユニットのデバイスに対するアドレスデータ、レジスタデータまたは書き込みデータを該当コマンドとともにＩ２Ｃバス上に送信する。そして、Ｉ２Ｃシーケンス制御部３２は、対象ユニットから該当コマンドに対応するレジスタデータを受信し、異常箇所判定部３１ａに通知する。
【００３１】
また、Ｉ２Ｃシーケンス制御部３２は、Ｉ２Ｃのシーケンスの異常を、「Ｉ２Ｃシーケンス異常」として検出する。
【００３２】
［異常箇所判定についての説明］
ここで、異常判定部３１ａによる異常箇所判定について、図３を参照しながら説明する。図３は、実施例に係る異常箇所判定を説明する図である。なお、図３では、運用ＳＶＣ２Ａが運用系のＩ２Ｃマスタユニットに相当し、待機ＳＶＣ２Ｂが待機系のＩ２Ｃマスタユニットに相当するものとする。図３に示すように、運用ＳＶＣ２Ａは、待機ＳＶＣ２Ｂと二重化され、自己に搭載されたＩ２Ｃ−ＭＵＸ２０Ａを介して、対象ユニット３とＩ２Ｃバスで接続する。なお、説明内の「  」内の符号は、各異常種別を表すものとする。
【００３３】
運用ＳＶＣ２ＡのＩ２Ｃデバイス制御部３１Ａは、ＦＰＧＡ１０Ａと待機ＳＶＣ２ＢのＦＰＧＡ１０Ｂとを介して、自己が運用系となるか待機系となるかを調停し決定する（Ｓ１）。ここでは、Ｉ２Ｃデバイス制御部３１Ａは、運用ＳＶＣ２Ａが運用系となると決定したものとする。
【００３４】
次に、運用系と決定した運用ＳＶＣ２Ａは、Ｉ２Ｃシーケンス制御部３２Ａを介して、Ｉ２Ｃ−ＭＵＸ２０Ａのステータスを、例えばＩ２Ｃ−ＭＵＸ２０Ａの記憶部から読み出して確認する（Ｓ２）。ここで、Ｉ２Ｃシーケンス制御部３２Ａが、Ｉ２Ｃ−ＭＵＸ２０Ａへのアクセスで異常を検出した場合、Ｉ２Ｃデバイス制御部３１Ａは、Ｉ２Ｃシーケンス異常「ｅ１」と判定する。また、Ｉ２Ｃデバイス制御部３１Ａが、Ｉ２Ｃ−ＭＵＸ２０Ａのステータスが期待した状態でないような異常を検出した場合、Ｉ２Ｃデバイス制御部３１Ａは、デバイス異常「ｅ２」と判定する。なお、Ｉ２Ｃ−ＭＵＸ２０Ａのステータスが期待した状態でないような異常とは、例えば、対象ユニットと既に接続状態となっているような場合がある。そして、Ｉ２Ｃデバイス制御部３１Ａは、Ｉ２Ｃ−ＭＵＸ２０Ａのステータスの異常を検出した場合、Ｉ２Ｃ−ＭＵＸ２０Ａをリセットによる切断をしたうえで、待機系と決定した待機ＳＶＣ２Ｂに対し、対象ユニット３へのアクセス依頼を行い、アクセス結果を待ち受けることとなる。
【００３５】
次に、運用ＳＶＣ２Ａは、Ｉ２Ｃシーケンス制御部３２Ａを介して、Ｉ２Ｃ−ＭＵＸ２０Ａを対象ユニット３と接続する（Ｓ３）。ここで、Ｉ２Ｃデバイス制御部３１Ａが、Ｉ２Ｃ−ＭＵＸ２０Ａへのアクセスで異常を検出した場合、Ｉ２Ｃデバイス制御部３１Ａは、Ｉ２Ｃシーケンス異常「ｅ３」と判定する。そして、Ｉ２Ｃデバイス制御部３１Ａは、対象ユニット３との接続異常を検出した場合、Ｉ２Ｃ−ＭＵＸ２０Ａをリセットによる切断をしたうえで、待機系と決定した待機ＳＶＣ２Ｂに対し、対象ユニット３へのアクセス依頼を行い、アクセス結果を待ち受けることとなる。
【００３６】
続いて、運用ＳＶＣ２Ａは、Ｉ２Ｃシーケンス制御部３２Ａを介して、Ｉ２Ｃ−ＭＵＸ２０Ａのレジスタの値が例えば所定値に更新されることを確認することで、Ｉ２Ｃ−ＭＵＸ２０Ａが対象ユニット３と接続したことを確認する（Ｓ４）。ここで、Ｉ２Ｃシーケンス制御部３２Ａが、Ｉ２Ｃ−ＭＵＸ２０Ａへのアクセスで異常を検出した場合、Ｉ２Ｃデバイス制御部３１Ａは、Ｉ２Ｃシーケンス異常「ｅ４」と判定する。また、Ｉ２Ｃデバイス制御部３１Ａが、Ｉ２Ｃ−ＭＵＸ２０Ａのレジスタが期待した状態でない異常を検出した場合、Ｉ２Ｃデバイス制御部３１Ａは、Ｉ２Ｃデバイス異常「ｅ５」と判定する。なお、Ｉ２Ｃ−ＭＵＸ２０Ａのレジスタが期待した状態でない異常とは、例えば、Ｉ２Ｃ−ＭＵＸ２０Ａが対象ユニット３とのみ接続されていない場合がある。そして、Ｉ２Ｃデバイス制御部３１Ａは、対象ユニット３との接続異常を検出した場合、Ｉ２Ｃ−ＭＵＸ２０Ａをリセットによる切断をしたうえで、待機系と決定した待機ＳＶＣ２Ｂに対し、対象ユニット３へのアクセス依頼を行い、アクセス結果を待ち受けることとなる。
【００３７】
続いて、運用ＳＶＣ２Ａは、Ｉ２Ｃシーケンス制御部３２Ａを介して、対象ユニット３から目的のデータを読み取り、または対象ユニット３に目的のデータを書き込む（Ｓ５）。ここで、Ｉ２Ｃシーケンス制御部３２Ａが、対象ユニット３へのアクセスで異常を検出した場合、Ｉ２Ｃデバイス制御部３１Ａは、Ｉ２Ｃシーケンス異常「ｅ６」と判定する。また、Ｉ２Ｃデバイス制御部３１Ａが、期待した値でない異常を検出した場合、Ｉ２Ｃデバイス制御部３１Ａは、Ｉ２Ｃデバイス異常「ｅ７」と判定する。なお、期待した値でない異常とは、例えば、対象ユニット３のデバイスからの読み取り値がデバイス上あり得ない値であったり、対象ユニット３のデバイスの指定した位置に正しい値が書き込めなかったりした場合がある。そして、Ｉ２Ｃデバイス制御部３１Ａは、対象ユニット３とのアクセス異常を検出した場合、Ｉ２Ｃ−ＭＵＸ２０Ａをリセットによる切断をしたうえで、待機系と決定した待機ＳＶＣ２Ｂに対し、対象ユニット３へのアクセス依頼を行い、アクセス結果を待ち受けることとなる。
【００３８】
さらに、運用ＳＶＣ２Ａは、Ｉ２Ｃシーケンス制御部３２Ａを介して、Ｉ２Ｃ−ＭＵＸ２０Ａを対象ユニット３から切断する（Ｓ６）。ここで、Ｉ２Ｃデバイス制御部３１Ａが、Ｉ２Ｃ−ＭＵＸ２０Ａへのアクセスで異常を検出した場合、Ｉ２Ｃデバイス制御部３１Ａは、Ｉ２Ｃシーケンス異常「ｅ８」と判定する。そして、Ｉ２Ｃデバイス制御部３１Ａは、対象ユニット３との切断異常を検出した場合、Ｉ２Ｃ−ＭＵＸ２０Ａをリセットによる切断をしたうえで、待機系と決定した待機ＳＶＣ２Ｂに対し、対象ユニット３へのアクセス依頼を行い、アクセス結果を待ち受けることとなる。
【００３９】
続いて、運用ＳＶＣ２Ａは、Ｉ２Ｃシーケンス制御部３２Ａを介して、Ｉ２Ｃ−ＭＵＸ２０Ａのレジスタで、Ｉ２Ｃ−ＭＵＸ２０Ａを対象ユニット３から切断したことを確認する（Ｓ７）。ここで、Ｉ２Ｃシーケンス制御部３２Ａが、Ｉ２Ｃ−ＭＵＸ２０Ａへのアクセスで異常を検出した場合、Ｉ２Ｃデバイス制御部３１Ａは、Ｉ２Ｃシーケンス異常「ｅ９」と判定する。また、Ｉ２Ｃデバイス制御部３１Ａが、Ｉ２Ｃ−ＭＵＸ２０Ａのレジスタが期待した状態でない異常を検出した場合、Ｉ２Ｃデバイス制御部３１Ａは、Ｉ２Ｃデバイス異常「ｅ１０」と判定する。なお、Ｉ２Ｃ−ＭＵＸ２０Ａのレジスタが期待した状態でない異常とは、例えば、Ｉ２Ｃ−ＭＵＸ２０Ａが対象ユニット３と未接続状態とならなかったような場合がある。
【００４０】
［異常ユニット判定マトリクスの一例］
次に、異常ユニット判定マトリクス４１の一例について、図４を参照しながら説明する。図４は、異常ユニット判定マトリクス４１の一例を示す図である。図４に示すように、異常ユニット判定マトリクス４１は、横軸に運用ＳＶＣの異常判定情報４１Ａ、縦軸に待機ＳＶＣの異常判定情報４１Ｂを記憶する。運用ＳＶＣの異常判定情報４１Ａには、異常となる可能性のある箇所と異常内容とからなる異常種別（正常を含む）を複数記憶する。待機ＳＶＣの異常判定情報４１Ｂには、運用ＳＶＣの異常判定情報４１Ａと同様に異常種別を複数記憶する。
【００４１】
以下に、異常種別の例を示す。例えば、符号４１１で示す運用ＳＶＣの異常種別が「ｅ１」の場合には、運用ＳＶＣがＩ２Ｃ−ＭＵＸ２０Ａのステータスを確認する箇所で、Ｉ２Ｃシーケンス異常となる場合である。符号４１２で示す運用ＳＶＣの異常種別が「ｅ２」の場合には、運用ＳＶＣがＩ２Ｃ−ＭＵＸ２０Ａのステータスを確認する箇所で、Ｉ２Ｃデバイス異常となる場合である。符号４１３で示す運用ＳＶＣの異常種別が「ｅ３」の場合には、運用ＳＶＣがＩ２Ｃ−ＭＵＸ２０Ａを対象ユニット３と接続する箇所で、Ｉ２Ｃシーケンス異常となる場合である。符号４１４で示す運用ＳＶＣの異常種別が「ｅ４」の場合には、運用ＳＶＣがＩ２Ｃ−ＭＵＸ２０Ａのレジスタで、Ｉ２Ｃ−ＭＵＸ２０Ａが対象ユニットと接続したことを確認する箇所で、Ｉ２Ｃシーケンス異常となる場合である。符号４１５で示す運用ＳＶＣの異常種別が「ｅ５」の場合には、運用ＳＶＣがＩ２Ｃ−ＭＵＸ２０Ａのレジスタで、Ｉ２Ｃ−ＭＵＸ２０Ａが対象ユニットと接続したことを確認する箇所で、Ｉ２Ｃデバイス異常となる場合である。符号４１６で示す運用ＳＶＣの異常種別が「ｅ６」の場合には、運用ＳＶＣが対象ユニット３とアクセスする箇所で、Ｉ２Ｃシーケンス異常となる場合である。符号４１７で示す運用ＳＶＣの異常種別が「ｅ７」の場合には、運用ＳＶＣが対象ユニット３とアクセスする箇所で、Ｉ２Ｃデバイス異常となる場合である。符号４１８で示す運用ＳＶＣの異常種別が「ｅ８」の場合には、運用ＳＶＣがＩ２Ｃ-ＭＵＸから対象ユニットを切断する箇所で、Ｉ２Ｃシーケンス異常となる場合である。運用ＳＶＣの異常種別が「ｅ９」の場合には、運用ＳＶＣがＩ２Ｃ−ＭＵＸ２０Ａのレジスタで、Ｉ２Ｃ−ＭＵＸ２０Ａを対象ユニットから切断したことを確認する箇所で、Ｉ２Ｃシーケンス異常となる場合である。運用ＳＶＣの異常種別が「ｅ１０」の場合には、運用ＳＶＣがＩ２Ｃ−ＭＵＸ２０Ａのレジスタで、Ｉ２Ｃ−ＭＵＸ２０Ａを対象ユニットから切断したことを確認する箇所で、Ｉ２Ｃデバイス異常となる場合である。なお、待機系ＳＶＣの異常判定情報４１Ａの異常種別は、運用ＳＶＣの異常判定情報４１Ｂの異常種別と同様であるので、説明を省略する。
【００４２】
異常ユニット情報４１Ｃは、運用系ＳＶＣの異常判定情報４１Ａの異常種別と待機系ＳＶＣの異常判定情報４１Ｂの異常種別との組み合わせにより異常を判別できるユニットの候補を記憶する。図４の例では、符号ｅｕ１では、運用ＳＶＣの異常種別「ｅ１」と待機ＳＶＣの異常種別「正常」との組み合わせにより判別できる、異常となるユニットの候補を「運用ＳＶＣ」として記憶する。
【００４３】
［異常ユニット判定の具体例］
次に、運用ＳＶＣ２Ａから対象ユニット３へのアクセスで異常となる異常箇所があった場合に、異常箇所に基づいて異常ユニットを判定する具体例を、図５〜図８を参照しながら説明する。
【００４４】
図５は、実施例に係る異常ユニット判定の具体例を説明する図である。なお、図５では、運用ＳＶＣ２ＡがＩ２Ｃ−ＭＵＸ２０Ａのステータスを確認する箇所で、Ｉ２Ｃシーケンス異常（「ｅ１」）となった場合を説明する。そこで、Ｉ２Ｃデバイス制御部３１Ａが、最初にＩ２Ｃシーケンス異常「ｅ１」と判定した後の動作について説明する。
【００４５】
最初にＩ２Ｃシーケンス異常「ｅ１」と判定したＩ２Ｃデバイス制御部３１Ａは、ＦＰＧＡ経由で、Ｉ２Ｃ−ＭＵＸ２０Ａをリセットする（Ｓ１ａ）。その後、Ｉ２Ｃデバイス制御部３１Ａは、Ｉ２Ｃ−ＭＵＸ２０Ａのステータスの確認を再試行する（Ｓ１ｂ）。そして、Ｉ２Ｃデバイス制御部３１Ａは、再試行してもＩ２Ｃシーケンス異常が回復しない場合、再試行回数がＸ回に達したとき、運用ＳＶＣ２Ａからの接続を断念する。ここでは、Ｉ２Ｃデバイス制御部３１Ａは、自己のアクセス結果を「ｅ１」として記憶部４０に保持する。
【００４６】
そして、Ｉ２Ｃデバイス制御部３１Ａは、待機系での動作に影響を与えないように、ＦＰＧＡ経由で、Ｉ２Ｃ−ＭＵＸ２０Ａを再度リセットする（Ｓ１ｃ）。そして、Ｉ２Ｃデバイス制御部３１Ａは、待機ＳＶＣ２Ｂに対し、ＦＰＧＡ間通信を用いて、対象ユニット３への接続確認を依頼する（Ｓ１ｄ）。すなわち、Ｉ２Ｃデバイス制御部３１Ａは、対象ユニット３へのアクセス依頼を行う。
【００４７】
続いて、対象ユニット３への接続確認を依頼された待機ＳＶＣ２ＢのＩ２Ｃデバイス制御部３１Ｂは、Ｉ２Ｃ−ＭＵＸ２０Ｂのステータスを確認した後、Ｉ２Ｃ−ＭＵＸ２０Ｂを対象ユニット３と接続する（Ｓ１ｅ）。そして、Ｉ２Ｃデバイス制御部３１Ｂは、Ｉ２Ｃ-ＭＵＸ２０Ｂのレジスタで、Ｉ２Ｃ−ＭＵＸ２０Ｂが対象ユニット３と接続したことを確認する（Ｓ１ｆ）。さらに、Ｉ２Ｃデバイス制御部３１Ｂは、対象ユニット３から目的のデータを読み取り、または対象ユニット３に目的のデータを書き込む（Ｓ１ｇ）。
【００４８】
続いて、Ｉ２Ｃデバイス制御部３１Ｂは、Ｉ２Ｃ−ＭＵＸ２０Ｂを対象ユニット３から切断する（Ｓ１ｈ）。そして、Ｉ２Ｃデバイス制御部３１Ｂは、Ｉ２Ｃ−ＭＵＸ２０Ｂのレジスタで、Ｉ２Ｃ−ＭＵＸ２０Ｂを対象ユニット３から切断したことを確認する（Ｓ１ｉ）。そして、Ｉ２Ｃデバイス制御部３１Ｂは、運用ＳＶＣ２Ａに対し、ＦＰＧＡ間通信を用いて、対象ユニット３とのアクセス結果を通知する（Ｓ１ｊ）。ここでは、Ｉ２Ｃデバイス制御部３１Ｂは、自己のアクセス結果を「正常」として通知する。
【００４９】
運用ＳＶＣ２ＡのＩ２Ｃデバイス制御部３１Ａは、待機ＳＶＣ２Ｂから対象ユニット３とのアクセス結果を受け取る。そして、Ｉ２Ｃデバイス制御部３１Ａは、異常ユニット判定マトリクス４１に基づいて、運用ＳＶＣ２Ａのアクセス結果および待機ＳＶＣ２Ｂのアクセス結果から異常ユニットを判定する。ここでは、Ｉ２Ｃデバイス制御部３１Ａは、運用ＳＶＣ１Ａのアクセス結果が「ｅ１」であり、待機ＳＶＣ２Ａのアクセス結果が「正常」であるので、異常ユニット判定マトリクス４１（図４参照）に基づいて、異常ユニットを「運用ＳＶＣ」として判定する。
【００５０】
図６は、実施例に係る異常ユニット判定の別の具体例を説明する図である。なお、図６では、運用ＳＶＣ２Ａおよび待機ＳＶＣ２Ｂが各Ｉ２Ｃ−ＭＵＸ２０のステータスを確認する箇所で、Ｉ２Ｃシーケンス異常（「ｅ１」）となる場合を説明する。そこで、運用ＳＶＣ２ＡのＩ２Ｃデバイス制御部３１Ａが、最初にＩ２Ｃシーケンス異常「ｅ１」と判定した後の動作について説明する。
【００５１】
最初にＩ２Ｃシーケンス異常「ｅ１」と判定したＩ２Ｃデバイス制御部３１Ａは、ＦＰＧＡ経由で、Ｉ２Ｃ−ＭＵＸ２０Ａをリセットする（Ｓ２ａ）。その後、Ｉ２Ｃデバイス制御部３１Ａは、Ｉ２Ｃ−ＭＵＸ２０Ａのステータスの確認を再試行する（Ｓ２ｂ）。そして、Ｉ２Ｃデバイス制御部３１Ａは、再試行しても回復しない場合、再試行回数がＸ回に達したとき、運用ＳＶＣ１Ａからの接続を断念する。ここでは、Ｉ２Ｃデバイス制御部３１Ａは、自己のアクセス結果を「ｅ１」として記憶部４０に保持する。
【００５２】
そして、Ｉ２Ｃデバイス制御部３１Ａは、待機系での動作に影響を与えないように、ＦＰＧＡ経由で、Ｉ２Ｃ−ＭＵＸ２０Ａを再度リセットする（Ｓ２ｃ）。そして、Ｉ２Ｃデバイス制御部３１Ａは、待機ＳＶＣ２Ｂに対し、ＦＰＧＡ間通信を用いて、対象ユニット３への接続確認を依頼する（Ｓ２ｄ）。すなわち、Ｉ２Ｃデバイス制御部３１Ａは、対象ユニット３へのアクセス依頼を行う。
【００５３】
続いて、対象ユニット３への接続確認を依頼された待機ＳＶＣ２ＢのＩ２Ｃデバイス制御部３１Ｂは、Ｉ２Ｃ−ＭＵＸ２０Ｂのステータスを確認する（Ｓ２ｅ）。ところが、Ｉ２Ｃデバイス制御部３１Ｂは、Ｉ２Ｃ−ＭＵＸ２０Ｂへのアクセスで異常を検出したので、Ｉ２Ｃシーケンス異常「ｅ１」と判定する。そこで、Ｉ２Ｃデバイス制御部３１Ｂは、ＦＰＧＡ経由で、Ｉ２Ｃ−ＭＵＸ２０Ｂをリセットする（Ｓ２ｆ）。その後、Ｉ２Ｃデバイス制御部３１Ｂは、Ｉ２Ｃ−ＭＵＸ２０Ｂのステータスの確認を再試行する（Ｓ２ｇ）。そして、Ｉ２Ｃデバイス制御部３１Ｂは、再試行しても回復しない場合、再試行回数がＸ回に達したとき、待機ＳＶＣ２Ｂからの接続を断念する。ここでは、Ｉ２Ｃデバイス制御部３１Ｂは、自己のアクセス結果を「ｅ１」として待機系ＳＶＣの記憶部４０に保持する。
【００５４】
そして、Ｉ２Ｃデバイス制御部３１Ｂは、運用系での動作に影響を与えないように、ＦＰＧＡ経由で、Ｉ２Ｃ−ＭＵＸ２０Ｂを再度リセットする（Ｓ２ｈ）。そして、Ｉ２Ｃデバイス制御部３１Ｂは、運用ＳＶＣ２Ａに対し、ＦＰＧＡ間通信を用いて、対象ユニット３とのアクセス結果を通知する（Ｓ２ｉ）。ここでは、Ｉ２Ｃデバイス制御部３１Ｂは、自己のアクセス結果を「ｅ１」として通知する。
【００５５】
運用ＳＶＣ２ＡのＩ２Ｃデバイス制御部３１Ａは、待機ＳＶＣ２Ｂから対象ユニット３とのアクセス結果を受け取る。そして、Ｉ２Ｃデバイス制御部３１Ａは、異常ユニット判定マトリクス４１に基づいて、運用ＳＶＣ２Ａのアクセス結果および待機ＳＶＣ２Ｂのアクセス結果から異常ユニットを判定する。ここでは、Ｉ２Ｃデバイス制御部３１Ａは、運用ＳＶＣ２Ａのアクセス結果が「ｅ１」であり、待機ＳＶＣ２Ｂのアクセス結果が「ｅ１」であるので、異常ユニット判定マトリクス４１に基づいて、異常ユニットを「運用ＳＶＣ、待機ＳＶＣ」として判定する。つまり、アクセス結果が「ｅ１」である場合は、Ｉ２Ｃ−ＭＵＸ２０へのアクセスそのもので異常を検出した場合であり、対象ユニット３までアクセスされていないので、異常ユニットを「運用ＳＶＣ、待機ＳＶＣ」とする。
【００５６】
図７は、実施例に係る異常ユニット判定の別の具体例を説明する図である。なお、図７では、運用ＳＶＣ２Ａおよび待機ＳＶＣ２Ｂが対象ユニット３から目的のデータを読み取る箇所で、Ｉ２Ｃデバイス異常（「ｅ７」）となる場合を説明する。そこで、Ｉ２Ｃデバイス制御部３１Ａが、最初にＩ２Ｃデバイス異常「ｅ７」と判定した後の動作について説明する。
【００５７】
最初にＩ２Ｃデバイス異常「ｅ７」と判定したＩ２Ｃデバイス制御部３１Ａは、対象ユニット３から目的のデータを読み取る動作を再試行する（Ｓ３ａ）。そして、Ｉ２Ｃデバイス制御部３１Ａは、再試行しても回復しない場合、再試行回数がＸ回に達したとき、運用ＳＶＣ２Ａからの接続を断念し、ＦＰＧＡ経由で、Ｉ２Ｃ−ＭＵＸ２０Ａをリセットする（Ｓ３ｂ）。これにより、Ｉ２Ｃデバイス制御部３１Ａは、対象ユニット３との接続を強制的に切断する。そして、Ｉ２Ｃデバイス制御部３１Ａは、自己のアクセス結果を「ｅ７」として記憶部４０に保持する。そして、Ｉ２Ｃデバイス制御部３１Ａは、待機ＳＶＣ２Ｂに対し、ＦＰＧＡ間通信を用いて、対象ユニット３への接続確認を依頼する（Ｓ３ｃ）。すなわち、Ｉ２Ｃデバイス制御部３１Ａは、対象ユニット３へのアクセス依頼を行う。
【００５８】
続いて、対象ユニット３への接続確認を依頼された待機ＳＶＣ２ＢのＩ２Ｃデバイス制御部３１Ｂは、Ｉ２Ｃ−ＭＵＸ２０Ｂを対象ユニット３と接続する（Ｓ３ｄ）。続いて、Ｉ２Ｃデバイス制御部３１Ｂは、Ｉ２Ｃ-ＭＵＸ２０Ｂのレジスタで、Ｉ２Ｃ−ＭＵＸ２０Ｂが対象ユニット３と接続したことを確認する（Ｓ３ｅ）。
【００５９】
続いて、Ｉ２Ｃデバイス制御部３１Ｂは、対象ユニット３から目的のデータを読み取る（Ｓ３ｆ）。ところが、Ｉ２Ｃデバイス制御部３１Ｂは、期待した値を読み取れなかったので、Ｉ２Ｃデバイス異常「ｅ７」と判定する。その後、Ｉ２Ｃデバイス制御部３１Ｂは、対象ユニット３から目的のデータの読み取りを再試行し、再試行しても回復しない場合、再試行回数がＸ回に達したとき、待機ＳＶＣ２Ｂからの接続を断念する。
【００６０】
そして、Ｉ２Ｃデバイス制御部３１Ｂは、Ｉ２Ｃ−ＭＵＸ２０ＢをＦＰＧＡ経由でリセットしたうえで、Ｉ２Ｃ−ＭＵＸ２０Ｂを対象ユニット３から切断する（Ｓ３ｇ）。さらに、Ｉ２Ｃデバイス制御部３１Ｂは、Ｉ２Ｃ-ＭＵＸ２０ＢのレジスタでＩ２Ｃ−ＭＵＸ２０Ｂを対象ユニット３から切断したことを確認する（Ｓ３ｈ）。
【００６１】
そして、Ｉ２Ｃデバイス制御部３１Ｂは、運用ＳＶＣ２Ａに対し、ＦＰＧＡ間通信を用いて、対象ユニット３とのアクセス結果を通知する（Ｓ３ｉ）。ここでは、Ｉ２Ｃデバイス制御部３１Ｂは、自己のアクセス結果を「ｅ７」として通知する。
【００６２】
運用ＳＶＣ２ＡのＩ２Ｃデバイス制御部３１Ａは、待機ＳＶＣ２Ｂから対象ユニット３とのアクセス結果を受け取る。そして、Ｉ２Ｃデバイス制御部３１Ａは、異常ユニット判定マトリクス４１に基づいて、運用ＳＶＣ２Ａのアクセス結果および待機ＳＶＣ２Ｂのアクセス結果から異常ユニットを判定する。ここでは、Ｉ２Ｃデバイス制御部３１Ａは、運用ＳＶＣ２Ａのアクセス結果が「ｅ７」であり、待機ＳＶＣ２Ｂのアクセス結果が「ｅ７」であるので、異常ユニット判定マトリクス４１に基づいて、異常ユニットを「対象ユニット」として判定する。この場合には、Ｉ２Ｃデバイス制御部３１Ａは、ＦＰＧＡで対象ユニット３をリセットする（Ｓ３ｊ）。そして、Ｉ２Ｃデバイス制御部３１Ａは、Ｉ２Ｃ−ＭＵＸ２０Ａが切断されているので、Ｉ２Ｃ−ＭＵＸ２０Ａの状態を確認し、Ｉ２Ｃ−ＭＵＸ２０Ａと接続したうえでＳ３ａから再実施する。そして、Ｉ２Ｃデバイス制御部３１Ａは、再実施後も異常ユニットを「対象ユニット」として判定する場合には、異常ユニットを「対象ユニット」として確定する。
【００６３】
なお、Ｓ３ｆにおいて、Ｉ２Ｃデバイス制御部３１Ｂが、対象ユニット３から目的のデータを読み取る再試行で期待した値を読み取れた場合には、運用ＳＶＣ２Ａに対し、待機ＳＶＣ２Ｂのアクセス結果を「正常」として通知する。この場合には、Ｉ２Ｃデバイス制御部３１Ａは、異常ユニットを「運用ＳＶＣ」として判定することとなる。
【００６４】
図８は、実施例に係る異常ユニット判定の別の具体例を説明する図である。なお、図８では、運用ＳＶＣ２ＡがＩ２Ｃ−ＭＵＸ２０Ａのステータスを確認する箇所で、Ｉ２Ｃシーケンス異常（「ｅ１」）となり、待機ＳＶＣ２Ｂが対象ユニット３とアクセスする箇所で、Ｉ２Ｃデバイス異常（「ｅ７」）となる場合を説明する。そこで、運用ＳＶＣ２ＡのＩ２Ｃデバイス制御部３１Ａが、最初にＩ２Ｃシーケンス異常「ｅ１」と判定した後の動作について説明する。
【００６５】
最初にＩ２Ｃシーケンス異常「ｅ１」と判定したＩ２Ｃデバイス制御部３１Ａは、ＦＰＧＡ経由で、Ｉ２Ｃ−ＭＵＸ２０Ａをリセットする（Ｓ４ａ）。その後、Ｉ２Ｃデバイス制御部３１Ａは、Ｉ２Ｃ−ＭＵＸ２０Ａのステータスの確認を再試行する（Ｓ４ｂ）。そして、Ｉ２Ｃデバイス制御部３１Ａは、再試行しても回復しない場合、再試行回数がＸ回に達したとき、運用ＳＶＣ２Ａからの接続を断念する。ここでは、Ｉ２Ｃデバイス制御部３１Ａは、自己のアクセス結果を「ｅ１」として記憶部４０に保持する。
【００６６】
そして、Ｉ２Ｃデバイス制御部３１Ａは、待機系での動作に影響を与えないように、ＦＰＧＡ経由で、Ｉ２Ｃ−ＭＵＸ２０Ａを再度リセットする（Ｓ４ｃ）。そして、Ｉ２Ｃデバイス制御部３１Ａは、待機ＳＶＣ２Ｂに対し、ＦＰＧＡ間通信を用いて、対象ユニット３への接続確認を依頼する（Ｓ４ｄ）。すなわち、Ｉ２Ｃデバイス制御部３１Ａは、対象ユニット３へのアクセス依頼を行う。
【００６７】
続いて、対象ユニット３への接続確認を依頼された待機ＳＶＣ２ＢのＩ２Ｃデバイス制御部３１Ｂは、Ｉ２Ｃ−ＭＵＸ２０Ｂを対象ユニット３と接続する（Ｓ４ｅ）。続いて、Ｉ２Ｃデバイス制御部３１Ｂは、Ｉ２Ｃ-ＭＵＸ２０Ｂのレジスタで、Ｉ２Ｃ−ＭＵＸ２０Ｂが対象ユニット３と接続したことを確認する（Ｓ４ｆ）。
【００６８】
続いて、Ｉ２Ｃデバイス制御部３１Ｂは、対象ユニット３から目的のデータを読み取る（Ｓ４ｇ）。ところが、Ｉ２Ｃデバイス制御部３１Ｂは、期待した値を読み取れなかったので、Ｉ２Ｃデバイス異常「ｅ７」と判定する。その後、Ｉ２Ｃデバイス制御部３１Ｂは、対象ユニット３から目的のデータの読み取りを再試行し、再試行しても回復しない場合、再試行回数がＸ回に達したとき、待機ＳＶＣ２Ｂからの接続を断念する。
【００６９】
そして、Ｉ２Ｃデバイス制御部３１Ｂは、ＦＰＧＡ経由でＩ２Ｃ−ＭＵＸ２０Ｂをリセットしたうえで、Ｉ２Ｃ−ＭＵＸ２０Ｂを対象ユニット３から切断する（Ｓ４ｈ）。さらに、Ｉ２Ｃデバイス制御部３１Ｂは、Ｉ２Ｃ-ＭＵＸ２０ＢのレジスタでＩ２Ｃ−ＭＵＸ２０Ｂを対象ユニット３から切断したことを確認する（Ｓ４ｉ）。なお、Ｉ２Ｃデバイス制御部３１Ｂは、運用ＳＶＣ２Ａから接続確認の依頼を受けたとき、運用ＳＶＣ２Ａの異常が判明している場合、ＦＰＧＡ１０Ｂ経由で対象ユニット３をリセットし（Ｓ４ｊ）、対象ユニット３と接続する処理（Ｓ４ｅ）から再試行しても良い。
【００７０】
そして、Ｉ２Ｃデバイス制御部３１Ｂは、運用ＳＶＣ２Ａに対し、ＦＰＧＡ間通信を用いて、対象ユニット３とのアクセス結果を通知する（Ｓ４ｋ）。ここでは、Ｉ２Ｃデバイス制御部３１Ｂは、自己のアクセス結果を「ｅ７」として通知する。
【００７１】
運用ＳＶＣ２ＡのＩ２Ｃデバイス制御部３１Ａは、待機ＳＶＣ２Ｂから対象ユニット３とのアクセス結果を受け取る。そして、Ｉ２Ｃデバイス制御部３１Ａは、異常ユニット判定マトリクス４１に基づいて、運用ＳＶＣ２Ａのアクセス結果および待機ＳＶＣ２Ｂのアクセス結果から異常ユニットを判定する。ここでは、Ｉ２Ｃデバイス制御部３１Ａは、運用ＳＶＣ２Ａのアクセス結果が「ｅ１」であり、待機ＳＶＣ２Ｂのアクセス結果が「ｅ７」であるので、異常ユニット判定マトリクス４１に基づいて、異常ユニットを「運用ＳＶＣ、対象ユニット」として判定する。
【００７２】
なお、Ｓ４ｊの処理後、Ｉ２Ｃデバイス制御部３１Ｂが、対象ユニット３から目的のデータを読み取る再試行で期待した値を読み取れた場合には、運用ＳＶＣ２Ａに対し、待機ＳＶＣ２Ｂのアクセス結果を「正常」として通知する。この場合には、Ｉ２Ｃデバイス制御部３１Ａは、異常ユニットを「運用ＳＶＣ」として判定することとなる。
【００７３】
［異常ユニット判定を実行するためのＩ２Ｃバス装置］
次に、実施例に係る異常ユニット判定を実行するためのＩ２Ｃバス装置について、図９を参照しながら説明する。図９は、実施例に係る異常ユニット判定を実行するためのＩ２Ｃバス装置の一例を説明する図である。図９に示すように、Ｉ２Ｃバス装置９Ａは、ハードディスクが搭載される筐体（ＤＥ：Device  Enclosure）とハードディスク以外のユニットが搭載される筐体（ＣＥ：Controller  Enclosure）を有する。ＤＥには、複数のハードディスク（Hard  Disk）が搭載されている。また、ＣＥには、ユニットの動作を管理するユニット（ＣＭ：Control  Module）、ＣＭ間の通信手段を提供するユニット（ＦＲＴ：Frontend  Router）、ＣＭにハードディスクへのアクセス手段を提供するユニット（ＢＲＴ：Backend  Router）が搭載されている。また、ＣＥには、ＣＥに搭載される全ユニットに電力を供給するユニット（ＰＳＵ：Power  Supply  Unit）、停電発生時に特定のユニットに電力を供給するユニット（ＢＢＵ：Battery  Backup  Unit）が搭載されている。さらに、ＣＥには、ユーザの操作により自装置に電源を投入したり切断したりするユニット（Ｐａｎｅｌ）および自装置を制御したり監視したりするユニット（ＳＶＣ：Service  Controller）が搭載されている。なお、ＳＶＣ４Ａが図１のＩ２Ｃマスタユニット１Ａに相当し、ＳＶＣ４Ｂが図１のＩ２Ｃマスタユニット１Ｂに相当する。また、符号５で表したＦＲＴ、ＢＲＴ、ＰＳＵおよびＢＢＵが図１のＩ２Ｃスレーブユニット３（対象ユニット）に相当する。
【００７４】
［異常ユニット判定を実行するためのハードウェアの全体構成］
次に、実施例に係る異常ユニット判定を実行するためのハードウェアの全体構成について、図１０を参照しながら説明する。図１０は、実施例に係る異常ユニット判定を実行するためのハードウェアの全体構成の一例を説明する図である。図１０に示すように、ＳＶＣ４Ａは、ＦＰＧＡ４０Ａ、Ｉ２Ｃ−ＭＵＸ５０ＡおよびＭＰＵ６０Ａを有する。ＳＶＣ４Ａは、ＳＶＣ４Ｂと冗長構成となっている。また、ＳＶＣ４Ａは、ＳＶＣ４Ｂと、それぞれに搭載されたＦＰＧＡ４０Ａ、４０Ｂを介して接続する。また、ＳＶＣ４Ａは、Ｉ２Ｃ−ＭＵＸ５０Ａを介して、対象ユニット５とＩ２Ｃバスで接続する。
【００７５】
Ｉ２Ｃ−ＭＵＸ５０ＡのそれぞれのＩ２Ｃ−ＭＵＸｍ１〜ｍ４は、Ｉ２Ｃバスを介して、それぞれの対象ユニットｓ１〜ｓ４と１対１で接続する。さらに、Ｉ２Ｃ−ＭＵＸ５０ＢのそれぞれのＩ２Ｃ−ＭＵＸｍ１〜ｍ４は、Ｉ２Ｃ−ＭＵＸ５０Ａが介するＩ２Ｃバスと異なるＩ２Ｃバスを介してそれぞれの対象ユニットｓ１〜ｓ４と１対１で接続する。一例として、Ｉ２Ｃ−ＭＵＸ５０ＡのＩ２Ｃ−ＭＵＸｍ１は、ＦＲＴ＃０〜３を有する対象ユニットｓ１と１対１で接続している。さらに、Ｉ２Ｃ−ＭＵＸ５０ＢのＩ２Ｃ−ＭＵＸｍ１は、同じ対象ユニットｓ１と、異なるＩ２Ｃバスを介して１対１で接続する。なお、ＦＰＧＡ４０Ａが図１のＦＰＧＡ１０に相当し、Ｉ２Ｃ−ＭＵＸ５０Ａが図１のＩ２Ｃ−ＭＵＸ２０に相当する。また、ＭＰＵ６０Ａが図１の制御部３０に相当する。
【００７６】
ここで、ＳＶＣ４Ａと対象ユニットｓ１〜ｓ４とのＩ２Ｃバスの接続について、図１１を参照して説明する。図１１は、ＳＶＣと対象ユニットとのＩ２Ｃバスの接続を説明する図である。図１１に示すように、ＳＶＣ４Ａは、ＭＰＵ６０Ａの通信回路であるＵＡＲＴ（Universal  Asynchronous  Receiver  Transmitter）を特殊モード１（Ｉ２Ｃモード）でＩ２Ｃ−ＭＵＸ５０Ａと接続する。そして、Ｉ２Ｃ−ＭＵＸ５０ＡのそれぞれのＩ２Ｃ−ＭＵＸｍ１〜ｍ４は、それぞれの対象ユニットｓ１〜ｓ４とＩ２ＣインタフェースをＩ２Ｃモードで接続する。
【００７７】
次に、異常ユニット判定を実行する際に用いられるＦＰＧＡ間通信について、図１２を参照しながら説明する。図１２は、ＳＶＣに搭載されたＦＰＧＡを用いたＦＰＧＡ間通信を説明する図である。図１２に示すように、ＳＶＣ４Ａは、対象ユニット５へのアクセスの際、ＦＰＧＡ間通信を用いて、二重化されたＳＶＣ４Ｂとの間で調停し、運用系となるか待機系となるかを決定する。すなわち、両方のＳＶＣ４Ａ、４Ｂが、同一の対象ユニット５に同時にアクセスしないようにするのである。また、ＳＶＣ４Ａは、アクセスする対象ユニット５単位、すなわち対象ユニット５と接続することとなるＵＡＲＴ単位に、ＳＶＣ４Ｂとの間でどちらが運用系となるか待機系となるかを決定する。なお、ＦＰＧＡ間通信を用いて運用系となるか待機系となるかを調停する処理は、前述した異常箇所判定部３１ａによって行われる。
【００７８】
次に、異常ユニット判定を実行する際に、異常箇所があった場合のリセット制御について、図１３を参照しながら説明する。図１３は、ＳＶＣに搭載されたＦＰＧＡを用いたリセット制御を説明する図である。図１３に示すように、ＦＰＧＡ４０Ａは、それぞれの対象ユニットｓ１〜ｓ４のＩ２Ｃデバイスを個別にリセットする。また、ＦＰＧＡ４０Ａは、Ｉ２Ｃ−ＭＵＸ５０のそれぞれのＩ２Ｃ−ＭＵＸｍ１〜ｍ４を個別にリセットする。リセットされたＩ２Ｃ−ＭＵＸｍ１〜ｍ４では、その後、すべての接続が切断される。なお、異常箇所があった場合のリセット制御の処理は、前述した異常箇所判定部３１ａによって行われる。例えば、異常箇所判定部３１ａは、対象ユニットｓ１のＩ２ＣデバイスであるＦＲＴ＃０から目的のデータを読み取れないデバイス異常「ｅ７」となった場合、ＦＲＴ＃０をＦＰＧＡ４０Ａ経由でリセットする（ｇ１）。また、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸｍ１へのアクセスでＩ２Ｃシーケンス異常「ｅ１」となった場合、Ｉ２Ｃ−ＭＵＸｍ１をＦＰＧＡ４０Ａ経由でリセットする（ｇ２）。
【００７９】
ここで、ＳＶＣ４Ａ、４Ｂに搭載されたＩ２Ｃ−ＭＵＸの接続方法について、図１４を参照して説明する。図１４は、ＳＶＣに搭載されたＩ２Ｃ−ＭＵＸの接続方法について説明する図である。なお、図１４では、ＳＶＣ４Ａに搭載された１個のＩ２Ｃ−ＭＵＸｍ１に着目して説明するものとする。図１４に示すように、Ｉ２Ｃ−ＭＵＸｍ１は、ＭＰＵ６０ＡのＵＡＲＴと入力端子ｍ１０で接続する。また、Ｉ２Ｃ−ＭＵＸｍ１は、複数の出力端子ｍ１１〜ｍ１４で対象ユニットｓ１のＦＲＴ＃０（ｓ１１）〜＃３（ｓ１４）と接続することで、１個の対象ユニットｓ１のみと接続する。これにより、ＳＶＣ４Ａに搭載されたＭＰＵ６０Ａは、Ｉ２Ｃ−ＭＵＸｍ１によって対象ユニットｓ１と１対１で接続することとなる。
【００８０】
また、Ｉ２Ｃ−ＭＵＸｍ１は、ＦＰＧＡ４０Ａからのリセット信号でリセットされる。これにより、Ｉ２Ｃ−ＭＵＸｍ１では、すべての接続が切断される。例えば、図１４では、Ｉ２Ｃ−ＭＵＸｍ１は、出力端子ｍ１４で対象ユニットｓ１のＦＲＴ＃３（ｓ１４）と接続している。この場合に、Ｉ２Ｃ−ＭＵＸｍ１は、ＦＰＧＡ４０Ａによってリセットされると、既に接続されていたＦＲＴ＃３（ｓ１４）を含め、すべての接続を切断することとなる。
【００８１】
［実施例に係る異常ユニット判定処理の手順］
次に、実施例に係る異常ユニット判定処理の手順を、図１５Ａ〜図２０を参照して説明する。図１５Ａ〜図１７では、運用ＳＶＣの異常ユニット判定処理の手順を示し、図１８〜図２０では、待機ＳＶＣの異常ユニット判定処理の手順を示す。
【００８２】
図１５Ａ〜図１５Ｅは、運用ＳＶＣの異常ユニット判定処理の中の運用ＳＶＣの異常箇所判定の手順を示すフローチャートである。図１５Ａでは、運用ＳＶＣのＩ２Ｃ−ＭＵＸのステータス異常判定の手順を示す。図１５Ｂでは、運用ＳＶＣの対象ユニットとの接続異常判定の手順を示す。図１５Ｃでは、運用ＳＶＣの対象ユニットからの読取異常判定の手順を示す。図１５Ｄでは、運用ＳＶＣの対象ユニットへの書込異常判定の手順を示す。図１５Ｅでは、運用ＳＶＣの対象ユニットからの切断異常判定の手順を示す。なお、Ｉ２Ｃバス装置９は、運用中であるものとする。
【００８３】
運用中であるＩ２Ｃバス装置９のＩ２Ｃマスタユニット１Ａでは、異常箇所判定部３１ａが、他系のＩ２Ｃマスタユニット１Ｂとの間のＦＰＧＡ間通信を用いて、運用ＳＶＣとなるか待機ＳＶＣとなるかを調停して決定する（ステップＳ１１）。ここでは、Ｉ２Ｃマスタユニット１Ａは、調停の結果、自ユニットが運用ＳＶＣとなると決定したものとする。そして、異常箇所判定部３１ａは、対象ユニットのリカバリ済みフラグをクリアする（ステップＳ１２）。
【００８４】
［運用ＳＶＣ：Ｉ２Ｃ−ＭＵＸの接続状態異常判定］
続いて、異常箇所判定部３１ａは、運用ＳＶＣ上のＩ２Ｃ−ＭＵＸのリセット回数を０にクリアする（ステップＳ１３）。そして、異常箇所判定部３１ａは、Ｉ２Ｃシーケンス制御部３２を介して、Ｉ２Ｃ−ＭＵＸ２０の接続状態（ステータス）を読み取る（ステップＳ１４）。そして、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があるか否かを判定する（ステップＳ１５）。Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があると判定した場合（ステップＳ１５；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ１６）。ここでは、異常の発生箇所をＩ２Ｃ−ＭＵＸ２０のステータスを確認する箇所とし、異常内容をＩ２Ｃシーケンス異常とする異常種別「ｅ１」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ７１からの「待機ＳＶＣへのアクセス依頼」に移行する。
【００８５】
一方、Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常がないと判定した場合（ステップＳ１５：Ｎｏ）、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０が対象ユニット３と未接続状態であるか否かを判定する（ステップＳ１７）。Ｉ２Ｃ−ＭＵＸ２０が対象ユニット３と未接続状態であると判定した場合（ステップＳ１７；Ｙｅｓ）、異常箇所判定部３１ａは、ステップＳ３１からの「対象ユニットとの接続異常判定」に移行する。
【００８６】
一方、Ｉ２Ｃ−ＭＵＸ２０が対象ユニット３と未接続状態でないと判定した場合（ステップＳ１７；Ｎｏ）、異常箇所判定部３１ａは、期待した未接続状態となっていない。このため、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０のリセット回数が０であるか否かを判定する（ステップＳ１８）。Ｉ２Ｃ−ＭＵＸ２０のリセット回数が０である場合（ステップＳ１８；Ｙｅｓ）、異常箇所判定部３１ａは、運用ＳＶＣ上のＩ２Ｃ−ＭＵＸ２０をＦＰＧＡ経由でリセットする（ステップＳ１９）。そして、異常箇所判定部３１ａは、運用ＳＶＣ上のＩ２Ｃ−ＭＵＸ２０のリセット回数をカウントアップする（ステップＳ２０）。その後、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０へのアクセスを再試行すべく、ステップＳ１４に移行する。
【００８７】
一方、Ｉ２Ｃ−ＭＵＸ２０のリセット回数が０でない場合（ステップＳ１８；Ｎｏ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ２１）。ここでは、異常の発生箇所をＩ２Ｃ−ＭＵＸ２０のステータスを確認する箇所とし、異常内容をＩ２Ｃデバイス異常とする異常種別「ｅ２」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ７１からの「待機ＳＶＣへのアクセス依頼」に移行する。
【００８８】
［運用ＳＶＣ：対象ユニットとの接続異常判定］
次に、異常箇所判定部３１ａは、Ｉ２Ｃシーケンス制御部３２を介して、運用ＳＶＣ上のＩ２Ｃ−ＭＵＸ２０を対象ユニット３と接続する（ステップＳ３１）。そして、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があるか否かを判定する（ステップＳ３２）。Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があると判定した場合（ステップＳ３２；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ３３）。ここでは、異常の発生箇所をＩ２Ｃ−ＭＵＸ２０を対象ユニット３と接続する箇所とし、異常内容をＩ２Ｃシーケンス異常とする異常種別「ｅ３」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ７１からの「待機ＳＶＣへのアクセス依頼」に移行する。
【００８９】
Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常がないと判定した場合（ステップＳ３２；Ｎｏ）、異常箇所判定部３１ａは、運用ＳＶＣ上のＩ２Ｃ−ＭＵＸ２０の対象ユニット３との接続状態を読み取る（ステップＳ３４）。そして、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があるか否かを、Ｉ２Ｃ−ＭＵＸ２０のレジスタを用いて判定する（ステップＳ３５）。Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があると判定した場合（ステップＳ３５；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ３６）。ここでは、異常の発生箇所をＩ２Ｃ−ＭＵＸ２０が対象ユニット３と接続したことを確認する箇所とし、異常内容をＩ２Ｃシーケンス異常とする異常種別「ｅ４」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ７１からの「待機ＳＶＣへのアクセス依頼」に移行する。
【００９０】
一方、Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常がないと判定した場合（ステップＳ３５；Ｎｏ）、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０が対象ユニット３とのみ接続されているか否かを判定する（ステップＳ３７）。Ｉ２Ｃ−ＭＵＸ２０が対象ユニット３とのみ接続されていないと判定した場合（ステップ３７；Ｎｏ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ３８）。ここでは、異常の発生箇所をＩ２Ｃ−ＭＵＸ２０が対象ユニット３と接続したことを確認する箇所とし、異常内容をＩ２Ｃデバイス異常とする異常種別「ｅ５」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ７１からの「待機ＳＶＣへのアクセス依頼」に移行する。
【００９１】
一方、Ｉ２Ｃ−ＭＵＸ２０が対象ユニット３とのみ接続されていると判定した場合（ステップＳ３７；Ｙｅｓ）、異常箇所判定部３１ａは、ステップＳ４１からの「対象ユニットからの読取異常判定」に移行する。
【００９２】
［運用ＳＶＣ：対象ユニットからの読取異常判定］
次に、異常箇所判定部３１ａは、対象ユニット３のＩ２Ｃデバイスへの操作内容が書き込みのみか否かを判定する（ステップＳ４１）。対象ユニット３のＩ２Ｃデバイスへの操作内容が書き込みのみであると判定した場合（ステップＳ４１；Ｙｅｓ）、異常箇所判定部３１ａは、ステップＳ５１からの「対象ユニットへの書込異常判定」に移行する。
【００９３】
一方、対象ユニット３のＩ２Ｃデバイスへの操作内容が書き込みのみでないと判定した場合（ステップＳ４１；Ｎｏ）、異常箇所判定部３１ａは、運用ＳＶＣ側から接続した対象ユニット３のＩ２Ｃデバイスのレジスタを読み取る（ステップＳ４２）。そして、異常箇所判定部３１ａは、Ｉ２Ｃデバイスへのアクセスで異常があるか否かを判定する（ステップＳ４３）。Ｉ２Ｃデバイスへのアクセスで異常があると判定した場合（ステップＳ４３；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ４４）。ここでは、異常の発生箇所を対象ユニットとアクセスする箇所とし、異常内容をＩ２Ｃシーケンス異常とする異常種別「ｅ６」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ７１からの「待機ＳＶＣへのアクセス依頼」に移行する。
【００９４】
一方、Ｉ２Ｃデバイスへのアクセスで異常がないと判定した場合（ステップＳ４３；Ｎｏ）、異常箇所判定部３１ａは、Ｉ２Ｃデバイスからの読み取り値がＩ２Ｃデバイス上あり得ない値であるか否かを判定する（ステップＳ４５）。Ｉ２Ｃデバイスからの読み取り値がＩ２Ｃデバイス上あり得ない値であると判定した場合（ステップＳ４５；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ４６）。ここでは、異常の発生箇所を対象ユニットとアクセスする箇所とし、異常内容をＩ２Ｃデバイス異常とする異常種別「ｅ７」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ７１からの「待機ＳＶＣへのアクセス依頼」に移行する。
【００９５】
一方、Ｉ２Ｃデバイスからの読み取り値がＩ２Ｃデバイス上あり得る値であると判定した場合（ステップＳ４５；Ｎｏ）、異常箇所判定部３１ａは、対象ユニット３のＩ２Ｃデバイスへの操作内容に書き込みがあるか否かを判定する（ステップＳ４７）。対象ユニット３のＩ２Ｃデバイスへの操作内容に書き込みがない（読み取りのみ）と判定した場合（ステップＳ４７；Ｎｏ）、異常箇所判定部３１ａは、ステップＳ６１からの「対象ユニットからの切断異常判定」に移行する。
【００９６】
一方、対象ユニット３のＩ２Ｃデバイスへの操作内容に書き込みがあると判定した場合（ステップＳ４７；Ｙｅｓ）、異常箇所判定部３１ａは、ステップＳ５１からの「対象ユニットへの書込異常判定」に移行する。
【００９７】
［運用ＳＶＣ：対象ユニットへの書込異常判定］
次に、異常箇所判定部３１ａは、運用ＳＶＣ側から接続した対象ユニット３のＩ２Ｃデバイスのレジスタへデータを書き込む（ステップＳ５１）。そして、異常箇所判定部３１ａは、Ｉ２Ｃデバイスへのアクセスで異常があるか否かを判定する（ステップＳ５２）。Ｉ２Ｃデバイスへのアクセスで異常があると判定した場合（ステップＳ５２；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ５３）。ここでは、異常の発生箇所を対象ユニットとアクセスする箇所とし、異常内容をＩ２Ｃシーケンス異常とする異常種別「ｅ６」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ７１からの「待機ＳＶＣへのアクセス依頼」に移行する。
【００９８】
一方、Ｉ２Ｃデバイスへのアクセスで異常がないと判定した場合（ステップＳ５２；Ｎｏ）、異常箇所判定部３１ａは、書き込んだデータを確認すべく、対象ユニット３のＩ２Ｃデバイスの書き込みを行ったレジスタを読み取る（ステップＳ５４）。そして、異常箇所判定部３１ａは、Ｉ２Ｃデバイスへのアクセスで異常があるか否かを判定する（ステップＳ５５）。Ｉ２Ｃデバイスへのアクセスで異常があると判定した場合（ステップＳ５５；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ５６）。ここでは、異常の発生箇所を対象ユニットとアクセスする箇所とし、異常内容をＩ２Ｃシーケンス異常とする異常種別「ｅ６」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ７１からの「待機ＳＶＣへのアクセス依頼」に移行する。
【００９９】
一方、Ｉ２Ｃデバイスへのアクセスで異常がないと判定した場合（ステップＳ５５；Ｎｏ）、異常箇所判定部３１ａは、Ｉ２Ｃデバイスに正しく書き込めていないか否かを判定する（ステップＳ５７）。具体的には、異常箇所判定部３１ａは、Ｉ２Ｃデバイスのレジスタへ書き込んだデータと、同一のレジスタから読み取ったデータを比較し、同一データでないか否かを判定すれば良い。そして、Ｉ２Ｃデバイスに正しく書き込めていないと判定した場合（ステップＳ５７；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ５８）。ここでは、異常の発生箇所を対象ユニットとアクセスする箇所とし、異常内容をＩ２Ｃデバイス異常とする異常種別「ｅ７」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ７１からの「待機ＳＶＣへのアクセス依頼」に移行する。
【０１００】
一方、Ｉ２Ｃデバイスに正しく書き込めていると判定した場合（ステップＳ５７；Ｎｏ）、異常箇所判定部３１ａは、ステップＳ６１からの「対象ユニットからの切断異常判定」に移行する。
【０１０１】
［運用ＳＶＣ：対象ユニットからの切断異常判定］
次に、異常箇所判定部３１ａは、Ｉ２Ｃシーケンス制御部３２を介して、運用ＳＶＣ上のＩ２Ｃ−ＭＵＸ２０を対象ユニット３から切断する（ステップＳ６１）。そして、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があるか否かを判定する（ステップＳ６２）。Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があると判定した場合（ステップＳ６２；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ６３）。ここでは、異常の発生箇所をＩ２Ｃ−ＭＵＸ２０を対象ユニット３から切断したことを確認する箇所とし、異常内容をＩ２Ｃシーケンス異常とする異常種別「ｅ８」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ７１からの「待機ＳＶＣへのアクセス依頼」に移行する。
【０１０２】
Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があると判定した場合（ステップＳ６２；Ｎｏ）、異常箇所判定部３１ａは、運用ＳＶＣ上のＩ２Ｃ−ＭＵＸ２０の対象ユニット３との接続状態を読み取る（ステップＳ６４）。そして、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があるか否かを、Ｉ２Ｃ−ＭＵＸ２０のレジスタを用いて判定する（ステップＳ６５）。Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があると判定した場合（ステップＳ６５；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ６６）。ここでは、異常の発生箇所をＩ２Ｃ−ＭＵＸ２０を対象ユニット３から切断したことを確認する箇所とし、異常内容をＩ２Ｃシーケンス異常とする異常種別「ｅ９」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ７１からの「待機ＳＶＣへのアクセス依頼」に移行する。
【０１０３】
一方、Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常がないと判定した場合（ステップＳ６５；Ｎｏ）、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０が未接続状態であるか否かを判定する（ステップＳ６７）。Ｉ２Ｃ−ＭＵＸ２０が未接続状態でないと判定した場合（ステップＳ６７；Ｎｏ）、期待した未接続状態となっていない。このため、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ６８）。ここでは、異常の発生箇所をＩ２Ｃ−ＭＵＸ２０を対象ユニット３から切断したことを確認する箇所とし、異常内容をＩ２Ｃデバイス異常とする異常種別「ｅ１０」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ７１からの「待機ＳＶＣへのアクセス依頼」に移行する。
【０１０４】
一方、Ｉ２Ｃ−ＭＵＸ２０が未接続状態である場合（ステップＳ６７；Ｙｅｓ）または異常ユニット判定部３１ｃが待機ＳＶＣからアクセス結果を受け取った場合（ステップＳ７３；Ｙｅｓ）、異常箇所判定部３１ａは、以下の処理を行う。すなわち、異常箇所判定部３１ａは、運用ＳＶＣが対象ユニット３との接続で異常が発生したか否かを判定する（ステップＳ６９）。例えば、異常箇所判定部３１ａは、記憶部４０に運用ＳＶＣの正常以外の異常種別が保持されているか否かを判定すれば良い。そして、運用ＳＶＣが対象ユニット３との接続で異常が発生したと判定した場合（ステップＳ６９；Ｙｅｓ）、異常箇所判定部３１ａは、ステップＳ８１からの「異常ユニット判定」に移行する。一方、運用ＳＶＣが対象ユニット３との接続で異常が発生しなかった場合（ステップＳ６９；Ｎｏ）、または異常ユニットの判定が完了した場合、異常箇所判定部３１ａは、異常ユニット判定処理を終了する。
【０１０５】
［運用ＳＶＣ：待機ＳＶＣへのアクセス依頼］
図１６は、待機ＳＶＣへのアクセス依頼の手順を示すフローチャートである。
【０１０６】
異常箇所判定部３１ａによって対象ユニット３への接続、すなわちアクセスで異常箇所があった場合に、アクセス依頼部３１ｂは、運用ＳＶＣ上のＩ２Ｃ−ＭＵＸ２０をＦＰＧＡ経由でリセットする（ステップＳ７１）。これは、待機ＳＶＣでの動作に影響を与えないためである。
【０１０７】
そして、アクセス依頼部３１ｂは、運用ＳＶＣが行う予定であった処理を、待機ＳＶＣ側から行うように、ＦＰＧＡ間通信経由で待機ＳＶＣに依頼する（ステップＳ７２）。すなわち、アクセス依頼部３１ｂは、運用ＳＶＣにおいてアクセスが異常となった対象ユニットへのアクセスを、待機ＳＶＣに依頼する。
【０１０８】
そして、異常ユニット判定部３１ｃは、ＦＰＧＡ間通信経由で送られるてくる待機ＳＶＣのアクセス結果を受け取ったか否かを判定する（ステップＳ７３）。待機ＳＶＣのアクセス結果を受け取っていないと判定した場合（ステップＳ７３；Ｎｏ）、異常ユニット判定部３１ｃは、再度判定すべく、ステップＳ７３に移行する。そして、待機ＳＶＣのアクセス結果を受け取ったと判定した場合（ステップＳ７３；Ｙｅｓ）、異常ユニット判定部３１ｃは、異常ユニット判定をすべく、ステップＳ６９に移行する。
【０１０９】
［運用ＳＶＣ：異常ユニット判定］
図１７は、異常ユニット判定の手順を示すフローチャートである。
【０１１０】
待機ＳＶＣからアクセス結果を受け取った場合に、異常ユニット判定部３１ｃは、異常ユニット判定マトリクス４１を用いて、異常ユニットを判定する（ステップＳ８１）。すなわち、異常ユニット判定部３１ｃは、運用ＳＶＣ上での対象ユニット３へのアクセス結果を横軸とし、待機ＳＶＣ上での対象ユニット３へのアクセス結果を縦軸とした異常ユニット判定マトリクス４１で異常ユニットを判定する。一例として、異常ユニット判定部３１ｃは、異常ユニット判定マトリクス４１に記憶された、運用ＳＶＣと待機ＳＶＣとのそれぞれの異常判定情報の組み合わせと、それぞれのアクセス結果の組み合わせとを用いて、異常ユニットを判定する。
【０１１１】
そして、異常ユニット判定部３１ｃは、判定の結果、異常ユニットが対象ユニット３であるか否かを判定する（ステップＳ８２）。異常ユニットが対象ユニット３でない、すなわち運用ＳＶＣまたは待機ＳＶＣであると判定した場合（ステップＳ８２；Ｎｏ）、異常ユニット判定部３１ｃは、対象ユニットのリカバリ済みフラグを０にクリアする（ステップＳ８３）。その後、異常ユニット判定部３１ｃは、さらに異常ユニットを判別すべく、ステップＳ８８に移行する。
【０１１２】
一方、異常ユニットが対象ユニット３であると判定した場合（ステップＳ８２；Ｙｅｓ）、異常ユニット判定部３１ｃは、対象ユニットのリカバリ済みフラグを用いて、リカバリ済みであるか否かを判定する（ステップＳ８４）。リカバリ済みであると判定した場合（ステップＳ８４；Ｙｅｓ）、異常ユニット判定部３１ｃは、対象ユニットを異常ユニットとして確定する（ステップＳ８５）。
【０１１３】
一方、リカバリ済みでないと判定した場合（ステップＳ８４；Ｎｏ）、異常ユニット判定部３１ｃは、運用ＳＶＣ上のＦＰＧＡから対象ユニット３のＩ２Ｃデバイスをリセットする（ステップＳ８６）。そして、異常ユニット判定部３１ｃは、対象ユニットのリカバリ済みフラグを設定する（ステップＳ８７）。その後、異常ユニット判定部３１ｃは、対象ユニット３へのアクセスを再試行すべく、ステップＳ１３に移行する。
【０１１４】
さらに、異常ユニットが対象ユニット３でない場合に、ステップＳ８３の処理後、異常ユニット判定部３１ｃは、異常ユニットが運用ＳＶＣであるか否かを判定する（ステップＳ８８）。異常ユニットが運用ＳＶＣであると判定した場合（ステップＳ８８；Ｙｅｓ）。異常ユニット判定部３１ｃは、運用ＳＶＣを異常ユニットとして確定する（ステップＳ８９）。
【０１１５】
一方、異常ユニットが運用ＳＶＣでないと判定した場合（ステップＳ８８；Ｎｏ）、異常ユニット判定部３１ｃは、異常ユニットが待機ＳＶＣであるか否かを判定する（ステップＳ９０）。異常ユニットが待機ＳＶＣであると判定した場合（ステップＳ９０；Ｙｅｓ）。異常ユニット判定部３１ｃは、待機ＳＶＣを異常ユニットとして確定する（ステップＳ９１）。その後、異常ユニット判定部３１ｃは、異常ユニット判定処理を終了する。また、異常ユニットが待機ＳＶＣでないと判定した場合も（ステップＳ９０；Ｎｏ）、その後、異常ユニット判定部３１ｃは、異常ユニット判定処理を終了する。
【０１１６】
［待機ＳＶＣ：アクセス依頼待ち］
図１８は、待機ＳＶＣのアクセス依頼待ちの手順を示すフローチャートである。
【０１１７】
まず、Ｉ２Ｃマスタユニット１Ｂでは、異常箇所判定部３１ａが、他系のＩ２Ｃマスタユニット１Ａとの間のＳＰＧＡ間通信を用いて、運用ＳＶＣとなるか待機ＳＶＣとなるかを調停して決定する（ステップＳ１０１）。ここでは、Ｉ２Ｃマスタユニット１Ｂは、Ｉ２Ｃマスタユニット１Ａとの調停の結果、自ユニットが待機ＳＶＣとなると決定したものとする。
【０１１８】
そして、異常箇所判定部３１ａは、対象ユニット３へのアクセス依頼を受け取ったか否かを判定する（ステップＳ１０２）。すなわち、異常箇所判定部３１ａは、運用ＳＶＣが行う予定であった処理のアクセス依頼をＰＦＧＡ間通信経由で受け取りを待ち合わせる。対象ユニット３へのアクセス依頼を受け取っていないと判定した場合（ステップＳ１０２；Ｎｏ）、異常箇所判定部３１ａは、再度判定すべく、ステップＳ１０２に移行する。そして、対象ユニット３へのアクセス依頼を受け取ったと判定した場合（ステップＳ１０２；Ｙｅｓ）、ステップＳ１１１からの「Ｉ２Ｃ−ＭＵＸの接続状態異常判定」に移行する。
【０１１９】
図１９Ａ〜図１９Ｅは、待機ＳＶＣの異常ユニット判定処理の中の待機ＳＶＣの異常箇所判定の手順を示すフローチャートである。図１９Ａでは、待機ＳＶＣのＩ２Ｃ−ＭＵＸのステータス異常判定の手順を示す。図１９Ｂでは、待機ＳＶＣの対象ユニットとの接続異常判定の手順を示す。図１９Ｃでは、待機ＳＶＣの対象ユニットからの読取異常判定の手順を示す。図１９Ｄでは、待機ＳＶＣの対象ユニットへの書込異常判定の手順を示す。図１９Ｅでは、待機ＳＶＣの対象ユニットからの切断異常判定の手順を示す。なお、異常箇所判定部３１ａは、対象ユニット３へのアクセス依頼を運用ＳＶＣから受け取ったものとする。
【０１２０】
［待機ＳＶＣ：Ｉ２Ｃ−ＭＵＸの接続状態異常判定］
対象ユニット３へのアクセス依頼を受け取った異常箇所判定部３１ａは、待機ＳＶＣ上のＩ２Ｃ−ＭＵＸのリセット回数を０にクリアする（ステップＳ１１１）。そして、異常箇所判定部３１ａは、Ｉ２Ｃシーケンス制御部３２を介して、Ｉ２Ｃ−ＭＵＸ２０の接続状態（ステータス）を読み取る（ステップＳ１１２）。そして、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があるか否かを判定する（ステップＳ１１３）。Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があると判定した場合（ステップＳ１１３；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ１１４）。ここでは、異常の発生箇所をＩ２Ｃ−ＭＵＸ２０のステータスを確認する箇所とし、異常内容をＩ２Ｃシーケンス異常とする異常種別「ｅ１」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ１６１からの「運用ＳＶＣへのアクセス結果通知」に移行する。
【０１２１】
一方、Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常がないと判定した場合（ステップＳ１１３：Ｎｏ）、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０が対象ユニット３と未接続状態であるか否かを判定する（ステップＳ１１５）。Ｉ２Ｃ−ＭＵＸ２０が対象ユニット３と未接続状態であると判定した場合（ステップＳ１１５；Ｙｅｓ）、異常箇所判定部３１ａは、ステップＳ１２１からの「対象ユニットとの接続異常判定」に移行する。
【０１２２】
一方、Ｉ２Ｃ−ＭＵＸ２０が対象ユニット３と未接続状態でないと判定した場合（ステップＳ１１５；Ｎｏ）、異常箇所判定部３１ａは、期待した未接続状態となっていない。このため、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０Ａのリセット回数が０であるか否かを判定する（ステップＳ１１６）。Ｉ２Ｃ−ＭＵＸ２０Ａのリセット回数が０である場合（ステップＳ１１６；Ｙｅｓ）、異常箇所判定部３１ａは、待機ＳＶＣ上のＩ２Ｃ−ＭＵＸ２０をＦＰＧＡ経由でリセットする（ステップＳ１１７）。そして、異常箇所判定部３１ａは、待機ＳＶＣ上のＩ２Ｃ−ＭＵＸ２０のリセット回数をカウントアップする（ステップＳ１１８）。その後、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０へのアクセスを再試行すべく、ステップＳ１１２に移行する。
【０１２３】
一方、Ｉ２Ｃ−ＭＵＸ２０のリセット回数が０でない場合（ステップＳ１１６；Ｎｏ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ１１９）。ここでは、異常の発生箇所をＩ２Ｃ−ＭＵＸ２０のステータスを確認する箇所とし、異常内容をＩ２Ｃデバイス異常とする異常種別「ｅ２」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ１６１からの「運用ＳＶＣへのアクセス結果通知」に移行する。
【０１２４】
［待機ＳＶＣ：対象ユニットとの接続異常判定］
次に、異常箇所判定部３１ａは、Ｉ２Ｃシーケンス制御部３２を介して、待機ＳＶＣ上のＩ２Ｃ−ＭＵＸ２０を対象ユニット３と接続する（ステップＳ１２１）。そして、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があるか否かを判定する（ステップＳ１２２）。Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があると判定した場合（ステップＳ１２２；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ１２３）。ここでは、異常の発生箇所をＩ２Ｃ−ＭＵＸ２０を対象ユニット３と接続する箇所とし、異常内容をＩ２Ｃシーケンス異常とする異常種別「ｅ３」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ１６１からの「運用ＳＶＣへのアクセス結果通知」に移行する。
【０１２５】
Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常がないと判定した場合（ステップＳ１２２；Ｎｏ）、異常箇所判定部３１ａは、待機ＳＶＣ上のＩ２Ｃ−ＭＵＸ２０の対象ユニット３との接続状態を読み取る（ステップＳ１２４）。そして、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があるか否かを、Ｉ２Ｃ−ＭＵＸ２０のレジスタを用いて判定する（ステップＳ１２５）。Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があると判定した場合（ステップＳ１２５；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ１２６）。ここでは、異常の発生箇所をＩ２Ｃ−ＭＵＸ２０が対象ユニット３と接続したことを確認する箇所とし、異常内容をＩ２Ｃシーケンス異常とする異常種別「ｅ４」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ１６１からの「運用ＳＶＣへのアクセス結果通知」に移行する。
【０１２６】
一方、Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常がないと判定した場合（ステップＳ１２５；Ｎｏ）、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０が対象ユニット３とのみ接続されているか否かを判定する（ステップＳ１２７）。Ｉ２Ｃ−ＭＵＸ２０が対象ユニット３とのみ接続されていないと判定した場合（ステップ１２７；Ｎｏ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ１２８）。ここでは、異常の発生箇所をＩ２Ｃ−ＭＵＸ２０が対象ユニット３と接続したことを確認する箇所とし、異常内容をＩ２Ｃデバイス異常とする異常種別「ｅ５」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ１６１からの「運用ＳＶＣへのアクセス結果通知」に移行する。
【０１２７】
一方、Ｉ２Ｃ−ＭＵＸ２０が対象ユニット３とのみ接続されていると判定した場合（ステップＳ１２７；Ｙｅｓ）、異常箇所判定部３１ａは、ステップＳ１３１からの「対象ユニットからの読取異常判定」に移行する。
【０１２８】
［待機ＳＶＣ：対象ユニットからの読取異常判定］
次に、異常箇所判定部３１ａは、対象ユニット３のＩ２Ｃデバイスへの操作内容が書き込みのみか否かを判定する（ステップＳ１３１）。対象ユニット３のＩ２Ｃデバイスへの操作内容が書き込みのみであると判定した場合（ステップＳ１３１；Ｙｅｓ）、異常箇所判定部３１ａは、ステップＳ１４１からの「対象ユニットへの書込異常判定」に移行する。
【０１２９】
一方、対象ユニット３のＩ２Ｃデバイスへの操作内容が書き込みのみでないと判定した場合（ステップＳ１３１；Ｎｏ）、異常箇所判定部３１ａは、待機ＳＶＣ側から接続した対象ユニット３のＩ２Ｃデバイスのレジスタを読み取る（ステップＳ１３２）。そして、異常箇所判定部３１ａは、Ｉ２Ｃデバイスへのアクセスで異常があるか否かを判定する（ステップＳ１３３）。Ｉ２Ｃデバイスへのアクセスで異常があると判定した場合（ステップＳ１３３；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ１３４）。ここでは、異常の発生箇所を対象ユニットとアクセスする箇所とし、異常内容をＩ２Ｃシーケンス異常とする異常種別「ｅ６」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ１６１からの「運用ＳＶＣへのアクセス結果通知」に移行する。
【０１３０】
一方、Ｉ２Ｃデバイスへのアクセスで異常がないと判定した場合（ステップＳ１３３；Ｎｏ）、異常箇所判定部３１ａは、Ｉ２Ｃデバイスからの読み取り値がＩ２Ｃデバイス上あり得ない値であるか否かを判定する（ステップＳ１３５）。Ｉ２Ｃデバイスからの読み取り値がＩ２Ｃデバイス上あり得ない値であると判定した場合（ステップＳ１３５；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ１３６）。ここでは、異常の発生箇所を対象ユニットとアクセスする箇所とし、異常内容をＩ２Ｃデバイス異常とする異常種別「ｅ７」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ１６１からの「運用ＳＶＣへのアクセス結果通知」に移行する。
【０１３１】
一方、Ｉ２Ｃデバイスからの読み取り値がＩ２Ｃデバイス上あり得ない値でないと判定した場合（ステップＳ１３５；Ｎｏ）、異常箇所判定部３１ａは、対象ユニット３のＩ２Ｃデバイスへの操作内容に書き込みがあるか否かを判定する（ステップＳ１３７）。対象ユニット３のＩ２Ｃデバイスへの操作内容に書き込みがない（読み取りのみ）と判定した場合（ステップＳ１３７；Ｎｏ）、異常箇所判定部３１ａは、ステップＳ１４１からの「対象ユニットからの切断異常判定」に移行する。
【０１３２】
一方、対象ユニット３のＩ２Ｃデバイスへの操作内容に書き込みがあると判定した場合（ステップＳ１３７；Ｙｅｓ）、異常箇所判定部３１ａは、ステップＳ１４１からの「対象ユニットへの書込異常判定」に移行する。
【０１３３】
［待機ＳＶＣ：対象ユニットへの書込異常判定］
次に、異常箇所判定部３１ａは、待機ＳＶＣ側から接続した対象ユニット３のＩ２Ｃデバイスのレジスタへデータを書き込む（ステップＳ１４１）。そして、異常箇所判定部３１ａは、Ｉ２Ｃデバイスへのアクセスで異常があるか否かを判定する（ステップＳ１４２）。Ｉ２Ｃデバイスへのアクセスで異常があると判定した場合（ステップＳ１４２；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ１４３）。ここでは、異常の発生箇所を対象ユニットとアクセスする箇所とし、異常内容をＩ２Ｃシーケンス異常とする異常種別「ｅ６」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ１６１からの「運用ＳＶＣへのアクセス結果通知」に移行する。
【０１３４】
一方、Ｉ２Ｃデバイスへのアクセスで異常がないと判定した場合（ステップＳ１４２；Ｎｏ）、異常箇所判定部３１ａは、書き込んだデータを確認すべく、対象ユニット３のＩ２Ｃデバイスの書き込みを行ったレジスタを読み取る（ステップＳ１４４）。そして、異常箇所判定部３１ａは、Ｉ２Ｃデバイスへのアクセスで異常があるか否かを判定する（ステップＳ１４５）。Ｉ２Ｃデバイスへのアクセスで異常があると判定した場合（ステップＳ１４５；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ１４６）。ここでは、異常の発生箇所を対象ユニットとアクセスする箇所とし、異常内容をＩ２Ｃシーケンス異常とする異常種別「ｅ６」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ１６１からの「運用ＳＶＣへのアクセス結果通知」に移行する。
【０１３５】
一方、Ｉ２Ｃデバイスへのアクセスで異常がないと判定した場合（ステップＳ１４５；Ｎｏ）、異常箇所判定部３１ａは、Ｉ２Ｃデバイスに正しく書き込めていないか否かを判定する（ステップＳ１４７）。具体的には、異常箇所判定部３１ａは、Ｉ２Ｃデバイスのレジスタへ書き込んだデータと、同一のレジスタから読み取ったデータを比較し、同一データでないか否かを判定すれば良い。そして、Ｉ２Ｃデバイスに正しく書き込めていないと判定した場合（ステップＳ１４７；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ１４８）。ここでは、異常の発生箇所を対象ユニットとアクセスする箇所とし、異常内容をＩ２Ｃデバイス異常とする異常種別「ｅ７」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ１６１からの「運用ＳＶＣへのアクセス結果通知」に移行する。
【０１３６】
一方、Ｉ２Ｃデバイスに正しく書き込めていると判定した場合（ステップＳ１４７；Ｎｏ）、異常箇所判定部３１ａは、ステップＳ１５１からの「対象ユニットからの切断異常判定」に移行する。
【０１３７】
［待機ＳＶＣ：対象ユニットからの切断異常判定］
次に、異常箇所判定部３１ａは、Ｉ２Ｃシーケンス制御部３２を介して、待機ＳＶＣ上のＩ２Ｃ−ＭＵＸ２０を対象ユニット３から切断する（ステップＳ１５１）。そして、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があるか否かを判定する（ステップＳ１５２）。Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があると判定した場合（ステップＳ１５２；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ１５３）。ここでは、異常の発生箇所をＩ２Ｃ−ＭＵＸ２０を対象ユニット３から切断したことを確認する箇所とし、異常内容をＩ２Ｃシーケンス異常とする異常種別「ｅ８」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ１６１からの「運用ＳＶＣへのアクセス結果通知」に移行する。
【０１３８】
Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があると判定した場合（ステップＳ１５２；Ｎｏ）、異常箇所判定部３１ａは、待機ＳＶＣ上のＩ２Ｃ−ＭＵＸ２０の対象ユニット３との接続状態を読み取る（ステップＳ１５４）。そして、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があるか否かを、Ｉ２Ｃ−ＭＵＸ２０のレジスタを用いて判定する（ステップＳ１５５）。Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常があると判定した場合（ステップＳ１５５；Ｙｅｓ）、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部４０に保持する（ステップＳ１５６）。ここでは、異常の発生箇所をＩ２Ｃ−ＭＵＸ２０を対象ユニット３から切断したことを確認する箇所とし、異常内容をＩ２Ｃシーケンス異常とする異常種別「ｅ９」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ１６１からの「運用ＳＶＣへのアクセス結果通知」に移行する。
【０１３９】
一方、Ｉ２Ｃ−ＭＵＸ２０へのアクセスで異常がないと判定した場合（ステップＳ１５５；Ｎｏ）、異常箇所判定部３１ａは、Ｉ２Ｃ−ＭＵＸ２０が未接続状態であるか否かを判定する（ステップＳ１５７）。Ｉ２Ｃ−ＭＵＸ２０が未接続状態でないと判定した場合（ステップＳ１５７；Ｎｏ）、期待した未接続状態となっていない。このため、異常箇所判定部３１ａは、異常の発生箇所と異常内容を含む異常種別をアクセス結果として記憶部
４０に保持する（ステップＳ１５８）。ここでは、異常の発生箇所をＩ２Ｃ−ＭＵＸ２０を対象ユニット３から切断したことを確認する箇所とし、異常内容をＩ２Ｃデバイス異常とする異常種別「ｅ１０」を記憶部４０に保持する。その後、異常箇所判定部３１ａは、ステップＳ１６１からの「運用ＳＶＣへのアクセス結果通知」に移行する。
【０１４０】
一方、Ｉ２Ｃ−ＭＵＸ２０が未接続状態でない場合（ステップＳ１５７；Ｙｅｓ）、異常箇所判定部３１ａは、対象ユニット３とのアクセスが正常であったことを記憶部４０に保持する（ステップＳ１５９）。その後、異常箇所判定部３１ａは、ステップＳ１６２からの「運用ＳＶＣへのアクセス結果通知」に移行する。
【０１４１】
［待機ＳＶＣ：運用ＳＶＣへのアクセス結果通知］
図２０は、運用ＳＶＣへのアクセス結果通知の手順を示すフローチャートである。
【０１４２】
続いて、対象ユニット３とのアクセスが異常であった場合には、異常箇所判定部３１ａは、待機ＳＶＣ上のＩ２Ｃ−ＭＵＸ２０をＦＰＧＡ経由でリセットする（ステップＳ１６１）。なお、対象ユニット３とのアクセスが正常であった場合には、異常箇所判定部３１ａは、待機ＳＶＣ上のＩ２Ｃ−ＭＵＸ２０をリセットしない。
【０１４３】
そして、異常箇所判定部３１ａは、記憶部４０に保持された処理結果（アクセス結果）をＰＦＧＡ間通信経由で運用ＳＶＣに通知し（ステップＳ１６２）、待機ＳＶＣでの異常ユニット判定処理を終了する。
【０１４４】
［実施例の効果］
上記実施例によれば、Ｉ２Ｃバス装置９は、Ｉ２Ｃマスタユニット１Ａと、Ｉ２Ｃマスタユニット１Ａと二重化されたＩ２Ｃマスタユニット１Ｂとを有する。そして、Ｉ２Ｃマスタユニット１ＡおよびＩ２Ｃマスタユニット１Ｂは、Ｉ２Ｃバスで接続する複数のＩ２Ｃスレーブユニット３を制御する。さらに、Ｉ２Ｃマスタユニット１Ａは、Ｉ２Ｃスレーブユニット３へのアクセスで異常を検出したとき、異常を検出した箇所に関するアクセス結果と、Ｉ２Ｃマスタユニット１Ｂからのアクセス結果との組み合わせを用いて、異常であるユニットを判定する。かかる構成によれば、Ｉ２Ｃバス装置９は、異常を検出されたＩ２Ｃスレーブユニット３に対する２個のアクセス結果の組み合わせを用いて、異常であるユニットを判定するので、どのユニットに異常があるのかを判定できる。例えば、Ｉ２Ｃバス装置９は、２個のアクセス結果が同じ箇所の異常である場合には、Ｉ２Ｃマスタユニット１Ａ、１Ｂに異常はなく、Ｉ２Ｃスレーブユニット３に異常があることを判定できる。また、Ｉ２Ｃバス装置９は、Ｉ２Ｃマスタユニット１Ａに異常があってもＩ２Ｃマスタユニット１Ｂに異常がない場合は、Ｉ２Ｃマスタユニット１Ａに異常があることを判定できる。
【０１４５】
また、上記実施例によれば、Ｉ２Ｃバス装置９では、異常箇所判定部３１ａが、自ユニットと接続されたＩ２Ｃスレーブユニット３へのアクセスで異常箇所があるか否かを判定する。そして、アクセス依頼部３１ｂが、異常箇所判定部３１ａによってＩ２Ｃスレーブユニット３へのアクセスで異常箇所があると判定された場合に、Ｉ２Ｃスレーブユニット３と同一のＩ２Ｃスレーブユニット３へのアクセスを、Ｉ２Ｃマスタユニット１Ｂに依頼する。さらに、異常ユニット判定部３１ｃは、異常箇所判定部３１ａによって異常箇所があると判定された異常箇所に関するアクセス結果とアクセス依頼部３１ｂによる依頼の結果を示すアクセス結果との組み合わせを用いて、異常であるユニットを判定する。かかる構成によれば、異常箇所判定部３１ａは、異常箇所があると判定されたアクセス結果とアクセス依頼部３１ｂによる依頼の結果を示すアクセス結果との組み合わせを用いて、異常であるユニットを判定するので、どのユニットに異常があるのかを判定できる。
【０１４６】
また、上記実施例によれば、Ｉ２Ｃマスタユニット１Ａは、異常ユニット判定マトリクス４１を有する。異常ユニット判定マトリクス４１は、マスタユニットで異常となる可能性のある異常箇所に関する異常判定情報について、二重化されたマスタユニットの一方の異常判定情報と他方の異常判定情報との組み合わせにより異常と判定されるユニットの候補を記憶する。そして、異常ユニット判定部３１ｃは、さらに、異常ユニット判定マトリクス４１に記憶された、二重化されたマスタユニットのそれぞれの異常判定情報の組み合わせを用いて、Ｉ２Ｃスレーブユニット３へのアクセスで異常の原因となったユニットを判定する。かかる構成によれば、異常ユニット判定部３１ｃは、異常ユニット判定マトリクス４１に記憶された異常判定情報の組み合わせを細分化して記憶すると、異常であるユニットの判定をより正確に行うことができる。
【０１４７】
また、上記実施例によれば、異常箇所に関する異常判定情報は、異常となる可能性のある箇所および当該箇所での異常内容を含む。かかる構成によれば、異常判定情報は、１個の異常となる可能性のある箇所に対して複数の異常内容を含ませることが可能となるので、異常判定情報のバリエーションを増やすことができる。この結果、異常ユニット判定部３１ｃは、異常であるユニットの判定をさらに正確に行うことができる。
【０１４８】
［その他］
なお、本実施例では、Ｉ２Ｃバス装置１が運用中に、運用ＳＶＣであるＩ２Ｃマスタユニット１Ａが対象ユニット３へのアクセスで異常があった場合に、異常ユニットを判定するものとして説明した。しかしながら、これに限定されるものではなく、Ｉ２Ｃバス装置１が運用中でない場合であっても、異常ユニット判定処理を行っても良い。例えば、Ｉ２Ｃバス装置１が事前にＩ２Ｃバス間のユニットの故障診断を行う場合であっても良い。
【０１４９】
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、アクセス依頼部３１ｂと異常ユニット判定部３１ｃとを１つの部として統合しても良い。また、Ｉ２Ｃデバイス制御部３１に備えられた各種機能部を１つの部として統合しても良い。一方、異常箇所判定部３１ａに備えられた各種機能をそれぞれ分散しても良い。一例として、異常箇所判定部３１ａを、運用系となるか待機系となるかを調停する調停部と、運用系と調停された場合の異常箇所判定部と、待機系と調停された場合の異常箇所判定部とに分散しても良い。この場合、待機系と調停された場合の異常箇所判定部を、運用系からのアクセス依頼を待ち受ける待受部と、異常箇所判定部と、アクセス結果を通知する通知部とに分散しても良い。また、記憶部４０をＩ２Ｃバス装置９の外部装置としてネットワーク経由で接続するようにしても良い。
【０１５０】
また、Ｉ２Ｃバス装置９にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵ（またはＭＰＵ、ＭＣＵ（Micro  Controller  Unit）などのマイクロ・コンピュータ）あるいは、ワイヤードロジックによるハードウェアとして実現されても良い。また、Ｉ２Ｃバス装置９にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵ（またはＭＰＵ、ＭＣＵなどのマイクロ・コンピュータ）にて解析実行されるプログラムにて実現されても良い。
【０１５１】
以上の実施例に係る実施形態に関し、さらに以下の付記を開示する。
【０１５２】
（付記１）シリアルバスで接続する複数のスレーブユニットを制御する第１のマスタユニットと、
前記複数のスレーブユニットを制御し、前記第１のマスタユニットと二重化された第２のマスタユニットとを有し、
前記第１のマスタユニットは、
自ユニットと接続された前記スレーブユニットへのアクセスで異常を検出したとき、異常を検出した箇所に関するアクセス結果と、前記第２のマスタユニットと接続された前記スレーブユニットへの前記第２のマスタユニットからのアクセス結果とを用いて、異常であるユニットを判定する制御部
を有することを特徴とする情報処理装置。
【０１５３】
（付記２）前記制御部は、
自ユニットと接続された前記スレーブユニットへのアクセスで異常箇所があるか否かを判定する異常箇所判定部と、
前記異常箇所判定部によって前記スレーブユニットへのアクセスで異常箇所があると判定された場合に、前記スレーブユニットと同一のスレーブユニットへのアクセスを、前記第２のマスタユニットに依頼するアクセス依頼部と、
前記異常箇所判定部によって異常箇所があると判定された異常箇所に関するアクセス結果と前記アクセス依頼部による依頼の結果を示すアクセス結果との組み合わせを用いて、異常であるユニットを判定する異常ユニット判定部と
を有することを特徴とする付記１に記載の情報処理装置。
【０１５４】
（付記３）前記第１のマスタユニットは、
前記スレーブユニットへのアクセスでマスタユニット中の異常となる可能性のある箇所に関するアクセス情報について、二重化されたマスタユニットの一方の前記アクセス情報と他方の前記アクセス情報との組み合わせにより異常と判定されるユニットの候補を記憶する記憶部を有し、
前記異常ユニット判定部は、
さらに、前記記憶部に記憶された、二重化されたマスタユニットのそれぞれの前記アクセス情報の組み合わせを用いて、前記スレーブユニットへのアクセスで異常の原因となったユニットを判定する
ことを特徴とする付記１または付記２に記載の情報処理装置。
【０１５５】
（付記４）前記アクセス情報は、異常となる可能性のある箇所および当該箇所での異常内容を含むことを特徴とする付記３に記載の情報処理装置。
【０１５６】
（付記５）自ユニットとシリアルバスで接続されたスレーブユニットへのアクセスで異常を検出したとき、異常を検出した箇所に関するアクセス結果と、自ユニットと二重化された他のマスタユニットとシリアルバスで接続された前記スレーブユニットへの他のマスタユニットからのアクセス結果とを用いて、異常であるユニットを判定する制御部
を有することを特徴とする制御装置。
【０１５７】
（付記６）情報処理装置によって実行される異常ユニット判定方法であって、
シリアルバスで接続する複数のスレーブユニットを制御する第１のマスタユニットが前記スレーブユニットへのアクセスで異常箇所があるか否かを判定し、
前記判定する処理によって前記スレーブユニットへのアクセスで異常箇所があると判定された場合に、前記スレーブユニットと同一のスレーブユニットへのアクセスを、前記第１のマスタユニットと二重化された第２のマスタユニットに依頼し、
前記判定する処理によって異常箇所があると判定された異常箇所に関するアクセス結果と前記依頼する処理によって依頼した結果を示すアクセス結果とを用いて、異常であるユニットを判定する
処理を含むことを特徴とする異常ユニット判定方法。
【符号の説明】
【０１５８】
１Ａ、１Ｂ  Ｉ２Ｃマスタユニット
３  Ｉ２Ｃスレーブユニット
１０  ＦＰＧＡ
２０  Ｉ２Ｃ−ＭＵＸ
３０  制御部
３１  Ｉ２Ｃデバイス制御部
３１ａ  異常箇所判定部
３１ｂ  アクセス依頼部
３１ｃ  異常ユニット判定部
３２  Ｉ２Ｃシーケンス制御部
４０  記憶部
４１  異常ユニット判定マトリクス
【図１】
0005682392.tif 000002
【図２Ａ】
0005682392.tif 000003
【図２Ｂ】
0005682392.tif 000004
【図３】
0005682392.tif 000005
【図４】
0005682392.tif 000006
【図５】
0005682392.tif 000007
【図６】
0005682392.tif 000008
【図７】
0005682392.tif 000009
【図８】
0005682392.tif 000010
【図９】
0005682392.tif 000011
【図１０】
0005682392.tif 000012
【図１１】
0005682392.tif 000013
【図１２】
0005682392.tif 000014
【図１３】
0005682392.tif 000015
【図１４】
0005682392.tif 000016
【図１５Ａ】
0005682392.tif 000017
【図１５Ｂ】
0005682392.tif 000018
【図１５Ｃ】
0005682392.tif 000019
【図１５Ｄ】
0005682392.tif 000020
【図１５Ｅ】
0005682392.tif 000021
【図１６】
0005682392.tif 000022
【図１７】
0005682392.tif 000023
【図１８】
0005682392.tif 000024
【図１９Ａ】
0005682392.tif 000025
【図１９Ｂ】
0005682392.tif 000026
【図１９Ｃ】
0005682392.tif 000027
【図１９Ｄ】
0005682392.tif 000028
【図１９Ｅ】
0005682392.tif 000029
【図２０】
0005682392.tif 000030