(57)【要約】【課題】  車両を制御するために繰り返し行われる一連の処理の分担処理の結果が所定の順序で信号として受け渡し合うようになっており、分担処理機能のそれぞれは、受け渡しの前段の分担処理の出力信号に基づいて分担処理を行うようになっている車両制御システムにおいて、１つの一連の処理中の分担処理の結果の信号が分担処理機能間で所定の順序通りに受け渡されないような異常を検出することができるようにする。  【解決手段】  各分担処理機能は、前段の分担処理機能から受けたチェックコードに対して所定の値を加算した後に後段の分担処理機能に渡す。検出手段が、このようなチェックコードの加算の結果が正常か否かに基づいて、順序の異常を検出する。【選択図】        図１０
2005075024.tif 000002
【特許請求の範囲】
【請求項１】
複数のＥＣＵ（１１〜１５）を備え、
前記複数のＥＣＵのそれぞれは、車両を制御するために繰り返し行われる一連の処理の分担処理を行う分担処理手段を１つ以上備え、これら複数の分担処理手段は、その分担処理の結果を所定の順序で信号として受け渡し合うようになっており、
また前記複数の分担処理手段のそれぞれは、前記受け渡しの前段の分担処理手段の出力信号に基づいて前記分担処理を行うようになっている車両制御システムであって、
前記一連の処理中の前記分担処理の結果の信号が前記順序通りに受け渡されなかったことを検出する検出手段を備えたことを特徴とする車両制御システム。
【請求項２】
前記複数の分担処理手段は、前段の分担処理手段の出力信号に含まれる順序チェック情報を前記分担処理の結果に含めた信号を出力する出力手段（６１０〜６６０、７０５〜７４０）を備え、
前記複数の分担処理手段の一部または全部の特定分担処理手段が備える前記出力手段は、前段の分担処理手段の出力信号に含まれる順序チェック情報に対して所定の加工を施したものを前記分担処理の結果に含めた信号を出力し、
前記検出手段は、前記複数の分担処理手段のいずれか１つからの出力信号中の順序チェック情報に基づいて、前記一連の処理中の前記分担処理の結果の信号が前記順序通りに受け渡されなかったことを検出することを特徴とする請求項１に記載の車両制御システム。  
【請求項３】
前記順序チェック情報は数値データを含み、前記所定の加工は、前記数値データに所定の値を加算することである請求項２に記載の車両制御システム。
【請求項４】
前記検出手段は、前記複数の分担処理手段のいずれか１つからの、前記一連の処理の前回の繰り返しにおける出力信号中の前記順序チェック情報と、当該１つの分担処理手段からの、前記一連の処理の今回の繰り返しにおける出力信号中の前記順序チェック情報との値の差が所定値でないことに基づいて、前記一連の処理中の前記分担処理の結果の信号が前記順序通りに受け渡されなかったことを検出することを特徴とする請求項２または３に記載の車両制御システム。
【請求項５】
前記検出手段は、前記所定の順序の最初となる分担処理手段からの出力信号中の前記順序チェック情報と、前記所定の順序の最後の１つ前となる分担処理手段からの出力信号中の前記順序チェック情報の値の差が所定値でないことに基づいて、前記一連の処理中の前記分担処理の結果の信号が前記順序通りに受け渡されなかったことを検出することを特徴とする請求項２または３に記載の車両制御システム。
【請求項６】
前記順序チェック情報は複数のフラグを含み、前記所定の加工は、前記複数のフラグの所定の一部を所定の状態にすることである請求項２に記載の車両制御システム。
【請求項７】
前記特定分担処理手段の有する前記出力手段は複数のグループに分かれ、当該グループ毎に前記所定の加工の内容が異なることを特徴とする請求項２ないし６のいずれか１つに記載の車両制御システム。
【請求項８】
前記所定の順序において最初に前記分担処理の結果の信号を出力する前記出力手段は、所定の前記順序チェック情報を前記分担処理の結果の信号に含めて出力する開始出力手段（６１０、６３０、６５０、６６０）を備えたことを特徴とする請求項１ないし７のいずれか１つに記載の車両制御システム。
【請求項９】
前記開始出力手段は、前記出力の度に前記所定の順序チェック情報を変化させることを特徴とする請求項８に記載の車両制御システム。
【請求項１０】
前記開始出力手段は、新たな順序チェック情報を生成して記憶媒体の所定の領域に情報として保存する保存手段（６５０）と、前記記憶媒体の前記所定の領域に保存された情報を読み込む読込手段（６１０）と、前記読み込んだ情報を今回の出力に用いる順序チェック情報とする設定手段（６３０）と、を備え、前記分担処理は、前記保存手段、前記読込手段、前記設定手段の処理中で離れて実行されていることを特徴とする請求項９に記載の車両制御システム。
【請求項１１】
前記検出手段は、前記所定の順序の最後となる分担処理手段を備えたＥＣＵが有していることを特徴とする請求項１ないし１０のいずれか１つに記載の車両制御システム。
【請求項１２】
前記検出手段は、前記分担処理としてアクチュエータを制御する分担処理手段を備えたＥＣＵが有していることを特徴とする請求項１ないし１１のいずれか１つに記載の車両制御システム。
【請求項１３】
前記検出手段を複数有し、これら複数の検出手段は、それぞれ異なる分担処理手段が有していることを特徴とする請求項１ないし１２のいずれか１つに記載の車両制御システム。
【請求項１４】
前記特定分担処理手段は、前記車両を制御するための一連の処理の複数のうち、信頼性が求められる度合いが高い前記一連の処理の分担処理について、前段の分担処理手段の出力信号に含まれる順序チェック情報に対して所定の加工を施したものを前記分担処理の結果に含めた信号を出力することを特徴とする請求項２ないし１３のいずれか１つに記載の車両制御システム。
【請求項１５】
前記検出手段は、前記一連の処理中の前記分担処理の結果の信号が前記順序通りに受け渡されなかったことを検出した場合、その順序の異常の発生元の分担処理手段を備えたＥＣＵにおいて、他の分担処理手段も順序の異常の発生元となっている場合、当該ＥＣＵを異常であると判定することを特徴とする請求項１ないし１４のいずれか１つに記載の車両制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両を制御するために繰り返し行われる一連の処理の分担処理を複数のＥＣＵで行う車両制御システムに関するものである。
【背景技術】
【０００２】
従来、ＡＢＳ（アンチロックブレーキシステム）、エンジン燃料噴射、点火、スロットルセンサ値読み込み、スロットルモータ駆動といった、車両の様々な機能を、複数のＥＣＵで実現する車両分散制御システムが提案されている（例えば、特許文献１参照）。また、そのＥＣＵ間を接続する通信プロトコルとして、ＴＴＰ／ＣやＦｌｅｘ−Ｒａｙ等の時分割多重通信が提案されている。時分割多重通信とは、決められたタイミングでそのタイミングに割り当てられたＥＣＵが他のＥＣＵと通信することをいう（例えば特許文献２参照）。
【０００３】
上記時分割多重通信を利用した車両分散制御システムでは、車両を制御するために繰り返し行われるある一連の処理を、複数のＥＣＵ中の処理機能が分担して行うようになっており、それぞれの分担処理を行う処理機能は、その分担処理の結果としての信号を、所定の順序で時分割通信を用いて受け渡すようになっている。そして、分担処理を行うそれぞれの処理機能は、前段の処理機能から入力された信号に基づいた分担処理を行うようになっている。
【０００４】
典型的な例として、所定のセンサ入力の値に基づいて所定のアクチュエータを制御するという、車両制御のための一連の処理を、２つのＥＣＵ内の処理機能が分担する車両制御システムを、図１６および図１７を用いて説明する。
【０００５】
図１６は、この車両制御システムの機能説明図である。２つのＥＣＵ５１、５２は、車内ＬＡＮ回線５３を介してＴＴＰ／ＣやＦｌｅｘ−Ｒａｙ等の時分割多重通信を用いた通信をすることができるようになっている。この車両制御システムにおける上記一連の処理は、次の（１）〜（６）のような手順によって実現される。
（１）ＥＣＵ５１に接続されたセンサ５４が、所定の物理状態（例えばエンジン回転数、車速、アクセル開度、外気温等）を検出し、その検出内容を信号としてＥＣＵ５１に出力する。
（２）ＥＣＵ５１は、センサ５４からの入力に基づいて、車両の所定の状態（例えばトルク、ブレーキ量等）についての目標値を演算し、演算した目標値をＥＣＵ５１に備えられたメモリ（ＲＡＭ）５５に書き込む。（１）、（２）の手順における信号の流れが、図１６中の丸囲み数字１の矢印に対応する。
（３）また、ＥＣＵ５１は、他の要因（車両の他の物理状態等）に基づき、メモリ５５に記憶した目標値を更新する。（３）の手順における信号の流れが図１６中の丸囲み数字２の矢印に対応する。
（４）また、ＥＣＵ５１は、車内ＬＡＮ５３によって割り当てられた所定のタイミングで、メモリ５５に記憶した目標値の信号をＥＣＵ５２に送信する。
（５）また、ＥＣＵ５２は、ＥＣＵ５１からの信号を受信し、受信した目標値をメモリ５６書き込む。（４）、（５）の手順における信号の流れが図１６中の丸囲み数字３の矢印に対応する。
（６）メモリ５６に書き込まれた目標値に基づき、アクチュエータ５７の駆動量および駆動タイミングを演算し、アクチュエータを駆動する。（６）の手順における信号の流れが図１６中の丸囲み数字４の矢印に対応する。
【０００６】
これら一連の処理は、ＥＣＵ５１における分担処理の段階（以下段階Ａと記す）、ＥＣＵ５１の分担処理の結果の通信による受け渡しの段階（以下段階Ｂと記す）、ＥＣＵ５２における分担処理の段階（以下段階Ｃと記す）に区分けすることができる。段階Ａは、（１）、（２）、および（３）の処理から成り、段階Ｂは（４）および（５）の処理から成り、段階Ｃは（６）の処理から成る。
【０００７】
３つの段階のそれぞれは、段階Ａ、段階Ｂ、段階Ｃの順に所定のタイミングで実行されるようになっている。
【０００８】
このように、車両を制御するための一連の処理がＥＣＵ５１およびＥＣＵ５２の分担処理機能（段階Ａおよび段階Ｃに対応する）によって分担処理され、その分担処理の結果が、段階Ｂにより、所定の順序で信号として前段のＥＣＵ５１から後段のＥＣＵ５２へ受け渡されるようになっており、ＥＣＵ５２の分担処理機能は、受け渡しの前段であるＥＣＵ５１の分担処理機能の出力信号に基づいて分担処理を行うようになっている。
【０００９】
図１７は、このような一連の処理の繰り返しにおける段階Ａ、段階Ｂ、段階Ｃの実行タイミングを表すタイミング図である。図１７中、右方向が時間の向きであり、各長方形８１〜９１の位置は、Ａ、Ｂ、Ｃそれぞれの段階の処理のタイミングを表し、各長方形８１〜９１の幅は、それぞれの段階の処理の継続時間を表している。通常は、図１７の１回目、２回目の処理の様に、段階Ａの処理が終了した後に段階Ｂが始まり、段階Ｂの処理が終了した後に段階Ｃが始まるようになっている。
【００１０】
しかし、例えば図１７の３回目の繰り返しにおける段階Ａ（長方形８７に対応する）の様に、ＥＣＵ５１における分担処理が何らかの理由で高負荷になってその処理継続時間が通常より長くなってしまった場合や、４回目の繰り返しにおいて、ＥＣＵ５１の異常により段階Ａの処理が抜けてしまった場合は、段階Ｂ（長方形８８、９０に対応）によって読み出され送信されるメモリ５５の内容が、当該一連の処理の前の一連の処理における段階Ａ（長方形８４、８７に対応）の分担処理の結果となってしまう。それゆえ、ＥＣＵ５２は誤った目標値に基づいてアクチュエータを駆動してしまう。
【００１１】
このように、車両を制御するために繰り返し行われる一連の処理が分担処理機能によって分担処理され、その分担処理の結果が分担処理機能間で所定の順序で信号として受け渡し合うようになっており、分担処理機能のそれぞれは、受け渡しの前段の分担処理の出力信号に基づいて分担処理を行うようになっている車両制御システムにおいて、１つの一連の処理中の分担処理の結果の信号が分担処理機能間で所定の順序通りに受け渡されないような異常は、シーケンスエラーと呼ばれる。
【００１２】
現状の車両制御システムにおいては、このようなシーケンスエラーが起こっていることは検出できない。
【００１３】
また、従来技術として、複数の機能が正常に実行されているかをチェックする技術が特許文献３に開示されている。具体的には、それぞれの機能に対応したフラグとカウンタを備え、監視手段がそのフラグとカウンタの更新状況をチェックすることで、機能が正常に起動および処理完了しているかをチェックすることができる。
【００１４】
ただし、上記技術はあくまでアプリケーション単独の実行チェックをするもので、制御のシーケンスが規定どおりに実行されているかをチェックするものではない。つまり、シーケンスエラーは検出することができない。
【特許文献１】特開２０００−３３９００１号公報
【特許文献２】特開平７−８９３９８号公報
【特許文献３】特開平１０−２１４２０８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
本発明は、上記点に鑑み、車両を制御するために繰り返し行われる一連の処理の分担処理の結果が所定の順序で信号として受け渡し合うようになっており、分担処理機能のそれぞれは、受け渡しの前段の分担処理の出力信号に基づいて分担処理を行うようになっている車両制御システムにおいて、１つの一連の処理中の分担処理の結果の信号が分担処理機能間で所定の順序通りに受け渡されないような異常を検出することができるようにすることを目的とする。
【課題を解決するための手段】
【００１６】
上記目的を達成するための請求項１に記載の発明は、複数のＥＣＵ（１１〜１５）を備え、前記複数のＥＣＵのそれぞれは、車両を制御するために繰り返し行われる一連の処理の分担処理を行う分担処理手段を１つ以上備え、これら複数の分担処理手段は、その分担処理の結果を所定の順序で信号として受け渡し合うようになっており、また前記複数の分担処理手段のそれぞれは、前記受け渡しの前段の分担処理手段の出力信号に基づいて前記分担処理を行うようになっている車両制御システムであって、前記一連の処理中の前記分担処理の結果の信号が前記順序通りに受け渡されなかったことを検出する検出手段を備えたことを特徴とする車両制御システムである。
【００１７】
これによって、車両を制御するために繰り返し行われる一連の処理の分担処理の結果が所定の順序で信号として受け渡し合うようになっており、分担処理機能（分担処理手段）のそれぞれは、受け渡しの前段の分担処理の出力信号に基づいて分担処理を行うようになっている車両制御システムにおいて、検出手段により、一連の処理中の分担処理の結果の信号が分担処理機能間で所定の順序通りに受け渡されないような異常を検出することができるようにすることができる。
【００１８】
また、検出手段は、所定の順序の全てについての異常を検出することができてもよいし、所定の順序の一部についての異常を検出できるだけであってもよい。
【００１９】
また、本請求項の発明においては、検出手段は車両制御システムのどのＥＣＵが備えているかについては特定しない。
【００２０】
また、請求項２に記載の発明は、請求項１に記載の車両制御システムにおいて、前記複数の分担処理手段は、前段の分担処理手段の出力信号に含まれる順序チェック情報を前記分担処理の結果に含めた信号を出力する出力手段（６１０〜６６０、７０５〜７４０）を備え、前記複数の分担処理手段の一部または全部の特定分担処理手段が備える前記出力手段は、前段の分担処理手段の出力信号に含まれる順序チェック情報に対して所定の加工を施したものを前記分担処理の結果に含めた信号を出力し、前記検出手段は、前記複数の分担処理手段のいずれか１つからの出力信号中の順序チェック情報に基づいて、前記一連の処理中の前記分担処理の結果の信号が前記順序通りに受け渡されなかったことを検出することを特徴とする。  
【００２１】
これによって、各分担処理手段は、前段の分担処理手段から受けた順序チェック情報を分担処理結果と共に後段の分担処理手段に渡し、更に分担処理手段のうちの特定分担処理手段は、受けた順序チェック情報に対して所定の加工を施した後に後段の分担処理手段に渡すので、前記順序が正常ならば、分担処理の結果と共に、順序チェック情報が特定分担処理手段によって加工されながら次々渡される。また、特定分担処理手段において順序の異常があった場合は、所定の加工が為されないことになる。そして、検出手段が、このような順序チェック情報に基づいて、順序の異常を検出する。したがって、車両を制御するために繰り返し行われる一連の処理の分担処理の結果が所定の順序で信号として受け渡し合うようになっており、分担処理機能（分担処理手段）のそれぞれは、受け渡しの前段の分担処理の出力信号に基づいて分担処理を行うようになっている車両制御システムにおいて、検出手段により、一連の処理中の分担処理の結果の信号が分担処理機能間で順序通りに受け渡されないような異常を検出することができるようにすることができる。
【００２２】
なお、検出手段において、「前記複数の分担処理手段のいずれか１つ」とあるのは、必ずしも１つのみの分担処理手段からの出力信号に基づいて検出することを意味するのではなく、少なくとも１つの分担処理手段からの出力信号に基づいて検出することを意味する。
【００２３】
また、請求項３に記載の発明は、請求項２に記載の車両制御システムにおいて、前記順序チェック情報は数値データを含み、前記所定の加工は、前記数値データに所定の値を加算することである。
【００２４】
また、請求項４に記載の発明は、請求項２または３に記載の車両制御システムにおいて、前記検出手段は、前記複数の分担処理手段のいずれか１つからの、前記一連の処理の前回の繰り返しにおける出力信号中の前記順序チェック情報と、当該１つの分担処理手段からの、前記一連の処理の今回の繰り返しにおける出力信号中の前記順序チェック情報との値の差が所定値でないことに基づいて、前記一連の処理中の前記分担処理の結果の信号が前記順序通りに受け渡されなかったことを検出することを特徴とする。
【００２５】
また、請求項５に記載の発明は、請求項２または３に記載の車両制御システムにおいて、  前記検出手段は、前記所定の順序の最初となる分担処理手段からの出力信号中の前記順序チェック情報と、前記所定の順序の最後の１つ前となる分担処理手段からの出力信号中の前記順序チェック情報の値の差が所定値でないことに基づいて、前記一連の処理中の前記分担処理の結果の信号が前記順序通りに受け渡されなかったことを検出することを特徴とする。
【００２６】
また、請求項６に記載の発明は、請求項２に記載の車両制御システムにおいて、前記順序チェック情報は複数のフラグを含み、前記所定の加工は、前記複数のフラグの所定の一部を所定の状態にすることである。
【００２７】
また、請求項７に記載の発明は、請求項２ないし６のいずれか１つに記載の車両制御システムにおいて、前記特定分担処理手段の有する前記出力手段は複数のグループに分かれ、当該グループ毎に前記所定の加工の内容が異なることを特徴とする。
【００２８】
また、請求項８に記載の発明は、請求項１ないし７のいずれか１つに記載の車両制御システムにおいて、前記所定の順序において最初に前記分担処理の結果の信号を出力する前記出力手段は、所定の前記順序チェック情報を前記分担処理の結果の信号に含めて出力する開始出力手段（６１０、６３０、６５０、６６０）を備えたことを特徴とする。
【００２９】
また、請求項９に記載の発明は、請求項８に記載の車両制御システムにおいて、前記開始出力手段は、前記出力の度に前記所定の順序チェック情報を変化させることを特徴とする。
【００３０】
また、請求項１０に記載の発明は、請求項９に記載の車両制御システムにおいて、前記開始出力手段は、新たな順序チェック情報を生成して記憶媒体の所定の領域に情報として保存する保存手段（６５０）と、前記記憶媒体の前記所定の領域に保存された情報を読み込む読込手段（６１０）と、前記読み込んだ情報を今回の出力に用いる順序チェック情報とする設定手段（６３０）と、を備え、前記分担処理は、前記保存手段、前記読込手段、前記設定手段の処理中で離れて実行されていることを特徴とする。
【００３１】
また、請求項１１に記載の発明は、請求項１ないし１０のいずれか１つに記載の車両制御システムにおいて、前記検出手段は、前記所定の順序の最後となる分担処理手段を備えたＥＣＵが有していることを特徴とする。
【００３２】
また、請求項１２に記載の発明は、請求項１ないし１１のいずれか１つに記載の車両制御システムにおいて、前記検出手段は、前記分担処理としてアクチュエータを制御する分担処理手段を備えたＥＣＵが有していることを特徴とする。
【００３３】
また、請求項１３に記載の発明は、請求項１ないし１２のいずれか１つに記載の車両制御システムにおいて、前記検出手段を複数有し、これら複数の検出手段は、それぞれ異なる分担処理手段が有していることを特徴とする。
【００３４】
また、請求項１４に記載の発明は、請求項２ないし１３のいずれか１つに記載の車両制御システムにおいて、前記特定分担処理手段は、前記車両を制御するための一連の処理の複数のうち、信頼性が求められる度合いが高い前記一連の処理の分担処理について、前段の分担処理手段の出力信号に含まれる順序チェック情報に対して所定の加工を施したものを前記分担処理の結果に含めた信号を出力することを特徴とする。
【００３５】
また、請求項１５に記載の発明は、請求項１ないし１４のいずれか１つに記載の車両制御システムにおいて、前記検出手段は、前記一連の処理中の前記分担処理の結果の信号が前記順序通りに受け渡されなかったことを検出した場合、その順序の異常の発生元の分担処理手段を備えたＥＣＵにおいて、他の分担処理手段も順序の異常の発生元となっている場合、当該ＥＣＵを異常であると判定することを特徴とする。
【００３６】
なお、上記各手段の括弧内の符号は、後述する実施形態に記載の具体的手段、または具体的手段として下記の各ＥＣＵ１１〜１５に搭載されたマイコン中のＣＰＵを機能させるためのソフトウェアの処理との対応関係を示すものである。
【発明を実施するための最良の形態】
【００３７】
図１に、本発明の一実施形態に係る車両制御システムの制御体系図を示す。この図は、車両のエンジン、変速機、クラッチ、スタータ、オルタネータ、ＡＢＳ、作動装置、４ＷＤ（４輪駆動）等の車両の機能要素の制御の構成を機能別に分解し、階層化したものである。
【００３８】
車両の機能は、車両運動、パワートレイン、電気的制御の３つに大別され、これら３つの機能間の調整を車両コーディネータが行う（レベル０：車両ドメイン）。すなわち、車両コーディネータは車両運動、パワートレイン、電気的制御のそれぞれの機能についての情報を取得し、それら取得した情報にもとづいて車両全体の制御方針を決定し、この方針にもとづいて車両運動、パワートレイン、および電気的制御の機能に対して各種作動内容の指令を出力する。制御方針としては、例えば目標車軸トルク等がある。
【００３９】
上記した機能のそれぞれは、更に下位の機能に分割される。
【００４０】
電気的制御は、オルタネータ制御、ボディ系制御の２つの機能に分割され、電気的コーディネータがこれら２つの機能間の調整を行う（レイヤ１：電気ドメイン）。すなわち、電気的制御コーディネータはオルタネータ制御から供給電流量の情報を受信し、ボディ系制御からは各種ボディ系機器の作動の情報を受信し、車両コーディネータから上限電流値等の指令を受信し、これら受信した情報および指令にもとづいて、オルタネータ制御およびボディ系制御に動作の指令を送信する。なお、ボディ系制御とは、パワーウィンドウ、ワイパー、エアコン、ドアロック等の制御の総称である。
【００４１】
パワートレインはエンジン制御、ＡＴ制御、スタータ制御、推進力検知の４つの機能に分割され、パワートレインコーディネータがこれら４つの機能間の調整を行う（レイヤ１：パワートレインコーディネータ）。すなわち、パワートレインコーディネータは、推進力検知から車軸トルクの情報を受信し、また車両コーディネータから目標車軸トルク等の指令を受信し、これらの情報および受信にもとづいてエンジン制御、ＡＴ制御、スタータ制御に対してそれぞれ噴射・点火、変速、スタータオン／オフ等の指令を出力する。
【００４２】
車両運動は姿勢検知、車両安定制御の２つの機能に分割され、車両運動コーディネータがこれら２つの機能間の調整を行う（レイヤ１：車両運動ドメイン）。すなわち、車両運動コーディネータは、姿勢検知による車速、ヨーレート、直進加速、横加速等の情報を受信し、また車両コーディネータから指令を受信し、これにもとづいて車両安定制御の機能に目標タイヤフォース（タイヤにかかる力）の指令を出力する。
【００４３】
また、車両運動コーディネータ、パワートレインコーディネータ、および電気的コーディネータのレイヤ１のコーディネータは、各ドメイン内の情報を上位のコーディネータである車両コーディネータに出力する。
【００４４】
車両運動ドメインの車両安定制御の機能はさらに下位の機能に分割される。すなわち、車両安定制御は、ステアリング制御、４ＷＤ制御、ＡＢＳ制御、差動装置制御の４つに分割され、車両安定制御コーディネータがこれら４つの機能間の調整を行う（レイヤ２：車両安定制御ドメイン）。すなわち、車両安定制御コーディネータは、車両運動コーディネータから指令を入力し、この指令にもとづいてこれら４つの機能のそれぞれに対して指令を出力する。なお、この機能分割による階層化は１つの分類手法であり、必ずしも実装段階においてこのように車両の機能を分割する必要はなく、例えばボディ系制御は電気的制御コーディネータの下位にあるのではなく、別に設けられたボディ系コーディネータの下位にあってもよい。
【００４５】
図２に、本実施形態において上記車両制御システムを実現するための車内通信ネットワークの構成を概略的に示す。この通信ネットワークは、シリアル通信線１０、車両制御ＥＣＵ１１、スロットル制御ＥＣＵ１２、エンジンＥＣＵ１４、およびＡＢＳＥＣＵ１５を有している。各ＥＣＵ１１〜１５は、シリアル通信線１０を介して通信データの授受を行うことができる。このように、これらＥＣＵ１１〜１５は、それぞれが１つのノードとして通信ネットワークに接続している。
【００４６】
なお、この通信ネットワーク内には、その他にもステアリングＥＣＵ、４ＷＤＥＣＵ等の図示しないＥＣＵがそれぞれ１ノードとして接続している。
【００４７】
これらＥＣＵ１１〜１５の基本的な構成は共通している。これらＥＣＵが共通して持つ構成を図３に示す。ＥＣＵ１１〜１５は、ドライバ／レシーバＩＣ、プロトコルＩＣ、およびマイクロコンピュータ（以下マイコンと記す）を有している。
【００４８】
ドライバ／レシーバＩＣは、シリアル通信線１０に送出された信号のうち、所定のタイミングで送出されたものを、電気信号をＥＣＵ内部で扱えるデジタルデータに変換してプロトコルＩＣに出力する。またドライバ／レシーバＩＣは、プロトコルＩＣから入力された信号をシリアル通信線１０の物理的特性に適合するように変換してシリアル通信線１０に出力する。
【００４９】
プロトコルＩＣは、ＲＡＭを有し、ドライバ／レシーバＩＣから入力された信号を、デジタルデータに変換し、当該ＲＡＭの所定の領域に保存する。そしてプロトコルＩＣは、マイコンから当該ＲＡＭ中のデータの読み出し要求の信号を受信すると、当該ＲＡＭに保存されたデータをマイコンに出力する。
【００５０】
またプロトコルＩＣは、マイコンから入力されたデータに、使用している通信プロトコルに適合するよう、ＩＤやＣＲＣを付加する等フレームフォーマットの加工を施した後、プロトコルＩＣに出力する。なお、通信プロトコルとしてはＴＴＰ／Ｃ、ＦｌｅｘＲａｙ等の時分割多重通信を用いる。時分割多重通信においては、各ＥＣＵがデータをシリアル通信線１０に出力することができるタイミングがあらかじめ決められており、プロトコルＩＣは、このタイミングに従って送信のためのデータをドライバ／レシーバＩＣに出力する。
【００５１】
マイコンは、図示しないＣＰＵ、書き換え可能な揮発性メモリであるＲＡＭ、書き換え可能な不揮発性メモリであるフラッシュメモリを有する。ＣＰＵは、フラッシュメモリに保存されているプログラムを読み出して実行することで各種処理を行う。またマイコンは、この処理の必要に応じて、ＲＡＭやフラッシュメモリに対してデータの書き込み／読み出しを行い、また、他のＥＣＵとの通信の必要があれば、プロトコルＩＣからの入力、送信のためのデータの出力を行う。
【００５２】
マイコンのフラッシュメモリ中には、プログラムやプログラムの実行において用いるデータが保存されている。これらのプログラムは、所定のタイミングで実行が開始されるようになっている。なお、ＣＰＵはフラッシュメモリ中の複数のソフトウェアをそれぞれ別プロセスとして実行することができる。そして、それぞれのプログラムはプロセス間通信やフラッシュメモリへの書き込み、読み出しによって情報、制御の受け渡しを行うことができる。
【００５３】
以上がそれぞれのＥＣＵに共通する構成である。この共通の構成に加え、個々のＥＣＵはそれぞれの機能に基づいたプログラムをフラッシュメモリに保存し、またそれぞれの制御機能を実現するためのセンサ、アクチュエータといった機能要素と信号の授受を行う。
【００５４】
車両制御ＥＣＵ１１のマイコンのＣＰＵが実行するプログラムとしては、上記した車両コーディネータの機能を実現するためのプログラムがある。
【００５５】
スロットル制御ＥＣＵ１２には、スロットルバルブの開度を検出するポジションセンサから検出信号を入力し、スロットルバルブの開度を制御するモータに制御信号を出力するようになっている。またこのスロットル制御ＥＣＵ１２のマイコンのＣＰＵは、パワートレインコーディネータからの信号に基づいて、このモータを制御するための機能（モータ制御機能と記す）を実現するプログラムを実行する。
【００５６】
トランスミッション制御ＥＣＵ１３のマイコンのＣＰＵは、トランスミッションを制御するためのプログラムを実行する。
【００５７】
エンジンＥＣＵ１４は、アクセル開度を検出するアクセルセンサから検出信号を入力し、また燃料噴射のためのインジェクタ、点火のためのプラグに制御信号を出力する。エンジンＥＣＵ１４のマイコンのＣＰＵが実行するプログラムとしては、アクセルセンサからの検出信号を車両安定制御コーディネータに出力する機能（アクセル出力機能と記す）を実現するプログラム、パワートレインコーディネータからの指令の入力に基づいてインジェクタ、プラグの点火を制御する機能（エンジン制御機能と記す）を実現するプログラム、パワートレインコーディネータの機能を実現するためのプログラムがある。
【００５８】
ＡＢＳＥＣＵ１５のマイコンのＣＰＵが実行するプログラムとしては、車両運動コーディネータの機能を実現するためのプログラム、車両安定制御コーディネータの機能を実現するためのプログラムがある。
【００５９】
なお、以下では、各マイコンのＣＰＵがプログラムを実行することによって所定の機能を実現する動作を、その実現される機能自体の動作であると表現する。
【００６０】
上記のような車両制御システムにおいて、車両を制御するために繰り返し行われる一連の処理の１つとして、アクセルセンサからの検出信号等に基づいて車両全体の制御を決定し、その決定に従って上記モータ、インジェクタ、プラグの作動を制御する処理について、以下詳細に説明する。この一連の処理は、上記した各ＥＣＵの諸機能がその処理の一部を分担することによって実現される。
【００６１】
図４に、このような分担を行う各ＥＣＵの諸機能、すなわち分担処理機能（分担処理手段に相当する）、が行う分担処理の流れを視覚的に示す。各分担処理機能は、所定のタイミングで実行されるようになっており、また、その分担処理の結果を所定の順序で信号として受け渡し合うようになっている。
【００６２】
なお、異なるＥＣＵによって実現される機能間のデータの授受におけるデータの送信については、データを送る側の機能が自己のＥＣＵのプロトコルＩＣに当該データを出力し、プロトコルＩＣが当該入力されたデータを通信プロトコルに適合するように加工してドライバ／レシーバＩＣに出力し、ドライバ／レシーバＩＣが当該入力されたデータを所定のタイミングでシリアル通信線１０に送出することで実現される。
【００６３】
また、異なるＥＣＵによって実現される機能間のデータの授受におけるデータの受信については、データを受信する側の機能を有するＥＣＵのドライバ／レシーバＩＣが、所定のタイミングにシリアル通信線１０に送出されたデータを受信してプロトコルＩＣに出力し、プロトコルＩＣは当該入力されたデータを自己のＲＡＭの所定の領域に保存し、マイコンが適宜当該ＲＡＭに保存されたデータを、プロトコルＩＣにデータを要求する信号を出力することで、取得することで実現される。
【００６４】
図４では、まず、エンジンＥＣＵ１４のアクセル出力機能は、アクセルセンサからの検出信号、すなわちＡ／Ｄ変換された電圧値を読み込み（図４の丸囲み数字１に対応する）、このデジタル変換された電圧値を必要な精度または、デジタル変換された値の確度に従って値を丸め、この丸めた値を分担処理の結果のデータとして、ＡＢＳＥＣＵ１５の車両運動コーディネータを宛先として、自己のプロトコルＩＣに出力する。これによって、当該データはシリアル通信線１０に送出される。
【００６５】
なお、丸めるとは、例えばＡ／Ｄ変換の精度が１２ｂｉｔで、確度が１０ｂｉｔの場合、読み込んだ１２ｂｉｔの下位２ｂｉｔを切り捨てることをいう。
【００６６】
上記の通りシリアル通信線１０に出力されたデータは、ＡＢＳＥＣＵ１５のドライバ／レシーバＩＣ、プロトコルＩＣを介して、車両安定制御コーディネータが受け取る（図４の丸囲み数字２に対応する）。車両安定制御コーディネータは、受け取ったデータを、そのまま分担処理の結果の信号として車両運動コーディネータに渡す。車両運動コーディネータは、車両安定制御コーディネータと同じマイコンによって実現されているので、これらの間の信号の受け渡しは、シリアル通信線１０を介することはなく、上記した通り、プロセス間通信またはフラッシュメモリを用いることによって行われる。
【００６７】
当該データを受け取った車両運動コーディネータは、受け取ったデータを、そのまま分担処理の結果の信号として車両コーディネータに渡す。車両コーディネータは、ＡＢＳＥＣＵ１５のマイコンによって実現されているので、車両運動コーディネータは、車両制御ＥＣＵ１１の車両コーディネータを宛先として、当該データを自己のプロトコルＩＣに出力する。これによって、当該データはシリアル通信線１０に送出される。
【００６８】
シリアル通信線１０に出力された当該データは、車両制御ＥＣＵ１１のドライバ／レシーバＩＣ、プロトコルＩＣを介して、車両コーディネータが受け取る（図４の丸囲み数字３に対応する）。
【００６９】
車両コーディネータは、受け取ったアクセルセンサの検出データや別途取得した他のセンサ（ブレーキセンサ、ステアリングセンサ等）による検出データ等から、車両全体としてどれだけのエンジントルクが必要であるかを演算し、演算した目標エンジントルク値のデータを、分担処理の結果の信号として、パワートレインコーディネータに出力する。パワートレインコーディネータは、エンジンＥＣＵ１４のマイコンによって実現されているので、車両コーディネータは、エンジンＥＣＵ１４のパワートレインコーディネータを宛先として、当該データを自己のプロトコルＩＣに出力する。これによって、当該データはシリアル通信線１０に送出される。
【００７０】
シリアル通信線１０に送出された当該データは、エンジンＥＣＵ１４のドライバ／レシーバＩＣ、プロトコルＩＣを介して、パワートレインコーディネータが受け取る（図４の丸囲み数字４に対応する）。パワートレインコーディネータは、受け取った目標エンジントルク値に基づいて、インジェクタの噴射量、点火タイミング、目標空気量を演算する。そして、分担処理の結果の信号として、この目標空気量をスロットル制御ＥＣＵ１２のモータ制御機能宛としてプロトコルＩＣに出力する。また、分担処理の結果の信号として、これらインジェクタの噴射量、点火タイミングを同じエンジンＥＣＵ１４内のエンジン制御へ渡す。
【００７１】
プロセス間通信またはフラッシュメモリを介してインジェクタの噴射量、点火タイミングのデータを受け取ったエンジン制御機能は、このデータの値に基づいて、インジェクタ、プラグに対して制御信号を出力する（図４の丸囲み数字６に対応する）。
【００７２】
スロットル制御ＥＣＵ１２のモータ制御機能は、シリアル通信線１０を介して当該目標空気量のデータを受け取り（図４の丸囲み数字５に対応する）、この目標空気量のデータに基づいて、インジェクタやプラグの作動と同期するようにモータに制御信号を出力する（図４の丸囲み数字６に対応する）。
【００７３】
以上のような一連の処理によって、アクセルセンサからの検出信号等に基づいて目標エンジントルクが決定され、その目標エンジントルクを実現するためにモータ、インジェクタ、プラグが制御される。この場合、各分担処理の機能は、アクセル出力機能、車両安定制御コーディネータ、車両運動コーディネータ、車両コーディネータ、パワートレインコーディネータの順に実行され、分担処理の結果の信号は、この順序における前段の機能から後段機能へ受け渡される。ただし、共にパワートレインコーディネータの後段であるモータ制御機能、エンジン制御機能は、並列的に実行される。
【００７４】
なお、この一連の処理の流れをＥＣＵ単位で示したものが、図１の丸囲み数字で示す通信の流れである。図１と図４において、同一の丸囲み数字によって表された矢印は、同一の信号の受け渡しを表している。
【００７５】
シリアル通信線１０においては、上記した通り時分割多重通信によるＥＣＵ間の通信が行われ、各ＥＣＵはあらかじめ割り当てられたタイミングでのみ他のＥＣＵに送信を行うことができるようになっている。図５に、このような時分割多重通信による信号の受け渡しのタイミングを示す。図５中、右方向が時間の向きであり、各長方形３１〜４２がＥＣＵの各機能による処理時間を示し、各矢印４３〜５０が各機能間のデータの送受信のタイミングを示している。
【００７６】
時分割多重通信では、各ＥＣＵ１１〜１５がデータをシリアル通信線１０に送出するタイミングが予め決められている。本実施形態においては、図５に示す様に、時間はサイクルという一定時間の単位に分割され、更に各サイクルはＡ、Ｂ、Ｃ、Ｄという４つの時間スロットに分割される。
【００７７】
そして、各サイクルにおいて、データをシリアル通信線１０に送出することができるＥＣＵは、スロットＡにおいては車両制御ＥＣＵ１１であり、スロットＢにおいてはエンジンＥＣＵ１４であり、スロットＣにおいてはＡＢＳＥＣＵ１５であり、スロットＤにおいてはスロットル制御ＥＣＵ１２である。なお、各サイクルにおいて、更にスロットＥを設け、この時間スロットにはトランスミッション制御ＥＣＵ１３がデータをシリアル通信線１０に送出することができるようになっていてもよい。
【００７８】
また、各ＥＣＵ１１〜１５のドライバ／レシーバＩＣ、プロトコルＩＣが、どのタイムスロットにおいて送出されたデータを受信するかは、各ＥＣＵ毎にあらかじめ決められている。
【００７９】
したがって、図４に示した一連の処理においては、図５に示す通り、まずエンジンＥＣＵのアクセル出力機能が、長方形３１の時間帯にアクセルセンサからデータを読み込んでプロトコルＩＣに当該データを出力し、プロトコルＩＣは、入力されたデータを、ｎ番目（ｎは自然数）のサイクルにおけるスロットＢのタイミングにおいて、ドライバ／レシーバＩＣを介してシリアル通信線１０に出力する（矢印４３に対応する）。
【００８０】
その後、ＡＢＳＥＣＵ１５のプロトコルＩＣは、スロットＢにおいてシリアル通信線１０に送出された当該データを受信して自己のＲＡＭに保存する（矢印４４に対応する）。また、当該マイコンの車両安定制御コーディネータは、このデータを取得して、同じマイコン内で動作する車両運動コーディネータに渡し、車両運動コーディネータは、プロトコルＩＣに当該データを出力し（長方形３３に対応する）、プロトコルＩＣは、入力されたデータを、ｎ＋１番目のサイクルにおけるスロットＣのタイミングにおいて、ドライバ／レシーバＩＣを介してシリアル通信線１０に出力する（矢印４５に対応する）。
【００８１】
その後、車両制御ＥＣＵ１１のプロトコルＩＣは、スロットＣにおいてシリアル通信線１０に送出された当該データを受信して自己のＲＡＭに保存する（矢印４６に対応する）。また、当該マイコンの車両コーディネータは、長方形３５の時間帯に、当該データに基づいた目標トルク値のデータをプロトコルＩＣに出力し、プロトコルＩＣは、入力されたデータを、ｎ＋２番目のサイクルにおけるスロットＡのタイミングにおいて、ドライバ／レシーバＩＣを介してシリアル通信線１０に出力する（矢印４７に対応する）。
【００８２】
その後、エンジンＥＣＵ１４のプロトコルＩＣは、スロットＡにおいてシリアル通信線１０に送出された当該データを受信して自己のＲＡＭに保存する（矢印４８に対応する）。また、当該マイコンのパワートレインコーディネータは、長方形３８の時間帯に、当該データに基づいた目標空気量のデータをプロトコルＩＣに出力し、プロトコルＩＣは、入力されたデータを、ｎ＋３番目のサイクルにおけるスロットＢのタイミングにおいて、ドライバ／レシーバＩＣを介してシリアル通信線１０に出力する（矢印４９に対応する）。
【００８３】
その後、スロットル制御ＥＣＵ１２のプロトコルＩＣは、スロットＢにおいてシリアル通信線１０に送出された当該データを受信して自己のＲＡＭに保存する（矢印５０に対応する）。また、当該マイコンのモータ制御機能は、長方形４０の時間帯に、当該データに基づいてモータに制御信号を出力する。
【００８４】
また、エンジンＥＣＵ１４のマイコンのエンジン制御機能は、長方形４２の時間帯に、当該インジェクタの噴射量、点火タイミングのデータをパワートレインコーディネータから受け取り、当該データに基づいてインジェクタ、プラグを制御する。
【００８５】
以上のようなタイミングで、分担処理の結果の信号を前段から後段へ順次受け渡す本実施形態の車両制御システムにおいては、分担処理の結果の信号に、更に数値データであるチェックコード（順序チェック情報に相当する）が付加されるようになっている。
【００８６】
図６、図７、および図８に、上記したような機能間のデータの受け渡しにおいて、当該データにチェックコードを付加するための、上記各機能のためのプログラムのフローチャートを示す。
【００８７】
図６は、一連の処理の分担処理機能のうち最初のもの、すなわちエンジンＥＣＵ１４のアクセル出力機能のプログラムを示すフローチャートである。このプログラムは所定のタイミング（例えば２サイクル毎の時間スロットＡ）で起動すると、まずステップ６１０でチェックコード初期値Ｎをマイコンのフラッシュメモリの所定の領域から読み出す。なお、エンジンＥＣＵ１４の電源投入時におけるＮの値は、例えば５である。
【００８８】
次にステップ６２０で、アクセルセンサからの検出信号を取得する。
【００８９】
次にステップ６３０で、ステップ６１０で読み出したチェックコードを、ＲＡＭ中の所定の領域に確保した変数Ｍに代入する。
【００９０】
次にステップ６４０で、ステップ６２０で取得したデータに対して補正、演算処理等を行う。具体的には、先述した入力データの丸め等を行う。
【００９１】
次にステップ６５０では、チェックコード初期値の更新を行う。具体的には、ステップ６１０で読み出したチェックコード初期値のための所定のフラッシュメモリの領域の値を、現在よりαだけ大きくするように書き換える。αとしては、例えば１０である。
【００９２】
次にステップ６６０では、ステップ６４０で補正等を行ったデータに、変数Ｍの値から成るチェックコードを付加し、さらに当該データの宛先であるＡＢＳＥＣＵ１５の車両安定制御コーディネータの指定の情報を付加し、その結果のデータをエンジンＥＣＵ１４のプロトコルＥＣＵに出力し、そして処理は終了する。
【００９３】
このような処理によって、エンジンＥＣＵ１４からＡＢＳＥＣＵ１５を宛先としてシリアル通信線１０に送出されるデータフレーム（一まとまりとなって送信されるデータの単位）のヘッダ部を除いた部分は、図９の様な形式となる。すなわち、データの先頭部に、送信データの識別子であるメッセージＩＤ４５、メッセージＩＤ４５に続いて、ステップ６６０で付加されたチェックコード４６、チェックコード４６に続いて、ステップ６４０で補正等を行ったデータ４７という構成となっている。
【００９４】
以上の様に、一連の処理において最初に分担処理の結果の信号を出力する分担処理機能であるアクセル出力機能は、所定のチェックコードを分担処理の結果の信号に含めて出力するようになっており、そのチェックコードの値は出力の度に所定数αだけ加算される。
【００９５】
図７は、一連の処理の分担処理機能のうち最初のもの以外、すなわち、車両安定制御コーディネータ、車両運動コーディネータ、車両コーディネータ、パワートレインコーディネータ、モータ制御機能、エンジン制御機能のプログラムを示すフローチャートである。
【００９６】
このプログラムは所定のタイミングで起動すると、まずステップ７０５で、前段の分担処理機能が送信したデータを取得する。前段の分担処理機能が他のＥＣＵ内にある場合は、プロトコルＩＣから当該データを取得し、前段の分担処理機能が自らと同一のＥＣＵ内にある場合は、フラッシュメモリまたはプロセス間通信を用いて当該データを取得する。
【００９７】
次にステップ７１０では、演算処理等を行う。この演算処理は、分担処理機能によって異なる。例えば、上記した例においては、車両安定制御コーディネータ、車両運動コーディネータは単に受信したデータを転送するためのデータのＲＡＭへの一時保存等の処理を行い、車両コーディネータは、受信したデータに基づいて目標トルクを決定する処理を行う。
【００９８】
次にステップ７２０では、チェックコードＭをステップ７０５で取得したデータのチェックコード４６の部分から読み出す。
【００９９】
次にステップ７３０では、読み出したチェックコードの値に値βを加算したものを新たなチェックコードとする。値βは、例えば２である。
【０１００】
次にステップ７４０では、ステップ７１０で演算処理等を行った結果のデータに、ステップ７３０で更新されたチェックコードを付加し、さらに当該データを宛先に届くように出力する。宛先、すなわち後段の分担処理機能が他のＥＣＵ内にある場合は、当該データに宛先のＥＣＵ等を指定したデータを当該データに付加し、プロトコルＩＣに出力する。後段の分担処理機能が自らと同一のＥＣＵ内にある場合は、フラッシュメモリまたはプロセス間通信を用いて当該データを渡す。そして処理は終了する。
【０１０１】
このような処理によって、前段から受けたデータのチェックコードに値βが加算されたチェックコードを有するデータが後段に渡されるようになる。
【０１０２】
したがって、上記した図６および図７の処理によって、一連の処理の各分担処理の結果としての出力信号に含まれるチェックコードの値は、当該一連の処理が車両制御システムの電源投入後ｊ回目（ｊは自然数）のものであり、当該分担処理が、当該一連の処理の最初の分担処理よりｋ段（ｋは自然数）後の分担処理であるならば、ｊα＋ｋβとなる。ただし、車両制御システムの電源投入時のチェックコードＮの初期値が０であると仮定している。
【０１０３】
図１０に、一連の処理において各分担処理が受け渡し合うデータ中のチェックコードの値の時系列的な変化を示す。図１０の上部は、図５と同内容を示すものである。図１０の下部に示す折れ線６２は、長方形３１、３３、３５、３８、４０、４２で示される分担処理の間で受け渡されるデータ中のチェックコードの値に対応する。また、折れ線６１は、長方形３７、３９、４１で示される分担処理の間で受け渡されるデータ中のチェックコードの値に対応する。また、折れ線６３は、長方形３２、３４、３６で示される分担処理の間で受け渡されるデータ中のチェックコードＭの値に対応する。
【０１０４】
すなわち、繰り返し行われる一連の処理のうち、折れ線６１は、折れ線６２に対応する一連の処理の前の回の一連の処理におけるチェックコードに対応し、折れ線６３は、折れ線６２に対応する一連の処理の次の回の一連の処理におけるチェックコードに対応する。
【０１０５】
折れ線６２に対応する一連の処理が、車両制御システムの電源投入後ｊ回目のものであるとすると、長方形３１で示されるアクセル出力機能は、出力するチェックコードの値をｊαとし、長方形３３で示される車両安定制御コーディネータおよび車両運動コーディネータは、それぞれ出力するチェックコードの値を、受信したチェックコードよりβだけ大きくするので、ＡＢＳＥＣＵ１５から車両コーディネータへ出力されるチェックコードはｊα＋２βとなる。また、長方形３５で示される車両コーディネータは、出力するチェックコードの値をｊα＋３βとし、長方形３８で示されるパワートレインコーディネータは、出力するチェックコードの値をｊα＋４βとする。
【０１０６】
またこの場合、折れ線６１に対応する一連の処理が、車両制御システムの電源投入後ｊ−１回目のものであるので、長方形３７で示されるパワートレインコーディネータは、出力するチェックコードの値を（ｊ−１）α＋４βとする。
【０１０７】
またこの場合、折れ線６３に対応する一連の処理が、車両制御システムの電源投入後ｊ＋１回目のものであるので、長方形３２で示されるアクセル出力機能は、出力するチェックコードの値を（ｊ＋１）αとし、長方形３４で示される車両安定制御コーディネータおよび車両運動コーディネータは、それぞれ出力するチェックコードの値を、受信したチェックコードよりβだけ大きくするので、ＡＢＳＥＣＵ１５から車両コーディネータへ出力されるチェックコードは（ｊ＋１）α＋２βとなる。また、長方形３６で示される車両コーディネータは、出力するチェックコードの値を（ｊ＋１）α＋３βとする。
【０１０８】
このように、車両を制御するために繰り返し行われる一連の処理が分担処理機能によって分担処理され、その分担処理の結果が分担処理機能間で所定の順序でデータの信号として受け渡し合うようになっていれば、当該信号に含まれるチェックコードは上記した様な所定の変化過程を辿る。
【０１０９】
しかし、１つの一連の処理中の分担処理の結果の信号が分担処理機能間で順序通りに受け渡されないような異常、すなわちシーケンスエラーがある場合には、チェックコードの変化過程が所定の通りにならない。例えば、上記折れ線６２に対応する一連の処理において、長方形３５に対応する車両コーディネータの処理が何らかの原因で高負荷となって遅延し、直後のスロットＡのタイミングまでに目標トルク値を算出できなかった場合、車両コーディネータはトルク値のデータ、および更新されたチェックコードを、所定のタイミングでシリアル通信線１０に送出することができない。したがって、後段のパワートレインコーディネータにおいては、プロトコルＩＣ中のデータが更新されないので、チェックコードが前回の一連の処理にて受信した値から変化せず、結果としてチェックコードの変化過程が所定の通りにならない。
【０１１０】
図８は、このようなチェックコードの変化過程が所定の通りであるかそうでないかを判定することによって、シーケンスエラーがあったか否かを判定するための、シーケンスチェック機能（検出手段に相当する）を実現するためのプログラムのフローチャートである。本実施形態においては、このシーケンスチェック機能は、スロットル制御ＥＣＵ１２のマイコンのＣＰＵによって実行される。これは、スロットル制御ＥＣＵ１２は、最終的にアクチュエータを制御する分担処理機能であるモータ制御機能を搭載するので、もしシーケンスエラーがあった場合に、シリアル通信線１０を介することなく、直ちにモータ制御機能を停止することができるからである。
【０１１１】
このプログラムで表されるシーケンスチェック機能は、通常エンジンＥＣＵ１４がモータ制御機能宛のデータを受信する直後となる時期に周期的に動作するようになっている。具体的には、図１０においては、長方形６６、６７の時期に動作する。シーケンスチェック機能は、起動すると、まずステップ８１０で、マイコンのＲＡＭの所定の領域に記憶されている前回のチェックコード値Ｌを読み出す。なお、スロットル制御ＥＣＵ１２の電源投入直後にこのプログラムが起動した場合は、前回のチェックコードとしては、シーケンスエラーが現実に発生しなければ今回のチェックコードとなる値から、所定の値Ｋを引いた値とする。すなわち、シーケンスチェック機能が、間違ってシーケンスエラーが発生したと判定しないような値とする。
【０１１２】
次にステップ８２０で、今回のチェックコード値Ｍを読み出す。これは、モータ制御機能が読み出した値を用いる。
【０１１３】
次にステップ８３０で、今回のチェックコード値Ｍから前回のチェックコード値Ｌを減算した値が所定の定数Ｋであるか否かを判定する。当該減算値が定数Ｋであれば処理はステップ８５０に進み、定数Ｋでなければ処理はステップ８４０に進む。所定の定数Ｋは、本実施形態においては値αである。
【０１１４】
ステップ８４０では、シーケンスエラーがあったとして、当該エラーに対処するための処理を行う。具体的なエラー処理としては、後に起動するモータ制御機能が、前回の起動時におけるステップ７１０の演算処理の結果を今回の演算処理の結果として用いるように設定する。このために、モータ制御機能は、毎回の演算処理の結果をフラッシュメモリ、ＲＡＭ等に記憶するようになっており、また、ステップ７１０では、まずフラッシュメモリやＲＡＭ中の所定の領域のフラグを読み出して、前回の演算処理の結果を用いるか否かを判定し、その判定に基づいた処理を行うようになっている。そして、ステップ８４０の処理においては、当該所定のフラグを切り替えるようになっている。
【０１１５】
また、エラー処理としては、モータ制御機能が、前回の演算処理の結果と今回の演算処理の結果が小さいなら、今回の演算処理の結果の値を使用するように設定してもよいし、また、モータ制御機能が、あらかじめ定められたデフォルト値を用いるようになっていてもよい。また、図８の処理の定期的な繰り返しにおいて、エラー処理が所定回数（例えば１０回）以上連続したら、全ＥＣＵ、または一部の異常なＥＣＵをリセットするようになっていてもよい。
【０１１６】
また、シーケンスチェック機能は、シーケンスエラーを検出した場合、そのシーケンスエラーの発生元の分担処理機能を備えたＥＣＵにおいて、他の分担処理機能もシーケンスエラーの発生元となっていた場合、当該ＥＣＵを異常であると判定するようになっていてもよい。
【０１１７】
ステップ８５０では、チェックコードを更新する。すなわち、ステップ８１０で参照した、前回のチェックコード値ＬのためのＲＡＭ中の所定の領域に、今回のチェックコードＭを書き込む。そして処理は終了する。
【０１１８】
以上のようなシーケンスチェック機能は、例えば図１０の長方形６７の時期に動作した場合は、図１０における三角形６４のタイミングにおけるチェックコードが前回のチェックコードＬとなり、三角形６５の示すタイミングにおけるシーケンスチェックが今回のチェックコードＭとなる。
【０１１９】
シーケンスエラーがない場合、図１０に示す通り、これらの値の差は常に値αとなり、図８のシーケンスチェック機能のステップ８３０によって、シーケンスエラーがないとして処理される。そして、シーケンスエラーが長方形３１、３３、３５、３８のいずれかの段階で発生していた場合、この値はαより小さい値となり、機能のステップ８３０、８４０によって、シーケンスエラーがあるとして処理される。
【０１２０】
このように、シーケンスチェック機能は、パワートレインコーディネータからの、一連の処理の前回の繰り返しにおける出力信号中のチェックコードと、当該パワートレインコーディネータからの、一連の処理の今回の繰り返しにおける出力信号中のチェックコードとの値の差が所定値αでないことに基づいて、シーケンスエラーがあったことを検出する。
【０１２１】
以上のような車両制御システムの動作によって、各分担処理機能は、前段の分担処理機能から受けたチェックコードを分担処理結果と共に後段の分担処理機能に渡し、更に分担処理機能は、受けたチェックコードに対して所定の値を加算した後に後段の分担処理機能に渡すので、シーケンスエラーがなければ、分担処理の結果と共に、チェックコードが各分担処理機能によって加算されながら次々渡される。また、各分担処理機能においてシーケンスエラーあった場合は、所定の加算が為されないことになる。そして、シーケンスチェック機能が、このようなチェックコードに基づいて、シーケンスエラーを検出する。したがって、車両を制御するために繰り返し行われる一連の処理の分担処理の結果が所定の順序で信号として受け渡し合うようになっており、分担処理機能のそれぞれは、受け渡しの前段の分担処理の出力信号に基づいて分担処理を行うようになっている車両制御システムにおいて、一連の処理中の分担処理の結果の信号が分担処理機能間で所定の順序通りに受け渡されないような異常を検出することができる。
【０１２２】
また、シーケンスチェック機能は、一連の処理中の所定の順序の最後となる分担処理機能のＥＣＵであるエンジンＥＣＵ１４が有している。これによって、シーケンスエラーの検出のカバー率、すなわちシーケンスエラーが起こることを検出できる対象の分担処理機能の、全体の分担処理機能に対する比率が高くなる。
【０１２３】
また、各分担処理手段は、複数のグループに分かれ、当該グループ毎に所定の加算の値が異なる。具体的には、上記一連の処理の分担処理機能のうち、アクセル出力機能は、チェックコードにαを加算するようになっており、他の分担処理機能から成るグループは、チェックコードにβを加算するようになっている。これによって、シーケンスチェック機能において、どのグループにシーケンスエラーがあったかを特定することが可能となる。
【０１２４】
また、チェックコードの付加のための、アクセル出力機能の図６のステップ６１０、６３０、６５０の各処理は、図６の処理中で離れて実行されている。すなわち、これらの処理の間に他の処理が挟まれることで、これらの処理が連続的に実行されないようになっている。このように、チェックコードのための処理を分担処理機能中に点在させることにより、局所的に発生するエラーの検出ができる可能性を高めることができる。
【０１２５】
なお、上記した実施形態においては、シーケンスチェック機能は、パワートレインコーディネータからの、一連の処理の前回の繰り返しにおける出力信号中のチェックコードと、当該パワートレインコーディネータからの、一連の処理の今回の繰り返しにおける出力信号中のチェックコードとの値の差が所定値αでないことに基づいて、シーケンスエラーがあったことを検出するようになっているが、必ずしもこのようになっている必要はない。
【０１２６】
例えば、シーケンスチェック機能は、所定の順序の最初となる分担処理機能（本実施形態においてはアクセル出力機能）からの出力信号中のチェックコードと、所定の順序の最後の１つ前となる分担処理機能（本実施形態においてはパワートレインコーディネータ）からの出力信号中のチェックコードの値の差が所定値でないことに基づいて、シーケンスエラーがあったことを検出するようになっていてもよい。
【０１２７】
図１１に、このような例を実現するシーケンスチェック機能の動作タイミングの図を示す。図１１の上部は、図１０と同内容を示すものである。図１１の下部に示す折れ線６１、６２、６３は図１０の同じ符号を有する折れ線と同等の意味を有する。
【０１２８】
このプログラムで表されるシーケンスチェック機能は、図１０の場合と同様、通常エンジンＥＣＵ１４のマイコンのＣＰＵによって実行されるようになっているが、動作時期は、図１１の長方形７２〜７５に示す様な時期、すなわち、通常であればアクセル出力機能の動作の直後、およびパワートレインコーディネータからデータを受信する直後の時期に、周期的に実行される。
【０１２９】
以上のようなタイミングで実行されるシーケンスチェック機能は、例えば図１１の長方形７５の時期に動作した場合は、図１１における三角形６８のタイミングにおけるチェックコードが前回のチェックコードＬとなり、三角形７１の示すタイミングにおけるシーケンスチェックが今回のチェックコードＭとなる。
【０１３０】
シーケンスエラーがない場合、図１１に示す通り、このときの値の差は常に４βとなり、図８のシーケンスチェック機能において、Ｋを４βと設定しておくことで、ステップ８３０によって、シーケンスエラーがないとして処理される。そして、シーケンスエラーが長方形３３、３５、３８のいずれかの段階で発生していた場合、この値は４βより小さい値となり、機能のステップ８３０、８４０によって、シーケンスエラーがあるとして処理される。
【０１３１】
なお、この場合、ステップ８３０、ステップ８４０の処理を行うのは長方形７３、７５の様に、一連の処理の所定の順序の最後の１つ前となる分担処理機能からのチェックコードを今回のチェックコードとする場合のみとし、長方形７２、７４の様に、所定の順序の最初となる分担処理機能においては、これらの処理をスキップするようにする。
【０１３２】
また、本実施形態においては、チェックコードは、順次所定の値αまたはβが加算されるようになっているが、必ずしもこのようになっている必要はない。例えば、チェックコードは、複数のフラグを含み、各分担処理機能においては、複数のフラグの所定の一部を所定の状態にするように当該チェックコードを加工するようになっていてもよい。
【０１３３】
図１２および図１３に、このように複数のフラグを有するようなチェックコード４６の例を示す。図１２は、一連の処理の分担処理機能のそれぞれに、１ビットのフラグを割り当て、また、一連の処理の繰り返しにおける今回の回数の情報に複数ビットを割り当てたチェックコード４６である。このようなチェックコード４６を用いる場合、図６または図７の処理を行う各分担処理機能は、チェックコードに所定の値を加算する処理の代わりに、チェックコード中の自己に割り当てられた分担処理機能の部分を０から１に変化させる。また、一連の処理の最初の分担処理機能は、チェックコードの繰り返し番号の部分に、当該一連の処理の繰り返しにおいて、今回が何回目かの情報を含める。そして、一連の処理の最後において、シーケンスチェック機能が、それぞれのフラグが１になっているか否かで、シーケンスエラーがあったか否かを判定する。
【０１３４】
図１３は、一連の処理中の分担処理機能に関わらず、車両制御システム中の全て（または一部）の機能毎に１ビットのフラグが割り当てられているような場合を示す。この場合においては、当該一連の処理において用いられないようなＥＣＵ内の機能についても、チェックコード内に１つのビットを割り宛てるようになっている。このようにすれば、下記の様に、車両制御システムが複数の一連の処理を行う場合には、それぞれの一連の処理毎にについて新たにチェックコードを割り当てる必要がない。
【０１３５】
また、上記した実施形態においては、車両制御システムにおける一つの一連の処理機能の分担処理について説明したが、車両制御システムが、複数種類の一連の処理機能を有していてもよい。また、一連の処理機能において、センサからデータを読み込む分担処理機能が複数あり、それらのデータが車両コーディネータ等の上位のレイヤの分担処理機能において総合して処理されるようになっていてもよい。
【０１３６】
例えば、図示しないステアリングＥＣＵ中の分担処理機能が、ステアリングセンサの値を読み込み、この値のデータが車両コーディネータに送信され、車両コーディネータにおいては、アクセルセンサの読み込み値、およびこのステアリングセンサの読み込み値に基づいて目標トルクを決めるようになっているような、データの受け渡しの流れの合流があってもよい。
【０１３７】
このような合流がある場合、複数のセンサ読み込みの制御機能のそれぞれが、別個のチェックコードを生成し、その複数のチェックコードは、データの受け渡しの流れが合流した分担処理機能の後段においては、１つのデータフレーム内に含まれる様になっていてもよい。図１４に、チェックコードを２個含むデータフレームの一例を示す。データフレーム中に、チェックコード４６、４８が含まれ、それぞれの後に、それらに対応するデータ４７、４９が続くようになっている。このように複数のチェックコードを含む場合、それぞれのチェックコードについて別個のシーケンスチェック機能を車両制御システムが有していてもよい。
【０１３８】
また、このような合流がある場合、複数の一連の処理のうち、信頼性が求められる度合いが最も高い一連の処理についてのチェックコードのみを、１つのデータフレームに残すようにしてもよい。図１５に、信頼性が求められる度合いが最も高い一連の処理のみについてチェックコード含むデータフレームの一例を示す。データフレーム中に、チェックコード４６が含まれ、その後に、信頼性が求められる度合いが最も高い一連の処理についてのデータ９５、および信頼性が求められる度合いが低い一連の処理についてのデータ９６が続くようになっている。
【０１３９】
このようにすることで、２つ以上チェックコードを有する場合に比べて、１データフレーム中のチェックコードの量が少なくて済む。
【０１４０】
また、一連の処理が複数あり、それら複数の処理において、同じセンサの値を取り込む分担処理機能がそれらの一連の処理の分担処理を担っている場合、当該分担処理機能が出力毎に加算させるチェックコードの値（上記した実施形態においては値α）は、各一連の処理毎に変化するようになっていてもよい。また、その場合、変化するチェックコードの初期値（上記した実施形態においては値Ｎ）も、各一連の処理毎に変化するようになっていてもよい。
【０１４１】
また、一連の処理中の分担処理機能の全てが、チェックコードを増やす処理を行う必要は必ずしもない。それらの分担処理機能の一部の特定分担処理機能（特定分担処理手段）がそのようなチェックコードの加工の機能を有しているだけであってもよい。なお、本実施形態においては、一連の処理中の分担処理機能の全てが、この特定分担処理機能となっている。
【０１４２】
また、シーケンスチェック機能は必ずしもスロットル制御ＥＣＵ１２にある必要はなく、ＥＣＵ１１〜１５のどこにあってもよい。
【０１４３】
また、車両制御システムは、シーケンスチェック機能を複数有し、これら複数のシーケンスチェック機能は、それぞれ異なる分担処理機能が有しているようにしてもよい。すなわち、シーケンスチェック機能を２重系としてもよい。これによって、１つのシーケンスチェック機能が何らかの原因で動作しなくとも、他のシーケンスチェック機能が動作するので、システムの堅牢性が高まる。
【図面の簡単な説明】
【０１４４】
【図１】本発明の実施形態に係る車両制御システムの制御体系図である。
【図２】車両制御システムを実現するための車内通信ネットワークの構成を概略的に示す図である。
【図３】車両制御システム内の各ＥＣＵが共通して有する基本的な構成を示す図である。
【図４】車両制御システムが有する各ＥＣＵの諸機能が行う分担処理の流れを視覚的に示す図である。
【図５】本実施形態における時分割多重通信による信号の受け渡しのタイミングを示す図である。
【図６】エンジンＥＣＵ１４のアクセル出力機能のプログラムを示すフローチャートである。
【図７】車両安定制御コーディネータ、車両運動コーディネータ、車両コーディネータ、パワートレインコーディネータ、モータ制御機能、エンジン制御機能のプログラムを示すフローチャートである。
【図８】シーケンスチェック機能のためのプログラムのフローチャートである。
【図９】チェックコード４６を含むデータフレームの構成を示す図である。
【図１０】一連の処理において各分担処理が受け渡し合うデータ中のチェックコードの値の時系列的な変化を示す図である。
【図１１】一連の処理において各分担処理が受け渡し合うデータ中のチェックコードの値の時系列的な変化を示す図である。
【図１２】複数のフラグを有するチェックコード４６の一例を示す図である。
【図１３】複数のフラグを有するチェックコード４６の一例を示す図である。
【図１４】チェックコードを複数有するデータフレームの一例を示す図である。
【図１５】信頼性の要求される度合いの高い一連の処理についてのチェックコードのみを有するデータフレームの一例を示す図である。
【図１６】車両制御システムにおける、所定のセンサ入力の値に基づいてアクチュエータを制御する一連の処理の機能説明図である。
【図１７】一連の処理の繰り返しにおける段階Ａ、段階Ｂ、段階Ｃの実行タイミングを表すタイミング図である。
【符号の説明】
【０１４５】
１０…シリアル通信線、１１…車両制御ＥＣＵ、１２…スロットル制御ＥＣＵ、
１３…トランスミッション制御ＥＣＵ、１４…エンジンＥＣＵ、１５…ＡＢＳＥＣＵ、
４５…メッセージＩＤ、４６…チェックコード、４７…データ、５３…車内ＬＡＮ、
５４…センサ、５５…メモリ、５６…メモリ、５７…アクチュエータ。
【図１】
2005075024.tif 000003
【図２】
2005075024.tif 000004
【図３】
2005075024.tif 000005
【図４】
2005075024.tif 000006
【図５】
2005075024.tif 000007
【図６】
2005075024.tif 000008
【図７】
2005075024.tif 000009
【図８】
2005075024.tif 000010
【図９】
2005075024.tif 000011
【図１０】
2005075024.tif 000012
【図１１】
2005075024.tif 000013
【図１２】
2005075024.tif 000014
【図１３】
2005075024.tif 000015
【図１４】
2005075024.tif 000016
【図１５】
2005075024.tif 000017
【図１６】
2005075024.tif 000018
【図１７】
2005075024.tif 000019