以下において、図面を参照しながら、発明を実施するための複数の形態を説明する。各形態において、先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において、構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を参照し適用することができる。
(第1実施形態)
図1〜図11を用いて、第1実施形態に関して説明する。なお、本実施形態では、車載制御装置として第1ノード10を採用する。
まず、図1〜図4を用いて、第1ノード10の構成、及び第1ノード10を含む車載制御システム100の構成に関して説明する。車載制御システム100は、車両に搭載可能に構成されている。また、車載制御システム100は、車両に設けられた車載ネットワークの一部として設けられていると言える。
車載制御システム100は、車両における複数の制御系統の一つを統合的に制御するために、第1ノード10を含む複数のノードを備えて構成されている。制御系統とは、例えば、エンジン制御系やボデー制御系などである。よって、車載制御システム100としては、例えばエンジン制御系のシステムを採用できる。
車載制御システム100は、例えば、第1ノード10に加えて、第2ノード20、第3ノード30を備えて構成されている。つまり、本実施形態では、車載制御システム100に含まれている複数のノード10〜30の一つである第1ノード10が車載制御装置に相当すると言える。なお、車載制御システム100は、同一制御系統におけるノードとして、第1ノード10、第2ノード20、第3ノード30を含んでいると言える。第1ノード10、第2ノード20、第3ノード30は、制御系統の制御を実行するための関連するノードであるため関連ノードと言える。
各ノード10〜30は、実行モードとして、制御プログラムを実行して制御を行う制御モードと、制御プログラムに基づいた制御を行うことなくリプロプログラムを実行して制御プログラムの書き換えを行うリプログモードとを有している。なお、制御モードは、制御プログラム実行モードと言える。また、リプログモードは、リプロプログラム実行モードと言える。また、以下においては、制御プログラムの書き換えを、単に書き換えとも記載する。
また、車載制御システム100は、第1ノード10と第2ノード20と第3ノード30が通信バス200を介して通信可能に構成されている。つまり、各ノード10〜30は、自ノード10〜30が接続されている通信バス200を介して通信を行うことができる。
車載制御システム100は、車両の外部に設けられた書換ツール400と通信可能に構成されている。つまり、車載制御システム100は、例えば第1ノード10が書換ツール400と通信可能に構成されている。第2ノード20と第3ノード30は、通信バス200を介して第1ノード10と通信可能に構成されているため、第1ノード10を介して書換ツール400と通信可能に構成されていると言える。このため、車載制御システム100は、マスタとしての第1ノード10と、スレーブとしての第2ノード20及び第3ノード30を備えていると言える。
各ノード10〜30の実行モードが制御モードである場合、車載制御システム100は、各ノード10〜30が制御プログラムを実行することで、各ノード10〜30が制御系統における制御を連携して行う。
一方、各ノード10〜30の実行モードがリプログモードである場合、車載制御システム100は、各ノード10〜30がリプロプログラムを実行することで、各ノード10〜30の制御プログラムが書き換えられる。このとき、車載制御システム100は、第1ノード10が書換ツール400と通信を行いつつ、第2ノード20及び第3ノード30とも通信を行うことで、制御プログラムが書き換えられる。
つまり、車載制御システム100は、全ノード10〜30が制御プログラムを実行することで制御系統における制御を行うことができる。例えば、全ノード10〜30の少なくとも一つのノードにおける実行モードがリプロプグモードであった場合、車載制御システム100は、そのノードがリプロプログラムを実行するため、制御系統における制御を行うことができない。また、全ノード10〜30の一つのノードがリプロプグモードを実行し、他のノードが制御プログラムを実行した場合、各ノード10〜30は、制御プログラムを実行した際に行なわれる通信が途絶するため、制御系統における制御を行うことができない。
なお、上記のように、車載制御システム100は、各ノード10〜30が連携して制御を行うものである。このため、制御システム100は、システム仕様の変更時など、全ノード10〜30の制御プログラムを書き換える必要がある。つまり、車載制御システム100は、例えば、第1ノード10と第3ノード30が新プログラムで、第2ノードだけが旧プログラムのように、新プログラムのノードと旧プログラムのノードとが混在しないようにする必要がある。
これは、車載制御システム100は、新プログラムのノードと旧プログラムのノードとが混在した場合、制御系統として、新プログラムに応じた制御を行うことができなくなるためである。よって、車載制御システム100は、全ノード10〜30で制御プログラムの書き換えを確実に実施する必要がある。言い換えると、車載制御システム100は、全ノード10〜30で新プログラムに揃える必要がある。
なお、新プログラムは、新しい制御プログラムに書き換えられた後の制御プログラムである。一方、旧プログラムは、新しい制御プログラムに書き換えられる前の制御プログラムである。
また、新プログラムは、新しいバージョンの制御プログラムと言える。よって、旧プログラムは、新プログラムよりも古いバージョンの制御プログラムと言える。従って、新プログラムと旧プログラムは、バージョン違いの制御プログラムと言える。
第1ノード10は、図2に示すように、CPU13、ROM14、RAM15、データ送受信部16などを備えて構成されている。CPU13は、後程説明するROM14に予め記憶された制御プログラムやリプロプログラムを実行する。ROM14には、制御プログラム、リプログラム、第1フラグ11、第2フラグ12が記憶されている。RAM15は、CPU13が演算処理を行う際に、演算結果などを一時的に記憶するための記憶部である。データ送受信部16は、通信バス200を介して、第2ノード20、第3ノード30、及び書換ツール400と通信を行うための通信部である。このように、第1ノード10は、ECU(Electronic Control Unit)とも言える。
第2ノード20及び第3ノード30は、第1ノード10と同様に、CPU13、ROM14、RAM15、データ送受信部16などを備えて構成されている。このため、第2ノード20及び第3ノード30の構成に関する図示や詳細な説明は、省略する。第1ノード10と、第2ノード20と第3ノード30とは、主に、制御プログラムの内容、つまり制御内容、及びROM14の記憶内容が異なる。なお、第3ノード30は、第2ノード20と制御内容が異なるものの、同様の構成を有している。よって、以下においては、第2ノード20を代表例として用いて説明する。
なお、各ノード10〜30の処理動作に関しては、後程説明する。また、第2ノード20と第3ノード30の処理動作に関しても、第2ノード20を代表例として用いて説明する。
ここで、図3、図4を用いて、第1ノード10のROM14における記憶内容と、第2ノード20のROM14の記憶内容に関して説明する。
図3に示すように、第1ノード10のROM14は、書き換え領域に制御プログラム、第1フラグ11、第2フラグ12が記憶されており、非書き換え領域にリプロプログラムが記憶されている。また、第1ノード10のROM14は、非書き換え領域に、関連ノードを識別するID情報が記憶されている。
一方、図4に示すように、第2ノード20のROM14には、書き換え領域に制御プログラム、第1フラグ21が記憶されており、非書き換え領域にリプログラムが記憶されている。つまり、第2ノード20のROM14には、第2フラグ12が記憶されていない。なお、図1に示すように、第3ノード30の第1フラグには、符号31を付与している。
第1フラグ11、21は、自ノードにおける書き換え完了可否を判断するための情報である。第1フラグ11、21は、書き換えが完了していることを示す情報と、書き換えが完了していないことを示す情報のいずれかが設定されている。例えば、書き換えが完了していることを示す情報として1、書き換えが完了していないことを示す情報として0を採用できる。なお、第1フラグ11は、第1ノード10によって設定される。一方、第2フラグ21は、第2ノード20によって設定される。
よって、第1ノード10は、第1フラグ11を確認することで、自ノード10における書き換えが完了しているか否かを判定できる。同様に、第2ノード20は、第2フラグ21を確認することで、自ノード20における書き換えが完了しているか否かを判定できる。
第2フラグ12は、自ノード10だけではなく第2ノード20及び第3ノード30における書き換え完了可否を判断するための情報である。つまり、第2フラグ12は、車載制御システム100に含まれている全ノード10〜30における書き換えが完了しているか否かを判断するための情報である。本実施形態では、一例として、書き換えが完了したノードをカウントしたカウント値である第2フラグ12を採用する。よって、第1ノード10は、第2フラグ12を確認することで、第1ノード10、第2ノード20、第3ノード30の全てにおいて書き換えが完了しているか否かを判定できる。
書換ツール400は、書換装置に相当する。書換ツール400は、ディーラや工場の作業者によって操作可能に構成されている。書換ツール400は、作業者による操作に応じて、書き換えを行う。書換ツール400は、書き換えを行う際に、ケーブルとコネクタなどを介して車両と接続される。また、書換ツール400は、書き換えが完了した後など書き換えを行わないとき車両から外されている。なお、書換ツール400は、ライタとも言える。
ここで、各ノード10〜30の処理動作の前に、図10、図11を用いて、書換ツール400の処理動作に関して説明する。書換ツール400は、車両と接続された状態で、作業者によって書き換えが指示された場合に、図11のフローチャートを実行する。なお、後程説明するが、各ノード10〜30は、書換ツール400からの各要求に応答してACKを返信する。
ステップS60では、消去要求コマンドを送信する。書換ツール400は、図10に示すように、第1ノード10〜第3ノード30の夫々に対して、個別に消去要求コマンドを送信する。書換ツール400は、各ノードに対して消去要求コマンドを送信する際に、送信対象のノードのID情報と共に送信する。書換ツール400は、例えば、第1ノード10に対して消去要求コマンドを送信する場合、第1ノード10のID情報と消去要求コマンドとを送信する。この消去要求コマンドは、ROM14に記憶されている制御プログラムの消去を要求するコマンドである。
ステップS61では、消去要求コマンドに対する応答を受信か否かを判定する。書換ツール400は、消去要求コマンドに対する応答、すなわちACKを受信したか否かを判定する。そして、書換ツール400は、ACKを受信したと判定した場合はステップS62へ進み、ACKを受信したと判定してない場合はステップS61を繰り返す。
なお、書換ツール400は、消去要求コマンドを送信してから所定時間、ACKを受信できなかった場合、図11の処理を終了するものであってもよい。つまり、書換ツール400は、カウントアウト処理を行ってもよい。また、書換ツール400は、以下の判定においてもカウントアウト処理を行ってもよい。さらに、後程説明する各ノード10〜30に関しても、カウントアウト処理を行ってもよい。
ステップS62では、書き換え要求コマンドを送信する。書換ツール400は、図10に示すように、第1ノード10〜第3ノード30の夫々に対して、個別に書き換え要求コマンドを送信する。書換ツール400は、消去要求コマンドを送信する場合と同様に、送信対象のノードのID情報と共に、書き換え要求コマンドを送信する。この書き換え要求コマンドは、制御プログラムが消去されたROM14に、新たな制御プログラムの書き込みを要求するコマンドである。
ステップS63では、書き換え要求コマンドに対する応答を受信か否かを判定する。書換ツール400は、書き換え要求コマンドに対するACKを受信したか否かを判定する。そして、書換ツール400は、ACKを受信したと判定した場合はステップS64へ進み、ACKを受信したと判定してない場合はステップS63を繰り返す。なお、書換ツール400は、書き換え要求コマンドに対するACKを受信した後、対象ノードに対して、対象ノードのID情報と新たな制御プログラムのデータとを送信する。
ステップS64では、ベリファイ要求コマンドを送信する。書換ツール400は、図10に示すように、第1ノード10〜第3ノード30の夫々に対して、個別にベリファイ要求コマンドを送信する。書換ツール400は、消去要求コマンドを送信する場合と同様に、送信対象のノードのID情報と共に、ベリファイ要求コマンドを送信する。このベリファイ要求コマンドは、新たな制御プログラムが正常に書き込まれたか否かを検証することを要求するコマンドである。
ステップS65では、ベリファイ要求コマンドに対する応答を受信か否かを判定する。書換ツール400は、リファイ要求コマンドに対するACKを受信したか否かを判定する。そして、書換ツール400は、ACKを受信したと判定した場合はステップS66へ進み、ACKを受信したと判定してない場合はステップS65を繰り返す。
ステップS66では、第2フラグ設定完了通知を受信したか否かを判定する。以下においては、第2フラグ設定完了通知を、単に完了の通知とも称する。また、第2フラグ設定完了の通知は、各ノード10〜30の夫々で書き換えが完了したことを示す情報である。書換ツール400は、完了の通知を受信したと判定した場合はステップS67へ進み、完了の通知を受信したと判定してない場合はステップS66を繰り返す。なお、後程説明するが、第1ノード10は、第2フラグ12の設定が完了するたびに、すなわち第2フラグ12にカウント値を記憶するたびに、完了の通知を書換ツール400に送信する。
ステップS67では、全ノードの書き換え完了か否かを判定する。書換ツール400は、全ノード10〜30の完了の通知を受信した場合に全ノードの書き換えが完了したと判定し、全ノード10〜30の完了の通知を受信してない場合に全ノードの書き換えが完了していないと判定する。そして、書換ツール400は、全ノード10〜30の書き換えが完了したと判定した場合は図11の処理を終了して、全ノード10〜30の書き換えが完了したと判定してない場合はステップS60へ戻る。つまり、書換ツール400は、全ノード10〜30の書き換えが完了するまで、図11のフローチャートを実行する。
ここで、図5〜図10を用いて、各ノード10〜30の処理動作に関して説明する。
まず、図5を用いて、第1ノード10の起動処理に関して説明する。第1ノード10は、例えば、イグニッションスイッチがオンになると、図5のフローチャートを実行する。
ステップS10では、電源オン及びリセット解除する。第1ノード10は、自ノード10の電源をオンすると共に、自ノード10のリセットを解除する。
ステップS11では、第1フラグ11=OKであるか否かを判定する。第1ノード10は、第1フラグ11の記憶内容を確認して、第1フラグ11=OKであるか否か、すなわち、自ノード10における書き換えが完了しているか否かを判定する。第1ノード10は、第1フラグ11が1の場合に第1フラグ11=OK、すなわち、書き換えが完了しているとみなしてステップS12へ進む。また、第1ノード10は、第1フラグ11が0の場合に第1フラグ11=OKではない、すなわち、書き換えが完了していないとみなしてステップS14へ進む。
ステップS12では、第2フラグ12=全書き換え対象ノード数であるか否かを判定する(判定部)。第1ノード10は、第2フラグ12の記憶内容を確認して、第2フラグ12=全書き換え対象ノード数であるか否か、すなわち、書き換え対象ノードの全てにおいて書き換えが完了しているか否かを判定する。ここで、全書き換え対象ノードとは、車載制御システムに含まれている第1ノード10、第2ノード20、第3ノード30である。よって、全書き換え対象ノード数は3である。
第1ノード10は、第2フラグ12のカウント値が3である場合に、第2フラグ=全書き換え対象ノード数、すなわち、書き換え対象ノード10〜30の全てにおいて書き換えが完了しているとみなしてステップS13へ進む。なお、書き換え対象ノード10〜30の全てにおいて書き換えが完了している状態は、全ノード10〜30が新プログラムに書き換えられている状態とみなせる。
一方、第1ノード10は、第2フラグ12のカウント値が3でない場合に、第2フラグ=全書き換え対象ノード数ではない、すなわち、全書き換え対象ノード10〜30のうち少なくとも一つで書き換えが完了していないとみなしてステップS14へ進む。なお、書き換え対象ノード10〜30のうち少なくとも一つで書き換えが完了していない状態は、全ノード10〜30のうち少なくとも一つが旧プログラムのままで、残りが新プログラムに書き換えられている状態とみなせる。
後程詳しく説明するが、第1ノード10は、自ノード10で書き換えが完了した場合、及び、第2ノード20や第3ノード30から完了の通知を受信した場合に第2フラグ12のカウント値をカウントアップする。よって、第1ノード10は、自ノード10で書き換えが完了していること、及び他のノード20、30の夫々から取得した完了の通知とに基づいて、全ノード10〜30での書き換えが完了しているか否かを判定すると言える。つまり、第1ノード10は、ステップS12によって、複数のノード10〜30の全てが、書き換えを完了しているか否かを判定する(判定部)。
このように、第1ノード10は、カウント値によって、複数のノード10〜30の全てが書き換えを完了しているか否かを判定している。このため、第1ノード10は、情報量が増大することを抑制しつつ、複数のノード10〜30の全てが書き換えを完了しているか否かを判定できる。つまり、第1ノード10は、書き換えが完了したことを示す情報を各ノード10〜30に対応して個別に記憶しておくよりも、情報量を減らすことができ、且つ複数のノード10〜30の全てが書き換えを完了しているか否かを判定できる。
また、第1ノード10は、上記のように車載制御システム100に含まれている一つのノードである。よって、第1ノード10は、ステップS12の判定を行うことで、車載制御システム100の制御に影響する全ノード10〜30が新プログラムに書き換えられているか否かを判定できる。
ステップS13では、制御プログラム実行モードに設定する(決定部)。一方、ステップS14では、リプロプログラム実行モードに設定する(決定部)。つまり、第1ノード10は、全ノード10〜30が制御プログラムの書き換えを完了している場合、実行モードを制御モードに決定する。そして、第1ノード10は、全ノード10〜30が制御プログラムの書き換えを完了していると判定していない場合、実行モードをリプログモードに決定する。
ステップS15では、電源オフであるか否かを判定する。そして、第1ノード10は、電源オフと判定した場合は図5の処理を終了し、電源オフと判定してない場合はステップS11へ戻る。
なお、本実施形態では、ステップS12の判定で、全ノード10〜30で書き換えが完了しているか否かを判定する例を採用している。従って、本実施形態では、ステップS11を省略することもできる。この場合、第1ノード10は、起動処理時に、第1フラグ11が1であるか否かの判定を行わなくてもよい。しかしながら、第1ノード10は、ステップS11の判定を行うことで、自ノード10での書き換えが完了していない場合に、第2フラグ12を確認することなくステップS14に進むことができる。さらに、後程説明するが、他のノード20、30は、ステップS10と同様に、自ノードでの書き換えが完了しているか否かを判定する。よって、第1ノード10は、ステップS11の判定を行うことで、他のノード20、30との変更点を少なくすることができる。
次に、図6を用いて、第2ノード20の起動処理に関して説明する。
ステップS20は、ステップS10と同様に、自ノード20の電源オン及びリセット解除を行う。ステップS21では、ステップS11と同様に、第1フラグ21=OKであるか否かを判定する。なお、第2ノード20は、第1ノード10とは異なり、第2フラグを有していない。よって、第2ノード20は、第1フラグ21=OKであると判定した場合はステップS22へ進み、ステップS22で実行モードを制御モードに決定する。また、第2ノード20は、第1フラグ21=OKであると判定していない場合はステップS23へ進み、ステップS23で実行モードをリプログモードに決定する。
なお、ステップS24では、ステップS15と同様に、電源オフであるか否かを判定する。そして、第2ノード20は、電源オフと判定した場合は図6の処理を終了し、電源オフと判定してない場合はステップS21へ戻る。
次に、図7、図8を用いて、第1ノード10における制御プログラムを書き換える際の処理動作に関して説明する。第1ノード10は、例えば、イグニッションスイッチがオンになると、図7のフローチャートを実行する。図7に示す処理動作を行う場合、第1ノード10の実行モードは、リプログモードである。詳述すると、第1ノード10は、例えばリプログモード移行後に、消去要求コマンドが送信される。なお、第1ノード10は、この処理動作中に第1フラグ11及び第2フラグ12の設定を行う。また、本実施形態では、図7の処理がスタートした時点で、第1フラグ11に1が設定されており、第2フラグ12のカウント値が全ノード数3となっていることを前提とする。
ステップS30では、電源オン及びリセット解除する。第1ノード10は、自ノード10の電源をオンすると共に、自ノード10のリセットを解除する。
ステップS31では、自ノード10への消去要求コマンドを受信したか否かを判定する。第1ノード10は、消去要求コマンドを受信した場合、消去要求コマンドと共に受信したID情報に基づいて、自ノード10への消去要求コマンドを受信したか否かを判定する。第1ノード10は、自ノード10への消去要求コマンドを受信したと判定した場合、ステップS32へ進み、自ノード10への消去要求コマンドを受信したと判定してない場合、図8のステップS42へ進む。ステップS42以降の処理に関しては、後程説明する。
ステップS32では、第2フラグ12=全書き換え対象ノード数であるか否かを判定する。第1ノード10は、第2フラグ12のカウント値が3であると判定した場合にステップS33へ進み、第2フラグ12のカウント値が3であると判定しなかった場合にステップS41へ進む。上記のように、第2フラグ12のカウント値は、図7の処理がスタートした時点で3となっている。よって、第1ノード10は、YES判定の場合、最初に自ノード10が書き換えを行うとみなすことができ、NO判定の場合、2番目以降に自ノード10が書き換えを行うとみなすことができる。
ステップS41では、第1フラグ11=NG、第2フラグ12=Nとする。第1ノード10は、消去要求コマンドを受信して、2番目以降に自ノード10の書き換えを行うとみなした場合、第1フラグ11に0を設定し、第2フラグ12のカウント値を前回値に保持する。つまり、第1ノード10は、2番目以降に自ノード10が書き換えを行う場合、第1フラグ11及び第2フラグ12を更新しない。
一方、ステップS33では、第1フラグ11=NG、第2フラグ12=0とする。つまり、第1ノード10は、消去要求コマンドを受信して、最初に自ノード10が書き換えを行うとみなした場合、第1フラグ11をリセットし、すなわち第1フラグ11に0を設定し、第2フラグ12のカウント値をリセットする。このように、第1ノード10は、複数のノード10〜30のいずれかに対する消去要求コマンドを最初に受信したときに、カウント値を初期化する。
第1ノード10は、自ノード10で制御プログラムの書き換えが完了していること、及び他のノード20、30から完了情報を取得したことをカウントし、第2フラグ12のカウント値として記憶する。このため、第1ノード10は、消去要求コマンドを最初に受信したときにカウント値を初期化しておくことで、全ノード10〜30における書き換えの進捗を確認できる。完了情報に関しては、後程説明する。
なお、第1ノード10は、図10に示すように、消去要求コマンドを受信すると、第1フラグ11と第2フラグ12をリセットすると共に、制御プログラムを消去し、且つ書換ツール400にACKを送信する。その後、第1ノード10は、図10に示すように、書換ツール400から書き換え要求コマンドを受信するとACKを返信し、書換ツール400から新たな制御プログラムのデータと受信する。このデータは、制御プログラムの書き換え用データである。
そして、ステップS34では、自ノード書き換えを行う。第1ノード10は、受信した新たな制御プログラムのデータをROM14の書き換え領域に書き込む(書き換え処理)。
ステップS35では、自ノードの書き換えが完了したか否かを判定する。第1ノード10は、自ノード10の書き換えが完了したと判定した場合はステップS36へ進み、自ノード10の書き換えが完了したと判定しなかった場合はステップS35を繰り返す。つまり、第1ノード10は、新たな制御プログラムの書き込みが完了するまでステップS35の判定を繰り返す。なお、第1ノード10は、図10に示すように、書き換え処理が終了すると書換ツール400にACKを送信すると共に、書換ツール400からベリファイ要求コマンドを受信する。
そして、ステップS36では、第1フラグ11=OK、第2フラグ12=+1とする。つまり、第1ノード10は、自ノード10の書き換えが完了したことで、第1フラグ11に1を設定し、第2フラグ12のカウント値をカウントアップする。その後、ステップS37では、自ノード10へのベリファイ要求コマンドに対する応答(ACK)を書換ツール400へ送信する。
ステップS38では、第2フラグ設定完了通知を書換ツール400へ送信する(個別通知部)。つまり、第1ノード10は、自ノード10で書き換えが完了している場合、制御プログラムの書き換えが完了していることを書換ツール400に通知する。また、第1ノード10は、他のノード20、30の夫々から、ベリファイ要求コマンドに対するACKを取得するたびに、書き換えが完了していることを書換ツール400に通知する。つまり、第1ノード10は、第2フラグ12の設定が完了するたびに、すなわち第2フラグ12にカウント値をカウントアップするたびに、完了の通知を書換ツール400に送信する。なお、他のノード20、30の夫々から送信された、ベリファイ要求コマンドに対するACKは、制御プログラムの書き換えが完了していることを示す情報であり、上記完了情報に相当する。
このように、第1ノード10は、各ノード10〜30での書き換えが完了するたびに、書換ツール400に対して完了の通知を行うため、書換ツール400に書き換え状況を把握させることができる。つまり、書換ツール400は、第1ノード10からの完了の通知によって、各ノード10〜30における書き換えの進捗を把握でき、書き換え完了ノードと未完了ノードとを容易に切り分けることができる。
ステップS39では、全書き換え対象ノード数=第2フラグの値であるか否かを判定する。第1ノード10は、ステップS32と同様に、第2フラグ12のカウント値が3であるか否かを判定する。そして、第1ノード10は、第2フラグ12のカウント値が3であると判定した場合にステップS40へ進み、第2フラグ12のカウント値が3であると判定しなかった場合にステップS31へ戻る。
ステップS40では、電源オフであるか否かを判定する。第1ノード10は、電源オフであると判定しなかった場合はステップS31へ戻り、電源オフであると判定した場合は図7の処理を終了する。
ここで、図8のフローチャートを用いて、ステップS42以降の処理に関して説明する。
ステップS42では、他ノード20、30への消去要求コマンドを受信したか否かを判定する。第1ノード10は、消去要求コマンドを受信した場合、消去要求コマンドと共に受信したID情報に基づいて、他ノード20、30への消去要求コマンドを受信したか否かを判定する。第1ノード10は、他ノード20、30への消去要求コマンドを受信したと判定した場合、ステップS43へ進み、他ノード20、30への消去要求コマンドを受信したと判定してない場合、ステップS42を繰り返す。
ステップS43では、第2フラグ12=全書き換え対象ノード数であるか否かを判定する。第1ノード10は、第2フラグ12のカウント値が3であると判定した場合にステップS44へ進み、第2フラグ12のカウント値が3であると判定しなかった場合にステップS47へ進む。上記のように、第2フラグ12のカウント値は、図7の処理がスタートした時点で3となっている。よって、第1ノード10は、YES判定の場合、最初に他のノード20、30が書き換えを行うとみなすことができ、NO判定の場合、2番目以降に他のノード20、30が書き換えを行うとみなすことができる。
ステップS44では、第1フラグ11=OK、第2フラグ12=0とする。つまり、第1ノード10は、消去要求コマンドを受信して、最初に他ノード20、30が書き換えを行うとみなした場合、第2フラグ12のカウント値をリセットする。このように、第1ノード10は、複数のノード10〜30のいずれかに対する消去要求コマンドを最初に受信したときに、カウント値を初期化する。よって、第1ノード10は、消去要求コマンドを最初に受信したときにカウント値を初期化しておくことで、全ノード10〜30における書き換えの進捗を確認できる。しかしながら、第1ノード10は、受信した消去要求コマンドが自ノード10に対する要求ではないため、第1フラグ11をリセットしない。
一方、ステップS47では、第1フラグ11=OK、第2フラグ12=Nとする。第1ノード10は、消去要求コマンドを受信して、2番目以降に他ノード20、30が書き換えを行うとみなした場合、第1フラグ11にリセットすることなく、第2フラグ12のカウント値を前回値に保持する。つまり、第1ノード10は、2番目以降に他ノード20、30が書き換えを行う場合、第1フラグ11及び第2フラグ12を更新しない。
ステップS45では、他ノードの書き換えが完了したか否かを判定する。第1ノード10は、他ノード20、30の書き換えが完了したと判定した場合、ステップS46へ進み、他ノード20、30の書き換えが完了したと判定してない場合、ステップS45を繰り返す。
つまり、第1ノード10は、第2ノード20への消去要求コマンドを受信しており、且つ、第2ノード20からベリファイ要求コマンドに対するACKを受信した場合、第2ノード20での書き換えが完了したと判定して、ステップS46へ進む。また、第1ノード10は、第2ノード20への消去要求コマンドを受信しており、且つ、第2ノード20からベリファイ要求コマンドに対するACKを受信してない場合、第2ノード20での書き換えが完了したと判定せずに、ステップS45を繰り返す。
同様に、第1ノード10は、第3ノード30への消去要求コマンドを受信しており、且つ、第3ノード30からベリファイ要求コマンドに対するACKを受信した場合、第3ノード30での書き換えが完了したと判定して、ステップS46へ進む。また、第1ノード10は、第3ノード30への消去要求コマンドを受信しており、且つ、第3ノード30からベリファイ要求コマンドに対するACKを受信してない場合、第3ノード30での書き換えが完了したとせずに、ステップS45を繰り返す。
ステップS46では、第1フラグ11=OK、第2フラグ12=N+1とする。第1ノード10は、他ノード20、30での書き換えが完了したと判定した場合、第2フラグ12のカウント値をカウントアップする。つまり、第1ノード10は、第2ノード20での書き換えが完了したと判定した場合、及び第3ノード30での書き換えが完了したと判定した場合、第2フラグ12のカウント値をカウントアップする。しかしながら、第1ノード10は、自ノード10における書き換えではないため、第1フラグ11を更新しない。
次に、図9を用いて、第2ノード20における制御プログラムを書き換える際の処理動作に関して説明する。第2ノード20は、例えば、イグニッションスイッチがオンになると、図9のフローチャートを実行する。図9は、第2ノード20におけるリプロモード時の処理動作を示す。図9に示す処理動作を行う場合、第2ノード20の実行モードは、リプログモードである。詳述すると、第2ノード20は、例えばリプログモード移行後に、消去要求コマンドが送信される。なお、第2ノード20は、この処理動作中に第1フラグ21の設定を行う。また、本実施形態では、図9の処理がスタートした時点で、第1フラグ21に1が設定されていることを前提とする。
ステップS50では、電源オン及びリセット解除する。第2ノード20は、自ノード20の電源をオンすると共に、自ノード20のリセットを解除する。
ステップS51では、自ノード20への消去要求コマンドを受信したか否かを判定する。第2ノード20は、消去要求コマンドを受信した場合、消去要求コマンドと共に受信したID情報に基づいて、自ノード20への消去要求コマンドを受信したか否かを判定する。第2ノード20は、自ノード20への消去要求コマンドを受信したと判定した場合、ステップS52へ進み、自ノード20への消去要求コマンドを受信したと判定してない場合、ステップS51を繰り返す。
ステップS52では、第1フラグ21=NGとする。つまり、第2ノード20は、消去要求コマンドを受信して、自ノード20が書き換えを行うとみなした場合、第1フラグ21をリセット、すなわち第1フラグ21に0を設定する。
なお、第2ノード20は、図10に示すように、消去要求コマンドを受信すると、第1フラグ21をリセットすると共に、制御プログラムを消去し、且つ書換ツール400にACKを送信する。その後、第2ノード20は、図10に示すように、書換ツール400から書き換え要求コマンドを受信するとACKを返信し、書換ツール400から新たな制御プログラムのデータと受信する。このデータは、制御プログラムの書き換え用データである。
そして、ステップS53では、自ノード書き換えを行う。第2ノード20は、受信した新たな制御プログラムのデータをROM14の書き換え領域に書き込む(書き換え処理)。
ステップS54では、自ノードの書き換えが完了したか否かを判定する。第2ノード20は、自ノード20の書き換えが完了したと判定した場合はステップS55へ進み、自ノード20の書き換えが完了したと判定しなかった場合はステップS54を繰り返す。つまり、第2ノード20は、新たな制御プログラムの書き込みが完了するまでステップS54の判定を繰り返す。なお、第2ノード20は、図10に示すように、書き換え処理が終了すると書換ツール400にACKを送信すると共に、書換ツール400からベリファイ要求コマンドを受信する。
そして、ステップS55では、第1フラグ21=OKとする。つまり、第2ノード20は、自ノード10の書き換えが完了したことで、第1フラグ21に1を設定する。その後、ステップS56では、自ノード20へのベリファイ要求コマンドに対する応答(ACK)を書換ツール400へ送信する。
ステップS57では、電源オフであるか否かを判定する。第2ノード20は、電源オフであると判定しなかった場合はステップS50へ戻り、電源オフであると判定した場合は図9の処理を終了する。なお、第3ノード30の処理動作は、上記し図10にも示すように、第2ノード20と同様である。
以上のように、第1ノード10は、全ノード10〜30が、制御プログラムの書き換えが完了しているか否かを判定する。つまり、第1ノード10は、自ノード10だけではなく、他ノード20、30が制御プログラムの書き換えが完了しているか否かを判定する。
そして、第1ノード10は、全ノード10〜30が制御プログラムの書き換えを完了していると判定した場合、実行モードを制御モードに決定する。よって、第1ノード10は、全ノード10〜30が新プログラムの場合、又は新プログラムの場合に、自ノード10の実行モードを制御モードに決定する。
一方、第1ノード10は、全ノード10〜30が制御プログラムの書き換えを完了していると判定していない場合、すなわち、少なくとも一つのノードが制御プログラムの書き換えを完了していない場合、実行モードをリプログモードに決定する。よって、第1ノード10は、複数のノード10〜30において新プログラムのノードと旧プログラムのノードとが混在している場合に、自ノード10の実行モードをリプログモードに決定する。このため、第1ノード10は、新プログラムのノードと旧プログラムのノードが混在した車載制御システム100で、制御系統における制御が実行されることを抑制できる。
また、第1ノード10は、車載制御システム100における全ノード10〜30で書き換えが完了しているか否かを判定できるため、車載制御システム100の単位で全ノード10〜30の書き換え完了を担保できるとも言える。さらに、車載制御システム100は、第1ノード10を含んでいるため、新プログラムのノードと旧プログラムのノードが混在した状態で、制御系統における制御が実行されることを抑制できると言える。
なお、車載制御システム100は、第1ノード10を含む四つ以上のノードを備えたものであってもよいし、第1ノード10を含む二つのノードを備えたものであってもよい。つまり、車載制御システム100は、第1ノード10を含む複数のノードを備えたものであればよい。
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。以下に、本発明のその他の形態として、第2実施形態〜第7実施形態に関して説明する。上記実施形態及び下記実施形態の夫々は、単独で実施することも可能であるが、適宜組み合わせて実施することも可能である。本発明は、実施形態において示された組み合わせに限定されることなく、種々の組み合わせによって実施可能である。
(第2実施形態)
図12を用いて、第2実施形態の第1ノード10に関して説明する。ここでは、主に、第2実施形態における第1実施形態と異なる箇所に関して説明する。なお、本実施形態では、便宜的に、上記実施形態と同じ符号を用いる。
第2実施形態の第1ノード10は、第1フラグ11の値と、第2フラグ12のカウント値の両方を確認して、全ノード10〜30で書き換えが完了しているか否かを判定する点が上記実施形態と異なる。
第2実施形態の第1ノード10は、例えば、イグニッションスイッチがオンになると、図12のフローチャートを実行する。
ステップS11では、第1フラグ11=OKであるか否かを判定する(判定部、個別判定部)。第1ノード10は、第1フラグ11の記憶内容を確認して、第1フラグ11=OKであるか否か、すなわち、自ノード10における書き換えが完了しているか否かを判定する。第1ノード10は、第1フラグ11が1の場合に第1フラグ11=OK、すなわち、書き換えが完了しているとみなしてステップS12aへ進む。また、第1ノード10は、第1フラグ11が0の場合に第1フラグ11=OKではない、すなわち、書き換えが完了していないとみなしてステップS14へ進む。
ステップS12aでは、第2フラグ12=他書き換え対象ノード数であるか否かを判定する。第1ノード10は、第2フラグ12の記憶内容を確認して、第2フラグ12=他書き換え対象ノード数であるか否かを判定する。ここで、他書き換え対象ノードとは、車載制御システムに含まれている複数のノードのうち第1ノード10を除く、第2ノード20、第3ノード30である。よって、全書き換え対象ノード数は2である。
第1ノード10は、第2フラグ12のカウント値が2である場合に、第2フラグ=他書き換え対象ノード数であり、他書き換え対象ノード20、30において書き換えが完了しているとみなしてステップS13へ進む。このように、第1ノード10は、第2フラグ12のカウント値が他のノード20、30の数と一致し、且つ、第1フラグ11の値が1の場合に、全ノード10〜30が書き換えを完了していると判定する(判定部、統括判定部)。
一方、第1ノード10は、第2フラグ12のカウント値が2でない場合に、第2フラグ=他書き換え対象ノード数ではない、すなわち、他書き換え対象ノード20、30のうち少なくとも一つで書き換えが完了していないとみなしてステップS14へ進む。
このように、第2実施形態の第1ノード10は、上記実施形態と同様の効果を奏することができる。また、第2実施形態の第1ノード10は、第1フラグ11の値で自ノード10の書き換えが完了しているか否か判定できる。このため、第1ノード10は、他ノード20、30の書き換えが完了したことさえカウントしておけば、自ノード10の書き換えが完了したことをカウントする必要がない。そして、第1ノード10は、第1フラグ11と第2フラグ12を確認することで、全ノード10〜30で書き換えが完了しているか否かを判定できる。
(第3実施形態)
図13を用いて、第3実施形態の第1ノード10に関して説明する。ここでは、主に、第3実施形態における第1、2実施形態と異なる箇所に関して説明する。なお、本実施形態では、便宜的に、上記実施形態と同じ符号を用いる。
第3実施形態の第1ノード10は、第1フラグ11の値と、第2フラグ12の情報の両方を確認して、全ノード10〜30で書き換えが完了しているか否かを判定する点が上記実施形態と異なる。また、第3実施形態の第1ノード10は、他ノード20、30の夫々に対応して、書き換えが完了しているか否かの情報を記憶している。以下においては、第2ノード20に対応した情報を第2ノード情報、第3ノード30に対応した情報を第3ノード情報と称する。
そして、第3実施形態の第1ノード10は、第2ノード20での書き換えが完了したと判定した場合、第2ノード情報を書き換え完了に更新する。同様に、第3実施形態の第1ノード10は、第3ノード30での書き換えが完了したと判定した場合、第3ノード情報を書き換え完了に更新する。
そして、第3実施形態の第1ノード10は、例えば、イグニッションスイッチがオンになると、図13のフローチャートを実行する。
ステップS12bでは、第2ノード情報と第3ノード情報とを確認して、他書き換え対象ノードの書き換えが完了しているか否かを判定する。なお、他書き換え対象ノードは、第2実施形態と同様、第2ノード20、第3ノード30である。
第1ノード10は、第2ノード情報と第3ノード情報の両方が書き換え完了を示している場合に、他書き換え対象ノード20、30において書き換えが完了しているとみなしてステップS13へ進む。このように、第1ノード10は、第2ノード情報と第3ノード情報の両方が書き換え完了を示しており、且つ、第1フラグ11の値が1の場合に、全ノード10〜30が書き換えを完了していると判定する(判定部、統括判定部)。
一方、第1ノード10は、第2ノード情報と第3ノード情報の少なくとも一つが書き換え完了を示していない場合に、他書き換え対象ノード20、30のうち少なくとも一つで書き換えが完了していないとみなしてステップS14へ進む。この第3実施形態の第1ノード10は、上記実施形態と同様の効果を奏することができる。また、各ノード10〜30に対応した第1ノード情報〜第3ノード情報を持つことで、ノード10〜30夫々の書き換え状況を個別に管理することができる。
(第4実施形態)
図14、図15を用いて、第4実施形態の第1ノード10に関して説明する。ここでは、主に、第4実施形態における第1〜3実施形態と異なる箇所に関して説明する。なお、本実施形態では、便宜的に、上記実施形態と同じ符号を用いることもある。
第4実施形態の第1ノード10は、自ノード10が接続されている第1通信バス210とは異なる第2通信バス220に接続されている第3ノード30と共に、車載制御システム110に含まれている点が上記実施形態と異なる。
車載制御システム110に含まれている複数のノード10〜30は、異なる通信バス210、220に接続されたノードを含んでいる。つまり、第1ノード10と第2ノード20は、第1通信バス210に接続されている。一方、第3ノード30は、第2通信バス220に接続されている。なお、第3ノード30は、第1ノード10や第2ノード20とは異なるドメインの第2通信バス220に接続していると言える。
この第1通信バス210と第2通信バス220は、中継ノード300に接続されている。そして、第1ノード10と第3ノード30や、第2ノード20と第3ノード30は、中継ノード300を介して通信可能に構成されている。このように、車載制御システム110は、異なる通信バス210、220に接続されたノードどうしが、中継ノード300を介して通信可能に構成されている。
なお、中継ノード300は、中継ID情報310を記憶している。中継ID情報は、各ノード10〜20を示すID情報である。中継ノード300を介した通信では、例えば、図15に示すような中継フレーム情報が用いられる。
従って、第1ノード10は、第1通信バス210を介して第2ノード20からの完了情報を取得可能であるだけでなく、中継ノード300を介して第3ノード30からの完了情報を取得可能に構成されている。つまり、第1ノード10は、中継ID情報に従い中継ノード300から送信された、他ノードへの各要求コマンドとACKを受信し、第2フラグ12の設定を実施する。なお、第1ノード10は、第1実施形態や第2実施形態や第3実施形態で説明したいずれかの方法で、全ノード10〜30の書き換え完了を判定する。また、要求コマンドは、消去要求コマンド、書き換え要求コマンド、ベリファイ要求コマンドなどである。
この第4実施形態の第1ノード10は、上記実施形態と同様の効果を奏することができる。つまり、第4実施形態の第1ノード10は、車載制御システム110に含まれている第3ノード30が、自ノード10とは異なる第2通信バス220に接続されていても、上記実施形態と同様の効果を奏することができる。
(第5実施形態)
図16、図17を用いて、第5実施形態の第1ノード10aに関して説明する。ここでは、主に、第5実施形態における第1〜4実施形態と異なる箇所に関して説明する。なお、本実施形態では、便宜的に、上記実施形態と同じ符号を用いることもある。
第1ノード10aは、車載制御システム120に含まれていない点が第1ノード10と異なる。また、第1ノード10aは、車載制御システム120に含まれている複数のノード20〜40の実行モードを決定する点が第1ノード10と異なる。
車載制御システム120は、通信バス200に接続された第2ノード20〜第4ノード40を備えて構成されている。第4ノード40は、第2ノード20や第3ノード30と同様であり、自ノード40に第1フラグ41を備えて構成されている。
第1ノード10aは、通信バス200に接続されているものの、車載制御システム120に含まれていない。第1ノード10aは、第1ノード10と同様に、他ノード20〜40から送信された完了情報を取得可能に構成されている。そして、第1ノード10aは、他ノード20〜40での書き換えが完了したか否かを判定するために、完了情報を取得するたびに第2フラグ12のカウント値をカウントアップすると共に、車載制御システム120に含まれているノードの数を記憶している。本実施形態におけるノードの数は3である。なお、第1ノード10aは、第1ノード10と異なり、第1フラグ11を備えていなくてもよい。
第1ノード10aは、例えば、イグニッションスイッチがオンになると、図17のフローチャートを実行する。
ステップS12cでは、全書き換え対象ノードにおける書き換えが完了しているか否かを判定する(判定部)。ここでの書き換え対象ノードは、車載制御システム120に含まれている第2ノード20〜第4ノード40の3つである。第1ノード10aは、第2フラグ12のカウント値を確認して、全書き換え対象ノードにおける書き換えが完了しているか否かを判定する。このように、第1ノード10aは、車載制御システム120に含まれている複数のノード20〜40の夫々から取得した完了情報に基づいて、複数のノード20〜40の全てが書き換えを完了しているか否かを判定する。
第1ノード10は、第2フラグ12のカウント値が3であると判定した場合に、全書き換え対象ノード20〜40において書き換えが完了しているとみなしてステップS13aへ進む。一方、第1ノード10は、第2フラグ12のカウント値が3であると判定してない場合に、全書き換え対象ノード20〜40のうち少なくとも一つで書き換えが完了していないとみなしてステップS14aへ進む。
なお、第1ノード10は、第3実施形態のように、他ノード20〜40の夫々に対応した書き換えが完了しているか否かの情報を記憶し、その情報を確認して、書き換え対象ノードの書き換えが完了しているか否かを判定してもよい。
ステップS13aでは、制御プログラム実行モードに決定する。このとき、第1ノード10aは、車載制御システム120に含まれている複数のノード20〜40の実行モードを制御モードに決定する。つまり、第1ノード10aは、自ノード10aが含まれていない車載制御システム120における複数のノード20〜40の実行モードを制御モードに決定する。よって、第1ノード10aは、複数のノード20〜40の少なくとも一つに対して、実行モードを制御モードにするように指示する。このように、第1ノード10aは、車載制御システム120に含まれている複数のノード20〜40の全てで書き換えが完了していると判定した場合、複数のノード20〜40の実行モードを制御モードに決定すると言える。
ステップS14aでは、リプロプログラム実行モードに決定する。このとき、第1ノード10aは、車載制御システム120に含まれている複数のノード20〜40の実行モードをリプログモードに決定する。つまり、第1ノード10aは、自ノード10aが含まれていない車載制御システム120における複数のノード20〜40の実行モードをリプログモードに決定する。よって、第1ノード10aは、複数のノード20〜40の少なくとも一つに対して、実行モードをリプログモードにするように指示する。このように、第1ノード10aは、車載制御システム120に含まれている複数のノード20〜40の少なくとも一つで書き換えが完了していないと判定した場合、複数のノード20〜40の実行モードをリプログモードに決定すると言える。
このように、第1ノード10aは、車載制御システム120に属していなくても第1ノード10と同様の効果を奏することができる。また、第1ノード10a及び車載制御システム120を含んでいる車載ネットワークは、車載制御システム120に属していない第1ノード10aが車載制御システム120の実行モードを決定できるため、設計自由度を向上できる。
(第6実施形態)
第6実施形態の車載ネットワークに関して説明する。ここでは、主に、第6実施形態における第1〜5実施形態と異なる箇所に関して説明する。なお、本実施形態では、便宜的に、上記実施形態と同じ符号を用いることもある。
第6実施形態の車載ネットワークは、第1実施形態と同様に、複数のノード10〜30を含む車載制御システム100を備えて構成されている。しかしながら、第6実施形態の車載ネットワークは、主に、第2ノード20と第3ノード30が第1ノード10と同様に書き換え完了を判定する点、及び、全ノード10〜30が書換ツール400に書き換え完了の通知を行う点が第1実施形態と異なる。
複数のノード10〜30の夫々は、全ノード10〜30で書き換えが完了しているか否かを判定する(判定部)。つまり、第2ノード20と第3ノード30は、第1ノード10と同様に、全ノード10〜30で書き換えが完了しているか否かを判定する。
そして、複数のノード10〜30の夫々は、全ノード10〜30が書き換えを完了していると判定した場合に実行モードを制御モードに決定する(決定部)。つまり、第2ノード20と第3ノード30は、第1ノード10と同様に、全ノード10〜30が書き換えを完了していると判定した場合、自ノードの実行モードを制御モードに決定する。
また、複数のノード10〜30の夫々は、全ノード10〜30が書き換えを完了していると判定していない場合、すなわち、少なくとも一つのノードが書き換えを完了していないと判定した場合、実行モードをリプログモードに決定する(決定部)。つまり、第2ノード20と第3ノード30は、第1ノード10と同様に、少なくとも一つのノードが書き換えを完了していないと判定した場合、自ノードの実行モードをリプログモードに決定する。
さらに、複数のノード10〜30の夫々は、実行モードを制御モードに決定した場合、全てのノード10〜30で書き換えが完了していることを、書換ツール400に対して通知する(完了通知部)。つまり、第2ノード20と第3ノード30は、第1ノード10と同様に、自ノードで書き換えが完了している場合、及び、他のノードの夫々からベリファイ要求コマンドに対するACKを取得するたびに、書き換えが完了していることを書換ツール400に通知する。これによって、書換ツール400は、全ノード10〜30からの第2フラグ設定完了通知が受信できたかを確認することで、逐次、正規のノードが接続されているか否かを確認することが可能である。
なお、各ノード10〜30は、第1実施形態や第2実施形態や第3実施形態で説明したいずれかの方法で、全ノード10〜30の書き換え完了を判定してもよい。また、車載ネットワークは、第4実施形態と同様に、中継ノード300や複数のノード10〜30を含む車載制御システム110を備えて構成されていてもよい。
各ノード10〜30は、上記第1ノード10と同様の効果を奏することができる。よって、第6実施形態の車載ネットワークは、新プログラムのノードと旧プログラムのノードが混在した状態で、制御系統における制御が実行されることを抑制できる。
(第7実施形態)
図18を用いて、第7実施形態の車載ネットワークに関して説明する。ここでは、主に、第7実施形態における第1〜6実施形態と異なる箇所に関して説明する。なお、本実施形態では、便宜的に、上記実施形態と同じ符号を用いることもある。
本実施形態では、複数の車載制御システム100、130を含む車載ネットワークを採用する。よって、第7実施形態の車載ネットワークは、第1車載制御システム100と第2車載制御システム130とを備えている点が上記実施形態と異なる。本実施形態では、複数の車載制御システムを区別するために、第1車載制御システム100と第2車載制御システム130と称する。なお、第1車載制御システム100は、上記実施形態の車載制御システム100と同様である。また、第1通信バス210は、上記実施形態の通信バス200と同様である。本発明は、これに限定されず、三つ以上の車載制御システムを含む車載ネットワークであっても採用できる。
第2車載制御システム130は、第2通信バス220に接続された第5ノード50、第6ノード60、第7ノード70を備えて構成されている。よって、第5ノード50、第6ノード60、第7ノード70は、同じ車載制御システム130に含まれたノードと言える。各ノード50〜70は、第1ノード10〜第3ノード30と同様に、実行モードとして制御モードとリプログモードを有している。第2車載制御システム130は、各ノード50〜70が制御モード時に連携して制御を行う。
第5ノード50は、第1ノード10と同様に、第1フラグ51と第2フラグ52とを備えて構成されている。また、第5ノード50は、第2車載制御システム130におけるマスタノードと言える。
第5ノード50は、第2車載制御システム130における全ノード50〜70で書き換えが完了しているか否かを判定する(判定部)。そして、第5ノード50は、第2車載制御システム130における全ノード50〜70が書き換えを完了していると判定した場合に実行モードを制御モードに決定する(決定部)。また、第5ノード50は、第2車載制御システム130における全ノード50〜70が書き換えを完了していると判定していない場合、すなわち、少なくとも一つのノードが書き換えを完了していないと判定した場合、実行モードをリプログモードに決定する(決定部)。
第6ノード60は、第2ノード20と同様に、第1フラグ61を備えて構成されている。また、第7ノード70は、第3ノード30と同様に、第1フラグ71を備えて構成されている。この第6ノード60と第7ノード70は、第2車載制御システム130におけるスレーブノードと言える。
第1通信バス210と第2通信バス220は、第4実施形態と同様に、中継ノード300に接続されている。よって、第1車載制御システム100と第2車載制御システム130は、中継ノード300を介して、通信可能に構成されている。
第1ノード10は、上記実施形態と同様の効果を奏することができる。また、第5ノード50は、第1ノード10と同様の効果を奏することができる。さらに、第7実施形態の車載ネットワークは、新プログラムのノードと旧プログラムのノードが混在した状態で、制御系統における制御が実行されることを抑制できる。同様に、第7実施形態の車載ネットワークは、新プログラムのノードと旧プログラムのノードが混在した状態で、制御系統における制御が実行されることを抑制できる。