以上のように、従来の更新装置では、自身のプログラムのバージョン情報と受信したバージョン情報との比較結果に基づいて、プログラムを更新するか否かを決定する。しかし、前述したように、バージョン情報は、プログラムの名称や属性、バージョン番号などの多くの情報を含むので、これを記憶する記憶部の記憶容量が増大するとともに、コンピュータの間でのバージョン情報の送受信に長い時間を要する。
また、3つのコンピュータのうち、1つのコンピュータのプログラムのみを更新する場合、それに伴って、その1つのコンピュータのバージョン情報が更新されるため、複数のコンピュータの間でバージョン情報が異なる。このような場合、バージョン情報の比較結果に基づくプログラムの更新を適切に行うためには、単独での更新か複数のコンピュータの間での更新かの情報も併せて管理する必要があり、それにより、バージョン情報などの管理が煩雑になる。
本発明は、このような課題を解決するためになされたものであり、複数の制御ユニットの制御用プログラムを組合せ更新するときに、その組合せ更新の正否を適切かつ容易に判定できるとともに、組合せ更新に関する記憶容量および更新時間を削減でき、組合せ更新の管理を簡素化することができる制御用プログラムの更新装置および更新方法を提供することを目的とする。
上記の目的を達成するため、請求項1の発明に係る制御用プログラムの更新装置1,40は、更新用プログラムPRUを送信する書換装置10,41と、制御用プログラムPRを記憶する記憶部(実施形態における(以下、本項において同じ)フラッシュROM24,34)、および書換装置10,41から制御用プログラムPRに対応する更新用プログラムPRUが送信されたときに、制御用プログラムPRを更新用プログラムPRUに書き換えることによって更新する更新手段(CPU23,33、図2のステップ4,5)をそれぞれ有する第1および第2の制御ユニット(FIECU20およびCVTECU30)と、を備え、書換装置10,41は、第1および第2の制御ユニットに記憶された2つの制御用プログラムPRの一方の更新に伴って他方の更新を必要とする組合せ更新を実行するときに、第1および第2の制御ユニットに、組合せ更新であることを特定する組合せ更新情報INFCを更新用プログラムPRUとともに送信する組合せ更新情報送信手段(信号線8,70)を有し、第1および第2の制御ユニットの各々は、組合せ更新情報INFCを受信したとき、制御用プログラムPRの更新が完了した後に、組合せ更新による更新回数CNTF,CNTCをカウントアップするカウントアップ手段(CPU23,33、図3のステップ13)と、カウントアップされた更新回数CNTF,CNTCを記憶する更新回数記憶手段(EEPROM25,35)と、を有し、第1および第2の制御ユニットの少なくとも一方は、カウントアップされた更新回数CNTF,CNTCを他方の制御ユニットに送信する送信手段(信号線9,71)を有し、他方の制御ユニットに記憶された記憶更新回数(更新回数CNTFまたは更新回数CNTC)と他方の制御ユニットが受信した受信更新回数(更新回数CNTFまたは更新回数CNTC)を比較する比較手段(CPU23,33、図3のステップ15)と、比較手段による比較の結果、記憶更新回数と受信更新回数が互いに一致していないときに、第1および第2の制御ユニットのいずれかにおいて、組合せ更新による制御用プログラムPRの更新の異常が発生していると判定する異常判定手段(CPU23,33、図3のステップ17)と、をさらに備えることを特徴とする。
この制御用プログラムの更新装置は、書換装置と第1および第2の制御ユニットを備えている。第1および第2の制御ユニットは、それぞれの記憶部に記憶された制御用プログラムに対応する更新用プログラムが書換装置から送信されたときに、制御用プログラムを更新用プログラムに書き換え、更新する。また、書換装置は、第1および第2の制御ユニットに記憶された2つの制御用プログラムの一方の更新に伴って他方の更新を必要とする組合せ更新を実行するときに、第1および第2の制御ユニットに、そのことを特定する組合せ更新情報を更新用プログラムとともに送信する。
第1および第2の制御ユニットの各々は、組合せ更新情報を受信したときに、以下の処理を実行する。まず、制御用プログラムの更新が完了した後に、組合せ更新による更新回数をカウントアップする。これにより、組合せ更新による更新回数が更新される。また、この更新回数を記憶する。さらに、第1および第2の制御ユニットの少なくとも一方は、この更新回数を他方の制御ユニットに送信する。
以上のように、本発明によれば、組合せ更新を行う場合、組合せ更新によって制御用プログラムを更新した回数だけを記憶するので、組合せ更新に関するデータの容量を小さくすることができる。それにより、組合せ更新に関するデータの記憶容量を削減することができる。また、組合せ更新に関するデータとして、更新回数を記憶し、管理するだけなので、バージョン情報を管理する従来の更新装置と比較して、組合せ更新に先立ち、バージョン情報を比較する必要がない分、更新時間を短縮することができる。以上のように、組合せ更新に関する記憶容量および更新時間を削減できる結果、組合せ更新の管理を簡素化することができる。
また、本発明によれば、他方の制御ユニットに記憶された記憶更新回数と他方の制御ユニットが受信した受信更新回数とを比較し、この比較結果に基づき、記憶更新回数と受信更新回数が互いに一致していないときに、第1および第2の制御ユニットのいずれかにおいて、組合せ更新による制御用プログラムの更新の異常が発生していると判定する。前述したように、更新回数は、組合せ更新による制御用プログラムの更新が完了した後にカウントアップされる。このため、組合せ更新に伴う制御用プログラムの更新が正常に行われていれば、自身の制御ユニットに記憶した記憶更新回数と他方の制御ユニットから受信した、他方の制御ユニットの更新回数を表す受信更新回数は互いに一致するはずである。したがって、両更新回数が互いに一致していないときには、第1および第2の制御ユニットのいずれかで、制御用プログラムの更新が正常に行われていない可能性があると適切に判定することができる。また、両更新回数に基づいて、組合せ更新の異常判定を行うので、組合せ更新の正否を容易に判定することができる。
請求項2に係る発明は、請求項1に記載の制御用プログラムの更新装置40において、制御用プログラムPRを記憶する記憶部(フラッシュROM54またはフラッシュROM64)、および書換装置41から制御用プログラムPRに対応する更新用プログラムPRUが送信されたときに、制御用プログラムPRを更新用プログラムPRUに書き換えることによって更新する更新手段(CPU53またはCPU63)を有する第3の制御ユニット(MOTECU50またはVATECU60)をさらに備え、書換装置41は、第1ないし第3の制御ユニットの少なくとも2つを対象として組合せ更新を実行するときに、少なくとも2つの制御ユニットに、組合せ更新の対象となる相手方の制御ユニットを特定する組合せ対象情報INFOを、組合せ更新情報INFCおよび更新用プログラムPRUとともに送信する組合せ対象情報送信手段(信号線70)をさらに有し、少なくともの2つの制御ユニットの各々において、カウントアップ手段は、組合せ対象情報INFOに基づき、相手方の制御ユニットごとに更新回数CNTF1〜CNTF3,CNTC1〜CNTC3,CNTM1〜CNTM3,CNTV1〜CNTV3をカウントアップし、更新回数記憶手段は、カウントアップされた更新回数CNTF1〜CNTF3,CNTC1〜CNTC3,CNTM1〜CNTM3,CNTV1〜CNTV3を相手方の制御ユニットごとに記憶し、送信手段は、カウントアップされた更新回数CNTF1〜CNTF3,CNTC1〜CNTC3,CNTM1〜CNTM3,CNTV1〜CNTV3を組合せ対象情報INFOとともに、相手方の制御ユニットに送信し、比較手段は、記憶更新回数(更新回数CNTF1〜CNTF3,CNTC1〜CNTC3,CNTM1〜CNTM3またはCNTV1〜CNTV3)と受信更新回数(更新回数CNTF1〜CNTF3,CNTC1〜CNTC3,CNTM1〜CNTM3またはCNTV1〜CNTV3)を相手方の制御ユニットごとに比較し、異常判定手段は、記憶更新回数と受信更新回数が互いに一致していないときに、一致していない2つの制御ユニットのいずれかにおいて、組合せ更新による制御用プログラムの更新の異常が発生していると判定することを特徴とする。
この制御用プログラムの更新装置は、第3の制御ユニットをさらに備えており、書換装置は、第1ないし第3の制御ユニットの少なくとも2つを対象として組合せ更新を実行するときに、少なくとも2つの制御ユニットに、組合せ更新の対象となる相手方の制御ユニットを特定する組合せ対象情報を、組合せ更新情報および更新用プログラムとともに送信する。
これらの第1〜第3の制御ユニットの各々は、組合せ更新情報を受信したときに、以下の処理を実行する。まず、制御用プログラムの更新が完了した後に、組合せ対象情報に基づき、組合せ更新による更新回数を相手方の制御ユニットごとにカウントアップし、記憶する。また、第1〜第3の制御ユニットは、この更新回数を組合せ対象情報とともに、相手方の制御ユニットに送信する。
以上のように、本発明によれば、組合せ更新を行う場合、組合せ更新によって制御用プログラムを更新した回数だけを記憶するので、組合せ更新に関する記憶容量および更新時間を削減できる結果、組合せ更新の管理を簡素化することができる。
また、本発明によれば、組合せ更新の対象となる制御ユニットの間において記憶更新回数と受信更新回数が互いに一致していないときに、一致していない2つの制御ユニットのいずれかにおいて、組合せ更新による制御用プログラムの更新の異常が発生していると判定する。前述したように、更新回数は、組合せ更新による制御用プログラムの更新が完了した後に、組合せ更新の対象となる相手方の制御ユニットごとにカウントアップされる。したがって、記憶更新回数と受信更新回数を比較するだけで、制御ユニットが3つ以上の場合においても、組合せ更新の正否を適切かつ容易に判定することができる。
請求項3に係る発明は、請求項1または2に記載の制御用プログラムの更新装置1,40において、制御用プログラムPRの更新の異常が発生していると判定されたとき、記憶更新回数と受信更新回数が互いに一致していない2つの制御ユニットの一方が異常情報を出力することを特徴とする。
この構成によれば、組合せ更新による制御用プログラムの更新の異常が発生していると判定されたときに、記憶更新回数と受信更新回数が互いに一致していない2つの制御ユニットの一方から異常情報を出力する。このため、この異常情報を検出したときに、少なくとも1つの制御ユニットにおいて制御用プログラムの更新が正常に行われていないことを確認することができる。
請求項4に係る発明は、請求項3に記載の制御用プログラムの更新装置1,40において、記憶更新回数が受信更新回数よりも小さい方の制御ユニットが、異常情報を出力することを特徴とする。
前述したように、更新回数は、制御用プログラムの更新後にカウントアップされる。このため、自身に記憶した記憶更新回数が、自身以外の他の制御ユニットから受信した受信更新回数よりも小さいときには、自身の制御ユニットにおいて、制御用プログラムの更新が適切に行われていない可能性がある。このような観点に基づき、本発明によれば、記憶更新回数が受信更新回数よりも小さい方の制御ユニットが、異常情報を出力するので、この異常情報の出力先に基づいて、どの制御ユニットにおいて制御用プログラムの更新が行われていないかを特定することができる。
請求項5の発明は、更新用プログラムPRUを送信する書換装置10,41と、制御用プログラムPRを記憶する記憶部(フラッシュROM24,34)をそれぞれ有し、書換装置10,41から制御用プログラムPRに対応する更新用プログラムPRUが送信されたときに、制御用プログラムPRを更新用プログラムPRUに書き換えることによって更新する第1および第2の制御ユニット(FIECU20およびCVTECU30)と、を備える更新装置における、制御用プログラムの更新方法であって、書換装置10,40は、第1および第2の制御ユニットに記憶された2つの制御用プログラムPRの一方の更新に伴って他方の更新を必要とする組合せ更新を実行するときに、第1および第2の制御ユニットに、組合せ更新であることを特定する組合せ更新情報INFCを更新用プログラムPRUとともに送信し、第1および第2の制御ユニットの各々は、組合せ更新情報INFCを受信したとき、制御用プログラムPRの更新が完了した後に、組合せ更新による更新回数CNTF,CNTCをカウントアップし、カウントアップされた更新回数CNTF,CNTCを記憶し、第1および第2の制御ユニットの少なくとも一方は、カウントアップされた更新回数CNTF,CNTCを他方の制御ユニットに送信し、他方の制御ユニットに記憶された記憶更新回数(更新回数CNTFまたは更新回数CNTC)と他方の制御ユニットが受信した受信更新回数(更新回数CNTFまたは更新回数CNTC)を比較し、比較の結果、記憶更新回数と受信更新回数が互いに一致していないときに、第1および第2の制御ユニットのいずれかにおいて、組合せ更新による制御用プログラムPRの更新の異常が発生していると判定することを特徴とする。
この制御用プログラムの更新方法によれば、請求項1の更新装置と同様、第1および第2の制御ユニットの各々は、組合せ更新情報を受信したとき、制御用プログラムの更新が完了した後に、組合せ更新による更新回数をカウントアップし、この更新回数を記憶する。また、第1および第2の制御ユニットの少なくとも一方は、この更新回数を他方の制御ユニットに送信する。以上により、請求項1の場合と同様、組合せ更新に関するデータの容量を小さくでき、それにより、組合せ更新に関する記憶容量および更新時間を削減できる結果、組合せ更新の管理を簡素化することができる。
さらに、本発明によれば、他方の制御ユニットに記憶された記憶更新回数と他方の制御ユニットが受信した受信更新回数が互いに一致していないときに、第1および第2の制御ユニットのいずれかにおいて、組合せ更新による制御用プログラムの更新の異常が発生していると判定する。したがって、請求項1の更新装置と同様、両更新回数の比較結果に基づいて、組合せ更新の正否を適切かつ容易に判定することができる。
請求項6に係る発明は、請求項5に記載の制御用プログラムの更新方法において、更新装置は、制御用プログラムPRを記憶する記憶部(フラッシュROM54またはフラッシュROM64)を有し、書換装置10,41から制御用プログラムPRに対応する更新用プログラムPRUが送信されたときに、制御用プログラムPRを更新用プログラムPRUに書き換えることによって更新する第3の制御ユニット(MOTECU50またはVATECU60)をさらに備え、書換装置10,41は、第1ないし第3の制御ユニットの少なくとも2つを対象として組合せ更新を実行するときに、少なくとも2つの制御ユニットに、組合せ更新の対象となる相手方の制御ユニットを特定する組合せ対象情報INFOを、組合せ更新情報INFCおよび更新用プログラムPRUとともに送信し、少なくとも2つの制御ユニットの各々において、組合せ更新情報INFCを受信したとき、制御用プログラムPRの更新が完了した後に、組合せ対象情報INFOに基づき、相手方の制御ユニットごとに更新回数CNTF1〜CNTF3,CNTC1〜CNTC3,CNTM1〜CNTM3,CNTV1〜CNTV3をカウントアップし、カウントアップされた更新回数CNTF1〜CNTF3,CNTC1〜CNTC3,CNTM1〜CNTM3,CNTV1〜CNTV3を相手方の制御ユニットごとに記憶し、カウントアップされた更新回数CNTF1〜CNTF3,CNTC1〜CNTC3,CNTM1〜CNTM3,CNTV1〜CNTV3を組合せ対象情報INFOとともに、相手方の制御ユニットに送信し、記憶更新回数(更新回数CNTF1〜CNTF3,CNTC1〜CNTC3,CNTM1〜CNTM3またはCNTV1〜CNTV3)と受信更新回数(更新回数CNTF1〜CNTF3,CNTC1〜CNTC3,CNTM1〜CNTM3またはCNTV1〜CNTV3)を相手方の制御ユニットごとに比較し、記憶更新回数と受信更新回数が互いに一致していないときに、一致していない2つの制御ユニットのいずれかにおいて、組合せ更新による制御用プログラムの更新の異常が発生していると判定することを特徴とする。
この制御用プログラムの更新方法によれば、請求項2の更新装置と同様、第1〜第3の制御ユニットの各々は、組合せ更新情報を受信したとき、制御用プログラムの更新が完了した後に、組合せ対象情報に基づき、組合せ更新による更新回数を相手方の制御ユニットごとにカウントアップし、記憶する。また、第1〜第3の制御ユニットは、この更新回数を組合せ対象情報とともに、相手方の制御ユニットに送信する。以上により、請求項2の場合と同様、組合せ更新に関するデータの容量を小さくでき、それにより、組合せ更新に関する記憶容量および更新時間を削減できる結果、組合せ更新の管理を簡素化することができる。
さらに、本発明によれば、記憶更新回数と受信更新回数が互いに一致していないときに、一致していない2つの制御ユニットのいずれにおいて、組合せ更新による制御用プログラムの更新の異常が発生していると判定する。したがって、両更新回数を比較するだけで、請求項2の更新装置と同様、制御ユニットが3つ以上の場合においても、両更新回数の比較結果に基づいて、組合せ更新の正否を適切かつ容易に判定することができる。
請求項7に係る発明は、請求項5または6に記載の制御用プログラムの更新方法において、制御用プログラムPRの更新の異常が発生していると判定されたとき、記憶更新回数と受信更新回数が互いに一致していない2つの制御ユニットの一方が異常情報を出力することを特徴とする。
この構成によれば、請求項3の場合と同様、異常情報を検出したときに、少なくとも1つの制御ユニットにおいて制御用プログラムの更新が正常に行われていないことを確認することができる。
請求項8に係る発明は、請求項7に記載の制御用プログラムの更新方法において、記憶更新回数が受信更新回数よりも小さい方の制御ユニットが、異常情報を出力することを特徴とする。
この構成によれば、請求項4の場合と同様、異常情報の出力先に基づいて、どの制御ユニットにおいて制御用プログラムの更新が行われていないかを特定することができる。
以下、図面を参照しながら、本発明の好ましい実施形態について説明する。図1は、本発明の第1実施形態による制御用プログラムの更新装置1を、これを適用した車両Vとともに概略的に示している。車両Vは、その駆動源として、内燃機関(以下「エンジン」という)2を備えている。
エンジン2には、燃料噴射弁(以下「インジェクタ」という)3が取り付けられている。インジェクタ3の開弁時間および開弁時期は、後述する燃料噴射制御用のECU(以下「FIECU」という)20によって制御され、それにより、燃料噴射量および燃料噴射時期が制御される。
また、エンジン2は、無段変速機(以下「CVT」という)4を介して駆動輪(図示せず)に接続されている。CVT4は、後述する変速比制御用のECU(以下「CVTECU」という)30によって制御され、それにより、変速比が制御される。
更新装置1は、燃料の噴射量および噴射時期を制御するための燃料制御用プログラムPRF、および変速比を制御するための変速制御用プログラムPRCを更新するためのものであり、書換装置10、FIECU20、CVTECU30、書換装置10とFIECU20およびCVTECU30を接続する信号線8、およびFIECU20とCVTECU30接続する信号線9を備えている。
書換装置10は、燃料制御用プログラムPRFとして書き換えるべき燃料更新用プログラムPRUF、および変速制御用プログラムPRCとして書き換えるべき変速更新用プログラムPRUCを取得し、FIECU20およびCVTECU30に送信するためのものである。なお、以下の説明では、燃料制御用プログラムPRFおよび変速制御用プログラムPRCを適宜、総称して「制御用プログラムPR」といい、燃料更新用プログラムPRUFおよび変速更新用プログラムPRUCを適宜、総称して「更新用プログラムPRU」という。書換装置10には、書換時、更新用プログラムPRUを記録した記録媒体(図示せず)が装着される。書換装置10は、この記録媒体から更新用プログラムPRUをブロック単位で読み出し、信号線8を介してFIECU20およびCVTECU30に送信する。なお、この更新用プログラムPRUの最初のブロックには、更新用プログラムPRUが燃料更新用プログラムPRUFまたは変速更新用プログラムPRUCのいずれであるかを表す情報(以下「更新情報」という)と、更新用プログラムPRUのブロック数を表す情報が、プログラム情報として記録されている。
この書換装置10では、更新用プログラムPRUの送信に先立ち、組合せ更新情報INFCをFIECU20およびCVTECU30に送信する。具体的には、燃料制御用プログラムPRFおよび変速制御用プログラムPRCの一方の更新に伴って他方の更新を必要とする組合せ更新を実行するときに、そのことを表す組合せ更新情報INFCが送信される。なお、組合せ更新が実行されるときには、更新用プログラムPRUは、燃料更新用プログラムPRUFおよび変速更新用プログラムPRUCの順で送信される。
FIECU20は、通信用インターフェース(I/F)21、マイコン22およびEEPROM25などで構成されている。
通信用I/F21は、書換装置10とマイコン22の後述するCPU23との間でCAN通信を行うためのものであり、書換装置10から送信された更新用プログラムPRUを信号線8を介して受信し、CPU23に送信する。
マイコン22は、CPU23およびフラッシュROM24などで構成されている。フラッシュROM24の記憶領域には、燃料制御用プログラムPRFが記憶されている。この燃料制御用プログラムPRFは、記憶領域に割り当てられたアドレスによって指定されるアドレス空間に、ブロック単位で記憶されている。
EEPROM25には、組合せ更新による燃料制御用プログラムPRFの更新回数CNTFが記憶されている。この更新回数CNTFは、CPU23によって更新される。
CPU23は、燃料制御用プログラムPRFを実行することによって、インジェクタ3の開弁時間および開弁時期を設定するとともに、その結果に基づいて、インジェクタ3を制御するための制御信号を生成し、インジェクタ3に出力する。また、CPU23は、書換装置10から燃料更新用プログラムPRUFを受信したときに、燃料制御用プログラムPRFの更新処理を実行するとともに、組合せ更新情報INFCを受信したときに、組合せ更新による燃料制御用プログラムPRFの更新の異常判定を行う。
CVTECU30は、通信用インターフェース(I/F)31、マイコン32およびEEPROM35などで構成されている。
通信用I/F31は、書換装置10とマイコン32の後述するCPU33との間でCAN通信を行うためのものであり、書換装置10から送信された更新用プログラムPRUを信号線8を介して受信し、CPU33に送信する。
マイコン32は、CPU33およびフラッシュROM34などで構成されている。フラッシュROM34の記憶領域には、変速制御用プログラムPRCが記憶されている。この変速制御用プログラムPRCは、記憶領域に割り当てられたアドレスによって指定されるアドレス空間に、ブロック単位で記憶されている。
EEPROM35には、組合せ更新による変速制御用プログラムPRCの更新回数CNTCが記憶されている。この更新回数CNTCは、CPU33によって更新される。
CPU33は、変速制御用プログラムPRCを実行することによって、CVT4の変速比を設定するとともに、その結果に基づいて、CVT4を制御するための制御信号を生成し、CVT4に出力する。また、CPU33は、書換装置10から変速更新用プログラムPRUCを受信したときに、変速制御用プログラムPRCの更新処理を実行するとともに、組合せ更新情報INFCを受信したときに、組合せ更新による変速制御用プログラムPRCの更新の異常判定を行う。
図2は、上述した制御用プログラムPRの更新処理を示すフローチャートである。なお、制御用プログラムPRの更新処理の実行内容は、FIECU20とCVTECU30との間で互いに同じであるため、以下では、FIECU20による燃料制御用プログラムPRFの更新処理を例にとり、説明を行うものとする。
本処理では、まずステップ1(「S1」と図示。以下同じ)において、受信した更新用プログラムPRUが燃料更新用プログラムPRUFであるか否かを判別する。この判別は、更新用プログラムPRUに含まれるプログラム情報中の更新情報に基づいて行われ、具体的には、燃料更新用プログラムPRUFであることを表す更新情報を受信したときに、更新用プログラムPRUが燃料更新用プログラムPRUFであると判別される。この判別結果がNOで、更新用プログラムPRUが燃料更新用プログラムPRUFでないときには、燃料更新用プログラムPRUFを受信していないとして、燃料更新用プログラムPRUFの更新を行うことなく、そのまま本処理を終了する。
一方、ステップ1の判別結果がYESで、燃料更新用プログラムPRUFを受信したときには、フラッシュROM24に記憶された燃料制御用プログラムPRFの内容を全部消去した(ステップ2)後、更新フラグF_UPDFを「0」にリセットする(ステップ3)。
次に、書換装置10から燃料更新用プログラムPRUFをブロック単位で受信し(ステップ4)、受信した燃料更新用プログラムPRUFを、フラッシュROM24の対応するアドレス空間にブロック単位で書き込む(ステップ5)。これにより、燃料制御用プログラムPRFが順次、更新される。
次いで、燃料制御用プログラムPRFの更新が完了したか否かを判別する(ステップ6)。具体的には、更新された燃料制御用プログラムPRFのブロック数が、燃料更新用プログラムPRUFのプログラム情報に含まれるブロック数と一致したときに、更新が完了したと判別される。このステップ6の判別結果がNOのときには、前記ステップ4に戻り、ステップ4以降の処理内容を繰り返し実行する。
一方、ステップ6の判別結果がYESで、燃料制御用プログラムPRFの更新が完了したときには、そのことを表すために、更新フラグF_UPDFを「1」にセットし(ステップ7)、本処理を終了する。
変速制御用プログラムPRCの更新は、変速更新用プログラムPRUCを受信したときに行われる。その場合、フラッシュROM34に記憶された変速制御用プログラムPRCの内容を全部消去し、前述したCPU23による燃料制御用プログラムPRFの更新の場合と同様、ブロック単位で受信した変速更新用プログラムPRUCを、フラッシュROM34の対応するアドレス空間に書き込むことによって、行われる。また、CPU33は、更新した変速制御用プログラムPRCのブロック数が、変速更新用プログラムPRUCの更新情報に含まれるブロック数に一致したときに、変速制御用プログラムPRCの更新が完了したとして、そのことを表すために、更新フラグF_UPDCを「1」にセットする。
図3は、上述した制御用プログラムPRの組合せ更新の異常判定処理を示すフローチャートである。なお、この異常判定処理の実行内容は、FIECU20とCVTECU30とで互いに同じであるため、以下では、FIECU20の異常判定処理を例にとり、説明を行うものとする。
本処理では、まずステップ11において、組合せ更新情報INFCを受信したか否かを判別する。この判別結果がNOで、組合せ更新情報INFCを受信していないときには、異常判定を行うことなく、そのまま本処理を終了する。
一方、ステップ11の判別結果がYESのときには、更新フラグF_UPDFが、前回と今回の間で「0」から「1」に変化したか否かを判別する(ステップ12)。この判別結果がYESで、燃料制御用プログラムPRFの更新が完了した直後のときには、更新回数CNTFをカウントアップした(ステップ13)後、ステップ14に進む。この更新回数CNTFのカウントアップは、EEPROM25に記憶した更新回数CNTFを読み出し、この更新回数CNTFに値1を加算することによって、行われる。また、EEPROM25に記憶された更新回数CNTFを上述したようにしてカウントアップされた更新回数CNTFに書き換え、更新する。
また、ステップ12の判別結果がNOのときには、ステップ13をスキップし、ステップ14に進む。以上のように、EEPROM25に記憶された更新回数CNTFは、組合せ更新による燃料制御用プログラムPRFの更新が完了した直後にのみ更新されるので、この更新回数CNTFは、組合せ更新によって燃料制御用プログラムPRFが更新された回数を表す。
前記ステップ12または13に続くステップ14では、EEPROM25に記憶された更新回数CNTFを信号線9を介してCVTECU30に送信する。
次に、更新回数CNTFが、変速制御用プログラムPRCの更新回数CNTCよりも小さいか否かを判別する(ステップ15)。この変速制御用プログラムPRCの更新回数CNTCは、組合せ更新によって変速制御用プログラムPRCが更新された回数を表し、燃料制御用プログラムPRFの更新回数CNTFの場合と同様、変速制御用プログラムPRCの更新が完了した直後に更新され、EEPROM35に記憶される。また、この更新回数CNTCは、信号線9を介してFIECU20に送信される。
このステップ15の判別結果がNOで、EEPROM25に記憶した更新回数CNTFが受信した更新回数CNTC以上のときには、組合せ更新による燃料制御用プログラムPRFの更新が正常に行われたとして、そのことを表すために、異常フラグF_UPDFNGを「0」にセットし(ステップ16)、本処理を終了する。
一方、ステップ15の判別結果がYESで、更新回数CNTF<更新回数CNTCのときには、燃料制御用プログラムPRFの更新の異常が生じていると判定し、そのことを表すために、異常フラグF_UPDFNGを「1」にセットした(ステップ17)後、警告灯7を点灯させ(ステップ18)、本処理を終了する。
また、変速制御用プログラムPRCの組合せ更新の異常判定処理も、燃料制御用プログラムPRFの更新の異常判定処理の場合と同様、組合せ更新情報INFCの受信中にEEPROM35に記憶した更新回数CNTCが、同じ組合せ更新情報INFCの受信中にFIECU20から受信した更新回数CNTFよりも小さいときに、変速制御用プログラムPRCの更新の異常が生じていると判定し、そのことを表すために、異常フラグF_UPDCNGを「1」にセットする。
以上のように、第1実施形態によれば、組合せ更新を行う場合、FIECU20およびCVTECU30ごとに更新回数CNTF、CNTCを記憶するだけなので、組合せ更新に関するデータの容量を小さくすることができる。それにより、組合せ更新に関するデータの記憶容量を削減できるとともに、更新時間を短縮できる結果、組合せ更新の管理を簡素化することができる。
また、両更新回数CNTF、CNTCは、制御用プログラムPRの更新が完了した直後にのみカウントアップされるため、組合せ更新に伴う制御用プログラムPRの更新が正常に行われていれば、両更新回数CNTF、CNTCは互いに一致する。このため、FIECU20に記憶された更新回数CNTFとCVTECU30に記憶された更新回数CNTCとを比較し、この比較結果に基づき、両者が一致していないときに、FIECU20とCVTECU30のいずれかで、制御用プログラムPRの更新が正常に行われていないと適切に判定することができる。さらに、両更新回数CNTF、CNTCに基づいて、組合せ更新の異常判定を行うので、その正否を容易に判定することができる。
さらには、更新回数CNTF、CNTCの小さい方のFIECU20およびCVTECU30が、異常フラグF_UPDFNG、F_UPDCNGを「1」にセットするとともに、警告灯7を点灯させるので、その場合には、異常フラグF_UPDFNG、F_UPDCNGのセット状態に基づいて、FIECU20とCVTECU30のどちらで、制御用プログラムPRの更新が行われていないかを特定することができる。
図4は、本発明の第2実施形態による制御用プログラムの更新装置40を示している。この更新装置40は、前述した燃料制御用プログラムPRFおよび変速制御用プログラムPRCに加え、モータ5を制御するためのモータ制御用プログラムPRM、およびバッテリ6を制御するためのバッテリ制御用プログラムPRVを更新するためのものである。なお、以下の説明では、前述した第1実施形態と同様の構成については、同じ参照番号を付し、その詳細な説明は省略するものとする。この更新装置40は、書換装置41、FIECU20、CVTECU30、MOTECU50、VATECU60、書換装置41とECU20、30、50、60を接続する信号線70、およびECU20、30、50、60を相互に接続する信号線71を備えている。
書換装置41は、燃料制御用プログラムPRFとして書き換えるべき燃料更新用プログラムPRUF、変速制御用プログラムPRCとして書き換えるべき変速更新用プログラムPRUC、モータ制御用プログラムPRMとして書き換えるべきモータ更新用プログラムPRUM、およびバッテリ制御用プログラムPRVとして書き換えるべきバッテリ更新用プログラムPRUVを取得し、ECU20、30、50、60にそれぞれ送信するためのものである。なお、以下の説明では、燃料制御用プログラムPRF、変速制御用プログラムPRC、モータ制御用プログラムPRMおよびバッテリ制御用プログラムPRVを適宜、総称して「制御用プログラムPR」といい、燃料更新用プログラムPRUF、変速更新用プログラムPRUC、モータ更新用プログラムPRUMおよびバッテリ更新用プログラムPRUVを適宜、総称して「更新用プログラムPRU」という。
書換装置41には、書換時、更新用プログラムPRUを記録した記録媒体(図示せず)が装着される。書換装置41は、この記録媒体から更新用プログラムPRUをブロック単位で読み出し、信号線70を介してECU20、30、50、60にそれぞれ送信する。なお、この更新用プログラムPRUの最初のブロックには、更新用プログラムPRUが、燃料更新用プログラムPRUF、変速更新用プログラムPRUC、モータ更新用プログラムPRUM、およびバッテリ更新用プログラムPRUVのいずれであるかを表す更新情報と、更新用プログラムPRUのブロック数を表す情報が、プログラム情報として記録されている。
この書換装置41では、更新用プログラムPRUの送信に先立ち、組合せ更新情報INFCおよび組合せ対象情報INFOをECU20、30、50、60にそれぞれ送信する。具体的には、4つのECU20、30、50、60の少なくとも2つを対象として、組合せ更新を実行するときに、組合せ更新情報INFCが送信され、このときには、この組合せ更新の対象となるECU20、30、50、60を特定するための組合せ対象情報INFOも送信される。
図5に示すように、FIECU20のEEPROM25には、組合せ更新の対象となる相手ごとに、更新回数CNTF1〜CNTF3が、アドレスによって指定されたアドレス空間に記憶されている。例えば、更新回数CNTF1は、組合せ更新の対象となる相手方がCVTECU30のときのFIECU20によって燃料制御用プログラムPRFが更新された回数を表し、更新回数CNTF2は、組合せ更新の対象となる相手方がMOTECU50のときのFIECU20によって燃料制御用プログラムPRFが更新された回数を表し、更新回数CNTF3は、組合せ更新の対象となる相手方がVATECU60のときのFIECU20によって燃料制御用プログラムPRFが更新された回数を表す。これらの更新回数CNTF1〜CNTF3は、CPU23によって更新される。具体的には、CPU23は、組合せ対象情報INFOに応じ、アドレスを特定し、そのアドレスによって指定されたアドレス空間に記憶された更新回数CNTF1〜CNTF3のいずれかを更新する。
同様にして、CVTECU30のEEPROM35には、組合せ更新の対象となる相手ごとに、更新回数CNTC1〜CNTC3が、アドレスによって指定されたアドレス空間に記憶されている。例えば、更新回数CNTC1は、組合せ更新の対象となる相手方がFIECU20のときのCVTECU30によって変速制御用プログラムPRCが更新された回数を表し、更新回数CNTF2は、組合せ対象となる相手方がMOTECU50のときのCVTECU30によって変速制御用プログラムPRCが更新された回数を表し、更新回数CNTC3は、組合せ更新の対象となる相手方がVATECU60のときのCVTECU30によって変速制御用プログラムPRCが更新された回数を表す。これらの更新回数CNTC1〜CNTC3は、CPU23の場合と同様、組合せ対象情報INFOに応じて、CPU33によって更新される。
MOTECU50は、通信用インターフェース(I/F)51、マイコン52およびEEPROM55などで構成されている。
通信用I/F51は、書換装置41とマイコン52の後述するCPU53との間でCAN通信を行うためのものであり、書換装置41から送信された更新用プログラムPRUを信号線70を介して受信し、CPU53に送信する。
マイコン52は、CPU53およびフラッシュROM54などで構成されている。フラッシュROM54の記憶領域には、モータ制御用プログラムPRMが記憶されている。このモータ制御用プログラムPRMは、記憶領域に割り当てられたアドレスによって指定されるアドレス空間に、ブロック単位で記憶されている。
EEPROM55には、組合せ更新の対象となる相手ごとに、更新回数CNTM1〜CNTM3が、アドレスによって指定されたアドレス空間に記憶されている。例えば、更新回数CNTM1は、組合せ更新の対象となる相手方がFIECU20のときのMOTECU50によってモータ制御用プログラムPRMが更新された回数を表し、更新回数CNTM2は、組合せ更新の対象となる相手方がCVTECU30のときのMOTECU50によってモータ制御用プログラムPRMが更新された回数を表し、更新回数CNTM3は、組合せ更新の対象となる相手方がVATECU60のときのMOTECU50によってモータ制御用プログラムPRMが更新された回数を表す。これらの更新回数CNTM1〜CNTM3は、CPU23、33の場合と同様、組合せ対象情報INFOに応じて、CPU53によって更新される。
CPU53は、モータ制御用プログラムPRMを実行することによって、モータ5を制御するための制御信号を生成し、モータ5を制御する。また、CPU53は、書換装置41からモータ更新用プログラムPRUMを受信したときに、モータ制御用プログラムPRMの更新処理を実行するとともに、組合せ更新情報INFCを受信したときに、組合せ更新によるモータ制御用プログラムPRMの更新の異常判定を行う。
VATECU60は、通信用インターフェース(I/F)61、マイコン62およびEEPROM65などで構成されている。
通信用I/F61は、書換装置41とマイコン62の後述するCPU63との間でCAN通信を行うためのものであり、書換装置41から送信された更新用プログラムPRUを信号線70を介して受信し、CPU63に送信する。
マイコン62は、CPU63およびフラッシュROM64などで構成されている。フラッシュROM64の記憶領域には、バッテリ制御用プログラムPRVが記憶されている。このバッテリ制御用プログラムPRVは、記憶領域に割り当てられたアドレスによって指定されるアドレス空間に、ブロック単位で記憶されている。
EEPROM65には、組合せ更新の対象となる相手ごとに、更新回数CNTV1〜CNTV3が、アドレスによって指定されたアドレス空間に記憶されている。例えば、更新回数CNTV1は、組合せ更新の対象となる相手方がFIECU20のときのVATECU60によってバッテリ制御用プログラムPRVが更新された回数を表し、更新回数CNTV2は、組合せ更新の対象となる相手方がCVTECU30のときのVATECU60によってバッテリ制御用プログラムPRVが更新された回数を表し、更新回数CNTV3は、組合せ更新の対象となる相手方がMOTECU50のときのVATECU60によってバッテリ制御用プログラムPRVが更新された回数を表す。これらの更新回数CNTV1〜CNTV3は、CPU23などの場合と同様、組合せ対象情報INFOに応じて、CPU63によって更新される。
CPU63は、バッテリ制御用プログラムPRVを実行することによって、バッテリ6を制御する。また、CPU63は、書換装置41からバッテリ更新用プログラムPRUVを受信したときに、バッテリ制御用プログラムPRVの更新処理を実行するとともに、組合せ更新情報INFCを受信したときに、組合せ更新によるバッテリ制御用プログラムPRVの更新の異常判定を行う。
なお、CPU53によるモータ制御用プログラムPRMおよびCPU63によるバッテリ制御用プログラムPRVの更新処理の実行内容は、前述した第1実施形態のCPU23による燃料制御用プログラムPRFの更新処理の実行内容と同じであるため、その詳細な説明は省略するものとする。
図6は、前述した制御用プログラムPRの更新の異常判定処理を示すフローチャートである。なお、この異常判定処理の実行内容は、FIECU20、CVTECU30、MOTECU50およびVATECU60の間で互いに同じであるため、以下では、FIECU20の異常判定処理を例にとり、制御用プログラムPRの更新をすべてのECU20、30、50、60で行う場合について説明を行うものとする。なお、以下の説明では、前述した第1実施形態と同様の実行内容については、同じステップ番号を付し、その詳細な説明は省略するものとする。
本処理では、まずステップ11において、組合せ更新情報INFCを受信したときには、燃料制御用プログラムPRFの更新の完了直後か否かを判別する(ステップ12)。この判別結果がYESで、燃料制御用プログラムPRFの更新の完了直後には、更新回数CNTF1〜CNTF3をカウントアップする(ステップ21)。具体的には、組合せ対象情報INFOに対応するアドレスによって指定されたアドレス空間に記憶された更新回数CNTF1〜CNTF3を値1だけカウントアップする。また、この更新回数CNTF1〜CNTF3を組合せ対象情報INFOとともに、信号線71を介してCVTECU30、MOTECU50およびVATECU60に送信する(ステップ22)。
一方、前記ステップ12の判別結果がNOで、燃料制御用プログラムPRFの更新の完了直後以外のときには、ステップ22にそのまま進む。
ステップ22に続くステップ23では、記憶した更新回数CNTF1と受信した更新回数CNTC1とが、記憶した更新回数CNTF2と受信した更新回数CNTM1とが、記憶した更新回数CNTF3と受信した更新回数CNTV1とが、それぞれ互いに一致しているか否かを判別する(ステップ23)。
この判別結果がYESで、CNTF1=CNTM1、CNTF2=CNTM1で、かつCNTF3=CNTV1のときには、組合せ更新による燃料制御用プログラムPRFの更新が正常に行われたとして、そのことを表すために、異常フラグF_UPDFNGを「0」にセットし(ステップ16)、本処理を終了する。
一方、ステップ23の判別結果がNOのときには、記憶した更新回数CNTF1が受信した更新回数CNTC1よりも小さいか否かを判別する(ステップ24)。この判別結果がYESで、CNTF1<CNTC1のときには、燃料制御用プログラムPRFの更新の異常が生じていると判定し、そのことを表すために、異常フラグF_UPDFNGを「1」にセットした(ステップ17)後、警告灯7を点灯させ(ステップ18)、本処理を終了する。
また、ステップ24の判別結果がNOのときには、記憶した更新回数CNTF2が受信した更新回数CNTM1よりも小さいか否かを判別する(ステップ25)。この判別結果がYESで、CNTF2<CNTM1のときには、燃料制御用プログラムPRFの更新の異常が生じていると判定し、前記ステップ17以降を実行する。
一方、ステップ25の判別結果がNOのときには、記憶した更新回数CNTF3が受信した更新回数CNTV1よりも小さいか否かを判別する(ステップ26)。この判別結果がYESで、CNTF3<CNTV1のときには、燃料制御用プログラムPRFの更新の異常が生じていると判定し、前記ステップ17以降を実行する。
また、ステップ26の判別結果がNOのときには、記憶した更新回数CNTF1〜CNTF3と受信した更新回数CNTC1、CNTM1、CNTV1とが互いに一致していないものの、記憶した更新回数CNTF1〜CNTF3が受信した更新回数CNTC1、CNTM1、CNTV1以上であることから、制御用プログラムPRの更新が正常に行われていないのが他のECU30、50、60であり、燃料制御用プログラムPRFの更新は正常に行われたと判定し、そのことを表すために、前記ステップ16に進み、異常フラグF_UPDFNGを「0」にセットした後、本処理を終了する。
また、変速制御用プログラムPRC、モータ制御用プログラムPRMおよびバッテリ制御用プログラムPRVの組合せ更新の異常判定処理も、燃料制御用プログラムPRFの場合と同様に行われる。すなわち、CVTECU30では、記憶した更新回数CNTC1〜CNTC3が受信した更新回数CNTF1、CNTM2、CNTV2とそれぞれ一致していないときには、記憶した更新回数CNTC1〜CNTC3と受信した更新回数CNTF1、CNTM2、CNTV2との大小関係に応じて、MOTECU50では、記憶した更新回数CNTM1〜CNTM3と受信した更新回数CNTF2、CNTC2、CNTV3との大小関係に応じて、VATECU60では、記憶した更新回数CNTV1〜CNTV3と受信した更新回数CNTF3、CNTC3、CNTM3との大小関係に応じて、それぞれ異常判定が行われる。また、異常判定において比較される更新回数は、組合せ対象情報INFOに応じて変更される。
さらに、組合せ更新の対象が、4つのECU20、30、50、60のうちの3つの場合においても、前述した第2実施形態と同様、組合せ対象情報INFOに基づいて、組合せ更新による更新回数を相手方のECUごとにカウントアップするとともに、記憶し、記憶した更新回数と他のECUから受信した更新回数とを比較することによって、制御用プログラムの更新の異常判定を行うことができる。
以上のように、第2実施形態によれば、組合せ更新情報INFCを受信したときには、組合せ対象情報INFOに基づき、組合せ更新による更新回数CNTF1〜CNTF3、CNTC1〜CNTC3、CNTM1〜CNTM3、CNTV1〜CNTV3を相手方のECU20、30、50、60ごとにカウントアップし、記憶するとともに、組合せ対処情報INFOとともに相手方のECU20、30、50、60に送信する。そして、記憶した更新回数CNTF1〜CNTF3、CNTC1〜CNTC3、CNTM1〜CNTM3またはCNTV1〜CNTV3と受信した更新回数CNTF1〜CNTF3、CNTC1〜CNTC3、CNTM1〜CNTM3、CNTV1〜CNTV3のいずれかを比較するだけで、ECU20、30、50、60が3つ以上の場合においても、組合せ更新の正否を適切かつ容易に判定することができる。
なお、本発明は、説明した実施形態に限定されることなく、種々の態様で実施することができる。例えば、第1実施形態では、制御用プログラムPRの更新の異常判定を、FIECU20とCVTECU30のそれぞれで行っているが、これに限らず、いずれか一方のECUで行ってもよい。その場合、記憶した更新回数と受信した更新回数が一致していないときに、制御用プログラムの更新の異常が生じていると判定される。
また、実施形態では、更新回数を、カウントアップすることによって求めているが、これに限らず、例えば所定値からカウントダウンすることによって求めてもよい。
さらに、実施形態では、異常判定を、ECU20、30、50、60でそれぞれ行っているが、これに限らず、更新回数に応じて、上記ECU以外の他の制御ユニットで行ってもよい。その他、本発明の趣旨の範囲内で、細部の構成を適宜、変更することが可能である。