(57)【特許請求の範囲】
【請求項１】
車両の外部に設けられた外部装置（２００）から送信された書込対象データを含む書換用データを、車載ネットワークにおけるスレーブノード（２０）に送信して、スレーブノードのプログラムを書換える車載制御装置であって、
前記外部装置から前記書換用データと、前記スレーブノードのプログラムを書換える際に前記スレーブノードが前記書換用データを受信可能となるように、前記スレーブノードとの通信態様を変換するための中継プログラムを受信する受信部（Ｓ１２１、Ｓ１６１、Ｓ２２１、Ｓ２８１）と、
前記受信部で受信した前記中継プログラムを一時的に揮発性記憶部に保存する格納部（Ｓ１３）と、
前記スレーブノードのプログラムを書換える際に、前記スレーブノードが前記書換用データを受信可能となるように、前記格納部に保存した前記中継プログラムを用いて前記通信態様を変換する変換部（Ｓ１７、Ｓ２３、Ｓ２９）と、
前記スレーブノードのプログラムを書換える際に、前記変換部で変換された後の前記通信態様で、前記外部装置から受信した前記書換用データを前記スレーブノードに送信する送信部（Ｓ１８、Ｓ１８ａ、Ｓ２４、Ｓ２４ａ、Ｓ３０、Ｓ３０ａ）と、備えている車載制御装置。
【請求項２】
前記中継プログラムは、前記通信態様を変換するための機能に加えて、前記スレーブノードとの通信を行うための機能を、さらに含んでおり、
前記送信部は、前記中継プログラムを用いて、前記書換用データを前記スレーブノードに送信する請求項１に記載の車載制御装置。
【請求項３】
前記変換部は、前記通信態様として、前記書換用データの通信フォーマットを変換する請求項１又は２に記載の車載制御装置。
【請求項４】
前記変換部は、前記通信態様として、前記書換用データを送信する際の通信プロトコルを変換する請求項１又は２に記載の車載制御装置。
【請求項５】
前記スレーブノードとの通信を行うための通信ドライバを、さらに備えており、
前記変換部は、前記通信態様として、前記書換用データの通信フォーマットを変換し、
前記送信部は、前記通信ドライバを用いて、前記変換部で変換された後の前記通信フォーマットで前記書換用データを前記スレーブノードに送信する請求項１に記載の車載制御装置。
【請求項６】
前記スレーブノードが、スレーブ側実行モードとして、前記プログラムを実行して制御を行う制御モードと、前記プログラムに基づいた制御を行うことなくリプロプログラムを実行して前記プログラムの書き換えを行うリプロモードとを有しており、
前記車載制御装置は、
マスタ側実行モードとして、マスタ用プログラムを実行して制御を行う制御モードと、前記マスタ用プログラムに基づいた制御を行うことなくマスタ用リプロプログラムを実行して前記マスタ用プログラムの書き換えを行うリプロモードとのいずれかに決定するモード決定部とを、備えており、
前記モード決定部は、前記受信部で前記中継プログラムのダウンロード要求を受信すると、前記マスタ側実行モードを前記リプロモードに決定する請求項１乃至５のいずれか一項に記載の車載制御装置。
【請求項７】
前記格納部は、前記受信部で前記中継プログラムを受信すると、前記マスタ用リプロプログラムを用いて、前記受信部で受信した前記中継プログラムを一時的に揮発性記憶部に保存する請求項６に記載の車載制御装置。
【請求項８】
前記スレーブノードは、前記書換用データを受信すると、前記外部装置に対する応答データを返信するものであり、
前記中継プログラムは、前記スレーブノードのプログラムを書換える際に前記外部装置が前記応答データを受信可能となるように、前記外部装置との通信態様を変換する機能を、さらに含んでおり、
前記車載制御装置は、
前記スレーブノードのプログラムを書換える際に、前記応答データを受信して、前記外部装置が前記応答データを受信可能となるように、前記格納部に保存した前記中継プログラムを用いて前記通信態様を変換する応答変換部（Ｓ２０、Ｓ２６、Ｓ３２）を、さらに備えた請求項１乃至６のいずれか一項に記載の車載制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車載制御装置に関する。
【背景技術】
【０００２】
従来、特許文献１に開示された電子制御装置がある。この電子制御装置は、外部装置に接続された第１マイコンと、後続の第２マイコンとを有している。第１マイコンは、後続の第２マイコンに対する書込対象データを、外部装置から受信すると、これを変換した後、自身内蔵のＲＡＭに保存して、一旦、書込対象データ全てをＲＡＭに記録する。その後、第１マイコンは、第２マイコンに対して書換コマンドを入力すると共に、第２マイコンからハンドシェイク信号を受信する度に、ＲＡＭに蓄積した書込対象データを、第２マイコンが一度に受信可能なＮＭバイト分ずつ、第２マイコンに送信する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２６８１０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、上記電子制御装置は、第１マイコンと外部装置との通信態様と、第１マイコンと第２マイコンとの通信態様とが異なることも考えられる。このような場合、第１マイコンに相当する車載制御装置としては、外部装置から受信した書込対象データなどを含む書換用データを第２マイコンに送信する際に、スレーブノードが書換用データを受信できるように、通信態様を変換する変換機能を予め備えた構成が考えられる。
【０００５】
しかしながら、車載制御装置は、外部装置から受信した書換用データの送信先であるスレーブノードが常に同じものとは限らず、通信態様が異なるスレーブノードに変わることもありうる。この場合、スレーブノードは、車載制御装置から送信された書換用データを受信できないことがある。そのため、車載制御装置は、スレーブノードが変わるたびに、変換機能を更新する必要がある。また、車載制御装置は、スレーブノードの種類の増加や管理の煩雑化により、変換機能が適切に更新されず、書込対象データの誤書込みが発生する可能性がある。
【０００６】
本開示は、上記問題点に鑑みなされたものであり、書込対象データの誤書込みの発生を抑制できる車載制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本開示は、
車両の外部に設けられた外部装置（２００）から送信された書込対象データを含む書換用データを、車載ネットワークにおけるスレーブノード（２０）に送信して、スレーブノードのプログラムを書換える車載制御装置であって、
外部装置から書換用データと、スレーブノードのプログラムを書換える際にスレーブノードが書換用データを受信可能となるように、スレーブノードとの通信態様を変換するための中継プログラムを受信する受信部（Ｓ１２１、Ｓ１６１、Ｓ２２１、Ｓ２８１）と、
受信部で受信した中継プログラムを一時的に揮発性記憶部に保存する格納部（Ｓ１３）と、
スレーブノードのプログラムを書換える際に、スレーブノードが書換用データを受信可能となるように、格納部に保存した中継プログラムを用いて通信態様を変換する変換部（Ｓ１７、Ｓ２３、Ｓ２９）と、
スレーブノードのプログラムを書換える際に、変換部で変換された後の通信態様で、外部装置から受信した書換用データをスレーブノードに送信する送信部（Ｓ１８、Ｓ１８ａ、Ｓ２４、Ｓ２４ａ、Ｓ３０、Ｓ３０ａ）と、備えていることを特徴とする。
【０００８】
このように、本開示は、外部装置から書換用データだけでなく、スレーブノードが書換用データを受信可能となるように通信態様に変換するための中継プログラムを受信し、受信した中継プログラムを一時的に揮発性記憶部に保存しておく。そして、本開示は、一時的に揮発性記憶部に保存している中継プログラムを用いて通信態様を変換して、変換された後の通信態様で、書換用データをスレーブノードに送信することで、スレーブノードのプログラムを書込対象データに書換える。このため、本開示は、スレーブノードの通信態様が変わったとしても、スレーブノードが書換用データを受信可能となるように通信態様を変換できる。よって、本開示は、書込対象データの誤書込みの発生を抑制できる。
【０００９】
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態におけるマスタノードを含む車載制御システムの概略構成を示すブロック図である。
【図２】第１実施形態におけるマスタノードの概略構成を示すブロック図である。
【図３】第１実施形態におけるマスタノードの処理動作の一部を示すフローチャートである。
【図４】第１実施形態におけるマスタノードの処理動作の他の一部を示すフローチャートである。
【図５】第１実施形態におけるマスタノードとスレーブノードと書換ツールとの処理動作を示すシーケンス図である。
【図６】第２実施形態におけるマスタノードの処理動作の一部を示すフローチャートである。
【図７】第２実施形態におけるマスタノードの処理動作の他の一部を示すフローチャートである。
【図８】第３実施形態におけるマスタノードを含む車載制御システムの概略構成を示すブロック図である。
【図９】第３実施形態におけるマスタノードの処理動作の一部を示すフローチャートである。
【図１０】第３実施形態におけるマスタノードの処理動作の他の一部を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下において、図面を参照しながら、発明を実施するための複数の形態を説明する。各形態において、先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において、構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を参照し適用することができる。
【００１２】
（第１実施形態）
図１〜図５を用いて、第１実施形態に関して説明する。なお、本実施形態では、車載制御装置としてマスタノード１０を採用する。
【００１３】
まず、図１、図２を用いて、マスタノード１０の構成、マスタノード１０を含む車載制御システム、及び書換えシステムの構成に関して説明する。車載制御システムは、車両に搭載可能に構成されている。また、車載制御装置１００は、車両に設けられた車載ネットワークの一部として設けられていると言える。
【００１４】
車載制御システムは、図１に示すように、例えば、マスタノード１０に加えて、スレーブノード２０を備えて構成されている。つまり、本実施形態では、車載制御システムに含まれている複数のノード１０、２０の一つであるマスタノード１０が車載制御装置１００に相当すると言える。なお、各ノード１０、２０は、実行モードとして、制御プログラムを実行して制御を行う制御モードと、制御プログラムに基づいた制御を行うことなくリプロプログラムを実行して制御プログラムの書換えを行うリプロモードとを有している。制御プログラムは、特許請求の範囲におけるプログラムに相当する。
【００１５】
なお、以下においては、制御プログラムの書換えを、単に書換えとも記載する。また、マスタノード１０とスレーブノード２０の実行モードを区別する場合、マスタノード１０の実行モードは、マスタ側実行モードとも称する。同様の理由によって、マスタノード１０の制御プログラムは、マスタ用プログラムとも称する。そして、マスタノード１０のリプロプログラムは、マスタ用リプロプログラムとも称する。
【００１６】
車載制御システムは、第１通信バス３１を介して、マスタノード１０と、後程説明する車両外部の書換ツール２００とが通信可能に構成されている。また、車載制御システムは、第２通信バス３２を介して、マスタノード１０とスレーブノード２０とが通信可能に構成されている。つまり、書換えシステムは、車載制御システムに加えて、外部装置に相当する書換ツール２００を備えている。
【００１７】
このように、車載制御システムは、マスタノード１０とスレーブノード２０とが直列的に接続された構成となっている。よって、スレーブノード２０は、書換ツール２００と直接通信することができない。つまり、スレーブノード２０は、マスタノード１０を介して書換ツール４００と通信可能に構成されているとも言える。例えば、マスタノード１０と書換ツール２００との間、及びマスタノード１０とスレーブノード２０との間では、後程説明する各要求コマンドや書込対象データや中継プログラムやＡＣＫなどを含む通信フレームの送受信が行われる。
【００１８】
車載制御システムは、第１通信バス３１を介して行われる通信と、第２通信バス３２を介して行われる通信とで通信態様が異なる。つまり、マスタノード１０と書換ツール２００との間での通信態様は、マスタノード１０とスレーブノード２０との間での通信態様と異なる。よって、スレーブノード２０は、リプロモード時において、例えば受信できる通信フレームの通信フォーマットが、マスタノード１０が書換ツール２００から受信できる通信フレームの通信フォーマットと異なる。また、スレーブノード２０がリプロモード時に送信する通信フレームは、書換ツール２００で受信可能な通信フォーマットではない。本実施形態では、一例として、第１通信バス３１を介して行われる通信と、第２通信バス３２を介して行われる通信とで通信プロトコルが異なる例を採用する。
【００１９】
さらに、車載制御システムは、マスタノード１０とスレーブノード２０とで、リプロプログラムのバージョンや、プログラムの書換え仕様が異なる。この場合、両ノード１０、２０がリプロモード時、マスタノード１０と書換ツール２００との間で行なわれる手順や手続きは、マスタノード１０とスレーブノード２０との間で行なわれる手順や手続きと異なる。また、手順や手続きが異なることによって、書換え時のマスタノード１０と書換ツール２００との間でやり取りされるデータ量は、マスタノード１０とスレーブノード２０との間でやり取りされるデータ量と異なる。このため、車載制御システムは、第１通信バス３１を介して行われる通信と、第２通信バス３２を介して行われる通信とで、手順や手続き、さらにはデータ量が異なることになる。よって、通信態様は、手順や手続き、さらにはデータ量も含んでいると言える。
【００２０】
各ノード１０、２０は、書換えを行う場合、書換ツール２００との通信を行う。この場合、各ノード１０、２０は、書換ツール２００から送信された複数の要求コマンドや書込対象データを個別に含む複数の通信フレームを受信する。そして、各ノード１０、２０は、各要求コマンドを実行することで制御プログラムの消去や書込対象データの書込みなどの各種処理を行いつつ、ＡＣＫを含む通信フレームを複数回返信することで書換ツール２００に応答する。
【００２１】
しかしながら、スレーブノード２０は、上記のように書換ツール２００と直接通信できない。このため、スレーブノード２０は、書換えを行う場合、書換ツール２００から送信された通信フレームをマスタノード１０から受信し、且つ、書換ツール２００への通信フレームをマスタノード１０を介して送信する。つまり、マスタノード１０は、書換ツール２００とスレーブノード２０との間で通信フレームの中継を行う。
【００２２】
ところが、マスタノード１０と書換ツール２００との間と、マスタノード１０とスレーブノード２０との間では、上記のように通信プロトコルが異なる。このため、マスタノード１０は、通信フレームを中継する場合、通信プロトコルの変換を行う必要がある。つまり、マスタノード１０は、通信フレームをスレーブノード２０が受信できるように、通信プロトコルを変換してスレーブノード２０に送信したり、通信フレームを書換ツール２００が受信できるように通信プロトコルを変換して書換ツール２００に送信したりする。なお、マスタノード１０は、通信プロトコルを変換することで、スレーブノード２０や書換ツール２００が受信できるように通信フレームの通信フォーマットを変換することになる。
【００２３】
書換ツール２００は、ディーラや工場の作業者によって操作可能に構成されている。書換ツール２００は、作業者による操作に応じて、書換えを行う。書換ツール２００は、各要求コマンドや書込対象データをマスタノード１０に送信する。各要求コマンド及び書込対象データは、マスタノード１０に対するものと、スレーブノード２０に対するものとがある。
【００２４】
このため、書換ツール２００は、マスタノード１０とスレーブノード２０の夫々に個別に対応したＩＤ情報と共に、各要求コマンド及び書込対象データを送信する。これによって、マスタノード１０とスレーブノード２０の夫々は、各要求コマンド及び書込対象データが自身に対するものであるか否かを判定できる。また、作業者は、スレーブノード２０に適した中継プログラムを把握している。よって、作業者は、書換ツール２００を操作することで、スレーブノード２０に適した中継プログラムをマスタノード１０に送信する。なお、書換ツール２００と車載制御システムとを含み、書換ツール２００でスレーブノード２０における書換えを行うシステムを、書換システムと言うこともできる。
【００２５】
さらに、書換ツール２００は、各要求コマンド及び書込対象データに加えて、書換え時にマスタノード１０がスレーブノード２０及び書換ツール２００と通信を行う場合に用いられる中継プログラムを送信する。この中継プログラムは、上記のように通信プロトコルを変換するためのプログラムである。さらに、中継プログラムは、マスタノード１０がスレーブノード２０及び書換ツール２００と通信を行うための通信ドライバとしての機能も含んでいる。
【００２６】
詳述すると、中継プログラムは、書換え時、マスタノード１０からスレーブノード２０へ通信フレームを送信する際の通信プロトコルを変換するためのプログラムである。中継プログラムは、書換え時に、スレーブノード２０が各要求コマンド及び書込対象データを受信可能となるように、スレーブノード２０との通信プロトコルを変換するためのプログラムと言える。
【００２７】
また、中継プログラムは、書換え時、マスタノード１０から書換ツール２００へ通信フレームを送信する際の通信プロトコルを変換するためのプログラムである。中継プログラムは、書換え時に、書換ツール２００がスレーブノード２０からのＡＣＫを受信可能となるように、書換ツール２００との通信プロトコルを変換するためのプログラムと言える。
【００２８】
マスタノード１０は、中継プログラムを実行して通信プロトコルを変換することで、通信フレームの通信フォーマットを変換する。このため、中継プログラムは、変換プログラとも言える。
【００２９】
なお、マスタノード１０は、スレーブノード２０が一つの場合、中継プログラムを受信したことで、各要求コマンド及び書込対象データがスレーブノード２０に対するものであると判定することもできる。つまり、マスタノード１０は、中継プログラムを受信した直後に受信した各要求コマンド及び書込対象データを、スレーブノード２０に対するものであると判定する。言い換えると、マスタノード１０は、中継プログラムを受信した後で最初に受信した書込対象データと、中継プログラムを受信してから最初に書込対象データを受信するまでの間に受信した各要求コマンドを、スレーブノード２０に対するものであると判定する。また、マスタノード１０は、中継プログラムを受信した後で、且つ、最初に書込対象データを受信した後に受信した各要求コマンド及び書込対象データを、自ノード１０に対するものであると判定する。
【００３０】
書換ツール２００は、書換えを行う際に、ケーブルとコネクタなどを介して車両と接続される。また、書換ツール２００は、書換えが完了した後など書換えを行わないとき車両から外されている。さらに、書換ツール２００は、無線通信によって、マスタノード１０と通信可能に構成されていてもよい。
【００３１】
マスタノード１０は、図２に示すように、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、第１データ送受信部１４、第２データ送受信部１５などを備えている。よって、マスタノード１０は、ＥＣＵ（Electronic Control Unit）とも言える。
【００３２】
ＣＰＵ１１は、後程説明するＲＯＭ１２に予め記憶されたマスタ用プログラムやマスタ用リプロプログラムを実行する。ＲＯＭ１２には、マスタ用プログラム、マスタ用リプロプログラム、通信ドライバが記憶されている。ＲＡＭ１３は、ＣＰＵ１１が演算処理を行う際に、演算結果などを一時的に記憶するための記憶部である。また、ＲＡＭ１３には、揮発性記憶部に相当し、書換ツール２００から受信した中継プログラムが一時的に記憶される。
【００３３】
第１データ送受信部１４は、第１通信バス３１を介して、書換ツール２００と通信を行うための通信部である。一方、第２データ送受信部１５は、第２通信バス３２を介して、スレーブノード２０と通信を行うための通信部である。ＣＰＵ１１は、制御モード時に、ＲＯＭ１２に記憶された通信ドライバを実行することで、第１データ送受信部１４及び第２データ送受信部１５を介して通信を行うことができる。
【００３４】
また、ＣＰＵ１１は、リプロモード時に、ＲＡＭ１３に一時的に記憶された中継プログラムを実行することで、第１データ送受信部１４及び第２データ送受信部１５を介して通信を行う。言い換えると、ＣＰＵ１１は、リプロモード時に、ＲＡＭ１３に一時的に記憶された中継プログラムを実行することで、スレーブノード２０と書換ツール２００との間で中継を行う。
【００３５】
さらに、マスタノード１０は、プログラムカウンタを備えている。プログラムカウンタは、ＲＯＭ１２のアドレスと、ＲＡＭ１３のアドレスとを指定可能に構成されている。つまり、プログラムカウンタは、ＣＰＵ１１が実行する命令の読出し先をＲＯＭ１２からＲＡＭ１３、及びＲＡＭ１３からＲＯＭ１２に変更可能に構成されている。
【００３６】
スレーブノード２０は、マスタノード１０と同様の構成を有している。このため、スレーブノード２０の構成に関する図示や詳細な説明は省略する。しかしながら、スレーブノード２０は、マスタノード１０と通信できればよい。このため、スレーブノード２０は、マスタノード１０と異なり、２つのデータ送受信部を備える必要がなく、データ送受信部を一つ備えていればよい。また、この他、スレーブノード２０は、制御プログラムの内容、つまり制御内容がマスタノード１０と異なる。
【００３７】
ここで、図３、図４、図５を用いて、マスタノード１０の処理動作に関して説明する。図３のフローチャートと図４のフローチャートは、マスタノード１０の一連の処理動作を示している。つまり、マスタノード１０は、図３のステップＳ２１の処理を終了すると、図４のステップＳ２２へと進む。マスタノード１０は、例えば電源が供給されると図３のフローチャートに示す処理をスタートする。このとき、マスタノード１０のプログラムカウンタはＲＯＭ１２となっている。よって、マスタノード１０は、ＲＯＭ１２に記憶されている通信ドライバを実行することで、スレーブノード２０や書換ツール２００と通信を行うことになる。
【００３８】
なお、マスタノード１０の処理動作は、書換ツール２００の処理動作及びスレーブノード２０の処理動作とも関連する。このため、以下においては、書換ツール２００の処理動作及びスレーブノード２０の処理動作と共に、マスタノード１０の処理動作を説明する。図５は、マスタノード１０、スレーブノード２０、及び書換ツール２００の処理動作を示すシーケンス図である。書換ツール２００は、図５に示すように、ダウンロード要求コマンドを含む通信フレームなどをマスタノード１０に対して送信する。図５のＤＬは、ダウンロードの略称である。
【００３９】
ステップＳ１０では、中継プログラムのダウンロード要求を受信したか否かを判定する。マスタノード１０は、書換ツール２００から受信した通信フレームを確認することで、ダウンロード要求を受信したか否かを判定する。そして、マスタノード１０は、受信した通信フレームにダウンロード要求コマンドが含まれていた場合、ダウンロード要求を受信したとみなしてステップＳ１１へ進む。また、マスタノード１０は、受信した通信フレームにダウンロード要求コマンドが含まれていなかった場合、ダウンロード要求を受信したとみなさずステップＳ１０を繰り返す。
【００４０】
マスタノード１０は、所定時間、ダウンロード要求コマンドを受信できなかった場合、図３、図４の処理を終了してもよい。つまり、マスタノード１０は、カウントアウト処理を行ってもよい。また、マスタノード１０は、以下の判定においてもカウントアウト処理を行ってもよい。
【００４１】
なお、以下のＡＣＫを受信したか否かの判定は、ステップＳ１０と同様に、通信フレームを確認することで行う。よって、以下においては、重複する説明を省略する。
【００４２】
ステップＳ１１では、ＡＣＫ応答を行う。マスタノード１０は、図５に示すように、ダウンロード要求コマンドを受信すると、書換ツール２００に対してＡＣＫを含む通信フレームを返信する。つまり、マスタノード１０は、ダウンロード要求コマンドを受信したことを書換ツール２００に伝えるためにＡＣＫを返信する。なお、書換ツール２００は、図５に示すように、ダウンロード要求コマンドに応答したＡＣＫを受信した場合、中継プログラムをマスタノード１０に対して送信する。
【００４３】
ステップＳ１２では、中継プログラムを受信したか否かを判定する。マスタノード１０は、書換ツール２００から中継プログラムを受信したと判定した場合にステップＳ１３へ進み、受信したと判定してない場合にステップＳ１２を繰り返す。つまり、マスタノード１０は、図５のステップＳ１２１に示すように、書換ツール２００から送信された中継プログラムを受信する（受信部）。そして、マスタノード１０は、中継プログラムを受信した後に、ステップＳ１３を実行する。
【００４４】
なお、マスタノード１０は、制御モードでステップＳ１０〜Ｓ１２を実行して、中継プログラムを受信すると、マスタ側実行モードをリプロモードに決定してもよい。つまり、マスタノード１０は、中継プログラムを受信した時点で、マスタ側実行モードを制御モードからリプロモードに遷移させてもよい。
【００４５】
ステップＳ１３では、中継プログラムを揮発性メモリに格納する（格納部）。マスタノード１０は、図５に示すように、受信した中継プログラムを、揮発性メモリであるＲＡＭ１３に格納する。中継プログラムは、ＲＡＭ１３に格納されるため、一時的にＲＡＭ１３に記憶されるとも言える。なお、ＲＡＭ１３は、マスタノード１０への電源供給が停止されると、記憶内容が消える。このため、中継プログラムは、マスタノード１０への電源供給が停止されると消えてしまう。
【００４６】
ステップＳ１４では、プログラムカウンタを中継プログラムの格納先へ変更する。マスタノード１０は、プログラムカウンタをＲＯＭ１２から、中継プログラムの格納先であるＲＡＭ１３へ変更する。これは、受信した通信フレームをスレーブノード２０や書換ツール２００で受信できるようにするためである。
【００４７】
つまり、マスタノード１０は、図２の一点鎖線Ｓ１で示すように、通信ドライバを実行することで書換ツール２００と通信を行い、中継プログラムを受信する。そして、マスタノード１０は、一点鎖線Ｓ２で示すように、受信した中継プログラムをＲＡＭ１３に格納する。その後、マスタノード１０は、プログラムカウンタをＲＡＭ１３へ変更する。
【００４８】
マスタノード１０は、プログラムカウンタをＲＡＭ１３へ変更すると、一点鎖線Ｓ３、Ｓ４で示すように、通信ドライバではなく中継プログラムを実行して、スレーブノード２０や書換ツール２００との通信を行うことになる。なお、図２では、スレーブノード２０から書換ツール２００への通信時の状況を示す一点鎖線を省略している。
【００４９】
ステップＳ１５では、ＡＣＫ応答を行う。マスタノード１０は、中継プログラムを受信すると、書換ツール２００に対してＡＣＫを含む通信フレームを返信する。つまり、マスタノード１０は、中継プログラムを受信したことを書換ツール２００に伝えるためにＡＣＫを返信する。
【００５０】
なお、本実施形態では、図５に示すように、中継プログラムをＲＡＭ１３に格納した後に、ＡＣＫを返信する例を採用している。よって、マスタノード１０は、受信した中継プログラムをＲＡＭ１３に格納したことを、書換ツール２００に伝えるためにＡＣＫを返信する、とも言える。そして、書換ツール４００は、中継プログラムの送信に対するＡＣＫを受信した後、スレーブノード２０のＩＤ情報と消去要求コマンドとを含む通信フレームを送信する。
【００５１】
この消去要求コマンドは、ＲＯＭに記憶されている制御プログラムの消去を要求するコマンドである。また、消去要求コマンドは、制御プログラムの書換えを行うために用いられるものであり、書換用データに相当する。つまり、消去要求コマンドは、書換用データの一つと言える。
【００５２】
ステップＳ１６では、消去要求コマンドを受信したか否かを判定する。マスタノード１０は、スレーブノード２０に対する消去要求コマンドを受信したか否かを判定する。マスタノード１０は、受信した通信フレームに消去要求コマンドとスレーブノード２０を示すＩＤ情報とが含まれているか否かに基づいて、スレーブノード２０に対する消去要求コマンドを受信したか否かを判定する。
【００５３】
そして、マスタノード１０は、消去要求コマンドとスレーブノード２０を示すＩＤ情報とが含まれている場合、スレーブノード２０に対する消去要求コマンドを受信したと判定してステップＳ１７へ進む。また、マスタノード１０は、消去要求コマンド又はスレーブノード２０を示すＩＤ情報が含まれていない場合、スレーブノード２０に対する消去要求コマンドを受信したと判定せずにステップＳ１６を繰り返す。つまり、マスタノード１０は、図５のステップＳ１６１に示すように、書換ツール２００から送信された消去要求コマンドを受信する（受信部）。そして、マスタノード１０は、消去要求コマンドを受信した後に、ステップＳ１７を実行する。
【００５４】
ステップＳ１７では、スレーブノード２０に対応した通信フォーマットに変換する（変換部）。マスタノード１０は、図５に示すように、中継プログラムを実行することで、スレーブノード２０に対する消去要求コマンドを含んでいる通信フレームの通信フォーマットを、スレーブノード２０で受信可能な通信フォーマットに変換する。このように、マスタノード１０は、書換ツール２００から受信して、一時的にＲＡＭ１３に格納している中継プログラムを用いて、通信フォーマットを変換する。
【００５５】
ステップＳ１８では、スレーブノードへ消去要求コマンドを中継する（送信部）。マスタノード１０は、図５に示すように、中継プログラムを実行することで、ステップＳ１７で変換した通信フレームをスレーブノード２０へ送信する。当然ながら、この通信フレームには、書換ツール２００から送信されたスレーブノード２０に対する消去要求コマンドが含まれている。
【００５６】
この消去要求コマンドを含む通信フレームは、スレーブノード２０で受信可能な通信フォーマットに変換されている。このため、スレーブノード２０は、通信フレームを受信することができる。よって、スレーブノード２０は、書換ツール２００から送信された消去要求コマンドを受信できる。なお、スレーブノード２０は、以下で説明する他の要求コマンドや書込対象データに関しても、マスタノード１０が通信フレームの通信フォーマットが変換するため受信できる。
【００５７】
図５に示すように、スレーブノード２０は、消去要求コマンドを受信すると、この消去要求コマンドを実行することで、自ノード２０の制御プログラムを消去する（消去処理）。そして、スレーブノード２０は、制御プログラムを消去したことを書換ツール２００に伝えるためにＡＣＫを返信する。スレーブノード２０が返信するＡＣＫは、応答データに相当する。
【００５８】
ステップＳ１９では、スレーブノードからＡＣＫを受信したか否かを判定する。マスタノード１０は、スレーブノード２０からＡＣＫを受信したと判定した場合にステップＳ２０へ進み、スレーブノードからＡＣＫを受信したと判定してない場合にステップＳ１９を繰り返す。
【００５９】
ステップＳ２０では、書換ツール２００に対応した通信フォーマットに変換する（応答変換部）。マスタノード１０は、図５に示すように、中継プログラムを実行することで、書換ツール２００に対するＡＣＫを含んでいる通信フレームの通信フォーマットを、書換ツール２００で受信可能な通信フォーマットに変換する。
【００６０】
ステップＳ２１では、書換ツールへＡＣＫを中継する。マスタノード１０は、図５に示すように、ステップＳ２０で変換した通信フレームを書換ツール２００へ送信する。当然ながら、この通信フレームには、書換ツール２００に対するＡＣＫが含まれている。
【００６１】
このＡＣＫを含む通信フレームは、書換ツール２００で受信可能な通信フォーマットに変換されている。このため、書換ツール２００は、通信フレームを受信することができる。よって、書換ツール２００は、スレーブノード２０から送信されたＡＣＫを受信できる。なお、書換ツール２００は、以下で説明する他のＡＣＫに関しても、マスタノード１０が通信フレームの通信フォーマットが変換するため受信できる。
【００６２】
そして、書換ツール２００は、図５に示すように、消去要求コマンドに応答したＡＣＫを受信した場合、書込要求コマンドをマスタノード１０に対して送信する。この書込要求コマンドは、制御プログラムが消去されたＲＯＭに、新たな制御プログラムである書込みデータの書込みを要求するコマンドである。また、書込要求コマンドは、制御プログラムの書換えを行うために用いられるものであり、書換用データに相当する。つまり、書込要求コマンドは、書換用データの一つと言える。
【００６３】
ステップＳ２２では、書込要求コマンドを受信したか否かを判定する。マスタノード１０は、スレーブノード２０に対する書込要求コマンドを受信したか否かを判定する。マスタノード１０は、受信した通信フレームに書込要求コマンドとスレーブノード２０を示すＩＤ情報とが含まれているか否かに基づいて、スレーブノード２０に対する書込要求コマンドを受信したか否かを判定する。
【００６４】
そして、マスタノード１０は、書込要求コマンドとスレーブノード２０を示すＩＤ情報とが含まれている場合、スレーブノード２０に対する書込要求コマンドを受信したと判定してステップＳ２３へ進む。また、マスタノード１０は、書込要求コマンド又はスレーブノード２０を示すＩＤ情報が含まれていない場合、スレーブノード２０に対する書込要求コマンドを受信したと判定せずにステップＳ２２を繰り返す。
【００６５】
なお、書換ツール２００は、書込要求コマンドに続いて、スレーブノード２０に対する書込対象データと、スレーブノード２０を示すＩＤ情報が含まれている通信フレームを送信する。よって、書換ツール２００は、スレーブノード２０に対する書込要求コマンドを送信し、スレーブノード２０からのＡＣＫを含む通信フレームを受信すると、スレーブノード２０に対する書込対象データを含む通信フレームを送信する。
【００６６】
このため、マスタノード１０は、図５のステップＳ２２１に示すように、書換ツール２００から送信された書込要求コマンドと書込対象データを受信する（受信部）。そして、マスタノード１０は、書込要求コマンドと書込対象データを受信した後に、ステップＳ２３を実行する。
【００６７】
なお、書込対象データは、消去処理したＲＯＭに書込むデータである。よって、書込対象データは、新しい制御プログラムに相当する。また、書込対象データは、制御プログラムの書換えを行うために用いられるものであり、書換用データに相当する。つまり、書込対象データは、書換用データの一つと言える。
【００６８】
ステップＳ２３では、ステップＳ１７と同様に、スレーブノード２０に対応した通信フォーマットに変換する（変換部）。しかしながら、ステップＳ２３では、書込要求コマンドを含んでいる通信フレームと、書込対象データを含んでいる通信フレームの通信フォーマットを変換する。
【００６９】
ステップＳ２４では、スレーブノードへ書込要求コマンドを中継する（送信部）。マスタノード１０は、図５に示すように、中継プログラムを実行することで、ステップＳ２３で変換した通信フレームをスレーブノード２０へ送信する。ここでは、書換ツール２００から送信されたスレーブノード２０に対する書込要求コマンドが含まれた通信フレームと、書換ツール２００から送信されたスレーブノード２０に対する書込対象データが含まれた通信フレームとを送信する。なお、図５のステップＳ２４では、書込対象データを省略している。
【００７０】
このように、マスタノード１０は、スレーブノード２０に対して、書込対象データを送信することで、スレーブノード２０の制御プログラムを新しい制御プログラムに書換える。言い換えると、スレーブノード２０は、書込対象データを含む通信フレームを受信した場合、書込対象データをＲＯＭに書込む（書込み処理）。これによって、スレーブノード２０は、制御プログラムを新しい制御プログラムに書換える。そして、スレーブノード２０は、書込対象データをＲＯＭに書込んだことを書換ツール２００に伝えるために、ＡＣＫを返信する。
【００７１】
ステップＳ２５では、スレーブノードからＡＣＫを受信したか否かを判定する。マスタノード１０は、スレーブノード２０からＡＣＫを受信したと判定した場合にステップＳ２６へ進み、スレーブノードからＡＣＫを受信したと判定してない場合にステップＳ２５を繰り返す。
【００７２】
ステップＳ２６では、ステップＳ２０と同様に、書換ツール２００に対応した通信フォーマットに変換する（応答変換部）。ステップＳ２７では、ステップＳ２１と同様に、書換ツールへＡＣＫを中継する。
【００７３】
そして、書換ツール２００は、図５に示すように、書込要求コマンド又は書込対象データに応答したＡＣＫを受信した場合、ベリファイ要求コマンドをマスタノード１０に対して送信する。このベリファイ要求コマンドは、新たな制御プログラムが正常に書込まれたか否かを検証することを要求するコマンドである。また、ベリファイ要求コマンドは、制御プログラムの書換えを行うために用いられるため、書換用データに相当するとみなすこともできる。つまり、ベリファイ要求コマンドは、書換用データの一つとみなすこともできる。
【００７４】
ステップＳ２８では、ベリファイ要求コマンドを受信したか否かを判定する。マスタノード１０は、スレーブノード２０に対するベリファイ要求コマンドを受信したか否かを判定する。マスタノード１０は、受信した通信フレームにベリファイ要求コマンドとスレーブノード２０を示すＩＤ情報とが含まれているか否かに基づいて、スレーブノード２０に対するベリファイ要求コマンドを受信したか否かを判定する。
【００７５】
そして、マスタノード１０は、ベリファイ要求コマンドとスレーブノード２０を示すＩＤ情報とが含まれている場合、スレーブノード２０に対するベリファイ要求コマンドを受信したと判定してステップＳ２９へ進む。また、マスタノード１０は、ベリファイ要求コマンド又はスレーブノード２０を示すＩＤ情報が含まれていない場合、スレーブノード２０に対するベリファイ要求コマンドを受信したと判定せずにステップＳ２８を繰り返す。つまり、マスタノード１０は、図５のステップＳ２８１に示すように、書換ツール２００から送信されたベリファイ要求コマンドを受信した後に、ステップＳ２９を実行する。
【００７６】
ステップＳ２９では、ステップＳ１７と同様に、スレーブノード２０に対応した通信フォーマットに変換する。しかしながら、ステップＳ２９では、ベリファイ要求コマンドを含んでいる通信フレームの通信フォーマットを変換する。なお、ステップＳ２９は、変換部に相当するとみなすこともできる。
【００７７】
ステップＳ３０では、スレーブノードへベリファイ要求コマンドを中継する。マスタノード１０は、図５に示すように、中継プログラムを実行することで、ステップＳ２９で変換した通信フレームをスレーブノード２０へ送信する。当然ながら、この通信フレームには、書換ツール２００から送信されたスレーブノード２０に対するベリファイ要求コマンドが含まれている。なお、ステップＳ３０は、送信部に相当するとみなすこともできる。
【００７８】
図５に示すように、スレーブノード２０は、ベリファイ要求コマンドを受信すると、このベリファイ要求コマンドを実行することで、自ノード２０の書換えが正常に完了したか検証する（検証処理）。そして、スレーブノード２０は、自ノード２０の書換えが正常に完了したことを書換ツール２００に伝えるために、ＡＣＫを返信する。
【００７９】
ステップＳ３１では、スレーブノードからＡＣＫを受信したか否かを判定する。マスタノード１０は、スレーブノード２０からＡＣＫを受信したと判定した場合にステップＳ３２へ進み、スレーブノードからＡＣＫを受信したと判定してない場合にステップＳ３１を繰り返す。
【００８０】
ステップＳ３２では、ステップＳ２０と同様に、書換ツール２００に対応した通信フォーマットに変換する。ステップＳ３３では、ステップＳ２１と同様に、書換ツールへＡＣＫを中継する。
【００８１】
以上のように、マスタノード１０は、書換ツール２００から書換用データだけでなく、スレーブノード２０が書換用データを受信可能となるように通信態様に変換するための中継プログラムを受信する。また、マスタノード１０は、受信した中継プログラムを一時的にＲＡＭ１３に保存しておく。
【００８２】
そして、マスタノード１０は、ＲＡＭ１３に保存している中継プログラムを用いて通信態様を変換して、変換された後の通信態様で、書換用データをスレーブノード２０に送信することで、スレーブノード２０のプログラムを書込対象データに書換える。このため、マスタノード１０は、スレーブノード２０の通信態様が変わったとしても、スレーブノード２０が書換用データを受信可能となるように通信態様を変換できる。よって、マスタノード１０は、書込対象データの誤書込みの発生を抑制できる。また、マスタノード１０は、スレーブノード２０の通信態様が変わるたびにマスタノード１０の設計変更を行う場合よりも、開発工数を低減できる。
【００８３】
さらに、マスタノード１０は、スレーブノード２０の通信態様が変わったとしても、設計変更が不要である。このため、マスタノード１０の品番数が増えることを抑えることができ、管が煩雑になることを抑制できる。
【００８４】
なお、本実施形態では、一例として、マスタノード１０が中継プログラムを実行することで通信プロトコル及び通信フォーマットを変換する例を採用した。しかしながら、本発明はこれに限定されない。上記のように、マスタノード１０とスレーブノード２０とは、リプロプログラムのバージョンや、プログラムの書換え仕様が異なる場合もある。この場合、マスタノード１０は、中継プログラムを実行することで、書換え時の手順や、手続きや、データ量を変換することで、書換ツール２００から送信された書換用データをスレーブノード２０が受信できるようにする。同様に、マスタノード１０は、中継プログラムを実行することで、書換え時の手順や、手続きや、データ量を変換することで、スレーブノード２０から送信されたＡＣＫを書換ツール２００が受信できるようにする。
【００８５】
また、マスタノード１０とスレーブノード２０とは、通信プロトコルは同じであるが、通信速度が異なる場合もある。この場合、マスタノード１０は、中継プログラムを実行して、通信プロトコルの変換を行うことなく、通信フォーマットの変換を行うことで、書換ツール２００から送信された書換用データをスレーブノード２０が受信できるようにする。同様に、マスタノード１０は、中継プログラムを実行して、通信プロトコルの変換を行うことなく、通信フォーマットの変換を行うことで、スレーブノード２０から送信されたＡＣＫを書換ツール２００が受信できるようにする。
【００８６】
つまり、中継プログラムは、スレーブノード２０のプログラムを書換える際に、スレーブノード２０が書換用データを受信可能となるように、スレーブノードとの通信態様を変換するものであれば採用できる。言い換えると、中継プログラムは、スレーブノード２０のプログラムを書換える際に、書換用データをスレーブノード２０が受信可能となるように変換する機能を有するものであれば採用できる。
【００８７】
また、本実施形態では、一例として、スレーブノード２０における書換えを行う際に、上記の各要求コマンドと書込対象データをスレーブノード２０に送信し、これらに応答してスレーブノード２０からＡＣＫを返す例を採用した。しかしながら、本発明は、これに限定されない。例えば、スレーブノード２０における書換えでは、書換ツール２００が認証要求コマンドなどを送信してもよい。この場合、スレーブノード２０は、認証コマンドを受信すると、認証用データを書換ツール２００に返信する。当然ながら、認証要求コマンドや認証用データは、上記のようにマスタノード１０を介して書換ツール２００やスレーブノード２０に中継される。
【００８８】
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。以下に、本発明のその他の形態として、第２実施形態、第３実施形態に関して説明する。これらの実施形態は、夫々単独で実施することも可能であるが、適宜組み合わせて実施することも可能である。本発明は、実施形態において示された組み合わせに限定されることなく、種々の組み合わせによって実施可能である。
【００８９】
（第２実施形態）
図６、図７を用いて、第２実施形態に関して説明する。なお、本実施形態では、車載制御装置としてマスタノード１０ａを採用する。また、本実施形態の車載制御システムは、マスタノード１０ａとスレーブノード２０とを備えていると言える。
【００９０】
ここでは、マスタノード１０ａにおける、マスタノード１０と異なる点を重点的に説明する。マスタノード１０ａは、書換え時にスレーブノード２０や書換ツール２００と通信する際に、中継プログラムを実行するのではなく、通信ドライバを実行する点がマスタノード１０と異なる。つまり、中継プログラムは、上記実施形態の中継プログラムと異なり、通信を行うための機能を含んでいない。
【００９１】
車載制御システムは、上記のように、第１通信バス３１を介して行われる通信と、第２通信バス３２を介して行われる通信とで通信態様が異なる。詳述すると、マスタノード１０ａと書換ツール２００との間での通信プロトコルは、マスタノード１０ａとスレーブノード２０との間での通信プロトコルと同じである。しかしながら、マスタノード１０ａと書換ツール２００との間での通信速度は、マスタノード１０ａとスレーブノード２０との間での通信速度と異なる。
【００９２】
このため、マスタノード１０ａは、書換え時に、書換ツール２００からスレーブノード２０への書換用データを中継する場合、及びスレーブノード２０から書換ツール２００へのＡＣＫを中継する場合、通信フレームの通信フォーマットを変える必要がある。言い換えると、マスタノード１０ａは、書換え時に、通信プロトコルを変換する必要はないが、通信フレームの通信フォーマットを変える必要がある。なお、マスタノード１０ａは、マスタノード１０と同様の構成要素を備えている。よって、マスタノード１０ａの構成に関しては、説明を省略する。
【００９３】
図６のフローチャートと図７のフローチャートは、上記図３、図４に対応しており、マスタノード１０ａの一連の処理動作を示している。つまり、マスタノード１０ａは、図６のステップＳ２４ａの処理を終了すると、図７のステップＳ２５ａへと進む。なお、図６、図７では、図３、図４と同じ処理に対して同じステップ番号を付与して詳しい説明を省略する。
【００９４】
マスタノード１０ａは、例えば電源が供給されると図６のフローチャートに示す処理をスタートする。よって、マスタノード１０ａは、例えば電源が供給されると、ステップＳ１０、Ｓ１１、Ｓ１２の順に実行して、図６のステップＳ１３を実行する。なお、ステップＳ１０〜Ｓ１３の間、マスタノード１０ａのプログラムカウンタは、上記実施形態と同様にＲＯＭ１２となっている。よって、マスタノード１０ａは、ＲＯＭ１２に記憶されている通信ドライバを実行することで、スレーブノード２０や書換ツール２００と通信できるようになっている。
【００９５】
マスタノード１０ａは、ステップＳ１３の後、プログクラムカウンタの変更を行うことなく、ステップＳ１５へ進む。これは、マスタノード１０ａが、書換え時に、中継プログラムではなく通信ドライバを実行して、スレーブノード２０や書換ツール２００と通信するためである。
【００９６】
ステップＳ１６ａでは、ステップＳ１６と同様に、消去要求コマンドを受信したか否かを判定する。しかしながら、マスタノード１０ａは、ステップＳ１６ａの判定を行う際、プログラムカウンタがＲＯＭ１２となっている。なお、マスタノード１０ａは、以下のステップＳ１９ａ、Ｓ２２ａ、Ｓ２５ａ、Ｓ２８ａ、Ｓ３１ａでも同様に、プログラムカウンタがＲＯＭ１２となっている。
【００９７】
そして、マスタノード１０ａは、ステップＳ１６ａでＹＥＳ判定した場合、ステップＳ１７を実行するまでの間に、プログラムカウンタをＲＡＭ１３へ変更する。よって、ステップＳ１７では、マスタノード１０ａは、上記実施形態と同様に、中継プログラムを実行することで、消去要求コマンドを含む通信フレームの通信フォーマットを変更する（変換部）。また、マスタノード１０ａは、通信フォーマットを変更した後、ステップＳ１８ａを実行するまでの間に、プログラムカウンタをＲＯＭ１２へ戻す。
【００９８】
つまり、マスタノード１０ａは、通信フォーマットを変更するときだけ、プログラムカウンタをＲＡＭ１３に変更し、通信フォーマットの変更が完了すると、プログラムカウンタをＲＯＭ１２に戻す。よって、マスタノード１０ａは、ステップＳ２０、Ｓ２３、Ｓ２６、Ｓ２９、Ｓ３２を実行するときだけプログラムカウンタをＲＡＭ１３に変更し、これらの処理が完了すると、プログラムカウンタをＲＯＭ１２に戻す。なお、マスタノード１０ａは、変換部に相当するステップＳ１７、Ｓ２０、Ｓ２３、Ｓ２６、Ｓ２９、Ｓ３２で通信プロトコルの変換を行うことなく通信フォーマットを変換する。
【００９９】
ステップＳ１８ａでは、ステップＳ１８と同様に、スレーブノード２０へ消去要求コマンドを中継する。しかしながら、マスタノード１０ａは、ステップＳ１８ａを行う際、プログラムカウンタがＲＯＭ１２となっている。よって、マスタノード１０ａは、中継ドライバではなく通信ドライバを実行して、通信フォーマットが変換された通信フレームをスレーブノード２０へ送信する。
【０１００】
なお、マスタノード１０ａは、ステップＳ２４ａ、Ｓ３０ａにおいても同様に、中継ドライバではなく通信ドライバを実行して、通信フォーマットが変換された通信フレームをスレーブノード２０へ送信する。さらに、マスタノード１０ａは、ステップＳ２１ａ、Ｓ２７ａ、Ｓ３３ａにおいて、中継ドライバではなく通信ドライバを実行して、書換ツール２００へ通信フレームを送信する。
【０１０１】
マスタノード１０ａは、マスタノード１０と同様の効果を奏することができる。さらに、マスタノード１０ａが実行する中継プログラムは、通信機能を有していないため、マスタノード１０が実行する中継プログラムよりも容量が小さい。このため、マスタノード１０ａは、中継プログラムを保存するためにＲＡＭ１３に確保すべき容量を低減できる。
【０１０２】
（第３実施形態）
図８、図９、図１０を用いて、第３実施形態に関して説明する。なお、本実施形態では、車載制御装置としてマスタノード１０ｂを採用する。また、本実施形態の車載制御システムは、マスタノード１０ｂとスレーブノード２０ｂとを備えていると言える。車載制御システムは、例えばＥＣＵ（Electronic Control Unit）などである。よって、マスタノード１０ｂとスレーブノード２０ｂとは、同じＥＣＵに搭載されている。
【０１０３】
スレーブノード２０ｂは、スレーブノード２０と同様に、実行モードとして、制御モードとリプロモードとを有している。なお、スレーブノード２０ｂの実行モードは、スレーブ側実行モードに相当する。
【０１０４】
一方、マスタノード１０ｂは、マスタノード１０と同様に、実行モードとして、制御モードとリプロモードとを有している。マスタノード１０ｂは、所定の条件を満たすか否かによって、自ノード１０ｂの実行モードを制御モードとリプロモードとのいずれかに決定する（モード決定部）。
【０１０５】
なお、マスタノード１０ｂの実行モードは、マスタ側実行モードに相当する。また、マスタノード１０ｂが実装する制御プログラムは、マスタ用プログラムに相当する。さらに、マスタノード１０ｂが実装するリプロプログラムは、マスタ用リプロプログラムに相当する。
【０１０６】
マスタノード１０ｂとスレーブノード２０ｂとは、実行モードが不一致の場合、適切な動作ができない。例えば、マスタノード１０ｂが制御モードでスレーブノード２０ｂがリプロモードの場合、スレーブノード２０ｂは、制御モード時にマスタノード１０ｂに送信する信号を送信しなくなる。よって、マスタノード１０ｂは、本来であればスレーブノード２０ｂから送信されてくる信号を取得できないため、制御モードでの適切な動作ができなくなる。なお、マスタノード１０ｂは、例えば、スレーブノード２０ｂが制御モード時に送信する信号を取得できたか否かで、スレーブノード２０ｂがリプロモードであるか否かを判定できる。
【０１０７】
ここで、図９に示すように、マスタノード１０ｂの処理動作に関して説明する。マスタノード１０ｂは、例えば電源が供給されると図９のフローチャートに示す処理をスタートする。なお、マスタノード１０ｂは、図９のステップＳ２１の処理を終了すると、図１０のステップＳ２２へと進む。また、図９、図１０では、図３、図４と同じ処理に対して同じステップ番号を付与して詳しい説明を省略する。
【０１０８】
マスタノード１０ｂは、上記実施形態と同様に、ステップＳ１０を実行する。そして、マスタノード１０ｂは、ステップＳ４０で、マスタ側実行モードをリプロモードへ遷移する（モード決定部）。つまり、マスタノード１０ｂは、中継プログラムを受信すると、マスタ側実行モードをリプロモードに決定する。言い換えると、マスタノード１０ｂは、中継プログラムを受信すると、所定の条件を満たしたとみなして、実行モードをリプロモードに決定する。
【０１０９】
なお、マスタノード１０ｂは、ステップＳ４０の後、上記実施形態と同様に、ステップＳ１１以降の処理を実行する。そして、マスタノード１０ｂは、リプロプログラムを実行することで、中継プログラムをＲＡＭ１３に一時的に保存してもよい。
【０１１０】
マスタノード１０ｂは、上記実施形態と同様の効果を奏することができる。さらに、マスタノード１０ｂは、スレーブノード２０ｂとの間で相互監視を行う場合であっても上記実施形態と同様の効果を奏することができる。
【０１１１】
また、車載制御装置１００は、車載制御システムそのものであってもよく、車載制御システムに含まれていてもよい。
【符号の説明】
【０１１２】
１０，１０ａ，１０ｂ…マスタノード、１１……ＣＰＵ、１２…ＲＯＭ、１３…ＲＡＭ、１４…第１データ送受信部、１５…第１データ送受信部、２０，２０ｂ…スレーブノード、３１…第１通信バス、３２…第２通信バス、１００…車載制御装置、２００…書換ツール
【図１】
0006696452.tif 000002
【図２】
0006696452.tif 000003
【図３】
0006696452.tif 000004
【図４】
0006696452.tif 000005
【図５】
0006696452.tif 000006
【図６】
0006696452.tif 000007
【図７】
0006696452.tif 000008
【図８】
0006696452.tif 000009
【図９】
0006696452.tif 000010
【図１０】
0006696452.tif 000011