(57)【要約】【課題】制御プログラムの書き換えに起因してエンジンの動作に異常が発生するのを回避するとともに、車両利用者の利便性を向上させる【解決手段】エンジンＥＣＵ１では、まずコア１１，１２がそれぞれ、ＲＯＭ２２，３２に記憶された制御プログラムに従って処理を行う。そして、電子スロットル制御プログラムのプログラム書換要求を受信した場合において、さらに、エンジン停止状態であり且つ車両停止状態であるときに、ＲＯＭ２２，３２に記憶されている電子スロットル制御プログラムを書き換える。また、コア１１，１２における電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換要求を受信した場合において、さらに、エンジン停止状態であり且つ車両停止状態であるとき、またはエンジン稼動状態であり且つ車両停止状態であるときに、プログラム書換要求のあった制御プログラムを書き換える。【選択図】図１
2014235652.tif 000002
【特許請求の範囲】
【請求項１】
車両のエンジンを制御する電子制御装置（１）であって、
前記エンジンを制御するために設けられた第１制御プログラムと、前記エンジンを制御するために設けられ前記第１制御プログラムとは異なる第２制御プログラムとを記憶する第１記憶部（２２）と、
前記第１制御プログラムと、前記エンジンを制御するために設けられ前記第１制御プログラムおよび前記第２制御プログラムとは異なる第３制御プログラムとを記憶する第２記憶部（３２）と、
前記第１記憶部に記憶された前記第１制御プログラムおよび前記第２制御プログラムに従って処理を行う第１処理実行手段（２１，Ｓ２０，Ｓ５００，Ｓ１０１０）と、
前記第２記憶部に記憶された前記第１制御プログラムおよび前記第３制御プログラムに従って処理を行う第２処理実行手段（３１，Ｓ２０，Ｓ５００，Ｓ１０１０）と、
前記第１制御プログラムの書き換えを要求する第１書換要求を取得した場合において、さらに、前記エンジンが停止しており且つ前記車両が停止しているときに、前記第１記憶部に記憶されている前記第１制御プログラムと、前記第２記憶部に記憶されている前記第１制御プログラムを書き換える第１書換手段（Ｓ４２０）と、
前記第２制御プログラムの書き換えを要求する第２書換要求を取得した場合において、さらに、前記エンジンが停止しており且つ前記車両が停止しているとき、または前記エンジンが稼動しており且つ前記車両が停止しているときに、前記第１記憶部に記憶されている前記第２制御プログラムを書き換える第２書換手段（Ｓ４５０）と、
前記第３制御プログラムの書き換えを要求する第３書換要求を取得した場合において、さらに、前記エンジンが停止しており且つ前記車両が停止しているとき、または前記エンジンが稼動しており且つ前記車両が停止しているときに、前記第２記憶部に記憶されている前記第３制御プログラムを書き換える第３書換手段（Ｓ４８０）とを備える
ことを特徴とする電子制御装置。
【請求項２】
書き換えが可能なメモリ（２３，３３）と、
前記第１記憶部に記憶されている前記第１制御プログラム、前記第１記憶部に記憶されている前記第２制御プログラム、前記第２記憶部に記憶されている前記第１制御プログラム、および前記第２記憶部に記憶されている前記第３制御プログラムを前記メモリに格納する格納手段（Ｓ２９０）とを備え、
前記第１処理実行手段は、少なくとも、前記第１書換手段または前記第２書換手段が書き換えを実行している場合において、前記メモリに格納されている前記第１制御プログラムおよび前記第２制御プログラムを読み出すことにより、前記第１制御プログラムおよび前記第２制御プログラムに従って処理を行い、
前記第２処理実行手段は、少なくとも、前記第１書換手段または前記第３書換手段が書き換えを実行している場合において、前記メモリに格納されている前記第１制御プログラムおよび前記第３制御プログラムを読み出すことにより、前記第１制御プログラムおよび前記第３制御プログラムに従って処理を行う
ことを特徴とする請求項１に記載の電子制御装置。
【請求項３】
前記第１書換手段の実行と前記第２書換手段の実行の両方が可能である場合に、前記第２書換手段の実行よりも前記第１書換手段の実行を優先させるとともに、前記第１書換手段の実行と前記第３書換手段の実行の両方が可能である場合に、前記第３書換手段の実行よりも前記第１書換手段の実行を優先させる優先手段（Ｓ４１０，Ｓ４４０，Ｓ４７０）を備える
ことを特徴とする請求項１または請求項２に記載の電子制御装置。
【請求項４】
前記エンジンが稼動しており且つ前記エンジンがアイドル状態ではない場合に、前記第２書換手段および前記第３書換手段の実行を禁止する第１禁止手段（Ｓ１７０）を備える
ことを特徴とする請求項１〜請求項３の何れか１項に記載の電子制御装置。
【請求項５】
前記メモリが故障しているか否かを判断する故障判断手段（Ｓ１２０）と、
前記メモリが故障していると前記故障判断手段が判断した場合に、前記第１書換手段、前記第２書換手段および前記第３書換手段の実行を禁止する第２禁止手段（Ｓ１３０）とを備える
ことを特徴とする請求項２に記載の電子制御装置。
【請求項６】
前記第１制御プログラムは、前記エンジンに設けられた電子スロットルを制御するためのプログラムである
ことを特徴とする請求項１〜請求項５の何れか１項に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶したプログラムを書き換え可能な電子制御装置に関する。
【背景技術】
【０００２】
車両の制御装置において、自動車の機能安全に関する規格であるＩＳＯ２６２６２に準拠するための技術としてロックステップ処理が知られている（例えば、特許文献１を参照）。ロックステップ処理は、複数のコアから構成されるマルチコアマイコンにおいて、複数のコアで同一の演算を並行して実行してその演算結果を比較し、演算結果が一致していれば、各コアが正常動作していると判定し、演算結果が不一致であれば、何れかのコアで異常が発生していると判定するものである。
【０００３】
このようなロックステップ処理を行うように構成されたエンジン制御装置に対して、ユーザ側に車両を販売した後で、制御プログラムの書き換えを実施するならば、通常、車両が停止し且つエンジンが停止している状態で、書き換えを実行するものと想定される。その理由は、エンジン制御プログラムの実行中に書き換えを行うと、プログラム実行中にデータの不整合が発生し、プログラムが正常に動作しなくなる可能性があるからである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００７−５０７０１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、制御プログラムを提供するリモートセンタと車両との間で無線通信することにより、車両のエンジン制御装置に記憶されているエンジン制御プログラムを書き換える場合を想定したならば、リモートセンタから無線通信で制御プログラムが提供される毎に、車両を停止させ更にエンジンを停止させるようにすると、車両利用者の利便性が損なわれるという問題があった。
【０００６】
本発明は、こうした問題に鑑みてなされたものであり、制御プログラムの書き換えに起因してエンジンの動作に異常が発生するという事態の発生を回避するとともに、車両利用者の利便性を向上させることができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するためになされた本発明の電子制御装置は、第１記憶部と、第２記憶部と、第１処理実行手段と、第２処理実行手段と、第１書換手段と、第２書換手段と、第３書換手段とを備える。
【０００８】
そして本発明の電子制御装置では、第１記憶部に、エンジンを制御するために設けられた第１制御プログラムと、エンジンを制御するために設けられ第１制御プログラムとは異なる第２制御プログラムとが記憶される。また第２記憶部に、第１制御プログラムと、エンジンを制御するために設けられ第１制御プログラムおよび第２制御プログラムとは異なる第３制御プログラムとが記憶される。
【０００９】
さらに本発明の電子制御装置では、まず第１処理実行手段が、第１記憶部に記憶された第１制御プログラムおよび第２制御プログラムに従って処理を行う。また第２処理実行手段が、第２記憶部に記憶された第１制御プログラムおよび第３制御プログラムに従って処理を行う。そして第１書換手段が、第１制御プログラムの書き換えを要求する第１書換要求を取得した場合において、さらに、エンジンが停止しており且つ車両が停止しているときに、第１記憶部に記憶されている第１制御プログラムと、第２記憶部に記憶されている第１制御プログラムを書き換える。また第２書換手段が、第２制御プログラムの書き換えを要求する第２書換要求を取得した場合において、さらに、エンジンが停止しており且つ車両が停止しているとき、またはエンジンが稼動しており且つ車両が停止しているときに、第１記憶部に記憶されている第２制御プログラムを書き換える。また第３書換手段が、第３制御プログラムの書き換えを要求する第３書換要求を取得した場合において、さらに、エンジンが停止しており且つ車両が停止しているとき、またはエンジンが稼動しており且つ車両が停止しているときに、第２記憶部に記憶されている第３制御プログラムを書き換える。
【００１０】
このように構成された電子制御装置では、第１記憶部と第２記憶部に記憶された第１制御プログラムの書き換えは、エンジンが停止しており且つ車両が停止しているときに実行される。このため、第１制御プログラムの書き換えが実行されている最中に電源遮断等により第１制御プログラムの書き換えが中断し、これにより、第１記憶部に記憶されている第１制御プログラムの内容と、第２記憶部に記憶されている第１制御プログラムの内容とが相違してしまうという事態が発生したとしても、このときにはエンジンが停止しているため、第１処理実行手段および第２処理実行手段は第１制御プログラムに従った処理を行っていない。したがって、第１制御プログラムの書き換えの中断により、第１処理実行手段が第１制御プログラムに従って行う処理の内容と、第２処理実行手段が第１制御プログラムに従って行う処理の内容とが相違してしまうことに起因してエンジンの動作に異常が発生するという事態の発生を回避することができる。
【００１１】
また本発明の電子制御装置では、第１記憶部に記憶された第２制御プログラムの書き換えと、第２記憶部に記憶された第３制御プログラムの書き換えは、エンジンが停止しており且つ車両が停止しているときだけではなく、エンジンが稼動しており且つ車両が停止しているときも実行される。このため、第２制御プログラムと第３制御プログラムを書き換えるために、車両を停止させ更にエンジンを停止させておく時間を短縮することができ、車両利用者の利便性を向上させることができる。
【００１２】
以上、本発明の電子制御装置によれば、第１処理実行手段および第２処理実行手段の両方で実行される処理、すなわち重要度が高い処理に関しては、制御プログラムの書き換えによりエンジンの動作に異常が発生するという事態の発生を回避することができるとともに、第１処理実行手段および第２処理実行手段の何れか一方で実行される処理、すなわち比較的重要度が低い処理に関しては、エンジンが稼動しており且つ車両が停止しているときにも制御プログラムの書き換えを可能とすることで、車両利用者の利便性を向上させることができる。
【図面の簡単な説明】
【００１３】
【図１】エンジンＥＣＵ１とその周辺装置の構成を示すブロック図である。
【図２】ＲＯＭモードメイン処理の前半部分を示すフローチャートである。
【図３】ＲＯＭモードメイン処理の後半部分を示すフローチャートである。
【図４】ＲＡＭモードメイン処理の前半部分を示すフローチャートである。
【図５】ＲＡＭモードメイン処理の後半部分を示すフローチャートである。
【図６】メイン側ロックステップ対応プログラム書換処理を示すフローチャートである。
【図７】サブ側ロックステップ対応プログラム書換処理を示すフローチャートである。
【図８】非ロックステップ対応プログラム書換処理を示すフローチャートである。
【図９】エンジン状態および車両状態と書き換えの許可および禁止との関係を示す図である。
【図１０】エンジンＥＣＵ１の動作を示す第１のタイミングチャートである。
【図１１】エンジンＥＣＵ１の動作を示す第２のタイミングチャートである。
【図１２】エンジンＥＣＵ１の動作を示す第３のタイミングチャートである。
【発明を実施するための形態】
【００１４】
以下に本発明の実施形態について図面とともに説明する。
本実施形態の電子制御装置（Electronic Control Unit）１（以下、エンジンＥＣＵ１という）は、車両に搭載され、車両のエンジン（不図示）の制御を行う。
【００１５】
エンジンＥＣＵ１は、図１に示すように、エンジンを制御するための様々な処理を行うマイクロコンピュータ（以下、マイコンという）２と、エンジンＥＣＵ１の外部とマイコン２との間で信号の入出力を行わせるための入力回路３および出力回路４とを備える。
【００１６】
入力回路３には、アクセル開度センサ６１、車速センサ６２、クランクセンサ６３、カムセンサ６４およびシフト位置センサ６５等が接続されている。アクセル開度センサ６１は、運転者のアクセルペダルの踏込量に応じたアクセル開度を検出する。車速センサ６２は、エンジンＥＣＵ１が搭載されている車両の走行速度を検出する。クランクセンサ６３は、エンジンのクランク軸の回転に応じてクランク角信号を出力する。カムセンサ６４は、エンジンのカム軸の回転に応じてカム角信号を出力する。シフト位置センサ６５は、車両に搭載された変速機（不図示）のシフト位置を検出する。
【００１７】
出力回路４には、電子スロットル７１、インジェクタ７２、点火プラグ７３、ＥＧＲバルブ７４、電動ファン７５およびメインリレー７６等が接続されている。
そしてマイコン２は、コア１１、コア１２、比較回路１３および通信回路１４を備える。
【００１８】
コア１１は、ＣＰＵ２１、ＲＯＭ２２およびＲＡＭ２３を備える。またコア１２は、ＣＰＵ３１、ＲＯＭ３２およびＲＡＭ３３を備える。以下、コア１１をメインコア１１、コア１２をサブコア１２ともいう。
【００１９】
ＲＯＭ２２，３２は、データ書き換え可能な不揮発性メモリであり、ＣＰＵ２１，３１が実行するプログラムと、プログラムの実行時に参照されるデータを記憶する。
ＲＯＭ２２には、電子スロットル制御プログラム、インジェクタ制御プログラム、点火プラグ制御プログラムおよびＥＧＲバルブ制御プログラムが記憶されている。電子スロットル制御プログラムは、電子スロットル７１を制御するためのプログラムである。インジェクタ制御プログラムは、インジェクタ７２を制御するためのプログラムである。点火プラグ制御プログラムは、点火プラグ７３を制御するためのプログラムである。ＥＧＲバルブ制御プログラムは、ＥＧＲバルブ７４を制御するためのプログラムである。
【００２０】
ＲＯＭ３２には、電子スロットル制御プログラム、電動ファン制御プログラムおよびメインリレー制御プログラムが記憶されている。電動ファン制御プログラムは、電動ファン７５を制御するためのプログラムである。メインリレー制御プログラムは、メインリレー７６を制御するためのプログラムである。
【００２１】
ＲＯＭ２２，３２の記憶領域は、複数のブロックに分割して管理されている。ＲＯＭ２２，３２にデータを書き込む前に実行されるデータ消去は、このブロック単位で実行される。そして複数のブロックにはそれぞれ、ブロックを識別するためのブロック識別情報が付与されている。本実施形態のブロック識別情報は、ＲＯＭ２２，３２におけるブロックの記憶アドレスが１ブロック分大きくなると値が１大きくなるように設定された自然数である。すなわち、本実施形態のブロック識別情報は、対応するブロックの記憶アドレスが小さい順に、１，２，３，４，・・・・の値が割り当てられている。
【００２２】
ＲＡＭ２３，３３は、揮発性メモリであり、ＣＰＵ２１，３１の演算結果等を一時的に記憶する。またＲＡＭ２３，３３にはそれぞれ、ＲＯＭ２２，３２においてデータ消去が完了しているブロックを示す情報を記憶する領域（以下、消去完了ブロック記憶領域という）が設けられている。さらにＲＡＭ２３，３３にはそれぞれ、ＲＯＭ２２，３２において制御プログラムの書き込みが完了しているアドレスを示す情報を記憶する領域（以下、書込完了アドレス記憶領域という）が設けられている。
【００２３】
ＣＰＵ２１，３１は、アクセル開度センサ６１、車速センサ６２、クランクセンサ６３、カムセンサ６４およびシフト位置センサ６５等から出力される信号を入力回路３を介して入力する。またＣＰＵ２１，３１は、ＲＯＭ２２，３２に記憶されたプログラムに基づいて各種処理を実行する。なおＣＰＵ２１，３１は、互いにデータ通信可能に接続されている。
【００２４】
そしてＣＰＵ２１は、入力回路３を介して入力される各種信号に基づいて制御演算を行い、その演算結果に基づき、電子スロットル７１、インジェクタ７２、点火プラグ７３およびＥＧＲバルブ７４を駆動するための駆動信号を出力する。なお、インジェクタ７２、点火プラグ７３およびＥＧＲバルブ７４を駆動するための駆動信号は出力回路４に入力する。電子スロットル７１を駆動するための駆動信号（以下、スロットル駆動信号という）は比較回路１３に入力する。
【００２５】
またＣＰＵ３１は、入力回路３を介して入力される各種信号に基づいて制御演算を行い、その演算結果に基づき、電子スロットル７１、電動ファン７５およびメインリレー７６を駆動するための駆動信号を出力する。なお、電動ファン７５およびメインリレー７６を駆動するための駆動信号は出力回路４に入力する。電子スロットル７１を駆動するためのスロットル駆動信号は比較回路１３に入力する。
【００２６】
比較回路１３は、ＣＰＵ２１からのスロットル駆動信号とＣＰＵ３１からのスロットル駆動信号とを比較し、両者が一致している場合に、入力した２つのスロットル駆動信号の何れかを出力する。なお、比較回路１３から出力されたスロットル駆動信号は出力回路４に入力する。
【００２７】
通信回路１４は、車内ＬＡＮ４１を介して、車両に搭載された各種機器との間でデータ通信を行う。そして車内ＬＡＮ４１には、車両の外部に設置されたリモートセンタＲＣとの間で無線通信を行うプログラム変更ＥＣＵ４２が接続されている。これによりコア１１およびコア１２が、車内ＬＡＮ４１を介して、プログラム変更ＥＣＵ４２とデータ通信可能に接続される。
【００２８】
リモートセンタＲＣは、車両の所有者がカーディーラに車両を持ち込むことなく、ＲＯＭ２２，３２に記憶されているプログラムを更新可能にするために設置されている。そしてリモートセンタＲＣは、車両を制御するための車両制御プログラム（すなわち、上記の電子スロットル制御プログラムおよびインジェクタ制御プログラム等）の更新が必要になったときに、車両に搭載されたプログラム変更ＥＣＵ４２との間で無線通信を行うことにより、新しい車両制御プログラムと、車両制御プログラムを書き換えるための書換制御プログラムとをプログラム変更ＥＣＵ４２へ送信する。
【００２９】
またプログラム変更ＥＣＵ４２には、操作キーおよび表示パネルからなるユーザインターフェース（以降、ユーザＩ／Ｆという）４３が接続されている。
プログラム変更ＥＣＵ４２は、リモートセンタＲＣから、新しい車両制御プログラムと書換制御プログラムを受信すると、プログラム書換処理の実行の許可を求める書換許可確認画像を表示パネルに表示するように指示する許可画像表示指令をユーザＩ／Ｆ４３へ出力する。ユーザＩ／Ｆ４３は、許可画像表示指令を受信すると、書換許可確認画像を表示パネルに表示する。
【００３０】
そして、書換許可確認画像が表示パネルに表示されているときに操作者がユーザＩ／Ｆ４３の操作キーを操作すると、ユーザＩ／Ｆ４３は、書換許可信号をプログラム変更ＥＣＵ４２へ出力する。プログラム変更ＥＣＵ４２は、書換許可信号が入力されると、車両制御プログラムの書き換えを要求するプログラム書換要求を車内ＬＡＮ４１を介してエンジンＥＣＵ１へ送信する。
【００３１】
またプログラム変更ＥＣＵ４２は、車両制御プログラムの書き換えが完了すると、その旨を示す書換完了画像を表示パネルに表示するように指示する完了画像表示指令をユーザＩ／Ｆ４３へ出力する。ユーザＩ／Ｆ４３は、完了画像表示指令を受信すると、書換完了画像を表示パネルに表示する。
【００３２】
このように構成されたエンジンＥＣＵ１において、ＣＰＵ２１，３１はそれぞれ、後述するＲＯＭモードメイン処理を実行する。
ここで、ＣＰＵ２１，３１が実行するＲＯＭモードメイン処理の手順を説明する。ＲＯＭモードメイン処理は、エンジンＥＣＵ１の動作中において所定時間毎（本実施形態では４ｍｓ毎）に繰り返し実行される処理である。
【００３３】
このＲＯＭモードメイン処理が実行されると、ＣＰＵ２１（ＣＰＵ３１）は、図２および図３に示すように、まずＳ１０にて、ＣＰＵ２１（ＣＰＵ３１）をＲＯＭモードに設定する。ＲＯＭモードでは、ＲＯＭ２２（ＲＯＭ３２）に記憶されているプログラムをＲＯＭ２２（ＲＯＭ３２）から読み出すことにより、ＣＰＵ２１（ＣＰＵ３１）が処理を実行する。
【００３４】
そしてＳ２０にて、ＲＯＭ２２（ＲＯＭ３２）に記憶されているエンジン制御プログラムをＲＯＭ２２（ＲＯＭ３２）から読み出すことで、エンジンを制御する処理を実行する。なおＳ２０では、エンジン制御処理のうち、例えば、電子スロットル７１の開度、インジェクタ７２の燃料噴射量、点火プラグ７３の点火タイミング、および吸入空気量を算出処理は４ｍｓ毎に実行され、電動ファン７５を制御する処理は８ｍｓ毎に実行される。
【００３５】
次にＳ３０にて、電子スロットル制御プログラムについてのプログラム書換要求をプログラム変更ＥＣＵ４２から受信したか否かを判断する。ここで、電子スロットル制御プログラムのプログラム書換要求を受信した場合には（Ｓ３０：ＹＥＳ）、Ｓ４０にて、メインコア１１において電子スロットル制御プログラムについてのプログラム書換要求があったか否かを示す第１メイン要求フラグＦ１１をセットするとともに、サブコア１２において電子スロットル制御プログラムについてのプログラム書換要求があったか否かを示す第１サブ要求フラグＦ１２をセットして、Ｓ６０に移行する。一方、電子スロットル制御プログラムのプログラム書換要求を受信していない場合には（Ｓ３０：ＮＯ）、Ｓ５０にて、第１メイン要求フラグＦ１１と第１サブ要求フラグＦ１２をクリアして、Ｓ６０に移行する。
【００３６】
そしてＳ６０に移行すると、メインコア１１における電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換要求をプログラム変更ＥＣＵ４２から受信したか否かを判断する。ここで、プログラム書換要求を受信した場合には（Ｓ６０：ＹＥＳ）、Ｓ７０にて、メインコア１１において電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換要求があったか否かを示す第２メイン要求フラグＦ１３をセットして、Ｓ９０に移行する。一方、プログラム書換要求を受信していない場合には（Ｓ６０：ＮＯ）、Ｓ８０にて、第２メイン要求フラグＦ１３をクリアして、Ｓ９０に移行する。
【００３７】
そしてＳ９０に移行すると、サブコア１２における電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換要求をプログラム変更ＥＣＵ４２から受信したか否かを判断する。ここで、プログラム書換要求を受信した場合には（Ｓ９０：ＹＥＳ）、Ｓ１００にて、サブコア１２において電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換要求があったか否かを示す第２サブ要求フラグＦ１４をセットして、Ｓ１２０に移行する。一方、プログラム書換要求を受信していない場合には（Ｓ９０：ＮＯ）、Ｓ１１０にて、第２サブ要求フラグＦ１４をクリアして、Ｓ１２０に移行する。
【００３８】
そしてＳ１２０に移行すると、ＲＡＭ２３（ＲＡＭ３３）の故障診断を実行する。そしてＳ１３０にて、Ｓ１２０での故障診断結果に基づいて、ＲＡＭ２３（ＲＡＭ３３）が故障しているか否かを判断する。ここで、ＲＡＭ２３（ＲＡＭ３３）が故障している場合には（Ｓ１３０：ＹＥＳ）、Ｓ１９０に移行する。一方、ＲＡＭ２３（ＲＡＭ３３）が故障していない場合には（Ｓ１３０：ＮＯ）、Ｓ１４０にて、キースイッチの位置が、オフ（ＯＦＦ）位置またはアクセサリ（ＡＣＣ）位置であるか否かを判断する。
【００３９】
ここで、キースイッチの位置がオフ位置またはアクセサリ位置である場合には（Ｓ１４０：ＹＥＳ）、Ｓ１５０にて、エンジンが停止している状態（以下、エンジン停止状態という）であり且つ車両が停止している状態（以下、車両停止状態という）であるか否かを判断する。なお本実施形態では、エンジン回転数が３００ｒｐｍ以下であるときに、「エンジン停止状態である」と判断する。また、車速が０ｋｍ／ｈであるときに、「車両停止状態である」と判断する。
【００４０】
ここで、エンジン停止状態であり且つ車両停止状態である場合には（Ｓ１５０：ＹＥＳ）、Ｓ１６０にて、電子スロットル制御プログラムの書き換えが可能であるか否かを示す第１可能フラグＦ２１をセットするとともに、電子スロットル制御プログラム以外の制御プログラムの書き換えが可能であるか否かを示す第２可能フラグＦ２２をセットして、Ｓ１９０に移行する。一方、エンジン停止状態ではない、または車両停止状態ではない場合には（Ｓ１５０：ＮＯ）、Ｓ１９０に移行する。
【００４１】
またＳ１４０にて、キースイッチの位置がオフ位置およびアクセサリ位置以外である場合には（Ｓ１４０：ＮＯ）、Ｓ１７０にて、車両停止状態であり且つアイドル運転状態であるか否かを判断する。ここで、車両停止状態であり且つアイドル運転状態である場合には（Ｓ１７０：ＹＥＳ）、第１可能フラグＦ２１をクリアするとともに、第２可能フラグＦ２２をセットして、Ｓ１９０に移行する。一方、車両停止状態ではない、またはアイドル運転状態ではない場合には（Ｓ１７０：ＮＯ）、Ｓ１９０に移行する。
【００４２】
そしてＳ１９０に移行すると、第１可能フラグＦ２１がセットされているか否かを判断する。ここで、第１可能フラグＦ２１がセットされている場合には（Ｓ１９０：ＹＥＳ）、Ｓ２００にて、メインコア１１において電子スロットル制御プログラムの書き換えが許可されたか否かを示す第１メイン許可フラグＦ３１と、サブコア１２において電子スロットル制御プログラムの書き換えが許可されたか否かを示す第１サブ許可フラグＦ３２を設定して、Ｓ２２０に移行する。具体的には、第１メイン要求フラグＦ１１がセットされている場合には第１メイン許可フラグＦ３１をセットする一方、第１メイン要求フラグＦ１１がクリアされている場合には第１メイン許可フラグＦ３１をクリアする。同様に、第１サブ要求フラグＦ１２がセットされている場合には第１サブ許可フラグＦ３２をセットする一方、第１サブ要求フラグＦ１２がクリアされている場合には第１サブ許可フラグＦ３２をクリアする。一方、第１可能フラグＦ２１がクリアされている場合には（Ｓ１９０：ＮＯ）、Ｓ２１０にて、第１メイン許可フラグＦ３１と第１サブ許可フラグＦ３２をクリアして、Ｓ２２０に移行する。
【００４３】
そしてＳ２２０に移行すると、第２可能フラグＦ２２がセットされているか否かを判断する。ここで、第２可能フラグＦ２２がセットされている場合には（Ｓ２２０：ＹＥＳ）、Ｓ２３０にて、メインコア１１において電子スロットル制御プログラム以外の制御プログラムの書き換えが許可されたか否かを示す第２メイン許可フラグＦ３３と、サブコア１２において電子スロットル制御プログラム以外の制御プログラムの書き換えが許可されたか否かを示す第２サブ許可フラグＦ３４を設定して、Ｓ２５０に移行する。具体的には、第２メイン要求フラグＦ１３がセットされている場合には第２メイン許可フラグＦ３３をセットする一方、第２メイン要求フラグＦ１３がクリアされている場合には第２メイン許可フラグＦ３３をクリアする。同様に、第２サブ要求フラグＦ１４がセットされている場合には第２サブ許可フラグＦ３４をセットする一方、第２サブ要求フラグＦ１４がクリアされている場合には第２サブ許可フラグＦ３４をクリアする。一方、第２可能フラグＦ２２がクリアされている場合には（Ｓ２２０：ＮＯ）、Ｓ２４０にて、第２メイン許可フラグＦ３３と第２サブ許可フラグＦ３４をクリアして、Ｓ２５０に移行する。
【００４４】
そしてＳ２５０に移行すると、第１メイン許可フラグＦ３１と第１サブ許可フラグＦ３２の両方がセットされているか否かを判断する。ここで、第１メイン許可フラグＦ３１と第１サブ許可フラグＦ３２の両方がセットされている場合には（Ｓ２５０：ＹＥＳ）、Ｓ２８０に移行する。一方、第１メイン許可フラグＦ３１および第１サブ許可フラグＦ３２の何れか一方がクリアされている場合には（Ｓ２５０：ＮＯ）、Ｓ２６０にて、第２メイン許可フラグＦ３３がセットされているか否かを判断する。
【００４５】
ここで、第２メイン許可フラグＦ３３がセットされている場合には（Ｓ２６０：ＹＥＳ）、Ｓ２８０に移行する。一方、第２メイン許可フラグＦ３３がクリアされている場合には（Ｓ２６０：ＮＯ）、Ｓ２７０にて、第２サブ許可フラグＦ３４がセットされているか否かを判断する。ここで、第２サブ許可フラグＦ３４がセットされている場合には（Ｓ２７０：ＹＥＳ）、Ｓ２８０に移行する。一方、第２サブ許可フラグＦ３４がクリアされている場合には（Ｓ２７０：ＮＯ）、ＲＯＭモードメイン処理を一旦終了する。
【００４６】
そしてＳ２８０に移行すると、プログラム変更ＥＣＵ４２から書換制御プログラムを受信して、ＲＡＭ２３（ＲＡＭ３３）に格納する。さらにＳ２９０にて、ＲＯＭ２２（ＲＯＭ３２）に記憶されているエンジン制御プログラムをＲＯＭ２２（ＲＯＭ３２）から読み出して、ＲＡＭ２３（ＲＡＭ３３）に格納する。
【００４７】
そしてＳ３００にて、書換制御プログラムとエンジン制御プログラムの全てをＲＡＭ２３（ＲＡＭ３３）に格納したか否かを判断する。ここで、書換制御プログラムとエンジン制御プログラムの全ての格納が完了していない場合には（Ｓ３００：ＮＯ）、ＲＯＭモードメイン処理を一旦終了する。一方、書換制御プログラムとエンジン制御プログラムの全ての格納が完了した場合には（Ｓ３００：ＹＥＳ）、Ｓ３２０にて、書換制御プログラムとエンジン制御プログラムの格納が完了した旨を示す格納完了通知をＣＰＵ３１（ＣＰＵ２１）へ送信する。
【００４８】
その後Ｓ３２０にて、ＣＰＵ３１（ＣＰＵ２１）から格納完了通知を受信したか否かを判断する。ここで、格納完了通知を受信していない場合には（Ｓ３２０：ＮＯ）、ＲＯＭモードメイン処理を一旦終了する。一方、格納完了通知を受信した場合には（Ｓ３２０：ＹＥＳ）、Ｓ３３０にて、ＣＰＵ２１（ＣＰＵ３１）をＲＡＭモードに設定し、ＲＡＭ２３（ＲＡＭ３３）に格納された書換制御プログラムにジャンプする。これにより、ＲＡＭモードメイン処理に移行する。ＲＡＭモードでは、ＲＡＭ２３（ＲＡＭ３３）に記憶されているプログラムを読み出すことにより、ＣＰＵ２１（ＣＰＵ３１）が処理を実行する。
【００４９】
次に、ＣＰＵ２１，３１が実行するＲＡＭモードメイン処理の手順を説明する。ＲＡＭモードメイン処理は、エンジンＥＣＵ１の動作中において繰り返し実行される処理である。
【００５０】
このＲＡＭモードメイン処理が実行されると、ＣＰＵ２１（ＣＰＵ３１）は、図４および図５に示すように、まずＳ４１０にて、第１メイン許可フラグＦ３１と第１サブ許可フラグＦ３２の両方がセットされているか否かを判断する。ここで、第１メイン許可フラグＦ３１と第１サブ許可フラグＦ３２の両方がセットされている場合には（Ｓ４１０：ＹＥＳ）、Ｓ４２０にて、ロックステップ対応プログラム書換処理（後述）を実行する。なお、ロックステップ対応プログラムとは、メインコア１１とサブコア１２で実行される制御プログラムであり、本実施形態では、電子スロットル制御プログラムである。そしてロックステップ対応プログラム書換処理が終了すると、Ｓ４３０にて、第１メイン許可フラグＦ３１と第１サブ許可フラグＦ３２をクリアして、Ｓ５１０に移行する。
【００５１】
一方、第１メイン許可フラグＦ３１および第１サブ許可フラグＦ３２の何れか一方がクリアされている場合には（Ｓ４１０：ＮＯ）、Ｓ４４０にて、第２メイン許可フラグＦ３３がセットされており、且つ、このＲＡＭモードメイン処理を実行しているのがメインコア１１のＣＰＵ２１であるか否かを判断する。ここで、第２メイン許可フラグＦ３３がセットされており且つＣＰＵ２１がＲＡＭモードメイン処理を実行している場合には（Ｓ４４０：ＹＥＳ）、非ロックステップ対応プログラム書換処理（後述）を実行する。なお、非ロックステップ対応プログラムとは、メインコア１１およびサブコア１２の何れかで実行される制御プログラムであり、本実施形態では、電子スロットル制御プログラム以外の制御プログラムである。そして非ロックステップ対応プログラム書換処理が終了すると、Ｓ４６０にて、第２メイン許可フラグＦ３３をクリアして、Ｓ５１０に移行する。
【００５２】
一方、第２メイン許可フラグＦ３３がクリアされているか、このＲＡＭモードメイン処理を実行しているのがメインコア１１のＣＰＵ２１ではない場合には（Ｓ４４０：ＮＯ）、Ｓ４７０にて、第２サブ許可フラグＦ３４がセットされており、且つ、このＲＡＭモードメイン処理を実行しているのがサブコア１２のＣＰＵ３１であるか否かを判断する。ここで、第２サブ許可フラグＦ３４がセットされており且つＣＰＵ３１がＲＡＭモードメイン処理を実行している場合には（Ｓ４７０：ＹＥＳ）、Ｓ４８０にて、非ロックステップ対応プログラム書換処理を実行する。そして非ロックステップ対応プログラム書換処理が終了すると、Ｓ４９０にて、第２サブ許可フラグＦ３４をクリアして、Ｓ５１０に移行する。
【００５３】
一方、第２サブ許可フラグＦ３４がクリアされているか、このＲＡＭモードメイン処理を実行しているのがサブコア１２のＣＰＵ３１ではない場合には（Ｓ４７０：ＮＯ）、Ｓ５００にて、ＲＡＭ２３（ＲＡＭ３３）に記憶されているエンジン制御プログラムを読み出すことで、エンジンを制御する処理を実行して、Ｓ５１０に移行する。
【００５４】
そしてＳ５１０に移行すると、第１メイン許可フラグＦ３１と第１サブ許可フラグＦ３２の両方がクリアされているか否かを判断する。ここで、第１メイン許可フラグＦ３１および第１サブ許可フラグＦ３２の少なくとも何れか一方がセットされている場合には（Ｓ５１０：ＮＯ）、ＲＡＭモードメイン処理を一旦終了する。
【００５５】
一方、第１メイン許可フラグＦ３１と第１サブ許可フラグＦ３２の両方がクリアされている場合には（Ｓ５１０：ＹＥＳ）、Ｓ５２０にて、第２メイン許可フラグＦ３３がクリアされているか否かを判断する。ここで、第２メイン許可フラグＦ３３がセットされている場合には（Ｓ５２０：ＮＯ）、ＲＡＭモードメイン処理を一旦終了する。一方、第２メイン許可フラグＦ３３がクリアされている場合には（Ｓ５２０：ＹＥＳ）、Ｓ５３０にて、第２サブ許可フラグＦ３４がクリアされているか否かを判断する。ここで、第２サブ許可フラグＦ３４がセットされている場合には（Ｓ５３０：ＮＯ）、ＲＡＭモードメイン処理を一旦終了する。
【００５６】
一方、第２サブ許可フラグＦ３４がクリアされている場合には（Ｓ５３０：ＹＥＳ）、Ｓ５４０にて、ＣＰＵ２１（ＣＰＵ３１）をＲＯＭモードに設定し、ＲＯＭ２２（ＲＯＭ３２）に格納された制御プログラムにジャンプする。これにより、ＲＯＭモードメイン処理に移行する。
【００５７】
次に、ＣＰＵ２１がＳ４２０で実行するロックステップ対応プログラム書換処理（以下、メイン側ロックステップ対応プログラム書換処理という）の手順を説明する。
このメイン側ロックステップ対応プログラム書換処理が実行されると、ＣＰＵ２１は、図６に示すように、まずＳ６１０にて、ＲＡＭ２３の消去完了ブロック記憶領域を参照することにより、ＲＯＭ２２において電子スロットル制御プログラムを書き込む記憶領域（以下、書換対象領域という）のデータ消去が完了しているか否かを判断する。
【００５８】
ここで、書換対象領域のデータ消去が完了していない場合には（Ｓ６１０：ＮＯ）、Ｓ６２０にて、ＲＯＭ２２における書換対象領域のデータ消去を実行する。その後Ｓ６３０にて、Ｓ６２０の処理でデータ消去が実行された書換対象領域においてデータ消去が完了したことを示すように、消去完了ブロック記憶領域に記憶されている情報を更新する。そしてＳ６１０に移行する。
【００５９】
一方、書換対象領域のデータ消去が完了している場合には（Ｓ６１０：ＹＥＳ）、Ｓ６４０にて、プログラム変更ＥＣＵ４２に対して、１回のデータ書込で書き込まれるデータ量として予め設定された書込単位データ量の書込データの送信を要求するコマンド（以下、書込データ送信要求コマンドという）を送信する。その後Ｓ６５０にて、プログラム変更ＥＣＵ４２から書込単位データ量分の書込データを受信したか否かを判断する。ここで、書込単位データ量分の書込データを受信していない場合には（Ｓ６５０：ＮＯ）、Ｓ６５０の処理を繰り返すことにより、プログラム変更ＥＣＵ４２から書込単位データ量分の書込データを受信するまで待機する。
【００６０】
そして、プログラム変更ＥＣＵ４２から書込単位データ量分の書込データを受信した場合には（Ｓ６５０：ＹＥＳ）、Ｓ６６０にて、受信した書込データをサブコア１２へ送信する。さらにＳ６７０にて、受信した書込データをＲＯＭ２２に書き込む。その後Ｓ６８０にて、Ｓ６７０の処理で書込データが書き込まれた記憶領域においてデータ書込が完了したことを示すように、書込完了アドレス記憶領域に記憶されている情報を更新する。
【００６１】
そしてＳ６９０にて、サブコア１２から、Ｓ６６０で送信した書込データの書き込みが完了したことを示す書込完了通知を受信したか否かを判断する。ここで、サブコア１２から書込完了通知を受信していない場合には（Ｓ６９０：ＮＯ）、Ｓ６９０の処理を繰り返すことにより、サブコア１２から書込完了通知を受信するまで待機する。そして、サブコア１２から書込完了通知を受信した場合には（Ｓ６９０：ＹＥＳ）、Ｓ７００にて、書込完了アドレス記憶領域を参照することにより、ＲＯＭ２２における書換対象領域の全てで書込データの書き込みが完了したか否かを判断する。
【００６２】
ここで、書き込みが完了していない書換対象領域がある場合には（Ｓ７００：ＮＯ）、Ｓ６４０に移行して上述の処理を繰り返す。一方、書換対象領域の全てで書き込みが完了した場合には（Ｓ７００：ＹＥＳ）、Ｓ７１０にて、サブコア１２から、ＲＯＭ３２における書換対象領域の全てで書込データの書き込みが完了したことを示す全書込完了通知を受信したか否かを判断する。ここで、サブコア１２から全書込完了通知を受信していない場合には（Ｓ７１０：ＮＯ）、Ｓ７１０の処理を繰り返すことにより、サブコア１２から全書込完了通知を受信するまで待機する。そして、サブコア１２から全書込完了通知を受信した場合には（Ｓ７１０：ＹＥＳ）、メイン側ロックステップ対応プログラム書換処理を終了する。
【００６３】
次に、ＣＰＵ３１がＳ４２０で実行するロックステップ対応プログラム書換処理（以下、サブ側ロックステップ対応プログラム書換処理という）の手順を説明する。
このサブ側ロックステップ対応プログラム書換処理が実行されると、ＣＰＵ３１は、図７に示すように、まずＳ８１０にて、ＲＡＭ３３の消去完了ブロック記憶領域を参照することにより、ＲＯＭ３２において電子スロットル制御プログラムを書き込む記憶領域（以下、書換対象領域という）のデータ消去が完了しているか否かを判断する。
【００６４】
ここで、書換対象領域のデータ消去が完了していない場合には（Ｓ８１０：ＮＯ）、Ｓ８２０にて、ＲＯＭ３２における書換対象領域のデータ消去を実行する。その後Ｓ８３０にて、Ｓ８２０の処理でデータ消去が実行された書換対象領域においてデータ消去が完了したことを示すように、消去完了ブロック記憶領域に記憶されている情報を更新する。そしてＳ８１０に移行する。
【００６５】
一方、書換対象領域のデータ消去が完了している場合には（Ｓ８１０：ＹＥＳ）、Ｓ８４０にて、メインコア１１から、１回のデータ書込で書き込まれるデータ量として予め設定された書込単位データ量の書込データ分の書込データを受信したか否かを判断する。ここで、書込単位データ量分の書込データを受信していない場合には（Ｓ８４０：ＮＯ）、Ｓ８４０の処理を繰り返すことにより、メインコア１１から書込単位データ量分の書込データを受信するまで待機する。
【００６６】
そして、メインコア１１から書込単位データ量分の書込データを受信した場合には（Ｓ８４０：ＹＥＳ）、Ｓ８５０にて、受信した書込データをＲＯＭ３２に書き込む。その後Ｓ８６０にて、Ｓ８５０の処理で書込データが書き込まれた記憶領域においてデータ書込が完了したことを示すように、書込完了アドレス記憶領域に記憶されている情報を更新する。さらにＳ８７０にて、書込データの書き込みが完了したことを示す書込完了通知をメインコア１１へ送信する。
【００６７】
そしてＳ８８０にて、書込完了アドレス記憶領域を参照することにより、ＲＯＭ３２における書換対象領域の全てで書込データの書き込みが完了したか否かを判断する。ここで、書き込みが完了していない書換対象領域がある場合には（Ｓ８８０：ＮＯ）、Ｓ８４０に移行して上述の処理を繰り返す。一方、書換対象領域の全てで書き込みが完了した場合には（Ｓ８８０：ＹＥＳ）、Ｓ８９０にて、ＲＯＭ３２における書換対象領域の全てで書込データの書き込みが完了したことを示す全書込完了通知をメインコア１１へ送信して、サブ側ロックステップ対応プログラム書換処理を終了する。
【００６８】
次に、ＣＰＵ２１がＳ４５０で実行するとともにＣＰＵ３１がＳ４７０で実行する非ロックステップ対応プログラム書換処理の手順を説明する。
この非ロックステップ対応プログラム書換処理が実行されると、ＣＰＵ２１（ＣＰＵ３１）は、図８に示すように、まずＳ１０１０にて、ＲＡＭ２３（ＲＡＭ３３）に記憶されているエンジン制御プログラムを読み出すことで、エンジンを制御する処理を実行する。その後Ｓ１０２０にて、車両が停止している状態（以下、車両停止状態という）であるか否かを判断する。ここで、車両停止状態ではない場合には（Ｓ１０２０：ＮＯ）、Ｓ１０１０に移行して上述の処理を繰り返す。
【００６９】
一方、車両停止状態である場合には（Ｓ１０２０：ＹＥＳ）、Ｓ１０３０にて、ＲＡＭ２３（ＲＡＭ３３）の消去完了ブロック記憶領域を参照することにより、ＲＯＭ２２（ＲＯＭ３２）において、プログラム書換の対象となっている制御プログラムを書き込む記憶領域（以下、書換対象領域という）のデータ消去が完了しているか否かを判断する。
【００７０】
ここで、書換対象領域のデータ消去が完了していない場合には（Ｓ１０３０：ＮＯ）、Ｓ１０４０にて、ＲＯＭ２２（ＲＯＭ３２）における書換対象領域のデータ消去を実行する。その後Ｓ１０５０にて、Ｓ１０４０の処理でデータ消去が実行された書換対象領域においてデータ消去が完了したことを示すように、消去完了ブロック記憶領域に記憶されている情報を更新する。そしてＳ１０１０に移行する。
【００７１】
一方、書換対象領域のデータ消去が完了している場合には（Ｓ１０３０：ＹＥＳ）、Ｓ１０６０にて、書込データ送信要求コマンドをプログラム変更ＥＣＵ４２へ送信したか否かを示すコマンド送信フラグがセットされているか否かを判断する。ここで、コマンド送信フラグがセットされていない場合には（Ｓ１０６０：ＮＯ）、Ｓ１０７０にて、書込データ送信要求コマンドをプログラム変更ＥＣＵ４２へ送信する。その後Ｓ１０８０にて、コマンド送信フラグをセットして、Ｓ１０９０に移行する。一方、コマンド送信フラグがセットされている場合には（Ｓ１０６０：ＹＥＳ）、Ｓ１０９０に移行する。
【００７２】
そしてＳ１０９０に移行すると、プログラム変更ＥＣＵ４２から書込単位データ量分の書込データを受信したか否かを判断する。ここで、書込単位データ量分の書込データを受信していない場合には（Ｓ１０９０：ＮＯ）、Ｓ１０１０に移行する。一方、プログラム変更ＥＣＵ４２から書込単位データ量分の書込データを受信した場合には（Ｓ１０９０：ＹＥＳ）、Ｓ１１００にて、コマンド送信フラグをクリアする。そしてＳ１１１０にて、受信した書込データをＲＯＭ２２（ＲＯＭ３２）に書き込む。その後Ｓ１１２０にて、Ｓ１１１０の処理で書込データが書き込まれた記憶領域においてデータ書込が完了したことを示すように、書込完了アドレス記憶領域に記憶されている情報を更新する。
【００７３】
その後Ｓ１１３０にて、書込完了アドレス記憶領域を参照することにより、ＲＯＭ２２（ＲＯＭ３２）における書換対象領域の全てで書込データの書き込みが完了したか否かを判断する。ここで、書き込みが完了していない書換対象領域がある場合には（Ｓ１１３０：ＮＯ）、Ｓ１０１０に移行して上述の処理を繰り返す。一方、書換対象領域の全てで書き込みが完了した場合には（Ｓ１１３０：ＹＥＳ）、非ロックステップ対応プログラム書換処理を終了する。
【００７４】
次に、このように構成されたエンジンＥＣＵ１の動作を説明する。
まず、エンジンＥＣＵ１が搭載された車両は、図９（ａ）に示すように、エンジン停止・車両停止状態Ｃ１、エンジン稼動・車両停止状態Ｃ２およびエンジン稼動・車両走行状態Ｃ３の何れかの状態となる。
【００７５】
エンジン停止・車両停止状態Ｃ１は、エンジン停止状態となっており且つ車両停止状態となっている状態である。エンジン稼動・車両停止状態Ｃ２は、エンジンが稼動している状態（以下、エンジン稼動状態という）となっており且つ車両停止状態となっている状態である。エンジン稼動・車両走行状態Ｃ３は、エンジン稼動状態となっており且つ車両が走行している状態（以下、車両走行状態という）となっている状態である。
【００７６】
そして図９（ｂ）に示すように、エンジン停止・車両停止状態Ｃ１では、電子スロットル制御プログラムと、電子スロットル制御プログラム以外の制御プログラムの書き換えが許可される。またエンジン稼動・車両停止状態Ｃ２では、電子スロットル制御プログラムの書き換えが禁止され、電子スロットル制御プログラム以外の制御プログラムの書き換えが許可される。またエンジン稼動・車両走行状態Ｃ３では、電子スロットル制御プログラムと、電子スロットル制御プログラム以外の制御プログラムの書き換えが禁止される。
【００７７】
また、メインコア１１において電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換要求があり且つその他のプログラム書換要求がない場合には、エンジン停止・車両停止状態Ｃ１またはエンジン稼動・車両停止状態Ｃ２になったときに、メインコア１１で、書換要求があった制御プログラムの書き換えが実行される。
【００７８】
また、サブコア１２において電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換要求があり且つその他のプログラム書換要求がない場合には、エンジン停止・車両停止状態Ｃ１またはエンジン稼動・車両停止状態Ｃ２になったときに、サブコア１２で、書換要求があった制御プログラムの書き換えが実行される。
【００７９】
また、メインコア１１において電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換要求があり且つサブコア１２において電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換要求がある場合には、メインコア１１およびサブコア１２のそれぞれで個別に、書換要求があった制御プログラムの書き換えが実行される。
【００８０】
また、メインコア１１とサブコア１２において電子スロットル制御プログラムについてのプログラム書換要求がある場合には、エンジン停止・車両停止状態Ｃ１になったときに、メインコア１１およびサブコア１２のそれぞれで、互いに同期して電子スロットル制御プログラムの書き換えが実行される。
【００８１】
また、メインコア１１とサブコア１２において電子スロットル制御プログラムについてのプログラム書換要求があり且つメインコア１１において電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換要求がある場合には、電子スロットル制御プログラムの書き換えと、電子スロットル制御プログラム以外の制御プログラムの書き換えの順序は、以下通りである。
【００８２】
まず、エンジン停止・車両停止状態Ｃ１よりも早くエンジン稼動・車両停止状態Ｃ２になった場合には、メインコア１１で、電子スロットル制御プログラム以外の制御プログラムの書き換えが実行される。その後、エンジン停止・車両停止状態Ｃ１になると、メインコア１１およびサブコア１２のそれぞれで、互いに同期して電子スロットル制御プログラムの書き換えが実行される。
【００８３】
また、エンジン稼動・車両停止状態Ｃ２よりも早くエンジン停止・車両停止状態Ｃ１になった場合には、メインコア１１およびサブコア１２のそれぞれで、互いに同期して電子スロットル制御プログラムの書き換えが実行される。そして、電子スロットル制御プログラムの書き換えが完了すると、メインコア１１で、電子スロットル制御プログラム以外の制御プログラムの書き換えが実行される。
【００８４】
次に、メインコア１１とサブコア１２において電子スロットル制御プログラムについてのプログラム書換要求があり且つサブコア１２において電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換要求がある場合には、電子スロットル制御プログラムの書き換えと、電子スロットル制御プログラム以外の制御プログラムの書き換えの順序は、以下通りである。
【００８５】
まず、エンジン停止・車両停止状態Ｃ１よりも早くエンジン稼動・車両停止状態Ｃ２になった場合には、サブコア１２で、電子スロットル制御プログラム以外の制御プログラムの書き換えが実行される。その後、エンジン停止・車両停止状態Ｃ１になると、メインコア１１およびサブコア１２のそれぞれで、互いに同期して電子スロットル制御プログラムの書き換えが実行される。
【００８６】
また、エンジン稼動・車両停止状態Ｃ２よりも早くエンジン停止・車両停止状態Ｃ１になった場合には、メインコア１１およびサブコア１２のそれぞれで、互いに同期して電子スロットル制御プログラムの書き換えが実行される。そして、電子スロットル制御プログラムの書き換えが完了すると、サブコア１２で、電子スロットル制御プログラム以外の制御プログラムの書き換えが実行される。
【００８７】
次に、メインコア１１とサブコア１２において電子スロットル制御プログラムについてのプログラム書換要求があり且つメインコア１１とサブコア１２において電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換要求がある場合には、電子スロットル制御プログラムの書き換えと、電子スロットル制御プログラム以外の制御プログラムの書き換えの順序は、以下通りである。
【００８８】
まず、エンジン停止・車両停止状態Ｃ１よりも早くエンジン稼動・車両停止状態Ｃ２になった場合には、メインコア１１およびサブコア１２のそれぞれで個別に、電子スロットル制御プログラム以外の制御プログラムの書き換えが実行される。その後、エンジン停止・車両停止状態Ｃ１になると、メインコア１１およびサブコア１２のそれぞれで、互いに同期して電子スロットル制御プログラムの書き換えが実行される。
【００８９】
また、エンジン稼動・車両停止状態Ｃ２よりも早くエンジン停止・車両停止状態Ｃ１になった場合には、メインコア１１およびサブコア１２のそれぞれで、互いに同期して電子スロットル制御プログラムの書き換えが実行される。そして、電子スロットル制御プログラムの書き換えが完了すると、メインコア１１およびサブコア１２のそれぞれで個別に、電子スロットル制御プログラム以外の制御プログラムの書き換えが実行される。
【００９０】
図１０は、プログラム書換を実行しない場合の動作を示すタイミングチャートである。
図１０に示すように、キースイッチがオフ状態からオン状態に切り替わると、エンジンＥＣＵ１に電源が供給され（時刻ｔ０１を参照）、メインコア１１のＣＰＵ２１とサブコア１２のＣＰＵ３１において、電子スロットル制御プログラムと、電子スロットル制御プログラム以外の制御プログラムが実行される。電子スロットル制御プログラムはロックステップ対象であるため、ＣＰＵ２１の電子スロットル制御プログラムとＣＰＵ３１の電子スロットル制御プログラムは同じタイミングで実行される。
【００９１】
その後、キースイッチがオン状態からオフ状態に切り替わると（時刻ｔ０２を参照）、電子スロットル制御プログラムの実行と、電子スロットル制御プログラム以外の制御プログラムの実行が停止した後に、エンジンＥＣＵ１をシャットダウンするための事前処理が実行される。そして、エンジンＥＣＵ１がメインリレー７６への駆動信号出力をオンからオフに変化させることで、エンジンＥＣＵ１への電源供給が遮断され（時刻ｔ０３を参照）、エンジンＥＣＵ１の機能が停止する。
【００９２】
図１１は、電子スロットル制御プログラム以外の制御プログラムのプログラム書換を実行する場合の動作を示すタイミングチャートである。
図１１に示すように、キースイッチがオフ状態からオン状態に切り替わると、エンジンＥＣＵ１に電源が供給され（時刻ｔ１１を参照）、メインコア１１のＣＰＵ２１とサブコア１２のＣＰＵ３１において、電子スロットル制御プログラムと、電子スロットル制御プログラム以外の制御プログラムが実行される。その後、エンジンＥＣＵ１がプログラム変更ＥＣＵ４２からプログラム書換要求ＲＲを受信する（時刻ｔ１２を参照）。このときに、車両は、エンジンが稼動している状態（以下、エンジン稼動状態という）であり且つ走行している状態（以下、車両走行状態という）であるため、プログラム書換は実行されない。
【００９３】
その後、車両が、エンジン稼動状態であり且つ車両停止状態である状態になると（時刻ｔ１３を参照）、メインコア１１のＣＰＵ２１とサブコア１２のＣＰＵ３１において、電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換処理が実行される（図１１の書換処理ＲＰ０１，ＲＰ０２，ＲＰ０３，ＲＰ０４，ＲＰ０５，ＲＰ０６を参照）。なお、ＣＰＵ２１のプログラム書換処理とＣＰＵ３１のプログラム書換処理は互いに同じタイミングで実行される必要はなく個別に実行される。また、電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換処理の実行中であっても、ＣＰＵ２１，３１のそれぞれにおいてエンジン制御が継続して実行される。
【００９４】
その後、ＣＰＵ２１におけるプログラム書換処理が完了すると（時刻ｔ１４を参照）、ＣＰＵ２１はＲＡＭモードからＲＯＭモードに切り替わる。また、ＣＰＵ３１におけるプログラム書換処理が完了すると（時刻ｔ１５を参照）、ＣＰＵ３１はＲＡＭモードからＲＯＭモードに切り替わる。
【００９５】
その後、キースイッチがオン状態からオフ状態に切り替わると（時刻ｔ１６を参照）、電子スロットル制御プログラムの実行と、電子スロットル制御プログラム以外の制御プログラムの実行が停止した後に、エンジンＥＣＵ１をシャットダウンするための事前処理が実行される。そして、エンジンＥＣＵ１がメインリレー７６への駆動信号出力をオンからオフに変化させることで、エンジンＥＣＵ１への電源供給が遮断され（時刻ｔ１７を参照）、エンジンＥＣＵ１の機能が停止する。
【００９６】
図１２は、電子スロットル制御プログラムのプログラム書換と、電子スロットル制御プログラム以外の制御プログラムのプログラム書換を実行する場合の動作を示すタイミングチャートである。
【００９７】
図１２に示すように、キースイッチがオフ状態からオン状態に切り替わると、エンジンＥＣＵ１に電源が供給され（時刻ｔ２１を参照）、メインコア１１のＣＰＵ２１とサブコア１２のＣＰＵ３１において、電子スロットル制御プログラムと、電子スロットル制御プログラム以外の制御プログラムが実行される。その後、エンジンＥＣＵ１がプログラム変更ＥＣＵ４２からプログラム書換要求ＲＲを受信する（時刻ｔ２２を参照）。このときに、車両は、エンジン稼動状態であり且つ車両走行状態であるため、プログラム書換は実行されない。
【００９８】
その後、車両がエンジン稼動状態であり且つ車両停止状態である状態になると（時刻ｔ２３を参照）、メインコア１１のＣＰＵ２１とサブコア１２のＣＰＵ３１において、電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換処理が実行される（図１２の書換処理ＲＰ１１，ＲＰ１２，ＲＰ１３，ＲＰ１４を参照）。なお、ＣＰＵ２１のプログラム書換処理とＣＰＵ３１のプログラム書換処理は互いに同じタイミングで実行される必要はなく個別に実行される。また、電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換処理の実行中であっても、ＣＰＵ２１，３１のそれぞれにおいてエンジン制御が継続して実行される。
【００９９】
その後、車両が車両走行状態になると（時刻ｔ２４を参照）、ＣＰＵ２１で実行中のプログラム書換処理とＣＰＵ３１で実行中のプログラム書換処理が中断され、ＣＰＵ２１，３１のそれぞれにおいてエンジン制御が継続して実行される。
【０１００】
その後、再度、車両がエンジン稼動状態であり且つ車両停止状態である状態になると（時刻ｔ２５を参照）、ＣＰＵ２１，３１において、電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換処理の実行が再開される（図１２の書換処理ＲＰ１５，ＲＰ１６，ＲＰ１７，ＲＰ１８を参照）。なお、プログラム書換処理を再開するときには、消去完了ブロック記憶領域と書込完了アドレス記憶領域に記憶されている情報に基づいて、プログラム書換処理が中断された記憶領域からデータ書込を実行する。
【０１０１】
その後、ＣＰＵ２１におけるプログラム書換処理が完了する（時刻ｔ２６を参照）。さらに、ＣＰＵ３１におけるプログラム書換処理が完了する（時刻ｔ２７を参照）。なお、電子スロットル制御プログラムの書き換えが完了していないため、ＣＰＵ２１，３１はＲＡＭモードを継続する。
【０１０２】
その後、キースイッチがオン状態からオフ状態に切り替わると（時刻ｔ２８を参照）、電子スロットル制御プログラムの実行と、電子スロットル制御プログラム以外の制御プログラムの実行が停止する。そして、車両がエンジン停止状態であり且つ車両停止状態である状態になるため（時刻ｔ２８を参照）、メインコア１１のＣＰＵ２１とサブコア１２のＣＰＵ３１において、電子スロットル制御プログラムについてのプログラム書換処理が実行される（図１２の書換処理ＲＰ１９，ＲＰ２０を参照）。電子スロットル制御プログラムの書き換え前後で、ＲＯＭ２２に記憶されている電子スロットル制御プログラムと、ＲＯＭ３２に記憶されている電子スロットル制御プログラムとが同じである必要があるため、メインコア１１とサブコア１２で一括して電子スロットル制御プログラムの書き換えが実行される。このため、電子スロットル制御プログラムについてのプログラム書換処理は、ＣＰＵ２１とＣＰＵ３１との間で時間的な同期をとって実行される。
【０１０３】
そして、電子スロットル制御プログラムについてのプログラム書換処理が完了すると（時刻ｔ２９を参照）、ＣＰＵ２１，３１はＲＡＭモードからＲＯＭモードに切り替わる。また、この時点で既にキースイッチがオフ状態であるため、エンジンＥＣＵ１をシャットダウンするための事前処理が実行される。そして、エンジンＥＣＵ１がメインリレー７６への駆動信号出力をオンからオフに変化させることで、エンジンＥＣＵ１への電源供給が遮断され（時刻ｔ３０を参照）、エンジンＥＣＵ１の機能が停止する。
【０１０４】
そして、これ以降にキースイッチがオフ状態からオン状態に切り替わると、ＣＰＵ２１，３１はそれぞれ、ＲＯＭ２２，３２から制御プログラムを読み出すことにより処理を実行する。
【０１０５】
このように構成されたエンジンＥＣＵ１では、ＲＯＭ２２に、電子スロットル制御プログラムと、インジェクタ制御プログラム、点火プラグ制御プログラムおよびＥＧＲバルブ制御プログラムとが記憶される。またＲＯＭ３２に、電子スロットル制御プログラムと、電動ファン制御プログラムおよびメインリレー制御プログラムとが記憶される。
【０１０６】
さらにエンジンＥＣＵ１では、まずメインコア１１が、ＲＯＭ２２に記憶された電子スロットル制御プログラム、インジェクタ制御プログラム、点火プラグ制御プログラムおよびＥＧＲバルブ制御プログラムに従って処理を行う（Ｓ２０，Ｓ５００，Ｓ１０１０）。またサブコア１２が、ＲＯＭ３２に記憶された電子スロットル制御プログラム、電動ファン制御プログラムおよびメインリレー制御プログラムに従って処理を行う（Ｓ２０，Ｓ５００，Ｓ１０１０）。そして、電子スロットル制御プログラムのプログラム書換要求を受信した場合において（Ｓ３０：ＹＥＳ）、さらに、エンジン停止状態であり且つ車両停止状態であるときに（Ｓ１５０：ＹＥＳ）、ＲＯＭ２２に記憶されている電子スロットル制御プログラムと、ＲＯＭ３２に記憶されている電子スロットル制御プログラムを書き換える（Ｓ４２０）。また、メインコア１１における電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換要求を受信した場合において（Ｓ６０：ＹＥＳ）、さらに、エンジン停止状態であり且つ車両停止状態であるとき（Ｓ１５０：ＹＥＳ）、またはアイドル運転状態であり且つ車両停止状態であるときに（Ｓ１７０：ＹＥＳ）、プログラム書換要求のあった制御プログラムを書き換える（Ｓ４５０）。また、サブコア１２における電子スロットル制御プログラム以外の制御プログラムについてのプログラム書換要求を受信した場合において（Ｓ９０：ＹＥＳ）、さらに、エンジン停止状態であり且つ車両停止状態であるとき（Ｓ１５０：ＹＥＳ）、またはアイドル運転状態であり且つ車両停止状態であるときに（Ｓ１７０：ＹＥＳ）、プログラム書換要求のあった制御プログラムを書き換える（Ｓ４８０）。
【０１０７】
このように、ＲＯＭ２２とＲＯＭ３２に記憶された電子スロットル制御プログラムの書き換えは、エンジンが停止しており且つ車両が停止しているときに実行される。このため、電子スロットル制御プログラムの書き換えが実行されている最中に電源遮断等により電子スロットル制御プログラムの書き換えが中断し、これにより、ＲＯＭ２２に記憶されている電子スロットル制御プログラムの内容と、ＲＯＭ３２に記憶されている電子スロットル制御プログラムの内容とが相違してしまうという事態が発生したとしても、このときにはエンジンが停止しているため、メインコア１１およびサブコア１２は電子スロットル制御プログラムに従った処理を行っていない。したがって、電子スロットル制御プログラムの書き換えの中断により、メインコア１１が電子スロットル制御プログラムに従って行う処理の内容と、サブコア１２が電子スロットル制御プログラムに従って行う処理の内容とが相違してしまうことに起因してエンジンの動作に異常が発生するという事態の発生を回避することができる。
【０１０８】
またエンジンＥＣＵ１では、ＲＯＭ２２に記憶されたインジェクタ制御プログラム、点火プラグ制御プログラムおよびＥＧＲバルブ制御プログラム（以下、メイン側非ロックステップ対応プログラムともいう）の書き換えと、ＲＯＭ３２に記憶された電動ファン制御プログラムおよびメインリレー制御プログラム（以下、サブ側非ロックステップ対応プログラムともいう）の書き換えは、エンジンが停止しており且つ車両が停止しているときだけではなく、エンジンが稼動しており且つ車両が停止しているときも実行される。このため、メイン側非ロックステップ対応プログラムとサブ側非ロックステップ対応プログラムを書き換えるために、車両を停止させ更にエンジンを停止させておく時間を短縮することができ、車両利用者の利便性を向上させることができる。
【０１０９】
例えば、エンジンが停止しており且つ車両が停止している状態でメイン側非ロックステップ対応プログラムおよびサブ側非ロックステップ対応プログラムの少なくとも一方の書き換えが行われている最中にキースイッチがオフ状態からオン状態に切り替わった場合に、エンジンを始動させることができる。また例えば、電子スロットル制御プログラムと非ロックステップ対応プログラムの両方を書き換える場合には、エンジンを停止させる前に非ロックステップ対応プログラムの書き換えを行うことができる。このため、エンジンを停止させた後に電子スロットル制御プログラムと非ロックステップ対応プログラムの両方を書き換える場合と比較して、制御プログラムを書き換えるためにエンジンを停止させておく時間を短縮することができる。
【０１１０】
以上、エンジンＥＣＵ１によれば、メインコア１１およびサブコア１２の両方で実行される処理、すなわち重要度が高い処理に関しては、制御プログラムの書き換えによりエンジンの動作に異常が発生するという事態の発生を回避することができるとともに、メインコア１１およびサブコア１２の何れか一方で実行される処理、すなわち比較的重要度が低い処理に関しては、エンジンが稼動しており且つ車両が停止しているときにも制御プログラムの書き換えを可能とすることで、車両利用者の利便性を向上させることができる。
【０１１１】
またエンジンＥＣＵ１では、ＲＯＭ２２に記憶されている電子スロットル制御プログラムと、ＲＯＭ２２に記憶されているメイン側非ロックステップ対応プログラムをＲＡＭ２３に格納するとともに、ＲＯＭ３２に記憶されている電子スロットル制御プログラムと、ＲＯＭ３２に記憶されているサブ側非ロックステップ対応プログラムをＲＡＭ３３に格納する（Ｓ２９０）。そしてメインコア１１は、少なくとも、電子スロットル制御プログラムの書き換え、またはメイン側非ロックステップ対応プログラムの書き換えを実行している場合において、ＲＡＭ２３に格納されている電子スロットル制御プログラムおよびメイン側非ロックステップ対応プログラムを読み出すことにより、電子スロットル制御プログラムおよびメイン側非ロックステップ対応プログラムに従って処理を行う。またサブコア１２は、少なくとも、電子スロットル制御プログラムの書き換え、またはサブ側非ロックステップ対応プログラムの書き換えを実行している場合において、ＲＡＭ３３に格納されている電子スロットル制御プログラムおよびサブ側非ロックステップ対応プログラムを読み出すことにより、電子スロットル制御プログラムおよびサブ側非ロックステップ対応プログラムに従って処理を行う。
【０１１２】
これによりエンジンＥＣＵ１は、エンジンを制御する処理の実行を継続しながら、電子スロットル制御プログラム、メイン側非ロックステップ対応プログラムおよびサブ側非ロックステップ対応プログラムの書き換えを行うことができる。
【０１１３】
またエンジンＥＣＵ１は、電子スロットル制御プログラムの書き換えとメイン側非ロックステップ対応プログラムの書き換えの実行の両方が可能である場合に、メイン側非ロックステップ対応プログラムの書き換えよりも電子スロットル制御プログラムの書き換えを優先させる（Ｓ４１０，Ｓ４４０）とともに、電子スロットル制御プログラムの書き換えとサブ側非ロックステップ対応プログラムの書き換えの実行の両方が可能である場合に、サブ側非ロックステップ対応プログラムの書き換えよりも電子スロットル制御プログラムの書き換えを優先させる（Ｓ４１０，Ｓ４７０）。
【０１１４】
これにより、エンジン停止状態であり且つ車両停止状態である場合に許可される電子スロットル制御プログラムの書き換えが、エンジン停止状態であり且つ車両停止状態である場合に実行されないという事態の発生を抑制することができる。一方、非ロックステップ対応プログラムの書き換えは、エンジンが稼動しており且つ車両が停止しているときにも実行される。このため、電子スロットル制御プログラムと非ロックステップ対応プログラムの両方を書き換える場合において、両方のプログラムの書き換えが完了するまでの時間を可能な限り短縮することができる。したがって、更新された制御プログラムを可能な限り早い時点で利用可能とすることができ、車両利用者の利便性を向上させることができる。
【０１１５】
またエンジンＥＣＵ１は、エンジンが稼動しており且つエンジンがアイドル状態ではない場合に（Ｓ１４０：ＮＯ，Ｓ１７０：ＮＯ）、メイン側非ロックステップ対応プログラムおよびサブ側非ロックステップ対応プログラムの書き換えを禁止する。
【０１１６】
これにより、エンジン回転数が高い場合、すなわちエンジンＥＣＵ１の処理負荷が高い場合に、制御プログラムの書き換えが更に実行されるという事態が発生するのを回避することが可能となり、エンジンＥＣＵ１の処理負荷の増加を抑制することができる。
【０１１７】
またエンジンＥＣＵ１は、ＲＡＭ２３，３３が故障しているか否かを判断し（Ｓ１２０）、ＲＡＭ２３，３３が故障している場合に（Ｓ１３０：ＹＥＳ）、電子スロットル制御プログラム、メイン側非ロックステップ対応プログラムおよびサブ側非ロックステップ対応プログラムの書き換えを禁止する。これにより、エンジンを制御する処理の実行を継続しながら制御プログラムの書き換えを行う場合に、エンジン制御の信頼性を向上させることができる。
【０１１８】
またエンジンＥＣＵ１は、電子スロットル制御プログラムをメインコア１１とサブコア１２の両方で実行する。これにより、エンジン動作への影響が大きい電子スロットル制御の信頼性を向上させることができる。
【０１１９】
以上説明した実施形態において、エンジンＥＣＵ１は本発明における電子制御装置、ＲＯＭ２２は本発明における第１記憶部、ＲＯＭ３２は本発明における第２記憶部、ＣＰＵ２１およびＳ２０，Ｓ５００，Ｓ１０１０の処理は本発明における第１処理実行手段、ＣＰＵ３１およびＳ２０，Ｓ５００，Ｓ１０１０の処理は本発明における第２処理実行手段、Ｓ４２０の処理は本発明における第１書換手段、Ｓ４５０の処理は本発明における第２書換手段、Ｓ４８０の処理は本発明における第３書換手段、電子スロットル制御プログラムは本発明における第１制御プログラム、メイン側非ロックステップ対応プログラムは本発明における第２制御プログラム、サブ側非ロックステップ対応プログラムは本発明における第３制御プログラムである。
【０１２０】
また、ＲＡＭ２３，３３は本発明におけるメモリ、Ｓ２９０の処理は本発明における格納手段、Ｓ４１０，Ｓ４４０，Ｓ４７０の処理は本発明における優先手段、Ｓ１７０の処理は本発明における第１禁止手段、Ｓ１２０の処理は本発明における故障判断手段、Ｓ１３０の処理は本発明における第２禁止手段である。
【０１２１】
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採ることができる。
例えば上記実施形態では、２つのコア１１，１２の両方で電子スロットル制御プログラムを実行するものを示したが、３つ以上のコアで電子スロットル制御プログラムを実行するようにしてもよい。
【０１２２】
また上記実施形態では、ＲＯＭ２２，３２にそれぞれ制御プログラムを記憶するものを示したが、コア１１，１２が実行する制御プログラムを１つのＲＯＭに記憶するようにしてもよい。
【０１２３】
また上記実施形態では、ロックステップ対応プログラムが電子スロットル制御プログラムであるものを示したが、ロックステップ対応プログラムが電子スロットル制御プログラム以外の制御プログラムであるようにしてもよい。
【符号の説明】
【０１２４】
１…エンジンＥＣＵ、１１…メインコア、１２…サブコア、２１…ＣＰＵ、２２…ＲＯＭ、３１…ＣＰＵ、３２…ＲＯＭ
【図１】
2014235652.tif 000003
【図２】
2014235652.tif 000004
【図３】
2014235652.tif 000005
【図４】
2014235652.tif 000006
【図５】
2014235652.tif 000007
【図６】
2014235652.tif 000008
【図７】
2014235652.tif 000009
【図８】
2014235652.tif 000010
【図９】
2014235652.tif 000011
【図１０】
2014235652.tif 000012
【図１１】
2014235652.tif 000013
【図１２】
2014235652.tif 000014