(57)【特許請求の範囲】
【請求項１】
ネットワークに接続された複数のノードをグループ化し、グループ内で相互に入出力データを周期的に交換する分散システムにおいて、前記ノードの故障検出を行う故障検出装置であって、
前記各ノードは、
入力データに対する演算を行い、演算結果を出力する演算部と、
前記演算結果である出力データと前記入力データと組にした入出力組を前記グループ内の他のノードに対して転送すると共に、前記他のノードから前記入出力組を受信した場合に前記入力データを取り出す転送部と、
前記入出力組における出力データと前記演算結果とを比較し、当該演算結果が前記入出力組のいずれかの出力データと一致した場合はその値を出力すると共に、当該いずれかの出力データと一致し、かつ、一致しない出力データを含む場合、当該一致しない出力データのノードを故障と判定し、一方、前記演算結果が前記入出力組の全ての出力データと一致しない場合は、前記入出力組の全ての出力データに前記演算結果を追加して新たな入出力組とする比較部と、
前記比較部が判定したノードの故障を前記グループ内の他のノードに対して通知する故障検出部とを備え、
前記各ノードは、一つの周期で複数のノードから同一のノードに対する故障通知を受けた場合、次の周期以降、前記故障通知を受けたノードからの故障通知を無視することを特徴とする故障検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同一機能を実現可能な複数のノードをグループ化し、グループ内ノードが相互に入出力データを交換して比較を行うことで機能の冗長化を行う分散システムにおいて、動的な故障検出を行う故障検出装置に関するものである。
【背景技術】
【０００２】
現在の自動車では、複数のノード間でデータをやり取りすることにより、様々な機能を実現している。そのため、故障発生時により細かな制御を実現するためには、システム内の正常なノード間で故障ノードに関する認識を一致させることが重要となる。
【０００３】
従来の故障検出及び故障情報共有技術は、監視の対象となるノード（以下、監視対象ノード）のデータに対して任意数のノードで監視を行うことで（以下、監視ノード）、監視対象ノードの故障を検出する。そして、各監視ノードはサイクル毎に各々の監視結果である故障情報を他の監視ノードと交換し、収集した結果を基に多数決等の事前に定められた方法によって、故障情報の共有を図っていた（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−３７５７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来手法では、故障の確認を行うための制御情報と、情報共有のための故障情報を別々に送信するため、あるノードに対して複数ノードで監視を行う場合は、故障検出の信頼性は高くなるが、バス負荷への影響が大きくなるという問題があった。一方、監視ノード数を少数とした場合は、バス負荷への影響は小さくなるが、監視ノードの故障等により対象の監視が出来なくなる可能性がある。監視ノードの故障を検出し、監視ノードを切り替えることも出来るが、切り替え先が故障している場合の対応等の複雑な設定を考慮する必要がある。
【０００６】
このように、従来の故障情報の共有方法は、監視ノードの故障に対する耐性を高めるためにはバス負荷への影響が大きく、バス負荷への影響を小さくするために監視ノードを少なくすると、対象ノードの監視が出来なくなる恐れがあった。
【０００７】
また、情報共有時のデータの選択手段によって、故障ノードが増えた場合に従来では誤った判定をしてしまうことも考えられる。例えば、多数決による故障ノードの特定では、過半数が故障した場合に誤った結果が出力される可能性があった。
【０００８】
この発明は上記のような課題を解決するためになされたもので、故障情報共有のためのネットワーク負荷の増加を抑制しつつ、機能の冗長化、動的な故障検出機能の追加、正常ノード間での故障ノードに対する認識の一致を実現することのでき、かつ、信頼性の高い故障検出を行うことのできる故障検出装置を得ることを目的とする。
【課題を解決するための手段】
【０００９】
この発明に係る故障検出装置は、ネットワークに接続された複数のノードをグループ化し、グループ内で相互に入出力データを周期的に交換する分散システムにおいて、ノードの故障検出を行う故障検出装置であって、各ノードは、入力データに対する演算を行い、演算結果を出力する演算部と、演算結果である出力データと入力データと組にした入出力組をグループ内の他のノードに対して転送すると共に、他のノードから入出力組を受信した場合に入力データを取り出す転送部と、入出力組における出力データと演算結果とを比較し、演算結果が入出力組のいずれかの出力データと一致した場合はその値を出力すると共に、いずれかの出力データと一致し、かつ、一致しない出力データを含む場合、一致しない出力データのノードを故障と判定し、一方、演算結果が入出力組の全ての出力データと一致しない場合は、入出力組の全ての出力データに演算結果を追加して新たな入出力組とする比較部と、比較部が判定したノードの故障をグループ内の他のノードに対して通知する故障検出部とを備え、各ノードは、一つの周期で複数のノードから同一のノードに対する故障通知を受けた場合、次の周期以降、故障通知を受けたノードからの故障通知を無視するようにしたものである。
【発明の効果】
【００１０】
この発明の故障検出装置は、一致しない出力データを含む場合はその出力データのノードを故障と判定して他のノードに通知し、かつ、一つの周期で複数のノードから同一のノードに対する故障通知を受けた場合、次の周期以降は故障通知を受けたノードからの故障通知は無視するようにしたので、故障情報共有のためのネットワーク負荷の増加を抑制しつつ、機能の冗長化、動的な故障検出機能の追加、正常ノード間での故障ノードに対する認識の一致を実現することができる。また、信頼性の高い故障検出を行うことができる。
【図面の簡単な説明】
【００１１】
【図１】この発明の実施の形態１の故障検出装置を示す構成図である。
【図２】この発明の実施の形態１の故障検出装置の適用対象として想定するシステムの構成図である。
【図３】この発明の実施の形態１の故障検出装置における２つのＥＣＵ間の動作を示す説明図である。
【図４】この発明の実施の形態１の故障検出装置における４つのＥＣＵからなるシステムの構成図である。
【図５】図４のＥＣＵ間のデータフローを示す説明図である。
【図６】この発明の実施の形態１の故障検出装置におけるＥＣＵ１を開始ノードとした正常時の動作を示す説明図である。
【図７】この発明の実施の形態１の故障検出装置におけるＥＣＵ１を開始ノードとした異常時の動作を示す説明図である。
【図８】この発明の実施の形態１の故障検出装置における４ＥＣＵ構成時の正常時のシステム全体動作を示す説明図である。
【図９】この発明の実施の形態１の故障検出装置における４ＥＣＵ構成時の異常時のシステム全体動作を示す説明図である。
【図１０】この発明の実施の形態１の故障検出装置におけるＥＣＵ３によるＥＣＵ２の故障通知を示す説明図である。
【図１１】この発明の実施の形態１の故障検出装置におけるＥＣＵ４によるＥＣＵ２の故障通知を示す説明図である。
【図１２】この発明の実施の形態１の故障検出装置における入出力組を送信するＥＣＵの動作を示すフローチャートである。
【図１３】この発明の実施の形態１の故障検出装置における入出力組を受信したＥＣＵの動作を示すフローチャートである。
【図１４】この発明の実施の形態１の故障検出装置における故障通知を受信したＥＣＵの動作を示すフローチャートである。
【図１５】この発明の実施の形態１の故障検出装置における故障ＥＣＵ２による正常ＥＣＵ１に対する誤った故障通知を示す説明図である。
【図１６】この発明の実施の形態１の故障検出装置における故障ＥＣＵ２による正常ＥＣＵ１に対する誤った故障通知を示す説明図である。
【図１７】この発明の実施の形態１の故障検出装置における故障ＥＣＵ３による正常ＥＣＵ１に対する誤った故障通知を示す説明図である。
【図１８】この発明の実施の形態２の故障検出装置における動作を示す説明図である。
【図１９】この発明の実施の形態３の故障検出装置における動作を示す説明図である。
【図２０】この発明の実施の形態４の故障検出装置における動作を示す説明図である。
【図２１】この発明の実施の形態５の故障検出装置における動作を示す説明図である。
【発明を実施するための形態】
【００１２】
実施の形態１．
実施の形態１では、ネットワークに接続された複数のノードの例としてＥＣＵ（電子制御ユニット：Electrical Control Unit）の場合を説明する。実施の形態１では、同一機能を実現可能な複数のＥＣＵをグループ化し、グループ内ＥＣＵが相互に入出力データを交換して比較を行うことで機能の冗長化、及び動的な故障検出能力の追加を実現し、且つ故障検出時に故障情報の共有を行う。
【００１３】
ここで、同一機能を実現可能とは、該当ＥＣＵが同じ演算機能を持ち、ある入力に対して全く同じ演算結果が得られることを意味する。動的な故障検出能力とは、故障の発生状況に応じて故障を検出するＥＣＵが自動的に切り替わることを意味する。
【００１４】
本発明は、１周期内に２つのＥＣＵが同時に故障しないことを想定している。この想定は、１周期内に２つのノードが同時に故障し、且つ両者が同時に同じ誤りをする場合のみ問題となるが、その確率は十分に小さいと考えられることから妥当である。
【００１５】
各ＥＣＵは、入力データを取得し、それを基に演算を行い出力データを得る。その後、入力データと出力データのペア（以下、入出力組）をグループ内のＥＣＵに送信する。入出力組を受信したＥＣＵは、入力データを基に演算を行い、出力データを得て、受信した出力データ集合と比較を行う。ここで、入出力組を受信したＥＣＵは、送信したＥＣＵと同じ機能を持つため、正常であれば同じ入力データに対しては同じ出力データが得られる。演算した出力データと受信した出力データ集合のいずれかが一致すれば、その値を出力する。一方、演算した出力データが受信した出力データ集合のいずれとも一致しなければ、入出力組の最後に自らの演算結果を追加し、グループ内の他のＥＣＵに送信する。出力データが一致しない場合のデータの転送は、アプリケーションに要求される応答時間（以下、デッドラインという）を満足する間行う。これにより、システム内に正常なＥＣＵが２つ存在すれば、正しい結果が出力される。この結果、機能が冗長化される。デッドラインを違反するまで一致する出力が見つからない場合には、前回値やデフォルト値を出力することで応答時間も満足できる。
【００１６】
また、出力データが出力データ集合のいずれかに一致して出力される際には、一致しない出力データを追加したＥＣＵが故障していることが判断できる。上記手順では、出力パスに故障ＥＣＵを含む正常な２つのＥＣＵが故障ＥＣＵを判断することが可能となる。
【００１７】
一方、出力パスに故障ＥＣＵを含まないＥＣＵは、故障ＥＣＵを認識することができない。そのため、正常ＥＣＵ間で故障ＥＣＵに関する認識を一致させるためには、故障ＥＣＵを検出したＥＣＵが、グループ内の全ＥＣＵに故障ＥＣＵに関する通知を行う必要がある。本発明では正常な２つのＥＣＵが故障ＥＣＵを認識することが可能であるため、各ＥＣＵは故障通知を２つ以上受信した場合に、通知されたＥＣＵを故障ＥＣＵとしてマークし、以降のサイクルでは故障ＥＣＵからの故障通知を無視する。これにより、故障ＥＣＵが正常なＥＣＵに対する故障通知を行ったとしても無視され、正常なＥＣＵが故障と判断されることを防ぐことが出来る。
以下、このような分散システムにおける故障検出装置の実施の形態について説明する。
【００１８】
図１は、この発明の実施の形態１による故障検出装置を備えたＥＣＵの構成図である。
図１に示すＥＣＵ１は、入力部１１、演算部１２、転送部１３、比較部１４、出力部１５、故障検出部１６を備えており、車載ＬＡＮ１００に接続されている。
また、図２は、本発明の対象として想定する分散システムの構成図である。図１で示したＥＣＵ１と同一構成のＥＣＵが同一のネットワークに複数接続されている。ここでは、複数のＥＣＵ１、ＥＣＵ２、・・・、ＥＣＵｎ（ｎは任意の整数）が、それぞれ図１のＥＣＵ１の構成を持つ。以下では、各ＥＣＵの機能について説明する。
【００１９】
入力部１１は、センサ等を用いて制御に必要となるデータを取得する機能部である。演算部１２は、入力部１１あるいは転送部１３が取得した入力データを基にアプリケーションに応じた演算を行う機能部である。転送部１３は、入力データと演算部１２から得た演算値を組にして（以下、入出力組という）、グループ内のＥＣＵにメッセージを送信する機能部である。入出力組は、以下に示す構成となる。
｛入力データ：出力データ１：出力データ２：・・・：出力データｎ｝
ここで、ｎは任意の整数であり、転送を行う毎に該当ＥＣＵの出力データ（演算値）を追加する。そのため、各実施の形態中では入出力組の演算値を出力データ集合と称する。入出力組を受信した場合、転送部１３は、入出力組の入力データを取り出し、演算部１２を用いて計算を行う。
【００２０】
比較部１４は、受信した入出力組の入力データに対する演算部１２の演算値と、受信した入出力組の出力データ集合とを比較する機能部である。比較の結果、結果が一致するものがあれば、これを出力部１５に渡し、出力データ集合に一致するデータが存在しなければ、自らの演算結果（演算部１２の演算結果）を出力データ集合に追加して転送部１３に送る。また、不一致の出力が含まれていた場合はその不一致のＥＣＵを故障と判定してその判定結果を故障検出部１６に出力する。出力部１５は、比較部１４が一致したと判定した演算値を出力する機能部である。
故障検出部１６は、各ＥＣＵにおいて故障情報の共有を実現する機能部であり、比較部１４において故障と判定したＥＣＵの情報をグループ内の全てのＥＣＵに対して通知する。また、１周期内に同一のＥＣＵに対して複数のＥＣＵから故障通知を受信した場合は、そのＥＣＵを故障としてマークし、以降の周期ではそのＥＣＵからの情報を無視するよう構成されている。
車載ＬＡＮ１００は、図２等に示すように、複数のＥＣＵ１，２，・・・，ｎを通信接続するためのネットワークである。
【００２１】
尚、各ＥＣＵ１，２，・・・，ｎは、それぞれコンピュータで構成され、入力部１１〜故障検出部１６におけるそれぞれの処理は、各処理に対応するソフトウェアと、これらのソフトウェアを実行するためのＣＰＵやメモリといったハードウェアによって実現されている。あるいはいずれかの機能部を専用のハードウェアで構成してもよい。
【００２２】
図３は、図２におけるＥＣＵ１とＥＣＵ２の比較処理を抜粋した動作を示す説明図である。
ＥＣＵ１は、入力部１１を用いて入力データを取得し、演算部１２を用いて出力データとして演算値を得る。そして、転送部１３を用いて入力データと演算値を組にして（以下、入出力組という）、グループ内ＥＣＵ（ここではＥＣＵ２）に送信する。ＥＣＵ２は入出力組を受信すると、入出力組から入力データを抽出してそれを演算部１２に提供する。比較部１４は、演算部１２から出力されたデータと、受信した入出力組に含まれる出力データ集合とを比較する。演算部１２から得られた演算値が出力データ集合のいずれかに一致した場合、一致した演算値を出力部１５を用いて出力する。図３では、出力データが一致する場合の流れを太線としている。図３は２つのＥＣＵ１，２で一致しているため不一致の結果が含まれていないが、出力データ集合に一致しない結果が含まれていれば、その結果を出力したＥＣＵを故障として、故障検出部１６に通知する。
【００２３】
図４に示す４つのＥＣＵ（ＥＣＵ１、ＥＣＵ２、ＥＣＵ３、ＥＣＵ４）で構成されるシステムにおいて、全てのＥＣＵが正常な場合と、ＥＣＵ２が故障した場合に関して、ＥＣＵ１を開始ノードとして着目した動作をそれぞれ図６、図７に示す。図５は、図４のＥＣＵ間のデータの流れを示している。
【００２４】
図６では、ＥＣＵ１は入力部１１を用いて入力データ（５）を得、それに対して演算部１２を用いて演算を行い、出力データ（１０）を得る。ここで、（）内の値はデータを表し、正常なＥＣＵは入力データを２倍した結果が得られるものとする。そして、転送部１３を用いて入出力組｛５：１０｝を送信する。ＥＣＵ２は、入出力組｛５：１０｝を受信し、入力データ（５）に対して演算部１２を用いて演算を行い、演算結果（１０）を得る。比較部１４は、演算部１２の出力データ（１０）と受信した出力データ集合｛１０｝の比較を行い、値が（１０）で一致するため出力部１５を用いて（１０）を出力する。
【００２５】
図７では、ＥＣＵ１は入力部１１を用いて入力データ（５）を得、それに対して演算部１２を用いて演算を行い、出力データ（１０）を得る。そして、転送部１３を用いて入出力組｛５：１０｝を送信する。ＥＣＵ２は、入出力組｛５：１０｝を受信し、入力データ（５）に対して演算部１２を用いて演算を行い、演算結果（１１）を得る。ＥＣＵ２は故障しているため正しい結果が得られず出力データが（１１）となっている。従って、受信した出力データ集合と一致せず、比較部１４は不一致という結果を出力する。この時点では、データが２つのみのため、いずれのデータが正しいかが判断できないため、故障ＥＣＵの特定は出来ない。転送部１３は、比較結果が不一致であるため、入出力組の最後に演算部１２が出力した値（１１）を追加し、入出力組｛５：１０：１１｝をグループ内ＥＣＵ３に転送する。ＥＣＵ３は、入出力組｛５：１０：１１｝を受信し、入力データ（５）に対して演算部１２を用いて演算を行い、演算結果（１０）を得る。比較部１４は、演算部１２が出力した値（１０）と受信した出力データ集合｛１０：１１｝を比較し、出力（１０）が一致するため、出力部１５を用いて（１０）を出力する。比較部１４は、比較が完了した時点で誤った出力データ（１１）を付加したＥＣＵ２が故障していると判断でき、故障検出部１６を用いてグループ内の全ＥＣＵに故障通知を行う。図１０は、ＥＣＵ３によるＥＣＵ２に対する故障通知である。
【００２６】
図８は、全てのＥＣＵが正常な場合のシステム全体の動作である。全てのＥＣＵは、図６で述べたＥＣＵ１の動作と同様に２つのＥＣＵの比較で結果が一致し、処理が終了する。
【００２７】
図９は、ＥＣＵ２が故障している場合のシステム全体の動作である。ＥＣＵ１から開始される比較処理の動作は、図７で述べた通りである。
ＥＣＵ２から開始される比較処理の動作は、以下の通りである。ＥＣＵ２は入力部１１を用いて入力データ（１）を得、それに対して演算部１２を用いて演算を行い、出力データ（３）を得る。ＥＣＵ２は故障しているため、正しい結果（２）が得られていない。そして、転送部１３を用いて入出力組｛１：３｝を送信する。ＥＣＵ３は、入出力組｛１：３｝を受信し、入力データ（１）に対して演算部１２を用いて演算を行い、演算結果（２）を得る。ＥＣＵ２が故障しているため、出力データ集合の値｛３｝はＥＣＵ３の出力データ（２）と一致せず、比較部１４は不一致という結果を出力する。転送部１３は、比較結果が不一致であるため、入出力組の最後に演算部１２が出力した値（２）を追加し、入出力組｛１：３：２｝をグループ内ＥＣＵ４に転送する。ＥＣＵ４は、入出力組｛１：３：２｝を受信し、入力データ（１）に対して演算部１２を用いて演算を行い、演算結果（２）を得る。比較部１４は、演算部１２が出力した値（２）と受信した出力データ集合｛３：２｝を比較し、出力（２）が一致するため、出力部１５を用いて（２）を出力する。ＥＣＵ４は、この時点で比較部１４によって一致しない出力を行ったＥＣＵ２が故障であることを判断でき、故障検出部１６を用いてグループ内の全ＥＣＵに故障通知を行う。図１１は、ＥＣＵ４によるＥＣＵ２に対する故障通知である。
【００２８】
ＥＣＵ３から開始される比較処理の動作は、以下の通りである。ＥＣＵ３は入力部１１を用いて入力データ（３）を得、それに対して演算部１２を用いて演算を行い、出力データ（６）を得る。そして、転送部１３を用いて入出力組｛３：６｝を送信する。ＥＣＵ４は、入出力組｛３：６｝を受信し、入力データ（３）に対して演算部１２を用いて演算を行い、演算結果（６）を得る。比較部１４は、演算部１２の出力データ（６）と受信した出力データ集合｛６｝の比較を行い、値が（６）で一致するため出力部１５を用いて（６）を出力する。ＥＣＵ３から開始される比較処理は、ＥＣＵ３、ＥＣＵ４共に正常であるため、２つ目のＥＣＵ４の比較処理でデータが一致し出力が行われ、余計な計算やメッセージの転送が行われない。また、出力までのパスに故障ＥＣＵが含まれないため、故障ＥＣＵも検出しない。
【００２９】
ＥＣＵ４から開始される比較処理の動作は、以下の通りである。ＥＣＵ４は入力部１１を用いて入力データ（４）を得、それに対して演算部１２を用いて演算を行い、出力データ（８）を得る。そして、転送部１３を用いて入出力組｛４：８｝を送信する。ＥＣＵ１は、入出力組｛４：８｝を受信し、入力データ（４）に対して演算部１２を用いて演算を行い、演算結果（８）を得る。比較部１４は、演算部１２の出力データ（８）と受信した出力データ集合｛８｝の比較を行い、値が（８）で一致するため出力部１５を用いて（８）を出力する。ＥＣＵ４から開始される比較処理は、ＥＣＵ４、ＥＣＵ１共に正常であるため、２つ目のＥＣＵ１の比較処理でデータが一致し出力が行われ、余計な計算やメッセージの転送が行われない。また、出力までのパスに故障ＥＣＵが含まれないため、故障ＥＣＵも検出しない。
【００３０】
従って、この時点ではシステム内の正常なＥＣＵ間で故障ＥＣＵに関する認識は一致していない。即ち、ＥＣＵ３、４はＥＣＵ２が故障しているのを認識しているのに対し、ＥＣＵ１はＥＣＵ２の故障を認識できない。そのため、システム内の故障ＥＣＵに関する認識を一致させるために、故障通知が必要となる。
【００３１】
本発明の手順では、本例のように常に２つの正常ＥＣＵが故障ＥＣＵを特定可能であるため、２つの故障通知のみで故障ＥＣＵ情報を共有することが出来る。故障を特定したＥＣＵは故障通知を行い、１周期内に同じＥＣＵに対して２つの故障通知を受け取ったＥＣＵは、該当ＥＣＵを故障としてマークする。以降は、そのＥＣＵからの故障通知を無視する。
【００３２】
図１２は、入力装置から入力データを取得し、入出力組の転送を開始するＥＣＵの動作を示すフローチャートである。ここでは、当該ＥＣＵを開始ノードと表す。開始ノードは、周期毎に入力部１１から入力データを取得し（ステップＳＴ１００）、演算部１２を用いて入力データに対して演算を行い、出力データを得る（ステップＳＴ１０１）。そして、転送部１３を用いて入力データと出力データの組み合わせ入出力組）をグループ内のＥＣＵに転送する（ステップＳＴ１０２、ＳＴ１０３）。
【００３３】
図１３は、グループ内ＥＣＵから入出力組を受信したＥＣＵの動作を示すフローチャートである。入出力組を受信したＥＣＵは（ステップＳＴ１２０）、転送部１３を用いて入力データを抽出し、演算部１２を用いて演算を行い、出力データを得る（ステップＳＴ１２１）。そして、得られた出力データと入出力組の出力データ集合のいずれかが一致するかを比較部１４を用いて比較する（ステップＳＴ１２２、ＳＴ１２３）。一致するデータがあれば、出力部１５を用いてそのデータを出力する（ステップＳＴ１２４）。更に、一致したデータ以外を出力したＥＣＵがあれば、そのＥＣＵを故障していると判断する（ステップＳＴ１２５、ＳＴ１２６）。この故障ＥＣＵに関する情報は、故障検出部１６を用いてグループ内の全てのＥＣＵに通知する（ステップＳＴ１２７）。演算した出力データが、出力データ集合のいずれのデータにも一致しなかった場合には、転送部１３を用いて入出力組の最後に自らの演算した出力データを付加して（ステップＳＴ１２８）、グループ内の次のＥＣＵに転送する（ステップＳＴ１２９）。
【００３４】
図１４は、故障検出部１６において故障通知を受信した際のフローチャートである。故障通知が、故障と特定されたＥＣＵからのものであれば、無視する（ステップＳＴ２００）。他ＥＣＵからの故障通知を最初に受信した場合には（ステップＳＴ２０１）、通知されたＥＣＵに関する故障通知数を１とし、この時点では通知されたＥＣＵを故障としてマークしない（ステップＳＴ２０３）。これによって、故障ＥＣＵが正常ＥＣＵに対して故障通知を行った場合に、正常なＥＣＵが誤って故障と判断されることを防ぐ事が出来る。ステップＳＴ２０１において該当ＥＣＵに対する故障通知数が２つ以上となった場合、該当ＥＣＵを故障ＥＣＵとしてマークし（ステップＳＴ２０２）、以降は故障ＥＣＵからの情報を無視する。尚、周期毎に故障通知数をクリアする。
【００３５】
図１５は、故障ＥＣＵ２が正常なＥＣＵ１を故障として通知した場合の例である。この場合は、他の正常なＥＣＵは正常なＥＣＵ１に対する故障通知は行わないため、ＥＣＵ１に対する故障通知が２つ以上となることはなく、正常なＥＣＵ１が誤って故障と判断されることは無い。
【００３６】
一方、図１６、図１７はあるサイクルにおいて２つの故障ＥＣＵ（ＥＣＵ２、ＥＣＵ３）が正常なＥＣＵ１に対して故障通知を行った場合である。本発明では、１サイクルに２つのＥＣＵが同時に故障しないことを想定しているため、一方は既に故障ＥＣＵとしてマークされており、そのＥＣＵからの故障通知は無視される。従って、ＥＣＵ１に対する故障通知は１つのみとなり、正常なＥＣＵ１が誤って故障と判断されることは無い。
【００３７】
実施の形態１におけるネットワーク負荷向上の抑制に関しては、例えば従来手法において４つのノードで、あるノードに対する監視を行う場合、周期毎に４つの監視結果を多数決することで故障ノードを決定していた。そのため、従来手法では、毎周期監視のためのメッセージが４つ送られることとなり、バス負荷が増加する。一方、本実施の形態では４つのノードの場合においても、メッセージ（入出力組）を送ったＥＣＵが故障していなければ出力が一致し、故障通知は行われずバス負荷への影響はない。但し、各ＥＣＵは自らの入力に対する演算と、他ノードの入力に対する演算を行う必要がありＣＰＵ負荷が２倍となるため、ＣＰＵ負荷が半分以下のシステムにのみ適当可能となる。本実施の形態では、任意の故障ノードに対して監視ノードが動的に切り替わるため、故障への耐性がある。また、故障ノードを故障としてマークするため、故障ノードが過半数となっても、正しいノードが誤って故障と判断されることはなく、正常なノード間の認識が一致する。
【００３８】
以上説明したように実施の形態１の故障検出装置によれば、ネットワークに接続された複数のノードをグループ化し、グループ内で相互に入出力データを周期的に交換する分散システムにおいて、ノードの故障検出を行う故障検出装置であって、各ノードは、入力データに対する演算を行い、演算結果を出力する演算部と、演算結果である出力データと入力データと組にした入出力組をグループ内の他のノードに対して転送すると共に、他のノードから入出力組を受信した場合に入力データを取り出す転送部と、入出力組における出力データと演算結果とを比較し、演算結果が入出力組のいずれかの出力データと一致した場合はその値を出力すると共に、いずれかの出力データと一致し、かつ、一致しない出力データを含む場合、一致しない出力データのノードを故障と判定し、一方、演算結果が入出力組の全ての出力データと一致しない場合は、入出力組の全ての出力データに演算結果を追加して新たな入出力組とする比較部と、比較部が判定したノードの故障をグループ内の他のノードに対して通知する故障検出部とを備え、各ノードは、一つの周期で複数のノードから同一のノードに対する故障通知を受けた場合、次の周期以降、故障通知を受けたノードからの故障通知を無視するようにしたので、故障情報共有のためのネットワーク負荷の増加を抑制しつつ、機能の冗長化、動的な故障検出機能の追加、正常ノード間での故障ノードに対する認識の一致を実現することができ、また、正常なノードが誤って故障と判定されることがなく、信頼性の高い故障検出を行うことができる。
【００３９】
実施の形態２．
実施の形態２は、データに更なる信頼性が求められるシステムに適用する故障検出装置に関するものである。なお、これ以降の実施の形態では、図面上の構成は実施の形態１と同様であるため、図１や図３の構成を用いて説明する。
【００４０】
実施の形態２は、システムに必要とされる安全度に応じて任意のｎ個のデータが一致するまでデータの転送を行うことにより、データの信頼性を向上させるようにしたものである。実施の形態２の動作例を図１８に示す。実施の形態２は、３つのデータが一致した場合に出力をする例であり、ＥＣＵ１、ＥＣＵ２でデータは一致しているがＥＣＵ３まで入出力組を転送部１３によって転送し、ＥＣＵ３で３つのデータが一致して出力部１５から出力が行われる。３つの出力データ一致での出力では、故障ＥＣＵ通知は３つのＥＣＵから行われる。この場合も、実施の形態２の動作は実施の形態１から変更する必要は無く、故障を検出したＥＣＵの故障検出部１６が故障通知を行い、各ＥＣＵは２つ以上のＥＣＵからの故障通知によって、通知されたＥＣＵを故障としてマークする。
【００４１】
実施の形態３．
実施の形態３は、データが一致しない場合の転送をデッドラインではなく、転送回数で規定する例である。動作例を図１９に示す。図１９は、最大転送回数は５としている。本例では、ＥＣＵ６までの出力データは全て一致していないため、転送部１３によってＥＣＵ６まで転送が行われている。図１９は、出力データ集合の一つにＥＣＵ６の出力データが一致したため出力部１５から出力が行われているが、最大転送回数を満了したＥＣＵ６の出力データが出力データ集合のいずれかに一致しなければ、前回値やデフォルト値を出力する。実施の形態３でも、一致しなかった結果を出力したＥＣＵが故障と判断でき、故障を検出したＥＣＵの故障検出部１６が故障を通知する。各ＥＣＵは２つ以上のＥＣＵからの故障通知によって、通知されたＥＣＵを故障としてマークする。
【００４２】
実施の形態４．
実施の形態４は、データの一致・不一致にかかわらず、所定回数転送するものである。所定回数転送後は、得られた結果に対して比較部１４で比較を行い、最も一致する数が多いデータを出力部１５から出力する。動作例を図２０に示す。図２０は、転送回数は５であり、ＥＣＵ５の時点で出力データ集合として｛１０：１１：１０：９：１０｝が得られており、その中で最も数が多い｛１０｝を出力する。実施の形態４でも、出力を行うＥＣＵが一致しない結果を出力したＥＣＵを故障と判断でき、故障を検出したＥＣＵの故障検出部１６が故障を通知する。各ＥＣＵは２つ以上のＥＣＵからの故障通知によって、通知されたＥＣＵを故障としてマークする。
【００４３】
実施の形態５
実施の形態５は、データの一致・不一致に関わらず、デッドラインまで転送を繰り返すものである。得られた結果に対して比較部１４によって多数決を行い、結果を出力部１５より出力する。動作例を図２１に示す。図２１は、デッドラインの直前で出力データ集合｛１０：９：１０：１０｝が得られており、多数決の結果である｛１０｝を出力する。ここでも、出力を行うＥＣＵが、一致しない結果を出力したＥＣＵを故障と判断でき、故障を検出したＥＣＵの故障検出部１６が故障を通知する。各ＥＣＵは２つ以上のＥＣＵからの故障通知によって、通知されたＥＣＵを故障としてマークする。
【００４４】
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
【符号の説明】
【００４５】
１，２，３，４，…，ｎ  ＥＣＵ、１１  入力部、１２  演算部、１３  転送部、１４  比較部、１５  出力部、１６  故障検出部。
【図１】
0005822783.tif 000002
【図２】
0005822783.tif 000003
【図３】
0005822783.tif 000004
【図４】
0005822783.tif 000005
【図５】
0005822783.tif 000006
【図６】
0005822783.tif 000007
【図７】
0005822783.tif 000008
【図８】
0005822783.tif 000009
【図９】
0005822783.tif 000010
【図１０】
0005822783.tif 000011
【図１１】
0005822783.tif 000012
【図１２】
0005822783.tif 000013
【図１３】
0005822783.tif 000014
【図１４】
0005822783.tif 000015
【図１５】
0005822783.tif 000016
【図１６】
0005822783.tif 000017
【図１７】
0005822783.tif 000018
【図１８】
0005822783.tif 000019
【図１９】
0005822783.tif 000020
【図２０】
0005822783.tif 000021
【図２１】
0005822783.tif 000022