(57)【特許請求の範囲】
【請求項１】
第一の制御装置と複数の第二の制御装置がネットワークを介して接続された制御システムであって、
上記第一の制御装置は、
上記ネットワークを介してデータの送受信を行う第一の通信インタフェース部と、
上記各第二の制御装置の動作を決定するプログラムを書き換えるための書き換え用プログラムを保管する第一のプログラム保管部と、
上記書き換え用プログラムから一つ以上の書き換え用データを形成して、上記第一の通信インタフェース部により送信する第一のプログラム送信部とを備え、
上記各第二の制御装置は、
上記ネットワークを介してデータの送受信を行う第二の通信インタフェース部と、
上記ネットワークからの書き換え用データを受信できたかどうかを判断するデータ受信成否判断部と、
上記第一の制御装置から受信した書き換え用データと同一内容のデータからなる検証用データを、上記第二の通信インタフェース部により送信する第二のプログラム送信部と、
上記第二の制御装置の動作を決定するプログラムを保管する第二のプログラム保管部と、
上記ネットワークから受信した書き換え用データを基に、上記第二のプログラム保管部のプログラムを書き換えるプログラム書き換え部とを備え、
上記第一の制御装置は、複数の上記第二の制御装置へ上記書き換え用データを送信し、
上記データ受信成否判断部が書き換え用データの受信に成功したと判断した第二の制御装置のうちの特定の第二の制御装置は、上記検証用データを送信し、
上記データ受信成否判断部が書き換え用データの受信に失敗したと判断した第二の制御装置は、上記特定の第二の制御装置から送信される検証用データを受信して上記受信に失敗した書き換え用データを補完し、この補完した書き換え用データを基に、上記第二のプログラム保管部のプログラムを書き換えることを特徴とする制御システム。
【請求項２】
上記第一の制御装置は、上記第二の制御装置に、上記検証用データの送信を要求する検証用データ送信要求部を備え、
上記第二の制御装置は、上記データ受信成否判断部の判断結果を、上記第一の制御装置に通知するデータ受信状況通知部を備え、
上記第一の制御装置は、上記第二の制御装置のデータ受信状況通知部から通知された上記データ受信成否判断部の判断結果に基づき、書き換え用データの受信に成功している第二の制御装置に、上記検証用データの送信要求を行い、
上記第一の制御装置から検証用データの送信要求を受けた上記第二の制御装置は、自身を上記特定の第二の制御装置であると判断することを特徴とする請求項１に記載の制御システム。
【請求項３】
上記第一の制御装置は、上記第一の制御装置が送信した書き換え用データの内容と、上記第二の制御装置から受信した検証用データの内容が一致していた場合、検証の結果がＯＫと判断し、一致していなかった場合、検証の結果がＮＧと判断するデータ送信成否判断部を備え、
上記データ送信成否判断部の検証の結果がＮＧであると判断した場合、検証の結果がＮＧとなった第二の制御装置へ通知し、他の第二の制御装置から送信される検証用データを受信させることを特徴とする請求項１または請求項２に記載の制御システム。
【請求項４】
上記第一の制御装置は、上記第二の制御装置へ上記書き換え用データを送信し、所定時間後に検証の結果がＯＫとなっていない上記第二の制御装置へ、再度、上記書き換え用データを送信することを特徴とする請求項３に記載の制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、車両ネットワーク等、複数の制御装置がネットワークに接続された環境において、これら制御装置のプログラム書き換えを行う制御システムに関するものである。
【背景技術】
【０００２】
現在車両には、ＥＣＵ（Ｅｌｅｃｔｒｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ：電子制御装置）が数多く搭載されており、それぞれがネットワークで接続され、データの送受信を行っている。
これら電子装置は、電子装置が保持するプログラムに基づいて動作をしている。
電子装置のプログラムは、電子装置の生産時に書き込まれるだけでなく、車両搭載後にも書き換えることがある。そのため、電子装置を車両から取り外すことなく、プログラムの書き換えを行うことが必要となっている。
そこで、電子装置を車両から取り外すことなく、ネットワークを介して書き換え対象の制御装置のプログラムを書き換えることが一般的に実施されている。
【０００３】
また、バッテリ制御システムのように、ネットワークに接続された第一の制御装置となるＢＭＵ（Ｂａｔｔｅｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）と、複数の第二の制御装置となるＣＭＵ（Ｃｅｌｌ  Ｍｏｎｉｔｏｒ  Ｕｎｉｔ）という構成をとり、第一の制御装置が複数の第二の制御装置からのデータを基に制御を行うといった車両システムが登場している。
このようなバッテリ制御システムにおいて、第一の制御装置が、複数の第二の制御装置のプログラムを書き換える場合、同一のプログラムで書き換えを行う場合でも、プログラムの書き換えを個別に行わなければならず、プログラム書き換えに要する時間が長くなるという問題があった。
【０００４】
そこで、特許文献１では、複数の第二の制御装置のプログラム書き換えに要する時間を短縮するプログラム書き換え方法が提案されている。
以下、特許文献１で提案されているプログラム書き換え方法について述べる。特許文献１に記載のプログラム書き換え方法では、第一の制御装置である一次制御部と、第二の制御装置である二次制御部がネットワークに接続された環境において、同一のプログラムで書き換える二次制御部をグループ化する。
【０００５】
ここでは、二次制御部が二つのグループ１に、二次制御部が一つのグループ２にグループ化される。
そして、一次制御部は、まずグループ１へプログラムをデータとして同時に送信し、グループ１の二次制御部は受信したデータを基に、プログラムの書き換えを行う。
次に、グループ２へプログラムをデータとして送信し、グループ２の二次制御部は受信したデータを基に、プログラムの書き換えを行う。
このように、同一プログラムで書き換えを行う二次制御部をグループ化し、グループをまとめてプログラムの書き換えを行うことで、全ての二次制御部のプログラムの書き換えを個別に行う場合に比べ、プログラム書き換えに要する時間を短縮することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−９２２９７号公報（第５〜９頁、図１）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載のプログラム書き換え方法では、車両システムのように様々なノイズにより、送信したデータが紛失される可能性がある環境の場合、一次制御部のプログラム書き換えに要する処理負荷が増加する。
例えば、一時制御部がプログラムをデータとして送信したにも係わらず、ノイズの影響で紛失され、グループ１の一つの二次制御部がデータの受信に失敗した場合、一次制御部はグループ１の二次制御部へ、再度プログラムのデータ送信を行う必要があり、一次制御部のプログラム書き換えに要する処理負荷が増加する。
【０００８】
この発明は、上述のような課題を解決するためになされたものであり、第一の制御装置がネットワークを介して複数の第二の制御装置のプログラムを書き換える際、ノイズの影響でデータが紛失される場合においても、第一の制御装置のプログラム書き換えに要する処理負荷の増加を防止する制御システムを得ることを目的とする。
【課題を解決するための手段】
【０００９】
この発明に係わる制御システムにおいては、第一の制御装置と複数の第二の制御装置がネットワークを介して接続された制御システムであって、第一の制御装置は、ネットワークを介してデータの送受信を行う第一の通信インタフェース部と、各第二の制御装置の動作を決定するプログラムを書き換えるための書き換え用プログラムを保管する第一のプログラム保管部と、書き換え用プログラムから一つ以上の書き換え用データを形成して、第一の通信インタフェース部により送信する第一のプログラム送信部とを備え、各第二の制御装置は、ネットワークを介してデータの送受信を行う第二の通信インタフェース部と、ネットワークからの書き換え用データを受信できたかどうかを判断するデータ受信成否判断部と、第一の制御装置から受信した書き換え用データと同一内容のデータからなる検証用データを、第二の通信インタフェース部により送信する第二のプログラム送信部と、第二の制御装置の動作を決定するプログラムを保管する第二のプログラム保管部と、ネットワークから受信した書き換え用データを基に、第二のプログラム保管部のプログラムを書き換えるプログラム書き換え部とを備え、第一の制御装置は、複数の第二の制御装置へ書き換え用データを送信し、データ受信成否判断部が書き換え用データの受信に成功したと判断した第二の制御装置のうちの特定の第二の制御装置は、検証用データを送信し、データ受信成否判断部が書き換え用データの受信に失敗したと判断した第二の制御装置は、特定の第二の制御装置から送信される検証用データを受信して受信に失敗した書き換え用データを補完する。そして、第二の制御装置のプログラム書き換え部は受信した書き換え用データを基に、第二のプログラム保管部のプログラムを書き換えるものである。
【発明の効果】
【００１０】
この発明は、以上説明したように、第一の制御装置と複数の第二の制御装置がネットワークを介して接続された制御システムであって、第一の制御装置は、ネットワークを介してデータの送受信を行う第一の通信インタフェース部と、各第二の制御装置の動作を決定するプログラムを書き換えるための書き換え用プログラムを保管する第一のプログラム保管部と、書き換え用プログラムから一つ以上の書き換え用データを形成して、第一の通信インタフェース部により送信する第一のプログラム送信部とを備え、各第二の制御装置は、ネットワークを介してデータの送受信を行う第二の通信インタフェース部と、ネットワークからの書き換え用データを受信できたかどうかを判断するデータ受信成否判断部と、第一の制御装置から受信した書き換え用データと同一内容のデータからなる検証用データを、第二の通信インタフェース部により送信する第二のプログラム送信部と、第二の制御装置の動作を決定するプログラムを保管する第二のプログラム保管部と、ネットワークから受信した書き換え用データを基に、第二のプログラム保管部のプログラムを書き換えるプログラム書き換え部とを備え、第一の制御装置は、複数の第二の制御装置へ書き換え用データを送信し、データ受信成否判断部が書き換え用データの受信に成功したと判断した第二の制御装置のうちの特定の第二の制御装置は、検証用データを送信し、データ受信成否判断部が書き換え用データの受信に失敗したと判断した第二の制御装置は、特定の第二の制御装置から送信される検証用データを受信して受信に失敗した書き換え用データを補完し、この補完した書き換え用データを基に、第二のプログラム保管部のプログラムを書き換えるので、第一の制御装置が第二の制御装置のプログラムを書き換える際、第一の制御装置が送信した書き換え用データが、ノイズの影響で紛失され、第二の制御装置が書き換え用データの受信に失敗した場合でも、他の第二の制御装置から送信される検証用データを受信してプログラム書き換えを行うことができるため、第一の制御装置は、書き換え用データの再送信を行う必要が無く、書き換えに要する処理負荷の増加を防止することができる。
【図面の簡単な説明】
【００１１】
【図１】この発明の実施の形態１、実施の形態４におけるバッテリ制御システムを示す構成図である。
【図２】この発明の実施の形態１、実施の形態４、実施の形態５における第一の制御装置の動作を説明するフローチャートである。
【図３】この発明の実施の形態１、実施の形態５における第二の制御装置のプログラム書き換え時の処理を示すフローチャートである。
【図４】この発明の実施の形態１、実施の形態５における第二の制御装置のデータ受信時の処理を示すフローチャートである。
【図５】この発明の実施の形態１において、第二の制御装置が書き換え用データを受信できた場合のタイミングチャートである。
【図６】この発明の実施の形態１において、第二の制御装置が書き換え用データの受信に失敗した場合のタイミングチャートである。
【図７】この発明の実施の形態２、実施の形態３におけるバッテリ制御システムを示す構成図である。
【図８】この発明の実施の形態２における第一の制御装置のプログラム書き換え処理開始時の処理を示すフローチャートである。
【図９】この発明の実施の形態２における第一の制御装置のデータ受信時の処理を示すフローチャートである。
【図１０】この発明の実施の形態２における第一の制御装置の所定の検証用データ送信処理時の処理を示すフローチャートである。
【００１２】
【図１１】この発明の実施の形態２、実施の形態３における第二の制御装置のプログラム書き換え時の処理を示すフローチャートである。
【図１２】この発明の実施の形態２、実施の形態３における第二の制御装置のデータ受信時の処理を示すフローチャートである。
【図１３】この発明の実施の形態２において、第一の制御装置が送信した書き換え用データに、ネットワーク上で誤りが混入しない場合のタイミングチャートである。
【図１４】この発明の実施の形態２において、第一の制御装置が送信した書き換え用データに、ネットワーク上で誤りが混入した場合のタイミングチャートである。
【図１５】この発明の実施の形態３における第一の制御装置のプログラム書き換え時の処理を示すフローチャートである。
【図１６】この発明の実施の形態３における第一の制御装置のデータ受信時の処理を示すフローチャートである。
【図１７】この発明の実施の形態３における第一の制御装置の所定の検証用データ送信処理時の処理を示すフローチャートである。
【図１８】この発明の実施の形態３において、第一の制御装置が書き換え用データ送信後、所定時間後も検証の結果がＯＫとなっていない第二の制御装置が存在する場合のタイミングチャートである。
【図１９】この発明の実施の形態４における第二の制御装置のプログラム書き換え時の処理を示すフローチャートである。
【図２０】この発明の実施の形態４における第二の制御装置のデータ受信時の処理を示すフローチャートである。
【図２１】この発明の実施の形態４において、第二の制御装置が書き換え用データを受信できた場合のタイミングチャートである。
【図２２】この発明の実施の形態４において、第二の制御装置が書き換え用データの受信に失敗した場合のタイミングチャートである。
【図２３】この発明の実施の形態５におけるバッテリ制御システムを示す構成図である。
【発明を実施するための形態】
【００１３】
以下、本発明による制御システムを、各実施の形態にしたがって図を用いて説明する。各実施の形態は、本発明による制御システムを、バッテリ制御システムに適用した場合を示す。
【００１４】
実施の形態１．
図１は、この発明の実施の形態１によるバッテリ制御システムを示す構成図である。
図１において、バッテリ制御システム５０１は、第一の制御装置であるＢＭＵ（Ｂａｔｔｅｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ  ：  バッテリ管理ユニット）５０２と、第二の制御装置であるＣＭＵ（Ｃｅｌｌ  Ｍｏｎｉｔｏｒ  Ｕｎｉｔ  ：  セル監視ユニット）５０７、５１３、５１４がＣＡＮネットワーク５０６により接続されて構成されている。
ＣＭＵ５０７、５１３、５１４は、バッテリ５１５のセル５１６、５１７、５１８毎に搭載され、セルの電圧／電流／温度を監視し、監視結果をＣＡＮネットワーク５０６を介してＢＭＵ５０２へ通達する。
ＢＭＵ５０２は、ＣＡＮネットワーク５０６から受信したＣＭＵ５０７、５１３、５１４の監視結果を基に、バッテリ残量の計算や、異常監視などを行う。
【００１５】
ＢＭＵ５０２は、第一のプログラム送信部５０３、書き換え用プログラム保管部（第一のプログラム保管部）５０４、ＣＡＮ通信インタフェース部（第一の通信インタフェース部）５０５から構成される。
第一のプログラム送信部５０３は、書き換え用プログラム保管部５０４に保管されているプログラムを、一つ以上の書き換え用データに分割して、ＣＡＮ通信インタフェース部５０５により送信する。
書き換え用プログラム保管部５０４は、ＣＭＵ５０７、５１３、５１４の書き換え用プログラムを保管する。
ＣＡＮ通信インタフェース部５０５は、ＣＡＮネットワーク５０６を介して、データの送受信を行う。
ＢＭＵ５０２は、上述した機能以外にも機能を有するが、ここでは、本実施の形態１の特徴に大きく関連する部分のみ説明し、他の機能については説明を省略する。
【００１６】
ＣＭＵ５０７、５１３、５１４は、同一の構成を取り、それぞれＣＡＮ通信インタフェース部（第二の通信インタフェース部）５０８、データ受信成否判断部５０９、第二のプログラム送信部５１０、動作プログラム保管部（第二のプログラム保管部）５１１、プログラム書き換え部５１２から構成される。
ＣＡＮ通信インタフェース部５０８は、ＣＡＮネットワーク５０６を介して、データの送受信を行う。
データ受信成否判断部５０９は、ＣＡＮ通信インタフェース部５０８を介してＣＡＮネットワーク５０６から書き換え用データを受信できたかどうかの判断を行う。
第二のプログラム送信部５１０は、ＢＭＵ５０２から受信した書き換え用データと同一内容のデータからなる検証用データを、ＣＡＮ通信インタフェース部５０８により送信する。
動作プログラム保管部５１１は、ＣＭＵ５０７、５１３、５１４の動作を決定するプログラムを保管する。
プログラム書き換え部５１２は、ＣＡＮネットワーク５０６から受信したデータを基に、動作プログラム保管部５１１のプログラムを書き換える。
【００１７】
本実施の形態１では、第二の制御装置として、ＣＭＵ５０７、５１３、５１４の３つがＣＡＮネットワーク５０６に接続されているが、４つ以上接続されていても本発明の効果には影響しない。
また、ＣＭＵ５０７、５１３、５１４は、上述した機能以外にも機能を有するが、ここでは、本実施の形態１の特徴に大きく関連する部分のみ説明し、他の処理については説明を省略する。
【００１８】
図２は、この発明の実施の形態１における第一の制御装置の動作を説明するフローチャートである。
図３は、この発明の実施の形態１における第二の制御装置のプログラム書き換え時の処理を示すフローチャートである。
図４は、この発明の実施の形態１における第二の制御装置のデータ受信時の処理を示すフローチャートである。
【００１９】
図５は、この発明の実施の形態１において、第二の制御装置が書き換え用データを受信できた場合のタイミングチャートである。
【００２０】
図６は、この発明の実施の形態１において、第二の制御装置が書き換え用データの受信に失敗した場合のタイミングチャートである。
【００２１】
次に、動作について説明する。
図２は、実施の形態１における第一の制御装置であるＢＭＵ５０２の動作を説明するフローチャートであり、この図２を用いてＣＭＵ５０７、５１３、５１４のプログラム書き換えにおけるＢＭＵ５０２の動作を説明する。
ステップＳ６０１では、ＢＭＵ５０２の第一のプログラム送信部５０３が、書き換え用プログラム保管部５０４に保管されているプログラムを、一つ以上の書き換え用データに分割して、ＣＡＮ通信インタフェース部５０５により、送信する。
【００２２】
図３、図４は、実施の形態１における第二の制御装置であるＣＭＵ５０７、５１３、５１４の動作を説明するフローチャートであり、この図３、図４を用いて、ＣＭＵ５０７、５１３、５１４の動作を説明する。
なお、ＣＭＵ５０７、５１３、５１４は同じ動作をするため、ここでは、ＣＭＵ５０７を用いて説明する。
【００２３】
まず、図３を用いて、ＣＭＵ５０７のプログラム書き換え時の処理について述べる。
ステップＳ７０１では、ＣＭＵ５０７は、書き換え用データの受信タイムアウトであるかどうかを示す、経過時間のカウントを開始する。ここで、書き換え用データの受信タイムアウトとは、ＣＭＵ５０７がＢＭＵ５０２から受信する書き換え用データの最大待ち時間を超えた状態を示す。
ステップＳ７０２では、ＣＭＵ５０７が、経過時間のカウントにより、書き換え用データの受信タイムアウトであるかどうかを判断する。タイムアウトである場合、ステップＳ７０３へ進み、タイムアウトでない場合、ステップＳ７０２に留まる。
【００２４】
ステップＳ７０３では、ＣＭＵ５０７は、データ受信成否判断部５０９の判断結果を判定する。判定の結果が受信成功である場合、ステップＳ７０４へ進み、受信成功でない場合、ステップＳ７０５へ進む。
ステップＳ７０４では、ＣＭＵ５０７の第二のプログラム送信部５１０は、検証用データを送信する。
ステップＳ７０５では、ＣＭＵ５０７のデータ受信成否判断部５０９は、書き換え用データの受信に失敗したと判断する。
【００２５】
次に、図４を用いて、ＣＭＵ５０７のデータ受信時の処理について述べる。
ステップＳ７５１では、ＣＭＵ５０７は、受信したデータの種類を判断する。受信したデータの種類が書き換え用データである場合、ステップＳ７５２へ進み、検証用データである場合、ステップＳ７５５へ進む。
ステップＳ７５２では、ＣＭＵ５０７のプログラム書き換え部５１２が、受信した書き換え用データを基に、動作プログラム保管部５１１のプログラムを書き換える。
ステップＳ７５３では、ＣＭＵ５０７は所定個数書き換え用データを受信したかどうかを判断する。所定個数書き換え用データを受信した場合、ステップＳ７５４へ進み、所定個数受信していない場合、処理を終了する。ここで、所定個数とはＢＭＵ５０２がＣＭＵ５０７へ送信する書き換え用データの個数であり、予め決めておく。
ステップＳ７５４では、ＣＭＵ５０７のデータ受信成否判断部５０９は、書き換え用データの受信に成功したと判断する。
【００２６】
ステップＳ７５５では、ＣＭＵ５０７は受信した検証用データが、受信に失敗した書き換え用データであるかどうかを判断する。ここでは、書き換え用データにシーケンス番号が付与されており、検証用データにも書き換え用データと同じ番号が付与されている。
ＣＭＵ５０７は、受信した検証用データに付与されているシーケンス番号と同じ番号の書き換え用データを受信していない場合、受信に失敗した書き換え用データであると判断し、受信していた場合、受信に失敗した書き換え用データではないと判断する。判断の結果、受信に失敗した書き換え用データである場合、ステップＳ７５６へ進み、そうでない場合、処理を終了する。
ステップＳ７５６では、ＣＭＵ５０７は、受信した検証用データを用いて、受信に失敗した書き換え用データを置き換えることで補完する。
ステップＳ７５７では、ＣＭＵ５０７のプログラム書き換え部５１２が、受信した書き換え用データを基に、動作プログラム保管部５１１のプログラムを書き換える。
【００２７】
ステップＳ７５８では、ＣＭＵ５０７は、所定個数書き換え用データを受信したかどうかを判断する。所定個数書き換え用データを受信した場合、ステップＳ７５９へ進み、所定個数受信していない場合、処理を終了する。ここで、所定個数とはＢＭＵ５０２がＣＭＵ５０７へ送信する書き換え用データの個数であり、予め決めておく。
ステップＳ７５９では、ＣＭＵ５０７のデータ受信成否判断部５０９は、書き換え用データの受信に成功したと判断する。
ステップＳ７６０では、ＣＭＵ５０７の第二のプログラム送信部５１０は、検証用データを送信する。
上述したＣＭＵ５０７のデータ受信時の処理は、データを受信するたびに実施される。
【００２８】
図５は、ＢＭＵ５０２がＣＭＵ５０７、５１３、５１４のプログラムを書き換える際のタイミングチャートを示す。図５において、受信状況は、ＣＭＵ５０７、５１３、５１４のデータ受信成否判断部５０９の判断結果を示す。
また、Ｔ８０４に示すＴｘは、ＣＭＵ５０７、５１３、５１４における書き換え用データの受信タイムアウトとなる時間である。
【００２９】
以下、ＣＭＵ５０７、５１３、５１４のプログラム書き換えを、本発明によるプログラム書き換え方法を用いて行う場合の処理について、図１から図５を用いて説明する。
ここでは、すべてのＣＭＵ５０７、５１３、５１４がＢＭＵ５０２からの書き換え用データの受信に成功した場合とする。
また、本実施の形態１では、ＢＭＵ５０２の第一のプログラム送信部５０３は、書き換え用プログラム保管部５０４に保管されている書き換え用プログラムを、１つの書き換え用データとして送信する場合を説明する。書き換え用プログラムを２つ以上の書き換え用データに分割して送信しても本発明の効果には影響しない。
さらに、本実施の形態１では、ＣＭＵ５０７、５１３、５１４は同一のプログラムで書き換える場合を説明する。
【００３０】
図５のＴ８０１では、ＣＭＵ５０７、５１３、５１４のデータ受信成否判断部５０９の判断結果は、初期状態（未判断）である。
Ｔ８０２では、ＢＭＵ５０２は書き換え用プログラムを、書き換え用データとして、ＣＭＵ５０７、５１３、５１４へ送信する（Ｓ６０１）。
ＣＭＵ５０７、５１３、５１４は、それぞれ書き換え用データの受信タイムアウトであるかどうかを示す、経過時間のカウントを開始する（Ｓ７０１）。
ＣＭＵ５０７、５１３、５１４は、それぞれ経過時間のカウントにより、書き換え用データの受信タイムアウトかどうかを判断する（Ｓ７０２）。ＣＭＵ５０７、５１３、５１４は、ＢＭＵ５０２が書き換え用データを送信した時点（Ｔ８０２）では、それぞれタイムアウトではないと判断する。
【００３１】
Ｔ８０３では、ＣＭＵ５０７、５１３、５１４は、それぞれＢＭＵ５０２から書き換え用データを受信したため、データ受信時の処理を開始する。
ＣＭＵ５０７、５１３、５１４は、それぞれ受信したデータの種類を判断する（Ｓ７５１）。ここでは、ＣＭＵ５０７、５１３、５１４は、書き換え用データを受信したと判断する。
ＣＭＵ５０７、５１３、５１４のプログラム書き換え部５１２は、それぞれ受信した書き換え用データを基に、動作プログラム保管部５１１のプログラムを書き換える（Ｓ７５２）。
ＣＭＵ５０７、５１３、５１４は、それぞれ所定個数書き換え用データを受信したかどうかを判定する（Ｓ７５３）。ここでは、所定個数は一つであり、書き換え用データを一つ受信したため、ＣＭＵ５０７、５１３、５１４のデータ受信成否判断部５０９は、所定個数書き換え用データを受信したと判断し、受信成功であると判断する（Ｓ７５４）。
【００３２】
Ｔ８０４では、ＣＭＵ５０７、５１３、５１４は、それぞれ書き換え用データ受信タイムアウトであると判断する。
ＣＭＵ５０７、５１３、５１４は、それぞれデータ受信成否判断部５０９の判断結果を判定する（Ｓ７０３）。ここでは、すべてのＣＭＵ５０７、５１３、５１４が受信成功であると判断する。
そして、ＣＭＵ５０７、５１３、５１４の第二のプログラム送信部５１０は、それぞれ検証用データの送信を行う（Ｓ７０４）。ここでは、ＣＭＵ５０７が検証用データを送信する。
【００３３】
Ｔ８０５では、ＣＭＵ５１３、５１４は、ＣＭＵ５０７から検証用データを受信したため、それぞれデータ受信時の処理を開始する。
ＣＭＵ５１３、５１４は、それぞれ受信したデータの種類を判断する（Ｓ７５１）。ここでは、ＣＭＵ５１３、５１４は、検証用データを受信したと判断する。
ＣＭＵ５１３、５１４は、それぞれ受信した検証用データが、受信に失敗した書き換え用データであるかどうかを判断する（Ｓ７５５）。
ＣＭＵ５１３、５１４は、それぞれ受信した検証用データに付与されているシーケンス番号を確認し、同じ番号の書き換え用データを受信しているかどうかを判断する。ここでは、ＣＭＵ５１３、５１４は、それぞれ受信した検証用データは、受信に失敗した書き換え用データではないと判断し、処理を終了する。
【００３４】
同様に、Ｔ８０６では、ＣＭＵ５１３が検証用データを送信する。
Ｔ８０７では、ＣＭＵ５０７、５１４は、ＣＭＵ５１３から検証用データを受信したため、それぞれデータ受信時の処理を開始する。ＣＭＵ５０７、５１４は、Ｔ８０５のＣＭＵ５１３、５１４のデータ受信時と同様の処理を行う。
【００３５】
さらに、Ｔ８０８では、ＣＭＵ５１４が検証用データを送信する。
Ｔ８０９では、ＣＭＵ５０７、５１３は、ＣＭＵ５１４から検証用データを受信したため、それぞれデータ受信時の処理を開始する。ＣＭＵ５０７、５１３は、Ｔ８０５のＣＭＵ５１３、５１４のデータ受信時と同様の処理を行う。
このようにして、ＣＭＵ５０７、５１３、５１４のプログラム書き換え処理が完了する。
【００３６】
次に、実施の形態１において本発明の特徴である、書き換え用データの受信に失敗したＣＭＵ５０７、５１３、５１４が存在する場合の動作を、図１から図４および図６を用いて詳述する。
ここでは、ＣＭＵ５０７、５１４は、ＢＭＵ５０２からの書き換え用データの受信に成功し、ＣＭＵ５１３は、ノイズ等の影響により、ＢＭＵ５０２からの書き換え用データの受信に失敗した場合とする。
【００３７】
図６は、ＢＭＵ５０２がＣＭＵ５０７、５１３、５１４のプログラムを書き換える際のタイミングチャートを示す。図６において、受信状況は、ＣＭＵ５０７、５１３、５１４のデータ受信成否判断部５０９の判断結果を示す。
また、Ｔ９０４に示すＴｘは、ＣＭＵ５０７、５１３、５１４における書き換え用データの受信タイムアウトとなる時間である。
【００３８】
図６のＴ９０１では、ＣＭＵ５０７、５１３、５１４のデータ受信成否判断部５０９の判断結果は、初期状態（未判断）である。
Ｔ９０２では、ＢＭＵ５０２は書き換え用プログラムを、書き換え用データとして、ＣＭＵ５０７、５１３、５１４へ送信する（Ｓ６０１）。
ＣＭＵ５０７、５１３、５１４は、それぞれ書き換え用データの受信タイムアウトであるかどうかを示す、経過時間のカウントを開始する（Ｓ７０１）。
ＣＭＵ５０７、５１３、５１４は、それぞれ経過時間のカウントにより、書き換え用データの受信タイムアウトかどうかを判定する（Ｓ７０２）。ＣＭＵ５０７、５１３、５１４は、ＢＭＵ５０２が書き換え用データを送信した時点（Ｔ９０２）では、それぞれタイムアウトではないと判断する。
【００３９】
Ｔ９０３では、ＣＭＵ５０７、５１４は、それぞれＢＭＵ５０２から書き換え用データを受信したため、データ受信時の処理を開始する。ＣＭＵ５１３は、書き換え用データを受信していないと判断する。
ＣＭＵ５０７、５１４は、それぞれ受信したデータの種類を判断する（Ｓ７５１）。ここでは、ＣＭＵ５０７、５１４は、書き換え用データを受信したと判断する。
ＣＭＵ５０７、５１４のプログラム書き換え部５１２は、それぞれ受信した書き換え用データを基に、動作プログラム保管部５１１のプログラムを書き換える（Ｓ７５２）。
ＣＭＵ５０７、５１４は、それぞれ所定個数書き換え用データを受信したかどうかを判定する（Ｓ７５３）。ここでは、所定個数は一つであり、書き換え用データを一つ受信したため、ＣＭＵ５０７、５１４のデータ受信成否判断部５０９は、所定個数書き換え用データを受信したと判断し、受信成功であると判断する（Ｓ７５４）。
一方、ＣＭＵ５１３のデータ受信成否判断部５０９の判断結果は、未判断である。
【００４０】
Ｔ９０４では、ＣＭＵ５０７、５１３、５１４はそれぞれ書き換え用データ受信タイムアウトであると判断する。
ＣＭＵ５０７、５１３、５１４は、それぞれデータ受信成否判断部５０９の判断結果を判定する（Ｓ７０３）。ここでは、ＣＭＵ５０７、５１４が受信成功であると判断する。ＣＭＵ５１３は、データ受信成否判断部５０９の判断結果が未判断であるため、書き換え用データ受信失敗であると判断する。
そして、ＣＭＵ５０７、５１４の第二のプログラム送信部５１０は、それぞれ検証用データの送信を行う（Ｓ７０４）。ここでは、ＣＭＵ５０７が検証用データを送信する。
【００４１】
Ｔ９０５では、ＣＭＵ５１３、５１４は、ＣＭＵ５０７から検証用データを受信したため、それぞれデータ受信時の処理を開始する。
ＣＭＵ５１３、５１４は、それぞれ受信したデータの種類を判断する（Ｓ７５１）。ここでは、ＣＭＵ５１３、５１４は、検証用データを受信したと判断する。
ＣＭＵ５１３、５１４は、それぞれ受信した検証用データが、受信に失敗した書き換え用データであるかどうかを判断する（Ｓ７５５）。
ＣＭＵ５１３、５１４は、それぞれ受信した検証用データに付与されているシーケンス番号を確認し、同じ番号の書き換え用データを受信しているかどうかを判断する。ここでは、ＣＭＵ５１３は、受信した検証用データが、受信に失敗した書き換え用データであると判断する。ＣＭＵ５１４は、受信に失敗した書き換え用データではないと判断し、処理を終了する。
【００４２】
ＣＭＵ５１３は、受信した検証用データを用いて、受信に失敗した書き換え用データを置き換えることで補完する（Ｓ７５６）。そして、ＣＭＵ５１３のプログラム書き換え部５１２が、受信した書き換え用データを基に、動作プログラム保管部５１１のプログラムを書き換える（Ｓ７５７）。
ＣＭＵ５１３は、所定個数書き換え用データを受信したかどうかを判定する（Ｓ７５８）。ここでは、所定個数は一つであり、書き換え用データを一つ受信したため、ＣＭＵ５１３のデータ受信成否判断部５０９は、所定個数書き換え用データを受信したと判断し、受信成功であると判断する（Ｓ７５９）。
【００４３】
Ｔ９０６では、ＣＭＵ５１３の第二のプログラム送信部５１０は、検証用データの送信を行う（Ｓ７６０）。
図６に示すように、ＣＭＵ５１３は、ＢＭＵ５０２からの書き換え用データの受信に失敗したが、他のＣＭＵ５０２から受信した検証用データを基に、受信に失敗した書き換え用データを補完することで、受信成功とする。
【００４４】
Ｔ９０７では、ＣＭＵ５０７、５１４は、ＣＭＵ５１３から検証用データを受信したため、それぞれデータ受信時の処理を開始する。
ＣＭＵ５０７、５１４は、それぞれ受信したデータの種類を判断する（Ｓ７５１）。ここでは、ＣＭＵ５０７、５１４は、検証用データを受信したと判断する。
ＣＭＵ５０７、５１４は、それぞれ受信した検証用データが、受信に失敗した書き換え用データであるかどうかを判断する（Ｓ７５５）。
ＣＭＵ５０７、５１４は、それぞれ受信した検証用データに付与されているシーケンス番号を確認し、同じ番号の書き換え用データを受信しているかどうかを判断する。ここでは、ＣＭＵ５０７、５１４は、受信した検証用データは、受信に失敗した書き換え用データではないと判断し、処理を終了する。
【００４５】
同様に、Ｔ９０８では、ＣＭＵ５１４が検証用データを送信する。Ｔ９０９では、ＣＭＵ５０７、５１３は、ＣＭＵ５１４から検証用データを受信したため、それぞれデータ受信時の処理を開始する。ＣＭＵ５０７、５１３は、Ｔ９０７のＣＭＵ５０７、５１４のデータ受信時と同様の処理を行う。
このようにして、ＣＭＵ５０７、５１３、５１４は、ノイズの影響により書き換え用データの受信に失敗した状況においても、プログラム書き換え処理を完了することができる。
【００４６】
上述のように、実施の形態１の制御システムでは、第一の制御装置と複数の第二の制御装置がネットワークを介してデータの送受信を行っている環境において、第一の制御装置は、書き換え用プログラムを書き換え用データとして送信し、書き換え用データの受信に成功した特定の第二の制御装置は、第一の制御装置から受信した書き換え用データと同一内容のデータからなる検証用データを送信し、書き換え用データの受信に失敗した第二の制御装置は、特定の第二の制御装置から送信される検証用データを受信して、受信に失敗した書き換え用データを補完することで、第一の制御装置は書き換え用データの再送信を行う必要が無いため、第一の制御装置のプログラム再送信による、第一の制御装置のプログラム書き換えに要する処理負荷の増加を防止することができる。
【００４７】
なお、本実施の形態１では、第二の制御装置のデータ受信成否判断部は、所定時間以内に第一の制御装置から書き換え用データを受信できない場合、書き換え用データの受信失敗と判断したが、第二の制御装置が受信した書き換え用データを、エラーチェックなどにより破棄した場合でも、書き換え用データの受信失敗と判断することができる。
このような場合でも、第二の制御装置は、他の第二の制御装置から送信される検証用データにより、受信に失敗した書き換え用データを補完することができるため、同様の効果が得られる。
【００４８】
実施の形態２．
次に、実施の形態２について説明する。
図７は、この発明の実施の形態２におけるバッテリ制御システムを示す構成図である。
図７において、バッテリ制御システム５０１は、第一の制御装置であるＢＭＵ５０２と、第二の制御装置であるＣＭＵ５０７、５１３、５１４がＣＡＮネットワーク５０６により接続されて構成されている。
ＢＭＵ５０２は、実施の形態１で説明した図１の構成に加え、データ送信成否判断部１００１と、検証用データ送信要求部１００２を備える。
データ送信成否判断部１００１は、ＢＭＵ５０２が送信した書き換え用データと、ＣＭＵ５０７、５１３、５１４から受信した検証用データが一致しているかどうかの検証を行う。一致していた場合、検証の結果をＯＫとし、一致していない場合ＮＧとする。
検証用データ送信要求部１００２は、ＣＭＵ５０７、５１３、５１４へＣＡＮ通信インタフェース部５０５により、ＣＡＮネットワーク５０６を介して、検証用データの送信を要求する。
【００４９】
ＣＭＵ５０７、５１３、５１４は、実施の形態１で説明した図１の構成に加え、データ受信状況通知部１００３を備える。
データ受信状況通知部１００３は、データ受信成否判断部５０９の判断結果を、ＢＭＵ５０２へＣＡＮ通信インタフェース部５０８により、ＣＡＮネットワーク５０６を介して通知する。
【００５０】
図８は、この発明の実施の形態２における第一の制御装置のプログラム書き換え処理開始時の処理を示すフローチャートである。
図９は、この発明の実施の形態２における第一の制御装置のデータ受信時の処理を示すフローチャートである。
図１０は、この発明の実施の形態２における第一の制御装置の所定の検証用データ送信処理時の処理を示すフローチャートである。
図１１は、この発明の実施の形態２における第二の制御装置のプログラム書き換え時の処理を示すフローチャートである。
図１２は、この発明の実施の形態２における第二の制御装置のデータ受信時の処理を示すフローチャートである。
【００５１】
図１３は、この発明の実施の形態２において、第一の制御装置が送信した書き換え用データに、ネットワーク上で誤りが混入しない場合のタイミングチャートである。
【００５２】
図１４は、この発明の実施の形態２において、第一の制御装置が送信した書き換え用データに、ネットワーク上で誤りが混入した場合のタイミングチャートである。
【００５３】
次に、動作について説明する。
図８〜図１０は、実施の形態２における第一の制御装置であるＢＭＵ５０２の動作を説明するフローチャートであり、この図８〜図１０を用いて、ＣＭＵ５０７、５１３、５１４のプログラム書き換えにおけるＢＭＵ５０２の動作を説明する。
【００５４】
まず、図８を用いて、ＢＭＵ５０２のプログラム書き換え時の処理について述べる。
ステップＳ１１０１では、ＢＭＵ５０２の第一のプログラム送信部５０３が、書き換え用プログラム保管部５０４に保管されているプログラムを、一つ以上の書き換え用データに分割して、ＣＡＮ通信インタフェース部５０５により、送信する。
ステップＳ１１０２では、ＢＭＵ５０２は、検証用データの受信タイムアウトであるかどうかを示す、経過時間のカウントを開始する。ここで、検証用データの受信タイムアウトとは、ＢＭＵ５０２がＣＭＵ５０７、５１３、５１４から受信する検証用データの最大待ち時間を超えた状態を示す。
ステップＳ１１０３では、ＢＭＵ５０２は、経過時間のカウントにより、検証用データの受信タイムアウトかどうかを判断する。タイムアウトである場合、処理を終了し、タイムアウトでない場合、ステップＳ１１０３に留まる。
【００５５】
次に、図９を用いて、ＢＭＵ５０２のデータ受信時の動作について述べる。
ステップＳ１１５１では、ＢＭＵ５０２は、受信したデータの種類を判断する。受信したデータの種類が検証用データの場合、ステップＳ１１５２へ進み、データ受信状況通知の場合、ステップＳ１１５４へ進む。
ステップＳ１１５２では、ＢＭＵ５０２のデータ送信成否判断部１００１が、ＢＭＵ５０２が送信した書き換え用データとＣＭＵ５０７、５１３、５１４のいずれかから受信した検証用データの内容が一致しているかどうかの検証処理を行う。
検証処理の結果がＯＫである場合、処理を終了し、検証の結果がＮＧである場合、ステップＳ１１５９へ進む。
【００５６】
ステップＳ１１５９では、ＢＭＵ５０２は、ＣＭＵ５０７、５１３、５１４の受信状況通知の内容を、受信失敗と判断する。ここで、受信状況通知とは、ＣＭＵ５０７、５１３、５１４のデータ受信状況通知部１００３が、ＢＭＵ５０２へ通知したものである。
ステップＳ１１６０では、ＢＭＵ５０２は、ＣＭＵ５０７、５１３、５１４へ、検証失敗通知を行う。
ステップＳ１１６１では、ＢＭＵ５０２は、検証処理を実施したＣＭＵ以外で、検証用データ送信要求実施対象のＣＭＵが存在するかどうかを判断する。存在する場合、ステップＳ１１６３へ進み、存在しない場合、ステップＳ１１６２へ進む。
ここで、検証用データ送信要求実施対象のＣＭＵとは、ＢＭＵ５０２が検証用データの送信要求を行うＣＭＵ５０７、５１３、５１４を示す。具体的には、受信状況通知が受信成功であり、かつ検証処理の結果がＯＫとなっていないＣＭＵ５０７、５１３、５１４を示す。
【００５７】
ステップＳ１１６２では、ＢＭＵ５０２は、ＣＭＵ５０７、５１３、５１４を書き換え処理の開始時の状態に戻し、再度書き換え用データを送信する。
ステップＳ１１６３では、ＢＭＵ５０２の検証用データ送信要求部１００２は、ＣＭＵ５０７、５１３、５１４へ検証用データの送信要求を行う。
ステップＳ１１６４では、ＢＭＵ５０２は、検証用データ送信要求を行ったＣＭＵ５０７、５１３、５１４を、検証用データ送信要求実施対象ＣＭＵから登録を解除する。
ステップＳ１１５４では、ＢＭＵ５０２は、受信状況通知の内容を判断する。データ受信状況通知の内容が受信成功である場合、ステップＳ１１５５へ進み、受信失敗である場合、処理を終了する。
ステップＳ１１５５では、ＢＭＵ５０２は、受信状況通知を行ったＣＭＵ５０７、５１３、５１４を、検証用データ送信要求実施対象ＣＭＵとして登録する。
上記ＢＭＵ５０２のデータ受信時の処理は、データを受信するたびに実施される。
【００５８】
次に、図１０を用いて、ＢＭＵ５０２の所定の検証用データ送信処理時の処理を説明する。
ステップＳ１１７１では、ＢＭＵ５０２は、検証用データ送信要求実施対象のＣＭＵが存在するかどうかを判断する。存在する場合、ステップＳ１１７２へ進み、存在しない場合、処理を終了する。
ステップＳ１１７２では、ＢＭＵ５０２の検証用データ送信要求部１００２は、ＣＭＵ５０７、５１３、５１４へ検証用データの送信要求を行う。
ステップＳ１１７３では、ＢＭＵ５０２は、検証用データ送信要求を行ったＣＭＵ５０７、５１３、５１４を、検証用データ送信要求実施対象ＣＭＵから登録を削除する。
上記ＢＭＵ５０２の所定の検証用データ送信処理時の処理は、上述したＢＭＵ５０２のデータ受信時の処理以外のタイミングで実施される。
【００５９】
次に、図１１、図１２を用いて、ＣＭＵ５０７、５１３、５１４の動作を説明する。ＣＭＵ５０７、５１３、５１４は、同じ動作をするため、ここでは、ＣＭＵ５０７を用いて説明する。
【００６０】
まず、図１１を用いて、ＣＭＵ５０７のプログラム書き換え時の処理について述べる。
ステップＳ１２０１では、ＣＭＵ５０７は書き換え用データの受信タイムアウトであるかどうかを示す、経過時間のカウントを開始する。ここで、書き換え用データの受信タイムアウトとは、ＣＭＵ５０７がＢＭＵ５０２から受信する書き換え用データの最大待ち時間を超えた状態を示す。
ステップＳ１２０２では、ＣＭＵ５０７が、経過時間のカウントにより、書き換え用データの受信タイムアウトであるかどうかを判断する。タイムアウトである場合、ステップＳ１２０５へ進み、タイムアウトでない場合、ステップＳ１２０２に留まる。
【００６１】
ステップＳ１２０５では、ＣＭＵ５０７は、データ受信成否判断部５０９の判断結果を判定する。判定の結果が受信成功である場合、ステップＳ１２０６へ進み、受信成功でない場合、ステップＳ１２０７へ進む。
ステップＳ１２０６では、ＣＭＵ５０７のデータ受信状況通知部１００３が、データ受信状況（データ受信成功）をＢＭＵ５０２へ通知する。
ステップＳ１２０７では、ＣＭＵ５０７のデータ受信成否判断部５０９は、書き換え用データの受信に失敗したと判断する。
ステップＳ１２０８では、ＣＭＵ５０７のデータ受信状況通知部１００３が、データ受信状況（データ受信失敗）をＢＭＵ５０２へ通知する。
【００６２】
次に、図１２を用いて、ＣＭＵ５０７のデータ受信時の処理について述べる。
ステップＳ１２５１では、ＣＭＵ５０７は、受信したデータの種類を判断する。受信したデータの種類が書き換え用データである場合、ステップＳ１２５２へ進み、検証用データである場合、ステップＳ１２５５へ進み、検証用データ送信要求である場合、ステップＳ１２６１へ進み、検証失敗通知である場合、ステップＳ１２６２へ進む。
ステップＳ１２５２では、ＣＭＵ５０７のプログラム書き換え部５１２が、受信した書き換え用データを基に、動作プログラム保管部５１１のプログラムを書き換える。
ステップＳ１２５３では、ＣＭＵ５０７は、所定個数書き換え用データを受信したかどうかを判断する。所定個数書き換え用データを受信した場合、ステップＳ１２５４へ進み、所定個数受信していない場合、処理を終了する。ここで、所定個数とは、ＢＭＵ５０２がＣＭＵ５０７へ送信する書き換え用データの個数であり、予め決めておく。
ステップＳ１２５４では、ＣＭＵ５０７のデータ受信成否判断部５０９は、書き換え用データの受信に成功したと判断する。
【００６３】
ステップＳ１２５５では、ＣＭＵ５０７は受信した検証用データが、受信に失敗した書き換え用データであるかどうかを判断する。
ここでは、書き換え用データにシーケンス番号が付与されており、検証データにも書き換え用データと同じ番号が付与されている。
ＣＭＵ５０７は、受信した検証用データに付与されているシーケンス番号と同じ番号の書き換え用データを受信していない場合、受信に失敗した書き換え用データであると判断し、受信していた場合、受信に失敗した書き換え用データではないと判断する。
判断の結果、受信に失敗した書き換え用データである場合、ステップＳ１２５６へ進み、そうでない場合、処理を終了する。
【００６４】
ステップＳ１２５６では、ＣＭＵ５０７は、受信した検証用データを用いて、受信に失敗した書き換え用データを置き換えることで補完する。
ステップＳ１２５７では、ＣＭＵ５０７のプログラム書き換え部５１２が、受信した書き換え用データを基に、動作プログラム保管部５１１のプログラムを書き換える。
ステップＳ１２５８では、ＣＭＵ５０７は、所定個数書き換え用データを受信したかどうかを判断する。所定個数書き換え用データを受信した場合、ステップＳ１２５９へ進み、所定個数受信していない場合、処理を終了する。ここで、所定個数とはＢＭＵ５０２がＣＭＵ５０７へ送信する書き換え用データの個数であり、予め決めておく。
ステップＳ１２５９では、ＣＭＵ５０７のデータ受信成否判断部５０９は、書き換え用データの受信に成功したと判断する。
ステップＳ１２６０では、ＣＭＵ５０７のデータ受信状況通知部１００３が、データ受信状況（データ受信成功）をＢＭＵ５０２へ通知する。
【００６５】
ステップＳ１２６１では、ＣＭＵ５０７の第二のプログラム送信部５１０は、検証用データを送信する。
ステップＳ１２６２では、ＣＭＵ５０７のデータ受信成否判断部５０９は、書き換え用データの受信に失敗したと判断する。
ステップＳ１２６３では、ＣＭＵ５０７は、どの書き換え用データの受信に失敗したのかを認識する。ここでは、検証失敗通知には、どの書き換え用データの受信に失敗したのかを示すシーケンス番号を含めておく。また、書き換え用データにもシーケンス番号が付与されており、ＣＭＵ５０７は、シーケンス番号により、受信に失敗した書き換え用データを認識する。
上述したＣＭＵ５０７のデータ受信時の処理は、データを受信するたびに実施される。
【００６６】
図１３は、ＢＭＵ５０２がＣＭＵ５０７、５１３、５１４のプログラムを書き換える際のタイミングチャートを示す。図１３において、受信状況は、ＣＭＵ５０７、５１３、５１４のデータ受信状況通知部１００３の通知結果を示し、検証結果は、ＢＭＵ５０２のデータ送信成否判断部１００１の検証処理の結果を示す。また、Ｔ１３０４に示すＴｘは、ＣＭＵ５０７、５１３、５１４における書き換え用データの受信タイムアウトとなる時間であり、Ｔ１３１８に示すＴｙは、ＢＭＵ５０２における検証用データの受信タイムアウトとなる時間である。
【００６７】
以下、ＣＭＵ５０７、５１３、５１４のプログラム書き換えを、本発明によるプログラム書き換え方法を用いて行う場合の処理について、図７から図１３を用いて説明する。
ここでは、すべてのＣＭＵ５０７、５１３、５１４がＢＭＵ５０２からの書き換え用データの受信に成功し、また書き換え用データにネットワーク上でノイズ等による誤りが混入していない場合について説明する。
また、本実施の形態２では、ＢＭＵ５０２の第一のプログラム送信部５０３は、書き換え用プログラム保管部５０４に保管されているプログラムを、１つの書き換え用データとして送信する場合を説明する。書き換え用プログラムを２つ以上の書き換え用データに分割して送信しても本発明の効果には影響しない。
さらに、本実施の形態２では、ＣＭＵ５０７、５１３、５１４は同一のプログラムで書き換える場合を説明する。
【００６８】
図１３のＴ１３０１では、ＢＭＵ５０２は、ＣＭＵ５０７、５１３、５１４からデータ受信状況通知を受けていないため、受信状況は未判断である。また、検証用データも受信していないため、検証結果も未判断である。
Ｔ１３０２では、ＢＭＵ５０２は、書き換え用プログラムを、書き換え用データとして、ＣＭＵ５０７、５１３、５１４へ送信する（Ｓ１１０１）。
ＢＭＵ５０２は、検証用データの受信タイムアウトであるかどうかを示す、経過時間のカウントを開始する（Ｓ１１０２）。
ＢＭＵ５０２は、経過時間のカウントにより、検証用データの受信タイムアウトかどうかを判断する（Ｓ１１０３）。ＢＭＵ５０２は、書き換え用データを送信した時点（Ｔ１３０２）では、タイムアウトではないと判断する。
【００６９】
ＣＭＵ５０７、５１３、５１４は、それぞれ書き換え用データの受信タイムアウトであるかどうかを示す、経過時間のカウントを開始する（Ｓ１２０１）。
ＣＭＵ５０７、５１３、５１４は、それぞれ経過時間のカウントにより、書き換え用データの受信タイムアウトかどうかを判断する（Ｓ１２０２）。ＣＭＵ５０７、５１３、５１４は、ＢＭＵ５０２が書き換え用データを送信した時点（Ｔ１３０２）では、それぞれタイムアウトではないと判断する。
【００７０】
Ｔ１３０３では、ＣＭＵ５０７、５１３、５１４は、それぞれＢＭＵ５０２から書き換え用データを受信したため、データ受信時の処理を開始する。
ＣＭＵ５０７、５１３、５１４は、それぞれ受信したデータの種類を判断する（Ｓ１２５１）。ここでは、ＣＭＵ５０７、５１３、５１４は、書き換え用データを受信したと判断する。
ＣＭＵ５０７、５１３、５１４のプログラム書き換え部５１２は、それぞれ受信した書き換え用データを基に、動作プログラム保管部５１１のプログラムを書き換える（Ｓ１２５２）。
ＣＭＵ５０７、５１３、５１４は、それぞれ所定個数書き換え用データを受信したかどうかを判定する（Ｓ１２５３）。ここでは、所定個数は一つであり、書き換え用データを一つ受信したため、ＣＭＵ５０７、５１３、５１４のデータ受信成否判断部５０９は、所定個数書き換え用データを受信したと判断し、受信成功であると判断する（Ｓ１２５４）。
【００７１】
Ｔ１３０４では、ＣＭＵ５０７、５１３、５１４は、それぞれ書き換え用データ受信タイムアウトであると判断する。
ＣＭＵ５０７、５１３、５１４は、それぞれデータ受信成否判断部５０９の判断結果を判定する（Ｓ１２０５）。ここでは、すべてのＣＭＵ５０７、５１３、５１４が受信成功であると判断する。
そして、ＣＭＵ５０７、５１３、５１４のデータ受信状況通知部１００３は、データ受信状況をＢＭＵ５０２へ通知する。ここでは、すべてのＣＭＵ５０７、５１３、５１４が、データ受信状況（データ受信成功）を通知する。
【００７２】
Ｔ１３０５では、ＢＭＵ５０２は、ＣＭＵ５０７、５１３、５１４からデータ受信状況通知を受信したため、データ受信時の処理を開始する。
ＢＭＵ５０２は、受信したデータの種類を判定する（Ｓ１１５１）。ここでは、データ受信状況通知を受信したと判断する。
ＢＭＵ５０２は、データ受信状況通知の内容を確認する（Ｓ１１５４）。ここでは、すべてのＣＭＵ５０７、５１３、５１４から受信したデータ受信状況通知の内容が、受信成功である。
そして、ＢＭＵ５０２は、ＣＭＵ５０７、５１３、５１４を、検証用データ送信要求実施対象ＣＭＵとして登録する（Ｓ１１５５）。
【００７３】
Ｔ１３０６では、ＢＭＵ５０２は、所定の検証用データ送信処理時の処理を開始する。
ＢＭＵ５０２は、検証用データ送信要求実施対象ＣＭＵが存在するかどうかを確認する。ここでは、ＣＭＵ５０７、５１３、５１４の複数のＣＭＵが実施対象として存在するため、複数のＣＭＵの中の一つ（ＣＭＵ５０７）へ検証用データの送信要求を行う（Ｓ１１７２）。
そして、ＣＭＵ５０７を、検証用データ送信要求実施対象ＣＭＵから登録を解除する（Ｓ１１７３）。
【００７４】
Ｔ１３０７では、ＣＭＵ５０７がＢＭＵ５０２から検証用データ送信要求を受信したため、データ受信時の処理を開始する。
ＣＭＵ５０７は受信したデータの種類を判断する（Ｓ１２５１）。ここでは、ＣＭＵ５０７は、検証用データ送信要求を受信したと判断する。
Ｔ１３０８では、ＣＭＵ５０７の第二のプログラム送信部５１０が、検証用データを送信する（Ｓ１２６０）。
【００７５】
Ｔ１３０９では、ＢＭＵ５０２はＣＭＵ５０７から検証用データを受信したため、データ受信時の処理を開始する。
ＢＭＵ５０２は、受信したデータの種類を判断する。ここでは、検証用データを受信したと判断する。
ＢＭＵ５０２のデータ送信成否判断部１００１は、Ｔ１３０２で送信した書き換え用データと、ＣＭＵ５０７から受信した検証用データが一致しているかどうかの検証処理を行う。ここでは、ＢＭＵ５０２が送信し、ＣＭＵ５０７が受信した書き換え用データには、誤りが混入していないため、書き換え用データと検証用データが一致し、検証処理の結果はＯＫとなる。
【００７６】
一方で、ＣＭＵ５１３、５１４は、ＢＭＵ５０２と同様に、ＣＭＵ５０７からの検証用データをそれぞれ受信したため、データ受信時の処理を開始する。
ＣＭＵ５１３、５１４は、それぞれ受信したデータの種類を判断する。ここでは、検証用データを受信したと判断する。
ＣＭＵ５１３、５１４は、受信した検証用データが、受信に失敗した書き換え用データであるかどうかを判断する（Ｓ１２５５）。
ＣＭＵ５１３、５１４はそれぞれ受信した検証用データに付与されているシーケンス番号を確認し、同じ番号の書き換え用データを受信しているかどうかを判断する。ここでは、ＣＭＵ５１３、５１４は、受信した検証用データは、受信に失敗した書き換え用データではないと判断し、処理を終了する。
【００７７】
同様に、Ｔ１３１０では、ＢＭＵ５０２は、所定の検証用データ送信処理時の処理を実施し、ＣＭＵ５１３へ検証用データの送信要求を行う。そして、Ｔ１３１１ではＣＭＵ５１３は、ＢＭＵ５０２から検証用データ送信要求を受信したため、データ受信時の処理を開始する。ＣＭＵ５１３は、Ｔ１３０７のＣＭＵ５０７のデータ受信時と同様の処理を行う。
【００７８】
Ｔ１３１２では、ＣＭＵ５１３の第二のプログラム送信部５１０は、検証用データの送信を行う（Ｓ１２６１）。そして、Ｔ１３１３では、ＢＭＵ５０２は、ＣＭＵ５１３から検証用データを受信したため、データ受信時の処理を開始する。ＢＭＵ５０２は、Ｔ１３０９のデータ受信時と同様の処理を行う。
また、ＣＭＵ５０７、５１４は、ＣＭＵ５１３から検証用データを受信したため、それぞれデータ受信時の処理を開始する。ＣＭＵ５０７、５１４はＴ１３０９のＣＭＵ５１３、５１４のデータ受信時と同様の処理を行う。
【００７９】
同様に、Ｔ１３１４では、ＢＭＵ５０２は、所定の検証用データ送信処理時の処理を実施し、ＣＭＵ５１４へ検証用データの送信要求を行う。そして、Ｔ１３１５ではＣＭＵ５１４は、ＢＭＵ５０２から検証用データ送信要求を受信したため、データ受信時の処理を開始する。ＣＭＵ５１４は、Ｔ１３０７のＣＭＵ５０７のデータ受信時と同様の処理を行う。
【００８０】
Ｔ１３１６では、ＣＭＵ５１４の第二のプログラム送信部５１０は、検証用データの送信を行う（Ｓ１２６１）。そして、Ｔ１３１７では、ＢＭＵ５０２は、ＣＭＵ５１４から検証用データを受信したため、データ受信時の処理を開始する。ＢＭＵ５０２は、Ｔ１３０９のデータ受信時と同様の処理を行う。
また、ＣＭＵ５０７、５１３は、ＣＭＵ５１４から検証用データを受信したため、それぞれデータ受信時の処理を開始する。ＣＭＵ５０７、５１３はＴ１３０９のＣＭＵ５１３、５１４のデータ受信時と同様の処理を行う。そして、すべてのＣＭＵ５０７、５１３、５１４の検証の結果がＯＫとなる。
【００８１】
Ｔ１３１８では、検証用データ受信タイムアウトであると判断し、ＢＭＵ５０２は、処理を終了する。
このようにして、ＣＭＵ５０７、５１３、５１４のプログラム書き換え処理が完了する。
【００８２】
次に、実施の形態２において本発明の特徴である、ＢＭＵ５０２が送信した書き換え用データに、ネットワーク上でノイズ等により誤りが混入し、誤りが混入した書き換え用データを受信したＣＭＵ５０７、５１３、５１４が存在する場合の動作を、図７から図１２および図１４を用いて詳述する。
ここでは、ＢＭＵ５０２が送信し、ＣＭＵ５０７、５１４が受信した書き換え用データには、ネットワーク上で誤りが混入しなかったが、ＢＭＵ５０２が送信し、ＣＭＵ５１３が受信した書き換え用データには、ネットワーク上でノイズ等により誤りが混入した場合とする。
【００８３】
図１４は、ＢＭＵ５０２がＣＭＵ５０７、５１３、５１４のプログラムを書き換える際のタイミングチャートを示す。図１４において、受信状況は、ＣＭＵ５０７、５１３、５１４のデータ受信状況通知部１００３の通知結果を示し、検証結果は、ＢＭＵ５０２のデータ送信成否判断部１００１の検証処理の結果を示す。
また、Ｔ１４０４に示すＴｘは、ＣＭＵ５０７、５１３、５１４における書き換え用データの受信タイムアウトとなる時間であり、Ｔ１４２６に示すＴｙは、ＢＭＵ５０２における検証用データの受信タイムアウトとなる時間である。
【００８４】
図１４のＴ１４０１では、ＢＭＵ５０２は、ＣＭＵ５０７、５１３、５１４からデータ受信状況通知を受けていないため、受信状況は未判断である。また、検証用データも受信していないため、検証結果も未判断である。
Ｔ１４０２では、ＢＭＵ５０２は、書き換え用プログラムを、書き換え用データとして、ＣＭＵ５０７、５１３、５１４へ送信する（Ｓ１１０１）。
ＢＭＵ５０２は、検証用データの受信タイムアウトであるかどうかを示す経過時間のカウントを開始する（Ｓ１１０２）。
ＢＭＵ５０２は、経過時間のカウントにより、検証用データの受信タイムアウトかどうかを判断する（Ｓ１１０３）。ＢＭＵ５０２は、書き換え用データを送信した時点（Ｔ１４０２）では、タイムアウトではないと判断する。
【００８５】
ＣＭＵ５０７、５１３、５１４は、それぞれ書き換え用データの受信タイムアウトであるかどうかを示す、経過時間のカウントを開始する（Ｓ１２０１）。
ＣＭＵ５０７、５１３、５１４は、それぞれ経過時間のカウントにより、書き換え用データの受信タイムアウトかどうかを判断する（Ｓ１２０２）。ＣＭＵ５０７、５１３、５１４は、ＢＭＵ５０２が書き換え用データを送信した時点（Ｔ１４０２）では、それぞれタイムアウトではないと判断する。
【００８６】
Ｔ１４０３では、ＣＭＵ５０７、５１３、５１４は、ＢＭＵ５０２からそれぞれ書き換え用データを受信したため、データ受信時の処理を開始する。
ＣＭＵ５０７、５１３、５１４は、それぞれ受信したデータの種類を判断する（Ｓ１２５１）。ここでは、ＣＭＵ５０７、５１３、５１４は、書き換え用データを受信したと判断する。
ＣＭＵ５０７、５１３、５１４のプログラム書き換え部５１２は、それぞれ受信した書き換え用データを基に、動作プログラム保管部５１１のプログラムを書き換える（Ｓ１２５２）。
ＣＭＵ５０７、５１３、５１４は、それぞれ所定個数書き換え用データを受信したかどうかを判定する（Ｓ１２５３）。ここでは、所定個数は一つであり、書き換え用データを一つ受信したため、ＣＭＵ５０７、５１３、５１４のデータ受信成否判断部５０９は、所定個数書き換え用データを受信したと判断し、受信成功であると判断する（Ｓ１２５４）。
ここで、ＣＭＵ５１３が受信した書き換え用データには、ネットワーク上でノイズ等により誤りが混入しているが、データの受信は行われたため、ＣＭＵ５１３は、受信成功であると判断する。
【００８７】
Ｔ１４０４では、ＣＭＵ５０７、５１３、５１４は、それぞれ書き換え用データ受信タイムアウトであると判断する。
ＣＭＵ５０７、５１３、５１４は、それぞれデータ受信成否判断部５０９の判断結果を判定する（Ｓ１２０５）。ここでは、すべてのＣＭＵ５０７、５１３、５１４が受信成功であると判断する。
そして、ＣＭＵ５０７、５１３、５１４のデータ受信状況通知部１００３は、データ受信状況をＢＭＵ５０２へ通知する。ここでは、すべてのＣＭＵ５０７、５１３、５１４が、データ受信状況（データ受信成功）を通知する。
【００８８】
Ｔ１４０５では、ＢＭＵ５０２は、ＣＭＵ５０７、５１３、５１４からデータ受信状況通知を受信したため、データ受信時の処理を開始する。
ＢＭＵ５０２は、受信したデータの種類を判定する（Ｓ１１５１）。ここでは、データ受信状況通知を受信したと判断する。
ＢＭＵ５０２は、データ受信状況通知の内容を確認する（Ｓ１１５４）。ここでは、すべてのＣＭＵ５０７、５１３、５１４から受信したデータ受信状況通知の内容が、受信成功である。
そして、ＢＭＵ５０２は、ＣＭＵ５０７、５１３、５１４を、検証用データ送信要求実施対象ＣＭＵとして登録する（Ｓ１１５５）。
【００８９】
Ｔ１４０６では、ＢＭＵ５０２は、所定の検証用データ送信処理時の処理を開始する。
ＢＭＵ５０２は、検証用データ送信要求実施対象ＣＭＵが存在するかどうかを確認する。ここでは、ＣＭＵ５０７、５１３、５１４が実施対象として存在するため、ＣＭＵ５０７へ検証用データの送信要求を行う（Ｓ１１７２）。
そして、ＣＭＵ５０７を、検証用データ送信要求実施対象ＣＭＵから登録を解除する（Ｓ１１７３）。
【００９０】
Ｔ１４０７では、ＣＭＵ５０７がＢＭＵ５０２から検証用データ送信要求を受信したため、データ受信時の処理を開始する。
ＣＭＵ５０７は受信したデータの種類を判断する（Ｓ１２５１）。ここでは、ＣＭＵ５０７は、検証用データ送信要求を受信したと判断する。
Ｔ１４０８では、ＣＭＵ５０７の第二のプログラム送信部５１０が、検証用データを送信する（Ｓ１２６０）。
【００９１】
Ｔ１４０９では、ＢＭＵ５０２はＣＭＵ５０７から検証用データを受信したため、データ受信時の処理を開始する。
ＢＭＵ５０２は、受信したデータの種類を判断する。ここでは、検証用データを受信したと判断する。
ＢＭＵ５０２のデータ送信成否判断部１００１は、Ｔ１４０２で送信した書き換え用データと、ＣＭＵ５０７から受信した検証用データが一致しているかどうかの検証処理を行う。
ここでは、ＢＭＵ５０２が送信し、ＣＭＵ５０７が受信した書き換え用データには、誤りが混入していないため、書き換え用データと検証用データが一致し、検証処理の結果はＯＫとなる。
【００９２】
一方で、ＣＭＵ５１３、５１４は、ＢＭＵ５０２と同様に、ＣＭＵ５０７からの検証用データをそれぞれ受信したため、データ受信時の処理を開始する。
ＣＭＵ５１３、５１４は、それぞれ受信したデータの種類を判断する。ここでは、検証用データを受信したと判断する。
ＣＭＵ５１３、５１４は、受信した検証用データが、受信に失敗した書き換え用データであるかどうかを判断する（Ｓ１２５５）。
ＣＭＵ５１３、５１４はそれぞれ受信した検証用データに付与されているシーケンス番号を確認し、同じ番号の書き換え用データを受信しているかどうかを判断する。ここでは、ＣＭＵ５１３、５１４は、受信した検証用データは、受信に失敗した書き換え用データではないと判断し、処理を終了する。
【００９３】
同様に、Ｔ１４１０では、ＢＭＵ５０２は、所定の検証用データ送信処理時の処理を実施し、ＣＭＵ５１３へ検証用データの送信要求を行う。そして、Ｔ１４１１ではＣＭＵ５１３は、ＢＭＵ５０２から検証用データ送信要求を受信したため、データ受信時の処理を開始する。
ＣＭＵ５１３は、受信したデータの種類を判断する（Ｓ１２５１）。ここでは、ＣＭＵ５１３は、検証用データ送信要求を受信したと判断する。
【００９４】
Ｔ１４１２では、ＣＭＵ５１３の第二のプログラム送信部５１０が、検証用データを送信する（Ｓ１２６０）。
Ｔ１４１３では、ＢＭＵ５０２はＣＭＵ５１３から検証用データを受信したため、データ受信時の処理を開始する。
ＢＭＵ５０２は、受信したデータの種類を判断する。ここでは、検証用データを受信したと判断する。
ＢＭＵ５０２のデータ送信成否判断部１００１は、Ｔ１４０２で送信した書き換え用データと、ＣＭＵ５１３から受信した検証用データが一致しているかどうかの検証処理を行う。ここでは、ＣＭＵ５１３が受信した書き換え用データには、ネットワーク上でノイズ等により誤りが混入したため、ＣＭＵ５１３が送信する検証用データにも同じ誤りが混入している。そのため、書き換え用データと、検証用データが一致せず、ＢＭＵ５０２のデータ送信成否判断部１００１の検証処理の結果は、ＮＧとなる。
【００９５】
Ｔ１４１４では、ＢＭＵ５０２は、ＣＭＵ５１３へ、検証失敗通知を行う（Ｓ１１６０）。
Ｔ１４１５では、ＣＭＵ５１３は、ＢＭＵ５０２から検証失敗通知を受信したため、データ受信時の処理を開始する。
ＣＭＵ５１３は、受信したデータの種類を判断する（Ｓ１２５１）。ここでは、ＣＭＵ５１３は、検証失敗通知を受信したと判断する。
そして、ＣＭＵ５１３のデータ受信成否判断部５０９は、書き換え用データの受信に失敗したと判断する（１２６２）。そして、ＣＭＵ５１３は、受信に失敗した書き換え用データを認識する（Ｓ１２６３）。ここでは、検証失敗通知に含まれているシーケンス番号の書き換え用データの受信に失敗したと判断する。
ＢＭＵ５０２は、検証処理を実施したＣＭＵ５１３以外で、検証用データ送信要求実施対象のＣＭＵが存在するかどうかを判断する（Ｓ１１６１）。
【００９６】
Ｔ１４１６では、ＢＭＵ５０２は、検証用データ送信要求実施対象のＣＭＵである、ＣＭＵ５１４へ検証用データの送信要求を行う（Ｓ１１６３）。そして、ＣＭＵ５１４を、検証用データ送信要求実施対象ＣＭＵから登録を解除する（Ｓ１１６４）。
Ｔ１４１７では、ＣＭＵ５１４がＢＭＵ５０２から検証用データ送信要求を受信したため、データ受信時の処理を開始する。
ＣＭＵ５１４は受信したデータの種類を判断する（Ｓ１２５１）。ここでは、ＣＭＵ５１４は、検証用データ送信要求を受信したと判断する。
【００９７】
Ｔ１４１８では、ＣＭＵ５１４の第二のプログラム送信部５１０が、検証用データを送信する（Ｓ１２６０）。
Ｔ１４１９では、ＢＭＵ５０２はＣＭＵ５１４から検証用データを受信したため、データ受信時の処理を開始する。
ＢＭＵ５０２は、受信したデータの種類を判断する。ここでは、検証用データを受信したと判断する。
ＢＭＵ５０２のデータ送信成否判断部１００１は、Ｔ１４０２で送信した書き換え用データと、ＣＭＵ５１４から受信した検証用データが一致しているかどうかの検証処理を行う。ここでは、ＢＭＵ５０２が送信し、ＣＭＵ５１４が受信した書き換え用データには、誤りが混入していないため、書き換え用データと検証用データが一致し、検証処理の結果はＯＫとなる。
【００９８】
一方で、ＣＭＵ５０７、５１３は、ＢＭＵ５０２と同様に、ＣＭＵ５１４からの検証用データをそれぞれ受信したため、データ受信時の処理を開始する。
ＣＭＵ５０７、５１３は、それぞれ受信したデータの種類を判断する。ここでは、検証用データを受信したと判断する。
ＣＭＵ５０７、５１３は、受信した検証用データが、受信に失敗した書き換え用データであるかどうかを判断する（Ｓ１２５５）。
ＣＭＵ５０７、５１３はそれぞれ受信した検証用データに付与されているシーケンス番号を確認し、同じ番号の書き換え用データを受信しているかどうかを判断する。ここでは、ＣＭＵ５０７は、受信した検証用データは、受信に失敗した書き換え用データではないと判断し、処理を終了する。
ＣＭＵ５１３は、受信していないため、受信した検証用データは、受信に失敗した書き換え用データであると判断する。
【００９９】
ＣＭＵ５１３は、受信した検証用データを用いて、受信に失敗した書き換え用データを置き換えることで補完する（Ｓ１２５６）。
ＣＭＵ５１３のプログラム書き換え部５１２は、受信した書き換え用データを基に、動作プログラム保管部５１１のプログラムを書き換える（Ｓ１２５７）。
ＣＭＵ５１３は、所定個数書き換え用データを受信したかどうかを判定する（Ｓ１２５８）。ここでは、所定個数は一つであり、書き換え用データを一つ受信したため、ＣＭＵ５１３のデータ受信成否判断部５０９は、所定個数書き換え用データを受信したと判断し、受信成功であると判断する（Ｓ１２５９）。
そして、ＣＭＵ５１３のデータ受信状況通知部１００３は、データ受信状況（データ受信成功）をＢＭＵ５０２へ通知し、処理を終了する。
【０１００】
Ｔ１４２１では、ＢＭＵ５０２はＣＭＵ５１３からデータ受信状況通知を受信したため、データ受信時の処理を開始する。
ＢＭＵ５０２は、受信したデータの種類を判定する（Ｓ１１５１）。ここでは、データ受信状況通知を受信したと判断する。
ＢＭＵ５０２は、データ受信状況通知の内容を確認する（Ｓ１１５４）。ここでは、ＣＭＵ５１３から受信したデータ受信状況通知の内容が、受信成功である。
そして、ＢＭＵ５０２は、ＣＭＵ５１３を、検証用データ送信要求実施対象ＣＭＵとして登録する（Ｓ１１５５）。
【０１０１】
Ｔ１４２２では、ＢＭＵ５０２は、所定の検証用データ送信処理時の処理を開始する。
ＢＭＵ５０２は、検証用データ送信要求実施対象ＣＭＵが存在するかどうかを確認する。ここでは、ＣＭＵ５１３が実施対象として存在するため、ＣＭＵ５１３へ検証用データの送信要求を行う（Ｓ１１７２）。
そして、ＣＭＵ５１３を、検証用データ送信要求実施対象ＣＭＵから登録を解除する（Ｓ１１７３）。
【０１０２】
Ｔ１４２３では、ＣＭＵ５１３がＢＭＵ５０２から検証用データ送信要求を受信したため、データ受信時の処理を開始する。
ＣＭＵ５１３は受信したデータの種類を判断する（Ｓ１２５１）。ここでは、ＣＭＵ５１３は、検証用データ送信要求を受信したと判断する。
Ｔ１４２４では、ＣＭＵ５１３の第二のプログラム送信部５１０が、検証用データを送信する（Ｓ１２６０）。
【０１０３】
Ｔ１４２５では、ＢＭＵ５０２はＣＭＵ５１３から検証用データを受信したため、データ受信時の処理を開始する。
ＢＭＵ５０２は、受信したデータの種類を判断する。ここでは、検証用データを受信したと判断する。
ＢＭＵ５０２のデータ送信成否判断部１００１は、Ｔ１３０２で送信した書き換え用データと、ＣＭＵ５１３から受信した検証用データが一致しているかどうかの検証処理を行う。ここでは、ＣＭＵ５１４が送信し、かつＣＭＵ５１３が受信し、受信に失敗した書き換え用データとして補完した検証用データには、誤りが混入していないため、書き換え用データと検証用データが一致し、検証処理の結果はＯＫとなる。
【０１０４】
一方で、ＣＭＵ５０７、５１４は、ＢＭＵ５０２と同様に、ＣＭＵ５１３からの検証用データをそれぞれ受信したため、データ受信時の処理を開始する。
ＣＭＵ５０７、５１４は、それぞれ受信したデータの種類を判断する。ここでは、検証用データを受信したと判断する。
ＣＭＵ５０７、５１４は、受信した検証用データが、受信に失敗した書き換え用データであるかどうかを判断する（Ｓ１２５５）。
ＣＭＵ５０７、５１４はそれぞれ受信した検証用データに付与されているシーケンス番号を確認し、同じ番号の書き換え用データを受信しているかどうかを判断する。ここでは、ＣＭＵ５０７、５１４は、受信した検証用データは、受信に失敗した書き換え用データではないと判断し、処理を終了する。
【０１０５】
Ｔ１４２６では、検証用データ受信タイムアウトであると判断し、ＢＭＵ５０２は、処理を終了する。
このようにして、ＣＭＵ５０７、５１３、５１４のプログラム書き換え処理が完了する。
【０１０６】
上述のように、実施の形態２の制御システムでは、第一の制御装置と複数の第二の制御装置がネットワークを介してデータの送受信を行っている環境において、第一の制御装置が、第二の制御装置のプログラム書き換えを行う際、第一の制御装置が送信した書き換え用データにネットワーク上で、ノイズ等により誤りが混入した場合においても、第一の制御装置は、第二の制御装置へ他の第二の制御装置から送信される検証用データの受信を行わせるようにすることで、第一の制御装置は書き換え用データの再送信を行う必要が無いため、第一の制御装置のプログラム再送信による、第一の制御装置のプログラム書き換えに要する処理負荷の増加を防止することができる。
さらに、第一の制御装置が、書き換え用データの受信に成功した第二の制御装置のうちの特定の第二の制御装置に、検証用データを送信させることで、ネットワーク上での検証用データの衝突による、第二の制御装置の検証用データの再送信を低減することができる。
【０１０７】
実施の形態３．
次に、実施の形態３について説明する。
図１５は、この発明の実施の形態３における第一の制御装置のプログラム書き換え時の処理を示すフローチャートである。
図１６は、この発明の実施の形態３における第一の制御装置のデータ受信時の処理を示すフローチャートである。
図１７は、この発明の実施の形態３における第一の制御装置の所定の検証用データ送信処理時の処理を示すフローチャートである。
【０１０８】
図１８は、この発明の実施の形態３において、第一の制御装置が書き換え用データ送信後、所定時間後も検証の結果がＯＫとなっていない第二の制御装置が存在する場合のタイミングチャートである。
【０１０９】
実施の形態３におけるバッテリ制御システムの構成は、実施の形態２と同じである。
実施の形態３として、ＢＭＵ５０２が書き換え用データを送信後、検証用データ受信タイムアウト後に、検証の結果がＯＫとなっていないＣＭＵ５０７、５１３、５１４が存在する場合のプログラム書き換え手順に付いて、図７、図１１、図１２、図１５、図１８を用いて述べる。
なお、ＣＭＵ５０７、５１３、５１４の動作は、実施の形態２で説明した、図１１、図１２の動作と等しいため、その説明を省略する。
【０１１０】
以下、図１５〜図１７にしたがって、実施の形態３における第一の制御装置であるＢＭＵ５０２の動作を説明する。
なお、図１５で、Ｓ１５０４、Ｓ１５０５以外の処理は、実施の形態２で説明した図８の対応する処理と等しいため、その説明を省略する。
また、図１６、図１７の処理は、実施の形態２における図９、図１０の対応する処理と同じであり、その説明を省略する。
図１５のステップＳ１５０４では、ＢＭＵ５０２は、検証の結果がＯＫとなっていないＣＭＵ５０４、５１３、５１４が存在するかどうかを判断する。存在すると判断した場合、ステップＳ１５０５へ進み、存在していないと判断した場合、処理を終了する。
ステップＳ１５０５では、ＢＭＵ５０２は、検証の結果がＯＫとなっていないＣＭＵ５０７、５１３、５１４を書き換え処理の開始時の状態に戻し、再度書き換え用データの送信を行う。
そして、ＢＭＵ５０２は、検証用データの受信タイムアウトであるかどうかを示す、経過時間のカウントを再度開始する。
【０１１１】
次に、図１８のタイミングチャートについて説明する。
図１８は、ＢＭＵ５０２がＣＭＵ５０７、５１３、５１４のプログラムを書き換える際のタイミングチャートであり、図１８での受信状況は、ＣＭＵ５０７、５１３、５１４のデータ受信状況通知部１００３の通知結果を示し、検証結果は、ＢＭＵ５０２のデータ送信成否判断部１００１の検証処理の結果を示す。また、Ｔ１６０４、１６２２に示すＴｘ１、Ｔｘ２はＣＭＵ５０７、５１３、５１４における書き換え用データの受信タイムアウトとなる時間であり、Ｔ１６２０、Ｔ１６２８に示すＴｙ１、Ｔｙ２は、ＢＭＵ５０２における検証用データの受信タイムアウトとなる時間である。
【０１１２】
実施の形態３において、図１８のＴ１６０１からＴ１６１８までの動作は、実施の形態２で説明した図１４のＴ１４０１からＴ１４１８までの動作と同じであるため、その説明を省略する。
実施の形態２との相違点は、実施の形態２では、ＣＭＵ５１３は、ＣＭＵ５１４から送信される検証用データを受信し、受信に失敗した書き換え用データを補完することができたが、実施の形態３では、ＣＭＵ５１３は、ノイズ等の影響により、ＣＭＵ５１３は、ＣＭＵ５１４から送信される検証用データの受信に失敗した場合とする。
【０１１３】
Ｔ１６１９では、ＢＭＵ５０２は、ＣＭＵ５１４から検証用データを受信したため、データ受信時の処理を行う。
ＢＭＵ５０２は、受信したデータの種類を判断する。ここでは、検証用データを受信したと判断する。
ＢＭＵ５０２のデータ送信成否判断部１００１は、Ｔ１６０２で送信した書き換え用データと、ＣＭＵ５１４から受信した検証用データが一致しているかどうかの検証処理を行う。ここでは、ＢＭＵ５０２が送信し、ＣＭＵ５１４が受信した書き換え用データには、誤りが混入していないため、書き換え用データと検証用データが一致し、検証処理の結果はＯＫとなる。
【０１１４】
一方で、ＣＭＵ５０７は、ＢＭＵ５０２と同様に、ＣＭＵ５１４からの検証用データを受信したため、データ受信時の処理を開始する。ここで、ＣＭＵ５１３は、ＣＭＵ５１４からの検証用データの受信に失敗している。
ＣＭＵ５０７は、受信したデータの種類を判断する。ここでは、検証用データを受信したと判断する。
ＣＭＵ５０７は、受信した検証用データが、受信に失敗した書き換え用データであるかどうかを判断する（Ｓ１２５５）。
ＣＭＵ５０７は、受信した検証用データに付与されているシーケンス番号を確認し、同じ番号の書き換え用データを受信しているかどうかを判断する。ここでは、ＣＭＵ５０７は、受信した検証用データは、受信に失敗した書き換え用データではないと判断し、処理を終了する。
【０１１５】
Ｔ１６２０では、検証用データ受信タイムアウトであると判断し、ＢＭＵ５０２は、検証の結果がＯＫとなっていないＣＭＵ５０７、５１３、５１４が存在するかどうかを判断する（Ｓ１５０４）。
ＢＭＵ５０２の第一のプログラム送信部５０３は、ＣＭＵ５１３が検証の結果がＯＫとなっていないため、ＣＭＵ５１３を書き換え処理開始時の状態に戻し、再度書き換え用データを送信する（Ｓ１５０５）。
そして、ＢＭＵ５０２は、検証用データの受信タイムアウトであるかどうかを示す、経過時間のカウントを再度開始する。
ＢＭＵ５０２は、経過時間のカウントにより、検証用データの受信タイムアウトかどうかを判断する（Ｓ１５０３）。ＢＭＵ５０２は、書き換え用データを送信した時点（Ｔ１６２０）では、タイムアウトではないと判断する。
【０１１６】
ＣＭＵ５１３は、それぞれ書き換え用データの受信タイムアウトであるかどうかを示す、経過時間のカウントを開始する（Ｓ１２０１）。
ＣＭＵ５１３は、経過時間のカウントにより、書き換え用データの受信タイムアウトかどうかを判断する（Ｓ１２０２）。ＣＭＵ５１３は、ＢＭＵ５０２が書き換え用データを送信した時点（Ｔ１６２０）では、タイムアウトではないと判断する。
【０１１７】
Ｔ１６２１では、ＣＭＵ５１３は、ＢＭＵ５０２から書き換え用データを受信したため、データ受信時の処理を開始する。
ＣＭＵ５１３は、受信したデータの種類を判断する（Ｓ１２５１）。ここでは、ＣＭＵ５１３は、書き換え用データを受信したと判断する。
ＣＭＵ５１３のプログラム書き換え部５１２は、受信した書き換え用データを基に、動作プログラム保管部５１１のプログラムを書き換える（Ｓ１２５２）。
ＣＭＵ５１３は、所定個数書き換え用データを受信したかどうかを判定する（Ｓ１２５３）。ここでは、所定個数は一つであり、書き換え用データを一つ受信したため、ＣＭＵ５１３のデータ受信成否判断部５０９は、所定個数書き換え用データを受信したと判断し、受信成功であると判断する（Ｓ１２５４）。
【０１１８】
Ｔ１６２２では、ＣＭＵ５１３は書き換え用データ受信タイムアウトであると判断する。
ＣＭＵ５１３は、データ受信成否判断部５０９の判断結果を判定する（Ｓ１２０５）。ここでは、受信成功であると判断する。
そして、ＣＭＵ５１３のデータ受信状況通知部１００３は、データ受信状況（データ受信成功）をＢＭＵ５０２へ通知する。
【０１１９】
Ｔ１６２３では、ＢＭＵ５０２は、ＣＭＵ５１３からデータ受信状況通知を受信したため、データ受信時の処理を開始する。
ＢＭＵ５０２は、受信したデータの種類を判定する（Ｓ１５５１）。ここでは、データ受信状況通知を受信したと判断する。
ＢＭＵ５０２は、データ受信状況通知の内容を確認する（Ｓ１５５４）。ここでは、ＣＭＵ５１３から受信したデータ受信状況通知の内容が、受信成功である。
そして、ＢＭＵ５０２は、ＣＭＵ５１３を、検証用データ送信要求実施対象ＣＭＵとして登録する（Ｓ１５５５）。
【０１２０】
Ｔ１６２４では、ＢＭＵ５０２は、所定の検証用データ送信処理時の処理を開始する。
ＢＭＵ５０２は、検証用データ送信要求実施対象ＣＭＵが存在するかどうかを確認する。ここでは、ＣＭＵ５１３が実施対象として存在するため、ＣＭＵ５１３へ検証用データの送信要求を行う（Ｓ１５７２）。
そして、ＣＭＵ５１３を、検証用データ送信要求実施対象ＣＭＵから登録を解除する（Ｓ１５７３）。
【０１２１】
Ｔ１６２５では、ＣＭＵ５１３がＢＭＵ５０２から検証用データ送信要求を受信したため、データ受信時の処理を開始する。
ＣＭＵ５１３は、受信したデータの種類を判断する（Ｓ１２５１）。ここでは、ＣＭＵ５１３は、検証用データ送信要求を受信したと判断する。
Ｔ１６２６では、ＣＭＵ５１３の第二のプログラム送信部５１０が、検証用データを送信する（Ｓ１２６０）。
【０１２２】
Ｔ１６２７では、ＢＭＵ５０２は、ＣＭＵ５１３から検証用データを受信したため、データ受信時の処理を開始する。
ＢＭＵ５０２は、受信したデータの種類を判断する。ここでは、検証用データを受信したと判断する。
ＢＭＵ５０２のデータ送信成否判断部１００１は、Ｔ１６２４で送信した書き換え用データと、ＣＭＵ５１３から受信した検証用データが一致しているかどうかの検証処理を行う。
ここでは、ＢＭＵ５０２が送信し、ＣＭＵ５１３が受信した書き換え用データには、誤りが混入していないため、書き換え用データと検証用データが一致し、検証処理の結果はＯＫとなる。
【０１２３】
一方で、ＣＭＵ５０７、５１４は、ＢＭＵ５０２と同様に、ＣＭＵ５１３からの検証用データをそれぞれ受信したため、データ受信時の処理を開始する。
ＣＭＵ５０７、５１４は、それぞれ受信したデータの種類を判断する。ここでは、検証用データを受信したと判断する。
ＣＭＵ５０７、５１４は、受信した検証用データが、受信に失敗した書き換え用データであるかどうかを判断する（Ｓ１２５５）。
ＣＭＵ５０７、５１４は、それぞれ受信した検証用データに付与されているシーケンス番号を確認し、同じ番号の書き換え用データを受信しているかどうかを判断する。ここでは、ＣＭＵ５０７、５１４は、受信した検証用データは、受信に失敗した書き換え用データではないと判断し、処理を終了する。そして、すべてのＣＭＵ５０７、５１３、５１４の検証の結果がＯＫとなる。
【０１２４】
Ｔ１６２８では、ＢＭＵ５０２は、検証用データ受信タイムアウトであると判断し、検証の結果がＯＫとなっていないＣＭＵ５０７、５１３、５１４が存在するかどうかを判断する（Ｓ１５０４）。
ここでは、検証の結果がＯＫとなっていないＣＭＵ５０７、５１３、５１４が存在しないため、処理を終了する。
【０１２５】
実施の形態３によれば、上述のように、実施の形態２の効果に加え、第一の制御装置が書き換え用データを送信し、所定時間経過後、検証の結果がＯＫとなっていない第二の制御装置が存在する場合でも、第一の制御装置は、書き換え用データを再度送信するようにすることで、第二の制御装置のプログラム書き換えを行うことができる。
【０１２６】
実施の形態４．
次に、実施の形態４について説明する。
図１９は、この発明の実施の形態４における第二の制御装置のプログラム書き換え時の処理を示すフローチャートである。
図２０は、この発明の実施の形態４における第二の制御装置のデータ受信時の処理を示すフローチャートである。
【０１２７】
図２１は、この発明の実施の形態４において、第二の制御装置が書き換え用データを受信できた場合のタイミングチャートである。
【０１２８】
図２２は、この発明の実施の形態４において、第二の制御装置が書き換え用データの受信に失敗した場合のタイミングチャートである。
【０１２９】
本実施の形態４によるバッテリ制御システムの構成は、実施の形態１と同じである。
図１は、本実施の形態４によるバッテリ制御システムの構成を示す図である。図１に示すように、このバッテリ制御システム５０１は、第一の制御装置であるＢＭＵ５０２と、第二の制御装置であるＣＭＵ５０７、５１３、５１４がＣＡＮネットワーク５０６により接続されて構成されている。
ＢＭＵ５０２の動作は、実施の形態１で説明した図２の動作と等しいため、その説明を省略する。
【０１３０】
図１９、図２０は、実施の形態４における第二の制御装置であるＣＭＵ５０７、５１３、５１４の動作を説明するフローチャートであり、以下に、図１９、図２０を用いて、ＣＭＵ５０７、５１３、５１４の動作を説明する。
なお、ＣＭＵ５０７、５１３、５１４は、同じ動作をするため、ここではＣＭＵ５０７を用いて説明する。
【０１３１】
まず、図１９を用いて、ＣＭＵ５０７のプログラム書き換え処理開始時の動作について述べる。
ステップＳ１７０１では、ＣＭＵ５０７は書き換え用データの受信タイムアウトであるかどうかを示す、経過時間のカウントを開始する。ここで、書き換え用データの受信タイムアウトとは、ＣＭＵ５０７がＢＭＵ５０２から受信する書き換え用データの最大待ち時間を超えた状態を示す。
ステップＳ１７０２では、ＣＭＵ５０７が、経過時間のカウントにより、書き換え用データの受信タイムアウトであるかどうかを判断する。タイムアウトである場合、ステップＳ１７０３へ進み、タイムアウトでない場合、ステップＳ１７０２に留まる。
【０１３２】
ステップＳ１７０３では、ＣＭＵ５０７は、データ受信成否判断部５０９の判断結果を判定する。判定の結果が受信成功である場合、ステップＳ１７０４へ進み、受信成功でない場合、ステップＳ１７０７へ進む。
ステップＳ１７０４では、ＣＭＵ５０７は、検証用データ送信待ちタイムアウトであるかどうかを示す、経過時間のカウントを開始する。ここで、検証用データの送信タイムアウトとは、ＣＭＵ５０７が、書き換え用データの受信に成功したと判断してから、検証用データを送信するまでの待ち時間を超えた状態を示す。この待ち時間は、ＣＭＵ毎に決めておく。
【０１３３】
ステップＳ１７０５では、ＣＭＵ５０７が、経過時間のカウントにより、検証用データ送信待ちタイムアウトであるかどうかを判断する。タイムアウトである場合、ステップＳ１７０６へ進み、タイムアウトでない場合、ステップＳ１７０５に留まる。
ステップＳ１７０６では、ＣＭＵ５０７の第二のプログラム送信部５１０は、検証用データを送信する。
ステップＳ１７０７では、ＣＭＵ５０７のデータ受信成否判断部５０９は、書き換え用データの受信に失敗したと判断する。
【０１３４】
次に、図２０を用いて、ＣＭＵ５０７のデータ受信時の処理について述べる。
ステップＳ１７５１では、ＣＭＵ５０７は、受信したデータの種類を判断する。受信したデータの種類が書き換え用データである場合、ステップＳ１７５２へ進み、検証用データである場合、ステップＳ１７５５へ進む。
ステップＳ１７５２では、ＣＭＵ５０７のプログラム書き換え部５１２が、受信した書き換え用データを基に、動作プログラム保管部５１１のプログラムを書き換える。
ステップＳ１７５３では、ＣＭＵ５０７は所定個数書き換え用データを受信したかどうかを判断する。所定個数書き換え用データを受信した場合、ステップＳ１７５４へ進み、所定個数受信していない場合、処理を終了する。ここで、所定個数とはＢＭＵ５０２がＣＭＵ５０７へ送信する書き換え用データの個数であり、予め決めておく。
【０１３５】
ステップＳ１７５４では、ＣＭＵ５０７のデータ受信成否判断部５０９は、書き換え用データの受信に成功したと判断する。
ステップＳ１７５５では、ＣＭＵ５０７は、受信した検証用データが、受信に失敗した書き換え用データであるかどうかを判断する。
ここでは、書き換え用データにシーケンス番号が付与されており、検証用データにも書き換え用データと同じ番号が付与されている。
ＣＭＵ５０７は、受信した検証用データに付与されているシーケンス番号と同じ番号の書き換え用データを受信していない場合、受信に失敗した書き換え用データであると判断し、受信していた場合、受信に失敗した書き換え用データではないと判断する。
判断の結果、受信に失敗した書き換え用データである場合、ステップＳ１７５６へ進み、そうでない場合、処理を終了する。
【０１３６】
ステップＳ１７５６では、ＣＭＵ５０７は、受信した検証用データを用いて、受信に失敗した書き換え用データを置き換えることで補完する。
ステップＳ１７５７では、ＣＭＵ５０７のプログラム書き換え部５１２が、受信した書き換え用データを基に、動作プログラム保管部５１１のプログラムを書き換える。
ステップＳ１７５８では、ＣＭＵ５０７は、所定個数書き換え用データを受信したかどうかを判断する。所定個数書き換え用データを受信した場合、ステップＳ１７５９へ進み、所定個数受信していない場合、処理を終了する。ここで、所定個数とはＢＭＵ５０２がＣＭＵ５０７へ送信する書き換え用データの個数であり、予め決めておく。
【０１３７】
ステップＳ１７５９では、ＣＭＵ５０７のデータ受信成否判断部５０９は、書き換え用データの受信に成功したと判断する。
ステップＳ１７６０では、ＣＭＵ５０７は、検証用データ送信待ちタイムアウトであるかどうかを示す、経過時間のカウントを開始する。ここで、検証用データの送信タイムアウトとは、ＣＭＵ５０７が、書き換え用データの受信に成功したと判断してから、検証用データを送信するまでの待ち時間を超えた状態を示す。この待ち時間は、ＣＭＵ毎に決めておく。
【０１３８】
ステップＳ１７６１では、ＣＭＵ５０７が、経過時間のカウントにより、検証用データ送信待ちタイムアウトであるかどうかを判断する。タイムアウトである場合、ステップＳ１７６２へ進み、タイムアウトでない場合、ステップＳ１７６１に留まる。
ステップＳ１７６２では、ＣＭＵ５０７の第二のプログラム送信部５１０は、検証用データを送信する。
上述したＣＭＵ５０７のデータ受信時の処理は、データを受信するたびに実施される。
【０１３９】
図２１は、ＢＭＵ５０２がＣＭＵ５０７、５１３、５１４のプログラムを書き換える際のタイミングチャートであり、図２１において、受信状況は、ＣＭＵ５０７、５１３、５１４のデータ受信成否判断部５０９の判断結果を示す。また、ＴｘはＣＭＵ５０７、５１３、５１４における書き換え用データの受信タイムアウト時間である。
以下、ＣＭＵ５０７、５１３、５１４のプログラム書き換えを、本発明により行う場合の処理について、図１、図２、図１９〜図２１を用いて説明する。
ここでは、すべてのＣＭＵ５０７、５１３、５１４がＢＭＵ５０２からの書き換え用データの受信に成功した場合とする。
【０１４０】
また、本実施の形態４では、ＢＭＵ５０２の第一のプログラム送信部５０３は、書き換え用プログラム保管部５０４に保管されている書き換え用プログラムを、１つの書き換え用データとして送信する場合を説明する。書き換え用プログラムを２つ以上の書き換え用データに分割して送信しても本発明の効果には影響しない。
さらに、本実施の形態４では、ＣＭＵ５０７、５１３、５１４は、同一のプログラムで書き換える場合を説明する。
さらに、ＣＭＵ５０７は、検証用データ送信待ちタイムアウトであるかどうかを示す、経過時間のカウント開始後、２ｓｅｃ後に検証用データを送信し、ＣＭＵ５１３は３ｓｅｃ後、ＣＭＵ５１４は４ｓｅｃ後に送信する場合を説明する。
【０１４１】
図２１のＴ１８０１では、ＣＭＵ５０７、５１３、５１４のデータ受信成否判断部５０９の判断結果は、初期状態（未判断）である。
Ｔ１８０２では、ＢＭＵ５０２は書き換え用プログラムを、書き換え用データとして、ＣＭＵ５０７、５１３、５１４へ送信する（Ｓ６０１）。
ＣＭＵ５０７、５１３、５１４は、それぞれ書き換え用データの受信タイムアウトであるかどうかを示す、経過時間のカウントを開始する（Ｓ１７０１）。
ＣＭＵ５０７、５１３、５１４は、それぞれ経過時間のカウントにより、書き換え用データの受信タイムアウトかどうかを判断する（Ｓ１７０２）。ＣＭＵ５０７、５１３、５１４は、ＢＭＵ５０２が書き換え用データを送信した時点（Ｔ１８０２）では、タイムアウトではないと判断する。
【０１４２】
Ｔ１８０３では、ＣＭＵ５０７、５１３、５１４は、それぞれＢＭＵ５０２から書き換え用データを受信したため、データ受信時の処理を開始する。
ＣＭＵ５０７、５１３、５１４は、それぞれ受信したデータの種類を判断する（Ｓ１７５１）。ここでは、ＣＭＵ５０７、５１３、５１４は、書き換え用データを受信したと判断する。
ＣＭＵ５０７、５１３、５１４のプログラム書き換え部５１２は、それぞれ受信した書き換え用データを基に、動作プログラム保管部５１１のプログラムを書き換える（Ｓ１７５２）。
ＣＭＵ５０７、５１３、５１４は、それぞれ所定個数書き換え用データを受信したかどうかを判定する（Ｓ１７５３）。ここでは、所定個数は一つであり、書き換え用データを一つ受信したため、ＣＭＵ５０７、５１３、５１４のデータ受信成否判断部５０９は、所定個数書き換え用データを受信したと判断し、受信成功であると判断する（Ｓ１７５４）。
【０１４３】
Ｔ１８０４では、ＣＭＵ５０７、５１３、５１４は、それぞれ書き換え用データ受信タイムアウトであると判断する。
ＣＭＵ５０７、５１３、５１４は、それぞれデータ受信成否判断部５０９の判断結果を判定する（Ｓ１７０３）。ここでは、すべてのＣＭＵ５０７、５１３、５１４が受信成功であると判断する。
そして、ＣＭＵ５０７、５１３、５１４は、検証用データ送信待ちタイムアウトであるかどうかを示す、経過時間のカウントを開始する（Ｓ１７０４）。
Ｔ１８０５では、ＣＭＵ５０７が検証用データ送信待ちタイムアウトであると判断する。
そして、ＣＭＵ５０７の第二のプログラム送信部５１０は、検証用データを送信する（Ｓ１７０６）。
【０１４４】
Ｔ１８０６では、ＣＭＵ５１３、５１４は、それぞれＣＭＵ５０７から検証用データを受信したため、データ受信時の処理を開始する。
ＣＭＵ５１３、５１４は、受信したデータの種類を判断する（Ｓ１７５１）。ここでは、ＣＭＵ５１３、５１４は、検証用データを受信したと判断する。
ＣＭＵ５１３、５１４は、受信した検証用データが、受信に失敗した書き換え用データであるかどうかを判断する（Ｓ１７５５）。
ＣＭＵ５１３、５１４は、それぞれ受信した検証用データに付与されているシーケンス番号を確認し、同じ番号の書き換え用データを受信しているかどうかを判断する。ここでは、ＣＭＵ５１３、５１４は、受信した検証用データは、受信に失敗した書き換え用データではないと判断し、処理を終了する。
【０１４５】
Ｔ１８０７では、ＣＭＵ５１３が検証用データ送信待ちタイムアウトであると判断する。
そして、ＣＭＵ５１３の第二のプログラム送信部５１０は、検証用データを送信する（Ｓ１７０６）。
Ｔ１８０８では、ＣＭＵ５０７、５１４は、それぞれＣＭＵ５１３から検証用データを受信したため、それぞれデータ受信時の処理を開始する。ＣＭＵ５０７、５１４は、Ｔ１８０６のＣＭＵ５１３、５１４のデータ受信時と同様の処理を行う。
【０１４６】
Ｔ１８０９では、ＣＭＵ５１４が検証用データ送信待ちタイムアウトであると判断する。
そして、ＣＭＵ５１４の第二のプログラム送信部５１０は、検証用データを送信する（Ｓ１７０６）。
Ｔ１８１０では、ＣＭＵ５０７、５１３は、それぞれＣＭＵ５１４から検証用データを受信したため、それぞれデータ受信時の処理を開始する。ＣＭＵ５０７、５１３は、Ｔ１８０６のＣＭＵ５１３、５１４のデータ受信時と同様の処理を行う。
このようにして、ＣＭＵ５０７、５１３、５１４のプログラム書き換え処理が完了する。
【０１４７】
次に、実施の形態４において本発明の特徴である、書き換え用データの受信に失敗したＣＭＵ５０７、５１３、５１４が存在する場合の動作を、図１、図２、図１９、図２０、図２２を用いて詳述する。
ここでは、ＣＭＵ５０７、５１４はＢＭＵ５０２からの書き換え用データの受信に成功し、ＣＭＵ５１３はノイズ等の影響により、ＢＭＵ５０２からの書き換え用データの受信に失敗した場合とする。
【０１４８】
図２２は、ＢＭＵ５０２がＣＭＵ５０７、５１３、５１４のプログラムを書き換える際のタイミングチャートであり、図２２において、受信状況は、ＣＭＵ５０７、５１３、５１４のデータ受信成否判断部５０９の判断結果を示す。また、Ｔ１９０４に示すＴｘは、ＣＭＵ５０７、５１３、５１４における書き換え用データの受信タイムアウトとなる時間である。
【０１４９】
Ｔ１９０１では、ＣＭＵ５０７、５１３、５１４それぞれのデータ受信成否判断部５０９の判断結果は、初期状態（未判断）である。
Ｔ１９０２では、ＢＭＵ５０２は、書き換え用プログラムを、書き換え用データとして、ＣＭＵ５０７、５１３、５１４へ送信する（Ｓ６０１）。
ＣＭＵ５０７、５１３、５１４は、それぞれ書き換え用データの受信タイムアウトであるかどうかを示す、経過時間のカウントを開始する（Ｓ１７０１）。
ＣＭＵ５０７、５１３、５１４は、それぞれ経過時間のカウントにより、書き換え用データの受信タイムアウトかどうかを判定する（Ｓ１７０２）。ＣＭＵ５０７、５１３、５１４は、ＢＭＵ５０２が書き換え用データを送信した時点（Ｔ１９０２）では、タイムアウトではないと判断する。
ＣＭＵ５０７、５１３、５１４は、書き換え用データを受信したかどうかを判断する（Ｓ１７０３）。
【０１５０】
Ｔ１９０３では、ＣＭＵ５０７、５１４は、それぞれＢＭＵ５０２から書き換え用データを受信したため、データ受信時の処理を開始する。ＣＭＵ５１３は、書き換え用データを受信していないと判断する。
ＣＭＵ５０７、５１４は、それぞれ受信したデータの種類を判断する（Ｓ１７５１）。ここでは、ＣＭＵ５０７、５１４は、書き換え用データを受信したと判断する。
ＣＭＵ５０７、５１４のプログラム書き換え部５１２は、それぞれ受信した書き換え用データを基に、動作プログラム保管部５１１のプログラムを書き換える（Ｓ１７５２）。
ＣＭＵ５０７、５１４は、所定個数書き換え用データを受信したかどうかを判定する（Ｓ１７５３）。ここでは、所定個数は一つであり、書き換え用データを一つ受信したため、ＣＭＵ５０７、５１４のデータ受信成否判断部５０９は、所定個数書き換え用データを受信したと判断し、受信成功であると判断する（Ｓ１７５４）。
一方、ＣＭＵ５１３のデータ受信成否判断部５０９の判断結果は、未判断である。
【０１５１】
Ｔ１９０４では、ＣＭＵ５０７、５１３、５１４は、それぞれ書き換え用データ受信タイムアウトであると判断する。
ＣＭＵ５０７、５１３、５１４は、それぞれデータ受信成否判断部５０９の判断結果を判定する（Ｓ１７０３）。ここでは、ＣＭＵ５０７、５１４が受信成功であると判断する。ＣＭＵ５１３は、データ受信成否判断部５０９の判断結果が未判断であるため、書き換え用データ受信失敗であると判断する。
そして、ＣＭＵ５０７、５１４は、検証用データ送信待ちタイムアウトであるかどうかを示す、経過時間のカウントを開始する（Ｓ１７０４）。
【０１５２】
Ｔ１９０５では、ＣＭＵ５０７が検証用データ送信待ちタイムアウトであると判断する。
そして、ＣＭＵ５０７の第二のプログラム送信部５１０は、検証用データを送信する（Ｓ１７０６）。
【０１５３】
Ｔ１９０６では、ＣＭＵ５１３、５１４は、それぞれＣＭＵ５０７から検証用データを受信したため、データ受信時の処理を開始する。
ＣＭＵ５１３、５１４は、受信したデータの種類を判断する（Ｓ１７５１）。ここでは、ＣＭＵ５１３、５１４は、検証用データを受信したと判断する。
ＣＭＵ５１３、５１４は、受信した検証用データが、受信に失敗した書き換え用データであるかどうかを判断する（Ｓ１７５５）。
ＣＭＵ５１３、５１４は、それぞれ受信した検証用データに付与されているシーケンス番号を確認し、同じ番号の書き換え用データを受信しているかどうかを判断する。ここでは、ＣＭＵ５１３は、受信した検証用データが、受信に失敗した書き換え用データであると判断する。ＣＭＵ５１４は、受信に失敗した書き換え用データではないと判断し、処理を終了する。
【０１５４】
ＣＭＵ５１３は、受信した検証用データを用いて、受信に失敗した書き換え用データを置き換えることで補完する（Ｓ１７５６）。そして、ＣＭＵ５１３のプログラム書き換え部５１２が、受信した書き換え用データを基に、動作プログラム保管部５１１のプログラムを書き換える（Ｓ１７５７）。
ＣＭＵ５１３は、所定個数書き換え用データを受信したかどうかを判定する（Ｓ１７５８）。ここでは、所定個数は一つであり、書き換え用データを一つ受信したため、ＣＭＵ５１３のデータ受信成否判断部５０９は、所定個数書き換え用データを受信したと判断し、受信成功であると判断する（Ｓ１７５９）。
そして、ＣＭＵ５１３は、検証用データ送信待ちタイムアウトであるかどうかを示す、経過時間のカウントを開始する（Ｓ１７６０）。
【０１５５】
Ｔ１９０７では、ＣＭＵ５１４が検証用データ送信待ちタイムアウトであると判断する。
そして、ＣＭＵ５１４の第二のプログラム送信部５１０は、検証用データを送信する（Ｓ１７０６）。
【０１５６】
Ｔ１９０８では、ＣＭＵ５０７、５１３は、それぞれＣＭＵ５１４から検証用データを受信したため、データ受信時の処理を開始する。
ＣＭＵ５０７、５１３は、受信したデータの種類を判断する（Ｓ１７５１）。ここでは、ＣＭＵ５０７、５１３は、検証用データを受信したと判断する。
ＣＭＵ５０７、５１３は、受信した検証用データが、受信に失敗した書き換え用データであるかどうかを判断する（Ｓ１７５５）。
ＣＭＵ５０７、５１３は、それぞれ受信した検証用データに付与されているシーケンス番号を確認し、同じ番号の書き換え用データを受信しているかどうかを判断する。ここでは、ＣＭＵ５０７、５１３は、受信した検証用データは、受信に失敗した書き換え用データではないと判断し、処理を終了する。
【０１５７】
Ｔ１９０９では、ＣＭＵ５１３が検証用データ送信待ちタイムアウトであると判断する。
そして、ＣＭＵ５１３の第二のプログラム送信部５１０は、検証用データを送信する（Ｓ１７０６）。
Ｔ１９１０では、ＣＭＵ５０７、５１４は、それぞれＣＭＵ５１３から検証用データを受信したため、それぞれデータ受信時の処理を開始する。ＣＭＵ５０７、５１４は、Ｔ１９０８のＣＭＵ５０７、５１３のデータ受信時と同様の処理を行う。
このようにして、ＣＭＵ５０７、５１３、５１４のプログラム書き換え処理が完了する。
【０１５８】
実施の形態４によれば、上述のように、第一の制御装置と複数の第二の制御装置がネットワークを介してデータの送受信を行っている環境において、第一の制御装置は、書き換え用プログラムを書き換え用データとして送信し、書き換え用データの受信に成功した特定の第二の制御装置は、第一の制御装置から受信した書き換え用データと同一内容のデータからなる検証用データを送信し、書き換え用データの受信に失敗した第二の制御装置は、特定の第二の制御装置から送信される検証用データを受信して、受信に失敗した書き換え用データを補完することで、第一の制御装置は書き換え用データの再送信を行う必要が無いため、第一の制御装置のプログラム再送信による、第一の制御装置のプログラム書き換えに要する処理負荷の増加を防止することができる。
さらに、書き換え用データの受信に成功したと判断した第二の制御装置は、第二の制御装置毎に決めておく所定時間経過後に、検証用データを送信することで、ネットワーク上での検証用データの衝突による、第二の制御装置の検証用データの再送信を低減することができる。
【０１５９】
実施の形態５．
次に、実施の形態５について説明する。
図２３は、この発明の実施の形態５におけるバッテリ制御システムを示す構成図である。
図２３において、バッテリ制御システム５０１は、第一の制御装置であるＢＭＵ５０２と、第二の制御装置であるＣＭＵ５０７、５１３、５１４がＣＡＮネットワーク５０６により接続されて構成されている。
また、ＢＭＵ５０２は、第三の制御装置である書き換えツール２００１と、ＦｌｅｘＲａｙネットワーク２００５により接続されている。
【０１６０】
書き換え用ツール２００１は、第三のプログラム送信部２００２、外部機器における書き換え用プログラム保管部（第三のプログラム保管部）２００３、ＦｌｅｘＲａｙ通信インタフェース部（第四の通信インタフェース部）２００４から構成される。
第三のプログラム送信部２００２は、外部機器における書き換え用プログラム保管部２００３に保管されているプログラムを、一つ以上の書き換え用データに分割して、ＦｌｅｘＲａｙ通信インタフェース部２００４により、送信する。
【０１６１】
外部機器における書き換え用プログラム保管部２００３は、ＣＭＵ５０７、５１３、５１４の書き換え用プログラムを保管する。
ＦｌｅｘＲａｙ通信インタフェース部２００４は、ＦｌｅｘＲａｙネットワーク２００５を介して、データの送受信を行う。
【０１６２】
ＢＭＵ５０２は、実施の形態１で説明した図１の構成に加え、ＦｌｅｘＲａｙ通信インタフェース部（第三の通信インタフェース部）２００６、第一のプログラム受信部２００７を備える。
ＦｌｅｘＲａｙ通信インタフェース部２００６は、ＦｌｅｘＲａｙネットワーク２００５を介して、データの送受信を行う。
第一のプログラム受信部２００７は、ＦｌｅｘＲａｙネットワーク２００５から受信したデータを基に、書き換え用プログラム保管部５０４に保管されているプログラムを更新する。
【０１６３】
ＣＭＵ５０７、５１３、５１４は、実施の形態１で説明した図１の構成と同じである。
ＢＭＵ５０２の動作は、実施の形態１で説明した図２の動作と等しいため、その説明を省略する。
また、ＣＭＵ５０７、５１３、５１４の動作は、実施の形態１で説明した図３、図４の動作と等しいため、その説明を省略する。
【０１６４】
実施の形態５は、図２３のような構成とし、ＢＭＵ５０２がＣＭＵ５０７、５１３、５１４のプログラム書き換えを行う前に、書き換え用ツール２００１は、ＢＭＵ５０２へＦｌｅｘＲａｙネットワーク２００５を介して、外部機器における書き換え用プログラム保管部２００３のプログラムを送信する。
そして、ＢＭＵ５０２は、ＦｌｅｘＲａｙネットワーク２００５から受信したデータを基に、書き換え用プログラム保管部５０４のプログラムを更新する。
【０１６５】
上述の手順を、第一の制御装置が第二の制御装置のプログラム書き換えを行う前に実施する。このことにより、従来のように書き換え用ツールが制御機器のプログラム書き換えを一つ一つ行うような場合でも、第一の制御装置のプログラム書き換えを行い、第一の制御装置が複数の第二の制御装置のプログラム書き換えを行うことで、本発明の効果を得ることができる。
このように、現行の書き換え用ツールを変更することなく、本発明を適用することが可能である。
【０１６６】
なお、上記説明では、本発明による制御システムを、バッテリ制御システムに適用した場合について説明したが、本発明はこれに限定されるものではなく、各種制御システムに適用可能であり、同様な効果を奏する。
【０１６７】
また、上記説明では、第一の制御装置と第二の制御装置は、ＣＡＮネットワークにより接続されるとしたが、これに限定されず、Ｅｔｈｅｒｎｅｔ（登録商標）など他の通信規格のネットワークでも良い。また、Ｂｌｕｅｔｏｏｔｈ（登録商標）などの無線ネットワークで接続されるとしても良い。
【符号の説明】
【０１６８】
５０１  バッテリ制御システム
５０２  ＢＭＵ
５０３  第一のプログラム送信部
５０４  書き換え用プログラム保管部
５０５、５０８  ＣＡＮ通信インタフェース部
５０６  ＣＡＮネットワーク
５０７、５１３、５１４  ＣＭＵ
５０９  データ受信成否判断部
５１０  第二のプログラム送信部
５１１  動作プログラム保管部
５１２  プログラム書き換え部
５１５  バッテリ
５１６、５１７、５１８  セル
１００１  データ送信成否判断部
１００２  検証用データ送信要求部
１００３  データ受信状況通知部
２００１  書き換え用ツール
２００２  第三のプログラム送信部
２００３  外部機器における書き換え用プログラム保管部
２００４、２００６  ＦｌｅｘＲａｙ通信インタフェース部
２００５  ＦｌｅｘＲａｙネットワーク
２００７  第一のプログラム受信部
【図１】
0005357204.tif 000002
【図２】
0005357204.tif 000003
【図３】
0005357204.tif 000004
【図４】
0005357204.tif 000005
【図５】
0005357204.tif 000006
【図６】
0005357204.tif 000007
【図７】
0005357204.tif 000008
【図８】
0005357204.tif 000009
【図９】
0005357204.tif 000010
【図１０】
0005357204.tif 000011
【図１１】
0005357204.tif 000012
【図１２】
0005357204.tif 000013
【図１３】
0005357204.tif 000014
【図１５】
0005357204.tif 000015
【図１６】
0005357204.tif 000016
【図１７】
0005357204.tif 000017
【図１９】
0005357204.tif 000018
【図２０】
0005357204.tif 000019
【図２１】
0005357204.tif 000020
【図２３】
0005357204.tif 000021
【図１４】
0005357204.tif 000022
【図１８】
0005357204.tif 000023
【図２２】
0005357204.tif 000024