(57)【要約】【課題】通信異常が発生したときのエンジン制御への影響とマイコンの処理負荷の増大を抑制する【解決手段】ＥＣＵ１は、エンジンの燃焼状態を特定するための筒内圧力を検出する筒内圧力センサ１４からの検出信号を入力し、エンジンを制御するための複数の制御データを生成するマイコン３と、この複数の制御データを用い、エンジンに対する燃料噴射および点火を制御するマイコン２を備え、マイコン２が制御のために制御データを参照するタイミング（以下、データ参照タイミングという）が、クランク角度に基づいて複数の制御データ毎に設定されている。また、クランク角度に同期して、マイコン３が生成した制御データをマイコン２へ送信する。そして、制御データの送信で異常が発生した場合に、異常が発生した複数の制御データのうち、対応するデータ参照タイミングまでに送信可能な制御データを、データ参照タイミングまでに再送信する。【選択図】図１
2014025405.tif 000002
【特許請求の範囲】
【請求項１】
エンジンの状態を特定するための物理量を検出するエンジン状態検出器（１４）からの検出信号を入力し、入力した前記検出信号に基づいて、前記エンジンを制御するための複数の制御データを生成する第１マイクロコンピュータ（３）と、
前記第１マイクロコンピュータが生成した複数の前記制御データを用い、前記エンジンに対する燃料噴射および点火を制御する第２マイクロコンピュータ（２）と、
前記エンジンのクランク軸の回転角度であるクランク角度に同期して、前記第１マイクロコンピュータが生成した複数の前記制御データを第２マイクロコンピュータへ送信するクランク同期送信手段（Ｓ４１０，Ｓ４６０，Ｓ４７０）と、
前記クランク同期送信手段による前記制御データの送信で異常が発生した場合に、前記制御データを再送信する再送信手段（Ｓ５１０〜Ｓ５９０，Ｓ３３０，Ｓ３６０，Ｓ４４０，Ｓ４７０）とを備え、
前記第２マイクロコンピュータが前記制御のために前記制御データを参照するタイミングであるデータ参照タイミングが、前記クランク角度に基づいて、複数の前記制御データ毎に設定され、
前記再送信手段は、
前記クランク同期送信手段による送信で異常が発生した複数の前記制御データのうち、対応する前記データ参照タイミングまでに送信可能な前記制御データを、前記データ参照タイミングまでに再送信する
ことを特徴とするエンジン制御装置（１）。
【請求項２】
前記再送信手段は、
複数の前記制御データのうち、前記データ参照タイミングが早い前記制御データほど早いタイミングで再送信する
ことを特徴とする請求項１に記載のエンジン制御装置。
【請求項３】
前記再送信手段は、
前記クランク角度に同期してデータを送信するクランク角度同期送信機能と、時間に同期してデータを送信する時間同期送信機能とを有し、前記クランク角度同期送信機能と前記時間同期送信機能の両方を用いて前記制御データを再送信する
ことを特徴とする請求項１または請求項２に記載のエンジン制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信可能に互いが接続された複数のマイクロコンピュータを備えたエンジン制御装置に関する。
【背景技術】
【０００２】
従来、エンジンが搭載された車両を制御する車両制御装置として、エンジンの点火および燃料噴射などを制御するエンジン制御用のマイクロコンピュータと、エンジンの状態を検出するエンジン状態検出用のマイクロコンピュータとを備え、これらのマイコン間でデータ通信を行うように構成されたものが知られている（例えば、特許文献１参照）。
【０００３】
このようなマイコン間通信は、時間に同期したタイミングで行われるのが一般的である。しかし、クランク角度に基づいて実行される点火制御および燃料噴射制御などで使用するデータの通信は、クランク角度に同期したタイミングで行われることもある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−１９０６６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、エンジン状態検出用のマイクロコンピュータでの検出結果を、クランク角度に同期したタイミングでエンジン制御用のマイクロコンピュータへ送信する場合に通信異常が発生すると、少なくとも次の、クランク角度に同期したデータ送信タイミングまで、エンジン制御用のマイクロコンピュータ側での通信データの更新が遅れ、点火制御および燃料噴射制御などのエンジン制御に影響を及ぼすおそれがあるという問題があった。
【０００６】
一方、クランク角度に同期したデータ送信の間隔を短くすると、エンジン制御用のマイクロコンピュータ側での通信データの更新の遅れを抑制することができる。しかし、単位時間当たりの通信回数が増大するため、マイクロコンピュータの処理負荷が大きくなってしまうという問題が発生する。
【０００７】
本発明は、こうした問題に鑑みてなされたものであり、通信異常が発生したときのエンジン制御への影響とマイクロコンピュータの処理負荷の増大を抑制することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するためになされた請求項１に記載のエンジン制御装置は、エンジンの状態を特定するための物理量を検出するエンジン状態検出器からの検出信号を入力し、入力した検出信号に基づいて、エンジンを制御するための複数の制御データを生成する第１マイクロコンピュータと、第１マイクロコンピュータが生成した複数の制御データを用い、エンジンに対する燃料噴射および点火を制御する第２マイクロコンピュータとを備え、第２マイクロコンピュータが制御のために制御データを参照するタイミングであるデータ参照タイミングが、エンジンのクランク軸の回転角度であるクランク角度に基づいて、複数の制御データ毎に設定されている。
【０００９】
またクランク同期送信手段が、クランク角度に同期して、第１マイクロコンピュータが生成した複数の制御データを第２マイクロコンピュータへ送信する。
そして再送信手段は、クランク同期送信手段による制御データの送信で異常が発生した場合に、クランク同期送信手段による送信で異常が発生した複数の制御データのうち、対応するデータ参照タイミングまでに送信可能な制御データを、データ参照タイミングまでに再送信する。
【００１０】
このように構成されたエンジン制御装置では、制御データの送信で異常が発生した場合であっても、データ参照タイミングまでに送信可能な制御データであれば、第２マイクロコンピュータが制御のために必要となるタイミングまでに第２マイクロコンピュータが第１マイクロコンピュータから制御データを取得することができる。このため、エンジン制御のために必要となるタイミングまでに制御データが取得できないという状況の発生を抑制し、エンジン制御の安定性を向上させることができる。
【００１１】
さらに、データの再送信は、制御データの送信で異常が発生した場合に実行されるため、第１マイクロコンピュータと第２マイクロコンピュータとの間での通信に起因したマイクロコンピュータの処理負荷の増大を必要最低限に抑制することができる。
【図面の簡単な説明】
【００１２】
【図１】ＥＣＵ１の構成を示すブロック図である。
【図２】時間同期ＤＭＡ通信と角度同期ＤＭＡ通信における通信正常時の動作を示すタイミングチャートである。
【図３】制御データの参照タイミングを示すタイミングチャートである。
【図４】時間同期ＤＭＡ受信処理を示すフローチャートである。
【図５】角度同期ＤＭＡ受信処理を示すフローチャートである。
【図６】時間同期ＤＭＡ送信処理を示すフローチャートである。
【図７】角度同期ＤＭＡ送信処理を示すフローチャートである。
【図８】再送データ設定処理を示すフローチャートである。
【図９】時間同期ＤＭＡ通信と角度同期ＤＭＡ通信における通信異常時の動作を示すタイミングチャートである。
【図１０】時間同期ＤＭＡ通信と角度同期ＤＭＡ通信における高回転時かつ通信異常時の動作を示すタイミングチャートである。
【発明を実施するための形態】
【００１３】
以下に本発明の実施形態を図面とともに説明する。
本実施形態の電子制御装置（以下、ＥＣＵという）１は、車両に搭載され、車両のエンジン（不図示）の制御を行う。
【００１４】
図１に示すようにＥＣＵ１は、ＣＰＵ、プログラムを記憶する記憶媒体としてのＲＯＭ、データを一時記憶するためのＲＡＭ、入出力ポートなどからなるマイクロコンピュータ（以下、マイコンという）２，３を備える。
【００１５】
マイコン２は、ＲＯＭに記憶されているアプリケーションプログラム２０（本実施形態では、例えば、点火制御用プログラム２１、噴射制御用プログラム２２および失火検出用プログラム２３）を実行する。これによりマイコン２は、エンジンに取り付けられたイグナイタ１１およびインジェクタ１２を制御するための処理、エンジンの失火を検出した際に異常警告１３を実施する処理などを行う。
【００１６】
マイコン３は、ＲＯＭに記憶されているアプリケーションプログラム３０（本実施形態では、例えば、燃焼状態量算出用プログラム３１およびセンサ異常検出用プログラム３２）を実行する。これによりマイコン３は、エンジンの各気筒に設けられた筒内圧力センサ１４からの信号に基づいて、エンジンの燃焼状態量を算出する処理、筒内圧力センサ１４の異常を検出する処理などを行う。
【００１７】
また、マイコン２とマイコン３は、通信線４，５を介して相互にデータ通信可能に接続されている。また、マイコン２の入出力ポートとマイコン３の入出力ポートは、信号線６を介して相互に信号入出力可能に接続されている。
【００１８】
そしてマイコン３は、図２に示すように、時間に同期したタイミング（本実施形態では４ｍｓ毎）で、通信線４を介して、ＤＭＡ（Dynamic Memory Access）通信にてデータをマイコン２へ送信する（図２の矢印ＡＬ０１，ＡＬ０２，ＡＬ０３，ＡＬ０４を参照）。以下、時間に同期したタイミングで実行するＤＭＡ通信を時間同期ＤＭＡ通信という。
【００１９】
そして時間同期ＤＭＡ通信では、送信タイミング毎に、複数個（本実施形態では８個）のデータを一括して送信するように構成されており、一括して送信される複数個の送信データをそれぞれ格納するためのデータ領域ＴＤＲ１, ＴＤＲ２,・・・, ＴＤＲｎ（ｎは正の整数。本実施形態ではｎ＝８）が予め設定されている。
【００２０】
本実施形態では、データ領域ＴＤＲ１, ＴＤＲ２,・・・, ＴＤＲ８のうち、データ領域ＴＤＲ１,ＴＤＲ２,ＴＤＲ３,ＴＤＲ４,ＴＤＲ５は、送信タイミング毎に送信されるデータを格納するための通常データ領域として割り当てられている。また、データ領域ＴＤＲ６,ＴＤＲ７,ＴＤＲ８は、通信異常時にデータを再送するための予備データ領域として割り当てられている。なお、データ領域ＴＤＲ１,ＴＤＲ２,ＴＤＲ３,ＴＤＲ４,ＴＤＲ５に格納されるデータを、それぞれＤＡＴＡ１，ＤＡＴＡ２，ＤＡＴＡ３，ＤＡＴＡ４，ＤＡＴＡ５と表記する。なお、通常データ領域に格納される送信データとしては、例えば、シフトポジション情報が挙げられる。
【００２１】
さらにマイコン３は、エンジンのクランク軸の回転角度（クランク角度）を検出するクランク角センサ１５（図１を参照）からの信号を入力し、クランク角度に同期したタイミング（本実施形態では１８０°ＣＡ毎）で、通信線５を介して、ＤＭＡ通信にてデータをマイコン２へ送信する（図２の矢印ＡＬ１１，ＡＬ１２，ＡＬ１３を参照）。なお、「ＣＡ」とは、クランクアングルを意味する。以下、クランク角度に同期したタイミングで実行するＤＭＡ通信を角度同期ＤＭＡ通信という。
【００２２】
そして角度同期ＤＭＡ通信では、送信タイミング毎に、複数個（本実施形態では８個）のデータを一括して送信するように構成されており、一括して送信される複数個の送信データをそれぞれ格納するためのデータ領域ＡＤＲ１, ＡＤＲ２,・・・, ＡＤＲｎ（ｎは正の整数。本実施形態ではｎ＝８）が予め設定されている。
【００２３】
本実施形態では、データ領域ＡＤＲ１, ＡＤＲ２,・・・, ＡＤＲ８のうち、データ領域ＡＤＲ１, ＡＤＲ２, ＡＤＲ３, ＡＤＲ４, ＡＤＲ５は、送信タイミング毎に送信されるデータを格納するための通常データ領域として割り当てられている。また、データ領域ＡＤＲ６, ＡＤＲ７, ＡＤＲ８は、通信異常時にデータを再送するための予備データ領域として割り当てられている。なお、データ領域ＡＤＲ１, ＡＤＲ２, ＡＤＲ３, ＡＤＲ４, ＡＤＲ５に格納されるデータを、それぞれｄａｔａ１，ｄａｔａ２，ｄａｔａ３，ｄａｔａ４，ｄａｔａ５と表記する。ｄａｔａ１，ｄａｔａ２，ｄａｔａ３，ｄａｔａ４，ｄａｔａ５は、アプリケーションプログラム２０で用いられる制御データであり、マイコン３がアプリケーションプログラム３０（燃焼状態量算出用プログラム３１およびセンサ異常検出用プログラム３２）を実行することにより生成される。
【００２４】
そしてマイコン２は、角度同期ＤＭＡ通信でマイコン３からデータを受信する毎に、受信が正常に行われたか否かを判断し、その判断結果を示す信号を、入出力ポート内で予め設定された出力ポート（以下、受信結果出力ポートという）から出力するように構成されている（図２の矢印ＡＬ２１，ＡＬ２２，ＡＬ２３を参照）。
【００２５】
さらにマイコン２は、図３に示すように、エンジンの気筒毎に点火制御、噴射制御および失火検出を実行するように構成されている。
そしてＥＣＵ１は、エンジンの各気筒の上死点（ＴＤＣ）よりも５４０°ＣＡ前のタイミングで、対応する気筒用のデータをマイコン３からマイコン２へ角度同期ＤＭＡ通信で送信するように構成されている（図３の受信ポイントＲＰ１，ＲＰ２，ＲＰ３を参照）。例えば、第１気筒の上死点（図３の［＃１ＴＤＣ］を参照）よりも５４０°ＣＡ前のタイミング（図３の［＃１Ｂ５４０］を参照）で、第１気筒用のデータが角度同期ＤＭＡ通信で送信される（図３の受信ポイントＲＰ１を参照）。
【００２６】
またマイコン２は、各気筒の上死点（ＴＤＣ）よりも３６０°ＣＡ前のタイミングで、各気筒の上死点（ＴＤＣ）よりも５４０°ＣＡ前のタイミングで受信したｄａｔａ１およびｄａｔａ２を参照するように構成されている（図３の参照ポイントＲＰ１１，ＲＰ１２，ＲＰ２１，ＲＰ２２，ＲＰ３１，ＲＰ３２を参照）。例えば、第１気筒の上死点（ＴＤＣ）よりも３６０°ＣＡ前のタイミング（図３の［＃１Ｂ３６０］を参照）で、マイコン２はｄａｔａ１およびｄａｔａ２を参照する（図３の参照ポイントＲＰ１１，ＲＰ１２を参照）。なおマイコン２は、対応する気筒の追加噴射の設定を行うためにｄａｔａ１を参照し、対応する気筒の異常燃焼を検出するためにｄａｔａ２を参照する。
【００２７】
またマイコン２は、各気筒の上死点（ＴＤＣ）よりも１８０°ＣＡ前のタイミングで、各気筒の上死点（ＴＤＣ）よりも５４０°ＣＡ前のタイミングで受信したｄａｔａ３を参照するように構成されている（図３の参照ポイントＲＰ１３，ＲＰ２３を参照）。例えば、第１気筒の上死点（ＴＤＣ）よりも１８０°ＣＡ前のタイミング（図３の［＃１Ｂ１８０］を参照）で、マイコン２は、第１気筒の上死点（ＴＤＣ）よりも５４０°ＣＡ前のタイミングで受信したｄａｔａ３を参照する（図３の参照ポイントＲＰ１３を参照）。なおマイコン２は、対応する気筒の点火時期を算出するためにｄａｔａ３を参照する。
【００２８】
またマイコン２は、各気筒の上死点（ＴＤＣ）のタイミングで、各気筒の上死点（ＴＤＣ）よりも５４０°ＣＡ前のタイミングで受信したｄａｔａ４およびｄａｔａ５を参照するように構成されている（図３の参照ポイントＲＰ１４を参照）。例えば、第１気筒の上死点（ＴＤＣ）のタイミングで（図３の［＃１ＴＤＣ］を参照）、マイコン２は、第１気筒の上死点（ＴＤＣ）よりも５４０°ＣＡ前のタイミングで受信したｄａｔａ４およびｄａｔａ５を参照する（図３の参照ポイントＲＰ１４を参照）。なおマイコン２は、対応する気筒の失火検出などのためにｄａｔａ４およびｄａｔａ５を参照する。
【００２９】
以上より、ｄａｔａ１およびｄａｔａ２は、データを受信したタイミングの後に最も早く参照されるデータである。またｄａｔａ３は、データを受信したタイミングの後において２番目に早く参照されるデータである。そしてｄａｔａ４およびｄａｔａ５は、データを受信したタイミングの後に最も遅く参照されるデータである。このため、ｄａｔａ１およびｄａｔａ２には、最も高い優先度である優先度１が設定されている。またｄａｔａ３には、２番目に高い優先度である優先度２が設定されている。そして、ｄａｔａ４およびｄａｔａ５には、３番目に高い優先度である優先度３が設定されている。
【００３０】
このように構成されたＥＣＵ１において、マイコン２は、後述する時間同期ＤＭＡ受信処理および角度同期ＤＭＡ受信処理を実行する。またマイコン３は、後述する時間同期ＤＭＡ送信処理、角度同期ＤＭＡ送信処理および再送データ設定処理を実行する。
【００３１】
まず、マイコン２が実行する時間同期ＤＭＡ受信処理の手順を図４を用いて説明する。この時間同期ＤＭＡ受信処理は、時間同期ＤＭＡ通信でマイコン３からデータを受信する毎に実行される処理である。
【００３２】
この時間同期ＤＭＡ受信処理が実行されると、マイコン２は、まずＳ１０にて、時間同期ＤＭＡ通信によるデータ受信で異常が発生したか否かを判断する。なおＳ１０では、データ受信中にシリアルエラー（パリティエラー、フレーミングエラー等）が発生するとレジスタにセットされるエラー情報を用いて、受信異常が発生したか否かを判断する。
【００３３】
ここで、データ受信で異常が発生していない場合には（Ｓ１０：ＮＯ）、Ｓ２０にて、受信したデータの予備データ領域（すなわち、データ領域ＴＤＲ６,ＴＤＲ７,ＴＤＲ８）にデータが格納されているか否かを判断する。なおＳ２０では、予備データ領域に、初期値である＄ＦＦ以下の値が格納されている場合に、予備データ領域にデータが格納されていると判断する。
【００３４】
ここで、予備データ領域にデータが格納されている場合には（Ｓ２０：ＹＥＳ）、Ｓ３０にて、予備データ領域に格納されているデータを、角度同期ＤＭＡ通信での再送データとして、マイコン２のＲＡＭ内に予め設定されている第１制御用データ領域に格納し、Ｓ４０に移行する。なお第１制御用データ領域は、角度同期ＤＭＡ通信による受信タイミング毎に対応して設けられている。そしてＳ３０では、予備データ領域に格納されている再送データを、この再送データが最初に送信されたタイミングと対応付けて第１制御用データ領域に格納する。
【００３５】
一方、予備データ領域にデータが格納されていない場合には（Ｓ２０：ＮＯ）、Ｓ４０に移行する。
そしてＳ４０に移行すると、受信したデータの通常データ領域（すなわち、データ領域ＴＤＲ１,ＴＤＲ２,ＴＤＲ３,ＴＤＲ４,ＴＤＲ５）に格納されているデータを、時間同期ＤＭＡ通信で取得したデータとして、マイコン２のＲＡＭ内の第２制御用データ領域に格納し、時間同期ＤＭＡ受信処理を一旦終了する。なお第２制御用データ領域は、時間同期ＤＭＡ通信による受信タイミング毎に対応して設けられている。
【００３６】
またＳ１０にて、データ受信で異常が発生した場合には（Ｓ１０：ＹＥＳ）、Ｓ５０にて、角度同期ＤＭＡ異常カウンタをインクリメントし、時間同期ＤＭＡ受信処理を一旦終了する。
【００３７】
次に、マイコン２が実行する角度同期ＤＭＡ受信処理の手順を図５を用いて説明する。この角度同期ＤＭＡ受信処理は、角度同期ＤＭＡ通信でマイコン３からデータを受信する毎に実行される処理である。
【００３８】
この角度同期ＤＭＡ受信処理が実行されると、マイコン２は、まずＳ１１０にて、受信結果出力ポートを初期化する。すなわち、受信結果出力ポートをローレベルにする。
その後Ｓ１２０にて、角度同期ＤＭＡ通信によるデータ受信で異常が発生したか否かを判断する。なおＳ１２０では、Ｓ１０と同様に、エラー情報を用いて、受信異常が発生したか否かを判断する。
【００３９】
ここで、データ受信で異常が発生していない場合には（Ｓ１２０：ＮＯ）、Ｓ１３０にて、受信したデータの予備データ領域（すなわち、データ領域ＡＤＲ６,ＡＤＲ７,ＡＤＲ８）にデータが格納されているか否かを判断する。なおＳ１３０では、Ｓ２０と同様に、予備データ領域に、初期値である＄ＦＦ以下の値が格納されている場合に、予備データ領域にデータが格納されていると判断する。
【００４０】
ここで、予備データ領域にデータが格納されている場合には（Ｓ１３０：ＹＥＳ）、Ｓ１４０にて、予備データ領域に格納されているデータを、角度同期ＤＭＡ通信での再送データとして、この再送データが最初に送信されたタイミングと対応付けて第１制御用データ領域に格納し、Ｓ１５０に移行する。一方、予備データ領域にデータが格納されていない場合には（Ｓ１３０：ＮＯ）、Ｓ１５０に移行する。
【００４１】
そしてＳ１５０に移行すると、受信したデータの通常データ領域（すなわち、データ領域ＡＤＲ１,ＡＤＲ２,ＡＤＲ３,ＡＤＲ４,ＡＤＲ５）に格納されているデータを、角度同期ＤＭＡ通信における今回の受信タイミングに対応した第１制御用データ領域に格納する。その後Ｓ１６０にて、受信結果出力ポートをローレベルにする。これにより、ローレベルの受信結果信号がマイコン２からマイコン３へ出力される。そして、角度同期ＤＭＡ受信処理を一旦終了する。
【００４２】
またＳ１２０にて、データ受信で異常が発生した場合には（Ｓ１２０：ＹＥＳ）、Ｓ１７０にて、角度同期ＤＭＡ受信異常カウンタの値（以下、角度同期ＤＭＡ受信異常回数という）が０であるか否かを判断する。
【００４３】
ここで、角度同期ＤＭＡ受信異常回数が０である場合には（Ｓ１７０：ＹＥＳ）、Ｓ１８０にて、角度同期ＤＭＡ受信異常カウンタをインクリメントし、Ｓ２００に移行する。一方、角度同期ＤＭＡ受信異常回数が０でない場合には（Ｓ１７０：ＮＯ）、Ｓ１９０にて、角度同期ＤＭＡ受信異常カウンタをリセット（すなわち、カウンタの値を０にする）して、Ｓ２００に移行する。
【００４４】
そしてＳ２００に移行すると、受信結果出力ポートをハイレベルにする。これにより、ハイレベルの受信結果信号がマイコン２からマイコン３へ出力される。そして、角度同期ＤＭＡ受信処理を一旦終了する。
【００４５】
次に、マイコン３が実行する時間同期ＤＭＡ送信処理の手順を図６を用いて説明する。この時間同期ＤＭＡ送信処理は、所定時間毎（本実施形態では４ｍｓ毎）に繰り返し実行される処理である。
【００４６】
この時間同期ＤＭＡ送信処理が実行されると、マイコン３は、まずＳ３１０にて、エンジン回転速度が予め設定された再送判定値（本実施形態では５０００ｒｐｍ）以下であるか否かを判断する。ここで、エンジン回転速度が再送判定値を超えている場合には（Ｓ３１０：ＮＯ）、時間同期ＤＭＡ送信処理を一旦終了する。一方、エンジン回転速度が再送判定値以下である場合には（Ｓ３１０：ＹＥＳ）、Ｓ３２０にて、時間同期再送要求フラグがセットされているか否かを判断する。
【００４７】
ここで、時間同期再送要求フラグがクリアされている場合には（Ｓ３２０：ＮＯ）、Ｓ３５０に移行する。一方、時間同期再送要求フラグがセットされている場合には（Ｓ３２０：ＹＥＳ）、Ｓ３３０にて、時間同期ＤＭＡ通信の予備データ領域に再送データを格納する。具体的には、後述するＳ５９０で時間同期ＤＭＡ通信による再送データとして設定されたデータを格納する。その後Ｓ３４０にて、時間同期再送要求フラグをクリアし、Ｓ３５０に移行する。
【００４８】
そしてＳ３５０に移行すると、時間同期ＤＭＡ通信の通常データ領域に送信データを格納する。そしてＳ３６０にて、時間同期ＤＭＡ通信の通常データ領域および予備データ領域に格納されたデータをマイコン２へ送信して、時間同期ＤＭＡ送信処理を一旦終了する。
【００４９】
次に、マイコン３が実行する角度同期ＤＭＡ送信処理の手順を図７を用いて説明する。この角度同期ＤＭＡ送信処理は、所定クランク角度毎（本実施形態では３０°ＣＡ毎）に繰り返し実行される処理である。
【００５０】
この角度同期ＤＭＡ送信処理が実行されると、マイコン３は、まずＳ４１０にて、１８０°ＣＡ毎に到来する通常の角度同期ＤＭＡ送信タイミングであるか否かを判断する。ここで、通常の角度同期ＤＭＡ送信タイミングである場合には（Ｓ４１０：ＹＥＳ）、Ｓ４３０に移行する。一方、通常の角度同期ＤＭＡ送信タイミングでない場合には（Ｓ４１０：ＮＯ）、Ｓ４２０にて、角度同期再送要求フラグがセットされているか否かを判断する。ここで、角度同期再送要求フラグがクリアされている場合には（Ｓ４２０：ＮＯ）、角度同期ＤＭＡ送信処理を一旦終了する。
【００５１】
一方、角度同期再送要求フラグがセットされている場合には（Ｓ４２０：ＹＥＳ）、Ｓ４３０に移行する。
そしてＳ４３０に移行すると、後述するＳ５９０で角度同期ＤＭＡ通信による再送データとして設定されたデータが存在するか否かを判断する。ここで、再送データとして設定されたデータが存在しない場合には（Ｓ４３０：ＮＯ）、Ｓ４６０に移行する。一方、再送データとして設定されたデータが存在する場合には（Ｓ４３０：ＹＥＳ）、Ｓ４４０にて、角度同期ＤＭＡ通信の予備データ領域に再送データを格納し、さらにＳ４５０にて、角度同期再送要求フラグをクリアして、Ｓ４６０に移行する。
【００５２】
そしてＳ４６０に移行すると、角度同期ＤＭＡ通信の通常データ領域に送信データを格納する。そしてＳ４７０にて、角度同期ＤＭＡ通信の通常データ領域および予備データ領域に格納されたデータをマイコン２へ送信して、角度同期ＤＭＡ送信処理を一旦終了する。
【００５３】
次に、マイコン３が実行する再送データ設定処理の手順を図８を用いて説明する。この再送データ設定処理は、角度同期ＤＭＡ送信処理によるデータ送信が完了してから所定時間が経過した後に実行される処理である。
【００５４】
この再送データ設定処理が実行されると、マイコン３は、まずＳ５１０にて、受信結果入力ポートがハイレベルであるか否かを判断する。ここで、受信結果入力ポートがローレベルである場合には（Ｓ５１０：ＮＯ）、再送データ設定処理を一旦終了する。一方、受信結果入力ポートがハイレベルである場合には（Ｓ５１０：ＹＥＳ）、Ｓ５２０にて、角度同期再送要求フラグをセットし、さらにＳ５３０にて、角度同期ＤＭＡ再送カウンタをインクリメントする。
【００５５】
そしてＳ５４０にて、角度同期ＤＭＡ再送カウンタの値（以下、角度同期ＤＭＡ再送回数という）が１であるか否かを判断する。ここで、角度同期ＤＭＡ再送回数が１である場合には（Ｓ５４０：ＹＥＳ）、再送データ設定処理を一旦終了する。
【００５６】
一方、角度同期ＤＭＡ再送回数が１でない場合には（Ｓ５４０：ＮＯ）、Ｓ５５０にて、エンジン回転速度が予め設定された再送判定値（本実施形態では５０００ｒｐｍ）以下であるか否かを判断する。ここで、エンジン回転速度が再送判定値を超えている場合には（Ｓ５５０：ＮＯ）、Ｓ５７０に移行する。一方、エンジン回転速度が再送判定値以下である（Ｓ５５０：ＹＥＳ）、Ｓ５６０にて、時間同期再送要求フラグをセットし、Ｓ５７０に移行する。
【００５７】
そしてＳ５７０に移行すると、角度同期ＤＭＡ再送カウンタをリセット（すなわち、カウンタの値を０にする）し、Ｓ５８０にて、角度同期再送要求フラグをクリアする。
そしてＳ５９０にて、今回の角度同期ＤＭＡ送信（すなわち、再送データ設定処理の実行開始の直前に完了した角度同期ＤＭＡ送信）の送信データのうち、次回の時間同期ＤＭＡ通信の予備データ領域に格納される再送データと、次回の角度同期ＤＭＡ通信の予備データ領域に格納される再送データを、マイコン２がデータを参照するタイミングに間に合うように設定し、再送データ設定処理を一旦終了する。
【００５８】
本実施形態では、例えば以下に示すようにして、再送データを設定する。
まず、エンジン回転速度が再送判定値（本実施形態では５０００ｒｐｍ）以下であり且つ今回の角度同期ＤＭＡ送信において予備データ領域にデータが格納されていない場合に、優先度１に設定されたデータ（すなわち、角度同期ＤＭＡ通信のデータ領域ＡＤＲ１,ＡＤＲ２に格納されたデータ）を、時間同期ＤＭＡ通信の予備データ領域に格納するように設定するとともに、優先度２，３に設定されたデータ（すなわち、角度同期ＤＭＡ通信のデータ領域ＡＤＲ３,ＡＤＲ４, ＡＤＲ５に格納されたデータ）を、角度同期ＤＭＡ通信の予備データ領域に格納するように設定する。
【００５９】
また、エンジン回転速度が再送判定値以下であり且つ今回の角度同期ＤＭＡ送信において予備データ領域にデータが格納されている場合に、予備データ領域に格納されているデータのうちで、優先度２に設定されていたデータを優先度１に設定し、優先度３に設定されていたデータを優先度２に設定する。そして、優先度１に設定されたデータを、時間同期ＤＭＡ通信の予備データ領域に格納するように設定するとともに、優先度２に設定されたデータを、角度同期ＤＭＡ通信の予備データ領域に格納するように設定する。
【００６０】
また、エンジン回転速度が再送判定値を超えており且つ今回の角度同期ＤＭＡ送信において予備データ領域にデータが格納されていない場合に、角度同期ＤＭＡ通信のデータ領域ＡＤＲ４, ＡＤＲ５に格納されたデータをそれぞれ、角度同期ＤＭＡ通信の予備データ領域ＡＤＲ７, ＡＤＲ８に格納するように設定する。
【００６１】
また、エンジン回転速度が再送判定値を超えており且つ今回の角度同期ＤＭＡ送信において予備データ領域にデータが格納されている場合に、角度同期ＤＭＡ通信のデータ領域ＡＤＲ７, ＡＤＲ８に格納されたデータをそれぞれ、角度同期ＤＭＡ通信の予備データ領域ＡＤＲ７, ＡＤＲ８に格納するように設定する。但し、再送するデータが参照タイミングに間に合わない場合には、データ領域ＡＤＲ４, ＡＤＲ５に格納されたデータをそれぞれ、予備データ領域ＡＤＲ７, ＡＤＲ８に格納するように設定する。
【００６２】
次に、角度同期ＤＭＡ通信で異常が発生したときのＥＣＵ１の動作を図９を用いて説明する。
まず、１８０°ＣＡ毎に到来する通常の角度同期ＤＭＡ送信タイミングで、マイコン３が、予備データ領域にデータが格納されていない角度同期ＤＭＡ送信データＡＤ０１を角度同期ＤＭＡ通信でマイコン２へ送信するとする（矢印ＡＬ３１を参照）。なお、角度同期ＤＭＡ送信データＡＤ０１の通常データ領域ＡＤＲ１, ＡＤＲ２, ＡＤＲ３, ＡＤＲ４, ＡＤＲ５に格納されているデータを、それぞれｄａｔａ１１，ｄａｔａ２１，ｄａｔａ３１，ｄａｔａ４１，ｄａｔａ５１と表記する。これらのデータは、第１気筒の制御のためにマイコン２により参照される。
【００６３】
そして、角度同期ＤＭＡ送信データＡＤ０１の受信で異常が発生したとマイコン２が判断すると、マイコン２は受信結果出力ポートをハイレベルにする。これにより、ハイレベルの受信結果信号がマイコン２からマイコン３へ出力される（矢印ＡＬ３２を参照）。
【００６４】
マイコン３は、角度同期ＤＭＡ送信データＡＤ０１の送信完了後に遅延タスクを発生させて受信結果入力ポートの状態を監視する。これによりマイコン３は、受信結果入力ポートがハイレベルであると判断し、角度同期再送要求フラグをセットする（フラグ立ち上がりエッジＦＵＥ１を参照）。
【００６５】
このためマイコン３は、通常の角度同期ＤＭＡ送信タイミングから３０°ＣＡ後の再送信タイミングで、角度同期ＤＭＡ送信データＡＤ０１を再送信する（矢印ＡＬ３３を参照）。とともに、角度同期再送要求フラグをクリアする（フラグ立ち下がりエッジＦＤＥ１を参照）。
【００６６】
そして、角度同期ＤＭＡ送信データＡＤ０１の再受信で異常が発生したとマイコン２が判断すると、マイコン２は受信結果出力ポートをハイレベルにする。これにより、ハイレベルの受信結果信号がマイコン２からマイコン３へ出力される（矢印ＡＬ３４を参照）。
【００６７】
マイコン３は、角度同期ＤＭＡ送信データＡＤ０１の再送信完了後に遅延タスクを発生させて受信結果入力ポートの状態を監視する。これによりマイコン３は、受信結果入力ポートがハイレベルであると判断し、時間同期再送要求フラグをセットする（フラグ立ち上がりエッジＦＵＥ２を参照）。
【００６８】
そしてマイコン３は、角度同期ＤＭＡ送信データＡＤ０１のデータ領域ＡＤＲ１,ＡＤＲ２に格納されたデータをそれぞれ、時間同期ＤＭＡ通信の予備データ領域ＴＤＲ６,ＴＤＲ７に格納するように設定する（矢印ＡＬ６１を参照）とともに、角度同期ＤＭＡ送信データＡＤ０１のデータ領域ＡＤＲ３,ＡＤＲ４, ＡＤＲ５に格納されたデータをそれぞれ、角度同期ＤＭＡ通信の予備データ領域ＡＤＲ６, ＡＤＲ７, ＡＤＲ８に格納するように設定する（矢印ＡＬ６２，ＡＬ６３を参照）。
【００６９】
これによりマイコン３は、次の時間同期ＤＭＡ送信タイミングで、予備データ領域ＴＤＲ６,ＴＤＲ７にそれぞれｄａｔａ１１，ｄａｔａ２１が格納された時間同期ＤＭＡ送信データＴＤ０１を時間同期ＤＭＡ通信でマイコン２へ送信する（矢印ＡＬ５１を参照）とともに、時間同期再送要求フラグをクリアする（フラグ立ち下がりエッジＦＤＥ２を参照）。またマイコン３は、次の通常の角度同期ＤＭＡ送信タイミングで、予備データ領域ＡＤＲ６, ＡＤＲ７, ＡＤＲ８にそれぞれｄａｔａ３１，ｄａｔａ４１，ｄａｔａ５１が格納された角度同期ＤＭＡ送信データＡＤ０２を角度同期ＤＭＡ通信でマイコン２へ送信する（矢印ＡＬ３５を参照）。なお、角度同期ＤＭＡ送信データＡＤ０２の通常データ領域ＡＤＲ１,ＡＤＲ２,ＡＤＲ３,ＡＤＲ４,ＡＤＲ５にはそれぞれ、角度同期ＤＭＡ送信データＡＤ０１とは異なるｄａｔａ１２，ｄａｔａ２２，ｄａｔａ３２，ｄａｔａ４２，ｄａｔａ５２が格納される。これらのデータは、第２気筒の制御のためにマイコン２により参照される。
【００７０】
これによりマイコン３は、次の角度同期ＤＭＡ送信タイミングよりも早いタイミングで、ｄａｔａ１１，ｄａｔａ２１をマイコン２へ送信することができる。なお、ｄａｔａ３１，ｄａｔａ４１，ｄａｔａ５１は、次の角度同期ＤＭＡ送信タイミングで再送信されてもマイコン２が参照するタイミングに間に合う。
【００７１】
そして、角度同期ＤＭＡ送信データＡＤ０２の受信で異常が発生したとマイコン２が判断すると、マイコン２は受信結果出力ポートをハイレベルにする。これにより、ハイレベルの受信結果信号がマイコン２からマイコン３へ出力される（矢印ＡＬ３６を参照）。
【００７２】
マイコン３は、角度同期ＤＭＡ送信データＡＤ０２の送信完了後に遅延タスクを発生させて受信結果入力ポートの状態を監視する。これによりマイコン３は、受信結果入力ポートがハイレベルであると判断し、角度同期再送要求フラグをセットする（フラグ立ち上がりエッジＦＵＥ３を参照）。
【００７３】
このためマイコン３は、通常の角度同期ＤＭＡ送信タイミングから３０°ＣＡ後の再送信タイミングで、角度同期ＤＭＡ送信データＡＤ０２を再送信する（矢印ＡＬ３７を参照）。とともに、角度同期再送要求フラグをクリアする（フラグ立ち下がりエッジＦＤＥ３を参照）。
【００７４】
そして、角度同期ＤＭＡ送信データＡＤ０２の再受信で異常が発生したとマイコン２が判断すると、マイコン２は受信結果出力ポートをハイレベルにする。これにより、ハイレベルの受信結果信号がマイコン２からマイコン３へ出力される（矢印ＡＬ３８を参照）。
【００７５】
マイコン３は、角度同期ＤＭＡ送信データＡＤ０２の再送信完了後に遅延タスクを発生させて受信結果入力ポートの状態を監視する。これによりマイコン３は、受信結果入力ポートがハイレベルであると判断し、時間同期再送要求フラグをセットする（フラグ立ち上がりエッジＦＵＥ４を参照）。
【００７６】
そしてマイコン３は、角度同期ＤＭＡ送信データＡＤ０２のデータ領域ＡＤＲ１,ＡＤＲ２,ＡＤＲ６に格納されたデータをそれぞれ、時間同期ＤＭＡ通信の予備データ領域ＴＤＲ６,ＴＤＲ７,ＴＤＲ８に格納するように設定する（矢印ＡＬ６４, ＡＬ６５を参照）とともに、角度同期ＤＭＡ送信データＡＤ０２のデータ領域ＡＤＲ３,ＡＤＲ７, ＡＤＲ８に格納されたデータをそれぞれ、角度同期ＤＭＡ通信の予備データ領域ＡＤＲ６, ＡＤＲ７, ＡＤＲ８に格納するように設定する（矢印ＡＬ６６，ＡＬ６７を参照）。
【００７７】
これによりマイコン３は、次の時間同期ＤＭＡ送信タイミングで、予備データ領域ＴＤＲ６,ＴＤＲ７,ＴＤＲ８にそれぞれｄａｔａ１２，ｄａｔａ２２，ｄａｔａ３１が格納された時間同期ＤＭＡ送信データＴＤ０２を時間同期ＤＭＡ通信でマイコン２へ送信する（矢印ＡＬ５２を参照）とともに、時間同期再送要求フラグをクリアする（フラグ立ち下がりエッジＦＤＥ４を参照）。またマイコン３は、次の通常の角度同期ＤＭＡ送信タイミングで、予備データ領域ＡＤＲ６, ＡＤＲ７, ＡＤＲ８にそれぞれｄａｔａ３２，ｄａｔａ４１，ｄａｔａ５１が格納された角度同期ＤＭＡ送信データＡＤ０３を角度同期ＤＭＡ通信でマイコン２へ送信する（矢印ＡＬ３９を参照）。なお、角度同期ＤＭＡ送信データＡＤ０３の通常データ領域ＡＤＲ１,ＡＤＲ２,ＡＤＲ３,ＡＤＲ４,ＡＤＲ５にはそれぞれ、角度同期ＤＭＡ送信データＡＤ０２とは異なるｄａｔａ１３，ｄａｔａ２３，ｄａｔａ３３，ｄａｔａ４３，ｄａｔａ５３が格納される。これらのデータは、第３気筒の制御のためにマイコン２により参照される。
【００７８】
これによりマイコン３は、マイコン２が参照するタイミングよりも前に、ｄａｔａ１２，ｄａｔａ２２，ｄａｔａ３１をマイコン２へ送信することができる。なお、ｄａｔａ３２，ｄａｔａ４１，ｄａｔａ５１は、次の角度同期ＤＭＡ送信タイミングで再送信されてもマイコン２が参照するタイミングに間に合う。
【００７９】
そして、角度同期ＤＭＡ送信データＡＤ０３の受信で異常が発生しなかったとマイコン２が判断すると、マイコン２は受信結果出力ポートをローレベルにする。これにより、ローレベルの受信結果信号がマイコン２からマイコン３へ出力される（矢印ＡＬ４０を参照）。
【００８０】
マイコン３は、角度同期ＤＭＡ送信データＡＤ０３の送信完了後に遅延タスクを発生させて受信結果入力ポートの状態を監視する。これによりマイコン３は、受信結果入力ポートがローレベルであると判断し、角度同期再送要求フラグをクリアの状態に維持する。
【００８１】
このためマイコン３は、角度同期ＤＭＡ送信データＡＤ０３の再送信を行わない。
次に、エンジン回転速度が再送判定値（本実施形態では５０００ｒｐｍ）を超えている状態において角度同期ＤＭＡ通信で異常が発生したときのＥＣＵ１の動作を図１０を用いて説明する。
【００８２】
まず、１８０°ＣＡ毎に到来する通常の角度同期ＤＭＡ送信タイミングで、マイコン３が、予備データ領域にデータが格納されていない角度同期ＤＭＡ送信データＡＤ１１を角度同期ＤＭＡ通信でマイコン２へ送信するとする（矢印ＡＬ７１を参照）。なお、角度同期ＤＭＡ送信データＡＤ１１の通常データ領域ＡＤＲ１, ＡＤＲ２, ＡＤＲ３, ＡＤＲ４, ＡＤＲ５に格納されているデータを、それぞれｄａｔａ１１，ｄａｔａ２１，ｄａｔａ３１，ｄａｔａ４１，ｄａｔａ５１と表記する。これらのデータは、第１気筒の制御のためにマイコン２により参照される。
【００８３】
そして、角度同期ＤＭＡ送信データＡＤ１１の受信で異常が発生したとマイコン２が判断すると、マイコン２は受信結果出力ポートをハイレベルにする。これにより、ハイレベルの受信結果信号がマイコン２からマイコン３へ出力される（矢印ＡＬ７２を参照）。
【００８４】
マイコン３は、角度同期ＤＭＡ送信データＡＤ１１の送信完了後に遅延タスクを発生させて受信結果入力ポートの状態を監視する。これによりマイコン３は、受信結果入力ポートがハイレベルであると判断し、角度同期再送要求フラグをセットする。
【００８５】
このためマイコン３は、通常の角度同期ＤＭＡ送信タイミングから３０°ＣＡ後の再送信タイミングで、角度同期ＤＭＡ送信データＡＤ１１を再送信する（矢印ＡＬ７３を参照）。とともに、角度同期再送要求フラグをクリアする。
【００８６】
そして、角度同期ＤＭＡ送信データＡＤ１１の再受信で異常が発生したとマイコン２が判断すると、マイコン２は受信結果出力ポートをハイレベルにする。これにより、ハイレベルの受信結果信号がマイコン２からマイコン３へ出力される（矢印ＡＬ７４を参照）。
【００８７】
マイコン３は、角度同期ＤＭＡ送信データＡＤ１１の再送信完了後に遅延タスクを発生させて受信結果入力ポートの状態を監視する。これによりマイコン３は、受信結果入力ポートがハイレベルであると判断し、角度同期ＤＭＡ送信データＡＤ１１のデータ領域ＡＤＲ４, ＡＤＲ５に格納されたデータをそれぞれ、角度同期ＤＭＡ通信の予備データ領域ＡＤＲ７, ＡＤＲ８に格納するように設定する（矢印ＡＬ９１を参照）。
【００８８】
すなわち、角度同期ＤＭＡ送信データＡＤ１１のデータ領域ＡＤＲ１,ＡＤＲ２に格納されたデータを次の時間同期ＤＭＡ送信タイミングで送信しない（矢印ＡＬ９２を参照）。これは、エンジン回転速度が高いときは、時間同期ＤＭＡ通信の送信間隔に対して、角度同期ＤＭＡ通信の送信間隔が短くなり、次の通常の角度同期ＤＭＡ送信タイミングより早く送信できる次の時間同期ＤＭＡ送信タイミングが存在しない場合があるためである。
【００８９】
さらに、角度同期ＤＭＡ送信データＡＤ１１の領域ＡＤＲ３に格納されたデータを次の角度同期ＤＭＡ送信タイミングで送信しない（矢印ＡＬ９３を参照）。これは、噴射制御で使用するデータ領域ＡＤＲ１,ＡＤＲ２のデータと、点火制御で使用するデータ領域ＡＤＲ３のデータとは気筒毎に同期を取る必要があり、データ領域ＡＤＲ１,ＡＤＲ２のデータを送信しない場合には、データ領域ＡＤＲ３のデータを送信する必要がなくなるためである。
【００９０】
これによりマイコン３は、次の通常の角度同期ＤＭＡ送信タイミングで、予備データ領域ＡＤＲ７, ＡＤＲ８にそれぞれｄａｔａ４１，ｄａｔａ５１が格納された角度同期ＤＭＡ送信データＡＤ１２を角度同期ＤＭＡ通信でマイコン２へ送信する（矢印ＡＬ７５を参照）。なお、角度同期ＤＭＡ送信データＡＤ１２の通常データ領域ＡＤＲ１,ＡＤＲ２,ＡＤＲ３,ＡＤＲ４,ＡＤＲ５にはそれぞれ、角度同期ＤＭＡ送信データＡＤ１１とは異なるｄａｔａ１２，ｄａｔａ２２，ｄａｔａ３２，ｄａｔａ４２，ｄａｔａ５２が格納される。これらのデータは、第２気筒の制御のためにマイコン２により参照される。なお、ｄａｔａ４１，ｄａｔａ５１は、次の角度同期ＤＭＡ送信タイミングで再送信されてもマイコン２が参照するタイミングに間に合う。
【００９１】
そして、角度同期ＤＭＡ送信データＡＤ１２の受信で異常が発生したとマイコン２が判断すると、マイコン２は受信結果出力ポートをハイレベルにする。これにより、ハイレベルの受信結果信号がマイコン２からマイコン３へ出力される（矢印ＡＬ７６を参照）。
【００９２】
マイコン３は、角度同期ＤＭＡ送信データＡＤ１２の送信完了後に遅延タスクを発生させて受信結果入力ポートの状態を監視する。これによりマイコン３は、受信結果入力ポートがハイレベルであると判断し、角度同期再送要求フラグをセットする。
【００９３】
このためマイコン３は、通常の角度同期ＤＭＡ送信タイミングから３０°ＣＡ後の再送信タイミングで、角度同期ＤＭＡ送信データＡＤ１２を再送信する（矢印ＡＬ７７を参照）。とともに、角度同期再送要求フラグをクリアする。
【００９４】
そして、角度同期ＤＭＡ送信データＡＤ１２の再受信で異常が発生したとマイコン２が判断すると、マイコン２は受信結果出力ポートをハイレベルにする。これにより、ハイレベルの受信結果信号がマイコン２からマイコン３へ出力される（矢印ＡＬ７８を参照）。
【００９５】
マイコン３は、角度同期ＤＭＡ送信データＡＤ１２の再送信完了後に遅延タスクを発生させて受信結果入力ポートの状態を監視する。これによりマイコン３は、受信結果入力ポートがハイレベルであると判断し、角度同期ＤＭＡ送信データＡＤ１２のデータ領域ＡＤＲ７, ＡＤＲ８に格納されたデータをそれぞれ、角度同期ＤＭＡ通信の予備データ領域ＡＤＲ７, ＡＤＲ８に格納するように設定する（矢印ＡＬ９４を参照）。すなわち、角度同期ＤＭＡ送信データＡＤ１２のデータ領域ＡＤＲ１,ＡＤＲ２に格納されたデータを次の時間同期ＤＭＡ送信タイミングで送信することと、角度同期ＤＭＡ送信データＡＤ１１の領域ＡＤＲ３に格納されたデータを次の角度同期ＤＭＡ送信タイミングで送信することを行わない（矢印ＡＬ９５，ＡＬ９６を参照）。
【００９６】
これによりマイコン３は、次の通常の角度同期ＤＭＡ送信タイミングで、予備データ領域ＡＤＲ７, ＡＤＲ８にそれぞれｄａｔａ４１，ｄａｔａ５１が格納された角度同期ＤＭＡ送信データＡＤ１３を角度同期ＤＭＡ通信でマイコン２へ送信する（矢印ＡＬ７９を参照）。なお、角度同期ＤＭＡ送信データＡＤ１３の通常データ領域ＡＤＲ１,ＡＤＲ２,ＡＤＲ３,ＡＤＲ４,ＡＤＲ５にはそれぞれ、角度同期ＤＭＡ送信データＡＤ１２とは異なるｄａｔａ１３，ｄａｔａ２３，ｄａｔａ３３，ｄａｔａ４３，ｄａｔａ５３が格納される。これらのデータは、第３気筒の制御のためにマイコン２により参照される。
【００９７】
そして、角度同期ＤＭＡ送信データＡＤ１３の受信で異常が発生しなかったとマイコン２が判断すると、マイコン２は受信結果出力ポートをローレベルにする。これにより、ローレベルの受信結果信号がマイコン２からマイコン３へ出力される（矢印ＡＬ８０を参照）。
【００９８】
マイコン３は、角度同期ＤＭＡ送信データＡＤ１３の送信完了後に遅延タスクを発生させて受信結果入力ポートの状態を監視する。これによりマイコン３は、受信結果入力ポートがローレベルであると判断し、角度同期再送要求フラグをクリアの状態に維持する。
【００９９】
このためマイコン３は、角度同期ＤＭＡ送信データＡＤ１３の再送信を行わない。
このように構成されたＥＣＵ１は、エンジンの燃焼状態を特定するための筒内圧力を検出する筒内圧力センサ１４からの検出信号を入力し、入力した検出信号に基づいて、エンジンを制御するための複数の制御データ（ｄａｔａ１，ｄａｔａ２，ｄａｔａ３，ｄａｔａ４，ｄａｔａ５）を生成するマイコン３と、マイコン３が生成した複数の制御データを用い、エンジンに対する燃料噴射および点火を制御するマイコン２とを備え、マイコン２が制御のために制御データを参照するタイミング（以下、データ参照タイミングという）が、クランク角度に基づいて、複数の制御データ毎に設定されている。
【０１００】
また、クランク角度に同期して、マイコン３が生成した複数の制御データをマイコン２へ送信する（Ｓ４１０，Ｓ４６０，Ｓ４７０）。
そして、複数の制御データの送信で異常が発生した場合に、異常が発生した複数の制御データのうち、対応するデータ参照タイミングまでに送信可能な制御データを、データ参照タイミングまでに再送信する（Ｓ５１０〜Ｓ５９０，Ｓ３３０，Ｓ３６０，Ｓ４４０，Ｓ４７０）。
【０１０１】
これにより、制御データの送信で異常が発生した場合であっても、データ参照タイミングまでに送信可能な制御データであれば、マイコン２が制御のために必要となるタイミングまでにマイコン２がマイコン３から制御データを取得することができる。このため、エンジン制御のために必要となるタイミングまでに制御データが取得できないという状況の発生を抑制し、エンジン制御の安定性を向上させることができる。
【０１０２】
さらに、データの再送信は、制御データの送信で異常が発生した場合に実行されるため、マイコン３とマイコン２との間での通信に起因したマイクロコンピュータの処理負荷の増大を必要最低限に抑制することができる。
【０１０３】
また、複数の制御データｄａｔａ１，ｄａｔａ２，ｄａｔａ３，ｄａｔａ４，ｄａｔａ５のうち、データ参照タイミングが早い制御データほど早いタイミングで再送信する。本実施形態では、ｄａｔａ１およびｄａｔａ２のデータ参照タイミングが最も早く、ｄａｔａ３のデータ参照タイミングが２番目に早いため、ｄａｔａ１およびｄａｔａ２の方がｄａｔａ３よりも早く再送信される（例えば、図９の矢印ＡＬ６１，ＡＬ６２を参照）。また、ｄａｔａ４およびｄａｔａ５のデータ参照タイミングが最も遅いため、ｄａｔａ３の方がｄａｔａ４およびｄａｔａ５よりも早く再送信される（例えば、図９の矢印ＡＬ６５，ＡＬ６７を参照）。
【０１０４】
これにより、エンジン制御のために必要となるタイミングまでに制御データが取得できないという状況の発生を更に抑制することができる。
また、クランク角度に同期してデータを送信するクランク角度同期送信機能と、時間に同期してデータを送信する時間同期送信機能との両方を用いて制御データを再送信する（Ｓ３３０，Ｓ３６０，Ｓ４４０，Ｓ４７０）。
【０１０５】
これにより、クランク角度同期送信機能で異常が発生してクランク角度同期送信機能が使用できなくなったとしても時間同期送信機能を用いて再送信することができるため、エンジン制御のために必要となるタイミングまでに制御データが取得できないという状況の発生を更に抑制することができる。
【０１０６】
以上説明した実施形態において、ＥＣＵ１は本発明におけるエンジン制御装置、マイコン３は本発明における第１マイクロコンピュータ、マイコン２は本発明における第２マイクロコンピュータ、Ｓ４１０，Ｓ４６０，Ｓ４７０の処理は本発明におけるクランク同期送信手段、Ｓ５１０〜Ｓ５９０，Ｓ３３０，Ｓ３６０，Ｓ４４０，Ｓ４７０の処理は本発明における再送信手段、筒内圧力センサ１４は本発明におけるエンジン状態検出器である。
【０１０７】
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採ることができる。
【符号の説明】
【０１０８】
１…ＥＣＵ、２,３…マイコン、４,５…通信線、６…信号線、１４…筒内圧力センサ
【図１】
2014025405.tif 000003
【図２】
2014025405.tif 000004
【図３】
2014025405.tif 000005
【図４】
2014025405.tif 000006
【図５】
2014025405.tif 000007
【図６】
2014025405.tif 000008
【図７】
2014025405.tif 000009
【図８】
2014025405.tif 000010
【図９】
2014025405.tif 000011
【図１０】
2014025405.tif 000012