(57)【特許請求の範囲】
【請求項１】
制御プログラムを実行して制御を行う制御モードと、前記制御プログラムに基づいた制御を行うことなくリプロプログラムを実行して前記制御プログラムの書き換えを行うリプログモードとの実行モードを有した複数のノード（１０〜４０、１０ａ）を含み、各ノードが前記制御モード時に連携して制御を行う車載制御システム（１００、１１０、１２０、１３０）における、前記ノードの前記実行モードを決定する車載制御装置であり、
前記車載制御システムに含まれている複数の前記ノードの一つである前記車載制御装置であって、
複数の前記ノードの全てが、前記制御プログラムの書き換えが完了しているか否かを判定する判定部（Ｓ１１、Ｓ１２、Ｓ１２ａ〜Ｓ１２ｃ）と、
全ての前記ノードが前記制御プログラムの書き換えを完了していると前記判定部が判定した場合、前記実行モードを前記制御モードに決定し、全ての前記ノードが前記制御プログラムの書き換えを完了していると前記判定部が判定していない場合、前記実行モードを前記リプログモードに決定する決定部（Ｓ１３、Ｓ１４、Ｓ１３ａ、Ｓ１４ａ）と、を備え、
前記判定部（Ｓ１１、Ｓ１２、Ｓ１２ａ、Ｓ１２ｂ）は、自ノードで前記制御プログラムの書き換えが完了していること、及び他の前記ノードの夫々から取得した前記制御プログラムの書き換えが完了していることを示す完了情報とに基づいて、複数の前記ノードの全てが、前記制御プログラムの書き換えが完了しているか否かを判定し、
書換装置から前記制御プログラムの書き換え用データを受信して、前記制御プログラムの書き換えを行うものであり、
自ノードで前記制御プログラムの書き換えが完了している場合、及び他の前記ノードの夫々から前記完了情報を取得するたびに、前記制御プログラムの書き換えが完了していることを前記書換装置に通知する個別通知部（Ｓ３８）を備えている車載制御装置。
【請求項２】
前記判定部（Ｓ１２）は、自ノードで前記制御プログラムの書き換えが完了したこと及び前記完了情報を取得したことをカウントしたカウント値と、複数の前記ノードの数とが一致している場合に、複数の前記ノードの全てが、前記制御プログラムの書き換えを完了していると判定する請求項１に記載の車載制御装置。
【請求項３】
前記判定部は、
前記車載制御装置における前記制御プログラムの書き換えが完了している否かを判定する個別判定部（Ｓ１１）と、
他の前記ノードの夫々から取得した前記制御プログラムの書き換えが完了したことを示す完了情報をカウントしたカウント値と他の前記ノードの数とが一致し、且つ、前記個別判定部で前記制御プログラムの書き換えが完了していると判定されている場合に、複数の前記ノードの全てが、前記制御プログラムの書き換えを完了していると判定する統括判定部（Ｓ１２ａ）と、を含む請求項１に記載の車載制御装置。
【請求項４】
書換装置から前記制御プログラムの消去を要求する消去要求コマンドを受信した後に、前記制御プログラムの書き換え用データを受信して、前記制御プログラムの書き換えを行うものであり、
複数の前記ノードのいずれかに対する前記消去要求コマンドを最初に受信したときに、前記カウント値を初期化する請求項２又は３に記載の車載制御装置。
【請求項５】
前記車載制御システム（１１０）に含まれている複数の前記ノードは、異なる通信バスに接続された前記ノードを含んでおり、異なる前記通信バスに接続された前記ノードどうしが中継ノード（３００）を介して通信可能に構成されており、
前記中継ノードを介して前記完了情報を取得可能に構成されている請求項１乃至４のいずれか一項に記載の車載制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車載制御装置、及び車載制御装置を含む車載ネットワークに関する。
【背景技術】
【０００２】
従来、車載制御装置の一例として、特許文献１に開示されたマイクロコンピュータがある。このマイクロコンピュータは、ＣＰＵが書き換えプログラムを実行すると、最初にフラッシュメモリのＦＬＡＳＨステータスをクリアしてから、このメモリの全領域の書換えを行ない、最後にＦＬＡＳＨステータスに書き換え完了コードを書込む。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１６５７２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、車載制御装置は、複数のノードが連携して制御を行う車載制御システムにおける、一つのノードである場合が考えられる。このような車載制御システムでは、制御プログラムが新しい制御プログラムに書き換えられたノードと、制御プログラムが新しい制御プログラムに書き換えられていないノードとが混在することも考えられる。この場合、車載制御システムは、制御プログラムが書き換えられたノードと、制御プログラムが書き換えられていないノードとで制御が実行されてしまい、新しい制御プログラムに応じた制御を行うことができないという問題がある。
【０００５】
本開示は、上記問題点に鑑みなされたものであり、新しい制御プログラムに書き換えられたノードと新しい制御プログラムに書き換えられていないノードが混在した状態で車載制御システムにおける制御が実行されてしまうことを抑制できる車載制御装置、及び車載制御装置を含む車載ネットワークを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために本開示は、
制御プログラムを実行して制御を行う制御モードと、制御プログラムに基づいた制御を行うことなくリプロプログラムを実行して制御プログラムの書き換えを行うリプログモードとの実行モードを有した複数のノード（１０〜４０、１０ａ）を含み、各ノードが制御モード時に連携して制御を行う車載制御システム（１００、１１０、１２０、１３０）における、ノードの実行モードを決定する車載制御装置であり、
車載制御システムに含まれている複数のノードの一つである車載制御装置であって、
複数のノードの全てが、制御プログラムの書き換えが完了しているか否かを判定する判定部（Ｓ１１、Ｓ１２、Ｓ１２ａ〜Ｓ１２ｃ）と、
全てのノードが制御プログラムの書き換えを完了していると判定部が判定した場合、実行モードを制御モードに決定し、全てのノードが制御プログラムの書き換えを完了していると判定部が判定していない場合、実行モードをリプログモードに決定する決定部（Ｓ１３、Ｓ１４、Ｓ１３ａ、Ｓ１４ａ）と、を備え、
判定部（Ｓ１１、Ｓ１２、Ｓ１２ａ、Ｓ１２ｂ）は、自ノードで制御プログラムの書き換えが完了していること、及び他のノードの夫々から取得した制御プログラムの書き換えが完了していることを示す完了情報とに基づいて、複数のノードの全てが、制御プログラムの書き換えが完了しているか否かを判定し、
書換装置から制御プログラムの書き換え用データを受信して、制御プログラムの書き換えを行うものであり、
自ノードで制御プログラムの書き換えが完了している場合、及び他のノードの夫々から完了情報を取得するたびに、制御プログラムの書き換えが完了していることを書換装置に通知する個別通知部（Ｓ３８）を備えていることを特徴とする。
【０００７】
このように、車載制御装置は、全ノードが、制御プログラムの書き換えが完了しているか否かを判定する。つまり、車載制御装置は、自ノードだけではなく、他ノードが制御プログラムの書き換えが完了しているか否かを判定する。そして、車載制御装置は、全ノードが制御プログラムの書き換えを完了していると判定した場合、実行モードを制御モードに決定する。一方、車載制御装置は、全ノードが制御プログラムの書き換えを完了していると判定していない場合、すなわち、少なくとも一つのノードが制御プログラムの書き換えを完了していない場合、実行モードをリプログモードに決定する。
【０００８】
よって、車載制御装置は、複数のノードにおいて新プログラムのノードと旧プログラムのノードとが混在している場合に、自ノードの実行モードをリプログモードに決定する。このため、車載制御装置は、新プログラムのノードと旧プログラムのノードが混在した車載制御システムで、制御系統における制御が実行されることを抑制できる。
【００１３】
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１４】
【図１】第１実施形態における車載制御システムの概略構成を示すブロック図である。
【図２】第１実施形態における車載制御装置の概略構成を示すブロック図である。
【図３】第１実施形態における第１ノードのＲＯＭの構成を示すイメージ図である。
【図４】第１実施形態における第２ノードのＲＯＭの構成を示すイメージ図である。
【図５】第１実施形態における第１ノードの起動処理を示すフローチャートである。
【図６】第１実施形態における第２ノードの起動処理を示すフローチャートである。
【図７】第１実施形態における第１ノードの処理動作を示すフローチャートである。
【図８】図７のＡＢ間の処理動作を示すフローチャートである。
【図９】第１実施形態における第２ノードの処理動作を示すフローチャートである。
【図１０】第１実施形態における車載制御システムの処理動作を示すシーケンス図である。
【図１１】第１実施形態における書換ツール４００の処理動作を示すフローチャートである。
【図１２】第２実施形態における第１ノードの起動処理を示すフローチャートである。
【図１３】第３実施形態における第１ノードの起動処理を示すフローチャートである。
【図１４】第４実施形態における車載制御システムの概略構成を示すブロック図である。
【図１５】第４実施形態における中継ノードの中継情報を示す図面である。
【図１６】第５実施形態における車載制御システムの概略構成を示すブロック図である。
【図１７】第５実施形態における第１ノードの起動処理を示すフローチャートである。
【図１８】第７実施形態における車載制御システムの概略構成を示すブロック図である。
【発明を実施するための形態】
【００１５】
以下において、図面を参照しながら、発明を実施するための複数の形態を説明する。各形態において、先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において、構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を参照し適用することができる。
【００１６】
（第１実施形態）
図１〜図１１を用いて、第１実施形態に関して説明する。なお、本実施形態では、車載制御装置として第１ノード１０を採用する。
【００１７】
まず、図１〜図４を用いて、第１ノード１０の構成、及び第１ノード１０を含む車載制御システム１００の構成に関して説明する。車載制御システム１００は、車両に搭載可能に構成されている。また、車載制御システム１００は、車両に設けられた車載ネットワークの一部として設けられていると言える。
【００１８】
車載制御システム１００は、車両における複数の制御系統の一つを統合的に制御するために、第１ノード１０を含む複数のノードを備えて構成されている。制御系統とは、例えば、エンジン制御系やボデー制御系などである。よって、車載制御システム１００としては、例えばエンジン制御系のシステムを採用できる。
【００１９】
車載制御システム１００は、例えば、第１ノード１０に加えて、第２ノード２０、第３ノード３０を備えて構成されている。つまり、本実施形態では、車載制御システム１００に含まれている複数のノード１０〜３０の一つである第１ノード１０が車載制御装置に相当すると言える。なお、車載制御システム１００は、同一制御系統におけるノードとして、第１ノード１０、第２ノード２０、第３ノード３０を含んでいると言える。第１ノード１０、第２ノード２０、第３ノード３０は、制御系統の制御を実行するための関連するノードであるため関連ノードと言える。
【００２０】
各ノード１０〜３０は、実行モードとして、制御プログラムを実行して制御を行う制御モードと、制御プログラムに基づいた制御を行うことなくリプロプログラムを実行して制御プログラムの書き換えを行うリプログモードとを有している。なお、制御モードは、制御プログラム実行モードと言える。また、リプログモードは、リプロプログラム実行モードと言える。また、以下においては、制御プログラムの書き換えを、単に書き換えとも記載する。
【００２１】
また、車載制御システム１００は、第１ノード１０と第２ノード２０と第３ノード３０が通信バス２００を介して通信可能に構成されている。つまり、各ノード１０〜３０は、自ノード１０〜３０が接続されている通信バス２００を介して通信を行うことができる。
【００２２】
車載制御システム１００は、車両の外部に設けられた書換ツール４００と通信可能に構成されている。つまり、車載制御システム１００は、例えば第１ノード１０が書換ツール４００と通信可能に構成されている。第２ノード２０と第３ノード３０は、通信バス２００を介して第１ノード１０と通信可能に構成されているため、第１ノード１０を介して書換ツール４００と通信可能に構成されていると言える。このため、車載制御システム１００は、マスタとしての第１ノード１０と、スレーブとしての第２ノード２０及び第３ノード３０を備えていると言える。
【００２３】
各ノード１０〜３０の実行モードが制御モードである場合、車載制御システム１００は、各ノード１０〜３０が制御プログラムを実行することで、各ノード１０〜３０が制御系統における制御を連携して行う。
【００２４】
一方、各ノード１０〜３０の実行モードがリプログモードである場合、車載制御システム１００は、各ノード１０〜３０がリプロプログラムを実行することで、各ノード１０〜３０の制御プログラムが書き換えられる。このとき、車載制御システム１００は、第１ノード１０が書換ツール４００と通信を行いつつ、第２ノード２０及び第３ノード３０とも通信を行うことで、制御プログラムが書き換えられる。
【００２５】
つまり、車載制御システム１００は、全ノード１０〜３０が制御プログラムを実行することで制御系統における制御を行うことができる。例えば、全ノード１０〜３０の少なくとも一つのノードにおける実行モードがリプロプグモードであった場合、車載制御システム１００は、そのノードがリプロプログラムを実行するため、制御系統における制御を行うことができない。また、全ノード１０〜３０の一つのノードがリプロプグモードを実行し、他のノードが制御プログラムを実行した場合、各ノード１０〜３０は、制御プログラムを実行した際に行なわれる通信が途絶するため、制御系統における制御を行うことができない。
【００２６】
なお、上記のように、車載制御システム１００は、各ノード１０〜３０が連携して制御を行うものである。このため、制御システム１００は、システム仕様の変更時など、全ノード１０〜３０の制御プログラムを書き換える必要がある。つまり、車載制御システム１００は、例えば、第１ノード１０と第３ノード３０が新プログラムで、第２ノードだけが旧プログラムのように、新プログラムのノードと旧プログラムのノードとが混在しないようにする必要がある。
【００２７】
これは、車載制御システム１００は、新プログラムのノードと旧プログラムのノードとが混在した場合、制御系統として、新プログラムに応じた制御を行うことができなくなるためである。よって、車載制御システム１００は、全ノード１０〜３０で制御プログラムの書き換えを確実に実施する必要がある。言い換えると、車載制御システム１００は、全ノード１０〜３０で新プログラムに揃える必要がある。
【００２８】
なお、新プログラムは、新しい制御プログラムに書き換えられた後の制御プログラムである。一方、旧プログラムは、新しい制御プログラムに書き換えられる前の制御プログラムである。
【００２９】
また、新プログラムは、新しいバージョンの制御プログラムと言える。よって、旧プログラムは、新プログラムよりも古いバージョンの制御プログラムと言える。従って、新プログラムと旧プログラムは、バージョン違いの制御プログラムと言える。
【００３０】
第１ノード１０は、図２に示すように、ＣＰＵ１３、ＲＯＭ１４、ＲＡＭ１５、データ送受信部１６などを備えて構成されている。ＣＰＵ１３は、後程説明するＲＯＭ１４に予め記憶された制御プログラムやリプロプログラムを実行する。ＲＯＭ１４には、制御プログラム、リプログラム、第１フラグ１１、第２フラグ１２が記憶されている。ＲＡＭ１５は、ＣＰＵ１３が演算処理を行う際に、演算結果などを一時的に記憶するための記憶部である。データ送受信部１６は、通信バス２００を介して、第２ノード２０、第３ノード３０、及び書換ツール４００と通信を行うための通信部である。このように、第１ノード１０は、ＥＣＵ（Electronic Control Unit）とも言える。
【００３１】
第２ノード２０及び第３ノード３０は、第１ノード１０と同様に、ＣＰＵ１３、ＲＯＭ１４、ＲＡＭ１５、データ送受信部１６などを備えて構成されている。このため、第２ノード２０及び第３ノード３０の構成に関する図示や詳細な説明は、省略する。第１ノード１０と、第２ノード２０と第３ノード３０とは、主に、制御プログラムの内容、つまり制御内容、及びＲＯＭ１４の記憶内容が異なる。なお、第３ノード３０は、第２ノード２０と制御内容が異なるものの、同様の構成を有している。よって、以下においては、第２ノード２０を代表例として用いて説明する。
【００３２】
なお、各ノード１０〜３０の処理動作に関しては、後程説明する。また、第２ノード２０と第３ノード３０の処理動作に関しても、第２ノード２０を代表例として用いて説明する。
【００３３】
ここで、図３、図４を用いて、第１ノード１０のＲＯＭ１４における記憶内容と、第２ノード２０のＲＯＭ１４の記憶内容に関して説明する。
【００３４】
図３に示すように、第１ノード１０のＲＯＭ１４は、書き換え領域に制御プログラム、第１フラグ１１、第２フラグ１２が記憶されており、非書き換え領域にリプロプログラムが記憶されている。また、第１ノード１０のＲＯＭ１４は、非書き換え領域に、関連ノードを識別するＩＤ情報が記憶されている。
【００３５】
一方、図４に示すように、第２ノード２０のＲＯＭ１４には、書き換え領域に制御プログラム、第１フラグ２１が記憶されており、非書き換え領域にリプログラムが記憶されている。つまり、第２ノード２０のＲＯＭ１４には、第２フラグ１２が記憶されていない。なお、図１に示すように、第３ノード３０の第１フラグには、符号３１を付与している。
【００３６】
第１フラグ１１、２１は、自ノードにおける書き換え完了可否を判断するための情報である。第１フラグ１１、２１は、書き換えが完了していることを示す情報と、書き換えが完了していないことを示す情報のいずれかが設定されている。例えば、書き換えが完了していることを示す情報として１、書き換えが完了していないことを示す情報として０を採用できる。なお、第１フラグ１１は、第１ノード１０によって設定される。一方、第２フラグ２１は、第２ノード２０によって設定される。
【００３７】
よって、第１ノード１０は、第１フラグ１１を確認することで、自ノード１０における書き換えが完了しているか否かを判定できる。同様に、第２ノード２０は、第２フラグ２１を確認することで、自ノード２０における書き換えが完了しているか否かを判定できる。
【００３８】
第２フラグ１２は、自ノード１０だけではなく第２ノード２０及び第３ノード３０における書き換え完了可否を判断するための情報である。つまり、第２フラグ１２は、車載制御システム１００に含まれている全ノード１０〜３０における書き換えが完了しているか否かを判断するための情報である。本実施形態では、一例として、書き換えが完了したノードをカウントしたカウント値である第２フラグ１２を採用する。よって、第１ノード１０は、第２フラグ１２を確認することで、第１ノード１０、第２ノード２０、第３ノード３０の全てにおいて書き換えが完了しているか否かを判定できる。
【００３９】
書換ツール４００は、書換装置に相当する。書換ツール４００は、ディーラや工場の作業者によって操作可能に構成されている。書換ツール４００は、作業者による操作に応じて、書き換えを行う。書換ツール４００は、書き換えを行う際に、ケーブルとコネクタなどを介して車両と接続される。また、書換ツール４００は、書き換えが完了した後など書き換えを行わないとき車両から外されている。なお、書換ツール４００は、ライタとも言える。
【００４０】
ここで、各ノード１０〜３０の処理動作の前に、図１０、図１１を用いて、書換ツール４００の処理動作に関して説明する。書換ツール４００は、車両と接続された状態で、作業者によって書き換えが指示された場合に、図１１のフローチャートを実行する。なお、後程説明するが、各ノード１０〜３０は、書換ツール４００からの各要求に応答してＡＣＫを返信する。
【００４１】
ステップＳ６０では、消去要求コマンドを送信する。書換ツール４００は、図１０に示すように、第１ノード１０〜第３ノード３０の夫々に対して、個別に消去要求コマンドを送信する。書換ツール４００は、各ノードに対して消去要求コマンドを送信する際に、送信対象のノードのＩＤ情報と共に送信する。書換ツール４００は、例えば、第１ノード１０に対して消去要求コマンドを送信する場合、第１ノード１０のＩＤ情報と消去要求コマンドとを送信する。この消去要求コマンドは、ＲＯＭ１４に記憶されている制御プログラムの消去を要求するコマンドである。
【００４２】
ステップＳ６１では、消去要求コマンドに対する応答を受信か否かを判定する。書換ツール４００は、消去要求コマンドに対する応答、すなわちＡＣＫを受信したか否かを判定する。そして、書換ツール４００は、ＡＣＫを受信したと判定した場合はステップＳ６２へ進み、ＡＣＫを受信したと判定してない場合はステップＳ６１を繰り返す。
【００４３】
なお、書換ツール４００は、消去要求コマンドを送信してから所定時間、ＡＣＫを受信できなかった場合、図１１の処理を終了するものであってもよい。つまり、書換ツール４００は、カウントアウト処理を行ってもよい。また、書換ツール４００は、以下の判定においてもカウントアウト処理を行ってもよい。さらに、後程説明する各ノード１０〜３０に関しても、カウントアウト処理を行ってもよい。
【００４４】
ステップＳ６２では、書き換え要求コマンドを送信する。書換ツール４００は、図１０に示すように、第１ノード１０〜第３ノード３０の夫々に対して、個別に書き換え要求コマンドを送信する。書換ツール４００は、消去要求コマンドを送信する場合と同様に、送信対象のノードのＩＤ情報と共に、書き換え要求コマンドを送信する。この書き換え要求コマンドは、制御プログラムが消去されたＲＯＭ１４に、新たな制御プログラムの書き込みを要求するコマンドである。
【００４５】
ステップＳ６３では、書き換え要求コマンドに対する応答を受信か否かを判定する。書換ツール４００は、書き換え要求コマンドに対するＡＣＫを受信したか否かを判定する。そして、書換ツール４００は、ＡＣＫを受信したと判定した場合はステップＳ６４へ進み、ＡＣＫを受信したと判定してない場合はステップＳ６３を繰り返す。なお、書換ツール４００は、書き換え要求コマンドに対するＡＣＫを受信した後、対象ノードに対して、対象ノードのＩＤ情報と新たな制御プログラムのデータとを送信する。
【００４６】
ステップＳ６４では、ベリファイ要求コマンドを送信する。書換ツール４００は、図１０に示すように、第１ノード１０〜第３ノード３０の夫々に対して、個別にベリファイ要求コマンドを送信する。書換ツール４００は、消去要求コマンドを送信する場合と同様に、送信対象のノードのＩＤ情報と共に、ベリファイ要求コマンドを送信する。このベリファイ要求コマンドは、新たな制御プログラムが正常に書き込まれたか否かを検証することを要求するコマンドである。
【００４７】
ステップＳ６５では、ベリファイ要求コマンドに対する応答を受信か否かを判定する。書換ツール４００は、リファイ要求コマンドに対するＡＣＫを受信したか否かを判定する。そして、書換ツール４００は、ＡＣＫを受信したと判定した場合はステップＳ６６へ進み、ＡＣＫを受信したと判定してない場合はステップＳ６５を繰り返す。
【００４８】
ステップＳ６６では、第２フラグ設定完了通知を受信したか否かを判定する。以下においては、第２フラグ設定完了通知を、単に完了の通知とも称する。また、第２フラグ設定完了の通知は、各ノード１０〜３０の夫々で書き換えが完了したことを示す情報である。書換ツール４００は、完了の通知を受信したと判定した場合はステップＳ６７へ進み、完了の通知を受信したと判定してない場合はステップＳ６６を繰り返す。なお、後程説明するが、第１ノード１０は、第２フラグ１２の設定が完了するたびに、すなわち第２フラグ１２にカウント値を記憶するたびに、完了の通知を書換ツール４００に送信する。
【００４９】
ステップＳ６７では、全ノードの書き換え完了か否かを判定する。書換ツール４００は、全ノード１０〜３０の完了の通知を受信した場合に全ノードの書き換えが完了したと判定し、全ノード１０〜３０の完了の通知を受信してない場合に全ノードの書き換えが完了していないと判定する。そして、書換ツール４００は、全ノード１０〜３０の書き換えが完了したと判定した場合は図１１の処理を終了して、全ノード１０〜３０の書き換えが完了したと判定してない場合はステップＳ６０へ戻る。つまり、書換ツール４００は、全ノード１０〜３０の書き換えが完了するまで、図１１のフローチャートを実行する。
【００５０】
ここで、図５〜図１０を用いて、各ノード１０〜３０の処理動作に関して説明する。
【００５１】
まず、図５を用いて、第１ノード１０の起動処理に関して説明する。第１ノード１０は、例えば、イグニッションスイッチがオンになると、図５のフローチャートを実行する。
【００５２】
ステップＳ１０では、電源オン及びリセット解除する。第１ノード１０は、自ノード１０の電源をオンすると共に、自ノード１０のリセットを解除する。
【００５３】
ステップＳ１１では、第１フラグ１１＝ＯＫであるか否かを判定する。第１ノード１０は、第１フラグ１１の記憶内容を確認して、第１フラグ１１＝ＯＫであるか否か、すなわち、自ノード１０における書き換えが完了しているか否かを判定する。第１ノード１０は、第１フラグ１１が１の場合に第１フラグ１１＝ＯＫ、すなわち、書き換えが完了しているとみなしてステップＳ１２へ進む。また、第１ノード１０は、第１フラグ１１が０の場合に第１フラグ１１＝ＯＫではない、すなわち、書き換えが完了していないとみなしてステップＳ１４へ進む。
【００５４】
ステップＳ１２では、第２フラグ１２＝全書き換え対象ノード数であるか否かを判定する（判定部）。第１ノード１０は、第２フラグ１２の記憶内容を確認して、第２フラグ１２＝全書き換え対象ノード数であるか否か、すなわち、書き換え対象ノードの全てにおいて書き換えが完了しているか否かを判定する。ここで、全書き換え対象ノードとは、車載制御システムに含まれている第１ノード１０、第２ノード２０、第３ノード３０である。よって、全書き換え対象ノード数は３である。
【００５５】
第１ノード１０は、第２フラグ１２のカウント値が３である場合に、第２フラグ＝全書き換え対象ノード数、すなわち、書き換え対象ノード１０〜３０の全てにおいて書き換えが完了しているとみなしてステップＳ１３へ進む。なお、書き換え対象ノード１０〜３０の全てにおいて書き換えが完了している状態は、全ノード１０〜３０が新プログラムに書き換えられている状態とみなせる。
【００５６】
一方、第１ノード１０は、第２フラグ１２のカウント値が３でない場合に、第２フラグ＝全書き換え対象ノード数ではない、すなわち、全書き換え対象ノード１０〜３０のうち少なくとも一つで書き換えが完了していないとみなしてステップＳ１４へ進む。なお、書き換え対象ノード１０〜３０のうち少なくとも一つで書き換えが完了していない状態は、全ノード１０〜３０のうち少なくとも一つが旧プログラムのままで、残りが新プログラムに書き換えられている状態とみなせる。
【００５７】
後程詳しく説明するが、第１ノード１０は、自ノード１０で書き換えが完了した場合、及び、第２ノード２０や第３ノード３０から完了の通知を受信した場合に第２フラグ１２のカウント値をカウントアップする。よって、第１ノード１０は、自ノード１０で書き換えが完了していること、及び他のノード２０、３０の夫々から取得した完了の通知とに基づいて、全ノード１０〜３０での書き換えが完了しているか否かを判定すると言える。つまり、第１ノード１０は、ステップＳ１２によって、複数のノード１０〜３０の全てが、書き換えを完了しているか否かを判定する（判定部）。
【００５８】
このように、第１ノード１０は、カウント値によって、複数のノード１０〜３０の全てが書き換えを完了しているか否かを判定している。このため、第１ノード１０は、情報量が増大することを抑制しつつ、複数のノード１０〜３０の全てが書き換えを完了しているか否かを判定できる。つまり、第１ノード１０は、書き換えが完了したことを示す情報を各ノード１０〜３０に対応して個別に記憶しておくよりも、情報量を減らすことができ、且つ複数のノード１０〜３０の全てが書き換えを完了しているか否かを判定できる。
【００５９】
また、第１ノード１０は、上記のように車載制御システム１００に含まれている一つのノードである。よって、第１ノード１０は、ステップＳ１２の判定を行うことで、車載制御システム１００の制御に影響する全ノード１０〜３０が新プログラムに書き換えられているか否かを判定できる。
【００６０】
ステップＳ１３では、制御プログラム実行モードに設定する（決定部）。一方、ステップＳ１４では、リプロプログラム実行モードに設定する（決定部）。つまり、第１ノード１０は、全ノード１０〜３０が制御プログラムの書き換えを完了している場合、実行モードを制御モードに決定する。そして、第１ノード１０は、全ノード１０〜３０が制御プログラムの書き換えを完了していると判定していない場合、実行モードをリプログモードに決定する。
【００６１】
ステップＳ１５では、電源オフであるか否かを判定する。そして、第１ノード１０は、電源オフと判定した場合は図５の処理を終了し、電源オフと判定してない場合はステップＳ１１へ戻る。
【００６２】
なお、本実施形態では、ステップＳ１２の判定で、全ノード１０〜３０で書き換えが完了しているか否かを判定する例を採用している。従って、本実施形態では、ステップＳ１１を省略することもできる。この場合、第１ノード１０は、起動処理時に、第１フラグ１１が１であるか否かの判定を行わなくてもよい。しかしながら、第１ノード１０は、ステップＳ１１の判定を行うことで、自ノード１０での書き換えが完了していない場合に、第２フラグ１２を確認することなくステップＳ１４に進むことができる。さらに、後程説明するが、他のノード２０、３０は、ステップＳ１０と同様に、自ノードでの書き換えが完了しているか否かを判定する。よって、第１ノード１０は、ステップＳ１１の判定を行うことで、他のノード２０、３０との変更点を少なくすることができる。
【００６３】
次に、図６を用いて、第２ノード２０の起動処理に関して説明する。
【００６４】
ステップＳ２０は、ステップＳ１０と同様に、自ノード２０の電源オン及びリセット解除を行う。ステップＳ２１では、ステップＳ１１と同様に、第１フラグ２１＝ＯＫであるか否かを判定する。なお、第２ノード２０は、第１ノード１０とは異なり、第２フラグを有していない。よって、第２ノード２０は、第１フラグ２１＝ＯＫであると判定した場合はステップＳ２２へ進み、ステップＳ２２で実行モードを制御モードに決定する。また、第２ノード２０は、第１フラグ２１＝ＯＫであると判定していない場合はステップＳ２３へ進み、ステップＳ２３で実行モードをリプログモードに決定する。
【００６５】
なお、ステップＳ２４では、ステップＳ１５と同様に、電源オフであるか否かを判定する。そして、第２ノード２０は、電源オフと判定した場合は図６の処理を終了し、電源オフと判定してない場合はステップＳ２１へ戻る。
【００６６】
次に、図７、図８を用いて、第１ノード１０における制御プログラムを書き換える際の処理動作に関して説明する。第１ノード１０は、例えば、イグニッションスイッチがオンになると、図７のフローチャートを実行する。図７に示す処理動作を行う場合、第１ノード１０の実行モードは、リプログモードである。詳述すると、第１ノード１０は、例えばリプログモード移行後に、消去要求コマンドが送信される。なお、第１ノード１０は、この処理動作中に第１フラグ１１及び第２フラグ１２の設定を行う。また、本実施形態では、図７の処理がスタートした時点で、第１フラグ１１に１が設定されており、第２フラグ１２のカウント値が全ノード数３となっていることを前提とする。
【００６７】
ステップＳ３０では、電源オン及びリセット解除する。第１ノード１０は、自ノード１０の電源をオンすると共に、自ノード１０のリセットを解除する。
【００６８】
ステップＳ３１では、自ノード１０への消去要求コマンドを受信したか否かを判定する。第１ノード１０は、消去要求コマンドを受信した場合、消去要求コマンドと共に受信したＩＤ情報に基づいて、自ノード１０への消去要求コマンドを受信したか否かを判定する。第１ノード１０は、自ノード１０への消去要求コマンドを受信したと判定した場合、ステップＳ３２へ進み、自ノード１０への消去要求コマンドを受信したと判定してない場合、図８のステップＳ４２へ進む。ステップＳ４２以降の処理に関しては、後程説明する。
【００６９】
ステップＳ３２では、第２フラグ１２＝全書き換え対象ノード数であるか否かを判定する。第１ノード１０は、第２フラグ１２のカウント値が３であると判定した場合にステップＳ３３へ進み、第２フラグ１２のカウント値が３であると判定しなかった場合にステップＳ４１へ進む。上記のように、第２フラグ１２のカウント値は、図７の処理がスタートした時点で３となっている。よって、第１ノード１０は、ＹＥＳ判定の場合、最初に自ノード１０が書き換えを行うとみなすことができ、ＮＯ判定の場合、２番目以降に自ノード１０が書き換えを行うとみなすことができる。
【００７０】
ステップＳ４１では、第１フラグ１１＝ＮＧ、第２フラグ１２＝Ｎとする。第１ノード１０は、消去要求コマンドを受信して、２番目以降に自ノード１０の書き換えを行うとみなした場合、第１フラグ１１に０を設定し、第２フラグ１２のカウント値を前回値に保持する。つまり、第１ノード１０は、２番目以降に自ノード１０が書き換えを行う場合、第１フラグ１１及び第２フラグ１２を更新しない。
【００７１】
一方、ステップＳ３３では、第１フラグ１１＝ＮＧ、第２フラグ１２＝０とする。つまり、第１ノード１０は、消去要求コマンドを受信して、最初に自ノード１０が書き換えを行うとみなした場合、第１フラグ１１をリセットし、すなわち第１フラグ１１に０を設定し、第２フラグ１２のカウント値をリセットする。このように、第１ノード１０は、複数のノード１０〜３０のいずれかに対する消去要求コマンドを最初に受信したときに、カウント値を初期化する。
【００７２】
第１ノード１０は、自ノード１０で制御プログラムの書き換えが完了していること、及び他のノード２０、３０から完了情報を取得したことをカウントし、第２フラグ１２のカウント値として記憶する。このため、第１ノード１０は、消去要求コマンドを最初に受信したときにカウント値を初期化しておくことで、全ノード１０〜３０における書き換えの進捗を確認できる。完了情報に関しては、後程説明する。
【００７３】
なお、第１ノード１０は、図１０に示すように、消去要求コマンドを受信すると、第１フラグ１１と第２フラグ１２をリセットすると共に、制御プログラムを消去し、且つ書換ツール４００にＡＣＫを送信する。その後、第１ノード１０は、図１０に示すように、書換ツール４００から書き換え要求コマンドを受信するとＡＣＫを返信し、書換ツール４００から新たな制御プログラムのデータと受信する。このデータは、制御プログラムの書き換え用データである。
【００７４】
そして、ステップＳ３４では、自ノード書き換えを行う。第１ノード１０は、受信した新たな制御プログラムのデータをＲＯＭ１４の書き換え領域に書き込む（書き換え処理）。
【００７５】
ステップＳ３５では、自ノードの書き換えが完了したか否かを判定する。第１ノード１０は、自ノード１０の書き換えが完了したと判定した場合はステップＳ３６へ進み、自ノード１０の書き換えが完了したと判定しなかった場合はステップＳ３５を繰り返す。つまり、第１ノード１０は、新たな制御プログラムの書き込みが完了するまでステップＳ３５の判定を繰り返す。なお、第１ノード１０は、図１０に示すように、書き換え処理が終了すると書換ツール４００にＡＣＫを送信すると共に、書換ツール４００からベリファイ要求コマンドを受信する。
【００７６】
そして、ステップＳ３６では、第１フラグ１１＝ＯＫ、第２フラグ１２＝＋１とする。つまり、第１ノード１０は、自ノード１０の書き換えが完了したことで、第１フラグ１１に１を設定し、第２フラグ１２のカウント値をカウントアップする。その後、ステップＳ３７では、自ノード１０へのベリファイ要求コマンドに対する応答（ＡＣＫ）を書換ツール４００へ送信する。
【００７７】
ステップＳ３８では、第２フラグ設定完了通知を書換ツール４００へ送信する（個別通知部）。つまり、第１ノード１０は、自ノード１０で書き換えが完了している場合、制御プログラムの書き換えが完了していることを書換ツール４００に通知する。また、第１ノード１０は、他のノード２０、３０の夫々から、ベリファイ要求コマンドに対するＡＣＫを取得するたびに、書き換えが完了していることを書換ツール４００に通知する。つまり、第１ノード１０は、第２フラグ１２の設定が完了するたびに、すなわち第２フラグ１２にカウント値をカウントアップするたびに、完了の通知を書換ツール４００に送信する。なお、他のノード２０、３０の夫々から送信された、ベリファイ要求コマンドに対するＡＣＫは、制御プログラムの書き換えが完了していることを示す情報であり、上記完了情報に相当する。
【００７８】
このように、第１ノード１０は、各ノード１０〜３０での書き換えが完了するたびに、書換ツール４００に対して完了の通知を行うため、書換ツール４００に書き換え状況を把握させることができる。つまり、書換ツール４００は、第１ノード１０からの完了の通知によって、各ノード１０〜３０における書き換えの進捗を把握でき、書き換え完了ノードと未完了ノードとを容易に切り分けることができる。
【００７９】
ステップＳ３９では、全書き換え対象ノード数＝第２フラグの値であるか否かを判定する。第１ノード１０は、ステップＳ３２と同様に、第２フラグ１２のカウント値が３であるか否かを判定する。そして、第１ノード１０は、第２フラグ１２のカウント値が３であると判定した場合にステップＳ４０へ進み、第２フラグ１２のカウント値が３であると判定しなかった場合にステップＳ３１へ戻る。
【００８０】
ステップＳ４０では、電源オフであるか否かを判定する。第１ノード１０は、電源オフであると判定しなかった場合はステップＳ３１へ戻り、電源オフであると判定した場合は図７の処理を終了する。
【００８１】
ここで、図８のフローチャートを用いて、ステップＳ４２以降の処理に関して説明する。
【００８２】
ステップＳ４２では、他ノード２０、３０への消去要求コマンドを受信したか否かを判定する。第１ノード１０は、消去要求コマンドを受信した場合、消去要求コマンドと共に受信したＩＤ情報に基づいて、他ノード２０、３０への消去要求コマンドを受信したか否かを判定する。第１ノード１０は、他ノード２０、３０への消去要求コマンドを受信したと判定した場合、ステップＳ４３へ進み、他ノード２０、３０への消去要求コマンドを受信したと判定してない場合、ステップＳ４２を繰り返す。
【００８３】
ステップＳ４３では、第２フラグ１２＝全書き換え対象ノード数であるか否かを判定する。第１ノード１０は、第２フラグ１２のカウント値が３であると判定した場合にステップＳ４４へ進み、第２フラグ１２のカウント値が３であると判定しなかった場合にステップＳ４７へ進む。上記のように、第２フラグ１２のカウント値は、図７の処理がスタートした時点で３となっている。よって、第１ノード１０は、ＹＥＳ判定の場合、最初に他のノード２０、３０が書き換えを行うとみなすことができ、ＮＯ判定の場合、２番目以降に他のノード２０、３０が書き換えを行うとみなすことができる。
【００８４】
ステップＳ４４では、第１フラグ１１＝ＯＫ、第２フラグ１２＝０とする。つまり、第１ノード１０は、消去要求コマンドを受信して、最初に他ノード２０、３０が書き換えを行うとみなした場合、第２フラグ１２のカウント値をリセットする。このように、第１ノード１０は、複数のノード１０〜３０のいずれかに対する消去要求コマンドを最初に受信したときに、カウント値を初期化する。よって、第１ノード１０は、消去要求コマンドを最初に受信したときにカウント値を初期化しておくことで、全ノード１０〜３０における書き換えの進捗を確認できる。しかしながら、第１ノード１０は、受信した消去要求コマンドが自ノード１０に対する要求ではないため、第１フラグ１１をリセットしない。
【００８５】
一方、ステップＳ４７では、第１フラグ１１＝ＯＫ、第２フラグ１２＝Ｎとする。第１ノード１０は、消去要求コマンドを受信して、２番目以降に他ノード２０、３０が書き換えを行うとみなした場合、第１フラグ１１にリセットすることなく、第２フラグ１２のカウント値を前回値に保持する。つまり、第１ノード１０は、２番目以降に他ノード２０、３０が書き換えを行う場合、第１フラグ１１及び第２フラグ１２を更新しない。
【００８６】
ステップＳ４５では、他ノードの書き換えが完了したか否かを判定する。第１ノード１０は、他ノード２０、３０の書き換えが完了したと判定した場合、ステップＳ４６へ進み、他ノード２０、３０の書き換えが完了したと判定してない場合、ステップＳ４５を繰り返す。
【００８７】
つまり、第１ノード１０は、第２ノード２０への消去要求コマンドを受信しており、且つ、第２ノード２０からベリファイ要求コマンドに対するＡＣＫを受信した場合、第２ノード２０での書き換えが完了したと判定して、ステップＳ４６へ進む。また、第１ノード１０は、第２ノード２０への消去要求コマンドを受信しており、且つ、第２ノード２０からベリファイ要求コマンドに対するＡＣＫを受信してない場合、第２ノード２０での書き換えが完了したと判定せずに、ステップＳ４５を繰り返す。
【００８８】
同様に、第１ノード１０は、第３ノード３０への消去要求コマンドを受信しており、且つ、第３ノード３０からベリファイ要求コマンドに対するＡＣＫを受信した場合、第３ノード３０での書き換えが完了したと判定して、ステップＳ４６へ進む。また、第１ノード１０は、第３ノード３０への消去要求コマンドを受信しており、且つ、第３ノード３０からベリファイ要求コマンドに対するＡＣＫを受信してない場合、第３ノード３０での書き換えが完了したとせずに、ステップＳ４５を繰り返す。
【００８９】
ステップＳ４６では、第１フラグ１１＝ＯＫ、第２フラグ１２＝Ｎ＋１とする。第１ノード１０は、他ノード２０、３０での書き換えが完了したと判定した場合、第２フラグ１２のカウント値をカウントアップする。つまり、第１ノード１０は、第２ノード２０での書き換えが完了したと判定した場合、及び第３ノード３０での書き換えが完了したと判定した場合、第２フラグ１２のカウント値をカウントアップする。しかしながら、第１ノード１０は、自ノード１０における書き換えではないため、第１フラグ１１を更新しない。
【００９０】
次に、図９を用いて、第２ノード２０における制御プログラムを書き換える際の処理動作に関して説明する。第２ノード２０は、例えば、イグニッションスイッチがオンになると、図９のフローチャートを実行する。図９は、第２ノード２０におけるリプロモード時の処理動作を示す。図９に示す処理動作を行う場合、第２ノード２０の実行モードは、リプログモードである。詳述すると、第２ノード２０は、例えばリプログモード移行後に、消去要求コマンドが送信される。なお、第２ノード２０は、この処理動作中に第１フラグ２１の設定を行う。また、本実施形態では、図９の処理がスタートした時点で、第１フラグ２１に１が設定されていることを前提とする。
【００９１】
ステップＳ５０では、電源オン及びリセット解除する。第２ノード２０は、自ノード２０の電源をオンすると共に、自ノード２０のリセットを解除する。
【００９２】
ステップＳ５１では、自ノード２０への消去要求コマンドを受信したか否かを判定する。第２ノード２０は、消去要求コマンドを受信した場合、消去要求コマンドと共に受信したＩＤ情報に基づいて、自ノード２０への消去要求コマンドを受信したか否かを判定する。第２ノード２０は、自ノード２０への消去要求コマンドを受信したと判定した場合、ステップＳ５２へ進み、自ノード２０への消去要求コマンドを受信したと判定してない場合、ステップＳ５１を繰り返す。
【００９３】
ステップＳ５２では、第１フラグ２１＝ＮＧとする。つまり、第２ノード２０は、消去要求コマンドを受信して、自ノード２０が書き換えを行うとみなした場合、第１フラグ２１をリセット、すなわち第１フラグ２１に０を設定する。
【００９４】
なお、第２ノード２０は、図１０に示すように、消去要求コマンドを受信すると、第１フラグ２１をリセットすると共に、制御プログラムを消去し、且つ書換ツール４００にＡＣＫを送信する。その後、第２ノード２０は、図１０に示すように、書換ツール４００から書き換え要求コマンドを受信するとＡＣＫを返信し、書換ツール４００から新たな制御プログラムのデータと受信する。このデータは、制御プログラムの書き換え用データである。
【００９５】
そして、ステップＳ５３では、自ノード書き換えを行う。第２ノード２０は、受信した新たな制御プログラムのデータをＲＯＭ１４の書き換え領域に書き込む（書き換え処理）。
【００９６】
ステップＳ５４では、自ノードの書き換えが完了したか否かを判定する。第２ノード２０は、自ノード２０の書き換えが完了したと判定した場合はステップＳ５５へ進み、自ノード２０の書き換えが完了したと判定しなかった場合はステップＳ５４を繰り返す。つまり、第２ノード２０は、新たな制御プログラムの書き込みが完了するまでステップＳ５４の判定を繰り返す。なお、第２ノード２０は、図１０に示すように、書き換え処理が終了すると書換ツール４００にＡＣＫを送信すると共に、書換ツール４００からベリファイ要求コマンドを受信する。
【００９７】
そして、ステップＳ５５では、第１フラグ２１＝ＯＫとする。つまり、第２ノード２０は、自ノード１０の書き換えが完了したことで、第１フラグ２１に１を設定する。その後、ステップＳ５６では、自ノード２０へのベリファイ要求コマンドに対する応答（ＡＣＫ）を書換ツール４００へ送信する。
【００９８】
ステップＳ５７では、電源オフであるか否かを判定する。第２ノード２０は、電源オフであると判定しなかった場合はステップＳ５０へ戻り、電源オフであると判定した場合は図９の処理を終了する。なお、第３ノード３０の処理動作は、上記し図１０にも示すように、第２ノード２０と同様である。
【００９９】
以上のように、第１ノード１０は、全ノード１０〜３０が、制御プログラムの書き換えが完了しているか否かを判定する。つまり、第１ノード１０は、自ノード１０だけではなく、他ノード２０、３０が制御プログラムの書き換えが完了しているか否かを判定する。
【０１００】
そして、第１ノード１０は、全ノード１０〜３０が制御プログラムの書き換えを完了していると判定した場合、実行モードを制御モードに決定する。よって、第１ノード１０は、全ノード１０〜３０が新プログラムの場合、又は新プログラムの場合に、自ノード１０の実行モードを制御モードに決定する。
【０１０１】
一方、第１ノード１０は、全ノード１０〜３０が制御プログラムの書き換えを完了していると判定していない場合、すなわち、少なくとも一つのノードが制御プログラムの書き換えを完了していない場合、実行モードをリプログモードに決定する。よって、第１ノード１０は、複数のノード１０〜３０において新プログラムのノードと旧プログラムのノードとが混在している場合に、自ノード１０の実行モードをリプログモードに決定する。このため、第１ノード１０は、新プログラムのノードと旧プログラムのノードが混在した車載制御システム１００で、制御系統における制御が実行されることを抑制できる。
【０１０２】
また、第１ノード１０は、車載制御システム１００における全ノード１０〜３０で書き換えが完了しているか否かを判定できるため、車載制御システム１００の単位で全ノード１０〜３０の書き換え完了を担保できるとも言える。さらに、車載制御システム１００は、第１ノード１０を含んでいるため、新プログラムのノードと旧プログラムのノードが混在した状態で、制御系統における制御が実行されることを抑制できると言える。
【０１０３】
なお、車載制御システム１００は、第１ノード１０を含む四つ以上のノードを備えたものであってもよいし、第１ノード１０を含む二つのノードを備えたものであってもよい。つまり、車載制御システム１００は、第１ノード１０を含む複数のノードを備えたものであればよい。
【０１０４】
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。以下に、本発明のその他の形態として、第２実施形態〜第７実施形態に関して説明する。上記実施形態及び下記実施形態の夫々は、単独で実施することも可能であるが、適宜組み合わせて実施することも可能である。本発明は、実施形態において示された組み合わせに限定されることなく、種々の組み合わせによって実施可能である。
【０１０５】
（第２実施形態）
図１２を用いて、第２実施形態の第１ノード１０に関して説明する。ここでは、主に、第２実施形態における第１実施形態と異なる箇所に関して説明する。なお、本実施形態では、便宜的に、上記実施形態と同じ符号を用いる。
【０１０６】
第２実施形態の第１ノード１０は、第１フラグ１１の値と、第２フラグ１２のカウント値の両方を確認して、全ノード１０〜３０で書き換えが完了しているか否かを判定する点が上記実施形態と異なる。
【０１０７】
第２実施形態の第１ノード１０は、例えば、イグニッションスイッチがオンになると、図１２のフローチャートを実行する。
【０１０８】
ステップＳ１１では、第１フラグ１１＝ＯＫであるか否かを判定する（判定部、個別判定部）。第１ノード１０は、第１フラグ１１の記憶内容を確認して、第１フラグ１１＝ＯＫであるか否か、すなわち、自ノード１０における書き換えが完了しているか否かを判定する。第１ノード１０は、第１フラグ１１が１の場合に第１フラグ１１＝ＯＫ、すなわち、書き換えが完了しているとみなしてステップＳ１２ａへ進む。また、第１ノード１０は、第１フラグ１１が０の場合に第１フラグ１１＝ＯＫではない、すなわち、書き換えが完了していないとみなしてステップＳ１４へ進む。
【０１０９】
ステップＳ１２ａでは、第２フラグ１２＝他書き換え対象ノード数であるか否かを判定する。第１ノード１０は、第２フラグ１２の記憶内容を確認して、第２フラグ１２＝他書き換え対象ノード数であるか否かを判定する。ここで、他書き換え対象ノードとは、車載制御システムに含まれている複数のノードのうち第１ノード１０を除く、第２ノード２０、第３ノード３０である。よって、全書き換え対象ノード数は２である。
【０１１０】
第１ノード１０は、第２フラグ１２のカウント値が２である場合に、第２フラグ＝他書き換え対象ノード数であり、他書き換え対象ノード２０、３０において書き換えが完了しているとみなしてステップＳ１３へ進む。このように、第１ノード１０は、第２フラグ１２のカウント値が他のノード２０、３０の数と一致し、且つ、第１フラグ１１の値が１の場合に、全ノード１０〜３０が書き換えを完了していると判定する（判定部、統括判定部）。
【０１１１】
一方、第１ノード１０は、第２フラグ１２のカウント値が２でない場合に、第２フラグ＝他書き換え対象ノード数ではない、すなわち、他書き換え対象ノード２０、３０のうち少なくとも一つで書き換えが完了していないとみなしてステップＳ１４へ進む。
【０１１２】
このように、第２実施形態の第１ノード１０は、上記実施形態と同様の効果を奏することができる。また、第２実施形態の第１ノード１０は、第１フラグ１１の値で自ノード１０の書き換えが完了しているか否か判定できる。このため、第１ノード１０は、他ノード２０、３０の書き換えが完了したことさえカウントしておけば、自ノード１０の書き換えが完了したことをカウントする必要がない。そして、第１ノード１０は、第１フラグ１１と第２フラグ１２を確認することで、全ノード１０〜３０で書き換えが完了しているか否かを判定できる。
【０１１３】
（第３実施形態）
図１３を用いて、第３実施形態の第１ノード１０に関して説明する。ここでは、主に、第３実施形態における第１、２実施形態と異なる箇所に関して説明する。なお、本実施形態では、便宜的に、上記実施形態と同じ符号を用いる。
【０１１４】
第３実施形態の第１ノード１０は、第１フラグ１１の値と、第２フラグ１２の情報の両方を確認して、全ノード１０〜３０で書き換えが完了しているか否かを判定する点が上記実施形態と異なる。また、第３実施形態の第１ノード１０は、他ノード２０、３０の夫々に対応して、書き換えが完了しているか否かの情報を記憶している。以下においては、第２ノード２０に対応した情報を第２ノード情報、第３ノード３０に対応した情報を第３ノード情報と称する。
【０１１５】
そして、第３実施形態の第１ノード１０は、第２ノード２０での書き換えが完了したと判定した場合、第２ノード情報を書き換え完了に更新する。同様に、第３実施形態の第１ノード１０は、第３ノード３０での書き換えが完了したと判定した場合、第３ノード情報を書き換え完了に更新する。
【０１１６】
そして、第３実施形態の第１ノード１０は、例えば、イグニッションスイッチがオンになると、図１３のフローチャートを実行する。
【０１１７】
ステップＳ１２ｂでは、第２ノード情報と第３ノード情報とを確認して、他書き換え対象ノードの書き換えが完了しているか否かを判定する。なお、他書き換え対象ノードは、第２実施形態と同様、第２ノード２０、第３ノード３０である。
【０１１８】
第１ノード１０は、第２ノード情報と第３ノード情報の両方が書き換え完了を示している場合に、他書き換え対象ノード２０、３０において書き換えが完了しているとみなしてステップＳ１３へ進む。このように、第１ノード１０は、第２ノード情報と第３ノード情報の両方が書き換え完了を示しており、且つ、第１フラグ１１の値が１の場合に、全ノード１０〜３０が書き換えを完了していると判定する（判定部、統括判定部）。
【０１１９】
一方、第１ノード１０は、第２ノード情報と第３ノード情報の少なくとも一つが書き換え完了を示していない場合に、他書き換え対象ノード２０、３０のうち少なくとも一つで書き換えが完了していないとみなしてステップＳ１４へ進む。この第３実施形態の第１ノード１０は、上記実施形態と同様の効果を奏することができる。また、各ノード１０〜３０に対応した第１ノード情報〜第３ノード情報を持つことで、ノード１０〜３０夫々の書き換え状況を個別に管理することができる。
【０１２０】
（第４実施形態）
図１４、図１５を用いて、第４実施形態の第１ノード１０に関して説明する。ここでは、主に、第４実施形態における第１〜３実施形態と異なる箇所に関して説明する。なお、本実施形態では、便宜的に、上記実施形態と同じ符号を用いることもある。
【０１２１】
第４実施形態の第１ノード１０は、自ノード１０が接続されている第１通信バス２１０とは異なる第２通信バス２２０に接続されている第３ノード３０と共に、車載制御システム１１０に含まれている点が上記実施形態と異なる。
【０１２２】
車載制御システム１１０に含まれている複数のノード１０〜３０は、異なる通信バス２１０、２２０に接続されたノードを含んでいる。つまり、第１ノード１０と第２ノード２０は、第１通信バス２１０に接続されている。一方、第３ノード３０は、第２通信バス２２０に接続されている。なお、第３ノード３０は、第１ノード１０や第２ノード２０とは異なるドメインの第２通信バス２２０に接続していると言える。
【０１２３】
この第１通信バス２１０と第２通信バス２２０は、中継ノード３００に接続されている。そして、第１ノード１０と第３ノード３０や、第２ノード２０と第３ノード３０は、中継ノード３００を介して通信可能に構成されている。このように、車載制御システム１１０は、異なる通信バス２１０、２２０に接続されたノードどうしが、中継ノード３００を介して通信可能に構成されている。
【０１２４】
なお、中継ノード３００は、中継ＩＤ情報３１０を記憶している。中継ＩＤ情報は、各ノード１０〜２０を示すＩＤ情報である。中継ノード３００を介した通信では、例えば、図１５に示すような中継フレーム情報が用いられる。
【０１２５】
従って、第１ノード１０は、第１通信バス２１０を介して第２ノード２０からの完了情報を取得可能であるだけでなく、中継ノード３００を介して第３ノード３０からの完了情報を取得可能に構成されている。つまり、第１ノード１０は、中継ＩＤ情報に従い中継ノード３００から送信された、他ノードへの各要求コマンドとＡＣＫを受信し、第２フラグ１２の設定を実施する。なお、第１ノード１０は、第１実施形態や第２実施形態や第３実施形態で説明したいずれかの方法で、全ノード１０〜３０の書き換え完了を判定する。また、要求コマンドは、消去要求コマンド、書き換え要求コマンド、ベリファイ要求コマンドなどである。
【０１２６】
この第４実施形態の第１ノード１０は、上記実施形態と同様の効果を奏することができる。つまり、第４実施形態の第１ノード１０は、車載制御システム１１０に含まれている第３ノード３０が、自ノード１０とは異なる第２通信バス２２０に接続されていても、上記実施形態と同様の効果を奏することができる。
【０１２７】
（第５実施形態）
図１６、図１７を用いて、第５実施形態の第１ノード１０ａに関して説明する。ここでは、主に、第５実施形態における第１〜４実施形態と異なる箇所に関して説明する。なお、本実施形態では、便宜的に、上記実施形態と同じ符号を用いることもある。
【０１２８】
第１ノード１０ａは、車載制御システム１２０に含まれていない点が第１ノード１０と異なる。また、第１ノード１０ａは、車載制御システム１２０に含まれている複数のノード２０〜４０の実行モードを決定する点が第１ノード１０と異なる。
【０１２９】
車載制御システム１２０は、通信バス２００に接続された第２ノード２０〜第４ノード４０を備えて構成されている。第４ノード４０は、第２ノード２０や第３ノード３０と同様であり、自ノード４０に第１フラグ４１を備えて構成されている。
【０１３０】
第１ノード１０ａは、通信バス２００に接続されているものの、車載制御システム１２０に含まれていない。第１ノード１０ａは、第１ノード１０と同様に、他ノード２０〜４０から送信された完了情報を取得可能に構成されている。そして、第１ノード１０ａは、他ノード２０〜４０での書き換えが完了したか否かを判定するために、完了情報を取得するたびに第２フラグ１２のカウント値をカウントアップすると共に、車載制御システム１２０に含まれているノードの数を記憶している。本実施形態におけるノードの数は３である。なお、第１ノード１０ａは、第１ノード１０と異なり、第１フラグ１１を備えていなくてもよい。
【０１３１】
第１ノード１０ａは、例えば、イグニッションスイッチがオンになると、図１７のフローチャートを実行する。
【０１３２】
ステップＳ１２ｃでは、全書き換え対象ノードにおける書き換えが完了しているか否かを判定する（判定部）。ここでの書き換え対象ノードは、車載制御システム１２０に含まれている第２ノード２０〜第４ノード４０の３つである。第１ノード１０ａは、第２フラグ１２のカウント値を確認して、全書き換え対象ノードにおける書き換えが完了しているか否かを判定する。このように、第１ノード１０ａは、車載制御システム１２０に含まれている複数のノード２０〜４０の夫々から取得した完了情報に基づいて、複数のノード２０〜４０の全てが書き換えを完了しているか否かを判定する。
【０１３３】
第１ノード１０は、第２フラグ１２のカウント値が３であると判定した場合に、全書き換え対象ノード２０〜４０において書き換えが完了しているとみなしてステップＳ１３ａへ進む。一方、第１ノード１０は、第２フラグ１２のカウント値が３であると判定してない場合に、全書き換え対象ノード２０〜４０のうち少なくとも一つで書き換えが完了していないとみなしてステップＳ１４ａへ進む。
【０１３４】
なお、第１ノード１０は、第３実施形態のように、他ノード２０〜４０の夫々に対応した書き換えが完了しているか否かの情報を記憶し、その情報を確認して、書き換え対象ノードの書き換えが完了しているか否かを判定してもよい。
【０１３５】
ステップＳ１３ａでは、制御プログラム実行モードに決定する。このとき、第１ノード１０ａは、車載制御システム１２０に含まれている複数のノード２０〜４０の実行モードを制御モードに決定する。つまり、第１ノード１０ａは、自ノード１０ａが含まれていない車載制御システム１２０における複数のノード２０〜４０の実行モードを制御モードに決定する。よって、第１ノード１０ａは、複数のノード２０〜４０の少なくとも一つに対して、実行モードを制御モードにするように指示する。このように、第１ノード１０ａは、車載制御システム１２０に含まれている複数のノード２０〜４０の全てで書き換えが完了していると判定した場合、複数のノード２０〜４０の実行モードを制御モードに決定すると言える。
【０１３６】
ステップＳ１４ａでは、リプロプログラム実行モードに決定する。このとき、第１ノード１０ａは、車載制御システム１２０に含まれている複数のノード２０〜４０の実行モードをリプログモードに決定する。つまり、第１ノード１０ａは、自ノード１０ａが含まれていない車載制御システム１２０における複数のノード２０〜４０の実行モードをリプログモードに決定する。よって、第１ノード１０ａは、複数のノード２０〜４０の少なくとも一つに対して、実行モードをリプログモードにするように指示する。このように、第１ノード１０ａは、車載制御システム１２０に含まれている複数のノード２０〜４０の少なくとも一つで書き換えが完了していないと判定した場合、複数のノード２０〜４０の実行モードをリプログモードに決定すると言える。
【０１３７】
このように、第１ノード１０ａは、車載制御システム１２０に属していなくても第１ノード１０と同様の効果を奏することができる。また、第１ノード１０ａ及び車載制御システム１２０を含んでいる車載ネットワークは、車載制御システム１２０に属していない第１ノード１０ａが車載制御システム１２０の実行モードを決定できるため、設計自由度を向上できる。
【０１３８】
（第６実施形態）
第６実施形態の車載ネットワークに関して説明する。ここでは、主に、第６実施形態における第１〜５実施形態と異なる箇所に関して説明する。なお、本実施形態では、便宜的に、上記実施形態と同じ符号を用いることもある。
【０１３９】
第６実施形態の車載ネットワークは、第１実施形態と同様に、複数のノード１０〜３０を含む車載制御システム１００を備えて構成されている。しかしながら、第６実施形態の車載ネットワークは、主に、第２ノード２０と第３ノード３０が第１ノード１０と同様に書き換え完了を判定する点、及び、全ノード１０〜３０が書換ツール４００に書き換え完了の通知を行う点が第１実施形態と異なる。
【０１４０】
複数のノード１０〜３０の夫々は、全ノード１０〜３０で書き換えが完了しているか否かを判定する（判定部）。つまり、第２ノード２０と第３ノード３０は、第１ノード１０と同様に、全ノード１０〜３０で書き換えが完了しているか否かを判定する。
【０１４１】
そして、複数のノード１０〜３０の夫々は、全ノード１０〜３０が書き換えを完了していると判定した場合に実行モードを制御モードに決定する（決定部）。つまり、第２ノード２０と第３ノード３０は、第１ノード１０と同様に、全ノード１０〜３０が書き換えを完了していると判定した場合、自ノードの実行モードを制御モードに決定する。
【０１４２】
また、複数のノード１０〜３０の夫々は、全ノード１０〜３０が書き換えを完了していると判定していない場合、すなわち、少なくとも一つのノードが書き換えを完了していないと判定した場合、実行モードをリプログモードに決定する（決定部）。つまり、第２ノード２０と第３ノード３０は、第１ノード１０と同様に、少なくとも一つのノードが書き換えを完了していないと判定した場合、自ノードの実行モードをリプログモードに決定する。
【０１４３】
さらに、複数のノード１０〜３０の夫々は、実行モードを制御モードに決定した場合、全てのノード１０〜３０で書き換えが完了していることを、書換ツール４００に対して通知する（完了通知部）。つまり、第２ノード２０と第３ノード３０は、第１ノード１０と同様に、自ノードで書き換えが完了している場合、及び、他のノードの夫々からベリファイ要求コマンドに対するＡＣＫを取得するたびに、書き換えが完了していることを書換ツール４００に通知する。これによって、書換ツール４００は、全ノード１０〜３０からの第２フラグ設定完了通知が受信できたかを確認することで、逐次、正規のノードが接続されているか否かを確認することが可能である。
【０１４４】
なお、各ノード１０〜３０は、第１実施形態や第２実施形態や第３実施形態で説明したいずれかの方法で、全ノード１０〜３０の書き換え完了を判定してもよい。また、車載ネットワークは、第４実施形態と同様に、中継ノード３００や複数のノード１０〜３０を含む車載制御システム１１０を備えて構成されていてもよい。
【０１４５】
各ノード１０〜３０は、上記第１ノード１０と同様の効果を奏することができる。よって、第６実施形態の車載ネットワークは、新プログラムのノードと旧プログラムのノードが混在した状態で、制御系統における制御が実行されることを抑制できる。
【０１４６】
（第７実施形態）
図１８を用いて、第７実施形態の車載ネットワークに関して説明する。ここでは、主に、第７実施形態における第１〜６実施形態と異なる箇所に関して説明する。なお、本実施形態では、便宜的に、上記実施形態と同じ符号を用いることもある。
【０１４７】
本実施形態では、複数の車載制御システム１００、１３０を含む車載ネットワークを採用する。よって、第７実施形態の車載ネットワークは、第１車載制御システム１００と第２車載制御システム１３０とを備えている点が上記実施形態と異なる。本実施形態では、複数の車載制御システムを区別するために、第１車載制御システム１００と第２車載制御システム１３０と称する。なお、第１車載制御システム１００は、上記実施形態の車載制御システム１００と同様である。また、第１通信バス２１０は、上記実施形態の通信バス２００と同様である。本発明は、これに限定されず、三つ以上の車載制御システムを含む車載ネットワークであっても採用できる。
【０１４８】
第２車載制御システム１３０は、第２通信バス２２０に接続された第５ノード５０、第６ノード６０、第７ノード７０を備えて構成されている。よって、第５ノード５０、第６ノード６０、第７ノード７０は、同じ車載制御システム１３０に含まれたノードと言える。各ノード５０〜７０は、第１ノード１０〜第３ノード３０と同様に、実行モードとして制御モードとリプログモードを有している。第２車載制御システム１３０は、各ノード５０〜７０が制御モード時に連携して制御を行う。
【０１４９】
第５ノード５０は、第１ノード１０と同様に、第１フラグ５１と第２フラグ５２とを備えて構成されている。また、第５ノード５０は、第２車載制御システム１３０におけるマスタノードと言える。
【０１５０】
第５ノード５０は、第２車載制御システム１３０における全ノード５０〜７０で書き換えが完了しているか否かを判定する（判定部）。そして、第５ノード５０は、第２車載制御システム１３０における全ノード５０〜７０が書き換えを完了していると判定した場合に実行モードを制御モードに決定する（決定部）。また、第５ノード５０は、第２車載制御システム１３０における全ノード５０〜７０が書き換えを完了していると判定していない場合、すなわち、少なくとも一つのノードが書き換えを完了していないと判定した場合、実行モードをリプログモードに決定する（決定部）。
【０１５１】
第６ノード６０は、第２ノード２０と同様に、第１フラグ６１を備えて構成されている。また、第７ノード７０は、第３ノード３０と同様に、第１フラグ７１を備えて構成されている。この第６ノード６０と第７ノード７０は、第２車載制御システム１３０におけるスレーブノードと言える。
【０１５２】
第１通信バス２１０と第２通信バス２２０は、第４実施形態と同様に、中継ノード３００に接続されている。よって、第１車載制御システム１００と第２車載制御システム１３０は、中継ノード３００を介して、通信可能に構成されている。
【０１５３】
第１ノード１０は、上記実施形態と同様の効果を奏することができる。また、第５ノード５０は、第１ノード１０と同様の効果を奏することができる。さらに、第７実施形態の車載ネットワークは、新プログラムのノードと旧プログラムのノードが混在した状態で、制御系統における制御が実行されることを抑制できる。同様に、第７実施形態の車載ネットワークは、新プログラムのノードと旧プログラムのノードが混在した状態で、制御系統における制御が実行されることを抑制できる。
【符号の説明】
【０１５４】
１００〜１３０…車載制御システム、２００…通信バス、２１０…第１通信バス、２２０…第２通信バス、３００…中継ノード、３１０…中継ＩＤ情報、４００…書換ツール、１０〜７０、１０ａ…第１ノード〜第７ノード、１１…第１フラグ、１２…第２フラグ、２１…第１フラグ、３１…第１フラグ、１３…ＣＰＵ、１４…ＲＯＭ、１５…ＲＡＭ、１６…データ送受信部
【図１】
0006528700.tif 000002
【図２】
0006528700.tif 000003
【図３】
0006528700.tif 000004
【図４】
0006528700.tif 000005
【図５】
0006528700.tif 000006
【図６】
0006528700.tif 000007
【図７】
0006528700.tif 000008
【図８】
0006528700.tif 000009
【図９】
0006528700.tif 000010
【図１０】
0006528700.tif 000011
【図１１】
0006528700.tif 000012
【図１２】
0006528700.tif 000013
【図１３】
0006528700.tif 000014
【図１４】
0006528700.tif 000015
【図１５】
0006528700.tif 000016
【図１６】
0006528700.tif 000017
【図１７】
0006528700.tif 000018
【図１８】
0006528700.tif 000019