"ネットワークに接続された複数のノードをグループ化し、グループ内で相互に入出力データを交換することで冗長化を実現する冗長化装置であって、前記各ノードは、入力データまたは当該入力データとグループ内の他のノードの演算値とを含む入出力組を入力し、前記入力データに対する演算を行う演算部と、前記入出力組が入力された場合、前記演算部の演算値と、前記他のノードの演算値とを比較する比較部と、前記比較部による比較の結果、何れかの演算値が一致した場合は当該演算値を自ノードの出力データとして出力する出力部とを備えた冗長化装置。比較部による比較の結果、一致する演算値がなかった場合、演算部の演算値を入出力組に付加して他のノードに転送する転送部を備えたことを特徴とする請求項1記載の冗長化装置。比較部による比較の結果、一致する演算値が存在し、かつ、一致しない演算値が入出力組に含まれていた場合、当該一致しない演算値を転送したノードを故障と判定し、グループ内のノードに対して通知することを特徴とする請求項1記載の冗長化装置。転送部は、所定の応答時間に達するまでの間、演算部の演算値を付加した入出力組を他のノードに転送することを特徴とする請求項2記載の冗長化装置。所定の応答時間に達するまでの間に一致する演算値が見つからなかった場合には、デフォルト値または前回値を出力することを特徴とする請求項1記載の冗長化装置。NNは任意の整数個のノードの演算値が一致した場合に、当該一致した演算値を出力データとすることを特徴とする請求項1記載の冗長化装置。一致した演算値が得られないときの転送の最大回数を規定し、転送部は、当該最大回数まで転送を行うことを特徴とする請求項2記載の冗長化装置。ネットワークに接続された複数のノードをグループ化し、グループ内で相互に入出力データを交換することで冗長化を実現する冗長化装置であって、前記各ノードは、入力データまたは当該入力データとグループ内の他のノードの演算値とを含む入出力組を入力し、前記入力データに対する演算を行う演算部と、前記演算部の演算値を前記入出力組に付加して前記グループ内の他のノードに所定回数に達するまで転送を行う転送部と、前記所定回数の転送動作で得られた前記演算部の演算値と前記他のノードの演算値とから最も多い演算値を出力する出力部とを備えた冗長化装置。ネットワークに接続された複数のノードをグループ化し、グループ内で相互に入出力データを交換することで冗長化を実現する冗長化装置であって、前記各ノードは、入力データまたは当該入力データとグループ内の他のノードの演算値とを含む入出力組を入力し、前記入力データに対する演算を行う演算部と、前記演算部の演算値を前記入出力組に付加して前記グループ内の他のノードに所定の応答時間内、転送を行う転送部と、前記所定の応答時間内に得られた前記演算部の演算値と前記他のノードの演算値の中から最も多い演算値を出力する出力部とを備えた冗長化装置。しかしながら、例えば車載システムといった分散システムではコスト制約が厳しく、一部の安全に関してクリティカルなモジュールを除き、2重系比較システムも含めシステムを冗長化するためのハードウェア追加のコストは、許容できるものではない。上述した従来の冗長化手法は、ECU内に同じ処理を行うH/Wが複数必要であり、冗長化に必要となるコストが大きいため、低コストで同様の機能を実現する手法が望まれていた。現在開発が行われている電気自動車以下、EVの電池システムは、複数の電池セルが搭載されており、各々が制御用のECU電子制御ユニットを持つ。また、それらのECU間は、同一のネットワークで接続されており、相互にデータを交換することが可能となっている。この発明は上記のような課題を解決するためになされたもので、低コストでシステムの冗長化を図ることのできる冗長化装置を得ることを目的とする。この発明に係る冗長化装置は、ネットワークに接続された複数のノードをグループ化し、グループ内で相互に入出力データを交換することで冗長化を実現する冗長化装置であって、各ノードは、入力データまたは入力データとグループ内の他のノードの演算値とを含む入出力組を入力し、入力データに対する演算を行う演算部と、入出力組が入力された場合、演算部の演算値と、他のノードの演算値とを比較する比較部と、比較部による比較の結果、何れかの演算値が一致した場合は演算値を自ノードの出力データとして出力する出力部とを備えたものである。この発明の冗長化装置は、自ノードの演算値と他のノードの演算値とが一致した場合はその演算値を自ノードの出力データとして出力するようにしたので、低コストでシステムの冗長化を図ることができる。本発明では、同一ネットワークに接続された同一機能H/W構成を持つノードであるECUをグループ化し、グループ内ECU間で相互に入出力を交換することにより、冗長化機能を実現する。各ECUは、入力データを取得し、それを基に演算を行い出力データを得る。その後、入力データと出力データのペア以下、入出力組をグループ内のECUに送信する。入出力組を受信したECUは、入力データを基に演算を行い出力データを得て、受信した出力データ集合と比較を行う。ここで、入出力組を受信したECUは、送信したECUと同じ機能H/W構成であるため、正常であれば同じ入力データに対しては同じ出力が得られる。演算した出力データと受信した出力データ集合の何れかが一致すれば、その値を出力する。一方、演算した出力データが受信した出力データ集合の何れとも一致しなければ、入出力組の最後に自らの演算結果を追加し、グループ内の他のECUに送信する。出力データが一致しない場合のデータの転送は、アプリケーションに要求される応答時間以下、デッドラインというを満足する間行う。デッドラインを違反するまで一致する出力が見つからない場合には、前回値やデフォルト値を出力する。以下、このような冗長化装置の実施の形態について説明する。実施の形態1.図1は、この発明の実施の形態1による冗長化装置におけるECUを示す構成図であり、ここでは一つのECU1のみを示している。図示のECU1は、入力部11、演算部12、転送部13、比較部14、出力部15を備えており、車載LAN100に接続されている。また、図2は、本発明の対象として想定する分散システムの構成図である。図1で示したECU1と同一構成のECUが同一のネットワークに複数接続されている。ここでは、複数のECU1、ECU2、、ECUnnは任意の整数が、それぞれ図1のECU1の構成を持つ。以下では、各ECUの機能について説明する。入力部11は、センサ等を用いて制御に必要となるデータを取得する機能部である。演算部12は、入力部11あるいは転送部13が取得した入力データを基にアプリケーションに応じた演算を行う機能部である。転送部13は、入力データと演算部12から得た演算値を組にして以下、入出力組という、グループ内のECUにメッセージを送信する機能部である。入出力組は、以下に示す構成となる。{入力データ:出力データ1:出力データ2::出力データn}ここで、nは任意の整数であり、転送を行う毎に該当ECUの出力データ演算値を追加する。そのため、各実施の形態中では入出力組の演算値を出力データ集合と称する。入出力組を受信した場合、転送部13は、入出力組の入力データを取り出し、演算部12を用いて計算を行う。比較部14は、受信した入出力組の入力データに対する演算部12の演算値と、受信した入出力組の出力データ集合とを比較する機能部である。出力部15は、比較部14が一致したと判定した演算値を出力する機能部である。車載LAN100は、図2等に示すように、複数のECU1,2,を通信接続するためのネットワークである。尚、各ECU1、2、、nは、それぞれコンピュータで構成され、入力部11~出力部15におけるそれぞれの処理は、各処理に対応するソフトウェアと、これらのソフトウェアを実行するためのCPUやメモリといったハードウェアによって実現されている。図3は、図2におけるECU1とECU2の比較処理を抜粋した動作を示す説明図である。ECU1は、入力部11を用いて入力データを取得し、演算部12を用いて出力データとして演算値を得る。そして、転送部13を用いて入力データと演算値を組にして以下、入出力組という、グループ内ECUここではECU2に送信する。ECU2は入出力組を受信すると、入出力組から入力データを抽出してそれを演算部12に提供する。比較部14は、演算部12から出力されたデータと、受信した入出力組に含まれる出力データ集合とを比較する。演算部12から得られた演算値が出力データ集合の何れかに一致した場合、一致した演算値を出力部15を用いて出力する。ECU1、ECU2、ECU3で3重系多数決システムを構築した場合において、全てのECUが正常な場合と、ECU2が故障した場合に関して、ECU1を開始ノードとして着目した動作を図4、図5に示す。図4では、ECU1は入力部11を用いて入力データ5を得、それに対して演算部12を用いて演算を行い、演算値10を得る。ここで、内はデータ値を表し、図面中のINECU1ECU2OUTの値に対応している。そして、転送部13を用いて入出力組{5:10}を送信する。ECU2は、入出力組{5:10}を受信し、入力データ5に対して演算部12を用いて演算を行い、演算値10を得る。比較部14は、演算部12の演算値10と、受信した出力データ集合{10}の比較を行い、値が10で一致するため出力部15を用いて10を出力する。図5では、ECU1は入力部11を用いて入力データ5を得、それに対して演算部12を用いて演算を行い演算値10を得る。そして、転送部13を用いて入出力組{5:10}を送信する。ECU2は、入出力組{5:10}を受信し、入力データ5に対して演算部12を用いて演算を行い、演算値11を得る。ECU2は故障しているため演算値が11となり、受信した出力データ集合と一致せず、比較部14は不一致という結果を出力する。転送部13は、比較結果が不一致であるため、入出力組の最後に演算部12が出力した値11を追加し、入出力組{5:10:11}をグループ内ECU3に転送する。ECU3は、入出力組{5:10:11}を受信し、入力データ5を演算部12を用いて演算し、演算値10を得る。比較部14は、演算部12が出力した値10と受信した出力データ集合{10:11}を比較し、出力10が一致するため、出力部15を用いて10を出力する。尚、比較部14は、比較が完了した時点で一致しない出力データ11を付加したECU2が故障していると判断できる。図6は、全てのECUが正常な場合のシステム全体の動作である。全てのECUは、図4で述べたECU1の動作と同様に二つのECU1、2の比較で結果が一致し、処理が終了する。図7は、ECU2が故障している場合のシステム全体の動作である。ECU2から開始される比較処理の動作は、以下の通りである。ECU2は、入力部11を用いて入力データ1を得、それに対して演算部12を用いて演算を行い演算値3を得る。そして、転送部13を用いて入出力組{1:3}を送信する。ECU3は、入出力組{1:3}を受信し、入力データ1に対して演算部12を用いて演算を行い、演算値2を得る。ECU2が故障しているため、ECU3の演算値2と一致せず、比較部14は不一致という結果を出力する。転送部13は、比較結果が不一致であるため、入出力組の最後に演算部12が出力した値2を追加し、入出力組{1:3:2}をグループ内ECU1に転送する。ECU1は、入出力組{1:3:2}を受信し、入力データ1に対し演算部12を用いて演算を行い、演算値2を得る。比較部14は、演算部12が出力した値2と受信した出力データ集合{3:2}を比較し、出力2が一致するため、出力部15を用いて2を出力する。ECU3から開始される比較処理の動作は、次の通りである。ECU3は、入力部11を用いて入力データ3を得、それに対して演算部12を用いて演算を行い演算値6を得る。そして、転送部13を用いて入出力組{3:6}を送信する。ECU1は、入出力組{3:6}を受信し、入力データ3に対して演算部12を用いて演算を行い、演算値6を得る。比較部14は、演算部12の演算値6と受信した出力データ集合{6}の比較を行い、値が6で一致するため出力部15を用いて6を出力する。ECU3から開始される比較処理は、ECU3、ECU1共に正常であるため、二つ目のECUの比較処理でデータが一致し出力が行われ、余計な計算やメッセージの転送が行われない。図8は、入力部11から入力データを取得し、入出力組の転送を開始するECUの動作を示すフローチャートである。ここでは、当該ECUを開始ノードと表す。開始ノードは、周期毎に入力部11から入力データを取得しステップST100、演算部12を用いて入力データに対して演算を行い演算値を得るステップST101。そして、転送部13を用いて入力データと演算値の組み合わせ入出力組をグループ内のECUに転送するステップST102、ST103。図9は、グループ内の他のECUから入出力組を受信したECUの動作を示すフローチャートである。入出力組を受信したECUはステップST120、転送部13を用いて入力データを抽出し、演算部12を用いて演算を行い、演算値出力データを得るステップST121。そして、得られた出力データと入出力組の出力データ集合の何れかが一致するかを比較部14を用いて比較するステップST122、ST123。一致するデータがあれば、出力部15を用いてそのデータを出力するステップST124。更に、一致したデータ以外を出力したECUを、故障ECUとして検出することもできるステップST125、ST126。この故障情報は、必要に応じてグループ内のECUに通知する。演算した出力データが、出力データ集合の何れのデータにも一致しなかった場合には、転送部13を用いて入出力組の最後に演算した出力データを付加して、グループ内の次のECUに転送するステップST127、ST128。尚、一致した場合の出力に関しては出力先がネットワークのノードとして接続されている場合には、そのノードに対するメッセージを送信するようにしても良いし、一致したデータを開始ノードに返送しても良い。また、返送する場合、デッドラインぎりぎりまで返送を待ち、期間内にデータが返送されなければ、デフォルト値や前回値あるいは自らの演算結果を出力することもできる。これにより、ネットワークが切断された場合に関しても、自らの演算結果による出力が行われる。以上説明したように、実施の形態1の冗長化装置によれば、ネットワークに接続された複数のノードをグループ化し、グループ内で相互に入出力データを交換することで冗長化を実現する冗長化装置であって、各ノードは、入力データまたは入力データとグループ内の他のノードの演算値とを含む入出力組を入力し、入力データに対する演算を行う演算部と、入出力組が入力された場合、演算部の演算値と、他のノードの演算値とを比較する比較部と、比較部による比較の結果、何れかの演算値が一致した場合は演算値を自ノードの出力データとして出力する出力部とを備えたので、各ノードの負荷やネットワーク負荷を下げることができ、低コストでシステムの冗長化を図ることができる。また、実施の形態1の冗長化装置によれば、比較部による比較の結果、一致する演算値がなかった場合、演算部の演算値を入出力組に付加して他のノードに転送する転送部を備えたので、グループ内における故障ノードの検出に寄与することができる。また、実施の形態1の冗長化装置によれば、比較部による比較の結果、一致する演算値が存在し、かつ、一致しない演算値が入出力組に含まれていた場合、一致しない演算値を転送したノードを故障と判定し、グループ内のノードに対して通知するようにしたので、グループ内における故障ノードの検出を容易に行うことができる。また、実施の形態1の冗長化装置によれば、転送部は、所定の応答時間に達するまでの間、演算部の演算値を付加した入出力組を他のノードに転送するようにしたので、最悪実行時間を保証した上で、故障検出に寄与することができる。また、実施の形態1の冗長化装置によれば、所定の応答時間に達するまでの間に一致する演算値が見つからなかった場合には、デフォルト値または前回値を出力するようにしたので、最悪実行時間を保証することができる。実施の形態2.実施の形態2は、データに更なる信頼性が求められるシステムに適用する冗長化装置に関するものである。図面上の構成は実施の形態1と同様であるため、図1や図3の構成を用いて説明する。実施の形態2の冗長化装置は、システムに必要とされる安全度に応じて任意のNNは任意の整数個のデータが一致するまでデータの転送を行うよう構成されている。即ち、ECU1,2,の出力部15は、一致する演算値が予め定められたN個になった場合にその演算値を出力するよう構成されている。図10は、実施の形態2における冗長化装置の動作例を示す説明図である。図示例は、3個のデータが一致した場合に出力をする例であり、ECU1、ECU2でデータは一致しているがECU3まで入出力組を転送し、ECU3で3個のデータが一致して出力が行われる。以上説明したように、実施の形態2の冗長化装置によれば、NNは任意の整数個のノードの演算値が一致した場合に、当該一致した演算値を出力データとするようにしたので、出力するデータの信頼性を向上させることができる。実施の形態3.実施の形態3は、データが一致しない場合に、所定回数まで転送を行うようにした例である。実施の形態3においても、図面上の構成は実施の形態1と同様であるため、図1や図3の構成を用いて説明する。実施の形態3の冗長化装置は、データが一致しない場合の転送の最大回数を規定するよう構成されている。即ち、ECU1,2,,nの転送部13は、予め定められた転送の最大回数に達するまでは実施の形態1で説明した転送動作を行う。図11は、実施の形態3の冗長化装置の動作を示す説明図であり、この例では、最大転送回数を5としている。図示例では、ECU6までの出力データは全て一致していないため、ECU6まで転送が行われている。図示例では、出力データ集合の一つにECU6の出力データが一致したため出力が行われているが、最大転送回数を満了したECU6の出力データが出力データ集合のどれにも一致しない場合は、前回値やデフォルト値を出力する。以上説明したように、実施の形態3の冗長化装置によれば、一致した演算値が得られないときの転送の最大回数を規定し、転送部は、当該最大回数まで転送を行うようにしたので、一致した演算値が得られない場合でも不必要な転送動作が継続することを防止することができる。実施の形態4.実施の形態4は、データの一致不一致にかかわらず、所定回数転送するようにした例である。実施の形態4においても、図面上の構成は実施の形態1と同様であるため、図1や図3の構成を用いて説明する。実施の形態4の冗長化装置では、転送部13は、予め定められた所定回数転送動作を行う。また、出力部15は、所定回数分の出力データから最も多い演算値を出力するよう構成されている。図12は、実施の形態4における冗長化装置の動作を示す説明図であり、図示例では、転送回数を5としたものである。図示例では、ECU5の時点で出力データ集合として{10:11:10:9:10}が得られており、出力部15は、その中で最も数が多い{10}を出力する。以上説明したように、実施の形態4の冗長化装置によれば、ネットワークに接続された複数のノードをグループ化し、グループ内で相互に入出力データを交換することで冗長化を実現する冗長化装置であって、各ノードは、入力データまたは入力データとグループ内の他のノードの演算値とを含む入出力組を入力し、入力データに対する演算を行う演算部と、演算部の演算値を入出力組に付加してグループ内の他のノードに所定回数に達するまで転送を行う転送部と、所定回数の転送動作で得られた演算部の演算値と他のノードの演算値とから最も多い演算値を出力する出力部とを備えたので、不必要な転送動作が継続することを防止し、かつ、出力するデータの信頼性を向上させることができる。実施の形態5.実施の形態5は、データの一致不一致にかかわらず、デッドラインまで転送を繰り返す例である。実施の形態5においても、図面上の構成は実施の形態1と同様であるため、図1や図3の構成を用いて説明する。実施の形態5の冗長化装置では、転送部13は、デッドラインに達するまで転送動作を行う。また、出力部15は、デッドラインまでの出力データから最も多い演算値を出力するよう構成されている。図13は、実施の形態5における冗長化装置の動作を示す説明図である。図示例では、デッドラインの直前で出力データ集合{10:11:10:10}が得られており、出力部15は、その中で最も数が多い{10}を出力する。以上説明したように、実施の形態5の冗長化装置によれば、ネットワークに接続された複数のノードをグループ化し、グループ内で相互に入出力データを交換することで冗長化を実現する冗長化装置であって、各ノードは、入力データまたは入力データとグループ内の他のノードの演算値とを含む入出力組を入力し、入力データに対する演算を行う演算部と、演算部の演算値を入出力組に付加してグループ内の他のノードに所定の応答時間内、転送を行う転送部と、所定の応答時間内に得られた演算部の演算値と他のノードの演算値の中から最も多い演算値を出力する出力部とを備えたので、不必要な転送動作が継続することを防止し、かつ、出力するデータの信頼性を向上させることができる。実施の形態6.実施の形態6は、CPU負荷及びネットワーク負荷の向上を更に下げるための構成である。実施の形態6におけるECUの構成を図14に示す。図14は、図1の構成に対し入出力記憶部16が追加接続されている。この入出力記憶部16は、図15に示すような入力データと出力データの対応を示す入出力テーブルを保持する記憶部である。実施の形態6における開始ノードの動作例を図16に示す。開始ノードは、入力部11を用いて入力データを取得するステップST200。そして、比較部14は、その入力データが入出力記憶部16に存在するかを検索するステップST201。存在していればステップST202、対応する出力データを出力部15を用いて出力しステップST206、処理を終了する。この場合、グループ内のECUへの入出力組の転送は行わないのでネットワークの負荷が下がり、また入出力組を受信して処理を行うECUも演算処理が必要なくなるため負荷が下がる。一方、入出力記憶部16に入力データが存在しない場合には、実施の形態1と同様にグループ内のECUに入出力組を転送するステップST203~ステップST205。入出力組を受信したECUの動作を図17に示す。入出力組を受信したECUはステップST220、比較部14を用いて、入出力記憶部16に入力データが登録されていないかを検索しステップST221、入力データが登録されていればステップST222、対応する出力データを出力部15を用いて出力するステップST223。尚、後述するように入出力記憶部16に記憶されたデータは、複数のECU間で一致した出力データであるため、入出力記憶部16に記憶された出力データを優先的に使用する。入力データが登録されていなければ、実施の形態1におけるステップST123~ステップST128と同様の処理を行うステップST224~ステップST227、ステップST229~ステップST232。但し、入力データに対して得られた出力データが、出力データ集合の何れかに一致した場合、入力データ及び一致した出力を入出力テーブルに記憶するステップST228。尚、受信ECUの動作に関しては、実施の形態1の図9で示したように入力データから出力データを得、出力データ集合との比較までを行い、一致しない場合に入出力テーブルを検索する方法もある。あるいは、データが一致する場合にも入出力テーブルを検索し、登録されているデータが一致した結果と異なる場合には、テーブル内容を更新する方法も考えられる。このように、実施の形態6では、実施の形態1~5の構成に対して入出力記憶部16を追加する必要が有るが、更に、各ノードの負荷やネットワーク負荷を軽減することができる。以上説明したように、実施の形態6の冗長化装置によれば、ネットワークに接続された複数のノードをグループ化し、グループ内で相互に入出力データを交換することで冗長化を実現する冗長化装置であって、各ノードは、入力データに対応した出力データを示す入出力テーブルを保持する入出力記憶部を備え、任意の入力データが入力された場合、任意の入力データに対応した出力データが入出力テーブルに存在するかを判定し、存在する場合は、出力データを自ノードの出力とするようにしたので、各ノードの負荷やネットワーク負荷を軽減することができる。また、実施の形態6の冗長化装置によれば、入力データに対応する出力データが入出力テーブルに存在しない場合、入力データに対する演算を行う演算部と、入力データと演算部の演算値とを組にして他のノードに転送する転送部とを備えたので、グループ内における故障ノードの検出に寄与することができる。また、実施の形態6の冗長化装置によれば、入力データとグループ内の他のノードの演算値とを含む入出力組を入力した場合、入出力組に含まれる入力データに対する出力データが入出力テーブルに存在するかを判定し、出力データが存在した場合は出力データを自ノードの出力とするようにしたので、各ノードの負荷やネットワーク負荷を軽減することができる。また、実施の形態6の冗長化装置によれば、演算部の演算値と、入出力組に含まれる他のノードの演算値とを比較する比較部と、比較部における比較の結果、演算部の演算値と他のノードの演算値で一致する演算値が存在した場合は、一致した演算値を自ノードの出力データとして出力する出力部とを備えると共に、入出力記憶部は、演算部の演算値を入力データに対する出力データとして入出力テーブルに登録するようにしたので、入出力テーブルにおけるデータの管理を容易に行うことができる。また、実施の形態6の冗長化装置によれば、演算部は、入力データが入出力テーブルに存在しない場合、前記入力データに対する演算を行うと共に、比較部は、前記演算部の演算値と、入出力組に含まれる他のノードの演算値とを比較し、一致する演算値が存在しない場合、転送部は、前記入出力組に前記演算部の演算値を付加して転送するようにしたので、グループ内における故障ノードの検出に寄与することができる。尚、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。"