(57)【要約】【課題】他の装置との通信周期が変更されても、その装置からの通信データを用いる処理を適切に実行可能で、処理遅れや処理負荷の増加を招くこともない電子制御装置の提供。【解決手段】他の装置と定期的に通信する電子制御装置は、通信相手からの通信データを受信して記憶する通信コントローラを備えている。そして、通信相手との通信周期を検出し（Ｓ１２０〜Ｓ１７０）、通信コントローラに記憶されている通信データが更新されたか否かのチェックを、上記検出した通信周期毎に行う（Ｓ２００，Ｓ２１０）。この構成によれば、通信周期が変更されても、通信データの更新を素早く効率良く検知できる。そして、通信データの更新を検知した場合にその通信データを用いる処理を実行することで、その処理を通信周期の変更に影響されずに適切に実行することができる。しかも、無駄な処理を少なくして処理遅れや処理負荷の増加を防止できる。【選択図】図２
2008276306.tif 000002
【特許請求の範囲】
【請求項１】
他の装置と定期的に通信する電子制御装置であって、
前記他の装置からの通信データを受信して記憶する受信手段と、
前記他の装置との通信周期を検出する周期検出手段と、
前記受信手段に記憶されている通信データが更新されたか否かを、前記周期検出手段により検出された通信周期でチェックする更新チェック手段と、
を備えていることを特徴とする電子制御装置。
【請求項２】
請求項１に記載の電子制御装置において、
前記更新チェック手段は、前記通信データが更新されていることを検知したならば、そのことを示す更新情報をセットするようになっており、
当該電子制御装置は、前記更新情報を参照して、該更新情報がセットされていれば、その更新情報がセットされた際にチェック対象となった通信データを用いて特定の処理を行うように構成されていること、
を特徴とする電子制御装置。
【請求項３】
請求項１又は請求項２に記載の電子制御装置において、
前記周期検出手段は、当該電子制御装置が動作を開始してから所定期間だけ作動すること、
を特徴とする電子制御装置。
【請求項４】
請求項３に記載の電子制御装置において、
前記他の装置で実行されるプログラムが書き換えられたか否かを判定し、該プログラムが書き換えられたことを検出すると、そのことを示すプログラム書換情報をセットする書換検出手段を備え、
前記周期検出手段は、当該電子制御装置が動作を開始した際に、前記プログラム書換情報がセットされていたならば作動すること、
を特徴とする電子制御装置。
【請求項５】
請求項３に記載の電子制御装置において、
当該電子制御装置及び前記他の装置は、車載バッテリの電力を受けて動作する車載装置であり、
当該電子制御装置は、前記車載バッテリの着脱があったか否かを判定するバッテリ着脱判定手段を備え、
前記周期検出手段は、当該電子制御装置が動作を開始した際に、前記バッテリ着脱判定手段により前記車載バッテリの着脱があったと判定されたならば作動すること、
を特徴とする電子制御装置。
【請求項６】
請求項１又は請求項２に記載の電子制御装置において、
前記周期検出手段は、前記他の装置で実行されるプログラムが書き換えられたことを条件として作動すること、
を特徴とする電子制御装置。
【請求項７】
請求項１又は請求項２に記載の電子制御装置において、
当該電子制御装置及び前記他の装置は、車載バッテリからの電力を受けて動作する車載装置であり、
前記周期検出手段は、前記車載バッテリの着脱があったことを条件として作動すること、
を特徴とする電子制御装置。
【請求項８】
請求項１ないし請求項７の何れか１項に記載の電子制御装置において、
前記周期検出手段は、前記通信周期を複数回測定すると共に、その複数回分の測定値の平均をとることで、前記通信周期の検出値を求めること、
を特徴とする電子制御装置。
【請求項９】
請求項８に記載の電子制御装置において、
前記周期検出手段は、前記複数回分の測定値の平均値に基づいて、複数通りの通信周期の候補値のうちの何れかを、前記通信周期の検出値として選択すること、
を特徴とする電子制御装置。
【請求項１０】
請求項１ないし請求項９の何れか１項に記載の電子制御装置において、
前記周期検出手段が作動した場合に、その周期検出手段が前記通信周期を正常に検出することができたか否かを判定する良否判定手段を備え、
前記良否判定手段により否定判定されたならば、前記更新チェック手段は、前記通信データが更新されたか否かを、前記周期検出手段が過去に作動した際に検出した通信周期でチェックするようになっていること、
を特徴とする電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、他の装置と定期的に通信する電子制御装置に関するものである。
【背景技術】
【０００２】
従来より、例えば自動車においては、複数の電子制御装置が通信線を介して通信する通信システムが構成されている。そして、この種の車載通信システムでは、ある装置Ａからある装置Ｂへ、その装置Ｂにて制御対象を制御するために必要な情報のデータが定期的に送信され、装置Ｂは、その装置Ａからの通信データを用いて、制御対象を制御するための処理を実行する（例えば、特許文献１参照）。尚、電子制御装置において、各種処理は、実際には、その電子制御装置に搭載されたマイコンによって実行される。
【０００３】
ここで、他の装置と通信する電子制御装置では、マイコンの内部又は外部に、他の装置からの通信データを受信して記憶する通信コントローラが備えられている。そして特に、他の装置からの通信データを用いて処理を行う電子制御装置では、通信コントローラに記憶される通信データ（受信データ）が更新されたことを検知した場合に、その通信データを用いて処理を行うように構成することにより、その通信データを用いる処理を無駄なく効率的に行うことができるようになる。
【０００４】
そして、このための手法としては、通信コントローラが他の装置からの通信データを受信して記憶すると発生する受信割り込みのルーチン（受信割り込みルーチン）にて、通信データが更新されたか否かをチェックし、通信データが更新されたと判定すると、引き続き、その受信割り込みルーチンにて通信データを用いる処理を行う、というように構成することが考えられる。
【０００５】
また、他の手法としては、予め定められた一定時間毎に実行される定期ルーチンにて、通信データが更新されたか否かをチェックし、通信データが更新されたと判定すると、引き続き、その定期ルーチンにて通信データを用いる処理を行う、というように構成することも考えられる。
【０００６】
一方、プログラムをフラッシュメモリやＥＥＰＲＯＭ等のデータ書き換え可能な不揮発性メモリに記憶するようにし、その不揮発性メモリ内のプログラムをオンボード書き換え可能に構成された電子制御装置が知られている（例えば、特許文献２参照）。
【特許文献１】特開２００５−２４２８７１号公報
【特許文献２】特許第３０９７５８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、受信割り込みを用いる前者の手法では、受信割り込みルーチンの処理負荷が大きくなってしまうため、他の処理の実行遅れを招いてしまう。一般に、受信割り込みルーチンの実行中は他の処理を行うことができないからである。
【０００８】
また、定期ルーチンを用いる後者の手法では、通信相手の装置におけるプログラムが書き換られて、その装置のデータ送信周期が早く（短く）なると、通信データが更新されたか否かのチェックを適切に行うことができなくなってしまう。つまり、通信相手からの通信データが更新されても、それに気付かない不感時間が長くなってしまう。そして、その結果、通信データを用いる処理（換言すれば、通信データが更新されたなら実行されるべき処理）を適切に行うことができなくなる。
【０００９】
尚、こうした不具合を解消するために、上記定期ルーチンの実行周期を、予め想定される複数通りの通信周期のうちの最速周期（以下、通信最速周期という）に設定しておくことが考えられる。しかし、そのように設定すると、逆に、実際の通信周期が通信最速周期よりも遅い（長い）場合には、無駄な処理が頻繁に行われることとなり、処理負荷の増加を招いてしまう。
【００１０】
本発明は、こうした問題に鑑みなされたものであり、他の装置との通信周期が変更されても、その装置からの通信データを用いる処理を適切に実行可能であると共に、処理遅れや処理負荷の増加を招くこともない電子制御装置の提供を目的としている。
【課題を解決するための手段】
【００１１】
請求項１の電子制御装置は、他の装置と定期的に通信する電子制御装置であって、他の装置からの通信データを受信して記憶する受信手段と、他の装置との通信周期を検出する周期検出手段と、更新チェック手段とを備えている。そして、更新チェック手段は、受信手段に記憶されている通信データが更新されたか否かを、周期検出手段により検出された通信周期でチェックする（調べる）。
【００１２】
つまり、この電子制御装置では、他の装置との通信周期を自動的に検出し、その検出した通信周期で、受信手段に記憶されている通信データが更新されたか否かのチェック（以下、通信データの更新有無のチェックという）を行うようになっている。
【００１３】
このような請求項１の電子制御装置によれば、他の装置との通信周期が変更されても、その変更後の通信周期で通信データの更新有無をチェックすることとなるため、通信データが更新されたことを素早く、しかも効率良く検知することができる。
【００１４】
よって、通信データが更新されたことを更新チェック手段によって検知された場合に、その通信データを用いる処理が実行されるように構成することで、その処理（即ち、通信データが更新されたなら実行されるべき処理）を、通信周期の変更に影響されずに適切に実行することができるようになる。しかも、受信割り込みの処理や通信最速周期での処理を少なく抑えることができるため、処理遅れや処理負荷の増加を抑えることができる。
【００１５】
ところで、マイコンがプログラムを実行することにより、更新チェック手段の機能が実現される構成の場合、例えば、その更新チェック手段の機能を実現するためのプログラムと、通信データを用いる処理のプログラムとを、１つのプログラムとし、更新チェック手段の機能によって通信データが更新されていることが検知されたならば、即座に通信データを用いる処理が行われるようにすることができる。
【００１６】
また、更新チェック手段の機能を実現するためのプログラムと、通信データを用いる処理のプログラムとを、別々のプログラムとして分離するのであれば、請求項２のように構成すると良い。
【００１７】
即ち、請求項２の電子制御装置では、請求項１の電子制御装置において、更新チェック手段は、通信データが更新されていることを検知したならば、そのことを示す更新情報をセットするようになっている。そして、当該電子制御装置は、その更新情報を参照して、該更新情報がセットされていれば、その更新情報がセットされた際にチェック対象となった通信データを用いて特定の処理を行う。
【００１８】
このような請求項２の電子制御装置によれば、更新チェック手段の機能を実現するためのプログラムと、更新情報を参照して通信データを用いる処理を行うか否かを判定する処理及び通信データを用いる処理のプログラムとを、別々のプログラムに分離しても、請求項１の電子制御装置について述べた効果を得ることができる。
【００１９】
例えば、対比例として、実行周期が通信最速周期に設定されたルーチンにて、通信データの更新有無をチェックすると共に、更新があればそのことを示す更新情報をセットし、他のルーチンにより、その更新情報を参照して、更新情報がセットされていれば、その更新情報がセットされた際にチェック対象となった通信データを用いて処理を行う、というように構成することが考えられる。
【００２０】
しかし、この構成の場合、実際の通信周期が通信最速周期よりも遅い場合に無駄な処理が頻繁に行われるという問題の他にも、下記の問題がある。
即ち、実際の通信周期より速い周期で更新情報を生成することとなるため、上記他のルーチン側が更新情報を参照する前に、通信データの更新有無のチェックを複数回実行して、更新情報をセットから非セットの状態に戻してしまう可能性があり、その場合には、通信データが本当は更新されたのに、通信データを用いた処理が実行されなくなってしまう虞がある。また、この問題は、更新情報を所定時間保持することで解決可能であるが、その保持時間が実際の通信周期よりも長いと、逆に、通信データが本当は更新されていないのに、通信データを用いた処理が無駄に実行されてしまう可能性が生じる。
【００２１】
これに対して、請求項２の電子制御装置によれば、こうした問題の発生を抑制することができ、通信データを用いる処理（通信データが更新されたなら実行されるべき処理）を、通信周期の変更に影響されずに適切に実行することができるのである。
【００２２】
次に、請求項３の電子制御装置では、請求項１，２の電子制御装置において、周期検出手段は、当該電子制御装置が動作を開始してから所定期間だけ作動するようになっている。
【００２３】
そして、この構成によれば、周期検出手段が作動する機会を少なくすることができ、その周期検出手段をプログラムで実現する場合には、周期を検出するための処理負荷を少なくすることができる。なぜなら、通信相手の装置におけるプログラムが書き換えられた場合には、その装置と当該電子制御装置とが再起動されると考えられ、起動時にだけ通信周期を検出するように構成すれば、プログラムの書き換えに伴う通信周期の変更に対応できるからである。
【００２４】
尚、周期検出手段が作動する所定期間としては、例えば、その時間があれば予め定められた手順で通信周期を検出できると考えられる一定時間（具体的には、通信周期の最長値よりも大きい一定時間）でも良いし、通信周期を予め定められた手順で実際に検出するまでの期間でも良い。
【００２５】
次に、請求項４の電子制御装置では、請求項３の電子制御装置において、書換検出手段を備えており、その書換検出手段は、通信相手の他の装置で実行されるプログラムが書き換えられたか否かを判定し、該プログラムが書き換えられたことを検出すると、そのことを示すプログラム書換情報をセットする。そして、周期検出手段は、当該電子制御装置が動作を開始した際に、前記プログラム書換情報がセットされていたならば作動するようになっている。
【００２６】
この構成によれば、通信相手の装置で実行されるプログラムが書き換えられた後の、最初の起動時にのみ、周期検出手段が作動することとなる。よって、周期検出手段が作動する機会を更に最適化して最小限にしつつ、プログラムの書き換えに伴う通信周期の変更に対応することができる。
【００２７】
尚、他の装置で実行されるプログラムが書き換えられたか否かは、その装置と、プログラムを書き換えるための書換装置との間の通信データをモニタすることで判定することができる。
【００２８】
次に、請求項５の電子制御装置では、請求項３の電子制御装置において、当該電子制御装置及び前記他の装置は、車載バッテリの電力を受けて動作する車載装置である。そして、当該電子制御装置は、車載バッテリの着脱があったか否かを判定するバッテリ着脱判定手段を備えている。そして更に、周期検出手段は、当該電子制御装置が動作を開始した際に、バッテリ着脱判定手段により車載バッテリの着脱があったと判定されたならば作動するようになっている。
【００２９】
この構成によれば、車載バッテリが外されて取り付けられた後の、最初の起動時にのみ、周期検出手段が作動することとなる。このため、通信相手の他の装置が仕様の異なるものに交換されたことによる通信周期の変更に対して、周期検出手段の作動機会を最小限にしつつ対応することができる。なぜなら、一般に、車載装置が交換される場合には、車載バッテリが取り外されるため、請求項５の構成によれば、通信相手の装置の交換により通信周期が変わる可能性がある場合に、周期検出手段を作動させることとなるからである。
【００３０】
次に、請求項６の電子制御装置では、請求項１，２の電子制御装置において、周期検出手段は、前記他の装置で実行されるプログラムが書き換えられたことを条件として作動するようになっている。
【００３１】
この構成によれば、請求項４の電子制御装置と同様に、通信相手の装置のプログラム書き換えにより通信周期が変わった可能性がある場合にのみ、周期検出手段を作動させることとなる。よって、周期検出手段が作動する機会を少なくしつつ、通信相手の装置のプログラム書き換えに伴う通信周期の変更に対応することができる。
【００３２】
次に、請求項７の電子制御装置では、請求項１，２の電子制御装置において、当該電子制御装置及び前記他の装置は、車載バッテリからの電力を受けて動作する車載装置であり、周期検出手段は、車載バッテリの着脱があったことを条件として作動するようになっている。
【００３３】
この構成によれば、請求項５の電子制御装置と同様に、通信相手の装置の交換により通信周期が変わった可能性がある場合にのみ、周期検出手段を作動させることとなる。よって、周期検出手段が作動する機会を少なくしつつ、通信相手の他の装置が交換されたことによる通信周期の変更に対応することができる。
【００３４】
次に、請求項８の電子制御装置では、請求項１〜７の電子制御装置において、周期検出手段は、前記他の装置との通信周期を複数回測定すると共に、その複数回分の測定値の平均をとることで、通信周期の検出値を求めるようになっている。そして、この構成によれば、通信周期の測定ばらつきを抑制して、通信周期の検出精度を向上させることができる。
【００３５】
次に、請求項９の電子制御装置では、請求項８の電子制御装置において、周期検出手段は、前記複数回分の測定値の平均値に基づいて、複数通りの通信周期の候補値のうちの何れかを、通信周期の検出値として選択するようになっている。そして、この構成によれば、通信周期の検出値を、予め定められた通信周期の候補値の何れかに確実に合わせることができる。よって、通信周期の検出精度を一層向上させることができる。
【００３６】
次に、請求項１０の電子制御装置では、請求項１〜９の電子制御装置において、良否判定手段を備えており、該良否判定手段は、周期検出手段が作動した場合に、その周期検出手段が通信周期を正常に検出することができたか否かを判定する。そして、良否判定手段により否定判定されたならば（即ち、周期検出手段が通信周期を正常に検出することができなかったと判定されたならば）、更新チェック手段は、通信データが更新されたか否かを、周期検出手段が過去に作動した際に検出した通信周期でチェックするようになっている。尚、良否判定手段は、例えば、周期検出手段による通信周期の検出値が規定範囲内に入っているか否かを判定し、規定範囲内でなければ、周期検出手段が通信周期を正常に検出することができなかったと判定するように構成することができる。
【００３７】
そして、このような電子制御装置によれば、通信エラー等によって通信周期を正常に検出することができなかった場合でも、過去に検出した通信周期で、通信データの更新有無をチェックすることができ、動作の確実性を向上させることができる。
【発明を実施するための最良の形態】
【００３８】
以下に、本発明が適用された実施形態の電子制御装置について説明する。尚、本実施形態の電子制御装置（以下、ＥＣＵという）は、自動車に搭載され、例えば、その自動車のエンジン等を制御するものである。
【００３９】
図１に示すように、本実施形態のＥＣＵ１は、通信線３を介して他のＥＣＵ５と接続されており、そのＥＣＵ５と定期的に通信する。また、各ＥＣＵ１，５は、車両のイグニッションスイッチがオンされると、車載バッテリから動作電力が供給されて起動する。
【００４０】
そして、ＥＣＵ１は、当該ＥＣＵの動作を司るマイコン１１を備えている。更に、そのマイコン１１には、通信線３に接続されたＥＣＵ５等の他の装置と通信するための通信コントローラ１３と、通信データ取り込み用プログラム１５と、アプリケーションプログラム１７とが備えられている。
【００４１】
ここで、ＥＣＵ１の通信相手であるＥＣＵ５は、図１の下方に示すように、ＥＣＵ１へ送るべき通信データと、その通信データを更新したか否かを示す更新フラグとを組にして送信する。更に具体的に説明すると、ＥＣＵ５は、送信バッファを有しており、ＥＣＵ１との通信周期である一定時間毎に、その送信バッファ内の通信データ及び更新フラグをＥＣＵ１へ送信するが、その送信バッファ内の通信データを書き換えた（更新した）ときに、その送信バッファに通信データと共に格納される更新フラグを１にセットするようになっている。よって、ＥＣＵ１側では、ＥＣＵ５から受信した通信データに付属する更新フラグが１であれば、その通信データが更新されたと判断することができる。
【００４２】
そして、マイコン１１の通信コントローラ１３は、受信バッファ１４を備えており、通信線３を介してＥＣＵ５から受信した通信データ及び更新フラグを、その受信バッファ１４に格納するようになっている。
【００４３】
また、マイコン１１に備えられたＲＡＭ等のメモリ（図示省略）には、ＥＣＵ５から受信した通信データ及び更新フラグを格納するための受信データ格納領域１６が設定されている。
【００４４】
そして、通信データ取り込み用プログラム１５は、通信コントローラ１３の受信バッファ１４から受信データ格納領域１６へ通信データと更新フラグを転送する処理を、マイコン１１に行わせるためのプログラムである。
【００４５】
また、アプリケーションプログラム１７は、受信データ格納領域１６に格納されている更新フラグを参照し、更新フラグが１であれば、その受信データ格納領域１６内の通信データを用いて制御対象を制御するための処理を行う、という機能をマイコン１１に実現させるプログラムである。尚、アプリケーションプログラム１７と通信データ取り込み用プログラム１５は、マイコン１１に備えられた不揮発性メモリ（図示省略）に格納されている。
【００４６】
一方、少なくとも、ＥＣＵ５は内蔵のプログラムがオンボード書き換え可能となっている。そして、そのＥＣＵ５のプログラムを書き換える場合には、通信線３に、プログラムを書き換えるための書換装置２１が接続される。つまり、ＥＣＵ５は、書換装置２１からの書換コマンドを受けると、動作モードが書換モードとなり、内蔵のプログラムを書換装置２１から送られて来る新たなプログラムに書き換える処理を行うようになっている。
【００４７】
次に、ＥＣＵ１のマイコン１１が実行する処理について図２〜図４のフローチャートを用い説明する。尚、図２と図３の処理は、通信データ取り込み用プログラム１５によるものであり、図４の処理は、アプリケーションプログラム１７によるものである。
【００４８】
ＥＣＵ１に電源が投入されて該ＥＣＵ１が起動すると、マイコン１１も動作を開始して、図２の処理を行う。
そして、まずＳ１１０にて、測定時間カウンタと受信回数カウンタをクリアする。尚、測定時間カウンタは、マイコン１１の動作開始時からの経過時間を計測するためのカウンタであり、図示しない他のタイマ処理によって一定時間毎にインクリメントされる。また、受信回数カウンタは、ＥＣＵ５からの通信データの受信回数を計測するためのカウンタであり、後述する図３の処理でインクリメントされる。
【００４９】
次にＳ１２０にて、ＥＣＵ５との通信周期の測定を開始する処理を行う。具体的には、通信周期を測定するための図３の受信割り込み処理が実行されるのを許可する。図３の受信割り込み処理は、マイコン１１において、通信コントローラ１３がＥＣＵ５からの通信データを受信すると発生する受信割り込み要求によって起動される割り込み処理である。
【００５０】
次にＳ１３０にて、測定時間カウンタの値に基づき、予め定められた周期測定時間が経過したか否かを判定し、その周期測定時間が経過するまで待つ。
尚、周期測定時間は、ＥＣＵ５との通信周期の測定を実施する時間であり、設定され得る通信周期の最大値の２倍よりも長い時間に予め設定されている。更に具体的には、本実施形態において、ＥＣＵ１とＥＣＵ５との通信周期は、４ｍｓの倍数でないと成立せず、たとえＥＣＵ５のプログラムが書き換えられても、当該ＥＣＵ１との通信周期は４ｍｓの倍数でしか変更されないようになっている。また、ＥＣＵ１とＥＣＵ５との通信周期は、４ｍｓが最小で３６ｍｓが最大となっている。そこで、周期測定時間は、３６ｍｓの２倍よりも長い例えば７６ｍｓに設定されている（図５参照）。
【００５１】
そして、Ｓ１３０にて、周期測定時間が経過したと判定すると、Ｓ１５０に進み、ＥＣＵ５との通信周期の測定を終了する処理を行う。具体的には、図３の受信割り込み処理が実行されるのを禁止する。
【００５２】
ここで、マイコン１１は、図２のＳ１２０の処理を行ってからＳ１５０の処理を行うまでの周期測定時間の間、ＥＣＵ５からの通信データを受信する毎に、図３の受信割り込み処理を実行する。
【００５３】
そして、図３の受信割り込み処理では、まずＳ３１０にて、その時点でのグローバルタイマ値を取得する。グローバルタイマ値とは、グローバルタイマのカウント値であり、グローバルタイマは、マイコン１１において常時カウントアップされているハードウェアのタイマ（所謂フリーランタイマ）である。
【００５４】
次にＳ３２０にて、受信回数カウンタの値に基づき、受信回数（即ち、ＥＣＵ５からの通信データを受信した回数）が１であるか否かを判定し、１であれば、そのままＳ３４０に移行する。尚、受信回数カウンタの値が０であれば、受信回数が１であると判定する。
【００５５】
Ｓ３４０では、受信回数カウンタをインクリメントし、次のＳ３５０にて、受信バッファ１４内の通信データを受信データ格納領域１６にコピーする通信データの取り込み処理を行うと共に、通信データの更新有無をチェックする更新有無チェック処理を行う。この更新有無チェック処理は、受信バッファ１４内の更新フラグを読み出して、その更新フラグが１であれば、受信バッファ１４内の通信データが更新されたとして、受信データ格納領域１６内の更新フラグを１にセットすると共に、受信バッファ１４内の更新フラグを０にリセットし、また、受信バッファ１４内の更新フラグが１でなければ（０であれば）、通信データが更新されていないとして、受信データ格納領域１６内の更新フラグを０にする、という内容の処理である。
【００５６】
但し、Ｓ３５０では、上記通信データの取り込み処理と更新有無チェック処理とを簡潔に行うために、実際には、受信バッファ１４から受信データ格納領域１６へ通信データと更新フラグをコピーし、次いで、受信バッファ１４内の更新フラグを０にする、という処理を行う。このようにしても結果は同じであるからである。
【００５７】
そして、Ｓ３５０の処理が終わると、当該受信割り込み処理を終了する。
一方、上記Ｓ３２０にて、受信回数が１でないと判定した場合には、Ｓ３３０に進み、前回のＳ３１０で取得したグローバルタイマ値と今回のＳ３１０で取得したグローバルタイマ値との差を、受信間隔（＝通信周期）として算出する。そして、その後、前述のＳ３４０に進む。
【００５８】
図２に戻り、上記Ｓ１５０の処理を終えると、次のＳ１６０にて、周期測定時間の間に図３の受信割り込み処理で算出された受信間隔の平均値を求める。
そして、次のＳ１７０にて、Ｓ１６０で算出した受信間隔の平均値に基づいて、通信周期の検出値（以下、検出通信周期という）を決定する処理を行う。
【００５９】
具体的には、算出した受信間隔の平均値が、通信最速周期である４ｍｓより小さければ、その４ｍｓを検出通信周期とし、そうでなければ（つまり、受信間隔の平均値が４ｍｓ以上であれば）、４ｍｓの倍数値であって、予め想定される複数通りの通信周期の候補値（即ち、４ｍｓ，８ｍｓ，１２ｍｓ，…，３２ｍｓ，３６ｍｓ）のうち、受信間隔の平均値以下で最も大きい候補値を、検出通信周期とする。このため、例えば、受信間隔の平均値が４ｍｓ以上８ｍｓ未満の場合には、４ｍｓが検出通信周期として選択され、受信間隔の平均値が８ｍｓ以上１２ｍｓ未満の場合には、８ｍｓが検出通信周期として選択される。尚、Ｓ１７０では、通信周期の候補値のうち、受信間隔の平均値に最も近い候補値を、検出通信周期として選択するようにしても良い。
【００６０】
次にＳ１８０にて、今回のＳ１７０で求めた検出通信周期が有効であるか否かを判定する。
具体的には、Ｓ１６０で算出した受信間隔の平均値、或いは、図３のＳ３３０で算出した受信間隔の値が、正常と考えられる規定範囲内に入っているか否かを判定し、規定範囲内でなければ、そのような値に基づき決定した検出通信周期も正常ではないと考えられるため、その検出通信周期は有効でないと判定する。
【００６１】
そして、このＳ１８０にて検出通信周期が有効であると判定したならば、Ｓ１９０に進み、今回求めた検出通信周期をフラッシュメモリやＥＥＰＲＯＭ等の書換可能不揮発性メモリ（図示省略）に更新記憶し、その後、Ｓ２００へ進む。
【００６２】
すると、以後は、Ｓ２００の判定とＳ２１０の処理とを繰り返すこととなるが、Ｓ２００では、１回目では、図３の受信割り込み処理が前回終了してから、上記書換可能不揮発性メモリに記憶されている検出通信周期が経過するまで待ち、その検出通信周期が経過すると、Ｓ２１０に進む。そして、Ｓ２１０にて、図３のＳ３５０と同じ通信データの取り込み処理と更新有無チェック処理を行い、その後、Ｓ２００に戻る。そして、Ｓ２００では、２回目以降では、Ｓ２１０の処理が前回終了してから、上記書換可能不揮発性メモリに記憶されている検出通信周期が経過するまで待ち、その検出通信周期が経過すると、Ｓ２１０に進む。
【００６３】
このため、Ｓ１５０で図３の受信割り込み処理の実行が禁止された後は、その受信割り込み処理が最後に実行された時点から、検出通信周期が経過する毎に、図２のＳ２１０にて、通信データの取り込み処理と更新有無チェック処理とが実施されることとなる。
【００６４】
また、上記Ｓ１８０にて今回の検出通信周期が有効でないと判定した場合には、Ｓ２２０に移行して、上記書換可能不揮発性メモリに過去の検出通信周期（即ち、前回以前のＳ１７０で求められてＳ１８０で有効と判定された最新の検出通信周期）が記憶されているか否かを判定する。そして、過去の検出通信周期が記憶されていた場合には、Ｓ２３０にて、その過去の検出通信周期がＳ２００の判定で用いられるように設定し、その後、Ｓ２００へ進む。よって、この場合には、今回求めた検出通信周期は用いられず、過去に求めて有効と判定した検出通信周期毎に、通信データの取り込み処理と更新有無チェック処理とが実施されることとなる。
【００６５】
一方、Ｓ２２０にて、上記書換可能不揮発性メモリに過去の検出通信周期が記憶されていないと判定した場合には、Ｓ２４０に移行して、所定のエラー処理を行う。尚、エラー処理としては、異常の発生を示す異常コードを記憶したり、警告灯を点灯させて車両運転者に報知する処理等がある。
【００６６】
次に、マイコン１１は、アプリケーションプログラム１７を実行することで、図４の処理を行う。尚、図４の処理は、例えば一定時間毎に実行される。
そして、マイコン１１が図４の処理を開始すると、まずＳ４１０にて、受信データ格納領域１６内の更新フラグを読み出して、その更新フラグが１であるか否かを判定する。そして、受信データ格納領域１６内の更新フラグが１でなければ（セットされていなければ）、そのまま当該アプリケーションプログラム１７の処理を終了する。
【００６７】
また、受信データ格納領域１６内の更新フラグが１であると判定した場合には、Ｓ４２０に進んで、その受信データ格納領域１６から通信データを読み出し、続くＳ４３０にて、その読み出した通信データを用いて制御対象を制御するための制御処理を行う。そして、その後、当該アプリケーションプログラム１７の処理を終了する。
【００６８】
以上のようなＥＣＵ１においては、図５に示すように、電源の投入により起動してから周期測定時間が経過するまでの間は、ＥＣＵ５からの通信データを受信する毎に図３の受信割り込み処理が実行され、その受信割り込み処理により、通信データの取り込み処理と更新有無チェック処理とが実施されると共に、ＥＣＵ５との通信周期が測定される。尚、図５は、通信相手であるＥＣＵ５のデータ送信周期が１６ｍｓに設定されている場合を例示している。
【００６９】
そして、起動時から周期測定時間が経過すると、図３の受信割り込み処理で算出された通信間隔の平均値に基づいて、通信周期の検出値である検出通信周期が決定され（Ｓ１６０，Ｓ１７０）、以後は、受信割り込み処理が最後に実行された時点から、その検出通信周期が経過する毎に、通信データの取り込み処理と更新有無チェック処理とが実施される（Ｓ２００，Ｓ２１０）。
【００７０】
また、アプリケーションプログラム１７の処理では、通信データの更新有無チェック処理（図３のＳ３５０又は図２のＳ２１０）によって受信データ格納領域１６に書き込まれる更新フラグを参照し、その受信データ格納領域１６内の更新フラグがセットされていれば、その更新フラグに対応する通信データを用いて制御処理を行う。
【００７１】
このような本実施形態のＥＣＵ１によれば、他のＥＣＵ５との通信周期を自動的に検出し、その検出した通信周期で、通信データの更新有無チェック処理、即ち、通信コントローラ１３の受信バッファ１４内の通信データが更新されたか否かをチェックし、更新されていることを検知したならば、受信データ格納領域１６内の更新フラグを１にセットする、という内容の処理を行うようになっている。
【００７２】
よって、例えばＥＣＵ５のプログラムが書き換えられて、そのＥＣＵ５との通信周期が変更されても、その変更後の通信周期で通信データの更新有無チェック処理を行うことができ、その結果、アプリケーションプログラム１７の処理で参照される受信データ格納領域１６内の更新フラグ（更新情報に相当）を、通信データが更新されたか否かを正確に示すものにすることができる。
【００７３】
このため、ＥＣＵ５との通信周期が変更されても、通信データを用いるアプリケーションプログラム１７の処理を、適切に実行することができる。つまり、通信データが更新されたのに、その通信データを用いた処理が実行されなかったり、通信データが更新されていないのに、その通信データを用いた処理が無駄に実行されてしまったりする可能性を低くすることができる。
【００７４】
また、本実施形態のＥＣＵ１では、動作を開始してから周期測定時間が経過するまでの間だけ、通信周期を測定するようになっているため、通信周期を検出するための処理負荷を少なくすることができる。なぜなら、通信相手であるＥＣＵ５のプログラムが書き換えられた場合には、そのＥＣＵ５と当該ＥＣＵ１とが再起動されると考えられ、起動時にだけ通信周期を検出するように構成すれば、ＥＣＵ５のプログラム書き換えに伴う通信周期の変更に対応できるからである。
【００７５】
また、本実施形態のＥＣＵ１では、通信周期の測定値の平均値から、通信周期の最終的な検出値を決定するようになっているため、通信周期の測定ばらつきを抑制して、検出精度を向上させることができる。
【００７６】
更に、図２におけるＳ１７０の処理により、通信周期の測定値の平均値に基づいて、複数通りの通信周期の候補値のうちの何れかを、通信周期の検出値として選択するようになっているため、その検出値を、通信周期の候補値の何れかに確実に合わせることができ、通信周期の検出精度を一層向上させることができる。
【００７７】
また、本実施形態のＥＣＵ１では、通信周期を正常に検出することができたか否かを、図２おけるＳ１８０の処理で判定し、そのＳ１８０で“ＮＯ”と否定判定した場合には、過去に検出した通信周期毎に、通信データの更新有無チェック処理を行うようにしている。このため、通信エラー等によって通信周期を正常に検出することができなかった場合でも、過去に検出した通信周期毎に通信データの更新有無チェック処理を行うことができ、動作の確実性を向上させることができる。
【００７８】
尚、本実施形態では、通信コントローラ１３が受信手段に相当し、図２のＳ１１０〜Ｓ１７０と図３のＳ３１０〜Ｓ３４０が周期検出手段に相当し、図２のＳ２００，Ｓ２１０が更新チェック手段に相当している。また、図２のＳ１８０が良否判定手段に相当している。
【００７９】
次に、第２実施形態のＥＣＵについて説明する。尚、第２実施形態のＥＣＵは、第１実施形態のＥＣＵ１とハードウェア構成は同じであるため、以下の説明において、符号は第１実施形態と同じものを用いる。
【００８０】
第２実施形態のＥＣＵ１は、第１実施形態と比較すると、マイコン１１が図２の処理に代えて、図７の処理を実行する点と、その図７の処理と並行して、図６のプログラム書換検出処理を一定時間毎に実行する点とが異なっている。尚、図６の処理も、通信データ取り込み用プログラム１５によるものである。
【００８１】
更に、本ＥＣＵ１が搭載される車両の製造時において、マイコン１１の書換可能不揮発性メモリには、その時点におけるＥＣＵ５との通信周期が、検出通信周期のデフォルト値として記憶されている。
【００８２】
そして、本第２実施形態のＥＣＵ１において、図６のプログラム書換検出処理では、まずＳ５１０にて、通信相手であるＥＣＵ５のプログラムが書き換えられたか否かを判定する。具体的には、通信線３上に流れる通信データをモニタして、書換装置２１からＥＣＵ５へプログラムの書き換え処理を終了させるための書換終了コマンドが送信されたことを検知したならば、ＥＣＵ５のプログラムが書き換えられたと判定する。
【００８３】
そして、ＥＣＵ５のプログラムが書き換えられたと判定した場合には、次のＳ５２０にて、フラグであるプログラム書換情報を１にセットし、その後、当該プログラム書換検出処理を終了する。尚、プログラム書換情報は、ＥＣＵ１への動作電源が遮断されても継続して保存されるように、書換可能不揮発性メモリに記憶される。
【００８４】
また、上記Ｓ５１０にて、ＥＣＵ５のプログラムが書き換えられていないと判定した場合には、そのまま当該プログラム書換検出処理を終了する。
一方、図７の処理は、図２の処理と比較すると、Ｓ１０１，Ｓ１０３，Ｓ１８３の処理が追加されている。
【００８５】
即ち、マイコン１１が起動して図７の処理を開始すると、まずＳ１０１にて、プログラム書換情報が１にセットされているか否かを判定する。そして、プログラム書換情報が１にセットされていないと判定した場合には、そのままＳ２２０へ移行する。よって、この場合には、書換可能不揮発性メモリに記憶されている上記デフォルト値の検出通信周期か、過去に求めて有効と判定した検出通信周期毎に、通信データの取り込み処理と更新有無チェック処理とが実施される。
【００８６】
また、Ｓ１０１にて、プログラム書換情報が１にセットされていると判定した場合には、Ｓ１０３に進み、そのプログラム書換情報を０にクリアし、その後、Ｓ１１０以降の処理を行う。
【００８７】
このため、本第２実施形態では、ＥＣＵ５のプログラムが書き換えられた後の最初の起動時にのみ、ＥＣＵ５との通信周期を新たに検出する処理（Ｓ１１０〜Ｓ１７０及び図３）が行われることとなる。
【００８８】
また、図７の処理では、Ｓ１８０にて、今回求めた検出通信周期が有効であると判定した場合には、Ｓ１８３に進み、プログラム書換情報が１にセットされているか否かを再び判定する。つまり、通信周期を検出している間に、ＥＣＵ５のプログラムが書き換えられていないかを再度確認する。
【００８９】
そして、このＳ１８３にて、プログラム書換情報が１にセットされていると判定したならば、Ｓ１０３に戻り、再びＥＣＵ５との通信周期を検出する処理を行う。また、Ｓ１８３にて、プログラム書換情報が１にセットされていないと判定したならば、そのままＳ１９０に進む。
【００９０】
このような第２実施形態のＥＣＵ１によれば、通信相手のＥＣＵ５で実行されるプログラムが書き換えられた後の最初の起動時にのみ、ＥＣＵ５との通信周期を検出する処理を行うため、ＥＣＵ５との通信周期が変わった可能性がある場合にのみ、通信周期を検出する処理を行うこととなる。よって、その処理を行う機会を最小限にしつつ、プログラムの書き換えに伴う通信周期の変更に対応することができる。尚、本第２実施形態では、図６の処理が書換検出手段に相当している。
【００９１】
次に、第３実施形態のＥＣＵについて説明する。尚、第３実施形態のＥＣＵも、第１実施形態のＥＣＵ１とハードウェア構成は同じであるため、以下の説明において、符号は第１実施形態と同じものを用いる。
【００９２】
第３実施形態のＥＣＵ１は、第１実施形態と比較すると、マイコン１１が図２の処理に代えて、図８の処理を実行する点が異なっている。更に、第２実施形態と同様に、本ＥＣＵ１が搭載される車両の製造時において、マイコン１１の書換可能不揮発性メモリには、その時点におけるＥＣＵ５との通信周期が、検出通信周期のデフォルト値として記憶されている。
【００９３】
そして、図８の処理は、図２の処理と比較すると、Ｓ１０５の処理が追加されている。
即ち、マイコン１１が起動して図８の処理を開始すると、まずＳ１０５にて、車載バッテリの着脱があったか否かを判定する。具体的に説明すると、マイコン１１は、車載バッテリが車両に接続されていれば給電され続けるバックアップＲＡＭを備えており、そのバックアップＲＡＭ内のデータが正常か否かを調べて、データが正常でなければ、車載バッテリの着脱があった（車載バッテリが外された）と判定する。
【００９４】
そして、このＳ１０５にて、車載バッテリの着脱があったと判定した場合には、Ｓ１１０に進んで、そのＳ１１０以降の処理を行う。
また、Ｓ１０５にて、車載バッテリの着脱がなかったと判定した場合には、そのままＳ２２０へ移行する。よって、この場合には、書換可能不揮発性メモリに記憶されている上記デフォルト値の検出通信周期か、過去に求めて有効と判定した検出通信周期毎に、通信データの取り込み処理と更新有無チェック処理とが実施される。
【００９５】
つまり、第３実施形態のＥＣＵ１では、車載バッテリが外されて取り付けられた後の最初の起動時にのみ、ＥＣＵ５との通信周期を検出する処理を行うようになっている。
このため、通信相手のＥＣＵ５が仕様の異なるものに交換されたことによる通信周期の変更に対して、通信周期の検出処理を行う機会を最小限にしつつ対応することができる。なぜなら、一般に、車載装置が交換される場合には、車載バッテリが取り外されるため、本第３実施形態のようにすれば、ＥＣＵ５の交換によって通信周期が変わる可能性がある場合にのみ、通信周期の検出処理を行うこととなるからである。尚、本第３実施形態では、図８のＳ１０５がバッテリ着脱判定手段に相当している。
【００９６】
以上、本発明の一実施形態について説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々なる態様で実施し得ることは勿論である。
【００９７】
例えば、上記実施形態のＥＣＵ１では、送信側のＥＣＵ５が、通信データと共に、その通信データを更新したか否かを示す更新フラグを送信するようになっているため、その更新フラグに基づいて、ＥＣＵ５から受信した通信データが更新されたか否かを判断するようにしていたが、送信側からの通信データに更新フラグが付属されないのであれば、前述したＳ２１０とＳ３５０の処理は、例えば下記（１）又は（２）のように変更することができる。
【００９８】
（１）まず、通信データの更新有無チェック処理として、通信データの取り込み処理よりも先に、下記のような処理を行う。
受信バッファ１４内の通信データと、受信データ格納領域１６内の通信データ（即ち、前回の取り込み処理で受信バッファ１４からコピーした通信データ）とを比較し、両通信データが異なっていれば、受信バッファ１４内の通信データが更新されたとして、受信データ格納領域１６内の更新フラグを１にセットし、上記両通信データが同じであれば、通信データが更新されていないとして、受信データ格納領域１６内の更新フラグを０にする。
【００９９】
そして、このような更新有無チェック処理の後、通信データの取り込み処理を行う。つまり、受信バッファ１４内の通信データを受信データ格納領域１６にコピーする。
こうした（１）の処理によれば、ＥＣＵ５から前回とは異なる値の通信データを受信すると、通信データが更新されたと判定することとなる。
【０１００】
（２）通信データの取り込み処理として、受信バッファ１４内の通信データを受信データ格納領域１６にコピーしたら、受信バッファ１４内の通信データを０にクリアする処理を行う。
【０１０１】
そして、このような取り込み処理の前に、通信データの更新有無チェック処理として、下記のような処理を行う。
受信バッファ１４内に何らかのデータがあるか否かを判定し、データがあれば、受信バッファ１４内の通信データが更新されたとして、受信データ格納領域１６内の更新フラグを１にセットし、データがなければ、通信データが更新されていないとして、受信データ格納領域１６内の更新フラグを０にする。
【０１０２】
こうした（２）の処理によれば、ＥＣＵ５から通信データを新たに受信すると、通信データが更新されたと判定することとなる。
一方、前述した検出通信周期やプログラム書換情報は、常時給電されるバックアップＲＡＭに記憶されるようにしても良い。
【０１０３】
また、検出通信周期が通信最速周期の倍数からずれる可能性はあるが、Ｓ１７０では、Ｓ１６０で算出した受信間隔の平均値を、そのまま検出通信周期とするように構成することも可能である。
【図面の簡単な説明】
【０１０４】
【図１】実施形態のＥＣＵ（電子制御装置）の構成を表す構成図である。
【図２】第１実施形態のマイコンが起動時から実行する処理を表すフローチャートである。
【図３】受信割り込み処理を表すフローチャートである。
【図４】アプリケーションプログラムの処理を表すフローチャートである。
【図５】第１実施形態の作用を表すタイムチャートである。
【図６】第２実施形態のマイコンが実行するプログラム書換検出処理を表すフローチャートである。
【図７】第２実施形態のマイコンが起動時から実行する処理を表すフローチャートである。
【図８】第３実施形態のマイコンが起動時から実行する処理を表すフローチャートである。
【符号の説明】
【０１０５】
１，５…ＥＣＵ（電子制御装置）、３…通信線、１１…マイコン、１３…通信コントローラ、１４…受信バッファ、１５…通信データ取り込み用プログラム、１６…受信データ格納領域、１７…アプリケーションプログラム、２１…書換装置
【図１】
2008276306.tif 000003
【図２】
2008276306.tif 000004
【図３】
2008276306.tif 000005
【図４】
2008276306.tif 000006
【図５】
2008276306.tif 000007
【図６】
2008276306.tif 000008
【図７】
2008276306.tif 000009
【図８】
2008276306.tif 000010