(57)【特許請求の範囲】
【請求項１】
マスタユニットと、該マスタユニットと通信線を介して通信可能に接続されるＮ個（但し、Ｎは３以上の整数）のスレーブユニットとを備え、
前記Ｎ個の各スレーブユニットは、自動車のエンジンの気筒毎に設けられて、対応する気筒に燃料を噴射するインジェクタであり、
前記各スレーブユニットには、データの書き換えが可能な不揮発性のメモリが備えられていると共に、該メモリの特定記憶領域には、前記マスタユニットによって保存対象データが書き込まれる制御システムにおいて、
前記マスタユニットとして用いられる電子制御装置であって、
前記各スレーブユニットにおける前記特定記憶領域から、連続した仮想メモリ領域を作成する手段として、前記各スレーブユニットにおける前記特定記憶領域を、前記保存対象データの１つを記憶可能な一定容量の単位記憶領域毎に分割すると共に、その各単位記憶領域を、同じスレーブユニットに保有されるものがＮ個毎に現れることとなる順番にして、前記仮想メモリ領域の先頭からの各単位記憶領域として割り当てることにより、前記仮想メモリ領域を作成する仮想メモリ作成手段を備え、
更に、前記作成された仮想メモリ領域において連続するＲ個（但し、２≦Ｒ＜Ｎの整数）の前記単位記憶領域の各々に、同じ保存対象データを書き込む書込手段を備え、
しかも、前記スレーブユニットの各々について、交換されたか否かを判定する交換検知手段と、
前記交換検知手段により前記スレーブユニットの何れかが交換されたと判定された場合に、その交換されたと判定されたスレーブユニットである交換後スレーブユニットにおける前記特定記憶領域の容量である交換後容量が、前記交換後スレーブユニットの前に当該電子制御装置に接続されていたスレーブユニットである交換前スレーブユニットにおける前記特定記憶領域の容量である交換前容量に対して、変化したか否かを判定する容量変化判定手段と、を備え、
前記仮想メモリ作成手段は、
前記容量変化判定手段により前記交換後容量が前記交換前容量に対して変化したと判定された場合に、前記仮想メモリ領域を修正すること、
を特徴とする電子制御装置。
【請求項２】
請求項１に記載の電子制御装置において、
前記仮想メモリ作成手段は、
前記各スレーブユニットから前記特定記憶領域の先頭及び容量を示す領域情報を取得し、その取得した領域情報から前記各スレーブユニットにおける前記特定記憶領域を特定して、前記仮想メモリ領域を作成すること、
を特徴とする電子制御装置。
【請求項３】
請求項１又は請求項２に記載の電子制御装置において、
データの書き換えが可能な不揮発性のメモリであるマスタ側メモリを備えており、
前記仮想メモリ作成手段は、
前記各スレーブユニットにおける前記特定記憶領域に容量差があることによって、前記スレーブユニットにおける前記特定記憶領域の単位記憶領域を前記順番に従い割り当てることができない前記仮想メモリ領域の単位記憶領域に対しては、前記マスタ側メモリの単位記憶領域を割り当てること、
を特徴とする電子制御装置。
【請求項４】
請求項３に記載の電子制御装置において、
前記容量変化判定手段により前記交換後容量が前記交換前容量に対して変化したと判定された場合に、前記交換後容量が前記交換前容量に対して増加したか減少したかを判別する判別手段を備え、
前記仮想メモリ作成手段は、
前記判別手段により前記交換後容量が前記交換前容量に対して増加したと判定された場合には、前記仮想メモリ領域を修正する処理として、
それまで本来なら前記交換前スレーブユニットにおける前記特定記憶領域の単位記憶領域が割り当てられるべきなのに前記マスタ側メモリの単位記憶領域を割り当てていた前記仮想メモリ領域の単位記憶領域に対して、前記交換後スレーブユニットにおける前記特定記憶領域の単位記憶領域のうち、増加した単位記憶領域を割り当てる処理を行い、
前記仮想メモリ作成手段は、
前記判別手段により前記交換後容量が前記交換前容量に対して減少したと判定された場合には、前記仮想メモリ領域を修正する処理として、
前記交換前スレーブユニットにおける前記特定記憶領域の単位記憶領域のうち、前記スレーブユニットの交換によって無くなってしまった単位記憶領域を割り当てていた前記仮想メモリ領域の単位記憶領域に対して、前記マスタ側メモリの単位記憶領域を割り当てる処理を行うこと、
を特徴とする電子制御装置。
【請求項５】
請求項１ないし請求項４の何れか１項に記載の電子制御装置において、
前記交換検知手段により前記スレーブユニットの何れかが交換されたと判定された場合に、前記交換前スレーブユニットにおける前記特定記憶領域の単位記憶領域に記憶されていた保存対象データと同じ保存対象データが記憶されていた前記仮想メモリ領域における単位記憶領域を特定して、その特定した単位記憶領域に記憶されている保存対象データから、前記交換後スレーブユニットにおける前記特定記憶領域の単位記憶領域に書き込むべき保存対象データを復元する復元手段、
を備えていることを特徴とする電子制御装置。
【請求項６】
マスタユニットと、該マスタユニットと通信線を介して通信可能に接続されるＮ個（但し、Ｎは３以上の整数）のスレーブユニットとを備え、
前記Ｎ個の各スレーブユニットは、自動車のエンジンの気筒毎に設けられて、対応する気筒に燃料を噴射するインジェクタであり、
前記各スレーブユニットには、データの書き換えが可能な不揮発性のメモリが備えられていると共に、該メモリの特定記憶領域には、前記マスタユニットによって保存対象データが書き込まれる制御システムにおいて、
前記マスタユニットとして、請求項１ないし請求項５の何れか１項に記載の電子制御装置を備えていること、
を特徴とする制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスタユニットが複数のスレーブユニットのメモリにデータを保存するようになっている制御システムに関する。
【背景技術】
【０００２】
車両における制御分野では、マスタユニットとしての電子制御装置によって制御されるスレーブユニットとしてのアクチュエータ装置（例えばインジェクタ）に、メモリを内蔵することが知られており、メモリには、そのアクチュエータ装置の製造時において、そのアクチュエータ装置に固有のデータ（例えば、そのアクチュエータ装置の機差分を補正するための補正値）が書き込まれる。そして、そのメモリ内のデータは、電子制御装置に読み込まれて該アクチュエータ装置の制御に用いられる（例えば、特許文献１，２参照）。
【０００３】
また、電子制御装置がアクチュエータ装置を制御する過程で求めた学習値を、そのアクチュエータ装置のメモリに書き込んで保存しておくことにより、電子制御装置の交換によって学習値が失われてしまうのを防止することも考えられている（例えば、特許文献１参照）。
【０００４】
ここで、電子制御装置からアクチュエータ装置のメモリに退避させておくべき保存対象データとしては、そのアクチュエータ装置に固有のデータ以外にも、例えば、車両の識別情報や、フリーズフレームデータ（故障を検出した時点でのエンジン回転数や車速や燃料圧力等といった車両状態のデータ）等のように、制御システムにおいて共通のデータがある。このため、アクチュエータ装置のメモリの記憶領域は、そのアクチュエータ装置に固有のデータが記憶される固有領域と、制御システムにおいて共通のデータが記憶される共通領域とに分けられることとなる。
【０００５】
そして、例えばエンジンの気筒毎に設けられるインジェクタのように、アクチュエータ装置が複数ある場合、電子制御装置は、各アクチュエータ装置のメモリにおける共通領域に、同じ保存対象データを書き込むように構成することが考えられる。このように構成すれば、複数のアクチュエータ装置の何れかが交換されても、他のアクチュエータ装置のメモリに同じ保存対象データが残るため、その保存対象データを継続的に残すことの確実性が向上する。尚、以下では、同じデータを複数箇所に保存することを、「データの冗長保存」という。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−０５７４１３号公報
【特許文献２】特開２００９−２２８６８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、電子制御装置が各アクチュエータ装置のメモリにおける共通領域に同じ保存対象データを書き込む前述の制御システムでは、データの冗長保存は実現できるものの、メモリの利用効率が悪いという課題がある。
【０００８】
つまり、各アクチュエータ装置のメモリにおける共通領域の容量が、Ａ個のデータを記憶可能な容量であるとすると、電子制御装置から見てアクチュエータ装置側に保存可能なデータの数（種類数という意味）は、やはりＡ個である。そして、その保存可能なデータの数は、アクチュエータ装置の個数が多くなって、全アクチュエータ装置での共通領域の合計容量が増えたとしても、変わらない。
【０００９】
そこで、本発明は、マスタユニットが複数のスレーブユニットのメモリにデータを保存する制御システムにおいて、スレーブユニットのメモリの利用効率を向上させることを目的としている。
【課題を解決するための手段】
【００１０】
請求項１の電子制御装置は、Ｎ個（但し、Ｎは３以上の整数）のスレーブユニットと通信線を介して通信可能に接続されるマスタユニットであり、そのＮ個のスレーブユニットと共に制御システムを成す。スレーブユニットは、自動車のエンジンの気筒毎に設けられて、対応する気筒に燃料を噴射するインジェクタである。そして、各スレーブユニットには、データの書き換えが可能な不揮発性のメモリが備えられており、そのメモリの特定記憶領域には、マスタユニットとしての当該電子制御装置によって保存対象データが書き込まれる。
【００１１】
ここで特に、請求項１の電子制御装置は、各スレーブユニットにおける前記特定記憶領域から、連続した仮想メモリ領域を作成する仮想メモリ作成手段を備えている。そして、その仮想メモリ作成手段は、各スレーブユニットにおける前記特定記憶領域を、保存対象データの１つを記憶可能な一定容量の単位記憶領域毎に分割すると共に、その各単位記憶領域を、同じスレーブユニットに保有されるものがＮ個毎に現れることとなる順番にして、仮想メモリ領域の先頭からの各単位記憶領域として割り当てることにより、仮想メモリ領域を作成する。
【００１２】
更に、請求項１の電子制御装置は、書込手段を備えており、その書込手段は、前記作成された仮想メモリ領域において連続するＲ個（但し、２≦Ｒ＜Ｎの整数）の単位記憶領域の各々に、同じ保存対象データを書き込む。
【００１３】
尚、スレーブユニットにおける特定記憶領域とは、詳しくは、そのスレーブユニットに備えられているメモリの特定記憶領域のことである。また、その特定記憶領域は、メモリの記憶領域の一部と全部との何れでも良い。また、作成された仮想メモリ領域の各単位記憶領域には、何れかのスレーブユニットにおける特定記憶領域の何れかの単位記憶領域が、現実の物理的な記憶領域（一般的な呼び方をすると物理アドレス）として割り当てられている（換言すれば、対応付けられている）ため、書込手段が仮想メモリ領域の何れかの単位記憶領域にデータを書き込むということは、その単位記憶領域に割り当てられている物理的な記憶領域にデータを書き込むということである。
【００１４】
このような電子制御装置によれば、各スレーブユニットにおける特定記憶領域に同じ保存対象データを書き込む従来の構成と比較すると、データの冗長保存を実現しつつ、スレーブユニットのメモリの利用効率を向上させることができる。つまり、特定記憶領域の容量が同じであれば、保存できるデータ数を増やすことができる。
【００１５】
例えば、スレーブユニットの数が４（Ｎ＝４）で、各スレーブユニットにおける特定記憶領域が３０個の単位記憶領域から成っているとする。
この場合、従来の構成では、スレーブユニット側に３０個（ここでの個は、種類という意味）のデータしか保存できない。
【００１６】
これに対して、請求項１の電子制御装置では、Ｒ＝３とすれば、スレーブユニット側に４０個のデータを保存することができ、Ｒ＝２とすれば、スレーブユニット側に６０個のデータを保存することができる。また、各データは、Ｒ個の異なるスレーブユニットに保存されることとなるため、データの冗長保存も実現される。つまり、何れかのスレーブユニットが交換されても、そのスレーブユニットに保存されていたデータは、他の何れかのスレーブユニットにも保存されていることとなり、保存対象データを失ってしまうことがない。
しかも、請求項１の電子制御装置は、
前記スレーブユニットの各々について、交換されたか否かを判定する交換検知手段と、
前記交換検知手段により前記スレーブユニットの何れかが交換されたと判定された場合に、その交換されたと判定されたスレーブユニットである交換後スレーブユニットにおける前記特定記憶領域の容量である交換後容量が、前記交換後スレーブユニットの前に当該電子制御装置に接続されていたスレーブユニットである交換前スレーブユニットにおける前記特定記憶領域の容量である交換前容量に対して、変化したか否かを判定する容量変化判定手段と、を備え、
前記仮想メモリ作成手段は、前記容量変化判定手段により前記交換後容量が前記交換前容量に対して変化したと判定された場合に、前記仮想メモリ領域を修正する。
【００１７】
次に、請求項２の電子制御装置は、請求項１の電子制御装置において、仮想メモリ作成手段は、各スレーブユニットから特定記憶領域の先頭及び容量を示す領域情報を取得し、その取得した領域情報から各スレーブユニットにおける特定記憶領域を特定して、仮想メモリ領域を作成する。
【００１８】
この構成によれば、各スレーブユニットの特定記憶領域の先頭位置（先頭アドレス）や容量が変わっても、その特定記憶領域を特定して、仮想メモリ領域を作成することができるようになる。
【００１９】
次に、請求項３の電子制御装置は、請求項１，２の電子制御装置において、データの書き換えが可能な不揮発性のメモリであるマスタ側メモリを備えている。
そして、この電子制御装置において、仮想メモリ作成手段は、各スレーブユニットにおける前記特定記憶領域に容量差があることによって、スレーブユニットにおける前記特定記憶領域の単位記憶領域を前記順番に従い割り当てることができない仮想メモリ領域の単位記憶領域に対しては、マスタ側メモリの単位記憶領域を割り当てる。
【００２０】
つまり、特定記憶領域の容量差によって、仮想メモリ領域に割り当てる単位記憶領域が足らなくなったスレーブユニットについては、そのスレーブユニットの足らなくなった分の単位記憶領域の代わりに、マスタ側メモリの単位記憶領域を用いるようにしている。尚、スレーブユニットの単位記憶領域とは、詳しくは、そのスレーブユニットにおける特定記憶領域の単位記憶領域のことであり、更に詳しくは、そのスレーブユニットに備えられているメモリの特定記憶領域を成している単位記憶領域のことである。
【００２１】
そして、この構成によれば、あるスレーブユニットにおける特定記憶領域の容量が、他のスレーブユニットにおける特定記憶領域の容量より小さくても、データの冗長保存を実現することができる。つまり、何れかのスレーブユニットが交換されても、そのスレーブユニットに保存されていたデータは、他のスレーブユニットあるいはマスタ側メモリに保存されていることとなり、保存対象データを失ってしまうことがない。
【００２２】
次に、請求項４の電子制御装置は、請求項３の電子制御装置において、
前記容量変化判定手段により前記交換後容量が前記交換前容量に対して変化したと判定された場合に、前記交換後容量が前記交換前容量に対して増加したか減少したかを判別する判別手段を備え、
前記仮想メモリ作成手段は、
前記判別手段により前記交換後容量が前記交換前容量に対して増加したと判定された場合には、前記仮想メモリ領域を修正する処理として、
それまで本来なら前記交換前スレーブユニットにおける前記特定記憶領域の単位記憶領域が割り当てられるべきなのに前記マスタ側メモリの単位記憶領域を割り当てていた前記仮想メモリ領域の単位記憶領域に対して、前記交換後スレーブユニットにおける前記特定記憶領域の単位記憶領域のうち、増加した単位記憶領域を割り当てる処理を行い、
前記仮想メモリ作成手段は、
前記判別手段により前記交換後容量が前記交換前容量に対して減少したと判定された場合には、前記仮想メモリ領域を修正する処理として、
前記交換前スレーブユニットにおける前記特定記憶領域の単位記憶領域のうち、前記スレーブユニットの交換によって無くなってしまった単位記憶領域を割り当てていた前記仮想メモリ領域の単位記憶領域に対して、前記マスタ側メモリの単位記憶領域を割り当てる処理を行う。
次に、請求項５の電子制御装置は、請求項１〜４の電子制御装置において、復元手段を備えている。
【００２３】
復元手段は、交換検知手段によりスレーブユニットの何れかが交換されたと判定された場合に、その交換されたと判定されたスレーブユニット（交換後スレーブユニット）の前に当該電子制御装置に接続されていたスレーブユニット（交換前スレーブユニット）における特定記憶領域の単位記憶領域に記憶されていた保存対象データと同じ保存対象データが記憶されていた仮想メモリ領域における単位記憶領域を特定して、その特定した単位記憶領域に記憶されている保存対象データから、交換後スレーブユニットにおける特定記憶領域の単位記憶領域に書き込むべき保存対象データを復元する。
【００２４】
この復元手段を備えることにより、交換前スレーブユニットに保存されていた保存対象データを、交換後スレーブユニットにも継承して保存することができるようになる。
尚、Ｒが３以上であれば、何れか１つのスレーブユニットが交換された場合、そのスレーブユニットに保存されていた保存対象データは、そのスレーブユニット以外に保有されている２つ以上の物理的な単位記憶領域に記憶されていることとなるため、復元手段は、例えば、その２つ以上の単位記憶領域に記憶されている保存対象データに対して多数決の処理を行うことにより、正しい保存対象データをより確実に復元することができる。
【００２５】
また、複数のスレーブユニットを交換する際には、１つずつ交換するように作業規則を定めることで、保存対象データを失ってしまうことを防止することができる。
請求項１〜５の電子制御装置において、スレーブユニットは、自動車のエンジンの気筒毎に設けられて、対応する気筒に燃料を噴射するインジェクタである。
【００２６】
このように、複数の各スレーブユニットが気筒毎のインジェクタであれば、以下の点で有利である。
（１）複数の各スレーブユニットが、同じハードウェアのものとなるため、電子制御装置の通信回路や通信手順を、各スレーブユニットで共通なものにすることができる。
【００２７】
（２）各スレーブユニットのコネクタも同じものになるため、そのコネクタに接続してメモリからデータを読み出すための装置も、共通化することができる。
（３）各スレーブユニットのメモリ（特定記憶領域）に記憶されたデータ（例えばフリーズフレームデータ）を、自動車（車両）とは別の場所で解析したい場合に、インジェクタであれば、通常の制御ユニットよりもコンパクトであるため、持ち運びに便利である。
【００２８】
一方、請求項６の制御システムによれば、マスタユニットとして、請求項１〜５の電子制御装置を備えているため、請求項１〜５の電子制御装置について述べた効果が得られる。請求項６の制御システムにおいても、スレーブユニットは、エンジンの気筒毎のインジェクタである。
【図面の簡単な説明】
【００２９】
【図１】実施形態の制御システムのハードウェア構成を説明する説明図である。
【図２】仮想メモリ領域の作成手順を説明する説明図である。
【図３】交換判定処理を表すフローチャートである。
【図４】メモリ管理処理を表すフローチャートである。
【図５】仮想メモリマッピング処理を表すフローチャートである。
【図６】オールマッピング処理を表すフローチャートである。
【図７】差分マッピング処理を表すフローチャートである。
【図８】書込処理を表すフローチャートである。
【図９】作成される仮想メモリ領域（仮想メモリアドレスと物理アドレスとのマッピング情報）の一例を説明する説明図である。
【発明を実施するための形態】
【００３０】
以下に、本発明が適用された実施形態の制御システムについて説明する。尚、以下に説明する実施形態の制御システムは、車両（自動車）に搭載されて、該車両のエンジンへの燃料噴射を制御するものである。また、そのエンジンは４気筒エンジンであるものとして説明する。
【００３１】
図１（Ａ）に示すように、本実施形態の制御システム１は、エンジンの気筒＃１〜＃４毎に設けられて、対応する気筒に燃料を噴射する４つのインジェクタＩＪ１〜ＩＪ４と、そのインジェクタＩＪ１〜ＩＪ４を制御する電子制御装置（以下、ＥＣＵという）１１とからなる。そして、ＥＣＵ１１とインジェクタＩＪ１〜ＩＪ４は、車両内に配設された通信線１２を介して通信可能に接続されている。
【００３２】
ＥＣＵ１１は、ＣＰＵ１３，ＲＯＭ１４及びＲＡＭ１５等を有したマイコン１６と、データの書き換えが可能な不揮発性のメモリ（本実施形態ではＥＥＰＲＯＭ）１７と、マイコン１６が通信線１２を介してインジェクタＩＪ１〜ＩＪ４と通信するための通信回路１８と、マイコン１６からの制御信号に従って各インジェクタＩＪ１〜ＩＪ４（詳しくは、各インジェクタＩＪ１〜ＩＪ４に設けられている後述のアクチュエータ）を駆動する駆動回路１９と、を備えている。
【００３３】
一方、各インジェクタＩＪ１〜ＩＪ４は、駆動されることで燃料の噴射口を開くアクチュエータ２１と、データの書き換えが可能な不揮発性のメモリ（本実施形態ではＥＥＰＲＯＭ）２３と、通信処理部２５と、通信処理部２５がＥＣＵ１１（詳しくはマイコン１６）と通信するための通信回路２７と、を備えている。尚、通信処理部２５は、例えば、マイコンによって実現することができるが、論理回路等の他のハードウェア回路によって構成しても良い。
【００３４】
そして、図示は省略しているが、各インジェクタＩＪ１〜ＩＪ４のアクチュエータ２１には、ＥＣＵ１１の駆動回路１９によって出力される駆動信号が、インジェクタＩＪ１〜ＩＪ４毎の駆動信号線を介して供給される。尚、アクチュエータ２１は、例えば電磁式のソレノイドであるが、ピエゾ素子を使ったピエゾアクチュエータ等でも良い。
【００３５】
更に、図示は省略しているが、各インジェクタＩＪ１〜ＩＪ４には、当該インジェクタの燃料取り込み口に設けられて該燃料取り込み口の燃料圧力（いわゆるインレット圧）を検出する圧力センサも備えられており、その圧力センサから出力される圧力信号（検出圧力を示すアナログ信号）は、インジェクタＩＪ１〜ＩＪ４毎のセンサ信号線を介してＥＣＵ１１に入力される。
【００３６】
また、図１（Ｂ）に示すように、各インジェクタＩＪ１〜ＩＪ４のＥＥＰＲＯＭ２３における記憶領域は、そのインジェクタＩＪｎ（ｎは１〜４の何れか）に固有のデータ（以下、固有データともいう）が書き込まれる固有領域２９と、当該制御システム１において保存すべき共通のデータ（換言すれば、インジェクタＩＪ１〜ＩＪ４に特化しないデータであり、以下、共通データともいう）が書き込まれる共通領域３０とに分けられている。
【００３７】
そして、固有領域２９に書き込まれる固有データとしては、そのインジェクタＩＪｎのユニットＩＤ、共通領域３０の先頭アドレス（以下、共通領域先頭アドレスという）、共通領域３０の容量を示す共通領域データ数、そのインジェクタＩＪｎを制御する上で該インジェクタＩＪｎの機差分を補正するために用いられる機差補正値等があり、それらは、当該インジェクタＩＪｎの製造時に書き込まれる。また例えば、ＥＣＵ１１のマイコン１６がインジェクタＩＪｎを制御する過程で求めた学習値を、そのインジェクタＩＪｎのＥＥＰＲＯＭ２３に書き込むのであれば、その学習値も、固有データとして固有領域２９に書き込まれる。
【００３８】
また、共通領域３０に書き込まれる共通データとしては、例えば、車両の識別情報や、フリーズフレームデータ等があり、それらは、ＥＣＵ１１のマイコン１６によって書き込まれる。
【００３９】
尚、本実施形態において、インジェクタＩＪｎのユニットＩＤとしては、気筒＃１に用いられるインジェクタであれば「ユニットＩＤ＝１」、気筒＃２に用いられるインジェクタであれば「ユニットＩＤ＝２」、といった具合に、使用される気筒の番号が付与されるようになっており、このことは、インジェクタＩＪｎが交換されても変わらない。また、そのユニットＩＤは、通信相手を示す通信ＩＤとしても利用される。
【００４０】
一方、本実施形態において、ＥＣＵ１１のＥＥＰＲＯＭ１７と、各インジェクタＩＪ１〜ＩＪ４のＥＥＰＲＯＭ２３は、１つのアドレス領域（アドレスがそれぞれ付与された各領域であり、以下、１アドレス領域という）が所定数バイト（例えば１バイト又は２バイト）の容量となっており、その１アドレス領域毎に、１つのデータが書き込まれるようになっている。このため、ＥＥＰＲＯＭ２３の共通領域３０では、１アドレス領域が、保存対象データの１つを記憶可能な一定容量の単位記憶領域になっている。そして、上記共通領域データ数は、共通領域３０の１アドレス領域数（即ちアドレス数）を示すと共に、共通領域３０に記憶可能なデータの数を示している。
【００４１】
そして、ＥＣＵ１１では、マイコン１６が、ＲＯＭ１４内のプログラムをＣＰＵ１３にて実行することにより、燃料噴射制御の処理を含む各種処理を行う。
例えば、マイコン１６は、エンジン回転数や吸入空気量といったエンジンの運転状態に基づいて、各気筒の燃料噴射開始タイミング及び噴射時間を決定する。また、マイコン１６は、各インジェクタＩＪ１〜ＩＪ４から前述した機差補正値を読み出して、ＲＡＭ１５又はＥＥＰＲＯＭ１７に保存しており、上記決定した燃料噴射開始タイミング及び噴射時間から、その機差補正値も用いて、各インジェクタＩＪ１〜ＩＪ４のアクチュエータ２１の駆動開始タイミング及び駆動継続時間を算出し、その算出結果に従って、駆動回路１９から各インジェクタＩＪ１〜ＩＪ４へ、アクチュエータ２１を駆動するための駆動信号を出力させる。更に、マイコン１６は、各インジェクタＩＪ１〜ＩＪ４の前述した圧力センサから出力される圧力信号を一定時間毎にサンプリングすることにより、各インジェクタＩＪ１〜ＩＪ４による実際の燃料噴射特性を検出し、その検出結果を用いてアクチュエータ２１の駆動開始タイミング及び駆動継続時間を補正する処理も行う。
【００４２】
尚、ＥＣＵ１１のマイコン１６は、インジェクタＩＪ１〜ＩＪ４からデータ（情報）を読み出す（読み込む）場合には、通信相手（この場合、読み出し相手）のインジェクタＩＪｎのユニットＩＤと、データの読み出し先アドレス（ＥＥＰＲＯＭ２３におけるアドレス）とを含んだ読み出し要求フレームを、通信線１２に送出する。すると、その読み出し要求フレームに含まれているユニットＩＤを保有するインジェクタＩＪｎの通信処理部２５が、その読み出し要求フレームからアドレスを抽出して、当該インジェクタＩＪｎのＥＥＰＲＯＭ２３におけるアドレスのうち、上記抽出したアドレスからデータを読み出して、そのデータをＥＣＵ１１へ送信することとなる。そして、ＥＣＵ１１のマイコン１６は、そのインジェクタＩＪｎからのデータを通信回路１８を介して取得することとなる。
【００４３】
また逆に、ＥＣＵ１１のマイコン１６は、インジェクタＩＪ１〜ＩＪ４にデータ（情報）を書き込む場合には、通信相手（この場合、書き込み相手）のインジェクタＩＪｎのユニットＩＤと、書き込むデータと、データの書き込み先アドレス（ＥＥＰＲＯＭ２３におけるアドレス）とを含んだ書き込み要求フレームを、通信線１２に送出する。すると、その書き込み要求フレームに含まれているユニットＩＤを保有するインジェクタＩＪｎの通信処理部２５が、その書き込み要求フレームからデータとアドレスとを抽出して、その抽出したデータを、当該インジェクタＩＪｎのＥＥＰＲＯＭ２３のアドレスのうち、上記抽出したアドレスに書き込むこととなる。
【００４４】
そして、ＥＣＵ１１のマイコン１６は、インジェクタＩＪ１〜ＩＪ４におけるＥＥＰＲＯＭ２３の共通領域３０（以下、単に、インジェクタＩＪ１〜ＩＪ４の共通領域３０ともいう）に、前述の共通データを書き込むが、本実施形態の制御システム１では、その共通領域３０の扱い方及び共通データの書き込み手法に特徴がある。
【００４５】
そこで、まず概要について説明する。
図２に示すように、ＥＣＵ１１のマイコン１６は、各インジェクタＩＪ１〜ＩＪ４の共通領域３０から、連続した仮想メモリ領域（仮想メモリ空間）３１を作成する。
【００４６】
具体的には、図２の左側に示すように、各インジェクタＩＪ１〜ＩＪ４の共通領域３０を、ただ単にインジェクタ毎のまとまりでつなげて連続的な仮想のメモリ領域とするのではなく、図２の右側に示すごとく、各インジェクタＩＪ１〜ＩＪ４の共通領域３０を、１アドレス領域毎に分割すると共に、その各１アドレス領域を、同じインジェクタに保有されるものがＮ個（ＮはインジェクタＩＪ１〜ＩＪ４の数であり、本実施形態では４）毎に現れることとなる順番にして、仮想メモリ領域３１の先頭からの各１アドレス領域として割り当てることにより、その仮想メモリ領域３１を作成する。
【００４７】
本実施形態では、インジェクタＩＪ１〜ＩＪ４の共通領域３０における１アドレス領域（以下、単に、インジェクタＩＪ１〜ＩＪ４の１アドレス領域ともいう）の各々を、「インジェクタＩＪ１が保有するもの→インジェクタＩＪ２が保有するもの→インジェクタＩＪ３が保有するもの→インジェクタＩＪ４が保有するもの」の順番（以下、この順番をインジェクタ順ともいう）に繰り返し並べて配置することで、仮想メモリ領域３１を形成している。
【００４８】
尚、図２においては、右上から左下方向の斜め線によるハッチングを付した１つの四角枠が、インジェクタＩＪ１の１アドレス領域であり、網目線によるハッチングを付した１つの四角枠が、インジェクタＩＪ２の１アドレス領域であり、左上から右下方向の斜め線によるハッチングを付した１つの四角枠が、インジェクタＩＪ３の１アドレス領域であり、縦線によるハッチングを付した１つの四角枠が、インジェクタＩＪ４の１アドレス領域である。
【００４９】
また、ＥＣＵ１１のマイコン１６は、各インジェクタＩＪ１〜ＩＪ４の共通領域３０に容量差があることによって、各インジェクタＩＪ１〜ＩＪ４の１アドレス領域を前記順番に従い割り当てることができない仮想メモリ領域３１の１アドレス領域に対しては、当該ＥＣＵ１１のＥＥＰＲＯＭ１７において仮想メモリ領域３１のために用意されている所定領域（以下、ＥＣＵメモリという）３３の１アドレス領域を割り当てる。そして、そのＥＣＵメモリ３３の何れかの１アドレス領域を仮想メモリ領域３１に割り当てる際には、空きアドレス（即ち、その時点で仮想メモリ領域３１に割り当てていないアドレス）のうち、当該ＥＣＵメモリ３３の先頭アドレスに近いものを優先して用いるようになっている。
【００５０】
尚、図２においては、ハッチングを付していない白抜きの四角枠が、ＥＣＵメモリ３３の１アドレス領域である。
そして、図２の例では、インジェクタＩＪ１の共通領域データ数が３であり、インジェクタＩＪ２の共通領域データ数が７であり、インジェクタＩＪ３の共通領域データ数が５であり、インジェクタＩＪ４の共通領域データ数が２である。
【００５１】
このため、図２の例では、インジェクタＩＪ１〜ＩＪ４の１アドレス領域の各々を前述のインジェクタ順に繰り返し配置した場合に、まず３サイクル目（ｍ＝３の部分参照）で、インジェクタＩＪ４の１アドレス領域が足らなくなる。
【００５２】
よって、仮想メモリ領域３１において、その３サイクル目における４番目の１アドレス領域（先頭から１２番目の１アドレス領域であり、本来ならインジェクタＩＪ４の１アドレス領域が割り当てられるべき仮想の１アドレス領域：ｅ＝１１の部分参照）には、ＥＣＵメモリ３３の先頭の１アドレス領域が割り当てられることとなる。
【００５３】
また、次の４サイクル目（ｍ＝４の部分参照）では、インジェクタＩＪ４の１アドレス領域だけでなく、インジェクタＩＪ１の１アドレス領域も足らなくなる。
よって、仮想メモリ領域３１において、その４サイクル目における１番目の１アドレス領域（先頭から１３番目の１アドレス領域であり、本来ならインジェクタＩＪ１の１アドレス領域が割り当てられるべき仮想の１アドレス領域：ｅ＝１２の部分参照）には、ＥＣＵメモリ３３の先頭から２番目の１アドレス領域が割り当てられ、同４サイクル目における４番目の１アドレス領域（先頭から１６番目の１アドレス領域であり、本来ならインジェクタＩＪ４の１アドレス領域が割り当てられるべき仮想の１アドレス領域：ｅ＝１５の部分参照）には、ＥＣＵメモリ３３の先頭から３番目の１アドレス領域が割り当てられることとなる。
【００５４】
同様に、次の５サイクル目（ｍ＝５の部分参照）でも、インジェクタＩＪ１，ＩＪ４の１アドレス領域が足らなくなる。
よって、仮想メモリ領域３１において、その５サイクル目における１番目の１アドレス領域（先頭から１７番目の１アドレス領域：ｅ＝１６の部分参照）には、ＥＣＵメモリ３３の先頭から４番目の１アドレス領域が割り当てられ、同５サイクル目における４番目の１アドレス領域（先頭から２０番目の１アドレス領域：ｅ＝１９の部分参照）には、ＥＣＵメモリ３３の先頭から５番目の１アドレス領域が割り当てられることとなる。
【００５５】
更に、次の６サイクル目（ｍ＝６の部分参照）では、インジェクタＩＪ１，ＩＪ４の１アドレス領域だけでなく、インジェクタＩＪ３の１アドレス領域も足らなくなる。
よって、仮想メモリ領域３１において、その６サイクル目における１番目の１アドレス領域（先頭から２１番目の１アドレス領域：ｍ＝２０の部分参照）には、ＥＣＵメモリ３３の先頭から６番目の１アドレス領域が割り当てられ、同６サイクル目における３番目の１アドレス領域（先頭から２３番目の１アドレス領域であり、本来ならインジェクタＩＪ３の１アドレス領域が割り当てられるべき仮想の１アドレス領域：ｅ＝２２の部分参照）には、ＥＣＵメモリ３３の先頭から７番目の１アドレス領域が割り当てられ、同６サイクル目における４番目の１アドレス領域（先頭から２４番目の１アドレス領域：ｍ＝２３の部分参照）には、ＥＣＵメモリ３３の先頭から８番目の１アドレス領域が割り当てられることとなる。つまり、６サイクル目における２番目以外の各１アドレス領域には、ＥＣＵメモリ３３の１アドレス領域がそれぞれ割り当てられることとなる。
【００５６】
そして、次の７サイクル目（ｍ＝７の部分参照）でも、上記６サイクル目と同様に、インジェクタＩＪ１，ＩＪ３，ＩＪ４の１アドレス領域が足らなくなる。
このため、仮想メモリ領域３１において、その７サイクル目における２番目以外の各１アドレス領域にも、ＥＣＵメモリ３３の１アドレス領域がそれぞれ割り当てられることとなる。
【００５７】
そして、インジェクタＩＪ１〜ＩＪ４の共通領域３０のうち、アドレス領域数が最大のものは７であるため、この７サイクル目で仮想メモリ領域３１の作成は終了する。
ここで、本実施形態において、ＥＣＵ１１のマイコン１６は、図２の右側に示すように、作成した仮想メモリ領域３１の先頭から、連続する３個毎の１アドレス領域をグループとし、その各グループの１アドレス領域の各々に、同じ共通データを書き込むようになっている。このため、仮想メモリ領域３１に対しては、同一のデータが３個ずつ書き込まれることとなる、そして、以下では、仮想メモリ領域３１に書き込む同一データの数を「冗長データ数」という。尚、仮想メモリ領域３１の何れかの１アドレス領域にデータを書き込むということは、実際には、その仮想の１アドレス領域に割り当てられている物理的な１アドレス領域（即ち、インジェクタＩＪ１〜ＩＪ４の共通領域３０又はＥＣＵメモリ３３における何れかの１アドレス領域）にデータを書き込むということである。
【００５８】
このため、図２の例では、仮想メモリ領域３１として、最大２８個の１アドレス領域を設定することができるが、１アドレス領域の数は冗長データ数（＝３）の倍数あれば良いため、先頭から２８個目の１アドレス領域は不要となる。よって、仮想メモリ領域３１としては、７サイクル目における３番目であって、先頭から２７番目の１アドレス領域までを設定している（換言すれば、その２７番目の仮想アドレスまで、物理アドレスをマッピングしている）。
【００５９】
つまり、本実施形態では、インジェクタＩＪ１〜ＩＪ４の共通領域３０のアドレス領域数（共通領域データ数）のうちで、最大のものをＭｍａｘとすると、仮想メモリ領域３１の１アドレス領域数（アドレス数）としては、「４×Ｍｍａｘ」以下で且つ冗長データ数（＝３）の倍数のうちの最大値だけ設定している。
【００６０】
次に、ＥＣＵ１１のマイコン１６が、共通データをインジェクタＩＪ１〜ＩＪ４側に保存するために行う処理の内容について、フローチャートを用いて説明する。
まず図３は、インジェクタＩＪ１〜ＩＪ４の何れかが交換されたことを検出するための交換判定処理を表すフローチャートである。尚、この交換判定処理は、例えば、車両のイグニッションオンに伴いＥＣＵ１１に動作用電源が投入されてマイコン１６が起動すると実行される。また、本実施形態においては、インジェクタＩＪ１〜ＩＪ４のうちの２個以上が同時に交換されることはないことを想定している。つまり、インジェクタＩＪ１〜ＩＪ４の交換は、１つずつ行うように作業規則が定められている。
【００６１】
図３に示すように、マイコン１６は、交換判定処理を開始すると、まずＳ１１０にて、各インジェクタＩＪ１〜ＩＪ４から交換判定用情報を読み出して取得する。
この交換判定用情報は、インジェクタＩＪ１〜ＩＪ４が交換されたか否かを判定するための情報であり、例えばＥＥＰＲＯＭ２３の固有領域２９における所定のアドレスに記憶されている。そして、その交換判定用情報は、インジェクタＩＪ１〜ＩＪ４の製造時点（インジェクタＩＪ１〜ＩＪ４がＥＣＵ１１に接続される前の時点）では、所定のデフォルト値（例えば０）になっており、当該マイコン１６による後述のＳ１４０又はＳ１５０により、デフォルト値とは異なる所定値（以下、チェック済値という）に書き換えられる。
【００６２】
そして、次のＳ１２０では、Ｓ１１０で取得した交換判定用情報がチェック済値ではないインジェクタがあるか否かを判定し、そのインジェクタがあれば、Ｓ１３０に進む。
Ｓ１３０では、全てのインジェクタＩＪ１〜ＩＪ４の交換判定用情報がチェック済値ではないか否かを判定し、全てのインジェクタＩＪ１〜ＩＪ４の交換判定用情報がチェック済値でなければ、ＥＣＵ１１に４つのインジェクタＩＪ１〜ＩＪ４が接続された後の最初の起動時であり、４つのインジェクタＩＪ１〜ＩＪ４は初期状態であると判断して、Ｓ１４０に進む。
【００６３】
そして、Ｓ１４０では、各インジェクタＩＪ１〜ＩＪ４の状態情報Ｓ１〜Ｓ４を、初期を示す「１」に設定すると共に、各インジェクタＩＪ１〜ＩＪ４のＥＥＰＲＯＭ２３における交換判定用情報の格納先アドレスにチェック済値を書き込む。この書き込みにより、各インジェクタＩＪ１〜ＩＪ４側の交換判定用情報は、デフォルト値からチェック済値に書き換えられることとなる。そして、その後、当該交換判定処理を終了する。
【００６４】
また、上記Ｓ１３０にて否定判定（ＮＯと判定）した場合、即ち、全てのインジェクタではなく、何れか１つのインジェクタの交換判定用情報がチェック済値ではない場合には、そのインジェクタが交換されたと判断して、Ｓ１５０に移行する。
【００６５】
Ｓ１５０では、交換判定用情報がチェック済値ではなかったインジェクタＩＪｘ（ｘは１〜４の何れか）の状態情報Ｓｘを、交換を示す「２」に設定すると共に、そのインジェクタＩＪｘのＥＥＰＲＯＭ２３における交換判定用情報の格納先アドレスにチェック済値を書き込む。この書き込みにより、交換されたインジェクタＩＪｘ側の交換判定用情報は、デフォルト値からチェック済値に書き換えられることとなる。そして、その後、当該交換判定処理を終了する。
【００６６】
一方、上記Ｓ１２０にて、交換判定用情報がチェック済値ではないインジェクタがない（即ち、全てのインジェクタの交換判定用情報がチェック済値である）と判定した場合には、インジェクタＩＪ１〜ＩＪ４は交換されていないと判断して、Ｓ１６０に移行する。そして、Ｓ１６０では、各インジェクタＩＪ１〜ＩＪ４の状態情報Ｓ１〜Ｓ４を、非交換を示す「０」に設定し、その後、当該交換判定処理を終了する。
【００６７】
尚、インジェクタのＥＥＰＲＯＭ２３に交換判定用情報としてのチェック済値を書き込む処理（デフォルト値からチェック済値に書き換える処理）は、Ｓ１４０，Ｓ１５０で行わずに、後述する図４のＳ２３０の処理（仮想メモリマッピング処理）を実行した直後に行うようにしても良い。そのようにすれば、例えば、図３のＳ１４０又はＳ１５０の処理が終了してから、図４のＳ２３０の処理が完了するまでの間に、マイコン１６が何等かの理由で再起動されたとしても、交換判定用情報はチェック済値に書き換えられていないため、図３におけるＳ１２０やＳ１３０で再び「ＹＥＳ」と判定されて、Ｓ１４０又はＳ１５０により状態情報Ｓ１〜Ｓ４を再び正しく設定することができ、延いては、後述する図４のＳ２３０の処理を実行し損ねてしまうことを防止することができる。
【００６８】
また、Ｓ１２０とＳ１３０では、「交換判定用情報がチェック済値ではない」ということに代えて、「交換判定用情報がデフォルト値である」ということを判定しても良い。また、チェック済値は、インジェクタＩＪ１〜ＩＪ４毎に異なった値にしても良い。また、インジェクタＩＪ１〜ＩＪ４は、ＥＣＵ１１との接続が解除されると（つまり、車両から取り外されると）、記憶している交換判定用情報がデフォルト値へと自動的に戻るように構成されていても良い。例えば、インジェクタＩＪ１〜ＩＪ４において、交換判定用情報を、ＥＣＵ１１から常時電源が供給されるバックアップＲＡＭに記憶するように構成すれば、インジェクタＩＪ１〜ＩＪ４の取り外しに伴って、その交換判定用情報が自動的にリセットされるようにすることができる。
【００６９】
次に、図４は、仮想メモリ領域３１を作成するためのメモリ管理処理を表すフローチャートである。尚、このメモリ管理処理は、図３の交換判定処理に続いて実行される。
図４に示すように、マイコン１６は、メモリ管理処理を開始すると、まずＳ２１０にて、インジェクタＩＪ１〜ＩＪ４の状態情報Ｓ１〜Ｓ４を読み込む。
【００７０】
次にＳ２２０にて、状態情報Ｓ１〜Ｓ４のうちで「１」又は「２」のものがあるか否かを判定し、「１」又は「２」の状態情報がなければ、そのまま当該メモリ管理処理を終了する。
【００７１】
一方、状態情報Ｓ１〜Ｓ４のうちで「１」又は「２」のものがあれば（Ｓ２２０：ＹＥＳ）、Ｓ２３０に進み、図５の仮想メモリマッピング処理を行った後、当該メモリ管理処理を終了する。
【００７２】
ここで、図５に示すように、仮想メモリマッピング処理では、まずＳ３１０にて、各インジェクタＩＪ１〜ＩＪ４から前述の共通領域データ数Ｍ１〜Ｍ４を読み出して取得する。また、このときに、各インジェクタＩＪ１〜ＩＪ４から共通領域先頭アドレスＡＩ１〜ＡＩ４も読み出して取得しておく。
【００７３】
そして、次のＳ３２０にて、各インジェクタＩＪ１〜ＩＪ４の共通領域データ数Ｍ１〜Ｍ４のうちで最大のものを、Ｍｍａｘとして記憶する。
次にＳ３３０にて、仮想メモリアドレスポインタｅと保存データ数カウンタｄとを、０に初期化する。尚、仮想メモリアドレスポインタｅは、図９に示すように、仮想メモリ領域３１のアドレスである仮想メモリアドレスを示すポインタであり、仮想メモリ領域３１の先頭アドレスＥを０番目にした場合の何番目の仮想メモリアドレスであるかを示すものである。また、保存データ数カウンタｄは、作成する仮想メモリ領域３１に保存可能なデータ数をカウントするカウンタである。
【００７４】
次にＳ３４０にて、処理回数をカウントするためのカウンタｍを１に初期化し、その後、一点鎖線枠内に示すＳ３５０〜Ｓ４５０からなる処理を行った後、Ｓ４６０にて、カウンタｍをインクリメントする。そして、次のＳ４７０にて、カウンタｍがＭｍａｘ以下であるか否かを判定し、カウンタｍがＭｍａｘ以下であれば、Ｓ３４０の次のＳ３５０へ戻るが、カウンタｍがＭｍａｘ以下でなければ（Ｍｍａｘを超えたなら）、当該仮想メモリマッピングを終了する。このため、一点鎖線枠内に示すＳ３５０〜Ｓ４５０からなる処理は、Ｍｍａｘと同じ回数だけ繰り返される。
【００７５】
また、その一点鎖線枠内の処理において、最初のＳ３５０では、処理回数をカウントするためと、処理対象のインジェクタを示すために設けられているカウンタｕを１にし、その後、点線枠内に示すＳ３６０〜Ｓ４３０からなる処理を行った後、Ｓ４４０にて、カウンタｕをインクリメントする。そして、次のＳ４５０にて、カウンタｕがインジェクタＩＪ１〜ＩＪ４の個数であるＮ（＝４）以下であるか否かを判定し、カウンタｕがＮ以下であれば、Ｓ３５０の次のＳ３６０へ戻るが、カウンタｕがＮ以下でなければ（Ｎを超えたなら）、Ｓ４６０に進む。
【００７６】
このため、図２に示すように、カウンタｕは１からＮ（＝４）の間で１ずつ増加してラップラウンドし、そのカウンタｕが１〜Ｎの何れかになる各回毎に、点線枠内に示すＳ３６０〜Ｓ４３０からなる処理が行われる。そして更に、カウンタｕが１からＮまでの一周をするサイクル毎に、カウンタｍが１ずつ増加することとなり、該カウンタｍがＭｍａｘを超えた時点で、仮想メモリマッピング処理が終了する。
【００７７】
そして、このように繰り返される点線枠内の処理において、最初のＳ３６０では、仮想メモリアドレスポインタｅを冗長データ数Ｒ（本実施形態ではＲ＝３）で割った余りが０であるか否かを判定する。尚、仮想メモリアドレスポインタｅは、点線枠内の処理のうちの後述するＳ４３０にてインクリメントされる。このため、仮想メモリアドレスポインタｅは、０を初期値として、点線枠内の処理が行われる毎に（カウンタｕが変化する毎に）インクリメントされる（図２参照）。
【００７８】
このＳ３６０にて、「ｅ／Ｒの余り」が０でないと判定した場合には、そのままＳ３８０に進むが、「ｅ／Ｒの余り」が０であると判定した場合には、Ｓ３７０に進んで、保存データ数カウンタｄをインクリメントした後、Ｓ３８０に進む。このため、図２に示すように、保存データ数カウンタｄは、仮想メモリアドレスポインタｅが冗長データ数Ｒ（＝３）の倍数（０を含む）になる毎に、インクリメントされる。
【００７９】
そして、Ｓ３８０では、マッピング終了条件が成立したか否かを判定する。
マッピング終了条件とは、仮想メモリアドレスポインタｅが示す仮想メモリアドレスに対して物理アドレスをマッピングする（対応付ける、割り当てる）ための後述するＳ４００又はＳ４１０の処理を行わなくても良い条件であり、物理アドレスとのマッピングが完了した仮想メモリアドレスの数が、「Ｎ×Ｍｍａｘ」以下で且つＲの倍数のうちの最大値に達したという条件である。そして、Ｓ３８０では、具体的な判定式としては、「ｄ×Ｒ＞Ｎ×Ｍｍａｘ」であるか否かを判定している。
【００８０】
このＳ３８０にて、マッピング終了条件が成立したと肯定判定（ＹＥＳと判定）した場合には、そのまま点線枠内の処理を抜けてＳ４４０に移行する。この場合、以後のＳ３８０でも肯定判定することとなり、実質的な処理としては、カウンタｕのカウントアップ（Ｓ４４０）と、カウンタｍのカウントアップ（Ｓ４６０）だけが行われ、カウンタｍがＭｍａｘを超えた時点で、当該仮想メモリマッピング処理が終了する。
【００８１】
一方、上記Ｓ３８０にて、マッピング終了条件が成立していないと判定した場合には、Ｓ３９０に進む。
Ｓ３９０では、カウンタｕの現在値に対応する処理対象のインジェクタＩＪｕ（ｕは、カウンタｕの現在値であり１〜４の何れか）の状態情報Ｓｕが「１」であるか否かを判定する。
【００８２】
そして、状態情報Ｓｕが「１」であれば（Ｓ３９０：ＹＥＳ）、Ｓ４００に進み、インジェクタＩＪｕについて、後述する図６のオールマッピング処理を行った後、Ｓ４３０に進んで、仮想メモリアドレスポインタｅをインクリメントする。そして、その後、点線枠内の処理を抜けてＳ４４０に移行する。尚、状態情報Ｓ１〜Ｓ４は、「１」に設定されるのであれば、図３のＳ１４０にて、全ての状態情報Ｓ１〜Ｓ４が「１」に設定されるため、Ｓ４００のオールマッピング処理は、カウンタｕが１〜４の全ての場合に行われる（換言すれば、全てのインジェクタＩＪ１〜ＩＪ４について行われる）こととなる。
【００８３】
また、上記Ｓ３９０にて、状態情報Ｓｕが「１」ではないと判定した場合には、Ｓ４１０に移行して、状態情報Ｓｕが「２」であるか否かを判定する。そして、状態情報Ｓｕが「２」でなければ（Ｓ４１０：ＮＯ）、そのまま上記Ｓ４３０に移行するが、状態情報Ｓｕが「２」であれば（Ｓ４１０：ＹＥＳ）、Ｓ４３０に進み、インジェクタＩＪｕについて、後述する図７の差分マッピング処理を行った後、上記Ｓ４３０に進む。尚、状態情報Ｓ１〜Ｓ４は、「２」に設定されるのであれば、図３のＳ１５０にて、何れか１つだけが「２」に設定されるため、Ｓ４２０の差分マッピング処理は、「２」に設定されている状態情報Ｓｕに対応するインジェクタＩＪｕであって、交換されたインジェクタＩＪｕについて行われることとなる。
【００８４】
次に、図５のＳ４００で行われるオールマッピング処理について説明する。
図６に示すように、オールマッピング処理では、まずＳ５１０にて、カウンタｕの現在値に対応する処理対象のインジェクタＩＪｕのメモリマッピング（即ち、インジェクタＩＪｕの共通領域３０の各アドレスを仮想メモリアドレスの何れかに割り当てること）が未完了であるか否かを判定する。具体的には、インジェクタＩＪｕの共通領域データ数Ｍｕと、カウンタｍの現在値とを比較して、「ｍ≦Ｍｕ」であるか否かを判定する。
【００８５】
そして、「ｍ≦Ｍｕ」であれば、インジェクタＩＪｕのメモリマッピングが未完了であると判断して、Ｓ５２０に進み、仮想メモリアドレスポインタｅが示す仮想メモリアドレス「Ｅ＋ｅ」に対応する（割り当てる）物理アドレスとして、インジェクタＩＪｕのユニットＩＤと、インジェクタＩＪｕの共通領域先頭アドレスＡＩｕに「ｍ−１」を加算したアドレスとからなる情報を記憶する。そして、その後、当該オールマッピング処理を終了する。
【００８６】
また、上記Ｓ５１０にて、「ｍ≦Ｍｕ」ではない（ｍ＞Ｍｕ）と判定した場合には、インジェクタＩＪｕのメモリマッピングが完了しているため（即ち、仮想メモリアドレスに割り当てていないインジェクタＩＪｕの共通領域３０のアドレスはもう無いため）、Ｓ５３０に移行する。そのＳ５３０では、仮想メモリアドレスポインタｅが示す仮想メモリアドレス「Ｅ＋ｅ」に対応する（割り当てる）物理アドレスとして、当該ＥＣＵ１１のユニットＩＤ（本実施形態では０）と、ＥＣＵメモリ３３の空きアドレス（仮想メモリアドレスに割り当てていないアドレス）のうちの最小のアドレスとからなる情報を記憶する。そして、その後、当該オールマッピング処理を終了する。
【００８７】
つまり、本実施形態において、仮想メモリアドレスの各々に割り当てる物理アドレスは、物理的なメモリ（実際に存在するメモリであり、インジェクタＩＪ１〜ＩＪ４のＥＥＰＲＯＭ２３又はＥＣＵ１１のＥＥＰＲＯＭ１７）におけるアドレス（以下、物理メモリアドレスという）と、その物理的なメモリが搭載されているユニット（インジェクタＩＪ１〜ＩＪ４又はＥＣＵ１１）を示すユニットＩＤとの、２つの情報からなっている（図９参照）。
【００８８】
尚、上記Ｓ５２０，Ｓ５３０の処理で記憶される仮想メモリアドレスと物理アドレスとの対応関係情報であるマッピング情報は、ＥＥＰＲＯＭ１７における特定の領域に保存するようになっている。そして、このことは、後述する差分マッピング処理によって設定し直されるマッピング情報についても同様である。
【００８９】
そして、上記のオールマッピング処理が図５のＳ４００で行われることにより、ＥＣＵ１１に４つのインジェクタＩＪ１〜ＩＪ４が接続された後の、該ＥＣＵ１１の最初の起動時（一般には、ＥＣＵ１１の車両への組み付け直後の起動時）には、仮想メモリ領域３１が図２の右側に示したように作成されることとなる。
【００９０】
例えば、図９は、図２の例で作成される仮想メモリ領域３１について、具体的なアドレス値を用いて、仮想メモリアドレスと物理アドレスとのマッピング情報を例示した図である。そして、この図９の例においては、仮想メモリ領域３１の先頭アドレスＥが「０ｘ００００」で、インジェクタＩＪ１〜ＩＪ４の共通領域先頭アドレスＡＩ１〜ＡＩ４は全て同じで「０ｘ１０００」となっている。尚、“０ｘ”は、それ以降の英数字が１６進数表示のものであることを示している。
【００９１】
その図９に示すように、カウンタｕが１から４の間でラップラウンドするサイクルのうち、カウンタｍが１の場合である１サイクル目では、カウンタｕが１〜４の各場合に、オールマッピング処理（図６）におけるＳ５２０の処理が行われることにより、仮想メモリ領域３１の先頭から４番目までの４つのアドレス「０ｘ００００」〜「０ｘ０００３」の各々に、各インジェクタＩＪ１〜ＩＪ４の共通領域先頭アドレス（ＡＩ１〜ＡＩ４＝「０ｘ１０００」）がマッピングされる。
【００９２】
具体的には、仮想メモリアドレス「０ｘ００００」に対しては、インジェクタＩＪ１のユニットＩＤ（＝１）と、インジェクタＩＪ１の共通領域先頭アドレス「０ｘ１０００」とが、物理アドレスとしてマッピングされ、仮想メモリアドレス「０ｘ０００１」に対しては、インジェクタＩＪ２のユニットＩＤ（＝２）と、インジェクタＩＪ２の共通領域先頭アドレス「０ｘ１０００」とが、物理アドレスとしてマッピングされ、仮想メモリアドレス「０ｘ０００２」に対しては、インジェクタＩＪ３のユニットＩＤ（＝３）と、インジェクタＩＪ３の共通領域先頭アドレス「０ｘ１０００」とが、物理アドレスとしてマッピングされ、仮想メモリアドレス「０ｘ０００３」に対しては、インジェクタＩＪ４のユニットＩＤ（＝４）と、インジェクタＩＪ４の共通領域先頭アドレス「０ｘ１０００」とが、物理アドレスとしてマッピングされる。
【００９３】
そして、カウンタｍが２の場合である２サイクル目では、カウンタｕが１〜４の各場合に、オールマッピング処理（図６）におけるＳ５２０処理が行われることにより、仮想メモリ領域３１の５番目から８番目までの４つのアドレス「０ｘ０００４」〜「０ｘ０００７」の各々に、各インジェクタＩＪ１〜ＩＪ４の共通領域３０の２番目のアドレス（ＡＩ１＋１〜ＡＩ４＋１＝「０ｘ１００１」）がマッピングされる。
【００９４】
具体的には、仮想メモリアドレス「０ｘ０００４」に対しては、インジェクタＩＪ１のユニットＩＤ（＝１）と、インジェクタＩＪ１の共通領域３０の２番目のアドレス「０ｘ１００１」とが、物理アドレスとしてマッピングされ、仮想メモリアドレス「０ｘ０００５」に対しては、インジェクタＩＪ２のユニットＩＤ（＝２）と、インジェクタＩＪ２の共通領域３０の２番目のアドレス「０ｘ１００１」とが、物理アドレスとしてマッピングされ、仮想メモリアドレス「０ｘ０００６」に対しては、インジェクタＩＪ３のユニットＩＤ（＝３）と、インジェクタＩＪ３の共通領域３０の２番目のアドレス「０ｘ１００１」とが、物理アドレスとしてマッピングされ、仮想メモリアドレス「０ｘ０００７」に対しては、インジェクタＩＪ４のユニットＩＤ（＝４）と、インジェクタＩＪ４の共通領域３０の２番目のアドレス「０ｘ１００１」とが、物理アドレスとしてマッピングされる。
【００９５】
また、この例において、インジェクタＩＪ４の共通領域データ数Ｍ４は２であるため、この２サイクル目で、インジェクタＩＪ４のメモリマッピングが完了する。
よって、カウンタｍが３の場合である３サイクル目では、カウンタｕが１〜３の各場合には、オールマッピング処理（図６）におけるＳ５２０の処理が行われて、仮想メモリ領域３１の９番目から１１番目までの３つのアドレス「０ｘ０００８」〜「０ｘ０００Ａ」の各々に、各インジェクタＩＪ１〜ＩＪ３の共通領域３０の３番目のアドレス（ＡＩ１＋２〜ＡＩ３＋２＝「０ｘ１００２」）がマッピングされるが、カウンタｕが４の場合には、オールマッピング処理（図６）におけるＳ５１０で「ＮＯ」と判定されてＳ５３０の処理が行われることとなる。このため、仮想メモリ領域３１の１２番目のアドレス「０ｘ０００Ｂ」には、ＥＣＵメモリ３３の先頭アドレス（この例では「０ｘ１Ｆ００」）がマッピングされることとなる。具体的には、仮想メモリアドレス「０ｘ０００Ｂ」に対しては、当該ＥＣＵ１１のユニットＩＤ（＝０）と、ＥＣＵメモリ３３の先頭アドレス「０ｘ１Ｆ００」とが、物理アドレスとしてマッピングされる。
【００９６】
また、この例において、インジェクタＩＪ１の共通領域データ数Ｍ１は３であるため、この３サイクル目で、インジェクタＩＪ１のメモリマッピングが完了する。
よって、カウンタｍが４の場合である４サイクル目では、カウンタｕが２，３の各場合には、オールマッピング処理（図６）におけるＳ５２０の処理が行われて、仮想メモリ領域３１の１４番目と１５番目のアドレス「０ｘ０００Ｄ」，「０ｘ０００Ｅ」の各々に、各インジェクタＩＪ２，ＩＪ３の共通領域３０の４番目のアドレス（ＡＩ２＋３，ＡＩ３＋３＝「０ｘ１００３」）がマッピングされるが、カウンタｕが１，４の各場合には、オールマッピング処理（図６）におけるＳ５１０で「ＮＯ」と判定されてＳ５３０の処理が行われることとなる。このため、仮想メモリ領域３１の１３番目と１６番目のアドレス「０ｘ０００Ｃ」，「０ｘ０００Ｆ」の各々には、ＥＣＵメモリ３３の２番目と３番目の各アドレス（この例では「０ｘ１Ｆ０１」，「０ｘ１Ｆ０２」）がマッピングされることとなる。具体的には、仮想メモリアドレス「０ｘ０００Ｃ」に対しては、当該ＥＣＵ１１のユニットＩＤ（＝０）と、ＥＣＵメモリ３３の２番目のアドレス「０ｘ１Ｆ０１」とが、物理アドレスとしてマッピングされ、仮想メモリアドレス「０ｘ０００Ｆ」に対しては、当該ＥＣＵ１１のユニットＩＤ（＝０）と、ＥＣＵメモリ３３の３番目のアドレス「０ｘ１Ｆ０２」とが、物理アドレスとしてマッピングされる。
【００９７】
そして、図９では図示を省略しているが、物理アドレスとのマッピングが完了した仮想メモリアドレスの数が、「Ｎ×Ｍｍａｘ」以下で且つＲの倍数のうちの最大値（図２の例では２７）に達すると、図５のＳ３８０で「ＹＥＳ」と判定されて、仮想メモリ領域３１の作成が完了することとなる。
【００９８】
一方、ＥＣＵ１１のマイコン１６は、仮想メモリ領域３１の作成が完了している状態で、図８に示す書込処理を、例えば一定時間毎に実行する。
そして、図８に示すように、マイコン１６は、書込処理を開始すると、まずＳ７１０にて、インジェクタＩＪ１〜ＩＪ４側に保存すべき共通データであって、未保存の共通データがあるか否かを判定する。
【００９９】
そして、未保存の共通データがなければ、そのまま当該書込処理を終了するが、未保存の共通データがあれば、Ｓ７２０に進む。例えば、保存すべき共通データがフリーズフレームデータであれば、故障を検出したことによって新たなフリーズフレームデータが生じた場合に、Ｓ７２０へ進むこととなる。
【０１００】
Ｓ７２０では、該当のデータ（未保存の共通データ）を、仮想メモリ領域３１において連続するＲ（＝３）個の各アドレスに書き込み、その後、当該書込処理を終了する。
尚、Ｓ７２０では、仮想メモリ領域３１におけるデータ未書込のアドレスのうち、先頭に近いものを優先的に選択してデータを書き込む。
【０１０１】
このため、図２の右側に示したように、仮想メモリ領域３１には、先頭から３個ずつのアドレスの各グループに、同じデータが書き込まれる。よって、図２の例では、仮想メモリ領域３１に、最大で９個（９種類）のデータが書き込まれることとなる。
【０１０２】
また、仮想メモリ領域３１のアドレス（仮想メモリアドレス）へのデータ書き込みは、その仮想メモリアドレスに割り当てられている物理アドレスへのデータ書き込みを行うということである。
【０１０３】
このため、書き込み対象の仮想メモリアドレスに割り当てられている物理アドレスのうち、ユニットＩＤの方を「ＩＤｗ」とし、物理メモリアドレスの方を「ＡＤｗ」とすると、ＩＤｗが１〜４の何れかであれば、ユニットＩＤとして「ＩＤｗ」を含み、書き込み先アドレスとして「ＡＤｗ」を含む前述の書き込み要求フレームを、通信線１２に送出することにより、ユニットＩＤとして「ＩＤｗ」を持つインジェクタにおけるＥＥＰＲＯＭ２３（共通領域３０）のアドレスのうちの「ＡＤｗ」に、データを書き込むことととなる。また、ＩＤｗが０ならば、当該ＥＣＵ１１のＥＥＰＲＯＭ１７（特にＥＣＵメモリ３３）のアドレスのうちの「ＡＤｗ」に、通信を用いることなくデータを書き込むことととなる。
【０１０４】
一方、図８の書込処理では行わないが、仮想メモリ領域３１のアドレス（仮想メモリアドレス）からのデータ読み出しは、その仮想メモリアドレスに割り当てられている物理アドレスからのデータ読み出しを行うということである。
【０１０５】
このため、読み出し対象の仮想メモリアドレスに割り当てられている物理アドレスのうち、ユニットＩＤの方を「ＩＤｒ」とし、物理メモリアドレスの方を「ＡＤｒ」とすると、ＩＤｒが１〜４の何れかであれば、ユニットＩＤとして「ＩＤｒ」を含み、読み出し先アドレスとして「ＡＤｒ」を含む前述の読み出し要求フレームを、通信線１２に送出することにより、ユニットＩＤとして「ＩＤｒ」を持つインジェクタにおけるＥＥＰＲＯＭ２３（共通領域３０）のアドレスのうちの「ＡＤｒ」から、データを読み出すことととなる。また、ＩＤｒが０ならば、当該ＥＣＵ１１のＥＥＰＲＯＭ１７（特にＥＣＵメモリ３３）のアドレスのうちの「ＡＤｒ」から、通信を用いることなくデータを読み出すことととなる。
【０１０６】
次に、図５に関する説明に戻り、その図５のＳ４２０で行われる差分マッピング処理について説明する。
図７に示すように、差分マッピング処理では、まずＳ６１０にて、カウンタｕの現在値に対応する処理対象のインジェクタ（この場合、交換されたインジェクタ）ＩＪｕの共通領域データ数Ｍｕが、そのインジェクタＩＪｕの交換前からどれだけ変わったかを示すメモリ容量差分Ｍｄｕを算出する。具体的には、今回の仮想メモリマッピング処理のＳ３１０で取得したインジェクタＩＪｎの共通領域データ数Ｍｕから、前回に実行した仮想メモリマッピング処理のＳ３１０で取得したインジェクタＩＪｕの共通領域データ数（即ち、交換前のインジェクタＩＪｕの共通領域データ数）Ｍｏｕを引いた値を、メモリ容量差分Ｍｄｕとして算出する。
【０１０７】
次にＳ６２０にて、インジェクタＩＪｕの共通領域先頭アドレスＡＩｕが変わったか否かを判定する。具体的には、今回の仮想メモリマッピング処理のＳ３１０で取得したインジェクタＩＪｎの共通領域先頭アドレスＡＩｕが、前回に実行した仮想メモリマッピング処理のＳ３１０で取得したインジェクタＩＪｕの共通領域先頭アドレス（即ち、交換前のインジェクタＩＪｕの共通領域先頭アドレス）ＡＩｏｕから、変わっているか否かを判定する。そして、インジェクタＩＪｕの共通領域先頭アドレスＡＩｕが変わっていないと判定した場合には、Ｓ６３０に進む。
【０１０８】
Ｓ６３０では、インジェクタＩＪｕの共通領域データ数Ｍｕに増減があったか否かを判定する。具体的には、Ｓ６１０で算出したメモリ容量差分Ｍｄｕが０でないか否かを判定する。そして、「Ｍｄｕ＝０」であれば、共通領域データ数Ｍｕに増減はなかったと判断して、そのままＳ７００に移行する。尚、この場合には、インジェクタＩＪｕの共通領域先頭アドレスＡＩｕと共通領域データ数Ｍｕとが両方共に変わっていないため、仮想メモリ領域３１の物理アドレスとのマッピング情報を変更することなく、Ｓ７００へ移行することとなる。
【０１０９】
これに対し、Ｓ６３０にて、共通領域データ数Ｍｕに増減があった（Ｍｄｕ≠０）と判定した場合には、Ｓ６４０に進む。
そして、Ｓ６４０では、「Ｍｄｕ＜０」であるか否かを判定し、「Ｍｄｕ＜０」でなければ、共通領域データ数Ｍｕが増加したと判断して、Ｓ６５０に進む。
【０１１０】
Ｓ６５０では、カウンタｍの現在値を読み込んで、「Ｍｏｕ＜ｍ≦Ｍｕ」であるか否かを判定する。そして、「Ｍｏｕ＜ｍ≦Ｍｕ」でなければ、そのままＳ７００に移行するが、「Ｍｏｕ＜ｍ≦Ｍｕ」であれば、Ｓ６６０に進み、図６のＳ５２０と同じ処理を行う。即ち、仮想メモリアドレスポインタｅが示す仮想メモリアドレス「Ｅ＋ｅ」に対応する物理アドレスとして、インジェクタＩＪｕのユニットＩＤと、インジェクタＩＪｕの共通領域先頭アドレスＡＩｕに「ｍ−１」を加算したアドレスとからなる情報を記憶する。そして、その後、Ｓ７００に進む。
【０１１１】
つまり、インジェクタＩＪｕの共通領域先頭アドレスＡＩｕは変わらず、共通領域データ数（共通領域３０のアドレス数）Ｍｕが増加した場合には、それまで本来ならインジェクタＩＪｕの共通領域３０のアドレスが割り当てられるべきなのにＥＣＵメモリ３３のアドレスを割り当てていた仮想メモリアドレスに対して、今回増加したインジェクタＩＪｕの共通領域３０のアドレスを割り当てるようにしている。
【０１１２】
例えば、図９の例において、インジェクタＩＪ４が交換されて、該インジェクタＩＪ４の共通領域先頭アドレスＡＩ４は変わらず、共通領域データ数Ｍ４が２から４に増加したとすると、「ｍ＝３、ｕ＝４」の場合と、「ｍ＝４、ｕ＝４」の場合とに、Ｓ６６０の処理が行われる。その結果、それまでＥＣＵメモリ３３の先頭アドレス「０ｘ１Ｆ００」と３番目のアドレス「０ｘ１Ｆ０２」とが割り当てられていた仮想メモリアドレス「０ｘ０００Ｂ」，「０ｘ０００Ｆ」の各々に対して、インジェクタＩＪ４の共通領域３０の３番目のアドレス（ＡＩ４＋２＝「０ｘ１００２」）と４番目のアドレス（ＡＩ４＋３＝「０ｘ１００３」）とが割り当てられることとなる。
【０１１３】
また、上記Ｓ６４０にて、「Ｍｄｕ＜０」であると判定した場合には、共通領域データ数Ｍｕが減少したと判断して、Ｓ６７０に移行する。
Ｓ６７０では、カウンタｍの現在値を読み込んで、「Ｍｕ＜ｍ≦Ｍｏｕ」であるか否かを判定する。そして、「Ｍｕ＜ｍ≦Ｍｏｕ」でなければ、そのままＳ７００に移行するが、「Ｍｕ＜ｍ≦Ｍｏｕ」であれば、Ｓ６８０に進み、図６のＳ５３０と同じ処理を行う。即ち、仮想メモリアドレスポインタｅが示す仮想メモリアドレス「Ｅ＋ｅ」に対応する物理アドレスの情報として、当該ＥＣＵ１１のユニットＩＤと、ＥＣＵメモリ３３の空きアドレスのうちの最小のアドレスとからなる情報を記憶する。そして、その後、Ｓ７００に進む。
【０１１４】
つまり、インジェクタＩＪｕの共通領域先頭アドレスＡＩｕは変わらず、共通領域データ数（共通領域３０のアドレス数）Ｍｕが減少した場合には、その減少により無くなってしまったインジェクタＩＪｕの共通領域３０のアドレスを割り当てていた仮想メモリアドレスに対して、ＥＣＵメモリ３３の空きアドレスを割り当てるようにしている。
【０１１５】
例えば、図９の例において、インジェクタＩＪ１が交換されて、該インジェクタＩＪ１の共通領域先頭アドレスＡＩ４は変わらず、共通領域データ数Ｍ１が３から２に減少したとすると、「ｍ＝３、ｕ＝１」の場合に、Ｓ６８０の処理が行われる。その結果、それまでインジェクタＩＪ１の共通領域３０の３番目のアドレスが割り当てられていた仮想メモリアドレス「０ｘ０００８」に対して、ＥＣＵメモリ３３のアドレス「０ｘ１Ｆ０Ａ」が割り当てられることとなる。尚、この例においては、ＥＣＵメモリ３３の「０ｘ１Ｆ００」〜「０ｘ１Ｆ０９」の１０個のアドレスが既に使用されているため（図２参照）、空きアドレスのうちで最小の「０ｘ１Ｆ０Ａ」が、仮想メモリアドレス「０ｘ０００８」に割り当てられる。
【０１１６】
一方、上記Ｓ６２０にて、インジェクタＩＪｕの共通領域先頭アドレスＡＩｕが変わったと判定した場合には、Ｓ６９０に移行する。
そして、Ｓ６９０では、図６のＳ５１０と同様に、「ｍ≦Ｍｕ」であるか否かを判定し、「ｍ≦Ｍｕ」であれば、インジェクタＩＪｕのメモリマッピングが未完了であると判断して、Ｓ６９３に進み、図６のＳ５２０と同じ処理を行う。そして、その後、Ｓ７００に進む。
【０１１７】
また、上記Ｓ６９０にて、「ｍ≦Ｍｕ」ではない（ｍ＞Ｍｕ）と判定した場合には、Ｓ６９５に移行する。尚、この時点において、交換後のインジェクタＩＪｕの共通領域３０の各アドレスであって、Ｍｕ個の各アドレスは、Ｓ６９３の処理により、仮想メモリアドレスのうち、先頭から「ｕ＋４×ｉ」番目（但しｉ＝０，１，…，Ｍｕ−１）の各仮想メモリアドレスにそれぞれ割り当てられている。
【０１１８】
そして、Ｓ６９５では、「Ｍｄｕ＜０」であるか否かを判定し、「Ｍｄｕ＜０」でなければ、共通領域データ数Ｍｕが同じか増加したということであり、これ以上は仮想メモリ領域３１の物理アドレスとのマッピング情報を変更する必要がないと判断して、そのままＳ７００に進む。
【０１１９】
また、上記Ｓ６９５にて、「Ｍｄｕ＜０」であると判定した場合には、共通領域データ数Ｍｕが減少したと判断して、前述したＳ６７０に移行する。
このため、「Ｍｕ＜ｍ≦Ｍｏｕ」でなければ（Ｓ６７０：ＮＯ）、そのままＳ７００に移行することとなり、また、「Ｍｕ＜ｍ≦Ｍｏｕ」であれば（Ｓ６７０：ＹＥＳ）、Ｓ６８０にて、図６のＳ５３０と同じ処理を行った後、Ｓ７００に進むこととなる。
【０１２０】
つまり、インジェクタＩＪｕの共通領域先頭アドレスＡＩｕが変わった場合には、共通領域データ数Ｍｕの増減にかかわらず、そのインジェクタＩＪｎの共通領域３０の各アドレスを物理アドレスとして割り当てるべきＭｕ個の各仮想メモリアドレス（上記「ｕ＋４×ｉ」番目（ｉ＝０，１，…，Ｍｕ−１）の各仮想メモリアドレス）について、Ｓ６９３の処理を行うことにより、該当する物理アドレスの再設定をしている。
【０１２１】
そして、その再設定が終了したら（Ｓ６９０：ＮＯ）、共通領域データ数Ｍｕの増減を判断して、共通領域データ数Ｍｕが同じか増加しているのであれば（Ｓ６９５：ＮＯ）、そのままＳ７００へ進んで、それ以上は仮想メモリ領域３１の物理アドレスとのマッピング情報を変更しない。このため、インジェクタＩＪｕの交換前からＥＣＵメモリ３３のアドレスが割り当てられていた仮想メモリアドレスに関しては、物理アドレスとのマッピング情報を何ら変更しない。
【０１２２】
また、共通領域データ数Ｍｕが減少していれば（Ｓ６９５：ＹＥＳ）、その減少により無くなってしまったインジェクタＩＪｕの共通領域３０のアドレスを割り当てていた仮想メモリアドレスに対して、Ｓ６８０の処理により、ＥＣＵメモリ３３の空きアドレスを割り当てるようにしている。そして、共通領域データ数Ｍｕが減少した場合でも、Ｓ６７０でＮＯと判定したなら、Ｓ７００へ進んで、それ以上は仮想メモリ領域３１の物理アドレスとのマッピング情報を変更しない。よって、この場合も、インジェクタＩＪｕの交換前からＥＣＵメモリ３３のアドレスが割り当てられていた仮想メモリアドレスに関しては、物理アドレスとのマッピング情報を何ら変更しない。
【０１２３】
そして、何れかのインジェクタＩＪｕが交換された場合には、上記Ｓ６１０〜Ｓ６９５の処理により、仮想メモリ領域３１の物理アドレスとのマッピング情報を、必要最小限の範囲で変更している。
【０１２４】
一方、差分マッピング処理において、全ての処理経路から移行することとなる最後のＳ７００では、データ復帰処理を行い、その後、当該差分マッピング処理を終了する。
ここで、Ｓ７００のデータ復帰処理は、交換前のインジェクタに保存されていた共通データを、交換後のインジェクタＩＪｕに継承して保存するための処理であり、下記の［第１処理］〜［第３処理］からなる。
【０１２５】
［第１処理］
現在の仮想メモリアドレスポインタｅ（ここでは、そのｅの現在値を「ｅ０」と記載する）が示す仮想メモリアドレス「Ｅ＋ｅ０」と同じデータが記憶される他の「Ｒ−１」個（本実施形態ではＲ＝３であるため２個）の仮想メモリアドレスを特定する。
【０１２６】
［第２処理］
第１処理によって特定した「Ｒ−１」個の仮想メモリアドレスに記憶されているデータ（詳しくは、その仮想メモリアドレスに割り当てられている物理アドレスに記憶されているデータ）から、仮想メモリアドレス「Ｅ＋ｅ０」に書き込むべきデータを復元する。
【０１２７】
［第３処理］
第２処理によって復元したデータを、仮想メモリアドレス「Ｅ＋ｅ０」に書き込む。
更に具体的に説明すると、まず第１処理では、ｅ０が、０から３つずつ（０〜２，３〜５，６〜８，９〜１１，…）の各グループのうち、何れのグループに入っているかを判別すると共に、その判別したグループの３つの値のうちで、ｅ０以外の２つの値ｅ１，ｅ２を特定し、仮想メモリ領域３１の先頭アドレスＥに上記２つの値ｅ１，ｅ２をそれぞれ加算した各アドレス「Ｅ＋ｅ１」，「Ｅ＋ｅ２」を、仮想メモリアドレス「Ｅ＋ｅ０」と同じデータが記憶される他の２つの仮想メモリアドレスとして算出する。
【０１２８】
尚、ｅ０が、０から３つずつの何れのグループに入っているかは、「｛（ｄ−１）×３｝〜｛ｄ×３−１｝」の式に、現在の保存データ数カウンタｄの値を代入することで判別することができる（図２参照）。
【０１２９】
そして、第２処理では、まず、第１処理で算出した２つの仮想メモリアドレス「Ｅ＋ｅ１」，「Ｅ＋ｅ２」の各々から、データを読み出す。尚、仮想メモリアドレスからのデータの読み出しは、既述した通り、その仮想メモリアドレスに割り当てられている物理アドレスからデータを読み出すということである。そして更に、第２処理では、仮想メモリアドレス「Ｅ＋ｅ１」，「Ｅ＋ｅ２」の各々から読み出した２つのデータＤ１，Ｄ２が一致しているか否かを判定し、両データＤ１，Ｄ２が一致していれば、そのデータを、仮想メモリアドレス「Ｅ＋ｅ０」への書き込み対象データ（即ち、復元したデータ）とする。また、２つのデータＤ１，Ｄ２が一致していない場合には、どちらが真なのか特定できないため、仮想メモリアドレス「Ｅ＋ｅ０」への書き込み対象データは、例えば所定の初期値（固定値）とする。
【０１３０】
そして、第３処理では、第２処理で求めた書き込み対象データを、仮想メモリアドレス「Ｅ＋ｅ０」に書き込む。つまり、仮想メモリアドレス「Ｅ＋ｅ０」に割り当てられている物理アドレスへ、書き込み対象データを書き込む処理を行う。
【０１３１】
尚、本実施形態において、冗長データ数Ｒは、２よりも大きく且つインジェクタの個数Ｎよりは小さい値に設定されるが、Ｎが５以上であって、冗長データ数Ｒを４以上に設定した場合、例えば、上記第２処理では、「Ｒ−１」個の仮想メモリアドレスに記憶されている「Ｒ−１」個のデータに対して、多数決の処理を行い、一致しているものの数が最多のデータを、仮想メモリアドレス「Ｅ＋ｅ０」への書き込み対象データとすることができる。
【０１３２】
一方、本実施形態では、ＥＣＵ１１が、マスタユニットとしての電子制御装置に相当し、インジェクタＩＪ１〜ＩＪ４が、スレーブユニットに相当し、インジェクタＩＪ１〜ＩＪ４に設けられたＥＥＰＲＯＭ２３の共通領域３０が、データの書き換えが可能な不揮発性メモリの特定記憶領域に相当し、共通データが、保存対象データに相当している。また、共通領域先頭アドレス及び共通領域データ数が、特定記憶領域の先頭及び容量を示す領域情報に相当している。
【０１３３】
そして、ＥＣＵ１１のマイコン１６が、仮想メモリ作成手段と書込手段との各々に相当しており、図４のメモリ管理処理（特に図５の仮想メモリマッピング処理）が、仮想メモリ作成手段としての処理に相当し、図８の書込処理が、書込手段としての処理に相当している。また、ＥＣＵ１１のＥＥＰＲＯＭ１７（特にＥＣＵメモリ３３）が、マスタ側メモリに相当している。更に、ＥＣＵ１１のマイコン１６は、交換検知手段にも相当しており、図３の交換判定処理が、交換検知手段としての処理に相当している。
【０１３４】
また、ＥＣＵ１１のマイコン１６は、復元手段にも相当しており、図７のＳ７００の処理のうちの第１処理と第２処理が、復元手段としての処理に相当している。つまり、図７の差分マッピング処理が行われる各回のうち、カウンタｍがＭｏｕ（交換前のインジェクタＩＪｕの共通領域データ数）以下である各回においては、Ｓ７００の第１処理により、交換前のインジェクタＩＪｕの共通領域３０におけるアドレスのうちで、現在の仮想メモリアドレスポインタｅが示す仮想メモリアドレス「Ｅ＋ｅ」に割り当てられていたアドレスについて、そのアドレスに記憶されていたデータと同じデータが記憶されていた仮想メモリアドレス（仮想メモリ領域における単位記憶領域）が特定されることとなる。そして、その回において、第２処理により、「Ｍｕ≧Ｍｏｕ」であれば、第１処理で特定した仮想メモリアドレスに記憶されているデータから、交換後のインジェクタＩＪｕの共通領域３０におけるアドレスのうちで、上記仮想メモリアドレス「Ｅ＋ｅ」に割り当てられているアドレスへ書き込むべきデータを、復元することとなる。
【０１３５】
以上のような本実施形態の制御システム１におけるＥＣＵ１１によれば、各インジェクタＩＪ１〜ＩＪ４の共通領域３０に同じデータをそれぞれ書き込む構成と比較すると、データの冗長保存を実現しつつ、メモリの利用効率を向上させることができる。つまり、共通領域３０の容量が同じであれば、保存できるデータ数を増やすことができる。
【０１３６】
例えば、各インジェクタＩＪ１〜ＩＪ４の共通領域３０におけるアドレス数が３０個であるとする。この場合、各インジェクタＩＪ１〜ＩＪ４の共通領域３０に同じデータをそれぞれ書き込む構成では、インジェクタＩＪ１〜ＩＪ４側に３０個（種類）のデータしか保存できない。
【０１３７】
これに対して、本実施形態では、冗長データ数Ｒを３にしていることから、インジェクタＩＪ１〜ＩＪ４側には４０個のデータを保存することができる。そして、各データは、Ｒ個の異なるインジェクタに保存されることとなるため、データの冗長保存も実現される。つまり、何れかのインジェクタが交換されても、そのインジェクタに保存されていたデータは、他の何れかのインジェクタにも保存されていることとなり（尚、本実施形態ではＥＣＵ１１側に保存されている場合もあり得る）、保存対象データを失ってしまうことがない。
【０１３８】
また、ＥＣＵ１１のマイコン１６は、各インジェクタＩＪ１〜ＩＪ４から、共通領域先頭アドレスと共通領域データ数を取得し、その取得した情報から各インジェクタＩＪ１〜ＩＪ４の共通領域３０を特定して仮想メモリ領域３１を作成するため、各インジェクタＩＪ１〜ＩＪ４の共通領域３０の先頭アドレスや容量が変わっても、仮想メモリ領域３１を作成することができる。
【０１３９】
また、ＥＣＵ１１のマイコン１６は、各インジェクタＩＪ１〜ＩＪ４の共通領域３０に容量差があることに伴って、インジェクタＩＪ１〜ＩＪ４の共通領域３０のアドレスを前述のインジェクタ順（ＩＪ１→ＩＪ２→ＩＪ３→ＩＪ４の順）に割り当てることができない仮想メモリアドレスに対しては、ＥＣＵメモリ３３のアドレスを割り当てるようになっている（Ｓ５３０）。このため、あるインジェクタの共通領域３０の容量が、他のインジェクタの共通領域３０の容量より小さくても、データの冗長保存を実現することができる。
【０１４０】
また、図７のＳ７００で行うデータ復帰処理により、交換前のインジェクタに保存されていた共通データを、交換後のインジェクタにも継承して保存することができる。
また、本実施形態では、ＥＣＵ１１から見たスレーブユニットが、自動車のエンジンの気筒毎に設けられるインジェクタＩＪ１〜ＩＪ４であるため、前述した（１）〜（３）の点で有利である。
【０１４１】
以上、本発明の一実施形態について説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々なる態様で実施し得ることは勿論である。
【０１４２】
例えば、ＥＣＵ１１と各インジェクタＩＪ１〜ＩＪ４との通信は、別々の通信線による一対一の通信であっても良い。その場合、インジェクタＩＪ１〜ＩＪ４との通信には、ユニットＩＤを用いる必要がなくなる。
【０１４３】
また、データの書き換えが可能な不揮発性メモリとしては、ＥＥＰＲＯＭ以外でも良く、例えばフラッシュメモリでも良い。また、保存対象データの１つを記憶可能な単位記憶領域としては、１アドレス領域に限らず、２つ以上のアドレスの領域でも良い。
【０１４４】
また、スレーブユニット（インジェクタＩＪ１〜ＩＪ４）の個数Ｎは、４に限らず、３以上であれば良く、冗長データ数Ｒは「２以上で且つＮより小」であれば良い。
尚、Ｒ＝２の場合、図７のＳ７００では、前述した第１処理により、１つの仮想メモリアドレスが特定されることとなるため、それに続く第２処理及び第３処理では、第１処理で特定した仮想メモリアドレスに記憶されているデータを、現在の仮想メモリアドレスポインタｅが示す仮想メモリアドレス「Ｅ＋ｅ」に書き込むべきデータとして扱うことになる。
【０１４５】
一方、スレーブユニットは、インジェクタ以外でも良く、例えば、ＥＣＵ１１以外の他の電子制御装置でも良い。
【符号の説明】
【０１４６】
１…制御システム、１１…ＥＣＵ（電子制御装置）、ＩＪ１〜ＩＪ４…インジェクタ
１２…通信線、１３…ＣＰＵ、１４…ＲＯＭ、１５…ＲＡＭ、１６…マイコン
１７，２３…ＥＥＰＲＯＭ、１８，２７…通信回路、１９…駆動回路
２１…アクチュエータ、２９…固有領域、３０…共通領域、３１…仮想メモリ領域
３３…ＥＣＵメモリ、２５…通信処理部
【図１】
0005644707.tif 000002
【図２】
0005644707.tif 000003
【図３】
0005644707.tif 000004
【図４】
0005644707.tif 000005
【図５】
0005644707.tif 000006
【図６】
0005644707.tif 000007
【図７】
0005644707.tif 000008
【図８】
0005644707.tif 000009
【図９】
0005644707.tif 000010