車両を制御する機能を実行する車両制御装置であって、前記車両制御装置を構成するハードウェアの故障を検出する故障検出部と、前記ハードウェアの故障が前記車両制御装置の機能に影響を与える度合いを示す機能故障レベルを算出する機能故障判定部と、前記機能故障レベルに応じたフェールセーフ動作を実施するフェールセーフ制御部と、を備え、前記機能故障判定部は、故障している前記ハードウェアの組合せによって、前記機能故障レベルを判定することを特徴とする車両制御装置。故障している前記ハードウェアの組合せと、その組合せによって定まる前記機能故障レベルとの対応関係を記述した機能故障レベル判定テーブルを備え、前記機能故障判定部は、前記故障検出部が故障している旨を検出した前記ハードウェアの組合せを用いて前記機能故障レベル判定テーブルを照会することにより、前記機能故障レベルを判定することを特徴とする請求項1記載の車両制御装置。前記機能故障判定部は、重要度の高い前記ハードウェアが故障した場合における前記組合せは、重要度がより低い前記ハードウェアが故障した場合における前記組合せよりも、前記機能故障レベルが高いと判定することを特徴とする請求項1記載の車両制御装置。前記故障検出部は、前記ハードウェアの動作状態を示す数値を取得し、その数値が所定範囲を逸脱している場合は、前記ハードウェアが故障していると判断することを特徴とする請求項1記載の車両制御装置。前記車両制御装置は、車内ネットワークに接続するインターフェースを備え、前記機能故障判定部は、前記車内ネットワークに接続する車両制御装置のうち正常動作していないものの組合せによって、前記車内ネットワークに接続する複数の車両制御装置によって構成される車両制御システムのシステム機能故障レベルを判定し、前記フェールセーフ制御部は、前記システム機能故障レベルに応じたフェールセーフ動作を実施することを特徴とする請求項1記載の車両制御装置。前記車内ネットワークに接続する車両制御装置のうち正常動作していないものの組合せと、その組合せによって定まる前記システム機能故障レベルとの対応関係を記述した組合せ機能故障レベル判定テーブルを備え、前記機能故障判定部は、正常動作していない前記車両制御装置の組合せを用いて前記組合せ機能故障レベル判定テーブルを照会することにより、前記システム機能故障レベルを判定することを特徴とする請求項5記載の車両制御装置。前記車内ネットワークに接続する車両制御装置が正常動作していない旨を示す機能故障情報を前記車内ネットワークから受信する受信部を備え、前記機能故障判定部は、前記受信部が受信した前記機能故障情報を用いて、前記システム機能故障レベルを判定することを特徴とする請求項5記載の車両制御装置。請求項1記載の複数の車両制御装置と、前記複数の車両制御装置を接続する車内ネットワークと、を有し、いずれかの前記車両制御装置は、前記機能故障レベルを記述した機能故障情報を他の前記車両制御装置に送信し、前記機能故障情報を受信した前記車両制御装置は、前記機能故障情報が記述している機能故障レベルに応じたフェールセーフ動作を実施することを特徴とする車両制御システム。請求項5記載の複数の車両制御装置と、前記複数の車両制御装置を接続する車内ネットワークと、を有し、いずれかの前記車両制御装置は、前記機能故障レベルを記述した機能故障情報を他の前記車両制御装置に送信し、前記機能故障情報を受信した前記車両制御装置は、前記受信部が受信した前記機能故障情報を用いて、前記システム機能故障レベルを判定し、前記システム機能故障レベルに応じたフェールセーフ動作を実施することを特徴とする車両制御システム。上記特許文献1に記載されている技術では、オブジェクト単位で診断プログラムを変更することができるようにしている。しかし、車種や製品仕向地などの組合せによって故障判定の内容は個別に異なるため、センサなどの個別の構成要素が故障しているか否かの判定結果を受け取って全体的な故障を最終的に判定する故障判定ロジックも、結果的に個別開発する必要がある場合が多いと考えられる。そのため、構成要素毎の診断モジュールをオブジェクト単位で変更することができるとしても、全体を取り纏める故障判定ロジックは個別開発する必要があると考えられる。上記非特許文献1に記載されている技術では、センサなどの個別の構成要素単位でプログラムをモジュール化しているが、全体的な故障の有無を判定する故障判定ロジックはモジュール化されていない。そのため、特許文献1と同様に故障判定ロジックを個別開発する必要があると考えられる。本発明は、上記のような課題を解決するためになされたものであり、車両制御装置の構成要素が故障しているか否かの判定結果を基礎として、車両制御装置が全体として故障しているか否かを判定する故障判定ロジックを、容易に再利用することができるようにすることを目的とする。本発明に係る車両制御装置は、車両制御装置を構成するハードウェアのうち故障しているものの組合せに基づき、車両制御装置の機能故障レベルを判定し、その機能故障レベルに応じたフェールセーフ機能を実施する。本発明に係る車両制御装置は、故障しているハードウェアの組合せによって機能故障レベルを判定するので、故障判定ロジックを個々のハードウェアの仕様から独立させることができる。これにより、故障判定ロジックを容易に再利用することができる。<実施の形態1>図1は、本発明に係るブレーキ支援装置1の構成図である。ブレーキ支援装置1は、車両が備えるブレーキを制御する車両制御装置であり、演算装置101、メモリ102、入出力回路109、レゾルバ110、レゾルバ用診断装置111、ブレーキ支援装置用モータ112を備える。演算装置101は、メモリ102が格納しているプログラムを実行するプロセッサCentralProcessingUnitである。同等の機能を、回路デバイスなどのハードウェアを用いて構成することもできる。メモリ102は、プログラム領域103とデータ記憶領域108を有する。プログラム領域103は、故障判定実行部104、HWハードウェア故障検出部105、機能故障判定部106、FSフェールセーフ制御部107を格納する。これらプログラムの機能については後述する。データ記憶領域108は、後述の図2で説明するテーブルサイズ管理テーブル108010、図3で説明するHW故障情報管理テーブル108020、図4で説明する機能故障レベル管理テーブル108030、図5で説明する機能故障レベル判定テーブル108040、図6で説明するFS管理テーブル108050を格納する。レゾルバ110は、センサ値としてモータの回転角を取得する装置である。レゾルバ用診断装置111は、レゾルバ110の動作を監視し、レゾルバ110が正常に動作しているかを判断する装置である。図2は、テーブルサイズ管理テーブル108010の例を示す図である。テーブルサイズ管理テーブル108010は、プログラム処理上の便宜のため後述の各テーブルが有するレコード数を保持するテーブルであり、名称フィールド108011、Lengthフィールド108012を有する。名称フィールド108011は、後述するHW故障情報管理テーブル108020、機能故障レベル管理テーブル108030、機能故障レベル判定テーブル108040それぞれの主キー項目名称を保持する。Lengthフィールド108012は、上記3テーブルがそれぞれ有するレコード数を保持する。図3は、HW故障情報管理テーブル108020の例を示す図である。HW故障情報管理テーブル108020は、ブレーキ支援装置1を構成するハードウェアがそれぞれ正常動作しているか否かを管理するテーブルであり、HW_IDフィールド108021、名称フィールド108022、HW動作状態値フィールド108023、故障判定条件フィールド108024、上限閾値フィールド108025、下限閾値フィールド108026、HW故障検出回数フィールド108027、故障確定判定閾値フィールド108028、HW故障確定フラグフィールド108029を有する。HW_IDフィールド108021は、ブレーキ支援装置1を構成するハードウェアの識別子を保持する。ここでは故障診断にとって重要なレゾルバ110とレゾルバ用診断装置111のみを例示したが、これに限られるものではない。名称フィールド108022は、HW_IDフィールド108021が識別するハードウェアの名称を保持する。HW動作状態値フィールド108023は、HW_IDフィールド108021が識別するハードウェアが正常動作しているか否かを示す数値を保持する。この数値が上限閾値フィールド108025と下限閾値フィールド108026の間の範囲内にある場合はそのハードウェアは正常動作しており、この範囲を逸脱している場合は動作異常が生じていると判定されることになる。HW故障検出回数フィールド108027は、HW動作状態値フィールド108023の値が上記範囲を逸脱した回数を保持する。この回数が故障確定判定閾値フィールド108028の値以上になると、ブレーキ支援装置1は故障していると判定されることになる。HW故障確定フラグフィールド108029は、上記判定基準にしたがってブレーキ支援装置1が故障していると判定された場合は1を保持し、そうでない場合は0を保持する。図4は、機能故障レベル管理テーブル108030の例を示す図である。機能故障レベル管理テーブル108030は、車両制御システムが備える機能毎に、故障程度機能故障レベルを表す数値を管理するテーブルである。車両制御システムが備える機能とは、各車両制御装置のことである。ここではブレーキ支援装置1のみを例示しているので、車両制御システムが備える機能は1つのみとなる。機能故障レベル管理テーブル108030は、Function_IDフィールド108031、名称フィールド108032、機能故障レベルフィールド108033を有する。Function_IDフィールド108031は、車両制御システムが備える機能の識別子を保持する。名称フィールド108032は、Function_IDフィールド108031が識別する機能の名称を保持する。機能故障レベルフィールド108033は、Function_IDフィールド108031が識別する機能の現在の機能故障レベルを保持する。当該機能が故障していなければ0を保持し、故障していればその故障レベルに応じた値を保持する。図5は、機能故障レベル判定テーブル108040の例を示す図である。機能故障レベル判定テーブル108040は、ブレーキ支援装置1を構成するハードウェアのいずれが故障したかの組合せに基づき、ブレーキ支援装置1の機能故障レベルを定義するテーブルである。機能故障レベル判定テーブル108040は、Indexフィールド108041、機能故障レベルフィールド108042、HW故障確定フラグ組合せフィールド108043を有する。HW故障確定フラグ組合せフィールド108043はさらに、ブレーキ支援装置1が備えるハードウェアの個数に等しいサブフィールドを有する。ここでは、レゾルバ110とレゾルバ用診断装置111に対応する、第1HW_IDフィールド108044と第2HW_IDフィールド108045を有する。Indexフィールド108041は、レコードを識別するための番号である。機能故障レベルフィールド108042は、機能故障レベルの数値を保持する。HW故障確定フラグ組合せフィールド108043は、ブレーキ支援装置1が備えるハードウェアが故障している場合は1、故障していない場合は0を、ハードウェア毎に保持する。ブレーキ支援装置1はハードウェアを2つレゾルバ110とレゾルバ用診断装置111備えるので、本フィールドはこれに対応する2つのサブフィールドを有する。第1HW_IDフィールド108044は、レゾルバ110が故障しているか否かを示す値を保持する。第2HW_IDフィールド108045は、レゾルバ用診断装置111が故障しているか否かを示す値を保持する。図6は、FS管理テーブル108050の例を示す図である。FS管理テーブル108050は、ブレーキ支援装置1の機能故障レベルに対応するフェールセーフ機能を記述した関数の格納先アドレスを保持するテーブルである。FS管理テーブル108050は、機能故障レベルフィールド108051、名称フィールド108052、FS実行先テーブルアドレスフィールド108053を有する。機能故障レベルフィールド108051は、ブレーキ支援装置1の機能故障レベルの数値を保持する。名称フィールド108052は、フェールセーフ機能の名称を保持する。FS実行先テーブルアドレスフィールド108053は、機能故障レベルの値に対応するフェールセーフ機能を記述した関数の格納先アドレスを保持する。図7は、故障判定実行部104の動作フローを示す図である。以下、図7の各ステップについて説明する。図7:ステップS104000故障判定実行部104は、後述の図8で説明するHW故障検出部105を呼び出す。HW故障検出部105は、ブレーキ支援装置1が備えるHWの故障を検出する。図7:ステップS104001故障判定実行部104は、後述の図9で説明する機能故障判定部106を呼び出す。機能故障判定部106は、ブレーキ支援装置1全体としての故障程度ブレーキ支援装置1の機能故障レベルを判定する。図7:ステップS104002故障判定実行部104は、後述の図11で説明するFS制御部107を呼び出す。FS制御部107は、ブレーキ支援装置1に機能故障が発生した場合、機能故障レベルに応じたFSを実行する。図8は、HW故障検出部105の動作フローを示す図である。以下、図8の各ステップについて説明する。図8:ステップS105000HW故障検出部105は、HW故障情報管理テーブル108020内のレコードをカウントするための変数iに1を代入する。図8:ステップS105001HW故障検出部105は、入出力回路109を介して、変数iと等しいHW_IDを有するハードウェアここでは、レゾルバ110またはレゾルバ用診断装置111の動作状態値を取得する。HW故障検出部105は、HW_IDフィールド108021が変数iと等しいHW故障情報管理テーブル108020内のレコードを取得する。HW故障検出部105は、同レコードのHW動作状態値フィールド108023に、入出力回路109を介して取得した動作状態値を書き込む。図8:ステップS105002~S105003HW故障検出部105は、ステップS105001でハードウェアの動作状態値を書き込んだレコードの上限閾値フィールド108025と下限閾値フィールド108026を参照し、ステップS105001で取得した動作状態値がこれら閾値の範囲内にあるか否かを判定する。閾値の範囲内にあればステップS105004に進み、閾値の範囲を逸脱していればステップS105007にスキップする。図8:ステップS105004HW故障検出部105は、ステップS105001でハードウェアの動作状態値を書き込んだレコードのHW故障検出回数フィールド108027に1を加える。図8:ステップS105005HW故障検出部105は、ステップS105001でハードウェアの動作状態値を書き込んだレコードのHW故障検出回数フィールド108027が、同じレコードのHW故障確定判定閾値フィールド108028を超えているか否かを判定する。超えている場合はステップS105006に進み、超えていない場合はステップS105007にスキップする。図8:ステップS105006HW故障検出部105は、ステップS105001でハードウェアの動作状態値を書き込んだレコードのHW故障確定フラグフィールド108029に1を書きこむ。図8:ステップS105007HW故障検出部105は、変数iに1を加える。図8:ステップS105008HW故障検出部105は、テーブルサイズ管理テーブル108010から、名称フィールド108011がHW_IDであるレコードのLengthフィールド108012を取得する。変数iがLengthフィールド108012を超えていれば本処理を終了し、超えていなければステップS105001に戻る。図9は、機能故障判定部106の動作フローを示す図である。以下、図9の各ステップについて説明する。図9:ステップS106000機能故障判定部106は、HW故障情報管理テーブル108020内のレコードをカウントするための変数iに1を代入する。図9:ステップS106001機能故障判定部106は、HW_IDフィールド108021が変数iと等しいHW故障情報管理テーブル108020内のレコードから、HW故障確定フラグフィールド108029を取得する。図9:ステップS106002機能故障判定部106は、変数iに1を加える。図9:ステップS106003機能故障判定部106は、テーブルサイズ管理テーブル108010から、名称フィールド108011がHW_IDであるレコードのLengthフィールド108012を取得する。変数iがLengthフィールド108012を超えていればステップS106004へ進み、超えていなければステップS106001に戻る。図9:ステップS106004機能故障判定部106は、後述の図10で説明する機能故障レベル判定処理を実施し、本処理を終了する。図10は、機能故障判定部106がステップS106004で実施する機能故障レベル判定処理の動作フローを示す図である。以下、図10の各ステップについて説明する図10:ステップS106100~S106101機能故障判定部106は、機能故障レベル判定テーブル108040内のレコードをカウントするための変数iとjに1を代入する。図10:ステップS106102機能故障判定部106は、Indexフィールド108041が変数iに等しい機能故障レベル判定テーブル108040内のレコードを取得する。さらに機能故障判定部106は、同レコードのHW故障確定フラグ組合せフィールド108043内のj番目のサブフィールドを取得する。機能故障判定部106は、W故障情報管理テーブル108020内の変数jに等しいHW_IDフィールド108021を有するレコードからHW故障確定フラグフィールド108029を取得し、HW故障確定フラグ組合せフィールド108043内のj番目のサブフィールドに一致するか否かを判定する。一致していればステップS106103に進み、一致していなければステップS106106にスキップする。図10:ステップS106103機能故障判定部106は、変数jに1を加える。図10:ステップS106104機能故障判定部106は、テーブルサイズ管理テーブル108010から、名称フィールド108011がHW_IDであるレコードのLengthフィールド108012を取得する。変数jがLengthフィールド108012を超えていればステップS106105へ進み、超えていなければステップS106002に戻る。図10:ステップS106104:補足本ステップは、HW故障確定フラグ組合せフィールド108043内のサブフィールドを順に取得するためのものである。HW故障確定フラグ組合せフィールド108043内のサブフィールドの個数はブレーキ支援装置1が備えるハードウェアの個数と一致するので、テーブルサイズ管理テーブル108010から取得することができる。図10:ステップS106102~S106104:補足これらのステップは、ブレーキ支援装置1が備えるレゾルバ110とレゾルバ用診断装置111が故障しているか否かの組合せに一致する、機能故障レベル判定テーブル108040内のレコードを特定するためのものである。図10:ステップS106105機能故障判定部106は、機能故障レベル管理テーブル108030の機能故障レベルフィールド108033に、ステップS106102で取得したレコードの機能故障レベルフィールド108042の値を書きこむ。図10:ステップS106106機能故障判定部106は、変数iに1を加える。図10:ステップS106107機能故障判定部106は、テーブルサイズ管理テーブル108010から、名称フィールド108011がFS_IndexであるレコードのLengthフィールド108012を取得する。変数iがLengthフィールド108012を超えていれば本処理を終了し、超えていなければステップS106101に戻る。図11は、FS制御部107の動作フローを示す図である。以下、図11の各ステップについて説明する。図11:ステップS107000FS制御部107は、機能故障レベル管理テーブル108030の機能故障レベルフィールド108033を参照する。図11:ステップS107001FS制御部107は、ステップS107000で取得した機能故障レベルフィールド108033が0であるか否かを判定する。0であれば本処理を終了し、0でなければステップS107002に進む。図11:ステップS107002FS制御部107は、ステップS107000で取得した機能故障レベルフィールド108033が1であるか否かを判定する。1であればステップS107004に進み、1でなければステップS107003に進む。図11:ステップS107003FS制御部107は、ステップS107000で取得した機能故障レベルフィールド108033が2であるか否かを判定する。2であればステップS107004に進み、2でなければ本処理を終了する。図11:ステップS107004FS制御部107は、ステップS107001~S107003で特定した機能故障レベルの値に対応する処理をFS管理テーブル108050から取得し、その処理を実行する。本実施形態1では、フリーラン実行処理を呼び出すことになる。図12は、FS制御部107がステップS107004で実施するフリーラン実行処理の動作フローを示す図である。以下、図12の各ステップについて説明する。図12:ステップS107100FS制御部107は、ブレーキ支援装置用モータ112を停止させ、フリーランを実行する。<実施の形態1:まとめ>以上のように、本実施形態1に係るブレーキ支援装置1は、故障したハードウェアの組合せによって機能故障レベルを判定し、これに対応するフェールセーフ処理を実施する。機能故障レベルは、ハードウェアの故障状態を抽象化した数値であり、ブレーキ支援装置1が備えるハードウェア構成に依存しない。そのため、HWの種類や数が変更されたとしても、FS制御部107を修正する必要がなく、FS制御部107の故障判定ロジックを容易に再利用することができる。<実施の形態2>本発明の実施形態2では、ブレーキ支援装置1と横滑り防止装置2が車内ネットワークに接続し、実施形態1で説明した機能故障レベルをネットワーク経由で送受信し、これを用いてFS制御を実施する例を説明する。図13は、本実施形態2に係る車両制御システム1000のネットワーク構成図である。車両制御システム1000は、車両を制御する1以上のECUをネットワークで接続した構成を有する。各ECUは車両の各部を制御するとともに、必要に応じて他のECUと通信する。例えば、ブレーキ支援装置1が故障したとき、ブレーキ支援装置1は実施形態1で説明した機能故障レベルを記述する機能故障レベル情報をCAN4に送信する。他のECUはその機能故障レベル情報を受信し、その値に応じてFSを実施する。図14は、横滑り防止装置2の構成図である。横滑り防止装置2は、演算装置201、メモリ202、入出力回路211、CAN4、加速度センサ214、加速度センサ用診断装置215、横滑り防止装置用モータ216を備える。演算装置201は、メモリ202が格納しているプログラムを実行するプロセッサである。同等の機能を、回路デバイスなどのハードウェアを用いて構成することもできる。メモリ202は、プログラム領域203とデータ記憶領域210を有する。プログラム領域203は、故障判定実行部204、HW故障検出部205、機能故障判定部206、FS制御部207、送信処理部208、受信処理部209を格納する。これらプログラムの機能については後述する。データ記憶領域210は、後述の図16で説明するテーブルサイズ管理テーブル210010、図17で説明するHW故障情報管理テーブル210020、図18で説明する機能故障レベル判定テーブル210030、図19で説明する機能故障レベル管理テーブル210040、図20で説明する組合せ機能故障レベル判定テーブル210050、図21で説明する組合せ機能故障レベル管理テーブル210060、図22で説明するFS管理テーブル210070、図23で説明する送信データCANIDテーブル210080を格納する。CANコントローラ212は、信号入出力回路213を備える。信号入出力回路213は、CAN4から受け取った通信信号をデジタル変換するなどの必要な処理を適宜実行する。図15は、本実施形態2におけるブレーキ支援装置1の構成図である。本実施形態2において、ブレーキ支援装置1は、実施形態1で説明した構成に加え、CANコントローラ115を備える。プログラム領域103は、実施形態1で説明した各機能部に加え、送信処理部113と受信処理部114を格納する。データ記憶領域108は、実施形態1で説明した各テーブルに加え、図39で説明する送信データCANIDテーブル108060を格納する。CANコントローラ115の構成は、横滑り防止装置2が備えるCANコントローラ212と同様である。図16は、テーブルサイズ管理テーブル210010の例を示す図である。テーブルサイズ管理テーブル210010は、プログラム処理上の便宜のため後述の各テーブルが有するレコード数を保持するテーブルであり、名称フィールド210011、Lengthフィールド210012を有する。名称フィールド210011は、後述するHW故障情報管理テーブル210020、機能故障レベル判定テーブル210030、機能故障レベル管理テーブル210040、組合せ機能故障レベル判定テーブル210050それぞれの主キー項目名称を保持する。Lengthフィールド210012は、上記4テーブルがそれぞれ有するレコード数を保持する。図17は、HW故障情報管理テーブル210020の例を示す図である。HW故障情報管理テーブル210020は、横滑り防止装置2を構成するハードウェアがそれぞれ正常動作しているか否かを管理するテーブルであり、HW_IDフィールド210021、名称フィールド210022、HW動作状態値フィールド210023、故障判定条件フィールド210024、上限閾値フィールド210025、下限閾値フィールド210026、HW故障検出回数フィールド210027、故障確定判定閾値フィールド210028、HW故障確定フラグフィールド210029を有する。本テーブルの構成は、HW故障情報管理テーブル108020と同様である。図18は、機能故障レベル判定テーブル210030の例を示す図である。機能故障レベル判定テーブル210030は、横滑り防止装置2を構成するハードウェアのいずれが故障したかの組合せに基づき、横滑り防止装置2の機能故障レベルを定義するテーブルである。機能故障レベル判定テーブル210030は、Indexフィールド210031、機能故障レベルフィールド210032、HW故障確定フラグ組合せフィールド210033を有する。HW故障確定フラグ組合せフィールド210033はさらに、第1HW_IDフィールド210034、第2HW_IDフィールド210035を有する。本テーブルの構成は、機能故障レベル判定テーブル108040と同様である。図19は、機能故障レベル管理テーブル210040の例を示す図である。機能故障レベル管理テーブル210040は、車両制御システム1000が備える機能毎に、機能故障レベルを表す数値を管理するテーブルである。本実施形態2における車両制御システム1000が備える機能は、ブレーキ支援装置1と横滑り防止装置2の2つであるので、本テーブルは2つのレコードを有する。機能故障レベル管理テーブル210040は、Function_IDフィールド210041、名称フィールド210042、機能故障レベルフィールド210043を有する。本テーブルの構成は、機能故障レベル管理テーブル108030と同様である。図20は、組合せ機能故障レベル判定テーブル210050の例を示す図である。組合せ機能故障レベル判定テーブル210050は、車両制御システム1000が備える機能のいずれが故障したかの組合せに基づき、車両制御システム1000の機能故障レベルを定義するテーブルである。組合せ機能故障レベル判定テーブル210050は、Indexフィールド210051、機能故障レベルフィールド210052、機能故障レベル組合せフィールド210053を有する。機能故障レベル組合せフィールド210053はさらに、第1Function_IDフィールド210054、第2Function_IDフィールド210055を有する。Indexフィールド210051は、レコードを識別するための番号である。機能故障レベルフィールド210052は、機能故障レベルの数値を保持する。機能故障レベル組合せフィールド210053は、車両制御システム1000が備える機能が故障している場合は1、故障していない場合は0を、機能毎に保持する。車両制御システム1000は機能を2つブレーキ支援装置1と横滑り防止装置2備えるので、本フィールドはこれに対応する2つのサブフィールドを有する。第1Function_IDフィールド210054は、ブレーキ支援装置1が故障しているか否かを示す値を保持する。第2Function_IDフィールド210055は、横滑り防止装置2が故障しているか否かを示す値を保持する。図21は、組合せ機能故障レベル管理テーブル210060の例を示す図である。組合せ機能故障レベル管理テーブル210060は、車両制御システム1000の機能故障レベルを保持する機能故障レベルフィールド210061を有する。図22は、FS管理テーブル210070の例を示す図である。FS管理テーブル210070は、車両制御システム1000の機能故障レベルに対応するフェールセーフ機能を記述した関数の格納先アドレスを保持するテーブルである。FS管理テーブル210070は、機能故障レベルフィールド210071、名称フィールド210072、FS実行先テーブルアドレスフィールド210073を有する。本テーブルの構成は、FS管理テーブル108050と同様である。図23は、送信データCANIDテーブル210080の例を示すである。送信データCANIDテーブル210080は、横滑り防止装置2がCAN4から受信したデータを格納するCANコントローラ212上のアドレスを保持するテーブルであり、CAN_IDフィールド210081、アドレスフィールド210082を有する。CAN_IDフィールド210081は、横滑り防止装置2がCAN4から受信するデータのCANIDを保持する。アドレスフィールド210082は、CAN_IDフィールド210081が指定するCANIDを有する通信データを格納するアドレスを保持する。図24は、横滑り防止装置2が備える故障判定実行部204の動作フローを示す図である。以下、図24の各ステップについて説明する。図24:ステップS204000故障判定実行部204は、後述の図25で説明するHW故障検出部205を呼び出す。HW故障検出部205は、横滑り防止装置2が備えるHWの故障を検出する。図24:ステップS204001故障判定実行部204は、後述の図26で説明する機能故障判定部206を呼び出す。機能故障判定部206は、横滑り防止装置2単体の機能故障レベルを判定する。図24:ステップS204002故障判定実行部204は、後述の図31で説明するFS制御部207を呼び出す。FS制御部207は、車両制御システム1000に機能故障が発生した場合、機能故障レベルに応じたFSを実行する。図25は、HW故障検出部205の動作フローを示す図である。HW故障検出部205の動作は、HW故障情報管理テーブル108020に代えてHW故障情報管理テーブル210020を用いる点を除き、図8で説明した動作と同様である。図26は、機能故障判定部206の動作フローを示す図である。本実施形態2では、車両制御システム1000が備える機能毎に機能故障レベルを判定した後、故障している機能の組合せによって車両制御システム1000全体としての機能故障レベルを判定するため、判定処理は2段階になっている。以下、図26の各ステップについて説明する。図26:ステップS206000機能故障判定部206は、後述の図27で説明する機能故障判定処理を呼び出す。本ステップは、横滑り防止装置2単体の機能故障レベルを判定する処理である。図26:ステップS206001機能故障判定部206は、後述の図29で説明する組合せ機能故障レベル判定処理を呼び出す。本ステップは、車両制御システム1000全体の機能故障レベルを判定する処理である。図27は、ステップS206000における機能故障判定部206の動作フローを示す図である。本動作フローは、HW故障情報管理テーブル108020に代えてHW故障情報管理テーブル210020を用いる点を除き、図9で説明した動作と同様である。なおステップS206104では、後述の図28で説明する機能故障レベル判定処理を呼び出す。図28は、機能故障判定部206がステップS206104で実施する機能故障レベル判定処理の動作フローを示す図である。本動作フローは、横滑り防止装置2が備えるハードウェアのうち故障しているものの組合せによって、横滑り防止装置2担体の機能故障レベルを判定する処理である。図28の動作フローは、テーブルサイズ管理テーブル108010、機能故障レベル管理テーブル108030、機能故障レベル判定テーブル108040に代えて、テーブルサイズ管理テーブル210010、機能故障レベル管理テーブル210040、機能故障レベル判定テーブル210030を用いる点を除き、図10で説明した動作と同様である。図29は、ステップS206001における機能故障判定部206の動作フローを示す図である。以下、図29の各ステップについて説明する。図29:ステップS206300機能故障判定部206は、機能故障レベル管理テーブル210040内のレコードをカウントするための変数iに1を代入する。図29:ステップS206301機能故障判定部206は、Function_IDフィールド210041が変数iと等しい機能故障レベル管理テーブル210040内のレコードから、機能故障レベルフィールド210043を取得する。図29:ステップS206302機能故障判定部206は、変数iに1を加える。図29:ステップS206303機能故障判定部206は、テーブルサイズ管理テーブル210010から、名称フィールド210011が組合せ機能故障レベル判定テーブル_IndexであるレコードのLengthフィールド210012を取得する。変数iがLengthフィールド210012を超えていればステップS206304へ進み、超えていなければステップS206301に戻る。図29:ステップS206304機能故障判定部206は、後述の図30で説明する組合せ機能故障レベル判定処理を実施し、本処理を終了する。図30は、ステップS206304における機能故障判定部206の動作フローを示す図である。本動作フローは、車両制御システム1000内の故障しているECUの組合せに基づき、車両制御システム1000全体としての機能故障レベルを判定するためのものである。図30の動作フローは、テーブルサイズ管理テーブル108010、HW故障情報管理テーブル108020、機能故障レベル判定テーブル108040に代えて、テーブルサイズ管理テーブル210010、機能故障レベル管理テーブル210040、組合せ機能故障レベル判定テーブル210050を用いる点を除き、図10で説明した動作と同様である。図31は、FS制御部207の動作フローを示す図である。本動作フローは、横滑り防止装置2が、FS管理テーブル21070の記述にしたがって、車両制御システム1000全体としての機能故障レベルに応じたフェールセーフ動作を実施するためのものである。以下、図31の各ステップについて説明する。図31:ステップS207000FS制御部207は、組合せ機能故障レベル情報管理テーブル210060の機能故障レベルフィールド210061を参照する図31:ステップS207001FS制御部207は、ステップS207000で取得した機能故障レベルフィールド210061が0であるか否かを判定する。0であれば本処理を終了し、0でなければステップS207002に進む。図31:ステップS207002FS制御部207は、ステップS207000で取得した機能故障レベルフィールド210061が1であるか否かを判定する。1であればステップS207003に進み、1でなければステップS207004に進む。図31:ステップS207003FS制御部207は、後述の図32で説明する機能故障情報送信実行処理を開始する。図31:ステップS207004FS制御部207は、ステップS207000で取得した機能故障レベルフィールド210061が2であるか否かを判定する。2であればステップS207005に進み、2でなければステップS207006に進む。図31:ステップS207005FS制御部207は、後述の図33で説明するフリーラン実行処理を開始する。図31:ステップS207006FS制御部207は、ステップS207000で取得した機能故障レベルフィールド210061が3であるか否かを判定する。3であればステップS207007に進み、3でなければ本処理を終了する。図31:ステップS207007FS制御部207は、後述の図34で説明するブレーキ補助実行処理を開始する。図32は、ステップS207003におけるFS制御部207の動作フローを示す図である。以下、図32の各ステップについて説明する。図32:ステップS207100FS制御部207は、後述の図35で説明する送信処理部を呼び出す。図33は、ステップS207005におけるFS制御部207の動作フローを示す図である。以下、図33の各ステップについて説明する。図33:ステップS207200FS制御部207は、後述の図35で説明する送信処理部を呼び出す。図33:ステップS207201FS制御部207は、横滑り防止装置用モータ216を停止させ、フリーランを実行する。図34は、ステップS207007におけるFS制御部207の動作フローを示す図である。以下、図34の各ステップについて説明する。図34:ステップS207300FS制御部207は、ブレーキ力を担う他の機能が故障したと判断し、横滑り防止装置2のブレーキ力を増加させる。図35は、送信処理部208のCAN送信処理の動作フローを示す図である。以下、図35の各ステップについて説明する。図35:ステップS208000送信処理部208は、引数として受け取ったCANIDに基づいて送信するメールボックスを特定し、送信したいデータをCANコントローラ212のメールボックスに保存する。図35:ステップS208001送信処理部208は、保存したメールボックスに対応する送信要求ビットを有効にする。CANコントローラ212は、送信要求ビットが有効になっているメールボックス内のデータをCAN4へ送信する。図36は、受信処理部209の動作フローを示す図である。横滑り防止装置2は、自身の機能故障レベルを自ら判定する場合もあるし、他のECUが横滑り防止装置2の機能故障レベルを判定して横滑り防止装置2に通知する場合もある。本動作フローでは、後者の例を説明する。なお、ブレーキ支援装置1の機能故障レベルを、本動作フローと同様の手順で受信することもできるが、説明は省略する。図36:ステップS209000受信処理部209は、後述の図37で説明する受信処理部209のCAN受信処理を呼び出し、CAN4から受信したデータを取得する。図36:ステップS209001受信処理部209は、受信データがあるか否かを判定する。受信データがある場合はステップS209002へ進み、受信データがない場合は本動作フローを終了する。図36:ステップS209002受信処理部209は、受信データしたデータが横滑り防止装置2の機能故障レベル情報であるか否かを判定する。受信データが機能故障レベル情報である場合はステップS209003へ進み、機能故障レベル情報ではない場合は本動作フローを終了する。図36:ステップS209003受信処理部209は、機能故障レベル管理テーブル210040に、横滑り防止装置2の機能故障レベルとして、受信データを書き込む。図37は、ステップS209000における受信処理部209の動作フローを示す図である。本動作フローは、所定の周期例えば10ms毎に呼び出される。以下、図37の各ステップについて説明する。図37:ステップS209100受信処理部209は、CAN4からデータを受信したメールボックスを特定し、受信データをCANコントローラ212のメールボックスから読み出す。図37:ステップS209101受信処理部209は、ステップS209100で読み出したデータをデータ記憶領域210のバッファに格納する。本ステップでデータを格納するバッファは、本動作フローを起動する際に引数として指定される。以上、横滑り防止装置2の動作について説明した。以下では、ブレーキ支援装置1の動作を説明する。図38は、本実施形態2におけるFS管理テーブル108050の例を示す図である。本テーブルの構成は、実施形態1と同様である。図38に示すデータ例によれば、ブレーキ支援装置1は、自身に機能故障レベルが発生すると、その旨を記述した機能故障情報をCAN4に送信する処理を、フェールセーフとして実施する。図39は、送信データCANIDテーブル108060の例を示すである。送信データCANIDテーブル108060は、ブレーキ支援装置1がCAN4から受信したデータを格納するCANコントローラ115上のアドレスを保持するテーブルであり、CAN_IDフィールド108061、アドレスフィールド108062を有する。送信データCANIDテーブル210080と同様である。図40は、FS制御部107の動作フローを示す図である。以下、図40の各ステップについて説明する。図40:ステップS107200FS制御部107は、機能故障レベル管理テーブル108030の機能故障レベルフィールド108033を参照する。図40:ステップS107201FS制御部107は、ステップS107200で取得した機能故障レベルフィールド108033が0であるか否かを判定する。0であれば本処理を終了し、0でなければステップS107202に進む。図40:ステップS107202FS制御部107は、ステップS107200で取得した機能故障レベルフィールド108033が1であるかを判定する。1であればステップS107203に進み、1でなければ本処理を終了する。図40:ステップS107203FS制御部107は、後述の図41で説明する機能故障情報送信処理を開始する。図41は、ステップS107203におけるFS制御部107の動作フローを示す図である。以下、図41の各ステップについて説明する。図41:ステップS107300FS制御部107は、送信処理部113を呼び出す。<実施の形態2:まとめ>以上のように、本実施形態2に係る横滑り防止装置2は、車両制御システム1000を構成する機能各ECUの機能故障レベルの組み合わせによって、車両制御システム1000全体としての機能故障レベルを判定し、これに応じたフェールセーフ機能を実施することができる。車両制御システム1000全体としての機能故障レベルを判定する基準は、故障している機能各ECUの組合せであるため、実施形態1と同様に、車両制御システム1000を構成するECUの種類や数が変更されたとしても、FS制御部207を修正する必要がなく、FS制御部207の故障判定ロジックを容易に再利用することができる。また、本実施形態2において、車両制御システム1000に新しく機能ECUを追加するときは、機能故障レベル管理テーブル210040と組合せ機能故障レベル判定テーブル210050のデータ項目を修正するだけで、機能追加に対応することができる。また、本実施形態2に係る横滑り防止装置2は、自身の機能故障レベルまたはブレーキ支援装置1の機能故障レベルをCAN4から受信し、これに基づき車両制御システム1000全体としての機能故障レベルを判定して、フェールセーフを実施することができる。自信の機能故障レベルをCAN4から受信する場合は、横滑り防止装置2はHW故障検出部205を備えていなくともよい。<実施の形態3>以上の実施形態1~2において、各ECUが備えるハードウェアが故障しているか否かを示すフラグHW故障確定フラグ108029などを0から1に変更する過程のみを説明したが、1から0に変更することもできる。例えば、HW故障確定フラグ108029が1となった後に、故障が検出されない期間が所定時間継続した場合は、HW故障確定フラグ108029を0に変更リセットしてもよい。実施形態2において、車両制御システム1000を構成するECUとして、横滑り防止装置とブレーキ支援装置1のみを例示したが、その他のECUを設けることもできる。また、各実施形態において各ECUが実施するフェールセーフ機能は例示であり、その他のフェールセーフ機能を実施することもできる。