(57)【要約】【課題】簡素化された制御装置の構成であっても、プログラム更新に失敗した場合に安全に復旧することが可能となる制御システム、及びプログラム更新方法を提供する。【解決手段】ＥＣＵ１ａの制御部１０ａは、診断装置４からプログラム更新要求を受信した場合、記憶部１１ａに記憶してある制御プログラム１２ａを分割し、分割後の制御プログラムを、ＥＣＵ１ｂ及びＥＣＵ１ｃへ夫々送信し、ＥＣＵ１ｂ及びＥＣＵ１ｃにて分割後の制御プログラムを受信し、記憶部１１ｂ及び記憶部に記憶する。これにより、旧プログラムがＥＣＵ１ｂ及びＥＣＵ１ｃに分散して退避される。ＥＣＵ１ａの制御部１０ａは、診断装置４から新たなコンピュータプログラムを受信して更新を実行するが、更新に失敗した場合に、ＥＣＵ１ｂ及びＥＣＵ１ｃに退避されていた分割後の制御プログラムを受信して再合成し、記憶部１１ｂに再記憶する。【選択図】図１
2013246718.tif 000002
【特許請求の範囲】
【請求項１】
情報を記憶する記憶手段と、該記憶手段に記憶してあるコンピュータプログラムに基づき制御対象に対する制御処理を実行するプロセッサと、情報を送受信する通信手段とを備える３つ以上の複数の制御装置が通信線に接続されており、前記複数の制御装置の内のいずれかがプログラム更新要求を受信し、新たなコンピュータプログラムを受信し、受信したコンピュータプログラムを前記記憶手段に記憶させてプログラムを更新することが可能な制御システムにおいて、
プログラム更新要求を受信した制御装置は、
前記新たなコンピュータプログラムを受信する前に、前記記憶手段に記憶しているコンピュータプログラムを分割する手段と、
前記通信手段により、分割後のコンピュータプログラムを、他の複数の制御装置へ夫々送信せしめる手段と、
前記記憶手段における前記新たなコンピュータプログラムの更新処理の成否を判断する手段と、
該手段が否と判断した場合、前記他の複数の制御装置へ、送信してある分割後のコンピュータプログラムの送信要求を、前記通信手段により送信せしめる手段と、
前記他の複数の制御装置から送信される前記分割後のコンピュータプログラムを、前記通信手段により受信する手段と、
各制御装置から受信した前記分割後のコンピュータプログラムに基づき、元のコンピュータプログラムを再合成する手段と、
再合成したコンピュータプログラムを前記記憶手段に再記憶させる手段と
を備え、
前記他の制御装置は、
前記通信手段により、前記分割後のコンピュータプログラムをプログラム更新対象の制御装置から受信する手段と、
受信した前記分割後のコンピュータプログラムを前記記憶手段に一時的に記憶する手段と、
前記送信要求を受信した場合、前記分割後のコンピュータプログラムをプログラム更新対象の制御装置へ前記通信手段により送信せしめる手段と
を備えることを特徴とする制御システム。
【請求項２】
各制御装置へ、記憶手段における空き容量を問い合わせる手段と、
問い合わせに対する応答を受信する応答受信手段と
を備え、
更新要求を受信した制御装置は、前記応答受信手段が受信した応答に含まれる各制御装置の記憶手段における空き容量の情報に基づき、他の複数の制御装置へ、コンピュータプログラムを分割して前記通信手段により送信させるようにしてあり、
各制御装置は、
前記空き容量の問い合わせを、前記通信手段により受信する手段と、
前記問い合わせを受信した場合、自身の記憶手段における空き容量を算出する手段と、
算出した空き容量の情報を含む応答メッセージを、前記通信手段により送信せしめる手段と
を備えることを特徴とする請求項１に記載の制御システム。
【請求項３】
更新要求を受信した制御装置は、
前記記憶手段に記憶しているコンピュータプログラムのデータ量を算出する手段と、
算出したデータ量を前記応答受信手段へ送信する手段と
を備え、
前記応答受信手段は、
各制御装置の記憶手段における空き容量を加算する手段と、
加算結果と、各制御装置の記憶手段における空き容量の情報に基づき、複数の送信先を決定する手段と
を更に備えることを特徴とする請求項２に記載の制御システム。
【請求項４】
前記応答受信手段は、
各制御装置から受信した応答を受信した場合、受信した応答に含まれる各制御装置の記憶手段における空き容量の情報に基づき、各制御装置の記憶手段における空き容量をリスト化したテーブルを作成する手段を更に備えること
を特徴とする請求項２又は３に記載の制御システム。
【請求項５】
情報を記憶する記憶手段と、該記憶手段に記憶してあるコンピュータプログラムに基づき制御対象に対する制御処理を実行するプロセッサと、情報を送受信する通信手段とを備えて通信線に接続されている３つ以上の複数の制御装置を含む制御システムにて、前記複数の制御装置の内のいずれかが、プログラム更新要求及び更新対象の新たなコンピュータプログラムを受信し、前記記憶手段に記憶されているコンピュータプログラムを前記新たなコンピュータプログラムに更新する方法において、
プログラム更新要求を受信した制御装置は、前記新たなコンピュータプログラムを受信する前に、前記記憶手段に記憶しているコンピュータプログラムを分割し、
分割後のコンピュータプログラムを他の複数の制御装置へ夫々前記通信手段により送信し、
前記他の複数の制御装置は、
プログラム更新対象の制御装置から送信された分割後のコンピュータプログラムを前記通信手段により受信し、
受信した分割後のコンピュータプログラムを記憶手段に記憶させ、
前記プログラム更新要求を受信した制御装置は、新たなコンピュータプログラムを受信し、
前記記憶手段にて、受信した新たなコンピュータプログラムの更新処理を試行し、
前記更新処理の成否を判断し、
否と判断した場合、前記他の複数の制御装置へ、送信してある分割後のコンピュータプログラムの送信要求を前記通信手段により送信し、
前記他の複数の制御装置は、
前記送信要求を前記通信手段により受信し、
前記通信手段により、記憶してある分割後のコンピュータプログラムをプログラム更新対象の制御装置へ送信し、
プログラム更新対象の制御装置は、
前記他の複数の制御装置から各送信される分割後のコンピュータプログラムを、前記通信手段により受信し、
受信した分割後のコンピュータプログラムに基づき、元のコンピュータプログラムを再合成し、
再合成したコンピュータプログラムを前記記憶手段に再記憶させる
ことを特徴とするプログラム更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶しているコンピュータプログラムに基づきアクチュエータなどの制御対象に対する処理を実行し、且つ、相互に通信を行なう複数の制御装置を含む制御システムにおけるプログラム更新に関する。特に、安全にプログラム更新を実行することと、各制御装置の構成の簡素化とを両立することを可能とする制御システム及びプログラム更新方法に関する。
【背景技術】
【０００２】
コンピュータプログラムに基づき制御対象に関する処理を実行する制御装置を複数用いて制御を実行する制御システムが各分野で利用されている。特に車両制御の分野では、車両内に制御装置として多数のＥＣＵが配され、各ＥＣＵが車載ＬＡＮを介して情報を送受信し、協調・連携して多様な処理を行なう構成が一般的となっている。
【０００３】
制御システムにて機能が追加される場合、又はプログラムの不具合を解消すべき場合など、制御装置のプロセッサが実行するコンピュータプログラムの更新が必要となるときがある。プログラムの更新は、特定の制御装置が外部から有線又は無線通信にて更新プログラムを受信し、制御装置が相互にデータを交換するための既存の通信手段を利用して、特定の制御装置が対象装置へ更新プログラムを送信し、プログラムを更新させる方法が採用される。
【０００４】
車両制御の分野でも、プログラム更新は例えばディーラーなどにて、特定の診断用装置が、ＥＣＵを介して又は直接的に車載ＬＡＮに接続可能に構成されており、診断用装置が更新プログラムを対象装置へ送信して実現されている。
【０００５】
このように制御システムにてプログラムを更新する場合、例えば、対象装置が更新プログラムを受信し、旧プログラムが記憶してある記憶領域に、そのまま受信した更新プログラムを上書きする構成がある。この場合、書き換え中に通信途絶、バグ又は暴走、記憶容量不足等によって何らかの支障が生じたときには、旧プログラムも使用できず、復旧が不可能となることが考えられる。
【０００６】
このような問題に対して特許文献１では、各ＥＣＵが、プログラム格納エリア（メモリ）として副格納エリアと主格納エリアとを備える構成としてある。特許文献１に開示されている構成では、受信した更新プログラムを副格納エリアへ書き込み、書き込みが成功した場合に、主格納エリアと副格納エリアとを切り替え、書き込みが失敗した場合には切り替えを行なわないことにより、コンピュータプログラムに基づく動作が不能に陥ることを防ぐことができる。
【０００７】
また、特許文献２では、メモリに非書き換え領域と書き換え領域とを設け、非書き換え領域に、書き換えファームウェアと通信機能と、車両が走行するために必要となる情報を取得する機能を実装したプログラムを格納しておき、書き換え領域に、制御プログラムと正常／異常を判断するための情報を格納する構成とする制御システムが開示されている。特許文献２に開示されている構成では、プログラムの書き換えに失敗した場合でも、非書き換え領域に実装されている機能は最低限動作するので、車両の走行を維持することが可能である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−３０１９６０号公報
【特許文献２】特開２００９−０８７１０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１及び２に開示されている構成により、制御システムが完全に動作不能となることを回避することは可能である。しかしながら、特許文献２に開示されている構成では、最低限の動作が保証されるのみであって、多くの機能が失われてしまう。また、特許文献１に開示されている構成では、各制御装置にてプログラム格納のためのメモリの容量が２倍必要であり、メモリ搭載量の増加により、制御システムはコスト増となる。車両制御の分野では特に、コスト削減は勿論、制御システム全体の軽量化が求められる。したがって、各制御装置の構成は簡素化すべきであり、メモリ搭載量を２倍とすることは望ましくない。
【００１０】
本発明は斯かる事情に鑑みてなされたものであり、簡素化された制御装置の構成であっても、プログラム更新に失敗した場合に安全に復旧することが可能となる制御システム、及びプログラム更新方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係る制御システムは、情報を記憶する記憶手段と、該記憶手段に記憶してあるコンピュータプログラムに基づき制御対象に対する制御処理を実行するプロセッサと、情報を送受信する通信手段とを備える３つ以上の複数の制御装置が通信線に接続されており、前記複数の制御装置の内のいずれかがプログラム更新要求を受信し、新たなコンピュータプログラムを受信し、受信したコンピュータプログラムを前記記憶手段に記憶させてプログラムを更新することが可能な制御システムにおいて、プログラム更新要求を受信した制御装置は、前記新たなコンピュータプログラムを受信する前に、前記記憶手段に記憶しているコンピュータプログラムを分割する手段と、前記通信手段により、分割後のコンピュータプログラムを、他の複数の制御装置へ夫々送信せしめる手段と、前記記憶手段における前記新たなコンピュータプログラムの更新処理の成否を判断する手段と、該手段が否と判断した場合、前記他の複数の制御装置へ、送信してある分割後のコンピュータプログラムの送信要求を、前記通信手段により送信せしめる手段と、前記他の複数の制御装置から送信される前記分割後のコンピュータプログラムを、前記通信手段により受信する手段と、各制御装置から受信した前記分割後のコンピュータプログラムに基づき、元のコンピュータプログラムを再合成する手段と、再合成したコンピュータプログラムを前記記憶手段に再記憶させる手段とを備え、前記他の制御装置は、前記通信手段により、前記分割後のコンピュータプログラムをプログラム更新対象の制御装置から受信する手段と、受信した前記分割後のコンピュータプログラムを前記記憶手段に一時的に記憶する手段と、前記送信要求を受信した場合、前記分割後のコンピュータプログラムをプログラム更新対象の制御装置へ前記通信手段により送信せしめる手段とを備えることを特徴とする。
【００１２】
本発明に係る制御システムは、各制御装置へ、記憶手段における空き容量を問い合わせる手段と、問い合わせに対する応答を受信する応答受信手段とを備え、更新要求を受信した制御装置は、前記応答受信手段が受信した応答に含まれる各制御装置の記憶手段における空き容量の情報に基づき、他の複数の制御装置へ、コンピュータプログラムを分割して前記通信手段により送信させるようにしてあり、各制御装置は、前記空き容量の問い合わせを、前記通信手段により受信する手段と、前記問い合わせを受信した場合、自身の記憶手段における空き容量を算出する手段と、算出した空き容量の情報を含む応答メッセージを、前記通信手段により送信せしめる手段とを備えることを特徴とする。
【００１３】
本発明に係る制御システムは、更新要求を受信した制御装置は、前記記憶手段に記憶しているコンピュータプログラムのデータ量を算出する手段と、算出したデータ量を前記応答受信手段へ送信する手段とを備え、前記応答受信手段は、各制御装置の記憶手段における空き容量を加算する手段と、加算結果と、各制御装置の記憶手段における空き容量の情報に基づき、複数の送信先を決定する手段とを更に備えることを特徴とする。
【００１４】
本発明に係る制御システムは、前記応答受信手段は、各制御装置から受信した応答を受信した場合、受信した応答に含まれる各制御装置の記憶手段における空き容量の情報に基づき、各制御装置の記憶手段における空き容量をリスト化したテーブルを作成する手段を更に備えることを特徴とする。
【００１５】
本発明に係るプログラム更新方法は、情報を記憶する記憶手段と、該記憶手段に記憶してあるコンピュータプログラムに基づき制御対象に対する制御処理を実行するプロセッサと、情報を送受信する通信手段とを備えて通信線に接続されている３つ以上の複数の制御装置を含む制御システムにて、前記複数の制御装置の内のいずれかが、プログラム更新要求及び更新対象の新たなコンピュータプログラムを受信し、前記記憶手段に記憶されているコンピュータプログラムを前記新たなコンピュータプログラムに更新する方法において、プログラム更新要求を受信した制御装置は、前記新たなコンピュータプログラムを受信する前に、前記記憶手段に記憶しているコンピュータプログラムを分割し、分割後のコンピュータプログラムを他の複数の制御装置へ夫々前記通信手段により送信し、前記他の複数の制御装置は、プログラム更新対象の制御装置から送信された分割後のコンピュータプログラムを前記通信手段により受信し、受信した分割後のコンピュータプログラムを記憶手段に記憶させ、前記プログラム更新要求を受信した制御装置は、新たなコンピュータプログラムを受信し、前記記憶手段にて、受信した新たなコンピュータプログラムの更新処理を試行し、前記更新処理の成否を判断し、否と判断した場合、前記他の複数の制御装置へ、送信してある分割後のコンピュータプログラムの送信要求を前記通信手段により送信し、前記他の複数の制御装置は、前記送信要求を前記通信手段により受信し、前記通信手段により、記憶してある分割後のコンピュータプログラムをプログラム更新対象の制御装置へ送信し、プログラム更新対象の制御装置は、前記他の複数の制御装置から各送信される分割後のコンピュータプログラムを、前記通信手段により受信し、受信した分割後のコンピュータプログラムに基づき、元のコンピュータプログラムを再合成し、再合成したコンピュータプログラムを前記記憶手段に再記憶させることを特徴とする。
【００１６】
本発明では、更新対象のコンピュータプログラムを記憶している１つの制御装置から、他の複数の制御装置へ、記憶されていたコンピュータプログラムが分割されて送信され、各制御装置にて記憶され、退避される。更新対象の制御装置にて、コンピュータプログラムの更新処理の成否が判断され、否と判断された場合に、他の複数の制御装置に送信されて退避してあった分割後のコンピュータプログラムが他の制御装置から夫々送信され、集約されて再合成され、再記憶される。更新に失敗した場合に、更新対象の旧コンピュータプログラムは複数の制御装置に分散させて退避されており、失われない。
【００１７】
本発明では、各制御装置の記憶手段における空き容量の情報を各制御装置から受信して集約する応答受信手段が更に備えられる。複数の制御装置へ分散してコンピュータプログラムを退避させるので、各制御装置の記憶手段における空き容量を集約管理する機能が別途備えられる構成とすることが好ましい。なお、空き容量の情報を受信する応答受信手段は、制御システム内に専用の装置が加えられて当該装置にて実現されてもよいし、制御システム内のいずれかの制御装置、又は中継装置などの特定の装置内で新たな機能として実現されてもよい。なお、いずれの他の複数の制御装置へコンピュータプログラムを退避させるかは、応答受信手段によって得られる各制御装置の空き容量の情報に基づき、更新対象の制御装置にて決定してもよいし、空き容量の情報を受信した応答受信手段にて決定してもよい。
【００１８】
本発明では、各制御装置の記憶手段における空き容量の情報を集約している応答受信手段が、コンピュータプログラムが複数の他の制御装置のいずれへ退避されるかを決定する機能をも持つ。応答受信手段にて情報を集約しているので、更新対象のコンピュータプログラムのデータ量を取得できれば、効率的に分散させる送信先を決定することが可能となる。応答受信手段にて、更新対象の制御装置から更新対象の旧コンピュータプログラムのデータ量の情報を取得し、取得した退避すべきコンピュータプログラムのデータ量と、各制御装置の記憶手段における空き容量の加算結果とに基づき、コンピュータプログラムの退避先である複数の他の制御装置が決定される。
【００１９】
本発明では、空き容量の情報を集約する応答受信手段にて、各制御装置の記憶手段における空き容量をリスト化したテーブルが作成される。更新対象の制御装置が当該テーブルを参照できるようにしてもよいし、外部装置から当該テーブルを参照できるようにしてもよい。外部装置から当該テーブルを参照できれば、いずれの制御装置に分割後のコンピュータプログラムが記憶されているかが外部から参照可能である。
【発明の効果】
【００２０】
本発明による場合、更新対象の旧コンピュータプログラムは、夫々の記憶部の記憶容量が比較的小さい複数の他の制御装置に一旦、分散して退避させられ、その間に制御プログラムの更新が試行される。失敗した場合でも旧コンピュータプログラムは失われず、各制御装置から集約して復旧することが可能である。したがって、最小限のメモリしか有しない簡素化された制御装置からなる制御システムであっても、プログラム更新に失敗した場合に安全に復旧することが可能となる。
【図面の簡単な説明】
【００２１】
【図１】実施の形態１における制御システムの構成を示すブロック図である。
【図２】実施の形態１における診断装置による処理手順の一例を示すフローチャートである。
【図３】実施の形態１における制御システムにおいてＥＣＵの制御プログラムが更新される際の処理手順の一例を示すフローチャートである。
【図４】実施の形態１における制御システムにおいてＥＣＵの制御プログラムが更新される際の処理手順の一例を示すフローチャートである。
【図５】実施の形態１における制御システムにおいてＥＣＵの制御プログラムが更新される際の処理手順の一例を示すフローチャートである。
【図６】実施の形態１におけるプログラム退避制御装置の制御部にて作成されるテーブルの内容例を示す説明図である。
【図７】実施の形態２におけるＥＣＵの制御プログラムが更新される際の処理手順の一例を示すフローチャートである。
【図８】実施の形態２におけるＥＣＵの制御プログラムが更新される際の処理手順の一例を示すフローチャートである。
【図９】実施の形態２におけるＥＣＵの制御プログラムが更新される際の処理手順の一例を示すフローチャートである。
【図１０】実施の形態２におけるＥＣＵの制御プログラムが更新される際の処理手順の一例を示すフローチャートである。
【図１１】実施の形態２におけるプログラム退避制御装置の制御部にて作成されるテーブルの内容例を示す説明図である。
【図１２】変形例における制御システムの構成を示すブロック図である。
【発明を実施するための形態】
【００２２】
以下、本発明をその実施の形態を示す図面に基づいて具体的に説明する。
なお、以下の実施の形態では本発明を、車載機器を制御する制御システムに適用した場合の例を挙げて説明する。
【００２３】
（実施の形態１）
図１は、実施の形態１における制御システムの構成を示すブロック図である。制御システムは、複数のＥＣＵ１ａ，１ｂ，１ｃと、プログラム退避制御装置２と、通信線３とを含む。ＥＣＵ１ａには、外部装置である診断装置４が接続可能である。なお通信線３に、診断装置４の通信線２への接続を可能とする外部コネクタが接続されていてもよい。通信線３に接続されているＥＣＵはＥＣＵ１ａ，１ｂ，１ｃのみでなく、更に複数のＥＣＵ１，１，…が接続されてよい。
【００２４】
通信線３には、ＥＣＵ１ａ，１ｂ，１ｃ、及びプログラム退避制御装置２がいずれもバス型に接続されている。通信線３を介した通信のプロトコルはＣＡＮ（Controller Area Network）である。通信線３に接続されるＥＣＵ１ａ，１ｂ，１ｃは、ＣＳＭＡ（Carrier Sense Multiple Access with Collision Detection）方式により情報を送受信する。通信線３に送信される信号は、ＥＣＵ１ａ、ＥＣＵ１ｂ、ＥＣＵ１ｃ及びプログラム退避制御装置２のいずれでも受信することが可能である。
【００２５】
ＥＣＵ１ａは、記憶部１１ａに記憶されているコンピュータプログラムに基づき処理を行なうプロセッサにより動作する電子制御装置である。ＥＣＵ１ａは、制御部１０ａと、記憶部１１ａと、一時記憶部１３ａと、通信部１４ａと、外部コネクタ１５ａとを備える。
【００２６】
制御部１０ａには、ＣＰＵ（Central Processing Unit）を利用する。記憶部１１ａには、フラッシュメモリ、ＥＥＰＲＯＭ（登録商標、Electrically Erasable and Programmable Read Only Memory）などの不揮発性メモリであって書き換えが可能な記憶媒体が用いられ、制御部１０ａが読み出して実行する制御プログラム１２ａが記憶されている。つまり、制御プログラム１２ａは書き換え（更新）が可能である。なお、車載の制御システムに搭載されるＥＣＵ１ａにおける記憶部１１ａの記憶容量は、ＥＣＵ１ａを簡素で安価な構成とするために比較的小さい。コンピュータプログラムの実行ファイルのデータ量は様々ではあるが、数〜数十キロバイト程度であることが考えられる制御プログラム１２ａと、他の制御用の条件、固定値などの各種情報を記憶する程度で、余分な記憶容量は用意されていない。
【００２７】
一時記憶部１３ａには、ＳＲＡＭ（Static Random Access Memory）、ＤＲＡＭ（Dynamic Random Access Memory）などが用いられ、制御部１０ａの動作により発生した情報、記憶部１１ａから読み出された各種情報、制御プログラム１２ａの実行コードなどが一時的に記憶される。一時記憶部１３ａは、ＣＰＵである制御部１０ａ内蔵のメモリでよい。
【００２８】
通信部１４ａは、通信線３を介した通信を実現する。即ち実施の形態１では通信部１４ａはＣＡＮプロトコルに準じ、ＣＡＮコントローラ及びＣＡＮトランシーバを含む。制御部１０ａは、通信部１４ａにより通信線３を介して他のＥＣＵ１ｂ，１ｃ、及びＥＣＵ１，１，…との間でメッセージ及びデータの送受信が可能である。
【００２９】
なお、ＥＣＵ１ａにおける制御部１０ａ、記憶部１１ａ、一時記憶部１３ａ及び通信部１４ａの一部（コントローラ）は、マイクロコンピュータとして構成されてもよい。
【００３０】
外部コネクタ１５ａは、診断装置４との接続インタフェースである。外部コネクタ１５ａに診断装置４が接続されている間、制御部１０ａは、外部コネクタ１５ａを介して診断装置４との間で通知及びデータの入出力が可能である。
【００３１】
ＥＣＵ１ｂは、ＥＣＵ１ａと同様に、記憶部１１ｂに記憶されているコンピュータプログラムに基づき処理を行なうプロセッサにより動作する電子制御装置である。ＥＣＵ１ｂは、制御部１０ｂと、記憶部１１ｂと、一時記憶部１３ｂと、通信部１４ｂとを備える。
【００３２】
制御部１０ｂには、ＣＰＵを利用する。記憶部１１ｂには、フラッシュメモリ、ＥＥＰＲＯＭ（登録商標）などの不揮発性メモリであって書き換えが可能な記憶媒体が用いられる。記憶部１１ｂの記憶容量は、ＥＣＵ１ａと同様に、ＥＣＵ１ｂを簡素で安価な構成とするために比較的小さい。なお記憶部１１ｂには、制御部１０ｂが読み出す図示しないコンピュータプログラムが記憶されていてもよい。
【００３３】
一時記憶部１３ｂには、ＳＲＡＭ、ＤＲＡＭなどが用いられ、制御部１０ｂの動作により発生した情報などが一時的に記憶される。一時記憶部１３ｂは、ＣＰＵである制御部１０ｂ内蔵のメモリでよい。
【００３４】
通信部１４ｂは、通信線３を介した通信を実現する。通信部１４ｂは、ＣＡＮプロトコルに準じ、ＣＡＮコントローラ及びＣＡＮトランシーバを含む。制御部１０ｂは、通信部１４ｂにより通信線２を介して他のＥＣＵ１ａ、ＥＣＵ１ｃ、及び他のＥＣＵ１，１，…、並びにプログラム退避制御装置２との間でデータの送受信が可能である。
【００３５】
なお、ＥＣＵ１ｂにおける制御部１０ｂ、記憶部１１ｂ、一時記憶部１３ｂ及び通信部１４ｂの一部（コントローラ）は、マイクロコンピュータとして構成されてもよい。
【００３６】
ＥＣＵ１ｃの構成は、ＥＣＵ１ｂと同様であるので、内部構成の図示及び詳細な説明を省略する。
【００３７】
プログラム退避制御装置２は、ＥＣＵ１ａ，１ｂ，１ｃと同様に、記憶部２１に記憶されているコンピュータプログラムに基づき処理を行なうプロセッサにより動作する電子制御装置である。プログラム退避制御装置２は、制御部２０と、記憶部２１と、一時記憶部２２と、通信部２３とを備える。
【００３８】
制御部２０には、ＣＰＵを利用する。記憶部２１には、フラッシュメモリ、ＥＥＰＲＯＭ（登録商標）などの不揮発性メモリを用いる。一時記憶部２２には、ＳＲＡＭ、ＤＲＡＭ等が用いられ、制御部２０の動作により発生した情報が一時的に記憶される。
【００３９】
通信部２３は、通信線３を介した通信を実現する。通信部２３は、ＣＡＮプロトコルに準じ、ＣＡＮコントローラ及びＣＡＮトランシーバを含む。制御部２０は、通信部２３により通信線３を介して他のＥＣＵ１ａ，１ｂ，１ｃ、及び他のＥＣＵ１，１，…との間でデータの送受信が可能である。
【００４０】
車載の制御システムにおけるＥＣＵ１ａ，１ｂ，１ｃ及び他のＥＣＵ１，１，…、並びにプログラム退避制御装置２は、車両の組み立て完了後は、車体の床、ボンネットの中などに配されて、ＥＣＵ１ａ，１ｂ，１ｃ及び他のＥＣＵ１，１，…、並びにプログラム退避制御装置２間の通信線３及び信号線などを含むワイヤーハーネスが、車両の車体枠の中などに張り巡らされて配されている。したがって、ＥＣＵ１ａ，１ｂ，１ｃ等は、車外からアクセスすることが困難であるが、ＥＣＵ１ａの外部コネクタ１５ａは、車両の組み立て後に、ＥＣＵ１ａにおける制御プログラム１２ａの書き換え、記憶部１１ａへのデータの記憶、又はＥＣＵ１ａからのデータの読み出しが、後述する外部装置である診断装置３から可能なように、車外からアクセスすることが容易な位置に配置されている。
【００４１】
診断装置４は、車両の点検が行なわれるとき以外は、制御システムに含まれない外部装置である。診断装置４は、検査員などのオペレータが操作することにより、ＥＣＵ１ａの制御プログラム１２ａの更新要求を出力し、更新対象の新たなコンピュータプログラムを出力するように構成されている。
【００４２】
上述のように構成される制御システムにて、ＥＣＵ１ａの制御部１０ａが読み出す制御プログラム１２ａを更新する方法について、詳細を説明する。
【００４３】
図２は、実施の形態１における診断装置４による処理手順の一例を示すフローチャートである。オペレータが診断装置４をＥＣＵ１ａの外部コネクタ１５ａに接続し、プログラム更新操作を実行すると、診断装置４は以下の処理を実行する。
【００４４】
診断装置４は、プログラムの更新要求を出力する（ステップＳ１１）。診断装置４は、プログラムの更新要求を出力した後、更新対象であるＥＣＵ１ａから、後述するように、準備が完了したことを示す通知、又は準備が出来なかったことを示すエラー通知を受信したか否かを判断する（ステップＳ１２）。診断装置４は、通知を受信していないと判断した場合（Ｓ１２：ＮＯ）、処理をステップＳ１２へ戻し、通知を受信したと判断するまで待機する。診断装置４は、ＥＣＵ１ａから何らかの通知を受信したと判断した場合（Ｓ１２：ＹＥＳ）、受信した通知は準備完了の通知であるか否かを判断する（ステップＳ１３）。診断装置４は、準備完了の通知であると判断した場合（Ｓ１３：ＹＥＳ）、更新対象の新たな制御プログラムをＥＣＵ１ａへ出力する（ステップＳ１４）。
【００４５】
診断装置４は、新たな制御プログラムを出力後、更新が完了したことを示す更新完了通知、又は更新が失敗したことを示すエラー通知を、ＥＣＵ１ａから受信したか否かを判断する（ステップＳ１５）。診断装置４は、通知を受信していないと判断した場合（Ｓ１５：ＮＯ）、処理をステップＳ１５へ戻し、受信したと判断するまで待機する。
【００４６】
診断装置４は、更新完了通知を受信したと判断した場合（Ｓ１５：ＹＥＳ）、受信した通知を音声信号にて出力するか、又は図示しない液晶モニタに出力し（ステップＳ１６）、診断装置４におけるプログラムの更新処理を終了する。また、診断装置４はステップＳ１５にてエラー通知を受信したと判断した場合（Ｓ１５：ＹＥＳ）、及びステップＳ１３にてエラー通知であると判断した場合も（Ｓ１３：ＮＯ）、受信したエラー通知を出力し（Ｓ１６）、オペレータに知らせ、診断装置４におけるプログラムの更新処理を中止して終了する。
【００４７】
図２のフローチャートに示した診断装置４における処理に対し、制御システムでは以下のような処理が行なわれる。図３、図４及び図５は、実施の形態１における制御システムにおいてＥＣＵ１ａの制御プログラム１２ａが更新される際の処理手順の一例を示すフローチャートである。オペレータが診断装置４を操作して、制御プログラム１２ａの更新要求を出力させた場合、以下の処理が制御システムにて実行される。
【００４８】
診断装置４が接続されたＥＣＵ１ａの制御部１０ａは、外部コネクタ１５ａにてプログラムの更新要求を受信し（ステップＳ２０１）、制御プログラム１２ａを暗号化変換したときのデータ量を算出する（ステップＳ２０２）。制御部１０ａは、他のＥＣＵ１ｂ，１ｃ，１，…における空き容量を問い合わせるメッセージを、通信部１４ａからプログラム退避制御装置２へ送信する（ステップＳ２０３）。
【００４９】
プログラム退避制御装置２では、通信部２３がメッセージを受信し（ステップＳ２０４）、制御部２０は、他のＥＣＵ１ｂ，１ｃ、及び他のＥＣＵ１，１，…へ空き容量を問い合わせるメッセージを通信部２３から送信する（ステップＳ２０５）。
【００５０】
ＥＣＵ１ｂの通信部１４ｂは、空き容量を問い合わせるメッセージを受信し（ステップＳ２０６）、制御部１０ｂへ通知する。ＥＣＵ１ｂの制御部１０ｂは、当該メッセージに応じて記憶部１１ｂにおける「利用可能な空き容量」を算出する（ステップＳ２０７）。ステップＳ２０７にて制御部１０ｂは、記憶部１１ｂの空き容量から、自身が制御用に用いる容量を減算し、減算後の容量を「利用可能な容量」とする。このとき自身の制御用に用いる容量は、予め定められてある。制御部１０ｂは、算出した「利用可能な空き容量」を含む応答メッセージを通信部１４ｂから送信する（ステップＳ２０８）。ＥＣＵ１ｃでも同様に、ステップＳ２０６〜Ｓ２０８の処理を行なう。
【００５１】
プログラム退避制御装置２の通信部２３が、応答メッセージを受信し（ステップＳ２０９）、制御部２０へ通知する。制御部２０は、ＥＣＵ１ｂ，１ｃから受信した応答メッセージに基づき、ＥＣＵ１ｂ及びＥＣＵ１ｃ夫々の「利用可能な空き容量」を読み出す（ステップＳ２１０）。制御部２０は、読み出した各ＥＣＵ１ｂ，１ｃの「利用可能な空き容量」からテーブルを作成して一時記憶部２２又は記憶部２１に記憶する（ステップＳ２１１）。
【００５２】
ステップＳ２１０で作成されるテーブルの内容例を示す。図６は、実施の形態１におけるプログラム退避制御装置２の制御部２０にて作成されるテーブルの内容例を示す説明図である。図６に示すテーブルには、ＥＣＵ１ｂ，１ｃの装置毎に、制御システム内での装置ＩＤ、各装置の「利用可能な空き容量」（ＫＢ：キロバイト）をリスト化してある。
【００５３】
図６に示す例では、ＥＣＵ１ｂは、装置ＩＤが「０００１」であり、「利用可能な空き容量」は、ＥＣＵ１ｂからの応答メッセージに基づき１２４（ＫＢ）であるとされている。ＥＣＵ１ｃは、装置ＩＤが「０００２」であり、「利用可能な空き容量」は、ＥＣＵ１ｃからの応答メッセージに基づき３３（ＫＢ）であるとされている。
【００５４】
図３〜図５のフローチャートに戻り、説明を続ける。プログラム退避制御装置２の制御部２０は、作成したテーブルをＥＣＵ１ａへ送信する（ステップＳ２１２）。
【００５５】
ＥＣＵ１ａでは通信部１４ａが、テーブルを受信し（ステップＳ２１３）、制御部１０ａへ通知する。制御部１０ａは、受信したテーブルに基づき、ＥＣＵ１ｂ及び１ｃの記憶部１１ｂ及び記憶部１１ｃの空き容量を合計し（ステップＳ２１４）、ステップＳ２０２で算出したデータ量が、空き容量の合計以下であるか否かを判断する（ステップＳ２１５）。
【００５６】
制御部１０ａは、ステップＳ２１４にてデータ量が空き容量の合計より多いと判断した場合（Ｓ２１５：ＮＯ）、退避先の確保に失敗したのでエラー通知を診断装置４へ送信する（ステップＳ２１６）。以後、ＥＣＵ１ａでのプログラム更新処理は中止され、各装置は処理を終了する。
【００５７】
制御部１０ａは、ステップＳ２１５にてデータ量が空き容量の合計以下であると判断した場合（Ｓ２１５：ＹＥＳ）、退避先を確保したので記憶部１１ａに記憶されている制御プログラム１２ａに対して暗号化処理を施し（ステップＳ２１７）、暗号化後の制御プログラム１２ａを分割し（ステップＳ２１８）、ＥＣＵ１ｂ及び１ｃへの送信を開始する（ステップＳ２１９）。ステップＳ２１７における暗号化処理では、制御部１０ａは圧縮処理を行なうことが望ましい。なお、制御部ＥＣＵ１ｂ及び１ｃへの送信は順次行えばよい。この間、制御部１０ａは、通信部１４ａから分割後の制御プログラムの送信が正常に行なわれているか否かを判断する（ステップＳ２２０）。制御部１０ａは、分割後の制御プログラムの送信が正常に行なわれていると判断した場合（Ｓ２２０：ＹＥＳ）、分割後の制御プログラムの全ての送信を完了したか否かを判断する（ステップＳ２２１）。制御部１０ａは、送信を完了していないと判断した場合（Ｓ２２１：ＮＯ）、処理をステップＳ２２０へ戻し、送信を完了したと判断するまで（Ｓ２２１：ＹＥＳ）、ステップＳ２２０による監視を継続する。
【００５８】
この間、送信先の１つに決定されたＥＣＵ１ｂの通信部１４ｂは、ＥＣＵ１ａから分割後の制御プログラムを受信し（ステップＳ２２２）、制御部１０ｂへ通知する。制御部１０ｂは、受信した分割後の制御プログラムを記憶部１１ｂの空き領域へ記憶する（ステップＳ２２３）。ＥＣＵ１ｃにおける処理も同様であるので、詳細な説明を省略する。
【００５９】
そして制御部１０ａは、送信を完了したと判断した場合（Ｓ２２１：ＹＥＳ）、退避先の確保に成功したので、準備完了の通知を外部コネクタ１５ａから診断装置４へ送信する（ステップＳ２２４）。
【００６０】
なおステップＳ２２０において制御部１０ａは、送信を完了したと判断する前に、分割後の制御プログラムの送信に何らかのエラーが発生し、送信が正常に行なわれていないと判断した場合（Ｓ２２０：ＮＯ）、外部コネクタ１５ａからエラー通知を診断装置４へ送信する（ステップＳ２２５）。このとき制御部１０ａは、ＥＣＵ１ｂ及びＥＣＵ１ｃへもエラーを知らせるメッセージを送信することが好ましい。以後、制御部１０ａでの更新処理は中止され、ＥＣＵ１ｂ及びＥＣＵ１ｃでも、エラーメッセージを受信することで途中まで記憶した分割後の制御プログラムを記憶部１１ｂ及び記憶部１１ｃから消去する。
【００６１】
ＥＣＵ１ａの制御部１０ａは、準備完了の通知を外部コネクタ１５ａから診断装置４へ送信した後（Ｓ２２４）、外部コネクタ１５ａにて新たな制御プログラムを診断装置４から受信し（ステップＳ２２６）、新たな制御プログラムの、記憶部１１ａの制御プログラム１２ａが記憶されていた領域への書き込み（更新）を開始する（ステップＳ２２７）。
【００６２】
制御部１０ａは、新たな制御プログラムの書き込みが順次、正常に行なわれ、更新が正常に完了したか否かを判断する（ステップＳ２２８）。制御部１０ａは、更新が正常に完了したと判断した場合（Ｓ２２８：ＹＥＳ）、更新完了の通知を外部コネクタ１５ａから診断装置４へ送信し（ステップＳ２２９）、更新処理を終了する。なお、このとき制御部１０ａは、更新が完了したことを知らせる完了メッセージを通信部１４ａからＥＣＵ１ｂ及びＥＣＵ１ｃへも送信する（Ｓ２２９）。
【００６３】
制御部１０ａは、新たな制御プログラムの記憶部１１ａへの書き込み中、例えば診断装置４とＥＣＵ１ａとの間の入出力が遮断されるなど、続行が不可能となった場合、更新が失敗したと判断する（Ｓ２２８：ＮＯ）。制御部１０ａは、更新が失敗したと判断した場合（Ｓ２２８：ＮＯ）、退避先であるＥＣＵ１ｂ及びＥＣＵ１ｃの内、まずＥＣＵ１ｂへ、プログラム復旧のための分割後のプログラムの送信要求を通信部１４ａから送信する（ステップＳ２３０）。
【００６４】
ＥＣＵ１ｂでは、ＥＣＵ１ａから送信された分割後の制御プログラムを一時的に記憶した後、通信部１４ｂがＥＣＵ１ａから分割後のプログラムの送信要求を受信したか否かを判断する（ステップＳ２３１）。通信部１４ｂが受信したと判断した場合（Ｓ２３１：ＹＥＳ）、制御部１０ｂへ通知する。制御部１０ｂは、記憶部１１ｂに記憶してある分割後の制御プログラムを記憶部１１ｂから読み出し（ステップＳ２３２）、通信部１４ｂから順次ＥＣＵ１ａへ送信する（ステップＳ２３３）。
【００６５】
ＥＣＵ１ａでは、ＥＣＵ１ｂから送信された分割後の制御プログラムを順次受信し、記憶部１１ａに記憶する（ステップＳ２３４）。
【００６６】
制御部１０ａは、分割後の制御プログラムを全て受信、記憶したか否かを判断する（ステップＳ２３５）。制御部１０ａは、全て受信していないと判断した場合（Ｓ２３５：ＮＯ）、処理をステップＳ２３０へ戻し、次の退避先であるＥＣＵ１ｃへ、分割後のプログラムの送信要求を通信部１４ａから送信する（Ｓ２３０）。
【００６７】
ＥＣＵ１ｃでも、ＥＣＵ１ｂ同様に、ステップＳ２３１〜Ｓ２３３の処理を実行する。ＥＣＵ１ａの制御部１０ａは、ＥＣＵ１ｃから受信した分割後の制御プログラムを、ステップＳ２３４にてＥＣＵ１ｂから受信した分割後の制御プログラムの次に順次記憶すればよい。
【００６８】
ＥＣＵ１ａの制御部１０ａは、分割後の制御プログラムを全て受信、記憶したと判断した場合（Ｓ２３５：ＹＥＳ）、受信した分割後の制御プログラムに基づき、元の制御プログラム１２ａを復号、再合成する（ステップＳ２３６）。ＥＣＵ１ａの制御部１０ａは、再合成した制御プログラム１２ａを記憶部１１ａに再記憶する（ステップＳ２３７）。
【００６９】
制御部１０ａは、制御プログラム１２ａの再合成が完了すると、復旧の完了を知らせるメッセージを通信部１４ａから、プログラムの退避先であったＥＣＵ１ｂ及びＥＣＵ１ｃへ送信する（ステップＳ２３８）。またこのとき制御部１０ｃは、更新エラーの通知を、外部コネクタ１５ｃから診断装置４へ送信し（ステップＳ２３９）、更新処理を終了する。
【００７０】
ＥＣＵ１ｂでは、送信要求に応じて分割後の制御プログラム１２を送信した後、通信部１４ｂがＥＣＵ１ａからメッセージを受信したか否かを判断し（ステップＳ２４０）、復旧完了のメッセージを受信していない場合は（Ｓ２４０：ＮＯ）、通知を受信するまで待機する。通信部１４ｂが完了のメッセージを受信したと判断した場合（Ｓ２４０：ＹＥＳ）、制御部１０ｂへ通知する。制御部１０ｂは、前記完了のメッセージを受信した場合（Ｓ２４０：ＹＥＳ）、記憶部１１ｂに記憶してある分割後の制御プログラムを記憶部１１ｂから消去する（ステップＳ２４１）。
【００７１】
なおＥＣＵ１ｂでは、ステップＳ２３１にてプログラムの送信要求を受信していないと判断した場合（Ｓ２３１：ＮＯ）、通信部１０ｂは、ＥＣＵ１ａから、正常に更新が完了したことを示す完了のメッセージを受信したか否かを判断する（Ｓ２４０）。この場合も制御部１０ｂは、記憶部１１ｂに退避させてある分割後の制御プログラムが不要となったと判断し、記憶部１１ｂから消去する（Ｓ２４１）。
【００７２】
ＥＣＵ１ｃでも同様にステップＳ２４０、Ｓ２４１の処理を行なう。
【００７３】
これにより、ＥＣＵ１ａ，１ｂ，１ｃ及びプログラム退避制御装置２における更新処理は完了する。なお、プログラム退避制御装置２によるステップＳ２０４、Ｓ２０５、Ｓ２０９〜Ｓ２１２の処理は、診断装置４が接続されたＥＣＵ１ａからの問い合わせのメッセージの受信の有無に関わらず、通信線３に負荷を与えない程度に定期的に行なっておいてもよい。
【００７４】
図３〜図５のフローチャートに示したように、他の複数のＥＣＵの空き容量を利用し、更新対象の制御プログラム１２ａを分散して退避させておくことにより、ＥＣＵ１ａ，１ｂ，１ｃが夫々簡素化されていて記憶部１１ａ，１１ｂ，１１ｃの記憶容量が比較的小さい構成であっても、更新に失敗したときに復旧が可能となる。特に、不揮発性メモリである記憶部１１ｂ，１１ｃに分散して退避しておくから、更新処理中に各装置の電源がオフとなるなどの状態となったとしても、後に復旧することが可能となる。これにより、最小限のメモリしか有しない簡素化された制御装置からなる制御システムであっても、プログラム更新に失敗した場合に安全に復旧することが可能となる。
【００７５】
なお、プログラム退避制御装置２による処理手順は、ＥＣＵ１ａ，１ｂ，１ｃのいずれかに帰属しているとしてもよい。
【００７６】
（実施の形態２）
実施の形態１では、プログラム退避制御装置２が作成したテーブルに基づき、ＥＣＵ１ａの制御部１０ａが、更新対象の制御プログラム１２ａの複数の送信先を決定する構成とした。実施の形態２では、プログラム退避制御装置２にて、送信先をも決定する構成とする。
【００７７】
なお、実施の形態２における制御システムの構成は、ＥＣＵ１ａ及びプログラム退避制御装置２による処理内容が一部異なること以外は、実施の形態１と同様である。したがって、実施の形態１と共通する構成には、同一の符合を付して詳細な説明を省略する。
【００７８】
以下、実施の形態２における制御システムにおける更新処理の詳細について説明する。図７〜図１０は、実施の形態２におけるＥＣＵ１ａの制御プログラム１２ａが更新される際の処理手順の一例を示すフローチャートである。実施の形態２でも、オペレータが診断装置４を操作して、制御プログラム１２ａの更新要求を出力させた場合、以下の処理が実行される。なお、図７〜図１０のフローチャートに示す処理手順の内、実施の形態１における図３〜図５のフローチャートに示す処理手順と共通する手順については、同一のステップ番号を付して詳細な説明を省略する。
【００７９】
診断装置４が接続されたＥＣＵ１ａの制御部１０ａは、外部コネクタ１５ａにてプログラムの更新要求を受信し（ステップＳ３０１）、制御プログラム１２ａを暗号化変換したときのデータ量を算出する（ステップＳ３０２）。制御部１０ａは、ステップＳ３０２で算出したデータ量を含み、送信先の決定を依頼するメッセージを、通信部１４ａからプログラム退避制御装置２へ送信する（ステップＳ３０３）。
【００８０】
プログラム退避制御装置２では、通信部２３がＥＣＵ１ａからのメッセージを受信し（ステップＳ３０４）、制御部２０は、受信したメッセージから、更新対象の制御プログラム１２ａのデータ量を読み出す（ステップＳ３０５）。次に制御部２０は、ＥＣＵ１ｂ，１ｃ、及び他のＥＣＵ１，１，…へ空き容量を問い合わせるメッセージを通信部２３から送信する（ステップＳ３０６）。
【００８１】
ＥＣＵ１ｂの通信部１４ｂは、空き容量を問い合わせるメッセージを受信し（ステップＳ３０７）、制御部１０ｂへ通知する。ＥＣＵ１ｂの制御部１０ｂは、当該メッセージに応じて記憶部１１ｂにおける「利用可能な空き容量」を算出する（ステップＳ３０８）。ステップＳ３０８にて制御部１０ｂは、記憶部１１ｂの空き容量から、自身が制御用に用いる容量を減算し、減算後の容量を「利用可能な容量」とする。このとき自身の制御用に用いる容量は、予め定められてある。制御部１０ｂは、算出した「利用可能な空き容量」を含む応答メッセージを通信部１４ｂから送信する（ステップＳ３０９）。ＥＣＵ１ｃでも同様に、ステップＳ３０７〜Ｓ３０９の処理を行なう。更に、他のＥＣＵ１，１，１，…でも同様の処理を行なってよい。
【００８２】
プログラム退避制御装置２の通信部２３が、ＥＣＵ１ｂ，１ｃ及び他のＥＣＵ１，１，…から応答メッセージを受信し（ステップＳ３１０）、制御部２０へ通知する。制御部２０は、ＥＣＵ１ｂ，１ｃ及び他のＥＣＵ１，１，…から受信した応答メッセージに基づき、ＥＣＵ１ｂ，１ｃ及び他のＥＣＵ１，１，…夫々の「利用可能な空き容量」を読み出す（ステップＳ３１１）。制御部２０は、読み出した各ＥＣＵ１ｂ，１ｃ及び他のＥＣＵ１，１，…の「利用可能な空き容量」をリスト化したテーブルを作成し、一時記憶部２２又は記憶部２１に記憶する（ステップＳ３１２）。
【００８３】
制御部２０は、ＥＣＵ１ｂ及びＥＣＵ１ｃの記憶部１１ｂ及び記憶部１１ｃの空き容量を合計し（ステップＳ３１３）、ステップＳ３０５で読み出した制御プログラム１２ａのデータ量が、空き容量の合計以下であるか否かを判断する（ステップＳ３１４）。制御部２０は、データ量が空き容量の合計以下であると判断した場合（Ｓ３１４：ＹＥＳ）、応答メッセージを送信してきたＥＣＵ１ｂ，１ｃを送信先と決定する（ステップＳ３１５）。そして制御部２０は、決定した送信先の情報を作成したテーブルに追加し（ステップＳ３１６）、テーブルを通信部２２からＥＣＵ１ａへ送信する（ステップＳ３１７）。ステップＳ３１７にて制御部２０は、作成したテーブルの各空き容量に対応するＥＣＵ１ｂ及びＥＣＵ１ｃを夫々識別する情報に、送信先と決定したことを示す二値情報（ＴＲＵＥ／ＦＡＬＳＥ）を対応付ける。
【００８４】
なおステップＳ３１５で送信先を決定する方法は、種々考え得る。例えば、制御部２０は、応答メッセージを送信してきた全てのＥＣＵ１ｂ，１ｃ，１，１，…の空き容量の合計がデータ量以上であれば、全てのＥＣＵ１ｂ，１ｃ，１，１，…を送信先と決定してよい。制御部２０は、空き容量が所定値以下である一部のＥＣＵ１は、送信先から除外するようにしてもよい。又は、制御部２０は、ＥＣＵ１ｂ，１ｃ及び他のＥＣＵ１，１，…における記憶部１１ｂ，１１ｃ，…の空き容量が多い順に、空き容量を加算する。即ち制御部２０は、最も多い空き容量に、２番目の空き容量、３番目の空き容量を足しこむ。制御部２０は、加算を行なう都度、加算結果と制御プログラム１２ａのデータ量とを比較し、加算結果がデータ量以上となった時点で、加算された空き容量に対応する各ＥＣＵを送信先と決定するようにしてもよい。
【００８５】
ステップＳ３１２で作成され、ステップＳ３１６で情報が対応付けられたテーブルの内容例を示す。図１１は、実施の形態２におけるプログラム退避制御装置２の制御部２０にて作成されるテーブルの内容例を示す説明図である。図１１に示すテーブルには、ＥＣＵ１ｂ，１ｃ及び他のＥＣＵ１，１，…の装置毎に、制御システム内での装置ＩＤ、各装置の「利用可能な空き容量」（ＫＢ：キロバイト）をリスト化してあり、各装置が送信先であるか否かを示す二値情報（ＴＲＵＥ／ＦＡＬＳＥ）が対応付けられている。
【００８６】
図１１に示す例では、ＥＣＵ１ｂは、装置ＩＤが「０００１」であり、「利用可能な空き容量」は、ＥＣＵ１ｂからの応答メッセージに基づき１２４（ＫＢ）であり、送信先である（ＴＲＵＥ）とされている。ＥＣＵ１ｃは、装置ＩＤが「０００２」であり、「利用可能な空き容量」は、ＥＣＵ１ｃからの応答メッセージに基づき６４（ＫＢ）であり、送信先である（ＴＲＵＥ）とされている。また、図１１に示すテーブルには、他のＥＣＵ１の情報も含まれている。他のＥＣＵ１は、装置ＩＤが「０００３」であり、「利用可能な空き容量」は、３３（ＫＢ）であり、送信先でない（ＦＡＬＳＥ）とされている。
【００８７】
図７〜図１０のフローチャートに戻り、説明を続ける。
ＥＣＵ１ａでは制御部１０ａは、通信部１４ａからテーブルを受信したか否かを判断する（ステップＳ３１８）。制御部１０ａは、テーブルを受信したと判断した場合（Ｓ３１８：ＹＥＳ）、退避先を確保したので記憶部１１ａに記憶されている制御プログラム１２ａに対して暗号化処理を施す（ステップＳ３１９）。ステップＳ３１９における暗号化処理では、制御部１０ａは圧縮処理を行なうことが望ましい。制御部１０ａは、暗号化後の制御プログラムを、受信したテーブル中の送信先（ＴＲＵＥ）である各装置の空き容量の大きさに基づき分割し（ステップＳ３２０）、送信先であるＥＣＵ１ｂ及びＥＣＵ１ｃへの送信を開始する（ステップＳ３２１）。ステップＳ３２０及びＳ３２１にて制御部１０ａは、空き容量が多い順に送信先がＴＲＵＥである装置の空き容量を参照し、参照した空き容量に対応する大きさに制御プログラム１２ａを分割し、順次送信する。
【００８８】
なお、プログラム退避制御装置２の制御部２０は、ステップＳ３１４にて、データ量が空き容量より多いと判断した場合（Ｓ３１４：ＮＯ）、送信先を決定できないことを示すエラー通知を通信部２３からＥＣＵ１ａへ送信する（ステップＳ３２２）。
【００８９】
この場合ＥＣＵ１ａの制御部１０ａは、ステップＳ３１８にてテーブルを受信せず、エラー通知を受信したと判断した場合（Ｓ３１８：ＮＯ）、退避先の確保に失敗したのでエラー通知を診断装置４へ送信する（ステップＳ３２３）。以後、ＥＣＵ１ａでのプログラム更新処理は中止され、各装置は処理を終了する。
【００９０】
制御プログラム１２ａの退避先が決定した後、ＥＣＵ１ａから、分割された制御プログラムの送信が開始されてからＥＣＵ１ａとＥＣＵ１ｂ及びＥＣＵ１ｃとの間での処理手順は、実施の形態１における処理手順と同様である。したがって、以下の処理についての詳細な説明は、省略する。
【００９１】
このように、実施の形態２でも、他の複数のＥＣＵの空き容量を利用し、更新対象の制御プログラム１２ａを分散して退避させておくことにより、ＥＣＵ１ａ，１ｂ，１ｃが夫々簡素化されていて記憶部１１ａ，１１ｂ，１１ｃの記憶容量が比較的小さい構成であっても、更新に失敗したときに復旧が可能となる。そして、各ＥＣＵ１ｂ，１ｃ，１，１，…から空き容量の情報を集約するプログラム退避制御装置２にて、プログラム更新対象のＥＣＵ１ａからの制御プログラム１２ａの送信先をも決定することにより、ＥＣＵ１ａでは送信先を決定するという特別な機能を実現する必要がない。
【００９２】
（変形例）
実施の形態１及び２では、診断装置４はＥＣＵ１ａの外部コネクタ１５ａに接続される構成とした。しかしながら、診断装置４は、通信線３に直接的に接続される外部コネクタに接続され、診断装置４から通信線３を介して更新要求、及び新たなコンピュータプログラムがＥＣＵ１ａへ送信される構成としてもよい。
【００９３】
図１２は、変形例における制御システムの構成を示すブロック図である。変形例における制御システムは、ＥＣＵ１ａ，１ｂ，１ｃと、プログラム退避制御装置２と、通信線３と、通信線３に接続される外部コネクタ５とを含む。変形例では、外部装置である診断装置４は外部コネクタ５に接続されている。
【００９４】
この場合、プログラム更新要求は、ＣＡＮプロトコルに準じ、プログラムの更新要求というメッセージに割り振られたＩＤが含まれるデータフレームを、診断装置４が通信線３へ送出することにより実現される。当該データフレームには、プログラムの更新対象であるＥＣＵ１ａを送信先とする情報を含むことが望ましい。また、更新対象のコンピュータプログラムは、ＥＣＵ１ａを送信先とするデータフレームで、複数回に分けて送信される。その他の構成は、ＥＣＵ１ａと診断装置４との間の通信が、ＣＡＮプロトコルに準じて通信線３を介して行なわれること以外は、実施の形態１と同様の方法で実現される。
【００９５】
実施の形態１及び２、並びに変形例では、本発明は車両に搭載される車両制御システムに適用される例を示した。しかしながら本発明はこれに限らず、通信手段を備えて相互にデータを送受信して連携により制御を行なう多様な制御システムに適用することができる。
【００９６】
なお、上述のように開示された本実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００９７】
１ａ，１ｂ，１ｃ  ＥＣＵ
１０ａ，１０ｂ，１０ｃ  制御部
１１ａ，１１ｂ，１１ｃ  記憶部（記憶手段）
１２ａ  更新対象の制御プログラム
１４ａ，１４ｂ，１４ｃ  通信部（通信手段）
２  プログラム退避制御装置（応答受信手段）
３  通信線
４  診断装置
【図１】
2013246718.tif 000003
【図２】
2013246718.tif 000004
【図３】
2013246718.tif 000005
【図４】
2013246718.tif 000006
【図５】
2013246718.tif 000007
【図６】
2013246718.tif 000008
【図７】
2013246718.tif 000009
【図８】
2013246718.tif 000010
【図９】
2013246718.tif 000011
【図１０】
2013246718.tif 000012
【図１１】
2013246718.tif 000013
【図１２】
2013246718.tif 000014