(57)【要約】【課題】ネットワークに接続された制御装置のプログラムの書き換えに当たって、１つのノードがコスト高とならないようにするとともに、書き換えたのちにプログラムが変更されていないかどうかを検証可能なプログラム書き換え及び検証システムを得る。【解決手段】テスタ３が第１種ノードであるバッテリ制御装置１のプログラムの書き換え用プログラムを分割し、第２種ノードであるＥＰＳ制御装置２ａとモータ制御装置２ｂに送信し、それぞれ記録装置に保存させ、各第２種ノードは、分割プログラムの送信可否を判断し、送信可の場合に分割プログラムをバッテリ制御装置１に送信し、バッテリ制御装置１がプログラムを書き換えたのちに、モータ制御装置２ｂの動作状態監視手段２８により、バッテリ制御装置１の動作状態を監視し、異常があれば各第２種ノードでバッテリ制御装置１の書き換え部分を検証する。【選択図】図１
2018067027.tif 000002
【特許請求の範囲】
【請求項１】
車両内のネットワークに接続された第１種ノード、
及び上記ネットワークにそれぞれ接続され、上記第１種ノードとの間及び互いの間で通信可能な複数の第２種ノードを備え、
上記第１種ノードは、
自ノードの動作を決定するプログラムを保存する第１の記録領域と、
この第１の記録領域に保存された上記プログラムを書き換え単位で書き換えるプログラム書き換え手段とを有し、
上記第２種ノードは、
上記プログラムを書き換えるための書き換え用プログラムの上記書き換え単位である分割プログラムを保存する第２の記録領域と、
上記第１種ノードへの上記分割プログラムの送信可否を判断する送信可否判断手段と、
上記第１種ノードの上記プログラムの上記プログラム書き換え手段によって書き換えられた部分の検証が必要かどうかを判断する検証要否判断手段と、
上記第１種ノードの上記プログラムの上記書き換えられた部分を読み出す読み出し手段と、
上記プログラムの上記書き換えられた部分と、上記第２の記録領域に保存された上記分割プログラムとを比較することにより、上記プログラムの上記書き換えられた部分が変更されていないかどうかを検証する分割プログラム検証手段とを有し、
上記送信可否判断手段により上記第１種ノードへの上記分割プログラムの送信が可能であると判断された場合に、上記第２の記録領域に保存された上記分割プログラムを上記ネットワークを介して上記第１種ノードに送信し、
上記第１種ノードは、
上記第２種ノードから上記分割プログラムを受信する度に、上記プログラム書き換え手段により、上記第１の記録領域に保存された上記プログラムのうちの当該分割プログラムに該当する部分を書き換え、
上記第２種ノードは、
上記第１種ノードの上記プログラム書き換え手段による上記書き換え後に、上記検証要否判断手段により、上記第１種ノードの上記プログラムの上記書き換えられた部分の検証が必要と判断された場合に、上記分割プログラム検証手段による検証を行なうことを特徴とするプログラム書き換え及び検証システム。
【請求項２】
上記第２種ノードは、
上記第１種ノードの動作状態を監視する第１の動作状態監視手段と、
この第１の動作状態監視手段により、上記第１種ノードで通常の動作と異なる動作が検出された場合に、自ノード及び他の第２種ノードに上記プログラムの検証必要性を通知する第１の検証必要性通知手段とを有し、
上記第１の検証必要性通知手段から上記通知を受けた自ノード及び上記他の第２種ノードは、
上記検証要否判断手段により、上記第１種ノードの上記プログラムの上記書き換えられた部分の検証が必要と判断することを特徴とする請求項１に記載のプログラム書き換え及び検証システム。
【請求項３】
上記第２種ノードは、
上記ネットワークに流れるデータを監視する第１の通信状態監視手段と、
この第１の通信状態監視手段により、上記ネットワークで、通常のデータと異なるデータの流れが検出された場合に、自ノード及び他の第２種ノードに上記プログラムの検証必要性を通知する第１の検証必要性通知手段とを有し、
上記第１の検証必要性通知手段から上記通知を受けた自ノード及び上記他の第２種ノー
ドは、
上記検証要否判断手段により、上記第１種ノードの上記プログラムの上記書き換えられた部分の検証が必要と判断することを特徴とする請求項１に記載のプログラム書き換え及び検証システム。
【請求項４】
上記第２種ノードは、
上記車両の位置を測定する第１の車両位置測定手段と、
この第１の車両位置測定手段により車両が所定の位置に到着したことが検出された場合に、自ノード及び他の第２種ノードに上記プログラムの検証必要性を通知する第１の検証必要性通知手段とを有し、
上記第１の検証必要性通知手段から上記通知を受けた自ノード及び上記他の第２種ノードは、
上記検証要否判断手段により、上記第１種ノードの上記プログラムの上記書き換えられた部分の検証が必要と判断することを特徴とする請求項１に記載のプログラム書き換え及び検証システム。
【請求項５】
上記第２種ノードは、
上記車両の挙動を測定する第１の車両挙動測定手段と、
上記第１の車両挙動測定手段により、車両の挙動が所定の範囲を超えたことが検出された場合に、自ノード及び他の第２種ノードに上記プログラムの検証必要性を通知する第１の検証必要性通知手段とを有し、
上記第１の検証必要性通知手段から上記通知を受けた自ノード及び上記他の第２種ノードは、
上記検証要否判断手段により、上記第１種ノードの上記プログラムの上記書き換えられた部分の検証が必要と判断することを特徴とする請求項１に記載のプログラム書き換え及び検証システム。
【請求項６】
上記ネットワークに随時接続され、上記ネットワークを介して、上記第１種ノード及び複数の上記第２種ノードと通信可能な第３種ノードを備え、
上記第３種ノードは、
上記第１種ノードの動作状態を監視する第２の動作状態監視手段と、
この第２の動作状態監視手段により、上記第１種ノードで、通常の動作と異なる動作が検出された場合に、上記第２種ノードに上記プログラムの検証必要性を通知する第２の検証必要性通知手段とを有し、
上記第２の検証必要性通知手段から上記通知を受けた上記第２種ノードは、
上記検証要否判断手段により、上記第１種ノードの上記プログラムの上記書き換えられた部分の検証が必要と判断することを特徴とする請求項１に記載のプログラム書き換え及び検証システム。
【請求項７】
上記ネットワークに随時接続され、上記ネットワークを介して、上記第１種ノード及び複数の上記第２種ノードと通信可能な第３種ノードを備え、
上記第３種ノードは、
上記ネットワークに流れるデータを監視する第２の通信状態監視手段と、
この上記第２の通信状態監視手段により、上記ネットワークで、通常のデータと異なるデータの流れが検出された場合に、上記第２種ノードに上記プログラムの検証必要性を通知する第２の検証必要性通知手段とを有し、
上記第２の検証必要性通知手段から上記通知を受けた上記第２種ノードは、
上記検証要否判断手段により、上記第１種ノードの上記プログラムの上記書き換えられた部分の検証が必要と判断することを特徴とする請求項１に記載のプログラム書き換え及び検証システム。
【請求項８】
上記ネットワークに随時接続され、上記ネットワークを介して、上記第１種ノード及び複数の上記第２種ノードと通信可能な第３種ノードを備え、
上記第３種ノードは、
上記車両の位置を測定する第２の車両位置測定手段と、
この第２の車両位置測定手段により、車両が所定の位置に到着したことが検出された場合に、上記第２種ノードに上記プログラムの検証必要性を通知する第２の検証必要性通知手段とを有し、
上記第２の検証必要性通知手段から上記通知を受けた上記第２種ノードは、
上記検証要否判断手段により、上記第１種ノードの上記プログラムの上記書き換えられた部分の検証が必要と判断することを特徴とする請求項１に記載のプログラム書き換え及び検証システム。
【請求項９】
上記ネットワークに随時接続され、上記ネットワークを介して、上記第１種ノード及び複数の上記第２種ノードと通信可能な第３種ノードを備え、
上記第３種ノードは、
車両の挙動を測定する第２の車両挙動測定手段と、
この第２の車両挙動測定手段により、車両の挙動が所定の範囲を超えたことが検出された場合に、上記第２種ノードに上記プログラムの検証必要性を通知する第２の検証必要性通知手段とを有し、
上記第２の検証必要性通知手段から上記通知を受けた上記第２種ノードは、
上記検証要否判断手段により、上記第１種ノードの上記プログラムの上記書き換えられた部分の検証が必要と判断することを特徴とする請求項１に記載のプログラム書き換え及び検証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ネットワークに接続された複数の制御装置であるノードのプログラムを書き換え、検証するプログラム書き換え及び検証システムに関するものである。
【背景技術】
【０００２】
従来、ネットワークに接続された制御装置のプログラム書き換えシステム及び方法（以下、システムとして総称することがある。）として、例えば特許文献１に記載されたものが知られている。
この特許文献１におけるプログラム書き換えシステムは、車両のネットワークに、外部とのインターフェイス機能を有し、書き換えを実施する第１の制御装置と、統括制御装置と、プログラムのデータを書き換える対象である第２の制御装置と、複数ある第３の制御装置が接続され、第１の制御装置及び統括制御装置によって、第２の制御装置の記録媒体のプログラムが書き換えられるようになっている。
統括制御装置は、ゲートウェイを介して第１の制御装置に接続され、所定のデータを記憶し得る記憶媒体と、全体を制御するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とを有している。
【０００３】
この特許文献１では、第２の制御装置のプログラムデータの書き換えを実施する際に、プログラム書き換え用のデータが、第１の制御装置にデータ入力部から入力され、データ出力部を介してゲートウェイに出力される。その後、このデータは、ゲートウェイを経由して、統括制御装置の記録媒体に一時蓄積される。
さらに、そのプログラム書き換え用のデータは、電圧や温度範囲等の書き換え実施条件が満たされた時に、第２の制御装置の記録媒体へ車両のネットワークを介して送信される。
この特許文献１に提示されたプログラムの書き換えシステムでは、１つの通信ノードである統括制御装置内に、プログラム書き換え用のデータ全てを記録する容量を持つ記録媒体が必要であり、そのためにコストが上昇するという問題があった。
【０００４】
このような課題を解決するものとして、本出願人による特許文献２がある。
特許文献２では、複数のモータ制御装置等の第２種ノードに書き換え用プログラムの一部分である分割プログラムを保存させるようにし、各第２種ノードは、自身が保存する分割プログラムをそれぞれバッテリ制御装置等の第１種ノードに送信する。そして、第１種ノードは、各第２種ノードから分割プログラムを受信する度に、第１種ノードの動作を決定するプログラム中のその分割プログラムに該当する部分を書き換えるように構成されたプログラム書き換えシステム及びプログラム書き換え方法が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４６６８６５６号公報（第４〜８頁、第１図）
【特許文献２】特許第５３２３１５１号公報（第７〜１３頁、第１図）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献２の場合には、第２種ノードによる第１種ノードの書き換えが完了し、書き換えたプログラムに従って動作した後に、意図的もしくは、無意識に第１種ノードのプログラムが改ざん、変更された場合について検証することができないという問題がある。
【０００７】
この発明は、上述のような課題を解決するためになされたものであり、ネットワークに接続された制御装置のプログラムの書き換えに当たって、１つのノードがコスト高とならないようにするとともに、書き換えたのちにプログラムが変更されていないかどうかを検証可能なプログラム書き換え及び検証システムを得ることを目的とする。
【課題を解決するための手段】
【０００８】
この発明に係わるプログラム書き換え及び検証システムにおいては、車両内のネットワークに接続された第１種ノード、及びネットワークにそれぞれ接続され、第１種ノードとの間及び互いの間で通信可能な複数の第２種ノードを備え、第１種ノードは、自ノードの動作を決定するプログラムを保存する第１の記録領域と、この第１の記録領域に保存されたプログラムを書き換え単位で書き換えるプログラム書き換え手段とを有し、第２種ノードは、プログラムを書き換えるための書き換え用プログラムの書き換え単位である分割プログラムを保存する第２の記録領域と、第１種ノードへの分割プログラムの送信可否を判断する送信可否判断手段と、第１種ノードのプログラムのプログラム書き換え手段によって書き換えられた部分の検証が必要かどうかを判断する検証要否判断手段と、第１種ノードのプログラムの書き換えられた部分を読み出す読み出し手段と、プログラムの書き換えられた部分と、第２の記録領域に保存された分割プログラムとを比較することにより、プログラムの書き換えられた部分が変更されていないかどうかを検証する分割プログラム検証手段とを有し、送信可否判断手段により第１種ノードへの分割プログラムの送信が可能であると判断された場合に、第２の記録領域に保存された分割プログラムをネットワークを介して第１種ノードに送信し、第１種ノードは、第２種ノードから分割プログラムを受信する度に、プログラム書き換え手段により、第１の記録領域に保存されたプログラムのうちの当該分割プログラムに該当する部分を書き換え、第２種ノードは、第１種ノードのプログラム書き換え手段による書き換え後に、検証要否判断手段により、第１種ノードのプログラムの書き換えられた部分の検証が必要と判断された場合に、分割プログラム検証手段による検証を行なうものである。
【発明の効果】
【０００９】
この発明によれば、車両内のネットワークに接続された第１種ノード、及びネットワークにそれぞれ接続され、第１種ノードとの間及び互いの間で通信可能な複数の第２種ノードを備え、第１種ノードは、自ノードの動作を決定するプログラムを保存する第１の記録領域と、この第１の記録領域に保存されたプログラムを書き換え単位で書き換えるプログラム書き換え手段とを有し、第２種ノードは、プログラムを書き換えるための書き換え用プログラムの書き換え単位である分割プログラムを保存する第２の記録領域と、第１種ノードへの分割プログラムの送信可否を判断する送信可否判断手段と、第１種ノードのプログラムのプログラム書き換え手段によって書き換えられた部分の検証が必要かどうかを判断する検証要否判断手段と、第１種ノードのプログラムの書き換えられた部分を読み出す読み出し手段と、プログラムの書き換えられた部分と、第２の記録領域に保存された分割プログラムとを比較することにより、プログラムの書き換えられた部分が変更されていないかどうかを検証する分割プログラム検証手段とを有し、送信可否判断手段により第１種ノードへの分割プログラムの送信が可能であると判断された場合に、第２の記録領域に保存された分割プログラムをネットワークを介して第１種ノードに送信し、第１種ノードは、第２種ノードから分割プログラムを受信する度に、プログラム書き換え手段により、第１の記録領域に保存されたプログラムのうちの当該分割プログラムに該当する部分を書き換え、第２種ノードは、第１種ノードのプログラム書き換え手段による書き換え後に、検証要否判断手段により、第１種ノードのプログラムの書き換えられた部分の検証が必要と判断された場合に、分割プログラム検証手段による検証を行なうので、第１種ノードのプログラムの書き換えと書き換え後の検証を効率良く実施することができるとともに、第２種ノードに全ての書き換え用プログラムを保存するほどの大きな記録容量を設ける必要がない。
【図面の簡単な説明】
【００１０】
【図１】この発明の実施の形態１によるプログラム書き換え及び検証システムが適用される車両制御システムの構成を示すブロック図である。
【図２】この発明の実施の形態１によるプログラム書き換え及び検証システムにおける第１種ノードと第２種ノードとテスタノードの記録装置の領域構成を示すメモリマップ図である。
【図３】この発明の実施の形態１によるプログラム書き換え及び検証システムの第１種ノードにおける処理の流れを示すフローチャートである。
【図４】この発明の実施の形態１によるプログラム書き換え及び検証システムの第２種ノードにおける書き換え時の処理の流れを示すフローチャートである。
【図５】この発明の実施の形態１によるプログラム書き換え及び検証システムの書き換えプログラム送信元のテスタノードにおける書き換え時の処理の流れを示すフローチャートである。
【図６】この発明の実施の形態１によるプログラム書き換え及び検証システムの第２種ノードにおける書き換え後の検証処理の流れを示すフローチャートである。
【図７】この発明の実施の形態１によるプログラム書き換えシステムにおける各ノードの書き換え時の処理の流れを時間軸に沿って示す図である。
【図８】この発明の実施の形態１によるプログラム書き換えシステムにおける各ノードの書き換え後の検証処理の流れを時間軸に沿って示す図である。
【図９】この発明の実施の形態２によるプログラム書き換え及び検証システムが適用される車両制御システムの構成を示すブロック図である。
【図１０】この発明の実施の形態２によるプログラム書き換え及び検証システムにおける第３種ノードの記録装置の領域構成を示すメモリマップ図である。
【図１１】この発明の実施の形態２によるプログラム書き換えシステムにおける各ノードの書き換え後の検証処理の流れを時間軸に沿って示す図である。
【発明を実施するための形態】
【００１１】
実施の形態１．
以下、実施の形態１について、図に基づいて説明する。
図１は、この発明の実施の形態１によるプログラム書き換え及び検証システムが適用される車両制御システムの構成を示すブロック図である。
図１において、プログラム書き換え及び検証システムは、車両制御システムに含まれる。各制御装置及びテスタは、図１に示す以外の構成物も備えているが、実施の形態１に直接関係しないものについては図示を省略している。
各制御装置及びテスタの構成については後述する。
【００１２】
実施の形態１に係る車両制御システムは、第１種ノードであるバッテリ制御装置１と、第２種ノードであるＥＰＳ（Ｅｌｅｃｔｒｉｃ  Ｐｏｗｅｒ  Ｓｔｅｅｒｉｎｇ）制御装置２ａ及びモータ制御装置２ｂと、その他のノードであるテスタ３を有し、これらは車両のＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）ネットワーク６（ネットワーク）を介して、互いに通信可能に接続されている。
【００１３】
図２は、この発明の実施の形態１によるプログラム書き換え及び検証システムにおける第１種ノードと第２種ノードとテスタノードの記録装置の領域構成を示すメモリマップ図である。
図２（ａ）はバッテリ制御装置１の記録装置１３の領域構成を示す図、図２（ｂ）はＥＰＳ制御装置２ａの記録装置２３ａの領域構成を示す図、図２（ｃ）はモータ制御装置２ｂの記録装置２３ｂの領域構成を示す図、図２（ｄ）はテスタ３の記録装置３３の領域構
成を示す図である。各記憶装置の構成については後述する。
【００１４】
以下、図１の各制御装置及びテスタの詳細について、図２を参照して説明する。
バッテリ制御装置１は、バッテリ１０に接続されて、これを制御し、同様にＥＰＳ制御装置２ａは、ＥＰＳ２０ａに、モータ制御装置２ｂは、駆動用モータ２０ｂに接続され、それぞれを制御している。
なお、図１に示すテスタ３以外の制御装置は、常時、ＣＡＮネットワーク６に接続されているが、テスタ３は、ＣＡＮネットワーク６に常時接続されているものではなく、プログラムの書き換えや各ノードの故障診断時等、必要な時に随時接続される。
【００１５】
バッテリ制御装置１の構成と機能について説明する。
マイコン１１は、バッテリ１０の制御に関わる制御量や各種処理値を演算する。ＣＡＮネットワーク用データ送受信手段であるデータ送受信手段１２は、ＣＡＮネットワーク６を介して接続された他の制御装置（ＥＰＳ制御装置２ａ、モータ制御装置２ｂ、テスタ３を含む）とデータを送受信する。記録装置１３は、書き換え対象であるバッテリ制御プログラムを保存する第１の記録領域を有している。バッテリ制御プログラムは、バッテリ制御装置１の動作（制御内容）を決定し、演算を行うものである。
【００１６】
次に、記録装置１３の領域構成について、図２（ａ）を用いて説明する。
記録装置１３は、バッテリ制御プログラムを部分的に書き換えるためのプログラム書き換えプログラムを保存するプログラム書き換えプログラム記録領域１３１と、バッテリ制御プログラムを保存する第１の記録領域であるバッテリ制御プログラム記録領域１３２と、バッテリ１０の制御に関わるデータ等を保存するバッテリ制御プログラム用記録領域（データ用）１３３を有する。
【００１７】
図１のバッテリ制御装置１のプログラム書き換え手段１４は、記録装置１３のバッテリ制御プログラム記録領域１３２に保存されたバッテリ制御プログラムを部分的に書き換える。その際には、記録装置１３のプログラム書き換えプログラム記録領域１３１に記録されたプログラム書き換えプログラムを用いる。
【００１８】
第１の状態検出手段である状態検出手段１５は、（第１種ノード）自身がバッテリ制御プログラムを書き換え可能な状態であるか否か、あるいはバッテリ制御プログラムが全て書き換えられているか否か等の状態を検出する。
状態検出手段１５により書き換え可能であると検出された場合は、ＣＡＮネットワーク６を介して、ＥＰＳ制御装置２ａ及びモータ制御装置２ｂに通知し、通知を受けたＥＰＳ制御装置２ａ及びモータ制御装置２ｂは、自身が保存する分割プログラムを、ＣＡＮネットワーク６を介してバッテリ制御装置１に送信する。
【００１９】
バッテリ制御装置１は、ＥＰＳ制御装置２ａまたはモータ制御装置２ｂから分割プログラムを受信する度に、バッテリ制御プログラム記録領域１３２に保存されたバッテリ制御プログラムのその分割プログラムに該当する部分を、プログラム書き換え手段１４により書き換える。
【００２０】
次に、ＥＰＳ制御装置２ａの構成と機能について説明する。
マイコン２１ａは、ＥＰＳ２０ａの制御量や各種処理値を演算する。データ送受信手段２２ａは、ＣＡＮネットワーク６を介して、接続された他の制御装置（バッテリ制御装置１、モータ制御装置２ｂ、テスタ３を含む）とデータを送受信する。
記録装置２３ａは、バッテリ制御プログラムの書き換え用プログラムの一部分である分割バッテリ制御プログラム（以下、分割プログラムと略す）を保存する第２の記録領域を有している。
【００２１】
ここで、記録装置２３ａの領域構成について、図２（ｂ）を用いて説明する。
記録装置２３ａは、ＥＰＳ２０ａの制御内容を決定するＥＰＳ制御プログラムを保存するＥＰＳ制御プログラム記録領域２３１ａと、ＥＰＳ２０ａの制御に関わるデータ等を保存するＥＰＳ制御プログラム用記録領域（データ用）２３２ａと、分割プログラムを保存する第２の記録領域である分割バッテリ制御プログラム記録領域２３３ａとを有する。
なお、分割バッテリ制御プログラム記録領域２３３ａには、記録装置２３ａの空き領域等を割り当てることができる。
【００２２】
図１の送信可否判断手段２４ａは、バッテリ制御装置１への分割プログラムの送信可否を判断する。送信可否判断手段２４ａによりバッテリ制御装置１への分割プログラムの送信が可能であると判断された場合には、自身が保存する分割プログラムを、ＣＡＮネットワーク６を介してバッテリ制御装置１に送信する。
【００２３】
検証要否判断手段２５ａは、バッテリ制御装置１を分割プログラムで書き換えた後に、後述する検証必要性通知手段２９の通知に従い、検証が必要かどうかを判断する。
【００２４】
分割プログラム検証手段２６ａは、読み出し手段２７ａにより読み出されたバッテリ制御装置１の分割プログラムと、自ノードが分割バッテリ制御プログラム記録領域２３３ａに保存している分割プログラムとを比較することで、分割プログラムが変更されていないかどうかを検証する。
読み出し手段２７ａは、自ノードが保存する分割プログラムで書き換えたバッテリ制御装置１の該当部分をＣＡＮネットワーク６経由で読み出す。
【００２５】
次に、モータ制御装置２ｂの構成と機能について説明する。
マイコン２１ｂは、駆動用モータ２０ｂの制御量や各種処理値を演算する。データ送受信手段２２ｂは、ＣＡＮネットワーク６を介して、接続された他の制御装置（バッテリ制御装置１、ＥＰＳ制御装置２ａ、テスタ３を含む）とデータを送受信する。
記録装置２３ｂは、バッテリ制御プログラムの書き換え用プログラムを分割した一部分である分割プログラムを保存する第２の記録領域を有している。
【００２６】
ここで、記録装置２３ｂの領域構成について、図２（ｃ）を用いて説明する。
記録装置２３ｂは、駆動用モータ２０ｂの制御内容を決定するモータ制御プログラムを保存するモータ制御プログラム記録領域２３１ｂと、駆動用モータ２０ｂの制御に関わるデータ等が記録されるモータ制御プログラム用記録領域（データ用）２３２ｂと、分割プログラムを保存する第２の記録領域である分割バッテリ制御プログラム記録領域２３３ｂとを有する。
なお、分割バッテリ制御プログラム記録領域２３３ｂには、記録装置２３ｂの空き領域等を割り当てることができる。
【００２７】
図１の送信可否判断手段２４ｂは、バッテリ制御装置１への分割プログラムの送信可否を判断する。送信可否判断手段２４ｂによりバッテリ制御装置１への分割プログラムの送信が可能であると判断された場合には、自ノードが保存する分割プログラムを、ＣＡＮネットワーク６を介してバッテリ制御装置１に送信する。
【００２８】
検証要否判断手段２５ｂは、バッテリ制御装置１を分割プログラムで書き換えた後に、後述する検証必要性通知手段２９の通知に従い、検証が必要かどうかを判断する。
分割プログラム検証手段２６ｂは、読み出し手段２７ｂにより読み出されたバッテリ制御装置１の分割プログラムと、自ノードが分割バッテリ制御プログラム記録領域２３３ｂに保存している分割プログラムとを比較することで、分割プログラムが変更されていない
かどうかを検証する。
読み出し手段２７ｂは、自身が保存する分割プログラムにより書き換えられたバッテリ制御装置１の該当部分をＣＡＮネットワーク６経由で読み出す。
【００２９】
動作状態監視手段２８（第１の動作状態監視手段）は、バッテリ制御装置１の動作状態として、通常と異なる制御を実施していないかどうかを監視する。
検証必要性通知手段２９（第１の検証必要性通知手段）は、動作状態監視手段２８が異常を検出した時に、自ノードの検証要否判断手段２５ｂとＥＰＳ制御装置２ａの検証要否判断手段２５ａに、バッテリ制御装置１のプログラムの検証の必要性を通知する。
【００３０】
次に、テスタ３の構成と機能について説明する。
マイコン３１は、テスタ３の動作に関わる各種処理を実施する。データ送受信手段３２は、ＣＡＮネットワーク６を介して、接続された他の制御装置（バッテリ制御装置１、ＥＰＳ制御装置２ａ、モータ制御装置２ｂを含む）とデータを送受信する。
記録装置３３は、図２（ｄ）に示すように、バッテリ制御プログラムの書き換え用プログラムを保存する第３の記録領域であるバッテリ制御プログラム記録領域３３１を有する。
【００３１】
図１のプログラム分割手段３４は、記録装置３３のバッテリ制御プログラム記録領域３３１に保存された書き換え用プログラムを分割し、分割プログラムを作成する。プログラム分割手段３４により作成された分割プログラムは、それぞれＣＡＮネットワーク６を介してＥＰＳ制御装置２ａ及びモータ制御装置２ｂに送信される。
【００３２】
図７は、この発明の実施の形態１によるプログラム書き換えシステムにおける各ノードの書き換え時の処理の流れを時間軸に沿って示す図である。
図７において、縦軸は各ノード、横軸は時間を示している。なお、図７では、テスタ３はすでにＣＡＮネットワーク６に接続されており、各ノード間の通信は、全てＣＡＮネットワーク６を介して行われる。また、ＥＰＳ制御装置２ａ及びモータ制御装置２ｂは、それぞれ通常の処理を実施していないものとする。
【００３３】
図８は、この発明の実施の形態１によるプログラム書き換えシステムにおける各ノードの書き換え後の検証処理の流れを時間軸に沿って示す図である。
図８において、縦軸は各ノード、横軸は時間を示している。なお、図８では、図７で示した書き換え処理を終了しており、テスタ３はすでにＣＡＮネットワーク６から切断されている。また、ここでは、ｔ５２以降にバッテリ制御プログラム（分割プログラムＡが該当する部分）が意図せず書き換えられてしまい、通常と異なる制御がなされているものとする。この書き換えられた原因としては、外部の悪意あるものが書き換えたり、バッテリ制御プログラム記憶領域が破損したりすることが考えられるが、実施の形態１の効果に影響しないため言及しない。
【００３４】
次に、動作について説明する。
実施の形態１に係わるプログラム書き換えシステムの各ノードにおける処理の流れについて、図３〜図５のフローチャートを用いて説明する。
まず、図３を用いて、第１種ノードであるバッテリ制御装置１におけるプログラム書き換えに関する処理の流れについて説明する。
バッテリ制御装置１では、バッテリ１０の制御に関わる通常の処理と、バッテリ制御プログラムの書き換えに関する処理が実施される。プログラム書き換えに関する処理は、テスタ３から書き換え実施の通知（書き換え指示）があった場合に実施される。図３は、テスタ３からの書き換え実施の通知を受信した後の処理フローを示している。
【００３５】
まず、ステップＳ３０２において、関連ノードへ分割書き換えを実施することを通知し、ステップＳ３０３へ進む。ステップＳ３０３において、状態検出手段１５は、通常の処理が実施されているかどうかを判断し、通常の処理が実施されていなければ、書き換え可能（ＹＥＳ）であるため、ステップＳ３０４へ進み、通常の処理が実施されている場合には、終了まで待機する。
【００３６】
続いて、ステップＳ３０４において、状態検出手段１５は、記録装置１３のバッテリ制御プログラム記録領域１３２に保存されたバッテリ制御プログラムの全ての領域（部分）が書き換えられているか否かを判断する。全て書き換えられている場合は（ＹＥＳ）、本処理を終了し、書き換えられていなければ（ＮＯ）、ステップＳ３０５へ進む。
【００３７】
Ｓ３０５において、状態検出手段１５は、バッテリ制御プログラム記録領域１３２に保存されたバッテリ制御プログラムが書き換え中であるか否かを判断する。いずれの部分も書き換え中でなければ（ＮＯ）、ステップＳ３０６へ進み、書き換え中であれば（ＹＥＳ）、書き換えが終了するまで待機する。
【００３８】
ステップＳ３０６において、状態検出手段１５は、書き換えが終了していないバッテリ制御プログラムの部分に該当する分割プログラムを保存している第２種ノードに対し、データ送受信手段１２により送信指示をし、ステップＳ３０７へ進む。
ステップＳ３０７では、データ送受信手段１２により分割プログラムを受信し、ステップＳ３０８へ進む。
ステップＳ３０８において、プログラム書き換え手段１４は、プログラム書き換えプログラムを用い、受信した分割プログラムに該当するバッテリ制御プログラムの部分を書き換える。
【００３９】
次に、第２種ノードであるＥＰＳ制御装置２ａ及びモータ制御装置２ｂにおけるプログラム書き換えに関する処理の流れについて、図４を用いて説明する。
ＥＰＳ制御装置２ａ（またはモータ制御装置２ｂ）では、ＥＰＳ２０ａ（または駆動用モータ２０ｂ）の制御に関わる通常の処理と、バッテリ制御装置１のプログラム書き換えに関する処理が実施される。プログラム書き換えに関する処理は、テスタ３から書き換え実施の通知があった場合に実施されるが、通常の処理が実施されている時には書き換えに関する処理は実施しない。
なお、ＥＰＳ制御装置２ａとモータ制御装置２ｂにおけるプログラム書き換えに関する処理は同じであるので、ここではＥＰＳ制御装置２ａを例に挙げて説明する。
【００４０】
ＥＰＳ制御装置２ａは、テスタ３から書き換え実施の通知を受信後、ステップＳ４０１において、分割プログラムの受信を待つ。データ送受信手段２２ａにより分割プログラムを受信した場合（ＹＥＳ）は、ステップＳ４０２へ進み、受信した分割プログラムを記録装置２３ａの分割バッテリ制御プログラム記録領域２３３ａに保存し、ステップＳ４０３へ進む。
【００４１】
ステップＳ４０３において、ＥＰＳ制御装置２ａは、バッテリ制御装置１からの分割プログラムの送信指示を待つ。送信指示を受信しない場合（ＮＯ）は、受信するまで待機する。
送信指示を受信した場合（ＹＥＳ）、ステップＳ４０４へ進み、送信可否判断手段２４ａは、分割プログラムを送信すると判断し、データ送受信手段２２ａにより、分割バッテリ制御プログラム記録領域２３３ａに保存している分割プログラムをバッテリ制御装置１へ送信し、処理を終了する。
【００４２】
次に、テスタ３におけるプログラム書き換えに関する処理の流れについて、図５を用い
て説明する。
テスタ３では、関連ノードへのプログラム書き換え実施の通知と、書き換え用プログラムの送信処理を実施する。なお、図５は、各ノードに対し、バッテリ制御装置１のプログラム書き換え実施を通知した後の処理フローを示している。
【００４３】
まず、ステップＳ４１１において、テスタ３のプログラム分割手段３４は、記録装置３３のバッテリ制御プログラム記録領域３３１に記録されている書き換え用プログラムを分割し、分割プログラムを作成する。
続いて、ステップＳ４１２において、データ送受信手段３２により、分割プログラムをそれぞれ各第２種ノードへ送信する。実施の形態１では、第２種ノードを２つ備えているため、書き換え用プログラムを２つに分割し、分割プログラムＡと分割プログラムＢを作成し、例えば分割プログラムＡをＥＰＳ制御装置２ａに、分割プログラムＢをモータ制御装置２ｂに送信する。
【００４４】
次に、ステップＳ４１３において、全ての分割プログラムが送信されたか否かを判断する。全ての分割プログラムが送信されていない場合（ＮＯ）、ステップＳ４１２へ進み、全て送信されていた場合には（ＹＥＳ）、処理を終了する。
【００４５】
以上、図３〜図５のフローチャートにより、各ノードのプログラム書き換えに関する処理の流れについて説明した。
【００４６】
次に、図６のフローチャートにより書き換えが完了したのちに、バッテリ制御装置１のプログラムが改ざんもしくは意図しない変更がされていないかどうかを検証する処理の流れについて説明する。
なお、ＥＰＳ制御装置２ａとモータ制御装置２ｂにおけるプログラム書き換え後の検証に関する処理は同じであるため、ここではＥＰＳ制御装置２ａを例に挙げて説明する。
【００４７】
ＥＰＳ制御装置２ａは、バッテリ制御装置１のプログラム書き換え完了後、ステップＳ４２１において、検証要否判断手段２５ａが、モータ制御装置２ｂの検証必要性通知手段２９からのバッテリ制御装置１のプログラムの検証実施の通知の受信を待つ。検証実施通知を受信した場合には（ＹＥＳ）、検証が必要と判断し、ステップＳ４２２へ進む。
続いて、ステップＳ４２２において、読み出し手段２７ａにより、自ノードが保存する分割プログラムで書き換えたバッテリ制御装置１の該当部分をＣＡＮネットワーク６経由で読み出す。
【００４８】
次に、ステップＳ４２３において、読み出し手段２７ａが読み出したバッテリ制御装置１の分割プログラムと、自ノードが分割バッテリ制御プログラム記録領域２３３ｂに保存している分割プログラムとを比較することで、この分割プログラムが変更されていないかどうかを検証する。
続いて、ステップＳ４２４において、検証の結果、異常が検出された場合には（ＹＥＳ）、処理を終了し、異常が検出されなかった場合には（ＮＯ）、ステップＳ４２５へ進む。
続いて、ステップＳ４２５において、読み出し手段２７ａがすべての分割プログラム部分を読み出したかどうかを判断する。すべてを読み出した場合には（ＹＥＳ）、処理を終了し、すべてを読み出せていない場合には（ＮＯ）、ステップＳ４２２へ進む。
【００４９】
次に、これら全てのノードの書き換えに関する処理の流れを、図７、図８のタイムチャートに沿って説明する。
まず、図７について説明する。図７では、テスタ３はすでにＣＡＮネットワーク６に接続され、各ノード間の通信は、全てＣＡＮネットワーク６を介して行われる。また、ＥＰ
Ｓ制御装置２ａ及びモータ制御装置２ｂは、それぞれ通常の処理を実施していないものとする。
【００５０】
図７のｔ１０において、バッテリ制御装置１は、バッテリ１０の制御に関わる通常の処理を実施している（処理１０）。続いて、ｔ１１において、テスタ３は、データ送受信手段３２により、バッテリ制御装置１に対し、プログラム書き換えを実施することを通知する（処理４０）。
【００５１】
テスタ３から書き換え実施通知を受信したバッテリ制御装置１の状態検出手段１５は、バッテリ制御プログラムを書き換え可能な状態であるか否かを判断する（処理１１）。ここでは、通常の処理を実施しているため、書き換え不可と判断される。
続いて、ｔ１２において、バッテリ制御装置１は、ＥＰＳ制御装置２ａ、モータ制御装置２ｂ、及びテスタ３に対し、書き換え実施不可であることを通知する（処理１２）。ＥＰＳ制御装置２ａ、モータ制御装置２ｂ、及びテスタ３は、それぞれバッテリ制御装置１が書き換え不可であることを受信する（処理２０、処理３０、処理４１）。
【００５２】
次に、ｔ１３において、バッテリ制御装置１は、バッテリ１０の制御に関わる通常の処理を再開する（処理１０）。ｔ１４において、テスタ３は、自身が保存しているバッテリ制御プログラムの書き換え用プログラムを、プログラム分割手段３４により分割し、分割プログラムを作成する（処理４２）。なお、ここでは、書き換え用プログラムを分割プログラムＡと分割プログラムＢの２つに分割するものとする。
【００５３】
続いて、ｔ１５において、テスタ３は、分割プログラムＡをＥＰＳ制御装置２ａへ送信する（処理４３）。これを受信したＥＰＳ制御装置２ａは、分割プログラムＡを分割バッテリ制御プログラム記録領域２３３ａに保存する（処理２１）。
次に、ｔ１６において、テスタ３は、まず、全ての分割プログラムを送信したか否かを確認する。ここでは、分割プログラムＢが未送信のため、処理を継続し、分割プログラムＢをモータ制御装置２ｂへ送信する（処理４４）。
【００５４】
分割プログラムＢを受信したモータ制御装置２ｂは、分割プログラムＢを分割バッテリ制御プログラム記録領域２３３ｂに保存する（処理３１）。さらに、テスタ３は、全ての分割プログラムを送信したか否かを確認し、ここでは全ての分割プログラムが送信済みのため、処理を終了する。
ここまでの処理が終了すると、テスタ３をＣＡＮネットワーク６から取り外すことが可能となる。
【００５５】
その後、ｔ１７において、バッテリ制御装置１が通常の処理を終了すると、ｔ１８において、状態検出手段１５は、バッテリ制御プログラムの書き換えが可能な状態であるか否かを判断する。ここでは、通常の処理を実施していないため、書き換え可能であると判断される。
次に、状態検出手段１５は、記録装置１３のバッテリ制御プログラム記録領域１３２に保存されているバッテリ制御プログラムの全ての領域（部分）が書き換えられているか否かを判断する。ここでは、書き換えられていないと判断される。
【００５６】
さらに、状態検出手段１５は、バッテリ制御プログラム記録領域１３２に保存されたバッテリ制御プログラムが書き換え中であるか否かを判断する。ここでは、いずれの部分も書き換え中でないため、バッテリ制御装置１は、ＥＰＳ制御装置２ａへ分割プログラムの送信を指示し（処理１３）、ＥＰＳ制御装置２ａのデータ送受信手段２２ａは、分割プログラムの送信指示を受信する（処理２２）。
【００５７】
続いて、ｔ１９において、ＥＰＳ制御装置２ａの送信可否判断手段２４ａは、バッテリ制御装置１へ分割プログラムを送信すると判断し、記録装置２３ａの分割バッテリ制御プログラム記録領域２３３ａに保存している分割プログラムＡを、データ送受信手段２２ａにより送信する（処理２３）。これにより、ＥＰＳ制御装置２ａは処理を終了する。
分割プログラムＡを受信したバッテリ制御装置１は、プログラム書き換え手段１４により、バッテリ制御プログラムの分割プログラムＡに該当する部分を書き換える（処理１４）。
【００５８】
次に、ｔ２０において、状態検出手段１５は、バッテリ制御プログラム記録領域１３２に保存されているバッテリ制御プログラムの全ての領域（部分）が書き換えられているか否かを判断する。ここでは、書き換えられていないと判断される。
さらに、状態検出手段１５は、バッテリ制御プログラム記録領域１３２に保存されたバッテリ制御プログラムが書き換え中であるか否かを判断する。ここでは、いずれの部分も書き換え中でないため、バッテリ制御装置１は、モータ制御装置２ｂへ分割プログラムの送信を指示し（処理１５）、モータ制御装置２ｂのデータ送受信手段２２ｂは、分割プログラムの送信指示を受信する（処理３２）。
【００５９】
続いて、ｔ２１において、モータ制御装置２ｂの送信可否判断手段２４ｂは、バッテリ制御装置１へ分割プログラムを送信すると判断し、記録装置２３ｂの分割バッテリ制御プログラム記録領域２３３ｂに保存している分割プログラムＢを、データ送受信手段２２ｂにより送信する（処理３３）。これにより、モータ制御装置２ｂは処理を終了する。
分割プログラムＢを受信したバッテリ制御装置１は、プログラム書き換え手段１４により、バッテリ制御プログラムの分割プログラムＢに該当する部分を書き換える（処理１６）。
その後、状態検出手段１５は、全てのバッテリ制御プログラムの書き換えが終了しているか否かを判断する。ここでは、全て書き換えられているため、書き換えに関する処理を終了する。
【００６０】
次に、これらノードの検証に関わる処理を図８のタイムチャートに沿って説明する。なお、図８では、図７で示した書き換え処理を終了しており、テスタ３はすでにＣＡＮネットワーク６から切断されている。
また、ここでは、ｔ５２以降にバッテリ制御プログラム（分割プログラムＡが該当する部分）が意図せず書き換えられてしまい、通常と異なる制御がなされているものとする。書き換えられた原因としては、外部の悪意あるものが書き換えたり、バッテリ制御プログラム記憶領域が破損したりすることが考えられるが、本実施の形態の効果に影響しないため言及しない。
【００６１】
ｔ５０において、バッテリ制御装置１は、バッテリ１０の制御に関わる通常の処理を実施している（処理１０）。続いて、ｔ５１において、モータ制御装置２ｂは、動作状態監視手段２８により、バッテリ制御装置１の動作状態として通常と異なる制御を実施していないかどうかを監視する（処理３４）。ここでは通常通りの制御がなされていると判断する。
【００６２】
ｔ５２において、バッテリ制御装置１は、バッテリ１０の制御に関わる処理を実施している（処理１０）。続いて、ｔ５３において、モータ制御装置２ｂは、動作状態監視手段２８により、バッテリ制御装置１の動作状態として通常と異なる制御を実施していないかどうかを監視する（処理３５）。ここでは、バッテリ制御プログラムが意図せず書き換えられたとしていることから、通常と異なる制御がなされていると判断する。
そこで、検証必要性通知手段２９は、自身の検証要否判断手段２５ｂとＥＰＳ制御装置２ａの検証要否判断手段２５ａに、バッテリ制御装置１のプログラムの検証実施の必要性
をＣＡＮネットワーク６経由で通知する（処理３５）。そして、ＥＰＳ制御装置２ａの検証要否判断手段２５ａはこれを受け取る（処理２４）。
【００６３】
続いて、ｔ５４において、モータ制御装置２ｂは、通知を受けた検証要否判断手段２５ｂにより検証が必要と判断され、読み出し手段２７ｂは、バッテリ制御装置１のバッテリ制御プログラム記録領域１３２のうち自身が記録している分割バッテリ制御プログラムに該当する部分を読み出す。
ここでは、ＣＡＮネットワーク６経由で読み出し指示を送信し、それを受けたバッテリ制御装置１が該当プログラムを送信する（処理１１）。ただし、読み出し方はこれに限るものではない。
続いて、モータ制御装置２ｂの分割プログラム検証手段２６ｂは、読み出したプログラムと、分割バッテリ制御プログラム記録領域２３３ｂに記録されている分割プログラムＢとを比較する。ここでは違いがなく、異常がないとする（処理３６）。
【００６４】
続いて、ｔ５５において、ＥＰＳ制御装置２ａは、通知を受けた検証要否判断手段２５ａにより検証が必要と判断され、読み出し手段２７ａは、バッテリ制御装置１のバッテリ制御プログラム記録領域１３２のうち、自ノードが記録している分割バッテリ制御プログラムに該当する部分を読み出す。ここでは、ＣＡＮネットワーク６経由で読みだし指示を送信し、それを受けたバッテリ制御装置１が該当プログラムを送信する（処理１２）。ただし、読み出し方はこれに限るものではない。
続いて、ＥＰＳ制御装置２ａの分割プログラム検証手段２６ａは、読み出したプログラムと、分割バッテリ制御プログラム記録領域２３３ａに記録されている分割プログラムＡとを比較する。ここでは違いがあり、異常があることが検出される（処理２５）。
【００６５】
以上のように、本実施の形態１に係わるプログラム書き換え及び検証システムでは、テスタ３からバッテリ制御装置１へプログラム書き換え実施を通知し、テスタ３は、バッテリ制御プログラムの書き換え用プログラムを分割して分割プログラムを作成し、ＥＰＳ制御装置２ａとモータ制御装置２ｂそれぞれに送信する。
【００６６】
その後、バッテリ制御装置１がプログラム書き換え実施可能となった時点で、ＥＰＳ制御装置２ａとモータ制御装置２ｂは、自身が保存する分割プログラムをそれぞれバッテリ制御装置１に送信し、バッテリ制御装置１は、これらを受信する度に、受信した分割プログラムに該当するバッテリ制御プログラムの部分を書き換える。
【００６７】
書き換え後は、バッテリ制御装置１は書き替えたプログラムで動作し、モータ制御装置２ｂは、検証の必要性を判断するためにバッテリ制御装置１の動作状態を監視する。
ここで、モータ制御装置２ｂは、バッテリ制御装置１の動作状態として制御内容を監視し、通常と異なる動作状態が検出されたときは、自身の検証要否判断手段２５ｂとＥＰＳ制御装置２ａの検証要否判断手段２５ａに、バッテリ制御装置１のプログラムの検証必要性を通知し、ＥＰＳ制御装置２ａとモータ制御装置２ｂは、それぞれ検証が必要と判断し、自ノードが書き換え時に記録した分割プログラムとバッテリ制御装置１のプログラムとを比較することで、バッテリ制御装置１の制御プログラムの検証を実施する。
【００６８】
実施の形態１によれば、バッテリ制御装置１が通常の処理を実施中であっても、テスタ３は、書き換え用プログラムを分割し、ＥＰＳ制御装置２ａとモータ制御装置２ｂにそれぞれ分割プログラムを送信し、送信が終了すると所定のタイミングを待つことなく、ＣＡＮネットワーク６から切り離すことが可能となるため、効率の良いプログラムの書き換えを実施することができる。
【００６９】
また、書き換え用プログラムを分割して複数の第２種ノード（本実施の形態１ではＥＰ
Ｓ制御装置２ａとモータ制御装置２ｂの２つ）に保存するため、第２種ノードに全ての書き換え用プログラムを保存できるほどの大きな記録容量を設ける必要がなく、一つのノードがコスト高になることを防ぐことができ、全体としてのコストが抑えられる。
【００７０】
また、書き換え時に第２種ノードに保存したプログラムを用いて、第１種ノードの動作状態に応じて検証することができるので、効率の良い書き換え後のプログラムの検証を実施することができる。
【００７１】
実施の形態２．
以下、実施の形態２について、図に基づいて説明する。
図９は、この発明の実施の形態２によるプログラム書き換え及び検証システムが適用される車両制御システムの構成を示すブロック図である。
図９において、符号１、２ａ、２ｂ、３、６、１０〜１５、２０ａ〜２７ａ、２０ｂ〜２７ｂ、３１〜３４は図１におけるものと同一のものである。図９では、ＣＡＮネットワーク６に第３種ノードである車載充電器制御装置４が接続されている。車載充電器制御装置４は、車載充電器４０を制御するとともに、ＣＡＮネットワーク６を介して、第１種ノードであるバッテリ制御装置１と、及び第２種ノードであるＥＰＳ制御装置２ａ及びモータ制御装置２ｂと、通信可能になっている。車載充電器制御装置４の構成は後述する。
なお、図９において、各制御装置は、図９に示す以外の構成物も備えているが、実施の形態２に直接関係しないものについては図示を省略する。
【００７２】
図１０は、この発明の実施の形態２によるプログラム書き換え及び検証システムにおける第３種ノードの記録装置の領域構成を示すメモリマップ図である。
図１０において、記録装置４３は、車載充電器４０の制御内容を決定する車載充電器制御プログラムを保存する車載充電器制御プログラム記録領域４３１と、車載充電器４０の制御に関わるデータ等を保存する車載充電器制御プログラム用記録領域（データ用）４３２とを有する。
【００７３】
次に、車載充電器制御装置４の構成と機能について説明する。
マイコン４１は、車載充電器４０の動作に関わる各種処理を実施する。データ送受信手段４２は、ＣＡＮネットワーク６を介して、接続された他の制御装置（バッテリ制御装置１、ＥＰＳ制御装置２ａ、モータ制御装置２ｂ及びテスタ３を含む）とデータを送受信する。記録装置４３は、自ノードの制御に関わるプログラム及びデータの記録領域であり、図１０のように構成されている。
動作状態監視手段４４（第２の動作状態監視手段）は、バッテリ制御装置１の動作状態として、通常と異なる制御を実施していないかどうかを監視する。
検証必要性通知手段４５（第２の検証必要性通知手段）は、動作状態監視手段４４により異常が検出された時に、ＥＰＳ制御装置２ａの検証要否判断手段２５ａとモータ制御装置２ｂの検証要否判断手段２５ｂとに、バッテリ制御装置１のプログラムの検証の必要性を通知する。
【００７４】
図１１は、この発明の実施の形態２によるプログラム書き換えシステムにおける各ノードの書き換え後の検証処理の流れを時間軸に沿って示す図である。
図１１において、縦軸は各ノード、横軸は時間を示している。なお、図１１では、書き換え処理を終了しており（図７参照）、テスタ３はすでにＣＡＮネットワーク６から切断されている。
また、ｔ６２以降にバッテリ制御プログラム（分割プログラムＡが該当する部分）が意図せず書き換えられてしまい、通常と異なる制御がなされているものとする。この書き換えられた原因としては、外部の悪意あるものが書き換えたり、バッテリ制御プログラム記憶領域が破損したりすることが考えられるが、本実施の形態２の効果に影響しないため言
及しない。
【００７５】
次に、動作について説明する。
本実施の形態２のプログラム書き換えシステムの各ノードにおける処理の流れは、実施の形態１と同じであるため、その説明を省略する（図３〜図６参照）。
また、各ノードの時間軸に沿った処理の流れについては、書き換えでは、車載充電器制御装置４は処理に介入せず、実施の形態１と同じであるため、その説明を省略する（図７参照）。
【００７６】
次に、これらノードの検証に関わる処理を、図１１のタイムチャートに沿って説明する。
ｔ６０において、バッテリ制御装置１は、バッテリ１０の制御に関わる通常の処理を実施している（処理１０）。続いて、ｔ６１において、車載充電器制御装置４は、動作状態監視手段４４により、バッテリ制御装置１の動作状態として、通常と異なる制御を実施していないかどうかを監視する（処理４１）。ここでは通常通りの制御がなされていると判断する。
【００７７】
ｔ６２において、バッテリ制御装置１は、バッテリ１０の制御に関わる処理を実施している（処理１０）。続いて、ｔ６３において、車載充電器制御装置４は、動作状態監視手段４４により、バッテリ制御装置１の動作状態として、通常と異なる制御を実施していないかどうかを監視する（処理４２）。ここでは、バッテリ制御プログラムが意図せず書き換えられたものとしていることから、通常と異なる制御がなされていると判断する。
そこで、検証必要性通知手段４５は、ＥＰＳ制御装置２ａの検証要否判断手段２５ａとモータ制御装置２ｂの検証要否判断手段２５ｂとに、バッテリ制御装置１のプログラムの検証実施の必要性をＣＡＮネットワーク６経由で通知する（処理４２）。
ＥＰＳ制御装置２ａの検証要否判断手段２５ａは、これを受け取り（処理２４）、また、モータ制御装置２ｂの検証要否判断手段２５ｂもこれを受け取る（処理３７）。
【００７８】
続いて、ｔ６４において、モータ制御装置２ｂは、通知を受けた検証要否判断手段２５ｂにより検証が必要と判断し、読み出し手段２７ｂは、バッテリ制御装置１のバッテリ制御プログラム記録領域１３２のうち自身が記録している分割バッテリ制御プログラムに該当する部分を読み出す。ここでは、ＣＡＮネットワーク６経由で読みだし指示を送信し、それを受けたバッテリ制御装置１が該当プログラムを送信する（処理１１）。ただし、読み出し方はこれに限るものではない。
続いて、モータ制御装置２ｂの分割プログラム検証手段２６ｂは、読み出したプログラムと、分割バッテリ制御プログラム記録領域２３３ｂに記録されている分割プログラムＢとを比較する。ここでは違いがなく、異常がないとする（処理３６）。
【００７９】
続いて、ｔ６５において、ＥＰＳ制御装置２ａは、通知を受けた検証要否判断手段２５ａにより検証が必要と判断し、読み出し手段２７ａは、バッテリ制御装置１のバッテリ制御プログラム記録領域１３２のうち、自身が記録している分割バッテリ制御プログラムに該当する部分を読み出す。ここでは、ＣＡＮネットワーク６経由で読みだし指示を送信し、それを受けたバッテリ制御装置１が該当プログラムを送信する（処理１２）。ただし、読み出し方はこれに限るものではない。
続いて、ＥＰＳ制御装置２ａの分割プログラム検証手段２６ａは、読み出したプログラムと、分割バッテリ制御プログラム記録領域２３３ａに記録されている分割プログラムＡとを比較する。ここでは違いがあり、異常があることが検出される（処理２５）。
【００８０】
以上のように、実施の形態２のプログラム書き換え及び検証システムでは、テスタ３からバッテリ制御装置１へプログラム書き換え実施を通知し、テスタ３は、バッテリ制御プ
ログラムの書き換え用プログラムを分割して分割プログラムを作成し、ＥＰＳ制御装置２ａとモータ制御装置２ｂのそれぞれに送信する。
【００８１】
その後、バッテリ制御装置１がプログラム書き換え実施可能となった時点で、ＥＰＳ制御装置２ａとモータ制御装置２ｂは、自身が保存する分割プログラムをそれぞれバッテリ制御装置１に送信し、バッテリ制御装置１は、これらを受信する度に、受信した分割プログラムに該当するバッテリ制御プログラムの部分を書き換える。
【００８２】
書き換え後は、バッテリ制御装置１は、書き換えたプログラムで動作し、車載充電器制御装置４は、検証の必要性を判断するためにバッテリ制御装置１の動作状態を監視する。ここでは、バッテリ制御装置１の動作状態として、制御内容を監視し、通常と異なる動作状態が検出されたときは、ＥＰＳ制御装置２ａの検証要否判断手段２５ａとモータ制御装置２ｂの検証要否判断手段２５ｂとに、バッテリ制御装置１のプログラムの検証必要性を通知する。
ＥＰＳ制御装置２ａとモータ制御装置２ｂは、それぞれ検証が必要と判断し、自身が書き換え時に記録した分割プログラムとバッテリ制御装置１のプログラムとを比較することで、バッテリ制御装置１の制御プログラムの検証を実施する。
【００８３】
実施の形態２によれば、バッテリ制御装置１が通常の処理を実施中であっても、テスタ３は、書き換え用プログラムを分割し、ＥＰＳ制御装置２ａとモータ制御装置２ｂとにそれぞれ分割プログラムを送信し、送信が終了すると所定のタイミングを待つことなく、ＣＡＮネットワーク６から切り離すことが可能となるため、効率の良いプログラムの書き換えを実施することができる。
【００８４】
また、書き換え用プログラムを分割して、複数の第２種ノード（本実施の形態２ではＥＰＳ制御装置２ａとモータ制御装置２ｂの２つ）に保存するため、第２種ノードに全ての書き換え用プログラムを保存できるほどの大きな記録容量を設ける必要がなく、一つのノードがコスト高になることを防ぐことができ、全体としてのコストが抑えられる。
【００８５】
また、書き換え時に第２種ノードに保存したプログラムを用いて、動作状態に応じて検証することができるので、効率の良い書き換え後のプログラムの検証を実施することができる。
さらに、検証の開始の判断を、書き換えに介入しない第３種ノードから実施することで、書き換えと書き換え後の検証をシステムとして負荷を分散することができる。
【００８６】
なお、実施の形態１〜実施の形態２では、書き換え後の検証実施判断に動作状態監視手段による動作状態の監視結果を用いたが、ネットワークに流れるデータを監視する通信状態監視手段（第１、第２の通信状態監視手段）を設けて、バッテリ制御装置１の送信データの変化を検証必要性の判断に用いてもよい。
このようにすることで、制御装置の設置位置が遠い場合においても、ネットワークを通して異常を検出でき、効率のよい検証ができるという効果が得られる。
【００８７】
また、実施の形態１〜実施の形態２では、書き換え後の検証実施判断に動作状態監視手段による動作状態の監視結果を用いたが、ＧＰＳ信号を受信することで車両の位置を測定できる車両位置測定手段（第１、第２の車両位置測定手段）を設けて、車両位置情報に基づき特定の位置に到達したときを、検証必要性の判断に用いてもよい。
このようにすることで、車内の状況に限らず、固定されたタイミングで効率のよい検証ができるという効果が得られる。
【００８８】
また、実施の形態１〜実施の形態２では、書き換え後の検証実施判断に動作状態監視手
段による動作状態の監視結果を用いたが、車両の動きを測定できる車両挙動測定手段（第１、第２の車両挙動測定手段）を設けて、あらかじめ定めておく所定の車両挙動を検出したときを、検証必要性の判断に用いてもよい。
このようにすることで、車両の実状況に応じた効率のよい検証ができるという効果が得られる。
【００８９】
さらに、実施の形態１〜実施の形態２では、２つの第２種ノードを備えた車両制御システムを例に挙げて説明したが、第２種ノードの数はこれに限定されるものではない。
第２種ノードの数を増やすことにより、各分割プログラムの容量を低減することができ、各第２種ノードに必要となる記録容量を抑えることができる。
【００９０】
また、ネットワークとしてＣＡＮネットワーク６を挙げて説明したが、ネットワークの種類はこれに限るものではない。
【００９１】
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。
【産業上の利用可能性】
【００９２】
本発明は、ネットワークに接続された複数の制御装置を含むシステム（例えば車両制御システム）におけるプログラムの書き換え及び書き換え後の検証方法として利用することができる。
【符号の説明】
【００９３】
１  バッテリ制御装置（第１種ノード）、２ａ  ＥＰＳ制御装置（第２種ノード）、
２ｂ  モータ制御装置（第２種ノード）、３  テスタ、
４  車載充電器制御装置（第３種ノード）、６  ＣＡＮネットワーク、１０  バッテリ、１１、２１ａ、２１ｂ、３１、４１  マイコン、
１２、２２ａ、２２ｂ、３２、４２  データ送受信手段、
１３、２３ａ、２３ｂ、３３、４３  記録装置、１４  プログラム書き換え手段、
１５  状態検出手段、２０ａ  ＥＰＳ、２０ｂ  駆動用モータ、
２４ａ、２４ｂ  送信可否判断手段、２５ａ、２５ｂ  検証要否判断手段、
２６ａ、２６ｂ  分割プログラム検証手段、２７ａ、２７ｂ  読み出し手段、
２８、４４  動作状態監視手段、２９、４５  検証必要性通知手段、
３４  プログラム分割手段、４０  車載充電器
【図１】
2018067027.tif 000003
【図２】
2018067027.tif 000004
【図３】
2018067027.tif 000005
【図４】
2018067027.tif 000006
【図５】
2018067027.tif 000007
【図６】
2018067027.tif 000008
【図７】
2018067027.tif 000009
【図８】
2018067027.tif 000010
【図９】
2018067027.tif 000011
【図１０】
2018067027.tif 000012
【図１１】
2018067027.tif 000013