(57)【要約】【課題】簡素化された制御装置の構成であっても、プログラム更新に失敗した場合に安全に復旧することが可能となる制御システム、及びプログラム更新方法を提供する。【解決手段】ＥＣＵ１ａの制御部１０ａは、診断装置３からプログラム更新要求を受信した場合、記憶部１１ａに記憶してある制御プログラム１２ａを通信部１４ａからＥＣＵ１ｂへ送信して、ＥＣＵ１ｂが制御プログラム１２ａを受信して記憶部１１ｂに記憶する。これにより、旧プログラムがＥＣＵ１ｂに退避される。ＥＣＵ１ａの制御部１０ａは、診断装置３から新たなコンピュータプログラムを受信して記憶部１１ａにおけるコンピュータプログラムを更新するが、更新に失敗した場合に、ＥＣＵ１ｂへプログラム送信要求を送信し、ＥＣＵ１ｂに退避されていた制御プログラム１２ａを受信して記憶部１１ａに再記憶する。【選択図】図１
2014029619.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）などが用いられ、制御部１０ａの動作により発生した情報、記憶部１１ａから読み出された各種情報、制御プログラム１２ａの実行コードなどが一時的に記憶される。一時記憶部１３ａは、ＣＰＵである制御部１０ａ内蔵のメモリでよい。
【００３０】
通信部１４ａは、通信線２を介した通信を実現する。即ち実施の形態１では通信部１４ａはＣＡＮプロトコルに準じ、ＣＡＮコントローラ及びＣＡＮトランシーバを含む。制御部１０ａは、通信部１４ａにより通信線２を介して他のＥＣＵ１ｂ及び他のＥＣＵ１，１，…との間でメッセージ及びデータの送受信が可能である。
【００３１】
なお、ＥＣＵ１ａにおける制御部１０ａ、記憶部１１ａ、一時記憶部１３ａ及び通信部１４ａの一部（コントローラ）は、マイクロコンピュータとして構成されてもよい。
【００３２】
外部コネクタ１５ａは、診断装置３との接続インタフェースである。外部コネクタ１５ａに診断装置３が接続されている間、制御部１０ａは、外部コネクタ１５ａを介して診断装置３との間で通知及びデータの入出力が可能である。
【００３３】
ＥＣＵ１ｂは、ＥＣＵ１ａと同様に、記憶部１１ｂに記憶されているコンピュータプログラムに基づき処理を行なうプロセッサにより動作する電子制御装置である。ＥＣＵ１ｂは、制御部１０ｂと、記憶部１１ｂと、一時記憶部１３ｂと、通信部１４ｂとを備える。
【００３４】
制御部１０ｂには、ＣＰＵを利用する。記憶部１１ｂには、例えばハードディスク、ＳＳＤ（Solid State Drive ）などの比較的大容量の不揮発性記憶装置が用いられる。記憶部１１ｂの記憶容量は、ＥＣＵ１ｂの機能に応じて、十分な記憶容量が確保されている。例えば、ＥＣＵ１ｂの機能がナビゲーションシステムである場合、地図情報等の各種情報を記憶するためにハードディスク等の大容量記憶装置を用いる。なお記憶部１１ｂには、制御部１０ｂが読み出す図示しないコンピュータプログラムが記憶されていてもよい。
【００３５】
一時記憶部１３ｂには、ＳＲＡＭ、ＤＲＡＭなどが用いられ、制御部１０ｂの動作により発生した情報などが一時的に記憶される。一時記憶部１３ｂは、ＣＰＵである制御部１０ｂ内蔵のメモリでよい。
【００３６】
通信部１４ｂは、通信線２を介した通信を実現する。通信部１４ｂは、ＣＡＮプロトコルに準じ、ＣＡＮコントローラ及びＣＡＮトランシーバを含む。制御部１０ｂは、通信部１４ｂにより通信線２を介して他のＥＣＵ１ａ及び他のＥＣＵ１，１，…との間でデータの送受信が可能である。
【００３７】
なお、ＥＣＵ１ｂにおける制御部１０ｂ、記憶部１１ｂ、一時記憶部１３ｂ及び通信部１４ｂの一部（コントローラ）は、マイクロコンピュータとして構成されてもよい。
【００３８】
車載の制御システムにおけるＥＣＵ１ａ，１ｂ及び他のＥＣＵ１，１，…は、車両の組み立て完了後は、車体の床、ボンネットの中などに配されて、ＥＣＵ１ａ，１ｂ及び他のＥＣＵ１，１，…間の通信線２及び信号線などを含むワイヤーハーネスが、車両の車体枠の中などに張り巡らされて配されている。したがって、ＥＣＵ１ａ，１ｂは、車外からアクセスすることが困難であるが、ＥＣＵ１ａの外部コネクタ１５ａは、車両の組み立て後に、ＥＣＵ１ａにおける制御プログラム１２ａの書き換え、記憶部１１ａへのデータの記憶、又はＥＣＵ１ａからのデータの読み出しが、後述する外部装置である診断装置３から可能なように、車外からアクセスすることが容易な位置に配置されている。
【００３９】
診断装置３は、車両の点検が行なわれるとき以外は、制御システムに含まれない外部装置である。診断装置３は、検査員などのオペレータが操作することにより、ＥＣＵ１ａの制御プログラム１２ａの更新要求を出力し、更新対象の新たなコンピュータプログラムを出力するように構成されている。
【００４０】
上述のように構成される制御システムにて、ＥＣＵ１ａの制御部１０ａが読み出す制御プログラム１２ａを更新する方法について、詳細を説明する。
【００４１】
図２、図３及び図４は、実施の形態１における制御システムにおいてＥＣＵ１ａの制御プログラム１２ａが更新される際の処理手順の一例を示すフローチャートである。オペレータが診断装置３を操作して、制御プログラム１２ａの更新要求を出力させた場合、以下の処理が制御システムにて実行される。
【００４２】
診断装置３は、プログラムの更新要求を出力する（ステップＳ１０１）。
【００４３】
診断装置３が接続されたＥＣＵ１ａの制御部１０ａは、外部コネクタ１５ａにてプログラムの更新要求を受信し（ステップＳ１０２）、制御プログラム１２ａを暗号化変換したときのデータ量を算出する（ステップＳ１０３）。制御部１０ａは、他のＥＣＵ１ｂへ記憶部１１ｂの空き容量を問い合わせるメッセージを、通信部１４ａから送信する（ステップＳ１０４）。
【００４４】
ＥＣＵ１ｂの通信部１４ｂが、空き容量を問い合わせるメッセージを受信し（ステップＳ１０５）、制御部１０ｂへ通知する。制御部１０ｂは、当該メッセージに応じて記憶部１１ｂにおける「利用可能な空き容量」を算出する（ステップＳ１０６）。このとき制御部１０ｂは、記憶部１１ｂの空き容量から、自身が制御用に用いる容量を減算し、減算後の容量を「利用可能な容量」とする。このとき自身の制御用に用いる容量は、予め定められてある。制御部１０ｂは、算出した「利用可能な空き容量」を含む応答メッセージを通信部１４ｂから送信する（ステップＳ１０７）。
【００４５】
ＥＣＵ１ａの通信部１４ａが、応答メッセージを受信し（ステップＳ１０８）、制御部１０ａへ通知する。制御部１０ａは、当該応答メッセージから、ＥＣＵ１ｂにて「利用可能な空き容量」を読み出し（ステップＳ１０９）、ステップＳ１０４で算出したデータ量が、ＥＣＵ１ｂにおける「利用可能な空き容量」以下であるか否かを判断する（ステップＳ１１０）。
【００４６】
制御部１０ａは、ステップＳ１１０にてデータ量が「利用可能な空き容量」より多いと判断した場合（Ｓ１１０：ＮＯ）、待避先の確保に失敗したのでエラー通知を診断装置３へ送信する（ステップＳ１１１）。以後、ＥＣＵ１ａでの更新処理は中止される。
【００４７】
一方制御部１０ａは、ステップＳ１１０にて「利用可能な空き容量」以下であると判断した場合（Ｓ１１０：ＹＥＳ）、ＥＣＵ１ｂを送信先に決定する（ステップＳ１１２）。制御部１０ａは、記憶部１１ａに記憶されている制御プログラム１２ａを読み出す（ステップＳ１１３）。制御部１０ａは、読み出した制御プログラム１２ｃに暗号化処理を施し（ステップＳ１１４）、暗号化後の制御プログラム１２ａのＥＣＵ１ｂへの送信を開始する（ステップＳ１１５）。ステップＳ１１４における暗号化処理では、圧縮処理を行なうことが望ましい。この間、制御部１０ａは、通信部１４ａから暗号化後の制御プログラム１２ａの送信が正常に行なわれているか否かを判断する（ステップＳ１１６）。制御部１０ａは、制御プログラム１２ａの送信が正常に行なわれていると判断した場合（Ｓ１１６：ＹＥＳ）、制御プログラム１２ａの全ての送信を完了したか否かを判断する（ステップＳ１１７）。制御部１０ａは、送信を完了していないと判断した場合（Ｓ１１７：ＮＯ）、処理をステップＳ１１６へ戻し、送信を完了したと判断するまで（Ｓ１１７：ＹＥＳ）、ステップＳ１１６による監視を継続する。
【００４８】
この間、ＥＣＵ１ｂの通信部１４ｂは、ＥＣＵ１ａから制御プログラム１２ａを受信し（ステップＳ１１９）、制御部１０ｂへ通知する。制御部１０ｂは、受信した暗号化後の制御プログラム１２ａを記憶部１１ｂの空き領域へ記憶する（ステップＳ１２０）。
【００４９】
そして制御部１０ａは、送信を完了したと判断した場合（Ｓ１１７：ＹＥＳ）、退避先の確保に成功したので、準備完了の通知を外部コネクタ１５ａから診断装置３へ送信する（ステップＳ１１８）。
【００５０】
一方制御部１０ａは、送信を完了したと判断する前に、制御プログラム１２ａの送信に何らかのエラーが発生し、送信が正常に行なわれていないと判断した場合（Ｓ１１６：ＮＯ）、外部コネクタ１５ａからエラー通知を診断装置３へ送信する（ステップＳ１２１）。このとき制御部１０ａは、ＥＣＵ１ｂへもエラーを知らせるメッセージを送信することが好ましい。以後、ＥＣＵ１ａでの更新処理は中止され、ＥＣＵ１ｂでも、エラーメッセージを受信することで途中まで記憶した制御プログラム１２ａを記憶部１１ｂから消去する。
【００５１】
診断装置３では、プログラムの更新要求を出力した後、ＥＣＵ１ａから通知を受信したか否かを判断し（ステップＳ１２２）、通知を受信していないと判断した場合（Ｓ１２２：ＮＯ）、処理をステップＳ１２２へ戻し、通知を受信したと判断するまで（Ｓ１２２：ＹＥＳ）、待機する。そして診断装置３では、ＥＣＵ１ａからの何らかの通知を受信したと判断した場合（Ｓ１２２：ＹＥＳ）、エラー通知であるか否かを判断する（ステップＳ１２３）。診断装置３は、エラー通知でなく、準備完了の通知を受信したと判断した場合（Ｓ１２３：ＮＯ）、更新対象の新たな制御プログラムをＥＣＵ１ａへ出力する（ステップＳ１２４）。
【００５２】
ＥＣＵ１ａの制御部１０ａは、外部コネクタ１５ａにて新たな制御プログラムを受信し（ステップＳ１２５）、新たな制御プログラムの、記憶部１１ａの制御プログラム１２ａが記憶されていた領域への書き込み（更新）を開始する（ステップＳ１２６）。
【００５３】
制御部１０ａは、新たな制御プログラムの書き込みが順次、正常に行なわれ、更新が正常に完了したか否かを判断する（ステップＳ１２７）。制御部１０ａは、更新が正常に完了したと判断した場合（Ｓ１２７：ＹＥＳ）、更新完了の通知を外部コネクタ１５ａから診断装置３へ送信する（ステップＳ１２８）。また、このとき制御部１０ａは、更新が完了したことを知らせる完了メッセージを通信部１４ａからＥＣＵ１ｂへも送信する（Ｓ１２８）。
【００５４】
なお、ステップＳ１２７における新たな制御プログラムの更新処理は詳細には、診断装置３から送信される更新処理用のプログラムが一時記憶部１３ａに記憶され、制御部１０ａが当該更新処理用のプログラムに基づき書き込み処理を制御することで実現される。
【００５５】
診断装置３では、新たな制御プログラムをＥＣＵ１ａへ出力した後、通知を受信したか否かを判断し（ステップＳ１２９）、受信していないと判断した場合は（Ｓ１２９：ＮＯ）、処理をステップＳ１２９へ戻して受信したと判断するまで待機する。
【００５６】
制御部１０ａは、新たな制御プログラムの記憶部１１ａへの書き込み中、例えば診断装置３とＥＣＵ１ａとの間の入出力が遮断されるなど、更新の続行が不可能となった場合、更新が失敗したと判断する（Ｓ１２７：ＮＯ）。制御部１０ａは、更新が失敗したと判断した場合（Ｓ１２７：ＮＯ）、ＥＣＵ１ｂへ、プログラム復旧のためのプログラムの送信要求を通信部１４ａから送信する（ステップＳ１３０）。
【００５７】
ＥＣＵ１ｂでは、ＥＣＵ１ａから送信された制御プログラム１２ａを一時的に記憶した後、通信部１４ｂがＥＣＵ１ａからプログラムの送信要求を受信したか否かを判断する（ステップＳ１３１）。通信部１４ｂが受信したと判断した場合（Ｓ１３１：ＹＥＳ）、制御部１０ｂへ通知する。制御部１０ｂは、記憶部１１ｂに記憶してある制御プログラム１２ａを記憶部１１ｂから読み出し（ステップＳ１３２）、通信部１４ｂから順次ＥＣＵ１ａへ送信する（ステップＳ１３３）。
【００５８】
ＥＣＵ１ａの通信部１４ａは、ＥＣＵ１ｂから送信された制御プログラム１２ａを順次受信し（ステップＳ１３４）、制御部１０ａへ通知する。制御部１０ａは、受信した暗号化されてある制御プログラム１２ａを復号する（ステップＳ１３５）。制御部１０ａは、復号後の制御プログラム１２ａを記憶部１１ａに再記憶する（ステップＳ１３６）。制御部１０ａは、制御プログラム１２ａの再記憶が完了すると、復旧の完了を知らせるメッセージを通信部１４ａからＥＣＵ１ｂへ送信する（ステップＳ１３７）。またこのとき制御部１０ａは、更新エラーの通知を、外部コネクタ１５ａから診断装置３へ送信する（ステップＳ１３８）。
【００５９】
一方でＥＣＵ１ｂでは、送信要求に応じて制御プログラム１２ａを送信した後、通信部１４ｂがＥＣＵ１ａからメッセージを受信したか否かを判断し（ステップＳ１３９）、復旧完了のメッセージを受信していない場合は（Ｓ１３９：ＮＯ）、通知を受信するまで待機する。通信部１４ｂが完了のメッセージを受信したと判断した場合（Ｓ１３９：ＹＥＳ）、制御部１０ｂへ通知する。制御部１０ｂは、前記完了のメッセージを受信した場合、記憶部１１ｂに一時的に記憶してある制御プログラム１２ａを記憶部１１ｂから消去する（ステップＳ１４０）。
【００６０】
なおＥＣＵ１ｂでは、ステップＳ１３１にてプログラムの送信要求を受信していないと判断した場合（Ｓ１３１：ＮＯ）、通信部１０ｂは、ＥＣＵ１ａから、正常に更新が完了したことを示す更新完了のメッセージを受信したか否かを判断する（Ｓ１３９）。この場合も制御部１０ｂは、一時的に記憶部１１ｂに退避させてある更新前の制御プログラム１２ａが不要となったと判断し、制御プログラム１２ａを記憶部１１ｂから消去する（Ｓ１４０）。
【００６１】
診断装置３では、新たな制御プログラムを送信した後、更新完了通知を受信したと判断した場合（Ｓ１２９：ＹＥＳ）、受信した通知を音声信号、又は図示しない液晶モニタに出力し（ステップＳ１４１）、プログラムの更新処理を終了する。また、ＥＣＵ１ａにて更新が失敗して更新エラーの通知を受信したと判断した場合も（Ｓ１２９：ＹＥＳ）、また、ステップＳ１２３にて、新たな制御プログラムを送信する前に、受信した通知はエラー通知（退避先確保失敗、若しくは制御プログラム１２ａ送信失敗）であると判断した場合も（Ｓ１２３：ＹＥＳ）、受信した通知を音声信号、又は図示しない液晶モニタに出力し（Ｓ１４１）、プログラムの更新処理を終了する。
【００６２】
図２乃至図４のフローチャートに示したように、更新対象の制御プログラム１２ａを記憶部１１ｂに空き容量を有するＥＣＵ１ｂへ一時的に退避することにより、ＥＣＵ１ａの記憶部１１ａの記憶容量が、ＥＣＵ１ａを簡易で安価な構成とするために比較的小さい構成であった場合でも、更新に失敗したときに復旧が可能となる。特に、他のＥＣＵ１ｂの不揮発性記憶装置である記憶部１１ｂに退避しておくから、更新処理中に各装置の電源がオフとなるなどの状態となったとしても、後に復旧することが可能となる。これにより、安全にプログラムの更新を行なうことができる。
【００６３】
なお、図２乃至図４のフローチャートに示した処理手順の内のステップＳ１０３〜Ｓ１１２の、ＥＣＵ１ｂの記憶部１１ｂにおける空き容量を確認する処理は省略してもよい。つまり、記憶部１１ｂには十分な空き容量が存在するという前提で、制御部１０ａは、更新要求を受信した場合、記憶部１１ａに記憶してある制御プログラム１２ａを通信部１４ａから送信する構成としてもよい。
【００６４】
（実施の形態２）
実施の形態２では、１つのＥＣＵの制御プログラムの退避先として、複数の他のＥＣＵのいずれかがなり得る構成の場合に、複数の他のＥＣＵに退避先としての優先順位を付したテーブルを作成し、テーブルに基づき、送信先を決定して送信する。
【００６５】
図５は、実施の形態２における制御システムの構成を示すブロック図である。実施の形態２における制御システムは、複数のＥＣＵ１ｂ，１ｃ，１ｄと、通信線２とを含む。ＥＣＵ１ｃには、外部装置である診断装置３が接続可能である。実施の形態２でも通信線２に、診断装置３の通信線２への接続を可能とする外部コネクタが接続されていてもよい。通信線２に接続されているＥＣＵは、ＥＣＵ１ｂ，１ｃ，１ｄのみでなく、更に複数のＥＣＵ１，１，…が接続されてよい。
【００６６】
なお、実施の形態２における構成は、診断装置３が接続されてコンピュータプログラムの更新対象となるＥＣＵ１ｃによって実行される処理内容以外は、実施の形態１と共通する。したがって、実施の形態１と共通する構成には、同一の符号を付して詳細な説明を省略する。
【００６７】
ＥＣＵ１ｃは、記憶部１１ｃに記憶されているコンピュータプログラムに基づき処理を行なうプロセッサにより動作する電子制御装置である。ＥＣＵ１ｃは、制御部１０ｃと、記憶部１１ｃと、一時記憶部１３ｃと、通信部１４ｃと、外部コネクタ１５ｃとを備える。
【００６８】
制御部１０ｃには、ＣＰＵを利用する。記憶部１１ｃには、フラッシュメモリ、ＥＥＰＲＯＭ（登録商標）などの不揮発性メモリであって書き換えが可能な記憶媒体が用いられ、制御部１０ｃが読み出して実行する制御プログラム１２ｃが記憶されている。つまり、制御プログラム１２ｃは書き換え（更新）が可能である。記憶部１１ｃの記憶容量は、制御プログラム１２ｃと、他の制御用の条件、固定値などの各種情報を記憶する程度で、余分な記憶容量は用意されていない。
【００６９】
一時記憶部１３ｃには、ＳＲＡＭ、ＤＲＡＭなどが用いられ、制御部１０ｃの動作により発生した情報、記憶部１１ｃから読み出された各種情報、制御プログラム１２ｃの実行コードなどが一時的に記憶される。
【００７０】
通信部１４ｃは、通信線２を介した通信を実現する。つまり通信部１４ｃはＣＡＮプロトコルに準じ、ＣＡＮコントローラ及びＣＡＮトランシーバを含む。制御部１０ｃは、通信部１４ｃにより通信線２を介して他のＥＣＵ１ｂ，１ｄ、及び他のＥＣＵ１，１，…との間でメッセージ及びデータの送受信が可能である。
【００７１】
なお、ＥＣＵ１ｃにおける制御部１０ｃ、記憶部１１ｃ、一時記憶部１３ｃ及び通信部１４ｃの一部（コントローラ）は、マイクロコンピュータとして構成されてもよい。
【００７２】
外部コネクタ１５ｃは、診断装置３との接続インタフェースである。外部コネクタ１５ｃに診断装置３が接続されている間、制御部１０ｃは、外部コネクタ１５ｃを介して診断装置３との間で通知及びデータの入出力が可能である。
【００７３】
ＥＣＵ１ｂの構成は、実施の形態１同様であり、記憶部１１ｂはハードディスクを用いて十分な記憶容量が確保されている。ＥＣＵ１ｄの構成は、ＥＣＵ１ｂと同様であるが、記憶部１１ｄはフラッシュメモリを用いる。
【００７４】
実施の形態２にて、ＥＣＵ１ｃの制御部１０ｃが読み出す制御プログラム１２ｃを更新する方法について、詳細を説明する。
【００７５】
図６、図７及び図８は、実施の形態２における制御システムにおいてＥＣＵ１ｃの制御プログラム１２ｃが更新される際の処理手順の一例を示すフローチャートである。オペレータが診断装置３を操作して、制御プログラム１２ｃの更新要求を出力させた場合、以下の処理が制御システムにて実行される。
【００７６】
診断装置３は、プログラムの更新要求を出力する（ステップＳ２０１）。
【００７７】
診断装置３が接続されたＥＣＵ１ｃの制御部１０ｃは、外部コネクタ１５ｃにてプログラムの更新要求を受信し（ステップＳ２０２）、制御プログラム１２ｃを暗号化変換したときのデータ量を算出する（ステップＳ２０３）。制御部１０ｃは、他のＥＣＵ１ｂ及びＥＣＵ１ｄへ記憶部１１ｂ及び記憶部１１ｄの空き容量を問い合わせるメッセージを、通信部１４ａから送信する（ステップＳ２０４）。
【００７８】
ＥＣＵ１ｂ，１ｄの通信部１４ｂ，１４ｄが夫々、空き容量を問い合わせるメッセージを受信し（ステップＳ２０５）、制御部１０ｂ，１０ｄへ通知する。ＥＣＵ１ｂの制御部１０ｂは、当該メッセージに応じて記憶部１１ｂにおける「利用可能な空き容量」を算出する（ステップＳ２０６）。ＥＣＵ１ｄの制御部１０ｄもステップＳ２０５及びＳ２０６の処理を実行する。制御部１０ｂ又は制御部１０ｄは、記憶部１１ｂ又は記憶部１１ｄの空き容量から、自身が制御用に用いる容量を減算し、減算後の容量を「利用可能な容量」とする。このとき自身の制御用に用いる容量は、予め定められてある。制御部１０ｂは、算出した「利用可能な空き容量」を含む応答メッセージを通信部１４ｂから送信する（ステップＳ２０７）。ＥＣＵ１ｄの制御部１０ｄも同様の処理を行なう。
【００７９】
ＥＣＵ１ｃの通信部１４ｃが、応答メッセージを受信し（ステップＳ２０８），制御部１０ｃへ通知する。制御部１０ｃは、ＥＣＵ１ｂ及びＥＣＵ１ｄから受信した応答メッセージに基づき、ＥＣＵ１ｂ及びＥＣＵ１ｄ夫々の「利用可能な空き容量」を読み出す（ステップＳ２０９）。制御部１０ｃは、読み出した各ＥＣＵ１ｂ及びＥＣＵ１ｄの「利用可能な空き容量」からテーブルを作成して記憶部１１ｃに記憶する（ステップＳ２１０）。制御部１０ｃは、作成したテーブルにおけるＥＣＵ１ｂ及びＥＣＵ１ｄに、「利用可能な空き容量」の大きさ順に優先順位を付与し（ステップＳ２１１）、優先順位が高い装置（ここではＥＣＵ１ｂ）を、送信先に決定する（ステップＳ２１２）。
【００８０】
ステップＳ２１０で作成され、ステップＳ２１１で優先順位が付与されるテーブルの内容例を示す。図９は、実施の形態２におけるＥＣＵ１ｃの制御部１０ｃにて作成されるテーブルの内容例を示す説明図である。図９に示すテーブルには、ＥＣＵ１ｂ及びＥＣＵ１ｄの装置毎に、制御システム内での装置ＩＤ、各装置の「利用可能な空き容量」（ＫＢ：キロバイト）、記憶部１１ｂ及び記憶部１１ｄの記憶装置の種別、及び優先順位をリスト化してある。
【００８１】
図９に示す例では、ＥＣＵ１ｂは、装置ＩＤが「０００１」であり、「利用可能な空き容量」は、ＥＣＵ１ｂからの応答メッセージに基づき１２４（ＫＢ）であると記憶されている。また、ＥＣＵ１ｂの記憶部１１ｂの記憶装置の種別はＨＤＤ（ハードディスク）であると記憶されている。一方でＥＣＵ１ｄは、装置ＩＤが「０００２」であり、「利用可能な空き容量」は、ＥＣＵ１ｄからの応答メッセージに基づき３３（ＫＢ）であり、記憶部１１ｄの記憶装置の種別はフラッシュメモリであると記憶されている。
【００８２】
また、図９に示す例では優先順位が付与されており、ＥＣＵ１ｂとＥＣＵ１ｄとでは「利用可能な空き容量」はＥＣＵ１ｂの１２４（ＫＢ）が最も大きいので、ＥＣＵ１ｂに対応する装置ＩＤ「０００１」の優先順位が「１」と付与されている。同様にしてＥＣＵ１ｄに対応する装置ＩＤ「０００２」の優先順位は「２」と付与されている。
【００８３】
このように作成されるテーブルに基づき、ＥＣＵ１ｃの制御部１０ｃは、退避先を決定する。図６〜図８のフローチャートに戻り、説明を続ける。ＥＣＵ１ｃの制御部１０ｃは、テーブルの優先順位が高い順に、退避先のＥＣＵを決定する（ステップＳ２１２）。図９に示した例の場合、制御部１０ｃは、優先順位が「１」であるＥＣＵ１ｂを退避先と決定する（Ｓ２１２）。
【００８４】
次に制御部１０ｃは、ステップＳ２０４で算出したデータ量が、退避先に決定したＥＣＵ１ｂの「利用可能な空き容量」以下であるか否かを判断する（ステップＳ２１３）。
【００８５】
制御部１０ｃは、ステップＳ２１３にてデータ量が「利用可能な空き容量」より多いと判断した場合（Ｓ２１３：ＮＯ）、退避先の確保に失敗したのでエラー通知を診断装置３へ送信する（ステップＳ２１４）。以後、ＥＣＵ１ｃでの更新処理は中止される。
【００８６】
制御部１０ｃは、ステップＳ２１３にて「利用可能な空き容量」以下であると判断した場合（Ｓ２１３：ＹＥＳ）、退避先を確保したので記憶部１１ｃに記憶されている制御プログラム１２ｃを読み出す（ステップＳ２１５）。制御部１０ｃは、読み出した制御プログラム１２ｃに暗号化処理を施し（ステップＳ２１６）、暗号化後の制御プログラム１２ｃのＥＣＵ１ｂへの送信を開始する（ステップＳ２１７）。この間、制御部１０ｃは、通信部１４ｃから暗号化後の制御プログラム１２ｃの送信が正常に行なわれているか否かを判断する（ステップＳ２１８）。制御部１０ｃは、制御プログラム１２ｃの送信が正常に行なわれていると判断した場合（Ｓ２１８：ＹＥＳ）、制御プログラム１２ｃの全ての送信を完了したか否かを判断する（ステップＳ２１９）。制御部１０ｃは、送信を完了していないと判断した場合（Ｓ２１９：ＮＯ）、処理をステップＳ２１８へ戻し、送信を完了したと判断するまで（Ｓ２１９：ＹＥＳ）、ステップＳ２１８による監視を継続する。
【００８７】
この間、退避先に決定されたＥＣＵ１ｂの通信部１４ｂは、ＥＣＵ１ｃから制御プログラム１２ｃを受信し（ステップＳ２２１）、制御部１０ｂへ通知する。制御部１０ｂは、受信した暗号化後の制御プログラム１２ｃを記憶部１１ｂの空き領域へ記憶する（ステップＳ２２２）。
【００８８】
そして制御部１０ｃは、送信を完了したと判断した場合（Ｓ２１９：ＹＥＳ）、退避先の確保に成功したので、準備完了の通知を外部コネクタ１５ｃから診断装置３へ送信する（ステップＳ２２０）。
【００８９】
一方制御部１０ｃは、送信を完了したと判断する前に、制御プログラム１２ｃの送信に何らかのエラーが発生し、送信が正常に行なわれていないと判断した場合（Ｓ２１８：ＮＯ）、外部コネクタ１５ｃからエラー通知を診断装置３へ送信する（ステップＳ２２３）。このとき制御部１０ｃは、ＥＣＵ１ｂへもエラーを知らせるメッセージを送信することが好ましい。以後、制御部１０ｃでの更新処理は中止され、ＥＣＵ１ｂでも、エラーメッセージを受信することで途中まで記憶した制御プログラム１２ｃを記憶部１１ｂから消去する。
【００９０】
診断装置３では、プログラムの更新要求を出力した後、ＥＣＵ１ｃから通知を受信したか否かを判断し（ステップＳ２２４）、通知を受信していないと判断した場合（Ｓ２２４：ＮＯ）、処理をステップＳ２２４へ戻し、通知があったと判断するまで（Ｓ２２４：ＹＥＳ）、待機する。そして診断装置３では、ＥＣＵ１ｃからの何らかの通知を受信したと判断した場合（Ｓ２２４：ＹＥＳ）、エラー通知であるか否かを判断する（ステップＳ２２５）。診断装置３は、エラー通知でなく、準備完了の通知を受信したと判断した場合（Ｓ２２５：ＹＥＳ）、更新対象の新たな制御プログラムをＥＣＵ１ｄへ出力する（ステップＳ２２６）。
【００９１】
ＥＣＵ１ｃの制御部１０ｃは、外部コネクタ１５ｃにて新たな制御プログラムを受信し（ステップＳ２２７）、新たな制御プログラムの、記憶部１１ｃの制御プログラム１２ｃが記憶されていた領域への書き込み（更新）を開始する（ステップＳ２２８）。
【００９２】
制御部１０ｃは、新たな制御プログラムの書き込みが順次、正常に行なわれ、更新が正常に完了したか否かを判断する（ステップＳ２２９）。制御部１０ｃは、更新が正常に完了したと判断した場合（Ｓ２２９：ＹＥＳ）、更新完了の通知を外部コネクタ１５ｃから診断装置３へ送信する（ステップＳ２３０）。また、このとき制御部１０ｃは、更新が完了したことを知らせる完了メッセージを通信部１４ｃからＥＣＵ１ｂへも送信する（Ｓ２３０）。
【００９３】
診断装置３では、新たな制御プログラムをＥＣＵ１ｃへ出力した後、通知を受信したか否かを判断し（ステップＳ２３１）、受信していないと判断した場合は（Ｓ２３１：ＮＯ）、処理をステップＳ２３１へ戻して受信したと判断するまで待機する。
【００９４】
制御部１０ｃは、新たな制御プログラムの記憶部１１ｃへの書き込み中、例えば診断装置３とＥＣＵ１ｃとの間の入出力が遮断されるなど、続行が不可能となった場合、更新が失敗したと判断する（Ｓ２２９：ＮＯ）。制御部１０ａは、更新が失敗したと判断した場合（Ｓ２２９：ＮＯ）、退避先であるＥＣＵ１ｂへ、プログラム復旧のためのプログラムの送信要求を通信部１４ｃから送信する（ステップＳ２３２）。
【００９５】
ＥＣＵ１ｂでは、ＥＣＵ１ｃから送信された制御プログラム１２ｃを一時的に記憶した後、通信部１４ｂがＥＣＵ１ｃからプログラムの送信要求を受信したか否かを判断する（ステップＳ２３３）。通信部１４ｂが受信したと判断した場合（Ｓ２３３：ＹＥＳ）、制御部１０ｂへ通知する。制御部１０ｂは、記憶部１１ｂに記憶してある制御プログラム１２ｃを記憶部１１ｂから読み出し（ステップＳ２３４）、通信部１４ｂから順次ＥＣＵ１ｃへ送信する（ステップＳ２３５）。
【００９６】
ＥＣＵ１ｃの通信部１４ｃは、ＥＣＵ１ｂから送信された制御プログラム１２ｃを順次受信し（ステップＳ２３６）、制御部１０ｃへ通知する。制御部１０ｃは、受信した暗号化されてある制御プログラム１２ｃを復号する（ステップＳ２３７）。制御部１０ａは、復号後の制御プログラム１２ｃを記憶部１１ｃに再記憶する（ステップＳ２３８）。制御部１０ｃは、制御プログラム１２ｃの再記憶が完了すると、復旧の完了を知らせるメッセージを通信部１４ｃからＥＣＵ１ｂへ送信する（ステップＳ２３９）。またこのとき制御部１０ｃは、更新エラーの通知を、外部コネクタ１５ｃから診断装置３へ送信する（ステップＳ２４０）。
【００９７】
一方でＥＣＵ１ｂでは、送信要求に応じて制御プログラム１２ｃを送信した後、通信部１４ｂがＥＣＵ１ｃからメッセージを受信したか否かを判断し（ステップＳ２４１）、復旧完了のメッセージを受信していない場合は（Ｓ２４１：ＮＯ）、通知を受信するまで待機する。通信部１４ｂが完了のメッセージを受信したと判断した場合（Ｓ２４１：ＹＥＳ）、制御部１０ｂへ通知する。制御部１０ｂは、前記完了のメッセージを受信した場合、記憶部１１ｂに一時的に記憶してある制御プログラム１２ｃを記憶部１１ｂから消去する（ステップＳ２４２）。
【００９８】
なおＥＣＵ１ｂでは、ステップＳ２３３にてプログラムの送信要求を受信していないと判断した場合（Ｓ２３３：ＮＯ）、通信部１０ｂは、ＥＣＵ１ｃから、正常に更新が完了したことを示す完了のメッセージを受信したか否かを判断する（Ｓ２４１）。この場合も制御部１０ｂは、一時的に記憶部１１ｂに退避させてある更新前の制御プログラム１２ｃが不要となったと判断し、制御プログラム１２ｃを記憶部１１ｂから消去する（Ｓ２４２）。
【００９９】
診断装置３では、新たな制御プログラムを送信した後、更新完了通知を受信したと判断した場合（Ｓ２３１：ＹＥＳ）、受信した通知を音声信号、又は図示しない液晶モニタに出力し（ステップＳ２４３）、プログラムの更新処理を終了する。また、ＥＣＵ１ｃにて更新が失敗して更新エラーの通知を受信したと判断した場合も（Ｓ２３１：ＹＥＳ）、及び、ステップＳ２２５にて、新たな制御プログラムを送信する前に、受信した通知はエラー通知（退避先確保失敗、若しくは制御プログラム１２ｃ送信失敗）であると判断した場合も（Ｓ２２５：ＹＥＳ）、受信した通知を音声信号、又は図示しない液晶モニタに出力し（Ｓ２４３）、プログラムの更新処理を終了する。
【０１００】
図６乃至図８のフローチャートに示したように、他のＥＣＵの空き容量をリスト化してテーブル化し、優先順位が高い順に退避先のＥＣＵを決定する構成とすることにより、より確実に、更新対象のコンピュータプログラムを退避させておくことが可能である。したがって、ＥＣＵ１ｃの記憶部１１ｃの記憶容量が、ＥＣＵ１ｃを簡易で安価な構成とするために比較的小さい構成であった場合でも、更新に失敗したときに復旧が可能となる。これにより、安全にプログラムの更新を行なうことができる。
【０１０１】
（実施の形態３）
更新対象のコンピュータプログラムの退避先は、車内に配されているＥＣＵ１ｂ，１，１，…のみならず、通信線２に一時的に接続される装置が内蔵する記憶部を用いる構成としてもよい。
【０１０２】
図１０は、実施の形態３における制御システムの構成を示すブロック図である。実施の形態３における制御システムは、複数のＥＣＵ１ｂ，１ｃ，１ｄと、ＥＣＵ１ｂ，１ｃ，１ｄが接続される通信線２と、通信線２に接続されている中継装置４と、中継装置４に接続されている他の通信線５と、通信線５に接続される通信装置６とを含む。
【０１０３】
なお、実施の形態３における構成は、中継装置４を介して通信線５に接続される通信装置６とも通信が可能であり、通信装置６も退避先の候補となること以外は、実施の形態２における構成と共通する。したがって、実施の形態２と共通する構成には、同一の符号を付して詳細な説明を省略する。
【０１０４】
中継装置４は、通信線２及び通信線５の両方に接続されており、通信線５を介して通信装置６から受信した情報を、必要であれば通信線２へ送出し、通信線２を介してＥＣＵ１ｃ，１ｂ，１ｄから受信した情報を、必要であれば通信線５へ送出する機能を有する。中継装置４は、ＥＣＵ１ｃからの「利用可能な空き容量」の問い合わせメッセージ及び各種通知を、通信線２を介して受信した場合、通信線５を介して通信装置６へ送信し、通信装置６から応答メッセージを受信した場合、通信線２を介してＥＣＵ１ｃへ送信する。また、中継装置４は、ＥＣＵ１ｃと通信装置６との間の更新対象の制御プログラム１２ｃの送受信を中継する。なお、通信線２を介した通信は、実施の形態１及び２同様にＣＡＮプロトコルに準じて実現されるが、通信線５を介した通信は、ＣＡＮ以外でよく、例えば光通信等でもよい。
【０１０５】
通信装置６は、例えば車内に持ち込まれたノート型のパーソナルコンピュータ、携帯情報端末装置、又は携帯電話機等の、記憶部を備える電子装置である。通信装置６は、制御部６０と、記憶部６１、一時記憶部６２、及び通信部６３を備える。
【０１０６】
制御部６０は、ＣＰＵを用いる。記憶部６１は、ハードディスク又はフラッシュメモリを用いる。通信装置６の記憶部６１は、ＥＣＵ１ｃよりも大容量の記憶容量を有している。一時記憶部６２は、ＳＲＡＭ又はＤＲＡＭ等を用い、制御部６０の処理により発生する種々の情報を一時的に記憶する。通信部６０は、通信線５を介して中継装置４との通信を実現する。通信部６０は例えば、光通信に対応している。通信部６０は、無線通信機能を有し、通信線５ではなく空気中の伝送波を介して中継装置４と通信、又はＥＣＵ１ｃと通信が可能な構成であってもよい。
【０１０７】
このように構成される実施の形態３の制御システムで、ＥＣＵ１ｃの制御プログラム１２ｃを更新する方法について、説明する。
【０１０８】
実施の形態３における更新方法は、実施の形態２の図６〜図８のフローチャートに示した処理手順と同様である。中継装置４を介した通信装置６の制御部６０も、ＥＣＵ１ｂ，１ｄと同様の処理を行なうことにより、同様の処理手順で実現することが可能である。ＥＣＵ１ｃから通信装置６へのメッセージの送受信、退避する制御プログラム１２ｃの送受信が、中継装置４を介して行なわれているか否かの違いのみである。したがって、フローチャートを参照した詳細な説明を省略する。
【０１０９】
図１１は、実施の形態３におけるＥＣＵ１ｃの制御部１０ｃにて作成されるテーブルの内容例を示す説明図である。図１１に示すテーブルには、ＥＣＵ１ｂ及びＥＣＵ１ｄの装置に加え、通信装置６も加えた装置毎に、制御システム内での装置ＩＤ、各装置が持ち込み装置であるか否かの区別、各装置の「利用可能な空き容量」（ＫＢ：キロバイト）、記憶装置の種別、及び優先順位をリスト化してある。
【０１１０】
図１１に示す例では、ＥＣＵ１ｂは、装置ＩＤが「０００１」であり、既存の車載装置であると記憶されている。また、ＥＣＵ１ｂの「利用可能な空き容量」は、応答メッセージに基づき１２４（ＫＢ）であると記憶されている。また、ＥＣＵ１ｂの記憶部１１ｂの記憶装置の種別はＨＤＤ（ハードディスク）であると記憶されている。一方でＥＣＵ１ｄは、装置ＩＤが「０００２」であり、同様に既存の車載装置であると記憶されている。また、ＥＣＵ１ｄの「利用可能な空き容量」は、応答メッセージに基づき３３（ＫＢ）であり、記憶部１１ｄの記憶装置の種別はフラッシュメモリであると記憶されている。
【０１１１】
図１１に示す例では更に、通信装置６は、装置ＩＤが「０００３」であり、持ち込み装置であると記憶されている。また、通信装置６の「利用可能な空き容量」は、応答メッセージに基づき２２８９（ＫＢ）であると記憶されている。また、通信装置６の記憶部６１の記憶装置の種別はＨＤＤであると記憶されている。
【０１１２】
また、図１１に示す例では、実施の形態２における例と同様に、「利用可能な空き容量」の大きさ順に、優先順位が付与されている。図１１に示す例では、通信装置６の２２８９（ＫＢ）が最も大きいので、通信装置６に対応する装置ＩＤ「０００３」の優先順位が「１」と付与されている。ＥＣＵ１ｂに対応する装置ＩＤ「０００１」には「優先順位」が「２」、ＥＣＵ１ｄに対応する装置ＩＤ「０００２」には「優先順位」が「３」と付与されている。
【０１１３】
図１１に示す例のように作成されるテーブルに基づき、ＥＣＵ１ｃの制御部１０ｃが退避先を決定した場合、優先順位が「１」である通信装置６を退避先と決定する。このように、車両点検時に一時的に車両の制御システムに持ち込まれる装置も、更新対象のコンピュータプログラムの退避先とすることが可能となり、ＥＣＵ１ｃの記憶部１１ｃの記憶容量が、車載装置であるＥＣＵ１ｃを簡易で安価な構成とするために比較的小さい構成であった場合でも、更新に失敗したときに復旧が可能となる。
【０１１４】
（変形例）
実施の形態１から３では、診断装置３はＥＣＵ１ａ又はＥＣＵ１ｃの外部コネクタ１５ａ又は外部コネクタ１５ｃに接続される構成とした。しかしながら、診断装置３は、通信線２に直接的に接続される外部コネクタに接続され、診断装置３から通信線２を介して更新要求、及び新たなコンピュータプログラムがＥＣＵ１ａ又はＥＣＵ１ｃへ送信される構成としてもよい。
【０１１５】
図１２は、変形例における制御システムの構成を示すブロック図である。変形例における制御システムは、ＥＣＵ１ａ，１ｂと、通信線２と、通信線２に接続される外部コネクタ７とを含む。変形例では、外部装置である診断装置３は外部コネクタ４に接続されている。
【０１１６】
この場合、プログラム更新要求は、ＣＡＮプロトコルに準じ、プログラムの更新要求というメッセージに割り振られたＩＤが含まれるデータフレームを、診断装置３が通信線２へ送出することにより実現される。当該データフレームには、プログラムの更新対象であるＥＣＵ１ａを送信先とする情報を含むことが望ましい。また、更新対象のコンピュータプログラムは、ＥＣＵ１ａを送信先とするデータフレームで、複数回に分けて送信される。その他の構成は、ＥＣＵ１ａと診断装置３との間の通信が、ＣＡＮプロトコルに準じて通信線２を介して行なわれること以外は、実施の形態１と同様の方法で実現される。
【０１１７】
実施の形態１乃至３及び変形例では、本発明は車両に搭載される車両制御システムに適用される例を示した。しかしながら本発明はこれに限らず、通信手段を備えて相互にデータを送受信して連携により制御を行なう多様な制御システムに適用することができる。
【０１１８】
なお、上述のように開示された本実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１１９】
１ａ，１ｂ，１ｃ，１ｄ  ＥＣＵ
１０ａ，１０ｂ，１０ｃ，１０ｄ  制御部
１１ａ，１１ｂ，１１ｃ，１１ｄ  記憶部
１２ａ，１２ｃ  更新対象の制御プログラム
１４ａ，１４ｂ，１４ｃ，１４ｄ  通信部
２  通信線
３  診断装置
６  通信装置
６０  制御部
６１  記憶部
【図１】
2014029619.tif 000003
【図２】
2014029619.tif 000004
【図３】
2014029619.tif 000005
【図４】
2014029619.tif 000006
【図５】
2014029619.tif 000007
【図６】
2014029619.tif 000008
【図７】
2014029619.tif 000009
【図８】
2014029619.tif 000010
【図９】
2014029619.tif 000011
【図１０】
2014029619.tif 000012
【図１１】
2014029619.tif 000013
【図１２】
2014029619.tif 000014