(57)【要約】【課題】  冗長系システムにおいて、故障診断のロバスト性を確保しつつ、確実に故障判断が可能な冗長系システム及びその故障診断方法を提供すること。【解決手段】  同一測定対象を複数のセンサにより測定すると共に、前記各センサの値を複数のコントローラにより監視する冗長系システムにおいて、前記各コントローラの起動後に前記各センサの相対関係値を取得し、各センサの値を前記相対関係値に基づいて正常かどうかを内部診断し、自身の内部診断結果と他のコントローラの内部診断結果に基づいて正常かどうかを相対診断し、この相対診断結果により自身の内部診断結果が他のコントローラの内部診断結果と異なるときは、前記相対関係値を取得し直すこととした。【選択図】        図１
2006306166.tif 000002
【特許請求の範囲】
【請求項１】
同一測定対象を複数のセンサにより測定すると共に、前記各センサの値を複数のコントローラにより監視する冗長系システムにおいて、
前記各コントローラは、
前記各コントローラの起動後に前記各センサの相対関係値を取得する初期化処理部と、
各センサの値を前記相対関係値に基づいて正常かどうかを診断する内部診断処理部と、
自身の前記内部診断結果と他のコントローラの内部診断結果に基づいて正常かどうかを診断する相対診断処理部と、
前記相対診断結果により自身の内部診断結果が他のコントローラの内部診断結果と異なるときは、前記初期化処理部により再初期化を行う再初期化指示部と、
を備えたことを特徴とする冗長系システム。
【請求項２】
請求項１に記載の冗長系システムにおいて、
前記複数のセンサは、第１センサと、第２センサと、第３センサであり、
前記複数のコントローラは、前記第１センサに接続された第１コントローラと、前記第２センサに接続された第２コントローラと、前記第３センサに接続された第３コントローラであると共に、前記各コントローラは通信により各センサ値を共有する構成であり、
前記内部診断処理部は、前記第１センサと第２センサの偏差に係わる正常・異常判断と、前記第２センサと第３センサの偏差に係わる正常・異常判断と、前記第３センサと第１センサの偏差に係わる正常・異常判断とを実行する処理部であり、
前記相対診断処理部は、前記各コントローラの前記内部診断結果の一致・不一致の多数決により診断する処理部であり、
前記再初期化指示部は、前記相対診断処理部の多数決により自身の前記内部診断結果と一致する他の前記内部診断結果が存在した場合で、自身の前記内部診断結果で異常判断結果が１つだけあったときは、前記初期化処理部により再初期化を行うことを特徴とする冗長系システム。
【請求項３】
請求項２に記載の冗長系システムにおいて、
前記相対診断処理部の多数決により自身の前記内部診断結果と一致する他の前記内部診断結果が存在し、かつ、自身の前記内部診断結果で異常判断結果が２つあったときは、この２つの異常判断結果の両方に係るセンサが故障と判断し、この故障と判断されたセンサに接続されたコントローラを停止するフェール処理部を有することを特徴とする冗長系システム。
【請求項４】
同一測定対象を複数のセンサにより測定すると共に、前記各センサの値を複数のコントローラにより監視する冗長系システムの故障診断方法において、
前記各コントローラの起動後に前記各センサの相対関係値を取得し、各センサの値を前記相対関係値に基づいて正常かどうかを内部診断し、自身の内部診断結果と他のコントローラの内部診断結果に基づいて正常かどうかを相対診断し、この相対診断結果により自身の内部診断結果が他のコントローラの内部診断結果と異なるときは、前記相対関係値を取得し直すことを特徴とする冗長系システムの故障診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、冗長系システムに関し、特に、同一測定対象を複数のセンサにより測定する冗長系システムの故障診断に関する。
【背景技術】
【０００２】
従来、複数のセンサを用いて故障診断をする技術として特許文献１に記載の技術が知られている。この公報には、自動変速機の３箇所以上の部位に配設された回転センサの出力信号により車速を算出すると共に、それら算出値相互の多数決判断により異常の発生したセンサを特定している。また、各センサに優先順位を付け、この優先順位に従ってどのセンサ値を制御に用いるかを決定している。しかしながら、上記従来技術にあっては、複数のセンサにより多数決を行っているものの、１つのコントローラが故障したときには、制御を継続できないという問題がある。また、多数決を取る際、１つだけ異常な値を示すと、すぐにフェールセーフ作動に入ってしまうため、システムのロバスト性を確保することができない虞がある。そこで、特許文献２に記載の技術では、複数のセンサと複数のコントローラを設け、複数のコントローラから出力された値を多数決判断し、多い方の値を正しい値として出力することで、１つだけ異常を示した場合であっても、正しい値を出力することでシステムのロバスト性を確保している。
【特許文献１】特開平４−１５１０６８号公報。
【特許文献２】特開平１０−３４０１０３号公報（図８参照）。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記特許文献２に示す技術にあっては、１つの値が誤った信号を出力した状態を許可したまま制御を継続するため、下記に示す課題があった。例えば、三つのセンサＡ，Ｂ，Ｃの偏差（Ａ−Ｂ），（Ｂ−Ｃ），（Ｃ−Ａ）（第１，第２，第３の組み合わせ）を求め、それぞれの偏差が所定値未満かどうかを多数決で判断した場合、ある一組（第１の組み合わせ）の偏差だけ所定値以上の場合を放置したまま制御を継続することとなる。このとき、実際にフェールが発生し、他の組（第２の組み合わせ）の偏差が所定値以上となったときには、先ほどの第１の組み合わせと、第２の組み合わせの二組の偏差が所定値以上となり、この二組の両方に係わるセンサ（例えばセンサＢ）が異常であると特定することとなる。ここで、実際に故障したセンサが第２の組み合わせと第３の組み合わせの両方に係わるセンサＣである場合、正しいセンサＢに対し異常と判断する虞があった。
【０００４】
本発明は、上記問題に着目してなされたもので、その目的とするところは、冗長系システムにおいて、ロバスト性を確保しつつ、確実に故障判断が可能な冗長系システム及びその故障診断方法を提供することにある。
【課題を解決するための手段】
【０００５】
上記目的を達成するため、本発明の冗長系システムでは、同一測定対象を複数のセンサにより測定すると共に、前記各センサの値を複数のコントローラにより監視する冗長系システムにおいて、前記各コントローラは、前記各コントローラの起動時に前記各センサの相対関係値を取得する初期化処理部と、各センサの値を前記相対関係値に基づいて正常かどうかを診断する内部診断処理部と、自身の前記内部診断結果と他のコントローラの内部診断結果に基づいて正常かどうかを診断する相対診断処理部と、前記相対診断結果により自身の内部診断結果が他のコントローラの内部診断結果と異なるときは、前記初期化処理部により再初期化を行う再初期化指示部と、を備えたことを特徴とする。
【発明の効果】
【０００６】
本発明の冗長系システムにあっては、内部診断処理に基づく相対診断処理を行い、各内部診断結果が異なるときは、相対関係値の再初期化を行うため、物理的にあり得ない状態等においてフェールセーフ作動に陥ることがなく、ロバスト性を確保できる。また、再初期化により物理的にあり得ない状態等を放置することがなく、誤った診断を回避することができる。
【発明を実施するための最良の形態】
【０００７】
以下、本発明の冗長系システムを適用した車両用操舵装置を図面に示す実施例に基づいて説明する。
【実施例１】
【０００８】
図１は実施例１の車両用操舵装置を示す全体システム図である。実施例１の車両用操舵装置では、バックアップ機構を備えたステアバイワイヤ（ＳＢＷ）システムに冗長系システムを適用した例である。
【０００９】
まず構成について説明する。運転者が操舵量を入力する操舵入力手段として、ステアリングホイール１と、車体側に回転可能に支持されると共にステアリングホイール１に接続されたステアリングシャフト２を有する。また、ステアリングシャフト２上には、運転者の操舵量としての操舵角を検出する操舵角センサ８と、運転者の操舵量としての操舵トルクを検出する操舵トルクセンサ９を有する。
【００１０】
ステアリングホイール１には、衝突安全装置としてのエアーバッグ機構が内蔵されている。このエアーバッグ機構には、一端が車体側に固定され、ステアリングシャフト２の外周に余裕を持って巻かれた後、他端がステアリングホイール１（もしくはステアリングシャフト２）に固定されエアーバッグ機構に制御信号等を出力可能なスパイラルケーブル１６が設けられている。
【００１１】
また、操舵角センサ８及び操舵トルクセンサ９よりも操向輪２０側には、運転者（ステアリングホイール１）に操舵反力を付与する反力モータ３を有する。この反力モータ３内には、反力モータ３のモータ回転角を検出するレゾルバ１０を有する。反力モータ３よりも操向輪２０側には、ステアリングシャフト２とバックアップ機構７との間を物理的に締結・解放可能な電磁クラッチ６を有する。
【００１２】
バックアップ機構７は、一端が電磁クラッチ６と接続されたステアリング側ケーブルプーリ７ａと、一端がピニオンシャフト１５と接続された操向輪側ケーブルプーリ７ｂと、両ケーブルプーリ７ａ，７ｂをそれぞれ互いに逆方向に巻き付けられた状態で連結する２本のケーブル７ｃ，７ｄを有する。電磁クラッチ６が解放されている状態では、ステアリングシャフト２の回転をピニオンシャフト１５へ伝達することはない。一方、電磁クラッチ６が締結されている状態で、ステアリングホイール１を一方向に回転させると、２本のケーブル７ｃ，７ｄのうち、一方のケーブルが運転者から入力される操舵トルクを伝達し、他方のケーブルが操向輪２０から入力される反力トルクを伝達することで、コラムシャフトと同等の機能を発揮するよう構成されている。
【００１３】
操向輪２０を転舵する転舵手段として、車体側に回転可能に支持されると共に一端が操向輪側ケーブルプーリ７ｂと接続されたピニオンシャフト１６を有する。ピニオンシャフト１６には、ピニオンシャフト１６に転舵トルクを出力する第１転舵モータ５ａ及び第２転舵モータ５ｂと、第１及び第２転舵モータ５ａ，５ｂの回転角を検出するインクリメンタル型の第１回転角センサ１１ａ及び第２回転角センサ１１ｂと、第１及び第２転舵モータ５ａ，５ｂと操向輪２０との間に設けられ、ピニオンシャフト１６の回転トルクを検出する転舵トルクセンサ１２と、ピニオンシャフト１６の回転角を検出するインクリメンタル型の第３回転角センサ１３を有する。ピニオンシャフト１６の操向輪側端部には、図示しないラック&ピニオン機構が設けられ、ステアリングラック４を軸方向に移動することで操向輪２０の転舵を行うよう構成されている。
【００１４】
第１コントローラECU1は、第１回転角センサ１１ａにより検出された値に基づいて、第１転舵モータ５ａの回転角を検出する。第２コントローラECU2は、第２回転角センサ１１ｂにより検出された値に基づいて第２転舵モータ５ｂの回転角を検出する。第３コントローラECU3は、第３回転角センサ１３により検出された値に基づいてピニオン回転角を検出する。各コントローラECU1〜ECU3は、システムの電源が投入され、それぞれ供給される電源電圧が所定値以上になったとき、そのときの各回転角センサの回転角を零位置として、各センサ値の検出を開始する。
【００１５】
実施例１のステアバイワイヤ制御システムでは、１つの回転要素であるピニオンシャフト１６の回転を三つのセンサ（１１ａ，１１ｂ，１３）により検出すると共に、それぞれのセンサの値を三つのコントローラECU1，ECU2，ECU3に読み込ませることで、冗長系を組んでいる。各コントローラECU1〜ECU3には、それぞれカウンタが設けられ、各コントローラに接続されたセンサの値を検出し、各コントローラ間の通信によって各センサ値を共有している。このようにコントローラを三つ配置したのは、センサのみが三つあったとしても、１つのコントローラが故障したときには、やはりフェールモードに落ちてしまうからである。
【００１６】
ステアバイワイヤ制御システムにあっては、操舵角センサ８により検出された操舵角、操舵トルクセンサ９により検出された操舵トルク、レゾルバ１０により検出された反力モータ回転角、第１及び第２回転角センサ１１ａ，１１ｂにより検出された転舵モータ回転角、転舵トルクセンサ１２により検出された転舵トルク、第３回転角センサ１３により検出されたピニオンシャフト回転角、他のセンサ類（車速センサ，ヨーレイトセンサ，横加速度センサ等）のセンサ信号等に基づいて、運転者の操舵角と車両の走行状態に応じた操舵制御が実行される。
【００１７】
具体的には、反力モータ３に対し、走行状況に応じた操舵反力トルクを付与するよう制御信号を出力すると共に、転舵モータ５に対し、走行状況及び運転者の操舵状態に応じた転舵量を付与するよう制御信号を出力する。尚、通常のステアバイワイヤ制御実行時は、電磁クラッチ６は解放されており、イグニッションOFF時や、フェールセーフ制御時等は、電磁クラッチ６を締結するよう構成されている。
【００１８】
図２は実施例１の第１回転角センサ１１ａ，第２回転角センサ１１ｂ及び第３回転角センサ１３の関係を表す概略図である。ピニオンシャフト１６には、ウォームホイール１６ａが設けられ、このウォームホイール１６ａには、第１転舵モータ５ａのウォームギヤ５１と、第２転舵モータ５ｂのウォームギヤ５２と、第３転舵モータ５ｃのウォームギヤ131が噛合している。尚、ウォームホイールとウォームギヤとの構成に限らず、傘歯車等を用いてもよく、特に限定しない。
【００１９】
すなわち、物理的には１つの要素であるピニオンシャフト１６の回転を、第１回転角センサ１１ａと、第２回転角センサ１１ｂと、第３回転角センサ１３の三つのセンサで検出し、冗長系を確保している。尚、図３に示すように、第３回転角センサ１３を第２転舵モータ５ｂと一体に回転する構成として冗長系を確保してもよく、特に限定しない。
【００２０】
（センサ故障診断処理）
図４，５は実施例１の回転角センサの故障診断処理を表すフローチャートである。尚、この制御フローはシステム起動時に、各コントローラECU1〜ECU3は、各センサ値の検出を開始後、各コントローラECU1〜ECU3において後述のような初期化処理が実行され、その初期化処理後は定常的に故障診断処理が実行される。尚、記載の簡略のため、第１回転角センサ１１ａをセンサＡとし、第２回転角センサ１１ｂをセンサＢとし、第３回転角センサ１３をセンサＣと記載する。
【００２１】
各コントローラECU1〜ECU3内で実行される故障診断処理のフロー内には、初期化処理部と、内部診断処理部と、相対診断処理部と、再初期化指示部と、フェール処理部からなる。
【００２２】
〔初期化処理部〕
ステップ１０１ａでは、ECU1独自のタイミングにおいてセンサＡの値を読み込み、このタイミングでECU2，3からセンサＢ，Ｃの値を受け取り、各センサ値の平均偏差α１*，β１*，γ１*を算出する。平均偏差は下記式により表される。読み込みタイミングで偏差が変化するため、連続したｎ回の平均偏差を取るようにしているが、平均値としなくてもよい。
α１*＝（Σni=1｜Ａ−Ｂ｜）/n
β１*＝（Σni=1｜Ｂ−Ｃ｜）/n
γ１*＝（Σni=1｜Ｃ−Ａ｜）/n
【００２３】
ステップ１０１ｂでは、ECU2独自のタイミングにおいてセンサＢの値を読み込み、このタイミングでECU1，3からセンサＡ，Ｃの値を受け取り、各センサ値の平均偏差α２*，β２*，γ２*を算出する。平均偏差は下記式により表される。
α２*＝（Σni=1｜Ａ−Ｂ｜）/n
β２*＝（Σni=1｜Ｂ−Ｃ｜）/n
γ２*＝（Σni=1｜Ｃ−Ａ｜）/n
【００２４】
ステップ１０１ｃでは、ECU3独自のタイミングにおいてセンサＣの値を読み込み、このタイミングでECU1，２からセンサＡ，Ｂの値を受け取り、各センサ値の平均偏差α３*，β３*，γ３*を算出する。平均偏差は下記式により表される。
α３*＝（Σni=1｜Ａ−Ｂ｜）/n
β３*＝（Σni=1｜Ｂ−Ｃ｜）/n
γ３*＝（Σni=1｜Ｃ−Ａ｜）/n
【００２５】
〔内部診断処理〕
ステップ１０２ａでは、ECU1独自のタイミングにおいてセンサＡの値を読み込み、ECU2，３からセンサＢ，Ｃを受け取り、偏差を算出する。偏差は下記式により表される。
α１＝｜Ａ−Ｂ｜
β１＝｜Ｂ−Ｃ｜
γ１＝｜Ｃ−Ａ｜
【００２６】
ステップ１０２ｂでは、ECU2独自のタイミングにおいてセンサＢの値を読み込み、ECU1，３からセンサＡ，Ｃを受け取り、偏差を算出する。偏差は下記式により表される。
α２＝｜Ａ−Ｂ｜
β２＝｜Ｂ−Ｃ｜
γ２＝｜Ｃ−Ａ｜
【００２７】
ステップ１０２ｃでは、ECU3独自のタイミングにおいてセンサＣの値を読み込み、ECU2，１からセンサＢ，Ａを受け取り、偏差を算出する。偏差は下記式により表される。
α３＝｜Ａ−Ｂ｜
β３＝｜Ｂ−Ｃ｜
γ３＝｜Ｃ−Ａ｜
【００２８】
ステップ１０３ａでは、偏差α１と平均偏差α１*との差が規格公差より小さいかどうかを判断し、小さいときはセンサＡとセンサＢは正常であると判断してステップ１０４ａに進み、それ以外のときは、センサＡまたはセンサＢが故障と判定してステップ１０５ａに進む。
【００２９】
ステップ１０３ｂでは、偏差α２と平均偏差α２*との差が規格公差より小さいかどうかを判断し、小さいときはセンサＡとセンサＢは正常であると判断してステップ１０４ｂに進み、それ以外のときは、センサＡまたはセンサＢが故障と判定してステップ１０５ｂに進む。
【００３０】
ステップ１０３ｃでは、偏差α３と平均偏差α３*との差が規格公差より小さいかどうかを判断し、小さいときはセンサＡとセンサＢは正常であると判断してステップ１０４ｃに進み、それ以外のときは、センサＡまたはセンサＢが故障と判定してステップ１０５ｃに進む。
【００３１】
ステップ１０４ａでは、故障フラグＦα１を０にセットする。
ステップ１０４ｂでは、故障フラグＦα２を０にセットする。
ステップ１０４ｃでは、故障フラグＦα３を０にセットする。
【００３２】
ステップ１０５ａでは、故障フラグＦα１を１にセットする。
ステップ１０５ｂでは、故障フラグＦα２を１にセットする。
ステップ１０５ｃでは、故障フラグＦα３を１にセットする。
【００３３】
ステップ１０６ａでは、偏差β１と平均偏差β１*との差が規格公差より小さいかどうかを判断し、小さいときはセンサＢとセンサＣは正常であると判断してステップ１０７ａに進み、それ以外のときは、センサＢまたはセンサＣが故障と判定してステップ１０８ａに進む。
【００３４】
ステップ１０６ｂでは、偏差β２と平均偏差β２*との差が規格公差より小さいかどうかを判断し、小さいときはセンサＢとセンサＣは正常であると判断してステップ１０７ｂに進み、それ以外のときは、センサＢまたはセンサＣが故障と判定してステップ１０８ｂに進む。
【００３５】
ステップ１０６ｃでは、偏差β３と平均偏差β３*との差が規格公差より小さいかどうかを判断し、小さいときはセンサＢとセンサＣは正常であると判断してステップ１０７ｃに進み、それ以外のときは、センサＢまたはセンサＣが故障と判定してステップ１０８ｃに進む。
【００３６】
ステップ１０７ａでは、故障フラグＦβ１を０にセットする。
ステップ１０７ｂでは、故障フラグＦβ２を０にセットする。
ステップ１０７ｃでは、故障フラグＦβ３を０にセットする。
【００３７】
ステップ１０８ａでは、故障フラグＦβ１を１にセットする。
ステップ１０８ｂでは、故障フラグＦβ２を１にセットする。
ステップ１０８ｃでは、故障フラグＦβ３を１にセットする。
【００３８】
ステップ１０９ａでは、偏差γ１と平均偏差γ１*との差が規格公差より小さいかどうかを判断し、小さいときはセンサＣとセンサＡは正常であると判断してステップ１１０ａに進み、それ以外のときは、センサＣまたはセンサＡが故障と判定してステップ１１１ａに進む。
【００３９】
ステップ１０９ｂでは、偏差γ２と平均偏差γ２*との差が規格公差より小さいかどうかを判断し、小さいときはセンサＣとセンサＡは正常であると判断してステップ１１０ｂに進み、それ以外のときは、センサＣまたはセンサＡが故障と判定してステップ１１１ｂに進む。
【００４０】
ステップ１０９ｃでは、偏差γ３と平均偏差γ３*との差が規格公差より小さいかどうかを判断し、小さいときはセンサＣとセンサＡは正常であると判断してステップ１１０ｃに進み、それ以外のときは、センサＣまたはセンサＡが故障と判定してステップ１１１ｃに進む。
【００４１】
ステップ１１０ａでは、サブ故障フラグＦγ１を０にセットする。
ステップ１１０ｂでは、サブ故障フラグＦγ２を０にセットする。
ステップ１１０ｃでは、サブ故障フラグＦγ３を０にセットする。
【００４２】
ステップ１１１ａでは、サブ故障フラグＦγ１を１にセットする。
ステップ１１１ｂでは、サブ故障フラグＦγ２を１にセットする。
ステップ１１１ｃでは、サブ故障フラグＦγ３を１にセットする。
【００４３】
ステップ１１２ａでは、ECU1の故障フラグＦ１（Ｆα１，Ｆβ１，Ｆγ１）の組み合わせをセットする。
ステップ１１２ｂでは、ECU2の故障フラグＦ２（Ｆα２，Ｆβ２，Ｆγ２）の組み合わせをセットする。
ステップ１１２ｃでは、ECU3の故障フラグＦ３（Ｆα３，Ｆβ３，Ｆγ３）の組み合わせをセットする。
【００４４】
〔相対診断処理〕
ステップ１１３ａでは、ECU2，ECU3より故障フラグＦ２，Ｆ３の結果を受け取る。
ステップ１１３ｂでは、ECU1，ECU3より故障フラグＦ１，Ｆ３の結果を受け取る。
ステップ１１３ｃでは、ECU1，ECU2より故障フラグＦ１，Ｆ２の結果を受け取る。
【００４５】
ステップ１１４ａでは、Ｆ１＝Ｆ２かどうかを判断し、Yesのときはステップ１１５ａに進み、サブエラーフラグＥα１を０にセットする。一方、Noのときはステップ１１６ａに進み、サブエラーフラグＥα１を１にセットする。
ステップ１１４ｂでは、Ｆ２＝Ｆ１かどうかを判断し、Yesのときはステップ１１５ｂに進み、サブエラーフラグＥα２を０にセットする。一方、Noのときはステップ１１６ｂに進み、サブエラーフラグＥα２を１にセットする。
ステップ１１４ｃでは、Ｆ３＝Ｆ１かどうかを判断し、Yesのときはステップ１１５ｃに進み、サブエラーフラグＥα３を０にセットする。一方、Noのときはステップ１１６ｃに進み、サブエラーフラグＥα３を１にセットする。
【００４６】
ステップ１１７ａでは、Ｆ１＝Ｆ３かどうかを判断し、Yesのときはステップ１１８ａに進み、サブエラーフラグＥβ１を０にセットする。一方、Noのときはステップ１１９ａに進み、サブエラーフラグＥβ１を１にセットする。
ステップ１１７ｂでは、Ｆ２＝Ｆ３かどうかを判断し、Yesのときはステップ１１８ｂに進み、サブエラーフラグＥβ２を０にセットする。一方、Noのときはステップ１１９ｂに進み、サブエラーフラグＥβ２を１にセットする。
ステップ１１７ｃでは、Ｆ３＝Ｆ２かどうかを判断し、Yesのときはステップ１１８ｃに進み、サブエラーフラグＥβ３を０にセットする。一方、Noのときはステップ１１９ｃに進み、サブエラーフラグＥβ３を１にセットする。
【００４７】
ステップ１２０ａでは、エラーフラグＥ１＝（Ｅα１，Ｅβ１）をセットする。
ステップ１２０ｂでは、エラーフラグＥ２＝（Ｅα２，Ｅβ２）をセットする。
ステップ１２０ｃでは、エラーフラグＥ３＝（Ｅα３，Ｅβ３）をセットする。
【００４８】
〔再初期化指示部〕
ステップ１２１ａでは、エラーフラグＥ１が（１，１）の組み合わせかどうかを判断し、この組み合わせのときはステップ１０１ａに進んでECU1の再初期化を実行し、それ以外のときはステップ１２２ａに進む。
ステップ１２１ｂでは、エラーフラグＥ２が（１，１）の組み合わせかどうかを判断し、この組み合わせのときはステップ１０１ｂに進んでECU2の再初期化を実行し、それ以外のときはステップ１２２ｂに進む。
ステップ１２１ｃでは、エラーフラグＥ３が（１，１）の組み合わせかどうかを判断し、この組み合わせのときはステップ１０１ｃに進んでECU3の再初期化を実行し、それ以外のときはステップ１２２ｃに進む。
【００４９】
ステップ１２２ａでは、故障フラグＦ１の組み合わせを判別し、（０，０，０）のときは全てのセンサが正常と判断してステップ１０２ａに進み、センサ故障診断処理を継続する。次に、（１，０，０），（０，１，０），（０，０，１）の組み合わせのときはステップ１０１ａに進み、ECU1の再初期化を行う。
ステップ１２２ｂでは、故障フラグＦ２の組み合わせを判別し、（０，０，０）のときは全てのセンサが正常と判断してステップ１０２ｂに進み、センサ故障診断処理を継続する。次に、（１，０，０），（０，１，０），（０，０，１）の組み合わせのときはステップ１０１ｂに進み、ECU2の再初期化を行う。
ステップ１２２ｃでは、故障フラグＦ１の組み合わせを判別し、（０，０，０）のときは全てのセンサが正常と判断してステップ１０２ｃに進み、センサ故障診断処理を継続する。次に、（１，０，０），（０，１，０），（０，０，１）の組み合わせのときはステップ１０１ｃに進み、ECU3の再初期化を行う。
【００５０】
〔フェール処理部〕
上記ステップ１２２ａ〜１２２ｃにおいて、（１，０，１）のときはステップ１２３へ進み、センサＡが故障と判断し、ECU1をシャットダウン後、システムをフェールモードに移行する。また、（１，１，０）のときはステップ１２４に進み、センサＢが故障と判断し、ECU2をシャットダウン後、システムをフェールモードに移行する。また、（０，１，１）のときはステップ１２５に進み、センサＣが故障と判断し、ECU3をシャットダウン後、システムをフェールモードに移行する。
【００５１】
（センサ故障診断処理の作用）
次に、上記フローチャートに基づくセンサ故障診断処理の作用について説明する。まず、初期化処理部により各コントローラの起動時に各センサＡ，Ｂ，Ｃの相対関係値である平均偏差α*，β*，γ*を取得する。次に、内部診断処理部において、各センサＡ，Ｂ，Ｃの値の偏差α，β，γを演算し、この値と相対関係値である平均偏差との偏差が規格公差内かどうかを診断し、その正常・異常判断結果を故障フラグとして設定する。次に、相対診断処理部において、各コントローラ自身の内部診断結果である故障フラグと、他のコントローラの内部診断結果である故障フラグとに基づいて正常かどうかを診断し、その一致・不一致の診断結果をエラーフラグに設定する。
【００５２】
次に、再初期化指示部において、この相対診断結果であるエラーフラグに基づいて、自身の診断結果が他のコントローラの内部診断結果と異なる、すなわちＥ＝（１，１）のときは、初期化処理部に進み再初期化を行う。一方、Ｅ＝（０，０）、（１，０）、（０，１）のときは、更に自身の内部診断結果を参照し、内部診断結果に異常判断結果が１つだけ含まれる、すなわちＦ＝（１，０，０）、（０，１，０）、（０，０，１）のときは、やはり初期化処理部に進み再初期化を行う。これにより、１つだけ異常という物理的にあり得ない状態を回避することが可能となり、誤った故障判断を回避することができる。
【００５３】
相対診断処理部の多数決により自身の内部診断結果と一致する他の内部診断結果が存在、すなわちＦ＝（１，０）、（０，１）であって、かつ、自身の内部診断結果に異常判断結果が２つ含まれる、すなわちＦ＝（１，１，０）、（１，０，１）、（０，１，１）のいずれかのときは、この２つの異常判断結果の両方に係るセンサ故障と判断し、フェール処理部において、この故障と判断されたセンサに接続されたコントローラをシャットダウンするとともに、フェールモードへ移行する。例えば、Ｆ１＝（１，１，０）のときは、Ｆα１とＦβ１が異常のときである。この両方に係るセンサとは、センサＢであるため、センサＢが故障していると判断し、センサＢに接続されたECU2をシャットダウンすることとなる。
【００５４】
次に、初期化処理が適正に行われなかった場合について、図６のタイムチャートに基づいて説明する。図６は各センサＡ，Ｂ，Ｃが故障していないにも係わらずECU2が物理的にあり得ない状態と診断してしまう場合を表すタイムチャートである。
【００５５】
本実施例のセンサ故障診断処理では、各センサの偏差が所定範囲内かどうかによって異常を検出する。各センサＡ，Ｂ，Ｃは、図２または図３に示すように、基本的に機械的に１つの回転要素を監視しており、それぞれの値は同じ値を示すはずである。しかしながら、各センサが予め持っている機械的結合部における公差分、各ECU1〜ECU3の初期化タイミングのバラツキ等により各センサの値は必ずしも同じ値とは限らない。特に、各ECU1〜ECU3の起動タイミングは、システム起動時に電源電圧が供給され、その電圧が所定値以上となったときであり、数ミリsecオーダーでは、必ずしも同期して各ECU1〜ECU3のシステムが起動するわけではない。また、初期化処理部において、制御周期内のどのタイミングで他のECUから初期化用の各センサ値の読み込みを開始するかについてまで、各ECU1〜ECU3間で同期を図っていない場合もある。
【００５６】
そこで、各ECU1〜ECU3のそれぞれ独自のタイミングにおいて、これら各センサ間の偏差の平均値α*，β*，γ*を算出し、この平均偏差と、各ECU1〜ECU3の診断タイミングにおいて同時に読み込まれる各センサ値の偏差α，β，γとを比較することで各センサの故障診断を行う。このとき、各センサの故障診断は、各コントローラECU1〜ECU3において個々に行われる。
【００５７】
ここで、センサ値が角速度の変化を有することで誤診断し、その誤診断が本願の故障診断処理によって解消される場合について説明する。図６はセンサ値に角速度変化がある場合において各ECU1〜3の初期化タイミングと診断タイミングとの関係を表す図である。まず、各ECU1〜3において、各ECU内における内部診断処理と、各ECUの内部診断結果に基づく各ECU間の相対診断処理に分けて説明する。
【００５８】
（各ECU内における内部診断処理について）
〔ECU1の内部診断処理〕
図６に示すように、ECU1の故障診断タイミングよりも前のタイミングにおいて、ECU1の初期化処理が実行され、偏差の平均値α１*，β１*，γ１*を演算する。ここで、偏差の平均値を演算する際、他のコントローラからセンサ値を読み込むタイミングは必ずしも一致していないため、図中○がセンサＡの値となり、図中△がECU2から受け取るセンサＢの値となり、図中×がECU3から受け取るセンサＣの値となる。
【００５９】
次に、上記初期化処理により偏差の平均値を設定した後、ECU1の故障診断タイミングにおいて、他のECU2，3から同時にセンサ値が読み込まれる。このとき、各偏差α１，β１，γ１は初期化時に設定された平均偏差±規格公差内にあるため、正常と判断され、各サブ故障フラグＦα１，Ｆβ１，Ｆγ１は０にセットされ、故障フラグＦ１は（０，０，０）にセットされる。
【００６０】
〔ECU2の内部診断処理〕
上記ECU1の処理と同様に、ECU2の故障診断タイミングよりも前のタイミングにおいて、ECU2の初期化処理が実行され、偏差の平均値α２*，β２*，γ２*を演算する。ECU2では、初期化のためにセンサ値を他のECU1，3から読み込むと、センサ値の角速度が変化しているため、偏差の平均値α２*，β２*，γ２*は特にγ２*が小さな値として出力される。
【００６１】
次に、上記初期化処理により偏差の平均値を設定した後、ECU2の故障診断タイミングにおいて、他のECU1，3から同時にセンサ値が読み込まれる。このとき、各偏差α２，β２は初期化時に設定された平均偏差±規格公差内にあるものの、γ２は初期化時に設定された平均偏差±規格公差から外れた値となる。よって、サブ故障フラグＦγ２が１にセットされ、故障フラグＦは（０，０，１）にセットされる。
【００６２】
〔ECU3の内部診断処理〕
上記ECU1の処理と同様に、ECU3の故障診断タイミングよりも前のタイミングにおいて、ECU3の初期化処理が実行され、偏差の平均値α３*，β３*，γ３*を演算する。ECU3では、初期化のためにセンサ値を他のECU1，2から読み込む。次に、上記初期化処理により偏差の平均値を設定した後、ECU3の故障診断タイミングにおいて、他のECU1，2から同時にセンサ値が読み込まれる。このとき、各偏差α３，β３，γ３は初期化時に設定された平均偏差±規格公差内にあるため、正常と判断され、各サブ故障フラグＦα３，Ｆβ３，Ｆγ３は０にセットされ、故障フラグＦ３は（０，０，０）にセットされる。
【００６３】
（各ECUの故障診断結果に基づく各ECU間の相対診断処理について）
〔ECU1の相対診断処理〕
ECU1では、他のECU2，3から故障フラグＦ２，Ｆ３の結果を受け取り、自身が診断した故障フラグＦ１と比較する。Ｆ１とＦ２を比較すると、この場合Ｆ１＝（０，０，０）、Ｆ２＝（０，０，１）であるため、サブエラーフラグＥα１を１にセットする。次に、Ｆ１とＦ３を比較すると、この場合Ｆ３＝（０，０，０）であるため、サブエラーフラグＥβ１を０にセットする。上記結果に基づいて、最終的なエラーフラグＥ１は（１，０）にセットされる。
【００６４】
次に、エラーフラグＥ１の種別を判断し、Ｅ１＝（１，０）であるため、このことはECU1と同じ判断をしているECUが存在することを意味する。すなわち、各ECU間における故障フラグの多数決により、ECU1の判断は正しいと見なしてよい。次に、ECU1における具体的な故障フラグＦ１の中身について検証し、故障フラグＦ１が（０，０，０）であるため、何ら異常が検出されておらず正常であるため、故障診断処理が継続して行われる。
【００６５】
〔ECU2の相対診断処理〕
ECU2では、他のECU1，3から故障フラグＦ１，Ｆ３の結果を受け取り、自身が診断した故障フラグＦ２と比較する。Ｆ２とＦ１を比較すると、この場合Ｆ２＝（０，０，１）、Ｆ１＝（０，０，０）であるため、サブエラーフラグＥα２を１にセットする。次に、Ｆ２とＦ３を比較すると、この場合Ｆ３＝（０，０，０）であるため、サブエラーフラグＥβ２を１にセットする。上記結果に基づいて、最終的なエラーフラグＥ２は（１，１）にセットされる。
【００６６】
次に、エラーフラグＥ２の種別を判断し、Ｅ２＝（１，１）であるため、このことは他のECU2の判断がECU1，3のいずれとも異なることを意味している。仮に、いずれかのセンサが故障していれば、他のECU1，3においても同じ判断が成されるのに、自分だけが異常な判断をしている状態とは、物理的にはあり得ない診断を行ったことになる。このときは、初期化処理における平均偏差α２*，β２*，γ２*の設定がおかしい可能性が高いため、ステップ１０１ｂに進み、ECU2の再初期化を実行する。この再初期化によって適正な平均偏差α２*，β２*，γ２*が設定されると、次の診断時には故障フラグＦ２は（０，０，０）にセットされ、他のECU1，3との診断結果と同じとなる。
【００６７】
すなわち、ECU2のみで故障診断していたときは、物理的にあり得ない診断結果である（０，０，１）という状態が存在し、この状態を許容してよいのかどうかが分からなかった。また、この状態を許容することで実際にセンサがフェールしたときに誤診断する虞があった。これに対し、他のECUの診断結果と比較し、再初期化処理を実行することで、物理的にあり得ない診断結果が放置されることがない。また、再初期化処理を施すのみで上記問題を解消することができるため、システム全体をフェールモードに移行する必要が無く、システムのロバスト性を確保することができる。
【００６８】
〔ECU3の相対診断処理〕
ECU3では、他のECU1，2から故障フラグＦ１，Ｆ２の結果を受け取り、自身が診断した故障フラグＦ３と比較する。Ｆ３とＦ１を比較すると、この場合Ｆ３＝（０，０，０）、Ｆ１＝（０，０，０）であるため、サブエラーフラグＥα３を０にセットする。次に、Ｆ３とＦ２を比較すると、この場合Ｆ２＝（０，０，１）であるため、サブエラーフラグＥβ３を１にセットする。上記結果に基づいて、最終的なエラーフラグＥ３は（０，１）にセットされる。
【００６９】
次に、エラーフラグＥ３の種別を判断し、Ｅ３＝（０，１）であるため、このことはECU3と同じ判断をしているECUが存在することを意味する。すなわち、各ECU間における故障フラグの多数決により、ECU3の判断は正しいと見なしてよい。次に、ECU3における具体的な故障フラグＦ３の中身について検証し、故障フラグＦ３が（０，０，０）であるため、何ら異常が検出されておらず正常であるため、故障診断処理が継続して行われる。
【００７０】
このように、初期化処理が適正に行われなかった場合であっても、その適正に行われなかったECU2が再初期化処理を行うことで、フェールモードに陥ることなく故障診断処理を継続することができる。
【００７１】
以上説明したように、実施例１の冗長系システムにあっては、下記に列挙する作用効果を奏する。
【００７２】
(1).各コントローラECU1〜ECU3の起動後に各センサＡ，Ｂ，Ｃの相対関係値である平均偏差を取得する初期化処理部と、各センサＡ，Ｂ，Ｃの値を平均偏差に基づいて正常かどうかを診断する内部診断処理部と、自身の内部診断結果と他のコントローラの内部診断結果に基づいて正常かどうかを診断する相対診断処理部と、相対診断結果により自身の内部診断結果が他のコントローラの内部診断結果と異なるときは、再初期化を行う再初期化指示部とを備えた。よって、物理的にあり得ない状態等においてフェールセーフ作動に陥ることがなく、故障判断のロバスト性を確保できる。また、再初期化により物理的にあり得ない状態等を放置することがなく、誤った診断を回避することができる。
【００７３】
(2).内部診断処理部は、センサＡとセンサＢの偏差に係わる正常・異常判断と、センサＢとセンサＣの偏差に係わる正常・異常判断と、センサＣとセンサＡの偏差に係わる正常・異常判断とを実行する処理部であり、相対診断処理部は、各コントローラの前記内部診断結果の一致・不一致の多数決により診断する処理部であり、再初期化指示部は、相対診断処理部の多数決により自身の前記内部診断結果と一致する他の前記内部診断結果が存在した場合で、自身の前記内部診断結果で異常判断結果が１つだけあったときは、初期化処理部により再初期化を行うこととした。すなわち、多数決判断により自身の判断に加え、他のコントローラの判断との一致・不一致を確認することが可能となり、物理的にあり得ない状態等を内包していたとしても、正常との判断をしないようにできる。また、その後、物理的にあり得ない状態は再初期化により解消することが可能となり、誤った診断を回避することができる。
【００７４】
(3).相対診断処理部の多数決により自身の前記内部診断結果と一致する他の前記内部診断結果が存在し、かつ、自身の前記内部診断結果で異常判断結果が２つあったときは、この２つの異常判断結果の両方に係るセンサが故障と判断し、この故障と判断されたセンサに接続されたコントローラを停止するフェール処理部を有することとした。よって、センサ自身の故障に加え、そのセンサと接続されたコントローラが故障した場合であっても、シャットダウンにより誤った制御が成されることがなく、確実に誤作動を防止することができる。
【００７５】
（他の実施例）
以上、本発明の冗長系システムを、ステアバイワイヤシステムに適用した実施例１に基づき説明してきたが、具体的な構成については、実施例１に限られるものではなく、特許請求の範囲の各請求項に係る発明の要旨を逸脱しない限り、設計の変更や追加等は許容される。例えば、バイワイヤシステムのように冗長系が要求されるブレーキバイワイヤシステムに適用しても良いし、運転者のシフトレバー操作により変速段等を制御するシフトバイワイヤシステムに適用してもよい。また、車両搭載型のシステムに限らず、冗長系システムを備えた構成であれば、全て適用可能である。
【図面の簡単な説明】
【００７６】
【図１】実施例１の車両用操舵装置を示す全体システム図である。
【図２】実施例１の第１回転角センサ，第２回転角センサ及び第３回転角センサの関係を表す概略図である。
【図３】他の実施例の第１回転角センサ，第２回転角センサ及び第３回転角センサの関係を表す概略図である。
【図４】実施例１の回転角センサの故障診断処理を表すフローチャートである。
【図５】実施例１の回転角センサの故障診断処理を表すフローチャートである。
【図６】実施例１において各センサが故障していないにも係わらずECU2が物理的にあり得ない状態と診断してしまう場合を表すタイムチャートである。
【符号の説明】
【００７７】
１    ステアリングホイール
２    ステアリングシャフト
３    反力モータ
４    ステアリングラック
５    転舵モータ
６    電磁クラッチ
７    バックアップ機構
８    操舵角センサ
９    操舵トルクセンサ
１２    転舵トルクセンサ
１３    ロータリエンコーダ
１４    コントロールユニット
１５    ピニオンシャフト
１６    スパイラルケーブル
２０    操向輪
【図１】
2006306166.tif 000003
【図２】
2006306166.tif 000004
【図３】
2006306166.tif 000005
【図４】
2006306166.tif 000006
【図５】
2006306166.tif 000007
【図６】
2006306166.tif 000008