(57)【特許請求の範囲】
【請求項１】
第１のネットワークを介して互いに通信可能に接続された第１種ノードと複数の第２種ノードを含み、前記第１種ノードの動作を決定するプログラムを書き換えるプログラム書き換えシステムであって、
前記第１種ノードは、前記プログラムを保存する第１の記録領域と、前記第１の記録領域に保存された前記プログラムを部分的に書き換えるプログラム書き換え手段を有し、
前記第２種ノードは、前記プログラムの書き換え用プログラムの一部分である分割プログラムを保存する第２の記録領域と、前記第１種ノードへの前記分割プログラムの送信可否を判断する送信可否判断手段を有し、
前記各第２種ノードは、前記送信可否判断手段が前記第１種ノードへの前記分割プログラムの送信が可能であると判断した場合に、自身が保存する前記分割プログラムを前記第１のネットワークを介して前記第１種ノードに送信し、前記第１種ノードは、前記各第２種ノードから前記分割プログラムを受信する度に、前記第１の記録領域に保存された前記プログラムの該分割プログラムに該当する部分を、前記プログラム書き換え手段により書き換えることを特徴とするプログラム書き換えシステム。
【請求項２】
前記第１のネットワークに随時接続され、前記第１のネットワークを介して前記第１種ノード及び複数の前記第２種ノードと互いに通信可能な第３種ノードをさらに含み、
前記第３種ノードは、前記書き換え用プログラムを保存する第３の記録領域と、前記第３の記録領域に保存された前記書き換え用プログラムを分割し前記分割プログラムを作成する第１のプログラム分割手段を有し、前記第１のプログラム分割手段により作成された前記分割プログラムは、それぞれ前記第１のネットワークを介して前記各第２種ノードに送信されることを特徴とする請求項１記載のプログラム書き換えシステム。
【請求項３】
前記第１のネットワークと第２のネットワークに接続され、前記第１のネットワークを介して前記第１種ノード及び複数の前記第２種ノードと互いに通信可能な第４種ノードと、前記第２のネットワークに随時接続され、前記第２のネットワークを介して前記第４種ノードと互いに通信可能な第５種ノードをさらに含み、
前記第５種ノードは、前記書き換え用プログラムを保存する第５の記録領域を有し、前記第５の記録領域に保存された前記書き換え用プログラムを前記第２のネットワークを介して前記第４種ノードに送信し、
前記第４種ノードは、前記第５種ノードから受信した前記書き換え用プログラムを保存する第４の記録領域と、前記第４の記録領域に保存された前記書き換え用プログラムが一定量になる毎に該書き換え用プログラムから前記分割プログラムを作成する第２のプログラム分割手段を有し、前記第２のプログラム分割手段により作成された前記分割プログラムは、それぞれ前記第１のネットワークを介して前記各第２種ノードに送信されることを特徴とする請求項１記載のプログラム書き換えシステム。
【請求項４】
前記第１種ノードは、自身が前記プログラムを書き換え可能な状態であるか否かを検出する第１の状態検出手段を有し、前記第１の状態検出手段により書き換え可能であると検出された場合は、前記第１のネットワークを介して前記第２種ノードに通知し、通知を受けた前記第２種ノードは、自身が保存する前記分割プログラムを前記第１種ノードに送信することを特徴とする請求項１記載のプログラム書き換えシステム。
【請求項５】
前記第２種ノードは、前記第１種ノードが前記プログラムを書き換え可能な状態であるか否かを検出する第２の状態検出手段を有し、前記第２の状態検出手段により書き換え可能であると検出された場合は、自身が保存する前記分割プログラムを前記第１種ノードに送信することを特徴とする請求項１記載のプログラム書き換えシステム。
【請求項６】
前記第４種ノードは、前記第１種ノードが前記プログラムを書き換え可能な状態であるか否かを検出する第３の状態検出手段を有し、前記第３の状態検出手段により書き換え可能であると検出された場合は、前記第１のネットワークを介して前記第２種ノードに通知し、通知を受けた前記第２種ノードは、自身が保存する前記分割プログラムを前記第１種ノードに送信することを特徴とする請求項３記載のプログラム書き換えシステム。
【請求項７】
前記第２種ノードは、前記分割プログラムを暗号化する暗号化手段を有し、前記暗号化手段により暗号化した前記分割プログラムを前記第２の記録領域に保存することを特徴とする請求項１記載のプログラム書き換えシステム。
【請求項８】
前記第３種ノードは、前記分割プログラムを暗号化する暗号化手段を有し、前記暗号化手段により暗号化した前記分割プログラムを前記各第２種ノードに送信し、前記各第２種ノードは、暗号化された前記分割プログラムを前記第２の記録領域に保存することを特徴とする請求項２記載のプログラム書き換えシステム。
【請求項９】
前記第４種ノードは、前記分割プログラムを暗号化する暗号化手段を有し、前記暗号化手段により暗号化した前記分割プログラムを前記各第２種ノードに送信し、前記各第２種ノードは、暗号化された前記分割プログラムを前記第２の記録領域に保存することを特徴とする請求項３記載のプログラム書き換えシステム。
【請求項１０】
前記第１種ノードは、暗号化された前記分割プログラムを復号化する復号化手段を有し、前記第２種ノードから暗号化された前記分割プログラムを受信した際に、前記復号化手段により前記分割プログラムを復号化することを特徴とする請求項７〜請求項９のいずれか一項に記載のプログラム書き換えシステム。
【請求項１１】
前記第２種ノードは、暗号化された前記分割プログラムを復号化する復号化手段を有し、前記第２の記録領域に保存された暗号化された前記分割プログラムを前記復号化手段により復号化して、前記第１種ノードに送信することを特徴とする請求項７〜請求項９のいずれか一項に記載のプログラム書き換えシステム。
【請求項１２】
第１のネットワークに常時接続されている第１種ノード及び複数の第２種ノードと、前記第１のネットワークに随時接続される第３種ノードにおいて、前記第１種ノードに保存された前記第１種ノードの動作を決定するプログラムを書き換えるプログラム書き換え方法であって、
前記プログラムの書き換え用プログラムを保存する前記第３種ノードにおいて、前記書き換え用プログラムを分割して分割プログラムを作成し、それぞれの分割プログラムを前記第１のネットワークを介して前記各第２種ノードに送信するステップ、
前記第２種ノードにおいて、受信した前記分割プログラムを保存するステップ、
前記第２種ノードにおいて、前記第１種ノードへの前記分割プログラムの送信可否を判断し、送信可能と判断した場合に自身が保存している前記分割プログラムを前記第１のネットワークを介して前記第１種ノードに送信するステップ、
前記第１種ノードにおいて、前記各第２種ノードから前記分割プログラムを受信する度に、前記プログラムの該分割プログラムに該当する部分を書き換えるステップを含むことを特徴とするプログラム書き換え方法。
【請求項１３】
第１のネットワークに常時接続されている第１種ノード、複数の第２種ノード、及び第４種ノードと、前記第４種ノードに第２のネットワークを介して随時接続される第５種ノードにおいて、前記第１種ノードに保存された前記第１種ノードの動作を決定するプログラムを書き換えるプログラム書き換え方法であって、
前記プログラムの書き換え用プログラムを保存する前記第５種ノードにおいて、前記書き換え用プログラムを前記第２のネットワークを介して前記第４種ノードに送信するステップ、
前記第４種ノードにおいて、受信した前記書き換え用プログラムを一定量保存する毎に、保存した前記書き換え用プログラムから前記書き換え用プログラムの一部分となる分割プログラムを作成し、該分割プログラムを前記第１のネットワークを介して前記第２種ノードに送信するステップ、
前記第２種ノードにおいて、受信した前記分割プログラムを保存するステップ、
前記第２種ノードにおいて、前記第１種ノードへの前記分割プログラムの送信可否を判断し、送信可能と判断した場合に自身が保存している前記分割プログラムを前記第１のネットワークを介して前記第１種ノードに送信するステップ、
前記第１種ノードにおいて、前記各第２種ノードから前記分割プログラムを受信する度に、前記プログラムの該分割プログラムに該当する部分を書き換えるステップを含むことを特徴とするプログラム書き換え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム書き換えシステム及びプログラム書き換え方法に関し、特にネットワークに接続された複数の制御装置におけるプログラムの書き換え方法に関する。
【背景技術】
【０００２】
従来、ネットワークに接続された制御装置のプログラム書き換え方法として、例えば特許文献１に提示された方法が知られている。特許文献１におけるプログラム書き換え方法について図１６を用いて説明する。図１６（ａ）に示すように、車両のネットワーク８には、外部とのインターフェイス機能を有する書き換えを実施する第１の制御装置１６と、統括制御装置１７と、プログラムのデータを書き換える対象である第２の制御装置１８と、複数ある第３の制御装置１９が接続されている。
【０００３】
統括制御装置１７は、外部とのインターフェイス機能を有する第１の制御装置１６と所定の機能を有するゲートウェイ１７ａを介して接続されており、さらに、所定のデータを記憶しうる記憶媒体１７ｂと、全体を制御するＣＰＵ１７ｃを有している。また、プログラムデータの書き換え対象である第２の制御装置１８は、所定のデータを記憶する記憶媒体１８ａと、所定の入力信号により最適な制御を行うことができるＣＰＵ１８ｂとメモリ１８ｃを有している。
【０００４】
また、図１６（ｂ）に示すように、第１の制御装置１６は、データ入力部１６ａと、データ入力部１６ａからのデータを一時的に記憶する記憶装置１６ｅと、第１の制御装置１６全体を制御するＣＰＵ１６ｄと、ゲートウェイ１７ａとの間の入出力インターフェイスを構成する第１のインターフェイス部１６ｃと、表示部などの出力部に出力する第２のインターフェイス部１６ｂを有している。
【０００５】
この先行例では、第２の制御装置１８のプログラムデータの書き換えを実施する際に、第１の制御装置１６のデータ入力部１６ａから入力されたプログラム書き換え用のデータは、ＣＰＵ１６ｄの制御に基づいてデータ出力部１６ｃを介してゲートウェイ１７ａに出力される。その後、ゲートウェイ１７ａを経由して、統括制御装置１７の記録媒体１７ｂに一時蓄積される。さらに、電圧や温度範囲等の書き換え実施条件が満たされた時に、プログラム書き換え用のデータを第２の制御装置１８の記録媒体１８ａへ車両のネットワーク８を介して送信する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第４６６８６５６号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に提示されたプログラムの書き換え方法では、１つの通信ノードである統括制御装置１７内に、プログラム書き換え用のデータ全てを記録する容量を持つ記録媒体１７ｂが必要であり、そのためにコストが上昇するという課題があった。
【０００８】
本発明は、上記のような課題を解決するためになされたものであり、ネットワークに接続された制御装置のプログラムの書き換えを効率良く実施することができ、且つ１つのノードがコスト高とならないようにしたプログラム書き換えシステム及びプログラム書き換え方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係るプログラム書き換えシステムは、第１のネットワークを介して互いに通信可能に接続された第１種ノードと複数の第２種ノードを含み、第１種ノードの動作を決定するプログラムを書き換えるプログラム書き換えシステムであって、第１種ノードは、プログラムを保存する第１の記録領域と、第１の記録領域に保存されたプログラムを部分的に書き換えるプログラム書き換え手段を有し、第２種ノードは、プログラムの書き換え用プログラムの一部分である分割プログラムを保存する第２の記録領域と、第１種ノードへの分割プログラムの送信可否を判断する送信可否判断手段を有し、各第２種ノードは、送信可否判断手段が第１種ノードへの分割プログラムの送信が可能であると判断した場合に、自身が保存する分割プログラムを第１のネットワークを介して第１種ノードに送信し、第１種ノードは、各第２種ノードから分割プログラムを受信する度に、第１の記録領域に保存されたプログラムの該分割プログラムに該当する部分を、プログラム書き換え手段により書き換えるものである。
【００１０】
また、本発明に係るプログラム書き換え方法は、第１のネットワークに常時接続されている第１種ノード及び複数の第２種ノードと、第１のネットワークに随時接続される第３種ノードにおいて、第１種ノードに保存された第１種ノードの動作を決定するプログラムを書き換えるプログラム書き換え方法であって、プログラムの書き換え用プログラムを保存する第３種ノードにおいて、書き換え用プログラムを分割して分割プログラムを作成し、それぞれの分割プログラムを第１のネットワークを介して各第２種ノードに送信するステップと、第２種ノードにおいて、受信した分割プログラムを保存するステップと、第２種ノードにおいて、第１種ノードへの分割プログラムの送信可否を判断し、送信可能と判断した場合に自身が保存している分割プログラムを第１のネットワークを介して第１種ノードに送信するステップと、第１種ノードにおいて、各第２種ノードから分割プログラムを受信する度に、プログラムの該分割プログラムに該当する部分を書き換えるステップを含むものである。
【００１１】
また、第１のネットワークに常時接続されている第１種ノード、複数の第２種ノード、及び第４種ノードと、第４種ノードに第２のネットワークを介して随時接続される第５種ノードにおいて、第１種ノードに保存された第１種ノードの動作を決定するプログラムを書き換えるプログラム書き換え方法であって、プログラムの書き換え用プログラムを保存する第５種ノードにおいて、書き換え用プログラムを第２のネットワークを介して第４種ノードに送信するステップと、第４種ノードにおいて、受信した書き換え用プログラムを一定量保存する毎に、保存した書き換え用プログラムから書き換え用プログラムの一部分となる分割プログラムを作成し、該分割プログラムを第１のネットワークを介して第２種ノードに送信するステップと、第２種ノードにおいて、受信した分割プログラムを保存するステップと、第２種ノードにおいて、第１種ノードへの分割プログラムの送信可否を判断し、送信可能と判断した場合に自身が保存している分割プログラムを第１のネットワークを介して第１種ノードに送信するステップと、第１種ノードにおいて、各第２種ノードから分割プログラムを受信する度に、プログラムの該分割プログラムに該当する部分を書き換えるステップを含むものである。
【発明の効果】
【００１２】
本発明の請求項１に係るプログラム書き換えシステムによれば、複数の第２種ノードに書き換え用プログラムの一部分である分割プログラムを保存させるようにし、各第２種ノードは、自身が保存する分割プログラムをそれぞれ第１種ノードに送信し、第１種ノードは、各第２種ノードから分割プログラムを受信する度に、プログラムの該分割プログラムに該当する部分を書き換えるようにしたので、効率の良いプログラムの書き換えを実施することができるとともに、第２種ノードに全ての書き換え用プログラムを保存できるほどの大きな記録容量を設ける必要がなく、一つのノードがコスト高になることを防ぐことができ、全体としてのコストが抑えられる。 
【００１３】
また、本発明の請求項１２に係るプログラム書き換え方法によれば、第３種ノードは、保存している書き換え用プログラムを分割して複数の第２種ノードに送信し、送信が終了すると第１のネットワークから切り離すことが可能であるため、効率の良いプログラムの書き換えを実施することができると共に、第２種ノードに全ての書き換え用プログラムを保存できるほどの大きな記録容量を設ける必要がないため、一つのノードがコスト高になることを防ぐことができ、全体としてのコストが抑えられる。
【００１４】
また、本発明の請求項１３に係るプログラム書き換え方法によれば、第５種ノードは、保存している書き換え用プログラムの第４種ノードへの送信が終了すると、第２のネットワークから切り離すことが可能であるため、効率の良いプログラムの書き換えを実施することができると共に、第４種ノードは書き換え用プログラムを一定量保存する毎に分割プログラムを作成し、その都度第２種ノードに送信するため、第４種ノード及び第２種ノード共に全ての書き換え用プログラムを保存できるほどの大きな記録容量を設ける必要がなく、一つのノードがコスト高になることを防ぐことができ、全体としてのコストが抑えられる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態１に係るプログラム書き換え方法が実施される車両制御システムの構成を示すブロック図である。
【図２】本発明の実施の形態１に係るプログラム書き換えシステムにおける第１〜第３種ノードの記録装置の領域構成を示す図である。
【図３】本発明の実施の形態１に係るプログラム書き換えシステムの第１種ノードにおける処理の流れを示す図である。
【図４】本発明の実施の形態１に係るプログラム書き換えシステムの第２種ノード及び第３種ノードにおける処理の流れを示す図である。
【図５】本発明の実施の形態１に係るプログラム書き換えシステムにおける各ノードの処理の流れを時間軸に沿って示す図である。
【図６】本発明の実施の形態２に係るプログラム書き換え方法が実施される車両制御システムの構成を示すブロック図である。
【図７】本発明の実施の形態２に係るプログラム書き換えシステムにおける第４及び第５種ノードの記録装置の領域構成を示す図である。
【図８】本発明の実施の形態２に係るプログラム書き換えシステムの第５種ノードにおける処理の流れを示す図である。
【図９】本発明の実施の形態２に係るプログラム書き換えシステムの第４種ノードにおける処理の流れを示す図である。
【図１０】本発明の実施の形態２に係るプログラム書き換えシステムの第１種ノードにおける処理の流れを示す図である。
【図１１】本発明の実施の形態２に係るプログラム書き換えシステムにおける各ノードの処理の流れを時間軸に沿って示す図である。
【図１２】本発明の実施の形態３に係るプログラム書き換え方法が実施される車両制御システムの構成を示すブロック図である。
【図１３】本発明の実施の形態３に係るプログラム書き換えシステムの第２種ノードにおける処理の流れを示す図である。
【図１４】本発明の実施の形態３に係るプログラム書き換えシステムの第４種ノードにおける処理の流れを示す図である。
【図１５】本発明の実施の形態３に係るプログラム書き換えシステムにおける各ノードの処理の流れを時間軸に沿って示す図である。
【図１６】従来のプログラム書き換えシステムを示すブロック図である。
【発明を実施するための形態】
【００１６】
以下に、本発明を実施するための実施の形態１〜実施の形態３について、図面に基づいて説明する。なお、全ての図において、図中、同一、相当部分には、同一符号を付している。
【００１７】
実施の形態１．
図１は、本実施の形態１に係るプログラム書き換え方法が実施される車両制御システムの構成を示し、本実施の形態１に係るプログラム書き換えシステムは、図１に示す車両制御システムに含まれるものである。なお、図１において、各制御装置及びテスタは、図１に示す以外の構成物も備えているが、本実施の形態１に直接関係しないものについては図示を省略している。また、図２は、本実施の形態１に係る車両制御システムにおける第１〜第３種ノードに備えられた記録装置の領域構成を示している。
【００１８】
本実施の形態１に係る車両制御システムは、第１種ノードであるバッテリ制御装置１と、第２種ノードであるＥＰＳ（Ｅｌｅｃｔｒｉｃ  Ｐｏｗｅｒ  Ｓｔｅｅｒｉｎｇ）制御装置２ａ及びモータ制御装置２ｂと、第３種ノードであるテスタ３を含み、これらは第１のネットワークである車両のＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）ネットワーク６を介して互いに通信可能に接続されている。
【００１９】
バッテリ制御装置１はバッテリ１０に接続され、これを制御し、同様にＥＰＳ制御装置２ａはＥＰＳ２０ａに、モータ制御装置２ｂは駆動用モータ２０ｂに接続され、それぞれを制御している。なお、図１に示すテスタ３以外の制御装置は常時ＣＡＮネットワーク６に接続されているが、テスタ３は、ＣＡＮネットワーク６に常時接続されているのではなく、プログラムの書き換えや各ノードの故障診断時等、必要な時に随時接続される。
【００２０】
バッテリ制御装置１の構成と機能について簡単に説明する。マイコン１１は、バッテリ１０の制御に関わる制御量や各種処理値を演算する。ＣＡＮネットワーク用データ送受信手段であるデータ送受信手段１２は、ＣＡＮネットワーク６を介して、接続された他の制御装置（ＥＰＳ制御装置２ａ、モータ制御装置２ｂ、テスタ３を含む）とデータを送受信する。また、記録装置１３は、書き換え対象であるバッテリ制御プログラムを保存する第１の記録領域を有している。バッテリ制御プログラムは、バッテリ制御装置１の動作（制御内容）を決定し、演算を行うものである。
【００２１】
記録装置１３の領域構成について、図２（ａ）を用いて説明する。記録装置１３は、バッテリ制御プログラムを部分的に書き換えるためのプログラム書き換えプログラムを保存するプログラム書き換えプログラム記録領域１３１と、バッテリ制御プログラムを保存する第１の記録領域であるバッテリ制御プログラム記録領域１３２と、バッテリ１０の制御に関わるデータ等を保存するバッテリ制御プログラム用記録領域（データ用）１３３を備えている。
【００２２】
さらに、バッテリ制御装置１のプログラム書き換え手段１４は、記録装置１３のバッテリ制御プログラム記録領域１３２に保存されたバッテリ制御プログラムを部分的に書き換える。その際には、記録装置１３のプログラム書き換えプログラム記録領域１３１に記録されたプログラム書き換えプログラムを用いる。
【００２３】
また、第１の状態検出手段である状態検出手段１５は、（第１種ノード）自身がバッテリ制御プログラムを書き換え可能な状態であるか否か、あるいはバッテリ制御プログラムが全て書き換えられているか否か等の状態を検出する。状態検出手段１５により書き換え可能であると検出された場合は、ＣＡＮネットワーク６を介してＥＰＳ制御装置２ａ及びモータ制御装置２ｂに通知し、通知を受けたＥＰＳ制御装置２ａ及びモータ制御装置２ｂは、自身が保存する分割プログラムを、ＣＡＮネットワーク６を介してバッテリ制御装置１に送信する。
【００２４】
バッテリ制御装置１は、ＥＰＳ制御装置２ａまたはモータ制御装置２ｂから分割プログラムを受信する度に、バッテリ制御プログラム記録領域１３２に保存されたバッテリ制御プログラムの該分割プログラムに該当する部分を、プログラム書き換え手段１４により書き換える。
【００２５】
次に、ＥＰＳ制御装置２ａの構成と機能について簡単に説明する。マイコン２１ａは、ＥＰＳ２０ａの制御量や各種処理値を演算する。データ送受信手段２２ａは、ＣＡＮネットワーク６を介して、接続された他の制御装置（バッテリ制御装置１、モータ制御装置２ｂ、テスタ３を含む）とデータを送受信する。また、記録装置２３ａは、バッテリ制御プログラムの書き換え用プログラムの一部分である分割バッテリ制御プログラム（以下、分割プログラムと略す）を保存する第２の記録領域を有している。
【００２６】
記録装置２３ａの領域構成について、図２（ｂ）を用いて説明する。記録装置２３ａは、ＥＰＳ２０ａの制御内容を決定するＥＰＳ制御プログラムを保存するＥＰＳ制御プログラム記録領域２３１ａと、ＥＰＳ２０ａの制御に関わるデータ等を保存するＥＰＳ制御プログラム用記録領域（データ用）２３２ａと、分割プログラムを一時的に保存する第２の記録領域である分割バッテリ制御プログラム記録領域２３３ａを備えている。なお、分割バッテリ制御プログラム記録領域２３３ａには、記録装置２３ａの空き領域等を割り当てることができる。
【００２７】
また、送信可否判断手段２４ａは、バッテリ制御装置１への分割プログラムの送信可否を判断する。送信可否判断手段２４ａによりバッテリ制御装置１への分割プログラムの送信が可能であると判断された場合には、自身が保存する分割プログラムを、ＣＡＮネットワーク６を介してバッテリ制御装置１に送信する。
【００２８】
次に、モータ制御装置２ｂの構成と機能について簡単に説明する。マイコン２１ｂは、駆動用モータ２０ｂの制御量や各種処理値を演算する。データ送受信手段２２ｂは、ＣＡＮネットワーク６を介して、接続された他の制御装置（バッテリ制御装置１、ＥＰＳ制御装置２ａ、テスタ３を含む）とデータを送受信する。また、記録装置２３ｂは、バッテリ制御プログラムの書き換え用プログラムを分割した一部分である分割プログラムを保存する第２の記録領域を有している。
【００２９】
記録装置２３ｂの領域構成について、図２（ｃ）を用いて説明する。記録装置２３ｂは、駆動用モータ２０ｂの制御内容を決定するモータ制御プログラムを保存するモータ制御プログラム記録領域２３１ｂと、駆動用モータ２０ｂの制御に関わるデータ等が記録されるモータ制御プログラム用記録領域（データ用）２３２ｂと、分割プログラムを一時的に保存する第２の記録領域である分割バッテリ制御プログラム記録領域２３３ｂを備えている。なお、分割バッテリ制御プログラム記録領域２３３ｂには、記録装置２３ｂの空き領域等を割り当てることができる。
【００３０】
また、送信可否判断手段２４ｂは、バッテリ制御装置１への分割プログラムの送信可否を判断する。送信可否判断手段２４ｂによりバッテリ制御装置１への分割プログラムの送信が可能であると判断された場合には、自身が保存する分割プログラムを、ＣＡＮネットワーク６を介してバッテリ制御装置１に送信する。
【００３１】
次に、テスタ３の構成と機能について簡単に説明する。マイコン３１は、テスタ３の動作に関わる各種処理を実施する。データ送受信手段３２は、ＣＡＮネットワーク６を介して、接続された他の制御装置（バッテリ制御装置１、ＥＰＳ制御装置２ａ、モータ制御装置２ｂを含む）とデータを送受信する。また、記録装置３３は、図２（ｄ）に示すように、バッテリ制御プログラムの書き換え用プログラムを保存する第３の記録領域であるバッテリ制御プログラム記録領域３３１を備えている。
【００３２】
さらに、第１のプログラム分割手段であるプログラム分割手段３４は、記録装置３３の
バッテリ制御プログラム記録領域３３１に保存された書き換え用プログラムを分割し、分割プログラムを作成する。プログラム分割手段３４により作成された分割プログラムは、それぞれＣＡＮネットワーク６を介してＥＰＳ制御装置２ａ及びモータ制御装置２ｂに送信される。
【００３３】
次に、本実施の形態１に係るプログラム書き換えシステムの各ノードにおける処理の流れについて、図３及び図４のフローチャートを用いて説明する。図３は、第１種ノードであるバッテリ制御装置１におけるプログラム書き換えに関する処理の流れを示している。なお、バッテリ制御装置１では、バッテリ１０の制御に関わる通常の処理と、バッテリ制御プログラムの書き換えに関する処理が実施される。プログラム書き換えに関する処理は、テスタ３から書き換え実施の通知（書き換え指示）があった場合に実施される。図３は、テスタ３からの書き換え実施の通知を受信した後の処理フローを示している。
【００３４】
まず、ステップ３０１（Ｓ３０１）において、状態検出手段１５は、バッテリ制御装置１がバッテリ１０の制御に関わる通常の処理を実施しているか否かを判断する。通常の処理が実施されている場合（ＹＥＳ）は、ステップ３０２（Ｓ３０２）へ進み、実施されていない場合（ＮＯ）は、ステップ３０９（Ｓ３０９）へ進み、通常の書き換え処理を実施する。なお、Ｓ３０９の通常の書き換え処理とは、テスタ３から、バッテリ制御装置１のバッテリ制御プログラムを書き換える従来の書き換え方法によるものであり、本発明の特徴である書き換え用プログラムを分割して行うものではないため、説明を省略する。
【００３５】
バッテリ制御装置１がバッテリ１０の制御に関わる通常の処理を実施している場合は、その間、バッテリ制御プログラムの書き換え不可であるため、Ｓ３０２において、関連ノードへ分割書き換えを実施することを通知し、ステップ３０３（Ｓ３０３）へ進む。Ｓ３０３において、状態検出手段１５は再度、通常の処理が実施されているかどうかを判断し、通常の処理が実施されていなければ、書き換え可能（ＹＥＳ）であるためステップ３０４（Ｓ３０４）へ進み、通常の処理が実施されている場合には、終了まで待機する。
【００３６】
続いて、Ｓ３０４において、状態検出手段１５は、記録装置１３のバッテリ制御プログラム記録領域１３２に保存されたバッテリ制御プログラムの全ての領域（部分）が書き換えられているか否かを判断する。全て書き換えられている場合は（ＹＥＳ）、本処理を終了し、書き換えられていなければ（ＮＯ）、ステップ３０５（Ｓ３０５）へ進む。
【００３７】
Ｓ３０５において、状態検出手段１５は、バッテリ制御プログラム記録領域１３２に保存されたバッテリ制御プログラムが書き換え中であるか否かを判断する。いずれの部分も書き換え中でなければ（ＮＯ）、ステップ３０６（Ｓ３０６）へ進み、書き換え中であれば（ＹＥＳ）、書き換えが終了するまで待機する。
【００３８】
Ｓ３０６において、状態検出手段１５は、書き換えが終了していないバッテリ制御プログラムの部分に該当する分割プログラムを保存している第２種ノードに対し、データ送受信手段１２により送信指示をし、ステップ３０７（Ｓ３０７）へ進む。Ｓ３０７では、データ送受信手段１２により分割プログラムを受信し、ステップ３０８（Ｓ３０８）へ進む。Ｓ３０８において、プログラム書き換え手段１４は、プログラム書き換えプログラムを用い、受信した分割プログラムに該当するバッテリ制御プログラムの部分を書き換える。
【００３９】
次に、第２種ノードであるＥＰＳ制御装置２ａ及びモータ制御装置２ｂにおけるプログラム書き換えに関する処理の流れについて、図４（ａ）を用いて説明する。ＥＰＳ制御装置２ａ（またはモータ制御装置２ｂ）では、ＥＰＳ２０ａ（または駆動用モータ２０ｂ）の制御に関わる通常の処理と、バッテリ制御装置１のプログラム書き換えに関する処理が実施される。プログラム書き換えに関する処理は、テスタ３から書き換え実施の通知があった場合に実施されるが、通常の処理が実施されている時には書き換えに関する処理は実施しない。なお、ＥＰＳ制御装置２ａとモータ制御装置２ｂにおけるプログラム書き換えに関する処理は同じであるので、ここではＥＰＳ制御装置２ａを例に挙げて説明する。
【００４０】
ＥＰＳ制御装置２ａは、テスタ３から書き換え実施の通知を受信後、ステップ４０１（Ｓ４０１）において、分割プログラムの受信を待つ。データ送受信手段２２ａにより分割プログラムを受信した場合（ＹＥＳ）は、ステップ４０２（Ｓ４０２）へ進み、受信した分割プログラムを記録装置２３ａの分割バッテリ制御プログラム記録領域２３３ａに保存し、ステップ４０３（Ｓ４０３）へ進む。
【００４１】
Ｓ４０３において、ＥＰＳ制御装置２ａは、バッテリ制御装置１からの分割プログラムの送信指示を待つ。送信指示を受信しない場合（ＮＯ）は、受信するまで待機する。送信指示を受信した場合（ＹＥＳ）、ステップ４０４（Ｓ４０４）へ進み、送信可否判断手段２４ａは、分割プログラムを送信すると判断し、データ送受信手段２２ａにより、分割バッテリ制御プログラム記録領域２３３ａに保存している分割プログラムをバッテリ制御装置１へ送信し、処理を終了する。
【００４２】
次に、第３種ノードであるテスタ３におけるプログラム書き換えに関する処理の流れについて、図４（ｂ）を用いて説明する。テスタ３では、関連ノードへのプログラム書き換え実施の通知と、書き換え用プログラムの送信処理を実施する。なお、図４（ｂ）は、各ノードに対し、バッテリ制御装置１のプログラム書き換え実施を通知した後の処理フローを示している。
【００４３】
まず、ステップ４１１（Ｓ４１１）において、テスタ３のプログラム分割手段３４は、記録装置３３のバッテリ制御プログラム記録領域３３１に記録されている書き換え用プログラムを分割し、分割プログラムを作成する。続いてステップ４１２（Ｓ４１２）において、データ送受信手段３２により、分割プログラムをそれぞれ各第２種ノードへ送信する。本実施の形態１では、第２種ノードを２つ備えているため、書き換え用プログラムを２つに分割し、分割プログラムＡと分割プログラムＢを作成し、例えば分割プログラムＡをＥＰＳ制御装置２ａに、分割プログラムＢをモータ制御装置２ｂに送信する。
【００４４】
次に、ステップ４１３（Ｓ４１３）において、全ての分割プログラムが送信されたか否かを判断する。全ての分割プログラムが送信されていない場合（ＮＯ）、Ｓ４１２へ進み、全て送信されていた場合には（ＹＥＳ）、処理を終了する。
【００４５】
以上、図３及び図４のフローチャートにより、各ノードのプログラム書き換えに関する処理の流れについて説明したが、次に、これら全てのノードの処理の流れを図５のタイムチャートに沿って説明する。図５において、縦軸は各ノード、横軸は時間を示している。なお、図５では、テスタ３は既にＣＡＮネットワーク６に接続されており、各ノード間の通信は、全てＣＡＮネットワーク６を介して行われる。また、ＥＰＳ制御装置２ａ及びモータ制御装置２ｂは、それぞれ通常の処理を実施していないものとする。
【００４６】
ｔ１０において、バッテリ制御装置１は、バッテリ１０の制御に関わる通常の処理を実施している（処理１０）。続いて、ｔ１１において、テスタ３は、データ送受信手段３２により、バッテリ制御装置１に対しプログラム書き換えを実施することを通知する（処理４０）。
【００４７】
テスタ３から書き換え実施通知を受信したバッテリ制御装置１の状態検出手段１５は、バッテリ制御プログラムを書き換え可能な状態であるか否かを判断する（処理１１）。ここでは、通常の処理を実施しているため、書き換え不可と判断される。続いてｔ１２において、バッテリ制御装置１は、ＥＰＳ制御装置２ａ、モータ制御装置２ｂ、及びテスタ３に対し、書き換え実施不可であることを通知する（処理１２）。ＥＰＳ制御装置２ａ、モータ制御装置２ｂ、及びテスタ３は、それぞれバッテリ制御装置１が書き換え不可であることを受信する（処理２０、処理３０、処理４１）。
【００４８】
次に、ｔ１３において、バッテリ制御装置１は、バッテリ１０の制御に関わる通常の処理を再開する（処理１０）。ｔ１４において、テスタ３は、自身が保存しているバッテリ制御プログラムの書き換え用プログラムを、プログラム分割手段３４により分割し、分割プログラムを作成する（処理４２）。なお、ここでは、書き換え用プログラムを分割プログラムＡと分割プログラムＢの２つに分割するものとする。
【００４９】
続いて、ｔ１５において、テスタ３は、分割プログラムＡをＥＰＳ制御装置２ａへ送信する（処理４３）。これを受信したＥＰＳ制御装置２ａは、分割プログラムＡを分割バッテリ制御プログラム記録領域２３３ａに保存する（処理２１）。次に、ｔ１６において、テスタ３は、まず、全ての分割プログラムを送信したか否かを確認する。ここでは、分割プログラムＢが未送信のため、処理を継続し、分割プログラムＢをモータ制御装置２ｂへ送信する（処理４４）。
【００５０】
分割プログラムＢを受信したモータ制御装置２ｂは、分割プログラムＢを分割バッテリ制御プログラム記録領域２３３ｂに保存する（処理３１）。さらに、テスタ３は、全ての分割プログラムを送信したか否かを確認し、ここでは全ての分割プログラムが送信済みのため、処理を終了する。ここまでの処理が終了すると、テスタ３をＣＡＮネットワーク６から取り外すことが可能となる。
【００５１】
その後、ｔ１７において、バッテリ制御装置１が通常の処理を終了すると、ｔ１８において、状態検出手段１５は、バッテリ制御プログラムの書き換えが可能な状態であるか否かを判断する。ここでは、通常の処理を実施していないため、書き換え可能であると判断される。次に、状態検出手段１５は、記録装置１３のバッテリ制御プログラム記録領域１３２に保存されているバッテリ制御プログラムの全ての領域（部分）が書き換えられているか否かを判断する。ここでは、書き換えられていないと判断される。
【００５２】
さらに、状態検出手段１５は、バッテリ制御プログラム記録領域１３２に保存されたバッテリ制御プログラムが書き換え中であるか否かを判断する。ここでは、いずれの部分も書き換え中でないため、バッテリ制御装置１は、ＥＰＳ制御装置２ａへ分割プログラムの送信を指示し（処理１３）、ＥＰＳ制御装置２ａのデータ送受信手段２２ａは、分割プログラムの送信指示を受信する（処理２２）。
【００５３】
続いてｔ１９において、ＥＰＳ制御装置２ａの送信可否判断手段２４ａは、バッテリ制御装置１へ分割プログラムを送信すると判断し、記録装置２３ａの分割バッテリ制御プログラム記録領域２３３ａに保存している分割プログラムＡを、データ送受信手段２２ａにより送信する（処理２３）。これによりＥＰＳ制御装置２ａは処理を終了する。また、分割プログラムＡを受信したバッテリ制御装置１は、プログラム書き換え手段１４により、バッテリ制御プログラムの分割プログラムＡに該当する部分を書き換える（処理１４）。
【００５４】
次に、ｔ２０において、状態検出手段１５は、バッテリ制御プログラム記録領域１３２に保存されているバッテリ制御プログラムの全ての領域（部分）が書き換えられているか否かを判断する。ここでは、書き換えられていないと判断される。さらに、状態検出手段１５は、バッテリ制御プログラム記録領域１３２に保存されたバッテリ制御プログラムが書き換え中であるか否かを判断する。ここでは、いずれの部分も書き換え中でないため、バッテリ制御装置１は、モータ制御装置２ｂへ分割プログラムの送信を指示し（処理１５）、モータ制御装置２ｂのデータ送受信手段２２ｂは、分割プログラムの送信指示を受信する（処理３２）。
【００５５】
続いてｔ２１において、モータ制御装置２ｂの送信可否判断手段２４ｂは、バッテリ制御装置１へ分割プログラムを送信すると判断し、記録装置２３ｂの分割バッテリ制御プログラム記録領域２３３ｂに保存している分割プログラムＢを、データ送受信手段２２ｂにより送信する（処理３３）。これによりモータ制御装置２ｂは処理を終了する。また、分割プログラムＢを受信したバッテリ制御装置１は、プログラム書き換え手段１４により、バッテリ制御プログラムの分割プログラムＢに該当する部分を書き換える（処理１６）。その後、状態検出手段１５は、全てのバッテリ制御プログラムの書き換えが終了しているか否かを判断する。ここでは、全て書き換えられているため、書き換えに関する処理を終了する。
【００５６】
なお、本実施の形態１において、テスタ３に分割プログラムを暗号化する暗号化手段を備え、暗号化手段により暗号化した分割プログラムをＥＰＳ制御装置２ａとモータ制御装置２ｂに送信し、暗号化された分割プログラムをＥＰＳ制御装置２ａとモータ制御装置２ｂに保存するようにしても良い。あるいは、ＥＰＳ制御装置２ａ及びモータ制御装置２ｂに暗号化手段を備え、テスタ３から受信した分割プログラムを暗号化手段により暗号化してから保存するようにしても良い。
【００５７】
また、暗号化手段により暗号化された分割プログラムを復号化する復号化手段をバッテリ制御装置１に備え、ＥＰＳ制御装置２ａまたはモータ制御装置２ｂから暗号化された分割プログラムを受信した際に、復号化手段により分割プログラムを復号化するようにしても良い。あるいは、ＥＰＳ制御装置２ａ及びモータ制御装置２ｂに復号化手段を備え、それらに保存された暗号化された分割プログラムを復号化手段により復号化した後、バッテリ制御装置１に送信するようにしても良い。すなわち、第２種モードに暗号化手段と復号化手段を備えても良い。
【００５８】
上記のような暗号化手段と復号化手段を備えることにより、ＣＡＮネットワーク６で第三者に解読される危険性、またはＥＰＳ制御装置２ａ及びモータ制御装置２ｂに保存時に第三者に解読される危険性を低減することができ、プログラム書き換えを安全に実施することが可能となる。
【００５９】
以上のように、本実施の形態１に係るプログラム書き換システムでは、テスタ３からバッテリ制御装置１へプログラム書き換え実施を通知し、バッテリ制御装置１がバッテリ１０の制御に関わる通常の処理を実施していた場合に、テスタ３は、バッテリ制御プログラムの書き換え用プログラムを分割して分割プログラムを作成し、ＥＰＳ制御装置２ａとモータ制御装置２ｂそれぞれに送信する。
【００６０】
その後、バッテリ制御装置１がプログラム書き換え実施可能となった時点で、ＥＰＳ制御装置２ａとモータ制御装置２ｂは、自身が保存する分割プログラムをそれぞれバッテリ制御装置１に送信し、バッテリ制御装置１は、これらを受信する度に、受信した分割プログラムに該当するバッテリ制御プログラムの部分を書き換えるものである。
【００６１】
このようなプログラム書き換え方法（システム）によれば、バッテリ制御装置１が通常の処理を実施していない所定のタイミングでバッテリ制御プログラムを書き換えることができ、且つ、バッテリ制御装置１が通常の処理を実施中であっても、テスタ３は、書き換え用プログラムを分割し、ＥＰＳ制御装置２ａとモータ制御装置２ｂにそれぞれ分割プログラムを送信し、送信が終了すると所定のタイミングを待つことなくＣＡＮネットワーク６から切り離すことが可能となるため、効率の良いプログラムの書き換えを実施することができる。
【００６２】
さらに、書き換え用プログラムを分割して複数の第２種ノード（本実施の形態１ではＥＰＳ制御装置２ａとモータ制御装置２ｂの２つ）に保存するため、第２種ノードに全ての書き換え用プログラムを保存できるほどの大きな記録容量を設ける必要がなく、一つのノードがコスト高になることを防ぐことができ、全体としてのコストが抑えられる。
【００６３】
実施の形態２．
図６は、本発明の実施の形態２に係るプログラム書き換え方法が実施される車両制御システムの構成を示し、本実施の形態２に係るプログラム書き換えシステムは、図６に示す車両制御システムに含まれるものである。また、図７は、本実施の形態２に係る車両制御システムにおける第４及び第５種ノードに備えられた記録装置の領域構成を示している。なお、図６において、各制御装置及び充電ステーションは、図６に示す以外の構成物も備えているが、本実施の形態２に直接関係しないものについては図示を省略し、上記実施の形態１（図１）において説明したものについては説明を省略する。
【００６４】
本実施の形態２に係る車両制御システムは、上記実施の形態１に係る車両制御システムのテスタ３（第３種ノード）を含まず、第４種ノードである車載充電器制御装置４と、第５種ノードである充電ステーション５を含んで構成される。車載充電器制御装置４は、第１のネットワークであるＣＡＮネットワーク６と第２のネットワークである電力線ネットワーク７ａに接続され、ＣＡＮネットワーク６を介して第１種ノードであるバッテリ制御装置１、及び第２種ノードであるＥＰＳ制御装置２ａ及びモータ制御装置２ｂと互いに通信可能である。
【００６５】
また、充電ステーション５は、車載充電器４０と常時接続されているわけではなく、バッテリ１１６の充電時等、必要に応じて随時、車載充電器４０に電力線７で接続される。それと同時に充電ステーション５と車載充電器制御装置４が電力線７で接続され、充電ステーション５と車載充電器制御装置４の間に、車載充電器４０を介して電力線７を使った電力線ネットワーク７ａが確立される。これにより、車載充電器制御装置４と充電ステーション５は、電力線ネットワーク７ａを介して互いに通信可能となる。
【００６６】
まず、充電ステーション５の構成と機能について簡単に説明する。マイコン５１は、充電ステーション５の動作に関わる各種処理を実施する。電力線ネットワーク用データ送受信手段５２は、電力線ネットワーク７ａを介して、電力線７に接続された車載充電器制御装置４とデータを送受信する。また、記録装置５３は、バッテリ制御プログラムの書き換え用プログラムを保存する第５の記録領域を有する。
【００６７】
記録装置５３の領域構成について、図７（ｂ）を用いて説明する。記録装置５３は、バッテリ制御プログラムの書き換えプログラムを保存する第５の記録領域であるバッテリ制御プログラム記録領域５３１を備えている。バッテリ制御プログラム記録領域５３１に保存された書き換え用プログラムは、電力線ネットワーク７ａを介して車載充電器制御装置４に送信される。
【００６８】
次に、車載充電器制御装置４の構成と機能について簡単に説明する。マイコン４１は、車載充電器４０の動作に関わる各種処理を実施する。データ送受信手段４２は、ＣＡＮネットワーク６を介して、接続された他の制御装置（バッテリ制御装置１、ＥＰＳ制御装置２ａ、及びモータ制御装置２ｂを含む）とデータを送受信する。また、記録装置４３は、第４の記録領域であるバッテリ制御プログラム一時記録領域４３３を有する。
【００６９】
記録装置４３の領域構成について、図７（ａ）を用いて説明する。記録装置４３は、車載充電器４０の制御内容を決定する車載充電器制御プログラムを保存する車載充電器制御プログラム記録領域４３１と、車載充電器１５７の制御に関わるデータ等を保存する車載充電器制御プログラム用記録領域（データ用）４３２と、充電ステーション５から受信した書き換え用プログラムを一時的に保存するバッファ領域であるバッテリ制御プログラム一時記録領域４３３を備えている。なお、バッテリ制御プログラム一時記録領域４３３は、バッテリ制御プログラム全てを保存する容量を持つ必要はなく、記録装置４３の空き領域等を割り当てることが出来る。
【００７０】
また、第２のプログラム分割手段であるプログラム分割手段４４は、バッテリ制御プログラム一時記録領域４３３に保存された書き換え用プログラムが一定量になる毎に該書き換え用プログラムを分割し、分割プログラムを作成する。プログラム分割手段４４により作成された分割プログラムは、それぞれＣＡＮネットワーク６を介してＥＰＳ制御装置２ａ及びモータ制御装置２ｂに送信される。
【００７１】
また、第３の状態検出手段である第１種ノード状態検出手段４５は、バッテリ制御装置１がプログラムを書き換え可能な状態であるか否か、あるいはプログラムの全ての領域が書き換えられているか否か等の状態を検出する。第１種ノード状態検出手段４５により書き換え可能であると検出された場合は、ＣＡＮネットワーク６を介してＥＰＳ制御装置２ａ及びモータ制御装置２ｂに通知し、通知を受けたＥＰＳ制御装置２ａ及びモータ制御装置２ｂは、自身が保存する分割プログラムをバッテリ制御装置１に送信する。電力線ネットワーク用データ送受信手段４６は、電力線ネットワーク７ａを介して、電力線７に接続された充電ステーション５とデータを送受信する。
【００７２】
次に、本実施の形態２に係るプログラム書き換えシステムの各ノードにおける処理の流れについて、図８〜図１０のフローチャートを用いて説明する。ただし、第２種ノードであるＥＰＳ制御装置２ａ及びモータ制御装置２ｂの処理の流れは、上記実施の形態１と同じであるため説明を省略する（図４（ａ）参照）。
【００７３】
図８は、第５種ノードである充電ステーション５におけるプログラム書き換えに関する処理の流れを示している。充電ステーション５では、プログラム書き換え対象であるバッテリ制御装置１への書き換え指示と、書き換え用プログラムの送信処理を実施する。図８は、書き換え指示を送信後の処理フローを示している。
【００７４】
まず、ステップ８０１（Ｓ８０１）において、電力線ネットワーク用データ送受信手段５２により、バッテリ制御プログラムの書き換え用プログラムを、電力線ネットワーク７ａを介して車載充電器制御装置４へ送信し、ステップ８０２（Ｓ８０２）に進む。Ｓ８０２では、全ての書き換え用プログラムが送信されたかどうかを判断する。送信されていない場合（ＮＯ）はＳ８０１へ進み、全て送信している場合（ＹＥＳ）には、処理を終了する。
【００７５】
次に、第４種ノードである車載充電器制御装置４におけるプログラム書き換えに関する処理の流れについて、図９を用いて説明する。車載充電器制御装置４では、車載充電器４０の制御に関わる通常の処理と、バッテリ制御装置１のプログラム書き換えに関する処理が実施される。プログラム書き換えに関する処理は、充電ステーション５から書き換え実施の通知があった場合に実施されるが、通常の処理が実施されている時には、書き換えに関する処理は実施しない。図９（ａ）は、充電ステーション５からの書き換え実施の通知を受信後の処理フローを示している。
【００７６】
まず、ステップ９０１（Ｓ９０１）において、第１種ノード状態検出手段４５により、
バッテリ制御装置１がバッテリ制御プログラムを書き換えることができる状態か否かを判断する。具体的には、バッテリ制御装置１がバッテリ１０の制御に関わる通常の処理を実施しているか否かを判断する。通常の処理が実施されていない場合には、ステップ９０９（Ｓ９０９）へ進み、通常の書き換え処理を実施する。なお、Ｓ９０９の通常の書き換え処理とは、充電ステーション５から車載充電器制御装置４でのデータ転送を経由して、バッテリ制御装置１のバッテリ制御プログラムを書き換える従来の書き換え方法によるものであり、本発明の特徴である書き換え用プログラムを分割して行うものではないため、説明を省略する。
【００７７】
Ｓ９０１において、バッテリ制御装置１が通常の処理を実施している場合、プログラム書き換え不可であるため（ＮＯ）、ステップ９０２（Ｓ９０２）へ進み、データ送受信手段４２によりＣＡＮネットワーク６を介して関連ノードへ分割書き換えを実施することを連絡する。さらに、ステップ９０３（Ｓ９０３）において、充電ステーションから書き換え用プログラムを受信し、作成した分割プログラムを第２種ノードに送信する送受信処理を実施する。（Ｓ９０３の送受信処理については後に図９（ｂ）で説明する）。
【００７８】
次に、ステップ９０４（Ｓ９０４）において、第１種ノード状態検出手段４５は、バッテリ制御装置１が通常の処理をしているか否かにより、プログラムを書き換えることができる状態か再び判断する。書き換え可能な場合（ＹＥＳ）は、ステップ９０５（Ｓ９０５）へ進み、書き換え不可の場合（ＮＯ）は書き換え可能となるまで待機する。
【００７９】
Ｓ９０５では、さらに、第１種ノード状態検出手段４５により、バッテリ制御装置１のバッテリ制御プログラム記録領域１３２に保存されたバッテリ制御プログラムの全ての領域（部分）が書き換えられているか否かを判断する。全て書き換えられている場合（ＹＥＳ）は、ステップ９０８（Ｓ９０８）へ進み、データ送受信手段４２によりバッテリ制御装置１へ全ての書き換えが終了したことを送信し、処理を終了する。
【００８０】
また、Ｓ９０５において、全て書き換えられていない場合（ＮＯ）は、ステップ９０６（Ｓ９０６）へ進み、第１種ノード状態検出手段４５は、バッテリ制御装置１がプログラム書き換え中であるか否かを判断する。バッテリ制御プログラム記録領域１３２のいずれの部分も書き換え中でなければ（ＮＯ）、ステップ９０７（Ｓ９０７）へ進み、書き換え中であれば（ＹＥＳ）、書き換えが終了するまで待機する。
【００８１】
Ｓ９０７において、第１種ノード状態検出手段４５は、バッテリ制御プログラム記録領域１３２に保存されているバッテリ制御プログラムの書き換えが終了していない部分を検出し、その部分に該当する分割プログラムを保存している第２種ノードに対し、データ送受信手段４２により分割プログラムの送信を指示する。
【００８２】
次に、図９（ｂ）を用い、Ｓ９０３の送受信処理の詳細について説明する。ステップ９１１（Ｓ９１１）において、充電ステーション５から送信されたバッテリ制御プログラムの書き換え用プログラムを、一定量受信しているか否か判断する。書き換え用プログラムは容量が大きいため、全て受信するまでにある程度の時間を必要とし、受信したプログラムは適時、バッテリ制御プログラム一時記録領域４３３に保存される。Ｓ９１１において、一定量受信している場合（ＹＥＳ）は、ステップ９１２（Ｓ９１２）へ進み、一定量受信していない場合（ＮＯ）は、一定量受信するまで待機する。
【００８３】
Ｓ９１２において、プログラム分割手段４４は、バッテリ制御プログラム一時記録領域４３３に保存されているバッテリ制御プログラムを分割し、分割プログラムを作成する。続いてステップ９１３（Ｓ９１３）において、データ送受信手段４２により、分割プログラムを第２種モード（ここではＥＰＳ制御装置２ａまたはモータ制御装置２ｂ）へ送信する。さらに、ステップ９１４（Ｓ９１４）では、充電ステーション５から書き換え用プログラムを全て受信したか否かを判断する。受信していない場合（ＮＯ）、Ｓ９１１へ進み、受信している場合（ＹＥＳ）は処理を終了する。
【００８４】
次に、第１種ノードであるバッテリ制御装置１におけるプログラム書き換えに関する処理の流れについて、図１０を用いて説明する。なお、バッテリ制御装置１では、バッテリ１０の制御に関わる通常の処理と、バッテリ制御プログラムの書き換えに関する処理が実施される。プログラム書き換えに関する処理は、充電ステーション５からの書き換え指示があった場合に実施され、図１０は、充電ステーション５から書き換え実施の通知を受信後の処理フローを示している。
【００８５】
まず、ステップ１０１（Ｓ１０１）において、車載充電器制御装置４から分割書き換え指示（図９のＳ９０２）があったか否かを判断する。分割書き換え指示があった場合（ＹＥＳ）は、ステップ１０２（Ｓ１０２）へ進み、指示がなかった場合（ＮＯ）は、ステップ１０５（Ｓ１０５）において通常のプログラム書き換え処理を実施する。なお、Ｓ１０５の通常の書き換え処理とは、充電ステーション５から車載充電器制御装置４でのデータ転送を経由して、バッテリ制御装置１のバッテリ制御プログラムを書き換える従来の書き換え方法によるものであり、本発明の特徴である書き換え用プログラムを分割して行うものではないため、説明を省略する。Ｓ１０２において、データ送受信手段１２は、分割プログラムの受信を待ち、受信した場合（ＹＥＳ）はステップ１０３（Ｓ１０３）へ進む。Ｓ１０２において受信しない場合（ＮＯ）は、受信するまで待機する。
【００８６】
Ｓ１０３では、プログラム書き換え手段１４が、プログラム書き換えプログラムを用い、受信した分割プログラムに該当するバッテリ制御プログラムの部分を書き換える。さらに、ステップ１０４（Ｓ１０４）において、バッテリ制御プログラムを全ての部分を書き換えたか否かを、車載充電器制御装置４からの通知（図９のＳ９０８）により判断する。通知がない場合（ＮＯ）は、Ｓ１０２へ進み、他の分割プログラムの受信を待ち、通知があった場合（ＹＥＳ）は処理を終了する。
【００８７】
以上、図８〜図１０（及び図４（ａ））のフローチャートにより、各ノードのプログラム書き換えに関する処理の流れについて説明したが、次に、これら全てのノードの処理の流れを図１１のタイムチャートに沿って説明する。図１１において、縦軸は各ノード、横軸は時間を示している。なお、図１１では、充電ステーション５と車載充電器制御装置４は、既に車載充電器４０を介して電力線ネットワーク７ａで接続されており、ＥＰＳ制御装置２ａ及びモータ制御装置２ｂは、それぞれ通常の処理を実施していないものとする。
【００８８】
ｔ３０において、バッテリ制御装置１は、バッテリ１０の制御に関わる通常の処理を実施している（処理１０）。ｔ３１において、充電ステーション５は、電力線ネットワーク用データ送受信手段５２により、電力線ネットワーク７ａを介して車載充電器制御装置４へバッテリ制御装置１のプログラム書き換えを実施することを通知する（処理６０）。
【００８９】
プログラム書き換え実施の通知を受信した車載充電器制御装置４は、第１種ノード状態検出手段４５により、バッテリ制御装置１がプログラム書き換え可能か否かを判断する（処理５０）。ここでは、通常の処理を実施しているため書き換え不可と判断する。
【００９０】
続いて、ｔ３２において、車載充電器制御装置４は、バッテリ制御装置１、ＥＰＳ制御装置２ａ、及びモータ制御装置２ｂに対して、書き換え不可であるため分割書き換えを実施することを通知する（処理５１）。バッテリ制御装置１、ＥＰＳ制御装置２ａ、及びモータ制御装置２ｂは、分割書き換え実施の通知をそれぞれ受信する（処理１７、処理２０、処理３０）。
【００９１】
ｔ３３において、バッテリ制御装置１は、通常の処理を再開する（処理１０）。続いてｔ３４において、充電ステーション５は、電力線ネットワーク７ａを介して、自身が保存するバッテリ制御プログラムの書き換え用プログラムの車載充電器制御装置４への送信を開始する（処理６１）。車載充電器制御装置４は、受信した書き換え用プログラムを適時、バッテリ制御プログラム一時記録領域４３３に保存する（処理５２）。
【００９２】
ｔ３５において、受信した書き換え用プログラムが一定量を超えると、車載充電器制御装置４は、プログラム分割手段４４により、バッテリ制御プログラム一時記録領域４３３に保存されている書き換え用プログラムから、分割プログラムＡを作成する。さらに、作成した分割プログラムＡをデータ送受信手段４２によりＥＰＳ制御装置２ａへ送信する（処理５３）。ＥＰＳ制御装置２ａは、受信した分割プログラムＡを分割バッテリ制御プログラム記録領域２３３ａへ保存する（処理２１）。
【００９３】
次に、ｔ３６において、受信した書き換え用プログラムが再び一定量を超えると、車載充電器制御装置４は、プログラム分割手段４４により、バッテリ制御プログラム一時記録領域４３３に記録されている書き換え用バッテリ制御プログラムから、分割プログラムＢを作成する。さらに、作成した分割プログラムＢをデータ送受信手段４２によりモータ制御装置２ｂへ送信する（処理５４）。モータ制御装置２ｂは、受信した分割プログラムＢを分割バッテリ制御プログラム記録領域２３３ｂへ保存する（処理３１）。
【００９４】
車載充電器制御装置４が全ての書き換え用プログラムを受信すると、充電ステーション５は、プログラム書き換えに関する処理を終了する。これ以降は、充電ステーション５は車載充電器４０と接続している必要はなく、バッテリ制御装置１がプログラム書き換え中であっても取り外し可能である。
【００９５】
ｔ３７において、バッテリ制御装置１が通常の処理を終了すると、ｔ３８において、車載充電器制御装置４の第１種ノード状態検出手段４５は、バッテリ制御装置１がプログラムの書き換えが可能な状態であるか否かを判断する。ここでは、通常の処理を実施していないため、書き換え可能であると判断される。次に、第１種ノード状態検出手段４５は、記録装置１３のバッテリ制御プログラム記録領域１３２に保存されているバッテリ制御プログラムの全ての領域（部分）が書き換えられているか否かを判断する。ここでは、書き換えられていないと判断される。
【００９６】
さらに、第１種ノード状態検出手段４５は、バッテリ制御装置１のバッテリ制御プログラム記録領域１３２が書き換え中か否かを判断する。ここでは、書き換え中でないため、データ送受信手段４２により、ＥＰＳ制御装置２ａへ分割プログラムの送信を指示する（処理５５）。ＥＰＳ制御装置２ａのデータ送受信手段２２ａは、分割プログラムの送信指示を受信する（処理２２）。
【００９７】
続いてｔ３９において、ＥＰＳ制御装置２ａの送信可否判断手段２４ａは、バッテリ制御装置１へ分割プログラムを送信すると判断し、記録装置２３ａの分割バッテリ制御プログラム記録領域２３３ａに保存している分割プログラムＡを、データ送受信手段２２ａにより送信する（処理２３）。これによりＥＰＳ制御装置２ａは処理を終了する。また、これを受信したバッテリ制御装置１は、プログラム書き換え手段１４により、受信した分割プログラムＡに該当するバッテリ制御プログラムの部分を書き換える（処理１４）。
【００９８】
さらに、ｔ４０において、車載充電器制御装置４の第１種ノード状態検出手段４５は、バッテリ制御装置１がプログラムの書き換えが可能な状態であるか否かを判断する。ここでは、通常の処理を実施していないため、書き換え可能であると判断される。次に、第１種ノード状態検出手段４５は、記録装置１３のバッテリ制御プログラム記録領域１３２に保存されているバッテリ制御プログラムの全ての領域（部分）が書き換えられているか否かを判断する。ここでは、書き換えられていないと判断される。
【００９９】
さらに、第１種ノード状態検出手段４５は、バッテリ制御装置１のバッテリ制御プログラム記録領域１３２が書き換え中か否かを判断する。ここでは、書き換え中でないため、データ送受信手段４２により、モータ制御装置２ｂへ分割プログラムの送信を指示する（処理５６）。モータ制御装置２ｂのデータ送受信手段２２ｂは、分割プログラムの送信指示を受信する（処理３２）。
【０１００】
続いてｔ４１において、モータ制御装置２ｂの送信可否判断手段２４ｂは、バッテリ制御装置１へ分割プログラムを送信すると判断し、記録装置２３ｂの分割バッテリ制御プログラム記録領域２３３ｂに記録している分割プログラムＢを、データ送受信手段２２ｂにより送信する（処理３３）。これによりモータ制御装置２ｂは処理を終了する。また、これを受信したバッテリ制御装置１は、プログラム書き換え手段１４により、受信した分割プログラムＢに該当するバッテリ制御プログラムの部分を書き換える（処理１６）。
【０１０１】
その後、ｔ４２において、車載充電器制御装置４の第１種ノード状態検出手段４５は、
バッテリ制御プログラムの全ての書き換えが終了しているか否かを判断する。ここでは、全て書き換えられているため、データ送受信手段４２によりバッテリ制御装置１へプログラム書き換えが終了したことを通知し、処理を終了する（処理５７）。この通知を受信したバッテリ制御装置１は、プログラム書き換えに関する処理を終了する（処理１８）。
【０１０２】
以上のように、本実施の形態２に係るプログラム書き換えシステムでは、充電ステーション５から車載充電器制御装置４にバッテリ制御装置１のプログラム書き換え実施を通知した際に、バッテリ制御装置１がバッテリ１０の制御に関わる通常の処理を実施していた場合には、充電ステーション５は、バッテリ制御プログラムの書き換え用プログラムを車載充電器制御装置４に送信し、これを受信した車載充電器制御装置４は、一定量受信（保存）すると分割プログラムＡを作成してＥＰＳ制御装置２ａに送信し、再度一定量保存すると分割プログラムＢを作成してモータ制御装置２ｂに送信する。
【０１０３】
その後、バッテリ制御装置１がプログラム書き換え可能となった時点で、ＥＰＳ制御装置２ａは分割プログラムＡを、モータ制御装置２ｂは分割プログラムＢを、それぞれバッテリ制御装置１に送信し、バッテリ制御装置１は、これらを受信する度に受信した分割プログラムに該当するバッテリ制御プログラムの部分を書き換えるものである。
【０１０４】
このようなプログラム書き換え方法（システム）によれば、上記実施の形態１と同様に、バッテリ制御装置１が通常の処理を実施していない所定のタイミングでバッテリ制御プログラムを書き換えることができ、且つ、バッテリ制御装置１が通常の処理を実施中であっても、充電ステーション５は、書き換え用プログラムを車載充電器制御装置４に送信し、送信が終了すると所定のタイミングを待つことなく電力線ネットワーク７ａから切り離すことが可能となるため、効率の良いプログラムの書き換えを実施することができる。
【０１０５】
さらに、本実施の形態２では、車載充電器制御装置４は、書き換え用プログラムを一定量受信（保存）する毎に分割プログラムを作成し、その都度、第２種ノードであるＥＰＳ制御装置２ａとモータ制御装置２ｂに送信するため、車載充電器制御装置４に全ての書き換え用プログラムを保存できるほどの大きな記録容量を設ける必要はない。また、上記実施の形態１と同様に、第２種ノードにも大きな記録容量を設ける必要がなく、一つのノードがコスト高になることを防ぐことができ、全体としてのコストが抑えられる。
【０１０６】
実施の形態３．
図１２は、本発明の実施の形態３に係るプログラム書き換え方法が実施される車両制御システムの構成を示し、本実施の形態３に係るプログラム書き換えシステムは、図１２に示す車両制御システムに含まれるものである。なお、図１２において、各制御装置及び充電ステーションは、図１２に示す以外の構成物も備えているが、本実施の形態３に直接関係しないものについては図示を省略する。
【０１０７】
上記実施の形態２では、第４種ノードである車載充電器制御装置４に第１種ノード状態検出手段４５を備えていたが、本実施の形態３では、第２種ノードであるＥＰＳ制御装置２ａとモータ制御装置２ｂに、それぞれ第１種ノード状態検出手段２５ａ、２５ｂを備えたものである。なお、それ以外の構成及び機能については上記実施の形態２と同様であるため説明を省略する。
【０１０８】
ＥＰＳ制御装置２ａとモータ制御装置２ｂに備えられた第１種ノード状態検出手段２５ａ、２５ｂは、上記実施の形態２において車載充電器制御装置４に備えられた第１種ノード状態検出手段４５（図６参照）と同様に、バッテリ制御装置１がバッテリ制御プログラムを書き換え可能な状態であるか否か、あるいはバッテリ制御プログラムが全て書き換えられているか否か等の状態を検出するものである。
【０１０９】
本実施の形態３に係るプログラム書き換えシステムの各ノードにおける処理の流れについて、図１３及び図１４のフローチャートを用いて説明する。ただし、第１種ノードであるバッテリ制御装置１と第５種ノードである充電ステーション５の処理の流れは、上記実施の形態２と同じであるため説明を省略する（図８、図１０参照）。
【０１１０】
図１３は、第２種ノードであるＥＰＳ制御装置２ａ及びモータ制御装置２ｂにおけるプログラム書き換えに関する処理の流れを示している。ＥＰＳ制御装置２ａ（またはモータ制御装置２ｂ）では、ＥＰＳ２０ａ（または駆動用モータ２０ｂ）の制御に関わる通常の処理と、バッテリ制御装置１のプログラム書き換えに関する処理が実施される。プログラム書き換えに関する処理は、充電ステーション５から書き換え実施の通知があった場合に実施されるが、通常の処理が実施されている時には書き換えに関する処理は実施しない。なお、ＥＰＳ制御装置２ａとモータ制御装置２ｂにおけるプログラム書き換えに関する処理は同じであるので、ここではＥＰＳ制御装置２ａを例に挙げて説明する。
【０１１１】
ＥＰＳ制御装置２ａは、充電ステーション５から書き換え実施の通知を受信後、ステップ１３１（Ｓ１３１）において、第１種ノード状態検出手段２５ａにより、バッテリ制御装置１がバッテリ制御プログラムを書き換えることができる状態か否かを判断する。具体的には、バッテリ制御装置１がバッテリ１０の制御に関する通常の処理を実施しているか否かを判断する。通常の処理が実施されていない場合には通常のプログラム書き換え処理が可能であるため処理を終了する。
【０１１２】
Ｓ１３１において、バッテリ制御装置１が通常の処理を実施している場合、プログラム書き換え不可であるため（ＮＯ）、ステップ１３２（Ｓ１３２）へ進む。Ｓ１３２では、データ送受信手段２２ａにより関連ノードへ分割書き換えを実施することを通知し、ステップ１３３（Ｓ１３３）へ進む。Ｓ１３３において、車載充電器制御装置４から分割プログラムを受信した場合（ＹＥＳ）、ステップ１３４（Ｓ１３４）へ進む。Ｓ１３３において、分割プログラムを受信していない場合（ＮＯ）、受信するまで待機する。
【０１１３】
続いてＳ１３４では、データ送受信手段２２ａにより受信した分割プログラムを、記録装置２３ａの分割バッテリ制御プログラム記録領域２３３ａへ記録し、ステップ１３５（Ｓ１３５）へ進む。Ｓ１３５において、第１種ノード状態検出手段２５ａにより、バッテリ制御装置１がバッテリ制御プログラムを書き換えることができる状態か否かを、再度判断する。書き換え可能な場合（ＹＥＳ）はステップ１３６（Ｓ１３６）へ進み、書き換え不可の場合（ＮＯ）は、書き換え可能になるまで待機する。
【０１１４】
Ｓ１３６では、第１種ノード状態検出手段２５ａにより、バッテリ制御装置１がプログラム書き換え中であるか否かを判断する。バッテリ制御装置１のバッテリ制御プログラム記録領域１３２のいずれの部分も書き換え中でなければ（ＮＯ）、ステップ１３７（Ｓ１３７）へ進み、書き換え中であれば（ＹＥＳ）、書き換えが終了するまで待機する。
【０１１５】
続いてＳ１３７において、送信可否判断手段２４ａは、分割プログラムを送信すると判断し、データ送受信手段２２ａにより、記録装置２３ａの分割バッテリ制御プログラム記録領域２３３ａに記録している分割プログラムをバッテリ制御装置１へ送信し、ステップ１３８（Ｓ１３８）へ進む。
【０１１６】
Ｓ１３８では、第１種ノード状態検出手段２５ａにより、バッテリ制御装置１のバッテリ制御プログラムが全て書き換えられているか否かを判断する。全て書き換えられている場合（ＹＥＳ）は、ステップ１３９（Ｓ１３９）へ進み、データ送受信手段２２ａにより、関連ノードへ全ての書き換えが終了したことを連絡し、処理を終了する。全て書き換えられていない場合（ＮＯ）も、自身が保存する分割プログラムを送信済みのため、処理を終了する。
【０１１７】
次に、第４種ノードである車載充電器制御装置４におけるプログラム書き換えに関する処理の流れについて、図１４を用いて説明する。車載充電器制御装置４では、車載充電器４０の制御に関わる通常の処理と、バッテリ制御装置１のプログラム書き換えに関する処理が実施される。プログラム書き換えに関する処理は、充電ステーション５から書き換え実施の通知があった場合に実施されるが、通常の処理が実施されている時には、プログラム書き換えに関する処理は実施しない。図１４は、充電ステーション５からの書き換え実施の通知を受信後の処理フローを示している。
【０１１８】
まず、ステップ１４１（Ｓ１４１）において、第２種ノードであるＥＰＳ制御装置２ａまたはモータ制御装置２ｂから、分割書き換え指示があったかどうか判断する。分割書き換え指示があった場合（ＹＥＳ）は、ステップ１４２（Ｓ１４２）へ進み、指示がなかった場合（ＮＯ）はステップ１４６（Ｓ１４６）に進み、通常の書き換え処理を実施する。なお、Ｓ１４６の通常の書き換え処理とは、充電ステーション５から車載充電器制御装置４でのデータ転送を経由して、バッテリ制御装置１のバッテリ制御プログラムを書き換える従来の書き換え方法によるものであり、本発明の特徴である書き換え用プログラムを分割して行うものではないため、説明を省略する。
【０１１９】
Ｓ１４２では、第５種ノードである充電ステーション５から送信される書き換え用バッテリ制御プログラムを、一定量受信しているかどうか判断する。充電ステーション５から送信される書き換え用バッテリ制御プログラムは容量が大きいため、全て受信するまでにはある程度の時間を要する。受信した書き換え用バッテリ制御プログラムは適時、バッテリ制御プログラム一時記録領域４３３に保存される。Ｓ１４２において、一定量受信している場合（ＹＥＳ）には、ステップ１４３（Ｓ１４３）へ進み、一定量受信していない場合（ＮＯ）は、一定量受信するまで待機する。
【０１２０】
続いて、Ｓ１４３において、プログラム分割手段４４は、バッテリ制御プログラム一時記録領域４３３に記録されているバッテリ制御プログラムを分割し、分割プログラムを作成する。続いてステップ１４４（Ｓ１４４）において、データ送受信手段４２により、分割プログラムを、それぞれ第２種モード（ここではＥＰＳ制御装置２ａまたはモータ制御装置２ｂ）へ送信する。さらに、ステップ１４５（Ｓ１４５）では、充電ステーション５から書き換え用バッテリ制御プログラムを全て受信したかどうかを判断する。受信していない場合（ＮＯ）、Ｓ１４２へ進み、受信している場合（ＹＥＳ）には処理を終了する。
【０１２１】
以上、図８、図１０、図１３、及び図１４のフローチャートにより、各ノードのプログラム書き換えに関する処理の流れについて説明したが、次に、これら全てのノードの処理の流れを図１５のタイムチャートに沿って説明する。図１５において、縦軸は各ノード、横軸は時間を示している。なお、図１５では、充電ステーション５と車載充電器制御装置４は、既に車載充電器４０を介して電力線ネットワーク７ａで接続され、ＥＰＳ制御装置２ａ及びモータ制御装置２ｂは、それぞれ通常動作は実施していないものとする。
【０１２２】
ｔ５０において、バッテリ制御装置１は、通常処理であるバッテリ１０の制御を実施している（処理１０）。続いて、ｔ５１において、充電ステーション５は、電力線ネットワーク用データ送受信手段５２により、電力線ネットワーク７ａを介して車載充電器制御装置４へバッテリ制御装置１のバッテリ制御プログラムの書き換えを実施することを通知する（処理６０）。車載充電器制御装置４は、バッテリ制御プログラムの書き換えを実施することを、電力線ネットワーク７ａを介して受信する（処理５５）。
【０１２３】
続いて、ｔ５２において、車載充電器制御装置４は、バッテリ制御装置１、ＥＰＳ制御装置２ａ、及びモータ制御装置２ｂに対して、バッテリ制御プログラムの書き換えを実施することを通知する（処理５６）。バッテリ制御装置１、ＥＰＳ制御装置２ａ、及びモータ制御装置２ｂはそれぞれ、書き換えを実施することを受信する（処理８０、処理２５、処理３５）。
【０１２４】
次に、ｔ５３において、ＥＰＳ制御装置２ａは、第１種ノード状態検出手段２５ａにより、バッテリ制御装置１がプログラムの書き換えが可能な状態であるか否かを判断する。ここでは、通常の処理を実施しているため、書き換え不可であると判断し、バッテリ制御装置１と車載充電器制御装置４に対して、書き換え実施不可であるため分割書き換えを実施することを通知する（処理２６）。バッテリ制御装置１と車載充電器制御装置４は、分割書き換え実施の通知をそれぞれ受信する（処理８１、処理５７）。
【０１２５】
続いて、ｔ５４において、モータ制御装置２ｂは、第１種ノード状態検出手段２５ｂにより、バッテリ制御装置１がプログラムの書き換えが可能な状態であるかどうかを判断する。ここでは、通常の処理を実施しているため、書き換え不可であると判断し、バッテリ制御装置１と車載充電器制御装置４に対して、書き換え不可であるため分割書き換えを実施することを通知する（処理３６）。バッテリ制御装置１と車載充電器制御装置４は、分割書き換え実施の通知をそれぞれ受信する（処理８２、処理５８）。
【０１２６】
ｔ５５において、バッテリ制御装置１は通常の処理を再開する（処理１０）。続いてｔ５６において、充電ステーション５は、電力線ネットワーク７ａを介して、自身が保存している書き換え用プログラムの車載充電器制御装置４への送信を開始する（処理６１）。車載充電器制御装置４は、受信した書き換え用プログラムを適時、バッテリ制御プログラム一時記録領域４３３に保存する（処理５２）。
【０１２７】
ｔ５３において、車載充電器制御装置４が受信した書き換え用プログラムが一定量を超えると、車載充電器制御装置４は、プログラム分割手段４４により、バッテリ制御プログラム一時記録領域４３３に保存されている書き換え用プログラムから、分割プログラムＡを作成する。続いて、作成した分割プログラムＡをデータ送受信手段４２によりＥＰＳ制御装置２ａへ送信する（処理５３）。ＥＰＳ制御装置２ａは、受信した分割プログラムＡを分割バッテリ制御プログラム記録領域２３３ａへ保存する（処理２１）。
【０１２８】
また、ｔ５８において、車載充電器制御装置４が受信した書き換え用プログラムが再び一定量を超えると、車載充電器制御装置４は、プログラム分割手段４４により、バッテリ制御プログラム一時記録領域４３３に記録されている書き換え用プログラムから、分割プログラムＢを作成する。続いて、作成した分割プログラムＢをデータ送受信手段４２によりモータ制御装置２ｂへ送信する（処理５４）。モータ制御装置２ｂは、受信した分割プログラムＢを分割バッテリ制御プログラム記録領域２３３ｂへ記録する（処理３１）。
【０１２９】
車載充電器制御装置４が全ての書き換え用プログラムを受信すると、充電ステーション５は、プログラム書き換えに関する処理を終了する。これ以降は、充電ステーション５は車載充電器４０と接続していなくても良く、バッテリ制御装置１がプログラム書き換え中であっても取り外し可能である。
【０１３０】
ｔ５９において、バッテリ制御装置１が通常の処理を終了すると、ｔ６０において、ＥＰＳ制御装置２ａの第１種ノード状態検出手段２５ａは、バッテリ制御装置１がプログラムの書き換えが可能な状態であるか否かを判断する。ここでは、通常の処理を実施していないため、書き換え可能であると判断される。次に、第１種ノード状態検出手段２５ａは、バッテリ制御プログラムが書き換え中であるか否かを判断する。ここでは、書き換え中でないと判断される（処理２７）。
【０１３１】
続いてｔ６１において、ＥＰＳ制御装置２ａの送信可否判断手段２４ａは、バッテリ制御装置１へ分割プログラムを送信すると判断し、記録装置２３ａの分割バッテリ制御プログラム記録領域２３３ａに保存している分割プログラムＡを、データ送受信手段２２ａにより送信する（処理２３）。これを受信したバッテリ制御装置１は、プログラム書き換え手段１４により、受信した分割プログラムＡに該当するバッテリ制御プログラムの部分を書き換える（処理１４）。
【０１３２】
次に、ｔ６２において、ＥＰＳ制御装置２ａの第１種ノード状態検出手段２５ａは、バッテリ制御装置１のバッテリ制御プログラムが全て書き換えられているか否かを判断する。ここでは、書き換えられていないため、処理を終了する（処理２８）。
【０１３３】
ｔ６３において、モータ制御装置２ｂの第１種ノード状態検出手段２５ｂは、バッテリ制御装置１がプログラムの書き換えが可能な状態であるか否かを判断する。ここでは、通常の処理を実施していないため、書き換え可能であると判断される。次に、第１種ノード状態検出手段２５ｂは、バッテリ制御プログラムが書き換え中であるか否かを判断する。ここでは、書き換え中でないと判断される（処理３７）。
【０１３４】
続いてｔ６４において、モータ制御装置２ｂの送信可否判断手段２４ｂは、バッテリ制御装置１へ分割プログラムを送信すると判断し、記録装置２３ｂの分割バッテリ制御プログラム記録領域２３３ｂに保存している分割プログラムＢを、データ送受信手段２２ｂにより送信する（処理３３）。これを受信したバッテリ制御装置１は、プログラム書き換え手段１４により、受信した分割プログラムＢに該当するバッテリ制御プログラムの部分を書き換える（処理１６）。
【０１３５】
その後、ｔ６５において、モータ制御装置２ｂの第１種ノード状態検出手段２５ｂは、バッテリ制御プログラムが全て書き換えられているか否かを判断する。ここでは、全て書き換えられているため、データ送受信手段２２ｂによりバッテリ制御装置１へプログラム書き換えが終了したことを通知し、処理を終了する（処理３８）。これを受信したバッテリ制御装置１は、バッテリ制御プログラムの全ての書き換えが終了したと判断し、書き換えに関する処理を終了する（処理８３）。
【０１３６】
以上のように、本実施の形態３に係るプログラム書き換え方法（システム）によれば、上記実施の形態２と同様に、プログラムの書き換えを効率良く実施することができると共に、一つのノードがコスト高になることを防ぐことができるため、全体としてのコストが抑えられる。
【０１３７】
なお、上記実施の形態２及び本実施の形態３において、車載充電器制御装置４に分割プログラムを暗号化する暗号化手段を備え、暗号化手段により暗号化した分割プログラムをＥＰＳ制御装置２ａとモータ制御装置２ｂに送信し、暗号化された分割プログラムをＥＰＳ制御装置２ａとモータ制御装置２ｂに保存するようにしても良い。あるいは、ＥＰＳ制御装置２ａ及びモータ制御装置２ｂに暗号化手段を備え、車載充電器制御装置４から受信した分割プログラムを暗号化手段により暗号化してから保存するようにしても良い。
【０１３８】
また、暗号化手段により暗号化された分割プログラムを復号化する復号化手段をバッテリ制御装置１に備え、ＥＰＳ制御装置２ａまたはモータ制御装置２ｂから暗号化された分割プログラムを受信した際に、復号化手段により分割プログラムを復号化するようにしても良い。あるいは、ＥＰＳ制御装置２ａ及びモータ制御装置２ｂに復号化手段を備え、それらに保存された暗号化された分割プログラムを復号化手段により復号化した後、バッテリ制御装置１に送信するようにしても良い。すなわち、第２種モードに暗号化手段と復号化手段を備えても良い。
【０１３９】
上記のような暗号化手段と復号化手段を備えることにより、ＣＡＮネットワーク６で第三者に解読される危険性、またはＥＰＳ制御装置２ａ及びモータ制御装置２ｂに保存時に第三者に解読される危険性を低減することができ、プログラム書き換えを安全に実施することが可能となる。
【０１４０】
また、上記実施の形態１〜実施の形態３では、２つの第２種ノードを備えた車両制御システムを例に挙げて説明したが、第２種ノードの数はこれに限定されるものではない。第２種ノードの数を増やすことにより、各分割プログラムの容量を低減することができ、各第２種ノードに必要となる記録容量を抑えることができる。さらに、第１のネットワークとしてＣＡＮネットワーク６を、第２のネットワークとして電力線ネットワーク７を例に挙げて説明したが、ネットワークの種類はこれに限るものではない。
【０１４１】
また、上記実施の形態１〜実施の形態３では、第１種ノードのプログラム書き換えが成功することを前提として説明したが、失敗した場合に備えて、第１種ノードにタイムアウト時間等を設定しておき、所定時間が経過しても分割プログラムを受信できない場合や書き換えが終了しない場合には、書き換え処理を強制的に終了させるようにしても良い。ただし、書き換え処理を途中で終了させる場合には、別の動作可能な制御プログラムを用意しておく、関連ノードに故障状況を示す一意のコードを記録しておく等の対応策を併せて用意しておく必要がある。
【産業上の利用可能性】
【０１４２】
本発明は、ネットワークに接続された複数の制御装置を含むシステム（例えば車両制御システム）におけるプログラムの書き換え方法として利用することができる。
【符号の説明】
【０１４３】
１  バッテリ制御装置（第１種ノード）、２ａ  ＥＰＳ制御装置（第２種ノード）、
２ｂ  モータ制御装置（第２種ノード）、３  テスタ（第３種ノード）、
４  車載充電器制御装置（第４種ノード）、５  充電ステーション（第５種ノード）、
６  ＣＡＮネットワーク、７  電力線、７ａ  電力線ネットワーク、
８  車両のネットワーク、１０  バッテリ、
１１、２１ａ、２１ｂ、３１、４１、５１  マイコン、
１２、２２ａ、２２ｂ、３２、４２  ＣＡＮネットワーク用データ送受信手段、
１３、２３ａ、２３ｂ、３３、４３、５３  記録装置、
１４  プログラム書き換え手段、１５  状態検出手段、
１６  第１の制御装置、１７  統括制御装置、１８  第２の制御装置、
２０ａ  ＥＰＳ、２０ｂ  駆動用モータ、２４ａ、２４ｂ  送信可否判断手段、
２５ａ、２５ｂ、４５  第１種ノード状態検出手段、３４、４４  プログラム分割手段、４０  車載充電器、４６、５２  電力線ネットワーク用データ送受信手段。
【図１】
0005323151.tif 000002
【図２】
0005323151.tif 000003
【図３】
0005323151.tif 000004
【図４】
0005323151.tif 000005
【図５】
0005323151.tif 000006
【図６】
0005323151.tif 000007
【図７】
0005323151.tif 000008
【図８】
0005323151.tif 000009
【図９】
0005323151.tif 000010
【図１０】
0005323151.tif 000011
【図１１】
0005323151.tif 000012
【図１２】
0005323151.tif 000013
【図１３】
0005323151.tif 000014
【図１４】
0005323151.tif 000015
【図１５】
0005323151.tif 000016
【図１６】
0005323151.tif 000017