JP3663950B2 - 自動車用電子制御装置 - Google Patents
自動車用電子制御装置 Download PDFInfo
- Publication number
- JP3663950B2 JP3663950B2 JP01200299A JP1200299A JP3663950B2 JP 3663950 B2 JP3663950 B2 JP 3663950B2 JP 01200299 A JP01200299 A JP 01200299A JP 1200299 A JP1200299 A JP 1200299A JP 3663950 B2 JP3663950 B2 JP 3663950B2
- Authority
- JP
- Japan
- Prior art keywords
- message
- timer
- processing
- unit
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
【発明の属する技術分野】
本発明は、オブジェクト指向のプログラムに従って制御対象を制御する電子制御装置に関する。
【0002】
【従来の技術】
従来より、例えば車両のエンジンを制御する電子制御装置においては、マイクロコンピュータ(詳しくは、マイクロコンピュータのCPU)によって実行されるエンジン制御用のプログラムを、制御の種類毎に作成するようにしていた。例えば燃料噴射制御に関しては、エンジンの回転に同期した通常の噴射制御,エンジンの回転とは非同期の噴射制御,及び高回転時の燃料カット制御といった具合に、制御の種類毎(以下、制御毎という)にプログラムを夫々作成していた。
【0003】
しかしながら、制御毎にプログラムを作成したのでは、各プログラムに共通部分が多く含まれることとなるため、プログラムを格納するメモリ資源やプログラムの開発時間に無駄が生じてしまう。例えば、上記燃料噴射制御の例では、各制御毎のプログラム中に、インジェクタ(燃料噴射弁)を駆動するための処理部分が重複して設けられることとなる。また、各プログラムに共通部分が多いため、その共通部分に関わる制御仕様を変更しなければならない場合には、各プログラムの中から仕様変更部分に関係するプログラムを捜し出して修正する必要があり、プログラム開発に多大な時間を要してしまうこととなっていた。
【0004】
そこで、本発明者は、この種の電子制御装置においても、パーソナルコンピュータなどの場合と同様に、制御プログラムをオブジェクト指向によって作成する(プログラミングする)ことを試みている。
オブジェクト指向とは、人間が行動するときの如く操作対象に注目して仕事を進めるという考え方を、コンピュータシステムにモデル化したものであり、このオブジェクト指向のプログラミングでは、プログラムの処理を、オブジェクトという単位で考える。
【0005】
即ち、オブジェクトは、データとそのデータを処理する手続きである“メソッド”と呼ばれるプログラムとを、一まとめにしたソフトウェアモジュールであり、オブジェクト指向のプログラミングでは、制御プログラムの全機能を部品毎などの単位機能毎に細分化して、その単位機能毎にオブジェクトを用意する。そして、オブジェクト指向のプログラミングでは、オブジェクト間でメッセージのやり取りを行う、所謂オブジェクト間メッセージ通信の考え方を利用して、各オブジェクトが結合される。
【0006】
ここで、エンジンのアイドル回転数を制御するためのプログラムを、オブジェクト指向に基づき作成した場合の一例について、図29を用いて説明する。
尚、図29は、エンジンのアイドル回転数制御に関する機能を細分してオブジェクト化し、これに各オブジェクト間でのメッセージのやり取りを加えて示したメッセージシーケンスチャートである。そして、このメッセージシーケンスチャートでは、オブジェクトを上下方向の線で示し、そのオブジェクト間でのメッセージのやり取りを左右の矢印で示している。また、オブジェクトを示す線の上にある長方形の枠は、そのオブジェクトの処理を表している。
【0007】
一方、本明細書において、「オブジェクトが…する。」や「オブジェクトは…する。」といったオブジェクトを主語とした動作表現は、実際には、マイクロコンピュータのCPUがオブジェクトのメソッドに従って動作する(換言すれば、CPUがオブジェクトのメソッドを実行する)ことで実現される機能手段(即ち、本発明における単位処理手段)が、上記「…」の動作を行うことを示している。また、「オブジェクトが動作する」とは、マイクロコンピュータのCPUが、そのオブジェクトのメソッドを実行することを示している。
【0008】
まず最初に、図29に示した各オブジェクトの機能について説明する。
ISCオブジェクトは、エンジンの水温値などに基づき、エンジン回転数を最適なアイドル回転数にするための目標スロットル開度を算出するオブジェクトであり、水温センサオブジェクトは、エンジンの水温を検出する水温センサからのアナログ信号をAD変換したデジタル値を、水温値に変換するオブジェクトである。そして、AD変換器オブジェクトは、水温センサからのアナログ信号をデジタル値に変換(AD変換)するためのAD変換器を制御するオブジェクトであり、スロットルコントローラオブジェクトは、エンジンのスロットル弁を、ISCオブジェクトによって算出された目標スロットル開度となるように制御するオブジェクトである。
【0009】
次に、図29の各オブジェクトによって実現される処理の内容について説明する。
まず、アイドル回転数制御タイミングになるとISCオブジェクトが動作を開始する(つまり、CPUがISCオブジェクトのメソッドの実行を開始する)。そして、図29の▲1▼に示すように、ISCオブジェクトが、水温センサオブジェクトに水温取得要求のメッセージを送る。
【0010】
すると、水温センサオブジェクトが動作して、図29の▲2▼に示すように、AD変換器オブジェクトに水温AD値取得要求のメッセージを送る。そして、その水温AD値取得要求のメッセージに伴い、AD変換器オブジェクトが動作して、水温センサからのアナログ信号をデジタル信号に変換する演算を行う。
【0011】
AD変換器オブジェクトは、上記演算を終了した後、図29の▲3▼に示すように、水温センサオブジェクトに水温AD値取得応答のメッセージ(即ち、水温センサのデジタル変換が終了したというメッセージ)を送る。
すると、水温センサオブジェクトが、AD変換器オブジェクトの演算結果に基づいて水温値を算出し、その算出後、図29の▲4▼に示すように、ISCオブジェクトに水温取得応答のメッセージ(即ち、水温値の算出が終了したというメッセージ)を送る。
【0012】
そして、上記水温取得応答のメッセージに伴い、ISCオブジェクトが、上記算出された水温値に基づいて目標スロットル開度を算出し、その算出後、ISCオブジェクトは、図29の▲5▼に示すように、スロットルコントローラオブジェクトにスロットル設定要求のメッセージ(即ち、目標スロットル開度を算出したことを示すメッセージ)を送る。
【0013】
すると、スロットルコントローラオブジェクトが動作して、エンジンのスロットル弁を、上記算出された目標スロットル開度となるように制御し、これにより、エンジン回転数が最適なアイドル回転数に制御される。
このように、オブジェクト指向のプログラムでは、各オブジェクトが何れかのオブジェクトに対し処理依頼としてのメッセージを出すことにより、そのメッセージの出力先であるオブジェクトが動作する、といった仮想的なオブジェクト間メッセージ通信により、各オブジェクトの処理順序が決定される。
【0014】
そして、オブジェクト指向によってプログラムを作成すれば、プログラムの共通部分をまとめ易くなり、制御毎にプログラムを作成する場合と比較して、制御仕様の変更時にもプログラムの修正が非常に容易となる。
【0015】
【発明が解決しようとする課題】
しかしながら、この種の電子制御装置において、その制御プログラムをオブジェクト指向で作成しようとしても、各オブジェクト間でのメッセージのやり取り(即ち、オブジェクト間メッセージ通信)を実現させるための有効な手段がなかった。
【0016】
尚、従来より知られているフラグチェックの手法と関数コールの手法とを、オブジェクト間メッセージ通信に適用することも考えられるが、以下に説明するように、両手法共に大きな欠点がある。
まず、フラグを用いた手法では、図30に示すように、無限ループのメインルーチンを設け、そのメインルーチンの中で、各オブジェクトに対応するフラグが立っているか否かを判定する。そして、フラグが立っていると判定した場合には、そのフラグに対応するオブジェクトの処理(つまり、そのオブジェクトのメソッド)を実行し、フラグが立っていないと判定した場合には、そのフラグに対応するオブジェクトの処理を飛び越えて、次のフラグの判定を行うようにする。
【0017】
具体的には、図30に例示するように、各オブジェクトA,B,Cに夫々対応するフラグFA,FB,FCが立っていない場合には、メインルーチンのステップ(以下、単に「S」と記す)10〜S30の全てで否定判定される(S10〜S30:NO)。そして、例えばオブジェクトAの処理が起動されて、その処理中でオブジェクトBに対応するフラグFBが立てられると(FB←1)、オブジェクトAの処理が終了して、その後メインルーチンのS30でフラグFBが立っていると判定されると(S30:YES)、オブジェクトBの処理が実行される。また、オブジェクトBの処理中でオブジェクトCに対応するフラグFCが立てられると(FC←1)、オブジェクトBの処理が終了して、その後メインルーチンのS20でフラグFCが立っていると判定されると(S20:YES)、オブジェクトCの処理が実行される。
【0018】
つまり、この手法では、各オブジェクトの処理中にフラグを立てることで、何れかのオブジェクトに対する処理依頼としてのメッセージが出されることとなる。
しかしながら、フラグを用いる上記の手法では、フラグの監視順序がプログラムの設計時に決ってしまい、1つのオブジェクトの処理を行うために別のオブジェクトに対応するフラグを判定しなければならず、無駄な処理が多くなる。例えば、図30の例では、オブジェクトAの次にオブジェクトBの処理を行う場合に、メインルーチンのS10〜S30までの処理を余分に行う必要が生じる。尚、図30における点線は、オブジェクトA〜C以外の他のオブジェクトに対応するフラグを判定するための処理が、更に存在していることを示している。
【0019】
つまり、フラグを用いた手法の場合には、各オブジェクトの処理を、イベントドリブン(即ち、処理要求が発生・終了したことにより動作が引き起こされること)で行うことができず、リアルタイム性に欠けてしまう。
次に、関数コールを用いた手法では、図31に示すように、オブジェクトのメソッド内に、次に処理したいオブジェクトのメソッドをコールする命令を、書き込んでおくようにする。そして、オブジェクト間のメッセージ通信を次々に行いたい場合には、コールされるオブジェクトのメソッド内に、他のオブジェクトのメソッドをコールする命令を予め書き込んでおく。
【0020】
具体的には、図31に例示するように、オブジェクトAのメソッドの実行中に、オブジェクトBのメソッドをコールし、更に、オブジェクトBのメソッドの実行中に、オブジェクトCのメソッドをコールする。
つまり、この手法では、関数コールにより、他のオブジェクトに対する処理依頼としてのメッセージが出されることとなる。
【0021】
しかしながら、関数コールを用いる上記の手法では、コールする側のメソッドの実行を一時中断し、コールされる側のメソッドを実行した後で、中断していたメソッドの実行を再開することとなる。よって、中断していたメソッドの実行を再開するためには、中断直前のマイクロコンピュータの内部状態(即ち、プログラムカウンタや各種レジスタの値)を、RAMのスタック領域に記憶しておかなければならず、RAMの記憶領域を多く消費してしまう。特に、ネスティング(即ち、多重の層に形成されるコールの組み合せ)の数が多くなればなるほど、消費されるRAMの記憶領域が顕著に多くなってしまい、電子制御装置のようにメモリ資源が限られた装置では限界がある。
【0022】
そこで、本発明者は、上記問題に鑑みて、各オブジェクトが出した何れかのオブジェクトへのメッセージを記憶する記憶手段と、オブジェクトの処理が終了した時点で、上記記憶手段に記憶されているメッセージのうち最初に記憶されたメッセージを読み出し、そのメッセージの出力先であるオブジェクトの処理を開始させると共に、その読み出したメッセージを上記記憶手段から消去する起動制御手段と、を設けることを新規に考えた。
【0023】
そして、このような記憶手段及び起動制御手段を設けた電子制御装置によれば、各オブジェクトが何れかのオブジェクトにメッセージを出すと、そのメッセージが上記記憶手段に一旦記憶され、そのメッセージを出したオブジェクトの処理が終了すると、直ちに、上記記憶されたメッセージの出力先であるオブジェクトの処理が行われることとなる。
【0024】
よって、この新規考案の電子制御装置によれば、オブジェクト間メッセージ通信にフラグチェックの手法を適用した場合の如くリアルタイム性に欠けることがなく、各オブジェクトの処理(即ち、各オブジェクトのメソッドの実行)をイベントドリブンで行うことができ、しかも、オブジェクト間メッセージ通信に関数コールの手法を適用した場合のように、実行中のオブジェクトの処理を中断して他のオブジェクトの処理を行う、といったものではないため、各オブジェクトの処理を、多くのメモリ資源を消費することなく行うことができる。つまり、この電子制御装置では、メッセージのみを記憶すれば良く、関数コールの手法を適用した場合と比較して、記憶すべき情報量が格段に少なくて済むのである。
【0025】
但し、上記新規考案の電子制御装置においても、未だ改良の余地があり、ある時点から所定時間が経過した後に特定のオブジェクトの処理を開始する、といった時間待ち処理を、容易に且つ効率的に実現することができなかった。また更に、こうした時間待ち処理を応用したタイムアウト処理(即ち、ある時点から所定時間が経過するまでに、監視対象の処理が行われないと、特定のオブジェクトの処理を開始する、といった時間監視を伴う処理)を、容易に実現することもできなかった。
【0026】
例えば、上記時間待ち処理を実現しようとした場合、単に所定時間だけを消費し且つ処理の最後に上記特定のオブジェクトへメッセージを出す時間消費用のオブジェクトを用意して、何れかのオブジェクトから上記時間消費用のオブジェクトへメッセージを出すようにすれば、その時間消費用オブジェクトの処理が開始されて、該オブジェクトでの時間消費が終了すると、上記特定のオブジェクトの処理が開始されることとなる。
【0027】
しかし、このようにしたのでは、時間消費用オブジェクトで時間を消費している間、他の処理を行うことができず、マイクロコンピュータを時間的に効率良く利用することができない。その上、複数の時間待ち処理を実施することもできない。
【0028】
また、タイムアウト処理を実現しようとした場合には、ある時点から所定時間が経過するまでに監視対象の処理によって計時動作がキャンセルされないと、実行対象を特定のオブジェクトのメソッドに切り替える、といったタイマ割り込み機構のような特別な手段が別途必要になってしまう。
【0029】
本発明は、上記のような技術背景からなされたものであり、制御用のプログラムを単位機能毎に細分化した各オブジェクトの処理を、リアルタイムに且つ多くのメモリ資源を消費することなく行うことができると共に、時間待ち処理をも容易に実現することのできる電子制御装置を提供することを目的としている。
【0030】
【課題を解決するための手段、及び発明の効果】
まず、請求項1に記載の本発明の自動車用電子制御装置(以下単に、電子制御装置という)は、制御用のプログラムを単位機能毎に細分化したオブジェクトのメソッドに従って、前記各単位機能を実現するための処理を夫々行う複数の単位処理手段を備えている。
【0031】
尚、単位処理手段とは、前述したように、マイクロコンピュータのCPUがオブジェクトのメソッドに従って動作する(換言すれば、CPUがオブジェクトのメソッドを実行する)ことで実現される機能手段である。つまり、マイクロコンピュータのCPUがオブジェクトのメソッドを実行することにより、そのオブジェクトに割り振られた機能を実現するための処理が行われる。
また特に、本発明の電子制御装置では、前記細分化したオブジェクトのメソッドを1つのCPUがそれぞれ実行することで、前記複数の単位処理手段が実現される。
【0032】
そして、本発明の電子制御装置では、その前提として、前記1つのCPUが複数の単位処理手段のうちの何れかを実現するメソッドの実行を開始すると、そのメソッドの処理が全て終了するまでは他の単位処理手段を実現するメソッドを実行しないようになっていることにより、複数の単位処理手段の何れかが択一的に処理動作を行うようになっており、更に、各単位処理手段が、その処理動作中に何れかの単位処理手段を出力先として示す処理依頼としてのメッセージを出すことにより、そのメッセージの出力先である単位処理手段が処理を行う。
【0033】
そして更に、各単位処理手段が出すメッセージとしては、そのメッセージの出力先である単位処理手段が処理動作を開始するまでの遅延時間を示すカウント値が含まれていない第1種メッセージと、前記カウント値が含まれた第2種メッセージとがある。
【0034】
ここで、本発明の電子制御装置は、1つ目の特徴として、単位処理手段が出した第1種メッセージを複数の単位処理手段に共通の第1のメッセージ記憶手段に記憶する第1の記憶制御手段と、起動制御手段とを備えている。そして、起動制御手段は、複数の単位処理手段の何れかが処理動作を終了した時点で、第1のメッセージ記憶手段に記憶されている第1種メッセージのうち最初に記憶された第1種メッセージを読み出し、その読み出した第1種メッセージの出力先である単位処理手段に処理を開始させると共に、その読み出した第1種メッセージを第1のメッセージ記憶手段から消去する。
【0035】
よって、何れかの単位処理手段が処理動作を開始し、その処理動作の途中で他の単位処理手段へ第1種メッセージを出すと、その第1種メッセージは、第1の記憶制御手段により、第1のメッセージ記憶手段に記憶される。そして、第1種メッセージを出した単位処理手段の処理動作が終了すると、その時点から、上記記憶された第1種メッセージの出力先である単位処理手段の処理が開始されることとなる。このため、オブジェクトを主体として見れば、「発明が解決しようとする課題」の欄で述べたように、処理動作中のオブジェクトが何れかのオブジェクトに第1種メッセージを出すと、その第1種メッセージが第1のメッセージ記憶手段に一旦記憶され、その第1種メッセージを出したオブジェクトの処理が終了すると、直ちに、上記記憶された第1種メッセージの出力先であるオブジェクトの処理が行われることとなる。
【0036】
また例えば、何れかの単位処理手段が、その処理動作中に複数の単位処理手段の各々へ第1種メッセージを順次出した場合には、その各第1種メッセージが第1の記憶制御手段により第1のメッセージ記憶手段に順次記憶される。そして、第1種メッセージを出した単位処理手段の処理動作が終了すると、上記記憶された複数の第1種メッセージの出力先である各単位処理手段の処理が、第1種メッセージの記憶順(出力順)に行われることとなる。
【0037】
このように、本発明の電子制御装置では、第1のメッセージ記憶手段、第1の記憶制御手段、及び起動制御手段を備えることにより、各オブジェクトの処理(各オブジェクトのメソッドの実行)を、リアルタイムに且つ多くのメモリ資源を消費することなく行うことができる。
【0038】
つまり、オブジェクト間メッセージ通信にフラグチェックの手法を適用した場合の如くリアルタイム性に欠けることなく、各オブジェクトの処理をイベントドリブンで行うことができ、しかも、オブジェクト間メッセージ通信に関数コールの手法を適用した場合のように、実行中のオブジェクトの処理を中断して他のオブジェクトの処理を行う、といったものではないため、各オブジェクトの処理を、多くのメモリ資源を消費することなく行うことができる。即ち、関数コールの手法を適用した場合には、前述したように、マイクロコンピュータの内部状態(プログラムカウンタや各種レジスタの値)を記憶しなければならないが、本発明によれば、メッセージのみを記憶すれば良く、記憶すべき情報量が格段に少なくて済むのである。
【0039】
また、本発明の電子制御装置によれば、複数系統の処理を交互に効率良く行うこともできる。
例えば、何れかの単位処理手段が、その処理動作の途中で、他の単位処理手段X1に対して第1種メッセージmx1を出し、更に続いて、処理系統の異なる他の単位処理手段Y1に対し第1種メッセージmy1を出したとする。
【0040】
すると、その2つの第1種メッセージmx1,my1は、その出力順(つまり、mx1→my1の順)に第1のメッセージ記憶手段に記憶される。
そして、上記第1種メッセージmx1,my1を出した単位処理手段の処理動作が終了すると、その時点で、第1のメッセージ記憶手段に記憶されている第1種メッセージmx1,my1のうち、最初に記憶された方の第1種メッセージmx1が読み出されて、その第1種メッセージmx1の出力先である単位処理手段X1の処理が開始されると共に、その読み出された第1種メッセージmx1が第1のメッセージ記憶手段から消去される。
【0041】
ここで、単位処理手段X1が、その処理動作の途中で他の単位処理手段X2に第1種メッセージmx2を出すと、その第1種メッセージmx2が第1のメッセージ記憶手段に記憶されるため、第1のメッセージ記憶手段には、2つの第1種メッセージmy1,mx2が、my1→mx2の順で記憶されていることとなる。
【0042】
よって、単位処理手段X1の処理動作が終了すると、その時点で、第1のメッセージ記憶手段に記憶されている第1種メッセージmy1,mx2のうち、最初に記憶された方の第1種メッセージmy1が読み出されて、その第1種メッセージmy1の出力先である単位処理手段Y1の処理が開始されると共に、その読み出された第1種メッセージmy1が第1のメッセージ記憶手段から消去される。
【0043】
そして、単位処理手段Y1が、その処理動作の途中で他の単位処理手段Y2に第1種メッセージmy2を出すと、その第1種メッセージmy2が第1のメッセージ記憶手段に記憶され、第1のメッセージ記憶手段には、2つのメッセージmx2,my2が、mx2→my2の順で記憶されることとなる。
【0044】
その後、単位処理手段Y1の処理動作が終了すると、その時点で、第1のメッセージ記憶手段に記憶されている第1種メッセージmx2,my2のうち、最初に記憶された方の第1種メッセージmx2が読み出されて、その第1種メッセージmx2の出力先である単位処理手段X2の処理が開始されると共に、その読み出された第1種メッセージmx2がメッセージ記憶手段から消去される。
【0045】
そして更に、単位処理手段X2の処理動作が終了すると、第1のメッセージ記憶手段に記憶されている第1種メッセージmy2が読み出されて、その第1種メッセージmy2の出力先である単位処理手段Y2の処理が開始されると共に、その読み出された第1種メッセージmy2が第1のメッセージ記憶手段から消去される。
【0046】
よって、単位処理手段X1が単位処理手段X2に第1種メッセージを出し、また、単位処理手段Y1が単位処理手段Y2に第1種メッセージを出す、といった2系統の処理を進めて行く場合に、単位処理手段X1,X2の処理系統と単位処理手段Y1,Y2の処理系統とを、X1→Y1→X2→Y2の順に交互に行うことができるようになるのである。
また、こうした動作は、請求項7に記載の電子制御装置によって実現できる。この場合、前述の説明では、第1種メッセージmx1と第1種メッセージmy1を出す単位処理手段が第1の単位処理手段に該当し、単位処理手段X1が第2の単位処理手段に該当し、第1種メッセージmx1が第2の第1種メッセージに該当し、単位処理手段Y1が第3の単位処理手段に該当し、第1種メッセージmy1が第3の第1種メッセージに該当する。
【0047】
ここで特に、本発明の電子制御装置は、2つ目の大きな特徴として、単位処理手段が出した前記第2種メッセージを複数の単位処理手段に共通の第2のメッセージ記憶手段に記憶する第2の記憶制御手段と、遅延制御手段とを備えている。そして、遅延制御手段は、予め定められたイベントが発生する毎に、第2のメッセージ記憶手段に記憶されている第2種メッセージのカウント値を所定値ずつ減らし、該カウント値が予め定められた設定値に達すると、その第2種メッセージを、第1のメッセージ記憶手段に第1種メッセージとして記憶し直す。
【0048】
よって、何れかの単位処理手段が、その処理動作中に自己或いは他の単位処理手段へ第2種メッセージ(処理動作開始までの遅延時間を示すカウント値が含まれたメッセージ)を出すと、その第2種メッセージは、第2の記憶制御手段により、第2のメッセージ記憶手段に記憶される。そして、第2のメッセージ記憶手段に記憶された第2種メッセージのカウント値は、遅延制御手段により、予め定められたイベントが発生する毎に所定値ずつ減らされ、該カウント値が予め定められた設定値になると、その第2種メッセージは、遅延制御手段により、第1のメッセージ記憶手段に第1種メッセージとして記憶し直される。すると、その記憶し直された第1種メッセージは、単位処理手段から出力される本来の第1種メッセージと全く同様に、起動制御手段によって第1のメッセージ記憶手段から読み出されて、そのメッセージの出力先である単位処理手段の処理が開始されることとなる。
【0049】
このため、オブジェクトを主体として見れば、何れかのオブジェクトが第2種メッセージを出すと、その第2種メッセージのカウント値に応じた時間が経過してから(具体的には、カウント値をPとし、それを減らしていく所定値をNm とし、判定する設定値をNS とし、イベントの発生間隔をtとすると、「t×(P−NS )/Nm 」の時間が経過してから)、該第2種メッセージの出力先であるオブジェクトの処理が行われることとなる。
【0050】
尚、所定値Nm 及び設定値NS は任意に設定すれば良いが、例えば、所定値Nm を“1”とし、設定値NS を“0”とすれば、何れかの単位処理手段から第2種メッセージが出されると、その第2種メッセージに含まれていたカウント値の回数だけイベントが発生した後に、該第2種メッセージの出力先である単位処理手段の処理が開始されることとなる。また、遅延制御手段がカウント値の減算に用いる上記イベントとしては、予め定められた時間毎に発生するイベント(例えばクロック信号やマイクロコンピュータ内で所定時間毎に発生するタイマ割り込み信号)が一般的であるが、時間とは直接関係が無い時間に非同期のイベントを採用することもできる。そして、時間に非同期のイベントとしては、例えば、エンジン制御用の電子制御装置の場合、エンジンのクランク軸が所定角度回転する毎に回転センサから出力されるパルス信号などが考えられる。
【0051】
このような本発明の電子制御装置によれば、各オブジェクトの処理を、リアルタイムに且つ多くのメモリ資源を消費することなく行うことできるだけでなく、第2のメッセージ記憶手段、第2の記憶制御手段、及び遅延制御手段を備えているため、ある時点から所定時間が経過した後に特定のオブジェクトの処理(単位処理手段の処理)を開始する、といった時間待ち処理をも容易に実現することができる。つまり、第2種メッセージの出力先の単位処理手段の処理を、その第2種メッセージに含まれるカウント値に応じた時間の経過後に行うことができるからである。
【0052】
しかも、本発明の電子制御装置によれば、第2のメッセージ記憶手段に記憶されている第2種メッセージのカウント値が設定値NS に達するまでの間に、何れかの単位処理手段から第1種メッセージが出された場合には、前述した第1のメッセージ記憶手段、第1の記憶制御手段、及び起動制御手段の作用により、その第1種メッセージの出力先である単位処理手段の処理をイベントドリブンで順次行うことができるため、処理を進めていく上で無駄な時間消費が生じることもない。
【0053】
次に、請求項2に記載の電子制御装置では、前述した請求項1に記載の電子制御装置において、第2のメッセージ記憶手段が、単位処理手段の出した第2種メッセージを複数個記憶可能に構成されている。そして、遅延制御手段は、第2のメッセージ記憶手段に記憶されている全ての第2種メッセージのカウント値を、前記イベントが発生する毎に所定値ずつ減らし、カウント値が前記設定値となった第2種メッセージを、第1のメッセージ記憶手段に第1種メッセージとして記憶し直す。
【0054】
このため、遅延制御手段は、第2のメッセージ記憶手段に複数の第2種メッセージが記憶されている状況下にて、複数の単位処理手段の処理開始を遅らせるための各時間を、並列に計時することとなる。
よって、請求項2に記載の電子制御装置によれば、複数系統の時間待ち処理を容易に行うことができるようになる。
【0055】
ところで、上記請求項1,2に記載の電子制御装置において、遅延制御手段は、請求項3に記載の如く、第1のメッセージ記憶手段に第1種メッセージとして記憶し直した第2種メッセージを、第2のメッセージ記憶手段から消去するように構成すれば、第2のメッセージ記憶手段内に不用となった第2種メッセージが残ることを防止でき、メモリ資源を有効に活用することができる。
【0056】
次に、請求項4に記載の電子制御装置では、前述した請求項1〜3に記載の電子制御装置に対し、消去手段を備えている。そして、その消去手段は、単位処理手段から、何れかの単位処理手段を示す第2種メッセージの消去要求が出されると、その消去要求に対応した第2種メッセージを、第2のメッセージ記憶手段から消去する。
【0057】
このため、請求項4に記載の電子制御装置によれば、ある時点から所定時間が経過するまでに、監視対象の処理が行われないと、特定の処理を開始する、といったタイムアウト処理を、タイマ割り込み機構のような特別な手段を設けることなく、容易に実現することができる。
【0058】
つまり、ある単位処理手段Xが、上記特定の処理を行う単位処理手段Yへの第2種メッセージMSyを出し、また、監視対象の処理を行う単位処理手段Zが、例えば処理の最後に上記単位処理手段Yを示す第2種メッセージMSyの消去要求を出すようにしておけば、上記単位処理手段Xが第2種メッセージMSyを出してから、その第2種メッセージMSyのカウント値に対応した時間が経過するまでの間に、監視対象の単位処理手段Zの処理が行われなければ、単位処理手段Yによる特定の処理が行われることとなる。
【0059】
一方、この種の電子制御装置において、オブジェクトのメソッドは、一般に、記憶内容の書き換えが不能な通常のROM(所謂マスクROM)や記憶内容の書き換えが可能なEEPROMなどからなるプログラム記憶手段に記憶されるが、この場合に、請求項5に記載の如く構成すれば、より大きな効果を得ることができる。
【0060】
即ち、請求項5に記載の電子制御装置では、前述した請求項1〜4に記載の電子制御装置において、オブジェクトのメソッドが、所定のプログラム記憶手段に記憶されていると共に、各単位処理手段が出す第1種メッセージ及び第2種メッセージには、そのメッセージの出力先である単位処理手段に対応したオブジェクトのメソッドを示す識別コードが含まれている。
【0061】
そして更に、起動制御手段は、前記識別コードと、その識別コードが示すメソッドのプログラム記憶手段における格納位置を表わす格納位置情報とを、対応付けて記憶した格納位置記憶手段を備えており、第1のメッセージ記憶手段から読み出した第1種メッセージに含まれている識別コードが示すメソッドのプログラム記憶手段における格納位置を、上記格納位置記憶手段の記憶内容に基づき特定することにより、前記読み出した第1種メッセージの出力先である単位処理手段に処理を開始させるよう構成されている。
【0062】
このような請求項5に記載の電子制御装置によれば、プログラムの設計変更等に伴うオブジェクトの修正によって、そのオブジェクトを構成するメソッドのプログラム記憶手段における格納位置が変化した場合には、格納位置記憶手段に記憶される情報、即ち、識別コードに対応付けて記憶されるメソッドの格納位置情報を変更するだけで、対応することができるようになる。
【0063】
例えば、オブジェクト間メッセージ通信に関数コールの手法を適用した場合には、格納位置が変化したオブジェクトのメソッドをコールする方のオブジェクトも修正しなければならないが、請求項5に記載の電子制御装置によれば、そのような手間は無い。つまり、プログラム全体における各オブジェクトの独立性が高くなり、システム全体として設計変更が容易なものとなる。
【0064】
尚、前記格納位置情報としては、請求項6に記載のように、プログラム記憶手段の記憶領域を示すアドレスを採用すれば良く、このようにすれば、オブジェクトのメソッドの格納位置を容易に特定することができる。また、例えば、プログラム記憶手段が複数のROMからなる場合には、どのROMのどのアドレスといった情報を、格納位置情報として採用すれば良い。
【0073】
【発明の実施の形態】
以下、本発明が適用された実施形態の電子制御装置について図面を用いて説明する。
まず図1は、自動車に搭載されて内燃機関型エンジンの制御を行う実施形態の電子制御装置(以下、ECUという)1のハードウェア構成を表すブロック図である。
【0074】
図1に示すように、ECU1は、エンジンのクランク軸が所定角度(例えば30°CA)回転する毎にパルス状の信号を出力する回転センサやエンジンの冷却水の温度に応じたアナログ信号を出力する水温センサなどの、各種センサからの信号を入力する入力回路2と、当該ECU1に通信線9を介して接続される故障診断用の外部装置(以下、テスタという)8との間でデータ通信を行うための通信回路7と、入力回路2からの信号に基づきエンジンに対する最適制御量を演算して、その演算結果に基づき制御信号を出力すると共に、当該ECU1に上記テスタ8が接続された場合には、通信回路7を介してテスタ8と故障診断用のデータ通信を行うCPU(中央処理装置)3と、CPU3からの制御信号を受けて、エンジンのスロットル弁やインジェクタ(燃料噴射弁)等のアクチュエータを駆動する出力回路4と、CPU3が実行するプログラム及びそのプログラムの実行時に参照されるデータを格納する不揮発性のROM5と、CPU3の演算結果等を一時格納する揮発性のRAM6とを備えている。
【0075】
そして、このECU1においては、上記CPU3,ROM5,及びRAM6によりマイクロコンピュータの主要部が構成されており、図示はされていないが、そのマイクロコンピュータには、CPU3が入力回路2及び出力回路4との間で信号の入出力を行うためのI/Oポートや、CPU3が通信回路7を介してテスタ8とデータ通信を行うための受信レジスタ及び送信レジスタなどからなるシリアル通信用インタフェースも備えられている。また、RAM6の一部の記憶領域は、ECU1への電源供給が遮断された状態においても記憶内容を保持可能なバックアップRAMとして設定されている。
【0076】
ところで、本実施形態のECU1において、ROM5に格納されてCPU3により実行される制御用のプログラム(詳しくは、テスタ8との間の通信制御用及びエンジン制御用のプログラム)及びデータは、オブジェクト指向によってプログラミングされている。そのため、本実施形態のECU1では、前述したオブジェクト間メッセージ通信を実現するための手段として、図2に示すメッセージ配送制御部10を備えている。
【0077】
尚、図2は、ハードウェア構成を示すものではなく、ROM5に格納された制御用の各オブジェクトと、メッセージ配送制御部10との関係を示す概念図である。そして、メッセージ配送制御部10は、ハードウェアによって構成されているのではなく、CPU3がROM5に格納されたメッセージ配送制御用のオブジェクトに従い動作することで実現される機能手段である。
【0078】
そこで、以下では、メッセージ配送制御部10について、テスタ8との間でデータ通信を行うためのプログラム部分を中心に説明する。
まず、図2に示すように、ROM5には、テスタ8とのデータ通信を制御するためのオブジェクトとして、テスタ8へ送信すべきデータを用意するサービスオブジェクトOB1と、テスタ8との間で信号をやり取りする通信ハンドラオブジェクトOB2と、回転センサからの信号に基づきエンジン回転数を算出する回転センサオブジェクトOB3と、が格納されている。尚、回転センサオブジェクトOB3は、エンジンを制御するためのオブジェクトでもある。
【0079】
また、ROM5には、上記オブジェクトOB1〜OB3以外のオブジェクトOB4〜OBnも格納されており、その中には、メッセージ配送制御部10の機能を実現するためのオブジェクト(メッセージ配送制御用のオブジェクト)や所定時間毎に起動されるタイマ用のオブジェクトが含まれている。
【0080】
そして、本実施形態のECU1では、各オブジェクトOB1〜OBnが自己或いは他のオブジェクトに対して処理依頼としてのメッセージを出すことにより、そのメッセージの出力先であるオブジェクトが動作する、といった仮想的なオブジェクト間メッセージ通信により、各オブジェクトOB1〜OBnの処理順序が決定されている。
【0081】
また、本実施形態のECU1において、各オブジェクトOB1〜OBnが出す上記処理依頼のメッセージとしては、そのメッセージの出力先であるオブジェクトが処理動作を開始するまでの遅延時間を示すカウント値(以下、タイマカウンタという)が含まれない第1種メッセージとしてのオブジェクトメッセージと、上記タイマカウンタが含まれた第2種メッセージとしてのタイマメッセージとがある。
【0082】
そして、オブジェクトメッセージには、その内容として、当該メッセージの出力先のオブジェクトを示すオブジェクト識別番号(以下、OIDという)と、その出力先のオブジェクトを構成するメソッドのうちで実行されるべきメソッドを示すメソッド識別番号(以下、MIDという)とが含まれており、タイマメッセージには、その内容として、上記OID及びMIDに加え、更に上記タイマカウンタが含まれている。尚、オブジェクトメッセージとタイマメッセージには、その内容として、更に引数を含んでいる場合もある。また、以下では、オブジェクトメッセージとタイマメッセージとを総称して、メッセージという。
【0083】
次に、オブジェクト間メッセージ通信を実現するためのメッセージ配送制御部10は、各オブジェクトが出したオブジェクトメッセージをキューイングすると共に、所定の配送条件が成立する毎に、上記キューイングしたオブジェクトメッセージのうち最初にキューイングしたオブジェクトメッセージを読み出して、その読み出したオブジェクトメッセージを当該メッセージの出力先であるオブジェクトに配送する機能と、各オブジェクトが出したタイマメッセージをキューイングすると共に、そのキューイングしたタイマメッセージのタイマカウンタを所定値ずつ(本実施形態では1ずつ)減らし、タイマカウンタの値が予め定められた設定値(本実施形態では0)に達すると、そのタイマメッセージを当該メッセージの出力先であるオブジェクトにオブジェクトメッセージとして配送する機能とを有している。
【0084】
尚、「キューイング」とは、キューに対してデータの挿入記憶を行う操作のことであり、「キュー」とは、待ち行列であって、データ構造体のうち、一方の端でデータの挿入が行われ、他方の端でデータの削除が行われるものである。また、「配送」とは、メッセージの出力先であるオブジェクトの処理(詳しくは、メッセージにより指定されるオブジェクトのメソッドの実行)を開始させることを意味している。
【0085】
そして、メッセージ配送制御部10は、図2に示すように、各オブジェクトからのオブジェクトメッセージをキューイングするためのオブジェクトメッセージ格納部12(第1のメッセージ記憶手段に相当)と、各オブジェクトからのタイマメッセージをキューイングするためのタイマメッセージ格納部13(第2のメッセージ記憶手段に相当)と、オブジェクトメッセージ格納部12及びタイマメッセージ格納部13に対して、メッセージを記憶(キューイング)するためのメモリブロックを提供する空きメモリブロック格納部14とを備えている。
【0086】
ここで、オブジェクトメッセージ格納部12,タイマメッセージ格納部13,及び空きメモリブロック格納部14は、夫々、RAM6内の記憶領域であり、その容量はダイナミックに変動する。また、メモリブロックは、各格納部12,13,14の単位容量に相当し、1つのメッセージを記憶可能な容量分である。
【0087】
具体的に説明すると、まず、RAM6内には所定数(例えば10個)分のメモリブロックが予め確保されており、最初は、その全てのメモリブロックが空きメモリブロック格納部14となっている。
そして、オブジェクトからオブジェクトメッセージが出されると、空きメモリブロック格納部14を構成するメモリブロックが1つ減り、その代わりに、オブジェクトメッセージ格納部12を構成するメモリブロックが1つ増えて、その増加されたメモリブロックにオブジェクトメッセージが記憶(キューイング)される。
【0088】
また同様に、オブジェクトからタイマメッセージが出されると、空きメモリブロック格納部14を構成するメモリブロックが1つ減り、その代わりに、タイマメッセージ格納部13を構成するメモリブロックが1つ増えて、その増加されたメモリブロックにタイマメッセージが記憶される。
【0089】
一方、オブジェクトメッセージ格納部12からオブジェクトメッセージが読み出されてオブジェクトに配送されると、そのオブジェクトメッセージが記憶されていたメモリブロックが、オブジェクトメッセージ格納部12から空きメモリブロック格納部14へ戻るようになっている。
【0090】
また、後述するように、タイマメッセージ格納部13にキューイングされているタイマメッセージのうちでタイマカウンタが0になったタイマメッセージは、タイマメッセージ格納部13からオブジェクトメッセージ格納部12へ、オブジェクトメッセージとしてキューイングし直され、その再キューイングされたメッセージも、各オブジェクトから出された本来のオブジェクトメッセージと同様に、オブジェクトメッセージ格納部12から読み出されて該当するオブジェクトに配送されるが、このようなタイマメッセージの再キューイング時には、そのタイマメッセージが記憶されていたメモリブロックが、オブジェクトメッセージ格納部12へ移動するようになっている。
【0091】
よって、概念的には、RAM6内に確保された全てのメモリブロックは、最初は空きメモリブロック格納部14に入っており、オブジェクトからオブジェクトメッセージ或いはタイマメッセージが出されると、空きメモリブロック格納部14からオブジェクトメッセージ格納部12或いはタイマメッセージ格納部13へメモリブロックが1つ引き渡されて(移管されて)、その引き渡されたメモリブロックに上記出されたメッセージが記憶される。また、オブジェクトメッセージ格納部12にキューイングされたオブジェクトメッセージが該当するオブジェクトに配送されると、そのオブジェクトメッセージが記憶されていたメモリブロックは、オブジェクトメッセージ格納部12から空きメモリブロック格納部14へ戻されて再利用される。
【0092】
尚、以下では、オブジェクトメッセージが格納されているメモリブロックを、オブジェクトメッセージブロックと言い、タイマメッセージが格納されているメモリブロックを、タイマメッセージブロックと言い、有効なメッセージが格納されていないメモリブロックを、空きメモリブロックと言う。そして、オブジェクトメッセージブロックとタイマメッセージブロックと空きメモリブロックとを総称して、メモリブロックと言う。
【0093】
一方更に、メッセージ配送制御部10は、図2に示すように、オブジェクトメッセージ格納部12から読み出したオブジェクトメッセージの配送先を特定するために、換言すれば、読み出したメッセージに含まれているOIDとMIDが示すオブジェクトのメソッドが、ROM5の何れのアドレスに格納されているかを特定するために、接続情報データベース16を備えている。
【0094】
この接続情報データベース16は、図3に示す如く、OIDとMIDの各組み合せと、それら各組み合せが示すオブジェクトのメソッドが格納されているROM5の先頭アドレス(即ち、実行開始アドレス)とを、対応付けて記憶したデータテーブルからなる。例えば、図3のデータテーブルでは、OIDがnでMIDがmであるオブジェクトのメソッドが、ROM5において「Anm」というアドレスを先頭にして格納されていることを示す。そして、このようなデータテーブルからなる接続情報データベース16は、各オブジェクトと共にROM5に予め格納されている。
【0095】
次に、メッセージ配送制御部10の状態遷移と機能について、図4を参照しつつ説明する。尚、図4は、メッセージ配送制御部10の状態遷移図である。また、以下に説明するメッセージ配送制御部10の処理は、実際には、CPU3がROM5に格納されたメッセージ配送制御用のオブジェクトのメソッドに従って動作することにより実現されている。
【0096】
メッセージ配送制御部10は、車両のイグニッションスイッチがオフされて、ECU1のマイクロコンピュータが動作を停止している際に、図4(a)に示す如くオフ状態となる。そして、例えばイグニッションスイッチがオフ状態からオンされたり、マイクロコンピュータにリセットがかけられる等の初期化要求が生じると、図4(b)に示す如く初期化処理を行い、その後、図4(c)に示す如くメッセージ受信待ち状態となる。
【0097】
ここで、図4(b)で行われる初期化処理では、図5に示すように、まずS50及びS55にて、オブジェクトメッセージ格納部12とタイマメッセージ格納部13とを初期化する。具体的には、オブジェクトメッセージ格納部12とタイマメッセージ格納部13との各々が保有している空きメモリブロックを、空きメモリブロック格納部14に引き渡す。次にS60にて、空きメモリブロック格納部14を初期化する。具体的には、オブジェクトの何れかからメッセージが出されたときに、空きメモリブロック格納部14が保有している空きメモリブロックをオブジェクトメッセージ格納部12及びタイマメッセージ格納部13へ引き渡すことのできる状態にする。
【0098】
そして、メッセージ配送制御部10は、このような初期化処理を終了した後、メッセージ受信待ち状態となる。
メッセージ受信待ち状態とは、オブジェクトから出されたメッセージをオブジェクトメッセージ格納部12或いはタイマメッセージ格納部13にキューイングすることのできる状態であり、この状態において、イグニッションスイッチがオフされる等の終了要求が生じると、メッセージ配送制御部10は、図4(d)に示す如くシリアライズ処理を行い、その後、前述したオフ状態に戻る。
【0099】
ここで、図4(d)で行われるシリアライズ処理では、図6に示すように、まずS70及びS75にて、オブジェクトメッセージ格納部12とタイマメッセージ格納部13との各々に記憶されているデータを、前述したバックアップRAMに退避させ、次にS80にて、空きメモリブロック格納部14に記憶されているデータを、バックアップRAMに退避させる。そして、メッセージ配送制御部10は、このようなシリアライズ処理を終了した後、オフ状態となる。
【0100】
一方、メッセージ配送制御部10は、メッセージ受信待ち状態において、オブジェクトからオブジェクトメッセージが出されると、図4(e)に示す如くメッセージキューイング処理を行って、上記オブジェクトからのオブジェクトメッセージをオブジェクトメッセージ格納部12にキューイングし、その後、メッセージ受信待ち状態に戻る。
【0101】
尚、本実施形態では、オブジェクトがメッセージ送信要求を出すことにより、オブジェクトメッセージの出力が行われる。そして、以下の説明において、メッセージ内容としてのOIDがn(=1,2,…)であり且つMIDがm(=1,2,…)であるオブジェクトメッセージを、特に「オブジェクトメッセージ(n,m)」と記し、そのオブジェクトメッセージ(n,m)を出力するためのメッセージ送信要求を、「メッセージ送信要求(n,m)」と記す。
【0102】
ここで、オブジェクトがオブジェクトメッセージ(メッセージ送信要求)を出した時に行われるメッセージキューイング処理では、図7に示すように、まずS100にて、空きメモリブロック格納部14から空きメモリブロックを取得できるか否か(つまり、空きメモリブロック格納部14に空きメモリブロックがあるか否か)を判断する。そして、空きメモリブロックが取得可能であれば、続くS110にて、空きメモリブロック格納部14から、空きメモリブロックのうちで先頭にある空きメモリブロック、即ち、空きメモリブロック格納部14にキューイングされている空きメモリブロックのうちで最初にキューイングされた空きメモリブロックを取得する。
【0103】
次にS120にて、上記取得した空きメモリブロックに、オブジェクトから今回出されたオブジェクトメッセージを書き込む。尚、具体的には、空きメモリブロックに、オブジェクトメッセージの内容であるOID及びMID或いは更に引数が書き込まれる。
【0104】
そして、続くS130にて、上記S120でオブジェクトメッセージを書き込んだメモリブロックを、オブジェクトメッセージ格納部12にキューイングする。つまり、オブジェクトメッセージを書き込んだメモリブロックを、オブジェクトメッセージブロックとして、オブジェクトメッセージ格納部12におけるオブジェクトメッセージブロックの最後尾に登録する。そして、S130の処理を行った後、当該メッセージキューイング処理を終了する。
【0105】
また、上記S100にて、空きメモリブロックを取得することができない(つまり、空きメモリブロック格納部14に空きメモリブロックがない)と判断した場合には、メッセージ送信要求を出したオブジェクトのメソッドへエラーメッセージを出し、これにより所定のフェールセーフ処理が行われる。
【0106】
よって、このメッセージキューイング処理が行われると、図8(a)の斜線で示すように、空きメモリブロック格納部14にある空きメモリブロックE1 〜Em のうち、先頭にある空きメモリブロックE1 が選択されて、図8(b)に示すように、その空きメモリブロックE1 が取得される(S100:YES,S110)。
【0107】
そして、図8(c)に示すように、上記取得した空きメモリブロックE1 に、オブジェクトから今回出されたオブジェクトメッセージの内容が書き込まれ(S120)、最後に、図8(d)に示す如く、オブジェクトメッセージの内容が書き込まれたメモリブロックE1 が、オブジェクトメッセージ格納部12におけるオブジェクトメッセージブロックM1 〜Mn の最後尾に、オブジェクトメッセージブロックMn+1 として登録されて(S130)、オブジェクトメッセージ格納部12へのオブジェクトメッセージのキューイングが終了する。
【0108】
また、この状態では、図8(d)に示すように、オブジェクトメッセージ格納部12のオブジェクトメッセージブロックMが1つ増え、その代わりに、空きメモリブロック格納部14の空きメモリブロックEが1つ減ることとなる。そして、図8(d)にて()内に示すように、空きメモリブロック格納部14にて当初2番目にあった空きメモリブロックE2 が、先頭の空きメモリブロックE1 となり、当初m番目にあった空きメモリブロックEm が、m−1番目の空きメモリブロックEm-1 となる。
【0109】
一方次に、メッセージ配送制御部10は、メッセージ受信待ち状態において、オブジェクトから図4(f)の如くメッセージ配送要求が出されると、図4(g)に示す如くメッセージ配送状態になる。
メッセージ配送状態では、図4(h)に示すように、オブジェクトメッセージ格納部12にキューイングされているオブジェクトメッセージがあれば、後述するメッセージ配送処理を行って、そのキューイングされているオブジェクトメッセージの配送(即ち、オブジェクトメッセージにより指定されるオブジェクトのメソッドの実行)を行い、また、図4(i)に示すように、オブジェクトメッセージ格納部12にキューイングされているオブジェクトメッセージがなければ、メッセージ受信状態へ戻る。
【0110】
また、メッセージ配送状態では、実行中のオブジェクトからメッセージ送信要求(オブジェクトメッセージ)が出されると、メッセージ受信待ち状態の場合と同様に、図4(j)に示す如く前述した図7のメッセージキューイング処理を行う。
【0111】
ここで、図9に示すように、メッセージ配送処理は、オブジェクトからメッセージ配送要求が出された時、或いは、何れかのオブジェクトのメソッドの実行が終了した時に行われ、まずS210にて、オブジェクトメッセージ格納部12にキューイングされているオブジェクトメッセージがあるか否か(つまり、オブジェクトメッセージ格納部12からオブジェクトメッセージブロックを取得できるか否か)を判断する。そして、キューイングされているオブジェクトメッセージがあれば、続くS220にて、オブジェクトメッセージ格納部12から、オブジェクトメッセージブロックのうちで先頭にあるオブジェクトメッセージブロック、即ち、オブジェクトメッセージ格納部12にキューイングされているオブジェクトメッセージブロックのうちで最初にキューイングされたオブジェクトメッセージブロックを取得し、そのオブジェクトメッセージブロックに書き込まれているメッセージの内容(OID及びMID)を読み取る。
【0112】
次にS230にて、上記S220で取得したオブジェクトメッセージブロックを、空きメモリブロックとして、空きメモリブロック格納部14における空きメモリブロックの最後尾に登録する。
そして、続くS240にて、上記S220で読み取ったメッセージ内容であるOIDとMIDに対応するオブジェクトのメソッドが格納されているROM5の先頭アドレス(実行開始アドレス)を、前述した接続情報データベース16から検索により算出し、続くS250にて、上記S240で算出した実行開始アドレスをコールする。
【0113】
すると、CPU3によるプログラムの実行先が、S220で読み取ったメッセージ内容に対応したオブジェクトのメソッドの先頭へ移り、これにより、オブジェクトメッセージの配送が行われる。そして、そのメソッドの処理実行が終了すると、再び、当該メッセージ配送処理が前述したS210から行われる。
【0114】
また、上記S210にて、オブジェクトメッセージ格納部12にキューイングされているオブジェクトメッセージがない(つまり、オブジェクトメッセージ格納部12からオブジェクトメッセージブロックを取得できない)と判断した場合には、そのままメッセージ受信待ち状態へ戻る。
【0115】
よって、このメッセージ配送処理が行われると、図10(a)の斜線で示すように、オブジェクトメッセージ格納部12にあるオブジェクトメッセージブロックM1 〜Mn のうち、先頭のオブジェクトメッセージブロックM1 が選択される。そして、図10(b)に示すように、そのオブジェクトメッセージブロックM1 が取得されて、そのオブジェクトメッセージブロックM1 に書き込まれているメッセージ内容が読み取られる(S210:YES,S220)。
【0116】
そして更に、図10(c)に示すように、メッセージ内容が読み取られた後のオブジェクトメッセージブロックM1 が、空きメモリブロック格納部14における空きメモリブロックE1 〜Em の最後尾に、空きメモリブロックEm+1 として登録され(S230)、それと共に、上記オブジェクトメッセージブロックM1 から読み取ったメッセージ内容に対応するオブジェクトのメソッドの実行が開始される。
【0117】
また、この状態では、図10(c)に示すように、空きメモリブロック格納部14の空きメモリブロックEが1つ増え、その代わりに、オブジェクトメッセージ格納部12のオブジェクトメッセージブロックMが1つ減ることとなる。そして、図10(c)にて()内に示すように、オブジェクトメッセージ格納部12にて当初2番目にあったオブジェクトメッセージブロックM2 が、先頭のオブジェクトメッセージブロックM1 となり、当初n番目にあったオブジェクトメッセージブロックMn が、n−1番目のオブジェクトメッセージブロックMn-1 となる。
【0118】
一方更に、メッセージ配送制御部10は、メッセージ受信待ち状態において、オブジェクトからタイマメッセージが出されると、図4(k)に示す如くタイマメッセージキューイング処理を行って、そのオブジェクトからのタイマメッセージをタイマメッセージ格納部13にキューイングし、その後、メッセージ受信待ち状態に戻る。また、メッセージ配送制御部10は、メッセージ配送状態においても、実行中のオブジェクトからタイマメッセージが出されると、メッセージ受信待ち状態の場合と同様に、図4(l)に示す如くタイマメッセージキューイング処理を行って、オブジェクトからのタイマメッセージをタイマメッセージ格納部13にキューイングする。
【0119】
尚、本実施形態では、オブジェクトがタイマメッセージ送信要求を出すことにより、タイマメッセージの出力が行われる。そして、以下の説明において、メッセージ内容としてのOIDがn(=1,2,…)であり、MIDがm(=1,2,…)であり、タイマカウンタがP(=P1,P2,…:但しP1,P2,…は整数)であるタイマメッセージを、特に「タイマメッセージ(n,m,P)」と記し、そのタイマメッセージ(n,m,P)を出力するためのタイマメッセージ送信要求を、「タイマメッセージ送信要求(n,m,P)」と記す。
【0120】
ここで、オブジェクトがタイマメッセージ(タイマメッセージ送信要求)を出した時に行われるタイマメッセージキューイング処理では、図11に示すように、まずS300にて、空きメモリブロック格納部14から空きメモリブロックを取得できるか否か(つまり、空きメモリブロック格納部14に空きメモリブロックがあるか否か)を判断する。そして、空きメモリブロックが取得可能であれば、続くS310にて、空きメモリブロック格納部14から、空きメモリブロックのうちで先頭にある空きメモリブロックを取得する。
【0121】
次にS320にて、上記取得した空きメモリブロックに、オブジェクトから今回出されたタイマメッセージを書き込む。尚、具体的には、空きメモリブロックに、タイマメッセージの内容であるOID,MID,及びタイマカウンタ或いは更に引数が書き込まれる。
【0122】
そして、続くS330にて、上記S320でタイマメッセージを書き込んだメモリブロックを、タイマメッセージ格納部13にキューイングする。つまり、タイマメッセージを書き込んだメモリブロックを、タイマメッセージブロックとして、タイマメッセージ格納部13におけるタイマメッセージブロックの最後尾に登録する。そして、S330の処理を行った後、当該タイマメッセージキューイング処理を終了する。
【0123】
また、上記S300にて、空きメモリブロックを取得することができないと判断した場合には、タイマメッセージ送信要求を出したオブジェクトのメソッドへエラーメッセージを出し、これにより所定のフェールセーフ処理が行われる。
よって、このタイマメッセージキューイング処理が行われると、図12(a)の斜線で示すように、空きメモリブロック格納部14にある空きメモリブロックE1 〜Em のうち、先頭にある空きメモリブロックE1 が選択されて、図12(b)に示すように、その空きメモリブロックE1 が取得される(S300:YES,S310)。
【0124】
そして、図12(c)に示すように、上記取得した空きメモリブロックE1 に、オブジェクトから今回出されたタイマメッセージの内容が書き込まれ(S320)、最後に、図12(d)に示す如く、タイマメッセージの内容が書き込まれたメモリブロックE1 が、タイマメッセージ格納部13におけるタイマメッセージブロックT1 〜Tn の最後尾に、タイマメッセージブロックTn+1 として登録されて(S330)、タイマメッセージ格納部13へのタイマメッセージのキューイングが終了する。
【0125】
また、この状態では、図12(d)に示すように、タイマメッセージ格納部13のタイマメッセージブロックTが1つ増え、その代わりに、空きメモリブロック格納部14の空きメモリブロックEが1つ減ることとなる。そして、図12(d)にて()内に示すように、空きメモリブロック格納部14にて当初2番目にあった空きメモリブロックE2 が、先頭の空きメモリブロックE1 となり、当初m番目にあった空きメモリブロックEm が、m−1番目の空きメモリブロックEm-1 となる。
【0126】
一方次に、メッセージ配送制御部10は、メッセージ受信待ち状態において、タイマクロック要求を受けると、図4(m)に示す如くタイマクロック処理を行って、その後、メッセージ受信待ち状態に戻る。また、メッセージ配送制御部10は、メッセージ配送状態においても、タイマクロック要求を受けると、図4(n)に示す如くタイマクロック処理を行う。
【0127】
ここで、本実施形態において、上記タイマクロック要求は、所定時間t(例えば1ms)毎に割り込み処理として起動されるタイマ用のオブジェクトから、その所定時間tが経過したというイベントの発生を示す通知として出される。また、このイベントとしてのタイマクロック要求は、例えば、CPU3へ外部から入力されるクロック信号の立ち上がりエッジ或いは立ち下がりエッジでも良い。
【0128】
そして、こうした所定時間t毎のタイマクロック要求に応じて行われるタイマクロック処理では、図13に示すように、まずS400にて、タイマメッセージ格納部13に処理すべきタイマメッセージが有るか否かを判定する。
尚、このS400では、タイマメッセージ格納部13を構成するタイマメッセージブロックが無い場合(即ち、タイマメッセージ格納部13にキューイングされているタイマメッセージが無い場合)と、タイマメッセージ格納部13を構成するタイマメッセージブロックが有っても、その全てのタイマメッセージブロックに対して後述するS410及びS420の処理が既に行われている場合に、処理すべきタイマメッセージが無いと判定される。
【0129】
そして、上記S400にて、タイマメッセージ格納部13に処理すべきタイマメッセージが無いと判定した場合には、当該タイマクロック処理を終了するが、上記S400にて、処理すべきタイマメッセージが有ると判定した場合には、S410に進んで、タイマメッセージ格納部13を構成するタイマメッセージブロックのうちの1つを今回の処理対象として設定し、更に、その処理対象のタイマメッセージブロックに書き込まれているタイマメッセージのタイマカウンタを、1だけ減算する。尚、S410では、1回のタイマクロック処理において、当該S410の処理が行われる毎に、タイマメッセージ格納部13のタイマメッセージブロックを、先頭のものから順に処理対象として設定する。
【0130】
次にS420にて、上記S410で1減算した後のタイマカウンタが0に達したか否かを判定し、0に達していればS430へ進んで、処理対象のタイマメッセージブロックに書き込まれているタイマメッセージ(つまり、S410での1減算処理によってタイマカウンタが0となったタイマメッセージ)を、オブジェクトメッセージ格納部12にオブジェクトメッセージとしてキューイングし直す。
【0131】
具体的には、今回の処理対象のタイマメッセージブロックを、タイマメッセージ格納部13からオブジェクトメッセージ格納部12へ移動させるのであるが、その際、処理対象のタイマメッセージブロックを、オブジェクトメッセージブロックとして、オブジェクトメッセージ格納部12におけるオブジェクトメッセージブロックの最後尾に登録する。尚、この場合、図9のメッセージ配送処理ではタイマカウンタを参照しないため、タイマメッセージブロックは、そのままオブジェクトメッセージブロックとしてオブジェクトメッセージ格納部12へ移動させることができる。また、オブジェクトメッセージ格納部12へ移動させるタイマメッセージブロックから、0となった不要なタイマカウンタを削除するようにしても良い。
【0132】
そして、上記S430の処理を行った後、或いは、上記S420にて、1減算後のタイマカウンタが0に達していないと判定した場合には、S400へ戻る。よって、このタイマクロック処理が行われると、タイマメッセージ格納部13にキューイングされている各タイマメッセージブロックが、最初にキューイングされたものから順に処理対象として設定されて、各タイマメッセージブロックに書き込まれているタイマメッセージのタイマカウンタが1減算されるため(S410)、タイマメッセージ格納部13にキューイングされている各タイマメッセージのタイマカウンタは、当該タイマクロック処理が行われる所定時間t毎に、1ずつ減算されていくこととなる。
【0133】
そして、その課程において、例えば図14(a)の斜線で示すように、タイマメッセージ格納部13にあるタイマメッセージブロックT1 〜Tn のうち、先頭からe番目のタイマメッセージブロックTe に書き込まれているタイマメッセージのタイマカウンタが1減算により0になったとすると、図14(b)及び図14(c)に示すように、そのタイマメッセージブロックTe が、タイマメッセージ格納部13から取り出されて、オブジェクトメッセージ格納部12におけるオブジェクトメッセージブロックM1 〜Mn の最後尾に、オブジェクトメッセージブロックMn+1 として登録される(S420:YES,S430)。また、この状態では、図14(c)に示すように、オブジェクトメッセージ格納部12のオブジェクトメッセージブロックMが1つ増え、その代わりに、タイマメッセージ格納部13のタイマメッセージブロックTが1つ減ることとなる。
【0134】
このため、タイマメッセージ格納部13にキューイングされている各タイマメッセージのタイマカウンタは、所定時間t毎に1ずつ減算され、タイマカウンタが0に達したタイマメッセージは、タイマメッセージ格納部13からオブジェクトメッセージ格納部12へ、キューイング(記憶)し直されることとなる。
【0135】
そして、オブジェクトメッセージとしてキューイングし直されたタイマメッセージは、オブジェクトから出される本来のオブジェクトメッセージと全く同様に、前述した図9のメッセージ配送処理によって配送され、そのメッセージのOID及びMIDにより指定されるオブジェクトのメソッドが実行されることとなる。
【0136】
よって、何れかのオブジェクトからタイマメッセージ(x,y,Pz)が出されて、そのタイマメッセージ(x,y,Pz)が図11のタイマメッセージキューイング処理によりタイマメッセージ格納部13にキューイングされると、そのタイマメッセージ(x,y,Pz)のタイマカウンタPzに相当する時間(=t×Pz)が経過してから、当該タイマメッセージ(x,y,Pz)のOID及びMIDにより指定されるオブジェクトxのメソッドyが実行されることとなる。一方また、メッセージ配送制御部10は、メッセージ受信待ち状態において、オブジェクトから消去要求としてのタイマメッセージ削除要求が出されると、図4(o)に示す如くタイマメッセージ削除処理を行って、そのタイマメッセージ削除要求に対応したタイマメッセージをタイマメッセージ格納部13から消去し、その後、メッセージ受信待ち状態に戻る。また、メッセージ配送制御部10は、メッセージ配送状態においても、実行中のオブジェクトからタイマメッセージ削除要求が出されると、メッセージ受信待ち状態の場合と同様に、図4(p)に示す如くタイマメッセージ削除処理を行って、そのタイマメッセージ削除要求に対応したタイマメッセージをタイマメッセージ格納部13から消去する。
【0137】
尚、オブジェクトが出すタイマメッセージ削除要求には、消去すべきタイマメッセージを特定するためにOIDとMIDが含まれている。そして、以下の説明において、メッセージ内容としてのOIDがn(=1,2,…)で、MIDがm(=1,2,…)であるタイマメッセージ(n,m,P)を消去するためのタイマメッセージ削除要求を、「タイマメッセージ削除要求(n,m)」と記す。
【0138】
ここで、オブジェクトがタイマメッセージ削除要求を出した時に行われるタイマメッセージ削除処理では、図15に示すように、まずS500にて、メッセージ内容としてのOID及びMIDが、オブジェクトから出されたタイマメッセージ削除要求のOID及びMIDと一致している消去対象のタイマメッセージを、タイマメッセージ格納部13の中から検索する。
【0139】
次にS510にて、タイマメッセージ格納部13に消去対象のタイマメッセージが有ったか否かを判定し、消去対象のタイマメッセージが無い場合には、当該タイマメッセージ削除処理を終了するが、消去対象のタイマメッセージが有った場合には、S520に進んで、タイマメッセージ格納部13のタイマメッセージブロックのうち、消去対象のタイマメッセージが書き込まれているタイマメッセージブロックの記憶内容を消去する。
【0140】
そして、続くS530にて、上記S520で記憶内容を消去したタイマメッセージブロックを、空きメモリブロックとして、空きメモリブロック格納部14における空きメモリブロックの最後尾に登録し、その後、当該タイマメッセージ削除処理を終了する。
【0141】
よって、例えば図16(a)の斜線で示すように、タイマメッセージ格納部13にあるタイマメッセージブロックT1 〜Tn のうち、先頭からg番目のタイマメッセージブロックTg にタイマメッセージ(x,y,Pz)が書き込まれている場合に、何れかのオブジェクトからタイマメッセージ削除要求(x,y)が出されると、S500〜S520の処理により、上記g番目のタイマメッセージブロックTg の記憶内容が消去される。
【0142】
そして、S530の処理により、図16(b)及び図16(c)に示すように、記憶内容が消去された後のタイマメッセージブロックTgが、タイマメッセージ格納部13から取り出されて、空きメモリブロック格納部14における空きメモリブロックE1 〜Em の最後尾に、空きメモリブロックEm+1 として登録される。また、この状態では、図16(c)に示すように、空きメモリブロック格納部14の空きメモリブロックEが1つ増え、その代わりに、タイマメッセージ格納部13のタイマメッセージブロックTが1つ減ることとなる。
【0143】
このため、何れかのオブジェクトからタイマメッセージ削除要求(x,y)が出されると、それに対応するタイマメッセージ(x,y,Pz)が上記の如くタイマメッセージ格納部13から消去されるため、何れかのオブジェクトから上記タイマメッセージ(x,y,Pz)が出されてから、そのタイマメッセージ(x,y,Pz)のタイマカウンタPzに相当する時間(=t×Pz)が経過しても、そのタイマメッセージ(x,y,Pz)のOID及びMIDにより指定されるオブジェクトxのメソッドyは実行されなくなる。
【0144】
ここで、前述したメッセージ配送制御部10の作用を一層明確にするため、図2に示した各オブジェクトOB1〜OB3が如何にしてオブジェクト間メッセージ通信を行い、当該ECU1とテスタ8との間のデータ通信が制御されるかについて、図17〜図28を用い具体的に説明する。
【0145】
まず、ECU1とテスタ8との間には、データ通信を行う上で、図17に示す規則が設けられている。
即ち、最初にテスタ8がECU1へデータ要求としての要求メッセージを送信する。そして、ECU1 は、テスタ8からの要求メッセージを受信してから時間t2以上が経過した後に、その受信した要求メッセージに応じた情報である応答データ(エンジン回転数やエンジンの冷却水温など)を、応答メッセージとして所定量(本実施形態では1バイト)ずつテスタ8へ送信するが、この際、ECU1は、同じ種類の応答メッセージの各バイトを、時間t1以上の間隔を空けて順次送信する。尚、図17は、応答メッセージの総データ量が2バイトである場合を示している。
【0146】
また、テスタ8は、ECU1からの応答データの各バイトを全て受信してから時間t3以上が経過した後に、次の要求メッセージをECU1へ送信する。また更に、テスタ8は、ECU1へ要求メッセージを送信してから時間t3が経過しても、ECU1から応答メッセージが返送されて来ない場合に、要求メッセージを再度送信する。
【0147】
尚、時間t2は、時間t1よりも長く、且つ、時間t3は、時間t1及び時間t2よりも非常に長い時間として定められている。また、図17における()内に記したP1,P2,P3は、上記時間t1,t2,t3の各々を、前述したタイマクロック要求の発生周期t(換言すれば、メッセージ配送制御部10が図13のタイマクロック処理を行う周期t)で割った整数値(P1=t1/t,P2=t2/t,P3=t3/t)である。
【0148】
次に、図2の各オブジェクトOB1〜OB3によって実現される処理の概要について、図18及び図19のメッセージシーケンスチャートに沿って説明する。尚、ここでは、ECU1が、テスタ8からの要求メッセージに応じて、エンジン回転数のデータを応答メッセージとしてテスタ8へ返送する場合を例に挙げて説明する。また、図19は、図18にて六角形の枠で示した応答メッセージ送信処理の部分のメッセージシーケンスチャートである。また更に、図18及び図19において、(2,1)や(1,1)などは、各オブジェクトOB1〜OB3が出すオブジェクトメッセージ(n,m)の内容(即ち、OID及びMIDの各値)を示しており、(2,1,P3)や(2,3,P2)などは、各オブジェクトOB1〜OB3が出すタイマメッセージ(n,m,P)の内容(即ち、OID,MID,及びタイマカウンタの各値)を示している。
【0149】
まず、図18の[1]に示すように、通信ハンドラオブジェクトOB2へ受信待ち要求のメッセージが出されると、通信ハンドラオブジェクトOB2が動作して、(つまり、CPU3が通信ハンドラオブジェクトOB2のメソッドを実行して)、通信回路7やマイクロコンピュータ内のシリアル通信用インタフェースを、テスタ8からのデータを受信できる受信可能状態に設定する。
【0150】
尚、受信待ち要求のメッセージは、後述するタイマメッセージ(2,1,P3)が、メッセージ配送制御部10のタイマクロック処理(図13)及びメッセージ配送処理(図9)の作用によって、オブジェクトメッセージ(2,1)として配送されることにより発生する。
【0151】
そして、その後、テスタ8から要求メッセージが送信されて、その要求メッセージがマイクロコンピュータ内の受信レジスタに格納されると、図18の[2]に示すように、オブジェクトOB1〜OB3以外の所定のオブジェクトから通信ハンドラオブジェクトOB2へ、受信処理要求のメッセージが出される。
【0152】
すると、通信ハンドラオブジェクトOB2は、上記受信レジスタ内の受信データ(即ち、テスタ8からの要求メッセージ)を、マイクロコンピュータ内で処理可能なデータに変換し、次いで、前述した時間t2を計時するためのP2タイマと、前述した時間t3を計時するためのP3タイマとを、夫々起動する。
【0153】
尚、P2タイマの起動は、タイマカウンタの値が、時間t2をタイマクロック要求の発生周期tで割った整数値P2(=t2/t)であるタイマメッセージ(この例では、タイマメッセージ(2,3,P2))を出すことによって行われ、同様に、P3タイマの起動は、タイマカウンタの値が、時間t3をタイマクロック要求の発生周期tで割った整数値P3(=t3/t)であるタイマメッセージ(この例では、タイマメッセージ(2,1,P3))を出すことによって行われる。
【0154】
そして更に、通信ハンドラオブジェクトOB2は、図18の[3]に示すように、サービスオブジェクトOB1へ要求メッセージ受信通知のメッセージを出す。
すると、サービスオブジェクトOB1が動作して、図18の[4]に示すように、回転センサオブジェクトOB3へ回転数取得要求のメッセージを出す。
【0155】
そして、上記回転数取得要求のメッセージに伴い、回転センサオブジェクトOB3が動作して、まず、回転センサからの信号に基づきエンジン回転数を算出し、次いで、図18の[5]に示すように、サービスオブジェクトOB1へ回転数保存要求のメッセージを出す。
【0156】
すると、サービスオブジェクトOB1は、回転センサオブジェクトOB3によって算出されたエンジン回転数のデータ(この例では2バイト)をRAM6の特定領域に保存する。
この状態で、上記P2タイマが起動されてから時間t2が経過すると、図18の[6]に示すように、通信ハンドラオブジェクトOB2へ応答開始要求のメッセージが出されて、通信ハンドラオブジェクトOB2とサービスオブジェクトOB1とにより、テスタ8へ応答メッセージの1バイト分を送信するための応答メッセージ送信処理が行われる。尚、この時の応答開始要求のメッセージは、後述するタイマメッセージ(2,3,P2)が、メッセージ配送制御部10のタイマクロック処理(図13)及びメッセージ配送処理(図9)の作用によって、オブジェクトメッセージ(2,3)として配送されることにより発生する。
【0157】
応答メッセージ送信処理では、まず、通信ハンドラオブジェクトOB2が、上記応答開始要求のメッセージに伴い動作して、図19の[9]に示すように、サービスオブジェクトOB1へ応答メッセージ取得要求のメッセージを出す。
すると、サービスオブジェクトOB1が動作して、RAM6の上記特定領域からエンジン回転数のデータを1バイト分だけ読み出し、その後、図19の[10]に示すように、通信ハンドラオブジェクトOB2へデータ送信要求のメッセージを出す。そして、上記データ送信要求のメッセージに伴い、通信ハンドラオブジェクトOB2が動作して、サービスオブジェクトOB1によりRAM6から読み出されたエンジン回転数の1バイト分のデータを、テスタ8が受信可能なデータに逆変換して送信レジスタに格納し、次いで、その送信レジスタ内の1バイトデータを、テスタ8へ送信する。
【0158】
尚、サービスオブジェクトOB1は、上記応答メッセージ取得要求のメッセージに伴って動作する毎に、RAM6の上記特定領域からエンジン回転数のデータを先頭の1バイト目から順に読み出す。よって、上記応答メッセージ送信処理が行われる毎に、ECU1からテスタ8へ、応答メッセージ(エンジン回転数のデータ)の各1バイトずつが送信されることとなる。
【0159】
ここで、最初の応答メッセージ送信処理により、テスタ8へ応答メッセージの1バイト目が送信されるのであるが、通信ハンドラオブジェクトOB2は、テスタ8へ応答メッセージの1バイト目を送信した後、図18に示すように、前述した時間t1を計時するためのP1タイマを起動する。尚、P1タイマの起動は、タイマカウンタの値が、時間t1をタイマクロック要求の発生周期tで割った整数値P1(=t1/t)であるタイマメッセージ(この例では、タイマメッセージ(2,3,P1))を出すことによって行われる。
【0160】
そして、上記P1タイマが起動されてから時間t1が経過すると、図18の[7]に示すように、通信ハンドラオブジェクトOB2へ再び応答開始要求のメッセージが出されて、通信ハンドラオブジェクトOB2とサービスオブジェクトOB1とにより、2回目の応答メッセージ送信処理が行われる。尚、この時の応答開始要求のメッセージは、後述するタイマメッセージ(2,3,P1)が、メッセージ配送制御部10のタイマクロック処理(図13)及びメッセージ配送処理(図9)の作用によって、オブジェクトメッセージ(2,3)として配送されることにより発生する。
【0161】
その結果、通信ハンドラオブジェクトOB2が、応答メッセージの2バイト目をテスタ8へ送信することとなる。
そして、通信ハンドラオブジェクトOB2は、応答メッセージの2バイト目を送信した後、時間t3を計時するためのP3タイマを再起動する。
【0162】
その後、上記P3タイマが再起動されてから時間t3が経過すると、図18の[8]に示す如く、図18の[1]の場合と同様に、通信ハンドラオブジェクトOB2へ受信待ち要求のメッセージが出される。そして、その受信待ち要求のメッセージに伴い通信ハンドラオブジェクトOB2が動作して、通信回路7やマイクロコンピュータ内のシリアル通信用インタフェースを受信可能状態に設定する。
【0163】
一方、上記P3タイマが最初に起動されてから時間t3以内に、応答メッセージを何らかの原因で送信できなかった場合にも、通信ハンドラオブジェクトOB2へ受信待ち要求のメッセージが出される。そして、その受信待ち要求のメッセージに伴い通信ハンドラオブジェクトOB2が動作して、通信回路7やシリアル通信用インタフェースを受信可能状態に設定する。
【0164】
尚、テスタ8からの要求メッセージを受信した時にP2タイマを起動して、その時点から時間t2が経過した後に応答メッセージの1バイト目を送信する(即ち、応答メッセージの送信を開始する)のは、図17を用いて説明したように、ECU1 は、テスタ8からの要求メッセージを受信してから時間t2以上が経過した後に、応答メッセージを送信しなければならないからである。
【0165】
また、テスタ8へ応答メッセージの1バイト目を送信した直後にP1タイマを起動して、その時点から時間t1が経過した後に、応答メッセージの2バイト目を送信するのは、図17を用いて説明したように、ECU1は、同じ種類の応答メッセージの各バイトを、時間t1以上の間隔を空けて送信しなければならないからである。
【0166】
また更に、テスタ8からの要求メッセージを受信した時に、P2タイマと共にP3タイマを起動するのは、前述したように、テスタ8は、ECU1へ要求メッセージを送信してから時間t3が経過しても、ECU1から応答メッセージが返送されて来ない場合に、要求メッセージを再度送信するからであり、その再度送信された要求メッセージを確実に受信できるようにするためである。
【0167】
例えば、図18において、六角形の枠で示されている応答メッセージ送信処理が、何らかの原因で行われなかった場合には、最初のP3タイマの起動時点から時間t3が経過すると、通信ハンドラオブジェクトOB2により、通信回路7やシリアル通信用インタフェースが受信可能状態に設定され、これにより、テスタ8から再送信される要求メッセージが受信されることとなる。
【0168】
そして、テスタ8へ応答メッセージの最終バイト(2バイト目)を送信した直後にP3タイマを再起動して、その時点から時間t3が経過した後に受信可能状態としているのは、図17に示したように、テスタ8は、ECU1からの応答データの各バイトを全て受信してから時間t3以上が経過すると、次の要求メッセージを送信してくるからであり、その要求メッセージを受信するためである。
【0169】
次に、図2に示した各オブジェクトOB1〜OB3が、メッセージ配送制御部10の作用により如何にしてオブジェクト間メッセージ通信を行い、図18及び図19のメッセージシーケンスチャートに示した処理が行われるかについて説明する。
【0170】
まず、図20に示すように、サービスオブジェクトOB1は、図18の[3]に示した要求メッセージ受信通知のメッセージとしてのオブジェクトメッセージ(1,1)、つまりOIDが1でMIDが1であるオブジェクトメッセージに伴い実行される要求メッセージ受信通知処理メソッド(図21)と、図19の[9]に示した応答メッセージ取得要求のメッセージとしてのオブジェクトメッセージ(1,2)に伴い実行される応答メッセージ取得処理メソッド(図22)と、図18の[5]に示した回転数保存要求のメッセージとしてのオブジェクトメッセージ(1,3)に伴い実行される回転数保存処理メソッド(図23)とを有している。
【0171】
また、通信ハンドラオブジェクトOB2は、図18の[1]及び[8]に示した受信待ち要求のメッセージとしてのオブジェクトメッセージ(2,1)に伴い実行される受信待ち処理メソッド(図24)と、図18の[2]に示した受信処理要求のメッセージとしてのオブジェクトメッセージ(2,2)に伴い実行されるテスタ読み込み処理メソッド(図25)と、図18の[6]及び[7]に示した応答開始要求のメッセージとしてのオブジェクトメッセージ(2,3)に伴い実行される応答開始処理メソッド(図26)と、図19の[10]に示したデータ送信要求のメッセージとしてのオブジェクトメッセージ(2,4)に伴い実行される送信処理メソッド(図27)とを有している。
【0172】
また更に、回転センサオブジェクトOB3は、図18の[4]に示した回転数取得要求のメッセージとしてのオブジェクトメッセージ(3,1)に伴い実行される回転数取得処理メソッド(図28)を有している。
そして、上記オブジェクトOB1〜OB3の各メソッドの実行開始アドレスは、図3に示したように、各メソッドを示すOID及びMIDに夫々対応して、接続情報データベース16内に予め登録されている。
【0173】
次に、CPU3により実行される処理の詳細について説明する。
まず、後述する受信待ち処理メソッド(図24)のS700により、通信回路7やマイクロコンピュータ内のシリアル通信用インタフェースが受信可能状態に設定されている時に、テスタ8からデータ要求としての要求メッセージが送信されて、その要求メッセージが受信されると(詳しくは、要求メッセージがシリアル通信用インタフェースの受信レジスタに受信データとして格納されると)、オブジェクトOB1〜OB3以外の所定のオブジェクトのメソッド(以下、通信動作起動用メソッドという)が実行されて、メッセージ送信要求(2,2)が出される。
【0174】
尚、以下の説明においては、テスタ8からの要求メッセージが受信された時点で、メッセージ配送制御部10はメッセージ配送状態となっており、また、オブジェクトメッセージ格納部12とタイマメッセージ格納部13との各々には、メモリブロックが無いものとする。また更に、空きメモリブロック格納部14には十分な数の空きメモリブロックがあり、図7に示したメッセージキューイング処理のS100と、図11に示したタイマメッセージキューイング処理のS300とでは、常に肯定判定されるものとする。
【0175】
ここで、上記メッセージ送信要求(2,2)が出されると、前述した図7のメッセージキューイング処理が実行されて、オブジェクトメッセージ格納部12にオブジェクトメッセージ(2,2)がキューイングされる。
即ち、図7のS110にて、空きメモリブロック格納部14から先頭の空きメモリブロックが取得され、S120にて、その取得した空きメモリブロックにオブジェクトメッセージ(2,2)が書き込まれ、更に、S130にて、オブジェクトメッセージ(2,2)が書き込まれたメモリブロックが、オブジェクトメッセージ格納部12にオブジェクトメッセージブロックとして登録される。
【0176】
このようにしてオブジェクトメッセージ(2,2)のキューイングが終わると、処理の実行が上記通信動作起動用メソッドに戻る。そして、そのメソッドの処理が終了すると、前述した図9のメッセージ配送処理が実行されて、オブジェクトメッセージ格納部12にキューイングされているオブジェクトメッセージ(2,2)が配送される。
【0177】
即ち、まず図9のS210にて、オブジェクトメッセージ格納部12にオブジェクトメッセージがキューイングされているか否かがチェックされるが、この場合には、オブジェクトメッセージ(2,2)のみがキューイングされているため、S220にて、オブジェクトメッセージ格納部12の先頭にあるオブジェクトメッセージブロックからオブジェクトメッセージ(2,2)の内容が読み取られる。また、S230にて、オブジェクトメッセージ(2,2)が書き込まれていたオブジェクトメッセージブロックが、空きメモリブロック格納部14へ空きメモリブロックとして返却される。
【0178】
そして、図9のS240にて、上記読み取ったオブジェクトメッセージ(2,2)の内容に対応する通信ハンドラオブジェクトOB2のテスタ読み込み処理メソッドの実行開始アドレスが、接続情報データベース16から算出され、S250にて、その算出した実行開始アドレスがコールされる。
【0179】
これにより、オブジェクトメッセージ(2,2)の配送が行われて、図25に示すテスタ読み込み処理メソッドの実行が開始される。
図25に示すように、テスタ読み込み処理メソッドの実行が開始されると、まずS710にて、受信レジスタ内の受信データに対してデータエラーチェックの処理が行われ、続くS715にて、そのデータエラーチェックの結果に基づき、受信データが正常であるか否かが判定される。
【0180】
そして、受信データが正常でなければ、当該メソッドの実行が終了されるが、受信データが正常であれば、S720にて、受信データが、マイクロコンピュータ内で処理可能なデータに変換されてRAM6に転送される。
そして更に、続くS725にて、図18に示したP2タイマを起動するためにタイマメッセージ送信要求(2,3,P2)が出される。
【0181】
すると、図11のタイマメッセージキューイング処理が実行されて、タイマメッセージ格納部13にタイマメッセージ(2,3,P2)がキューイングされる。
即ち、図11のS310にて、空きメモリブロック格納部14から先頭の空きメモリブロックが取得され、S320にて、その取得した空きメモリブロックにタイマメッセージ(2,3,P2)が書き込まれ、更に、S330にて、タイマメッセージ(2,3,P2)が書き込まれたメモリブロックが、タイマメッセージ格納部13にタイマメッセージブロックとして登録される。
【0182】
このようにしてタイマメッセージ(2,3,P2)のキューイングが終わると、処理の実行が図25のテスタ読み込み処理メソッドに戻り、図25のS730にて、図18に示したP3タイマを起動するためにタイマメッセージ送信要求(2,1,P3)が出される。
【0183】
すると、再び、図11のタイマメッセージキューイング処理が実行されて、タイマメッセージ格納部13にタイマメッセージ(2,1,P3)がキューイングされる。
即ち、図11のS310にて、空きメモリブロック格納部14から先頭の空きメモリブロックが取得され、S320にて、その取得した空きメモリブロックにタイマメッセージ(2,1,P3)が書き込まれ、更に、S330にて、タイマメッセージ(2,1,P3)が書き込まれたメモリブロックが、タイマメッセージ格納部13におけるタイマメッセージブロックの最後尾に(この場合には先頭から2番目)に、タイマメッセージブロックとして登録される。
【0184】
尚、この時点で、タイマメッセージ格納部13には、タイマメッセージ(2,3,P2)が書き込まれたタイマメッセージブロックと、タイマメッセージ(2,1,P3)が書き込まれたタイマメッセージブロックとが、その順に2つ登録されることとなる。換言すれば、タイマメッセージ格納部13に、2つのタイマメッセージが、タイマメッセージ(2,3,P2)→タイマメッセージ(2,1,P3)の順に記憶されることとなる。
【0185】
このようにしてタイマメッセージ(2,1,P3)のキューイングが終わると、処理の実行が再び図25のテスタ読み込み処理メソッドに戻り、図25のS735にて、メッセージ送信要求(1,1)が出される。
すると、図7のメッセージキューイング処理が実行されて、前述した手順と全く同様に、オブジェクトメッセージ格納部12にオブジェクトメッセージ(1,1)がキューイングされる。
【0186】
そして、オブジェクトメッセージ(1,1)のキューイングが終わると、処理の実行が図25のテスタ読み込み処理メソッドに戻り、このメソッドの処理が終了すると、図9のメッセージ配送処理が実行されて、オブジェクトメッセージ格納部12にキューイングされているオブジェクトメッセージ(1,1)が配送される。
【0187】
これにより、図21に示す要求メッセージ受信通知処理メソッドの実行が開始される。そして、そのS600にて、メッセージ送信要求(3,1)が出される。
すると、図7のメッセージキューイング処理が実行されて、オブジェクトメッセージ格納部12にオブジェクトメッセージ(3,1)がキューイングされる。
【0188】
そして、オブジェクトメッセージ(3,1)のキューイングが終わると、処理の実行が図21の要求メッセージ受信通知処理メソッドに戻り、このメソッドの処理が終了すると、図9のメッセージ配送処理が実行されて、オブジェクトメッセージ格納部12にキューイングされているオブジェクトメッセージ(3,1)が配送される。
【0189】
これにより、図28に示す回転数取得処理メソッドの実行が開始される。そして、まずS800にて、回転センサからの信号に基づき、エンジン回転数が算出され、続くS810にて、メッセージ送信要求(1,3)が出される。
すると、図7のメッセージキューイング処理が実行されて、オブジェクトメッセージ格納部12にオブジェクトメッセージ(1,3)がキューイングされる。
【0190】
そして、オブジェクトメッセージ(1,3)のキューイングが終わると、処理の実行が図28の回転数取得処理メソッドに戻り、このメソッドの処理が終了すると、図9のメッセージ配送処理が実行されて、オブジェクトメッセージ格納部12にキューイングされているオブジェクトメッセージ(1,3)が配送される。
【0191】
これにより、図23に示す回転数保存処理メソッドの実行が開始される。そして、そのS630にて、上記回転数取得処理メソッドのS800で算出されたエンジン回転数のデータが、RAM6の特定領域に保存され、その後、当該回転数取得処理メソッドの実行が終了する。
【0192】
すると、図9のメッセージ配送処理が実行されて、そのS210にて、オブジェクトメッセージ格納部12にオブジェクトメッセージがキューイングされているか否かがチェックされるが、この場合には、キューイングされているオブジェクトメッセージが無いため、メッセージ配送制御部10はメッセージ受信待ち状態となる。
【0193】
そして、この状態の時に、例えば、上記オブジェクトOB1〜OB3以外のオブジェクトのメソッドであって、所定時間毎に実行されるメソッド(以下、定時メソッドという)が実行され、更に、その定時メソッドの実行により、メッセージ送信要求(x1,y1)が出されたとする。
【0194】
すると、図7のメッセージキューイング処理が実行されて、オブジェクトメッセージ格納部12にオブジェクトメッセージ(x1,y1)がキューイングされ、そのオブジェクトメッセージ(x1,y1)のキューイングが終わると、処理の実行が上記定時メソッドに戻る。
【0195】
そして、その定時メソッドの実行により、メッセージ配送要求が出されると、メッセージ配送制御部10がメッセージ配送状態に戻ると共に、図9のメッセージ配送処理が実行されて、オブジェクトメッセージ格納部12にキューイングされているオブジェクトメッセージ(x1,y1)が配送される。
【0196】
その結果、OIDがx1でMIDがy1であるオブジェクトのメソッドが実行されることとなるが、そのメソッドの実行によりメッセージ送信要求(x2,y2)が出されると、その後、OIDがx2でMIDがy2であるオブジェクトのメソッドが実行され、更に、そのメソッドの実行によりメッセージ送信要求(x3,y3)が出されると、その後、OIDがx3でMIDがy3であるオブジェクトのメソッドが実行される、といった具合に、他のオブジェクトのメソッドが順次実行されていく。
【0197】
ここで、図25のテスタ読み込み処理メソッドのS725で出されたタイマメッセージ(2,3,P2)がタイマメッセージ格納部13にキューイングされてから、時間t2が経過すると、そのタイマメッセージ(2,3,P2)のタイマカウンタが、前述した図13のタイマクロック処理のS410によって0に達する。
【0198】
そして、そのタイマメッセージ(2,3,P2)は、上記タイマクロック処理のS430により、タイマメッセージ格納部13からオブジェクトメッセージ格納部12へ、オブジェクトメッセージ(2,3)としてキューイングし直される。尚、この時点で、タイマメッセージ格納部13には、タイマメッセージ(2,1,P3)のみが記憶されることとなる。
【0199】
そして更に、そのキューイングし直されたメッセージ(2,3)は、実行中の何れかのメソッドの処理が終了した時点で、各オブジェクトから出される本来のオブジェクトメッセージと全く同様に、図9のメッセージ配送処理によって配送されることとなる。
【0200】
このため、タイマメッセージ(2,3,P2)がタイマメッセージ格納部13にキューイングされてから時間t2が経過すると、オブジェクトメッセージ(2,3)に対応した図26の応答開始処理メソッドの実行が開始される。
そして、図26に示すように、応答開始処理メソッドの実行が開始されると、そのS750にて、メッセージ送信要求(1,2)が出される。
【0201】
すると、図7のメッセージキューイング処理が実行されて、オブジェクトメッセージ格納部12にオブジェクトメッセージ(1,2)がキューイングされる。そして、オブジェクトメッセージ(1,2)のキューイングが終わると、処理の実行が図26の応答開始処理メソッドに戻り、このメソッドの処理が終了すると、図9のメッセージ配送処理が実行されて、オブジェクトメッセージ格納部12にキューイングされているオブジェクトメッセージ(1,2)が配送される。
【0202】
これにより、図22に示す応答メッセージ取得処理メソッドの実行が開始され、まずS610にて、RAM6の上記特定領域から、テスタ8へ送信すべきエンジン回転数のデータが、1バイト分だけ読み出される。尚、このS610では、前述したように、当該S610の処理が行われる毎に、RAM6の上記特定領域からエンジン回転数のデータを先頭の1バイト目から順に読み出す。
【0203】
そして、続くS620にて、メッセージ送信要求(2,4)が出される。
すると、図7のメッセージキューイング処理が実行されて、オブジェクトメッセージ格納部12にオブジェクトメッセージ(2,4)がキューイングされる。そして、オブジェクトメッセージ(2,4)のキューイングが終わると、処理の実行が図22の応答メッセージ取得処理メソッドに戻り、このメソッドの処理が終了すると、図9のメッセージ配送処理が実行されて、オブジェクトメッセージ格納部12にキューイングされているオブジェクトメッセージ(2,4)が配送される。
【0204】
これにより、図27に示す送信処理メソッドの実行が開始される。
図27に示すように、送信処理メソッドの実行が開始されると、まずS760にて、上記応答メッセージ取得処理メソッドのS610でRAM6から読み出されたエンジン回転数の1バイト分のデータが、テスタ8側で受信可能なデータに逆変換されて、シリアル通信用インターフェースの送信レジスタに転送される。そして、続くS765にて、上記送信レジスタ内の1バイトデータが、テスタ8へ送信される。
【0205】
次に、S770にて、テスタ8へ送信したデータ(応答メッセージ)のバイト数をカウントするためのカウンタCNが1インクリメントされ、続くS775にて、上記カウンタCNの値が2であるか否かが判定される。尚、カウンタCNの初期値は0である。
【0206】
ここで、テスタ8へ応答メッセージの1バイト目を送信した時点では、上記カウンタCNの値が未だ1であるため、上記S775で否定判定されて、S795に移行する。そして、このS795にて、図18に示したP1タイマを起動するためにタイマメッセージ送信要求(2,3,P1)が出される。
【0207】
すると、図11のタイマメッセージキューイング処理が実行されて、前述した手順と全く同様に、タイマメッセージ格納部13にタイマメッセージ(2,3,P1)がキューイングされる。尚、この時点で、タイマメッセージ格納部13には、タイマメッセージ(2,3,P1)とタイマメッセージ(2,1,P3)との2つが記憶されることとなる。
【0208】
そして、タイマメッセージ(2,3,P1)のキューイングが終わると、処理の実行が再び図27の送信処理メソッドに戻るが、応答メッセージの1バイト目を送信した場合(詳しくは、図27のS775で否定判定された場合であり、応答メッセージの最終バイトを送信した時でない場合)には、送信処理メソッドの処理がそのまま終了する。
【0209】
すると、図9のメッセージ配送処理が実行されて、そのS210にて、オブジェクトメッセージ格納部12にオブジェクトメッセージがキューイングされているか否かがチェックされるが、この場合には、キューイングされているオブジェクトメッセージが無いため、メッセージ配送制御部10はメッセージ受信待ち状態となる。
【0210】
そして、その後は、前述した回転数取得処理メソッド(図23)の実行が終了してから最初に応答開始処理メソッド(図26)の実行が開始されるまでの期間と同様に、メッセージ配送制御部10がメッセージ配送状態に戻り、他のオブジェクトのメソッドが順次実行される。
【0211】
ここで、図27の送信処理メソッドのS795で出されたタイマメッセージ(2,3,P1)がタイマメッセージ格納部13にキューイングされてから、時間t1が経過すると、そのタイマメッセージ(2,3,P1)のタイマカウンタが、図13のタイマクロック処理のS410によって0に達する。
【0212】
そして、そのタイマメッセージ(2,3,P1)は、上記タイマクロック処理のS430により、タイマメッセージ格納部13からオブジェクトメッセージ格納部12へ、オブジェクトメッセージ(2,3)としてキューイングし直される。尚、この時点で、タイマメッセージ格納部13には、タイマメッセージ(2,1,P3)のみが記憶されることとなる。
【0213】
そして更に、そのキューイングし直されたメッセージ(2,3)は、実行中の何れかのメソッドの処理が終了した時点で、各オブジェクトから出される本来のオブジェクトメッセージと全く同様に、図9のメッセージ配送処理によって配送されることとなる。
【0214】
このため、タイマメッセージ(2,3,P1)がタイマメッセージ格納部13にキューイングされてから時間t1が経過した場合にも、タイマメッセージ(2,3,P2)がタイマメッセージ格納部13にキューイングされてから時間t2が経過した場合と全く同様に、オブジェクトメッセージ(2,3)に対応した図26の応答開始処理メソッドの実行が開始される。そして、その応答開始処理メソッドの次に、図22の応答メッセージ取得処理メソッドが実行され、次いで、図27の送信処理メソッドが実行されることとなる。
【0215】
そして、応答メッセージ取得処理メソッドと送信処理メソッドとの2回目の実行により、テスタ8へ、応答メッセージの最終バイトである2バイト目が送信されることとなる。
ここで、こうした2バイト目の送信時において、図27の送信処理メソッドでは、S775にて、カウンタCNの値が2であると肯定判定され、次のS780にて、カウンタCNの値が0に初期化される。
【0216】
そして、図18に示したP3タイマの再起動を行うために、まずS785にて、タイマメッセージ削除要求(2,1)が出される。
すると、図15のタイマメッセージ削除処理が実行されて、タイマメッセージ格納部13からタイマメッセージ(2,1,P3)が消去される。
【0217】
即ち、まず図15のS500にて、タイマメッセージ格納部13の中から、OID及びMIDがタイマメッセージ削除要求(2,1)と一致しているタイマメッセージ(2,1,P3)が、消去対象のタイマメッセージとして選択され、S520にて、そのタイマメッセージ(2,1,P3)が書き込まれているタイマメッセージブロックの記憶内容が消去され、更にS530にて、記憶内容を消去したタイマメッセージブロックが、タイマメッセージ格納部13から空きメモリブロック格納部14へ、空きメモリブロックとして返却される。
【0218】
そして、このようにしてタイマメッセージ(2,1,P3)の消去が終わると、処理の実行が図27の送信処理メソッドに戻り、図27のS790にて、タイマメッセージ送信要求(2,1,P3)が出される。
すると、図11のタイマメッセージキューイング処理が実行されて、タイマメッセージ格納部13に、タイマメッセージ(2,1,P3)が改めてキューイングされ、これにより、図18に示したP3タイマの再起動が完了する。
【0219】
そして、タイマメッセージ(2,1,P3)のキューイングが終わると、処理の実行が再び図27の送信処理メソッドに戻り、このメソッドの処理が終了すると、図9のメッセージ配送処理が実行されるが、この場合には、オブジェクトメッセージ格納部12にキューイングされているオブジェクトメッセージが無いため、図9の210で否定判定されて、メッセージ配送制御部10はメッセージ受信待ち状態となる。
【0220】
その後、前述した回転数取得処理メソッド(図23)の実行が終了してから最初に応答開始処理メソッド(図26)の実行が開始されるまでの期間と同様に、メッセージ配送制御部10がメッセージ配送状態に戻り、他のオブジェクトのメソッドが順次実行される。
そして、図27の送信処理メソッドのS790で出されたタイマメッセージ(2,1,P3)がタイマメッセージ格納部13にキューイングされてから(つまり、P3タイマが再起動されてから)、時間t3が経過すると、そのタイマメッセージ(2,1,P3)のタイマカウンタが、図13のタイマクロック処理のS410によって0となり、そのタイマメッセージ(2,1,P3)が、タイマクロック処理のS430により、タイマメッセージ格納部13からオブジェクトメッセージ格納部12へ、オブジェクトメッセージ(2,1)としてキューイングし直される。そして更に、そのキューイングし直されたメッセージ(2,1)は、実行中の何れかのメソッドの処理が終了した時点で、図9のメッセージ配送処理により配送されることとなる。
【0221】
このため、テスタ8へ応答メッセージの最終バイト(2バイト目)を送信してから時間t3が経過すると、オブジェクトメッセージ(2,1)に対応した図24の受信待ち処理メソッドの実行が開始される。
そして、図24に示すように、受信待ち処理メソッドの実行が開始されると、そのS700にて、通信回路7やマイクロコンピュータ内のシリアル通信用インターフェースが受信可能状態に設定され、その後、当該受信待ち処理メソッドの実行が終了する。
【0222】
すると、図9のメッセージ配送処理が実行されるが、この場合には、オブジェクトメッセージ格納部12にキューイングされているオブジェクトメッセージが無いため、図9の210で否定判定されて、メッセージ配送制御部10はメッセージ受信待ち状態となる。
【0223】
そして、その後、前述した回転数取得処理メソッド(図23)の実行が終了してから最初に応答開始処理メソッド(図26)の実行が開始されるまでの期間と同様に、メッセージ配送制御部10がメッセージ配送状態に戻って、他のオブジェクトのメソッドが順次実行される。そして、テスタ8からの次の要求メッセージが受信されると、前述の通信動作起動用メソッドが実行されてメッセージ送信要求(2,2)が出され、それに伴い、テスタ8へ応答メッセージを送信するための前述した各処理が、再び順次行われることとなる。
【0224】
一方、テスタ8からの要求メッセージを正常に受信したにも拘わらず、その時点から時間t3以内に何らかの原因で応答メッセージを送信できなかった場合には、図27に示した送信処理メソッドのS785が実行されず、タイマメッセージ削除要求(2,1)が出されなくなる。
【0225】
よって、何らかの原因で応答メッセージを送信できなかった場合には、図25のテスタ読み込み処理メソッドのS730で出されたタイマメッセージ(2,1,P3)がタイマメッセージ格納部13にキューイングされてから(つまり、P3タイマが最初に起動されてから)、時間t3が経過すると、そのタイマメッセージ(2,1,P3)のタイマカウンタが図13のタイマクロック処理のS410によって0となり、そのタイマメッセージ(2,1,P3)が、タイマクロック処理のS430により、タイマメッセージ格納部13からオブジェクトメッセージ格納部12へ、オブジェクトメッセージ(2,1)としてキューイングし直されることとなる。そして、そのキューイングし直されたメッセージ(2,1)は、図9のメッセージ配送処理により配送されることとなる。
【0226】
このため、テスタ8からの要求メッセージを受信してから、応答メッセージを送信できずに時間t3が経過した場合にも、図24の受信待ち処理メソッドの実行が開始されて、そのS700により、通信回路7やシリアル通信用インターフェースが受信可能状態に設定されることとなり、テスタ8から再送信される要求メッセージの受信準備がなされる。
【0227】
そして、図21〜図28に示した各オブジェクトOB1〜OB3のメソッドが上述したように順次実行されることにより、テスタ8との間のデータ通信を制御するための処理が、図18及び図19のメッセージシーケンスチャートに示した順序で行われることとなる。
【0228】
尚、本実施形態では、図7のメッセージキューイング処理が、第1の記憶制御手段に相当し、図9のメッセージ配送処理が、起動制御手段に相当している。そして、図11のタイマメッセージキューイング処理が、第2の記憶制御手段に相当し、図13のタイマクロック処理が、遅延制御手段に相当している。また、図15のタイマメッセージ削除処理が、消去手段に相当し、ROM5及びそれに格納された接続情報データベース16が、格納位置記憶手段に相当している。
【0229】
以上のように、本実施形態のECU1では、オブジェクトのメソッドの実行により、タイマカウンタが含まれないオブジェクトメッセージ(メッセージ送信要求)が出されると、図7のメッセージキューイング処理を実行して、そのオブジェクトメッセージをオブジェクトメッセージ格納部12に記憶(キューイング)するようにしている。
【0230】
そして、何れかのオブジェクトのメソッドの実行が終了した時点で、図9のメッセージ配送処理を実行して、オブジェクトメッセージ格納部12に記憶されているオブジェクトメッセージのうち最初に記憶されたオブジェクトメッセージを読み出し、その読み出したオブジェクトメッセージの出力先であるオブジェクトのメソッドの実行へ移行すると共に、その読み出したオブジェクトメッセージをオブジェクトメッセージ格納部12から消去するようにしている。
【0231】
このため、本実施形態のECU1によれば、各オブジェクトのメソッドを、リアルタイムに実行することができる。つまり、オブジェクト間メッセージ通信にフラグチェックの手法を適用した場合の如くリアルタイム性に欠けることがなく、各オブジェクトのメソッドをイベントドリブンで実行することができる。
【0232】
しかも、オブジェクト間メッセージ通信に関数コールの手法を適用した場合のように、実行中のオブジェクトのメソッドを中断して他のオブジェクトのメソッドを実行する、といったものではないため、各オブジェクトのメソッドを、多くのメモリ資源を消費することなく実行することができる。つまり、オブジェクト間メッセージ通信に関数コールの手法を適用した場合には、マイクロコンピュータのプログラムカウンタや各種レジスタ(図示省略)の値を記憶しなければならないが、本実施形態のECU1によれば、メッセージのみを記憶すれば良く、記憶すべき情報量が格段に少なくて済む。
【0233】
また、本実施形態のECU1では、オブジェクトメッセージ格納部12から読み出して配送したオブジェクトメッセージを、そのオブジェクトメッセージ格納部12から消去するようにしている。詳しくは、読み出したオブジェクトメッセージが格納されていたオブジェクトメッセージ格納部12のメモリブロックを、空きメモリブロック格納部14へ返すようにしている。このため、オブジェクトメッセージ格納部12内に不用となったオブジェクトメッセージが残ることを防止でき、メモリ資源であるRAM6の記憶領域を有効に活用することができる。
【0234】
そして更に、本実施形態のECU1では、オブジェクトのメソッドの実行により、タイマカウンタが含まれたタイマメッセージ(タイマメッセージ送信要求)が出されると、図11のタイマメッセージキューイング処理を実行して、そのタイマメッセージをタイマメッセージ格納部13に記憶(キューイング)するようにしている。
【0235】
また、所定時間t毎のタイマクロック要求が発生する度に図13のタイマクロック処理を実行して、タイマメッセージ格納部13に記憶されているタイマメッセージのタイマカウンタを1ずつ減らすと共に、タイマカウンタが0に達したタイマメッセージを、オブジェクトメッセージ格納部12にオブジェクトメッセージとして記憶し直すようにしている。そして、オブジェクトメッセージ格納部12にオブジェクトメッセージとして記憶し直されたタイマメッセージは、オブジェクトから出される本来のオブジェクトメッセージと全く同様に、図9のメッセージ配送処理によって読み出され、その結果、そのメッセージのOID及びMIDにより指定されるオブジェクトのメソッドが実行されることとなる。
【0236】
よって、オブジェクトのメソッドの実行によりタイマメッセージ出されると、そのタイマメッセージのタイマカウンタに相当する時間(=t×タイマカウンタの値)が経過してから、当該タイマメッセージのOID及びMIDにより指定されるオブジェクトのメソッドが実行されることとなる。
【0237】
このため、本実施形態のECU1によれば、各オブジェクトのメソッドを、リアルタイムに且つ多くのメモリ資源を消費することなく実行することができるだけではなく、ある時点から所定の時間が経過した後に特定のオブジェクトのメソッドの実行を開始する、といった時間待ち処理をも容易に実現することができる。
【0238】
例えば、前述した図17〜図28の具体例では、図25のテスタ読み込み処理メソッドのS725でタイマメッセージ(2,3,P2)が出されてから(図18に示したP2タイマの起動から)、時間t2が経過した後に、図26の応答開始処理メソッドの実行を開始することができ、また、図27の送信処理メソッドのS795でタイマメッセージ(2,3,P1)が出されてから(図18に示したP1タイマの起動から)、時間t1が経過した後に、図26の応答開始処理メソッドの実行を開始することができる。また更に、図27の送信処理メソッドのS790でタイマメッセージ(2,1,P3)が出されてから(図18に示したP3タイマの再起動から)、時間t3が経過した後に、図24の受信待ち処理メソッドの実行を開始することができる。
【0239】
しかも、本実施形態のECU1によれば、タイマメッセージ格納部13に記憶されているタイマメッセージのタイマカウンタが0に達するまでの期間においても、他のオブジェクトのメソッドを順次実行することができるため、処理を進めていく上で無駄な時間消費が生じることもない。
【0240】
また、本実施形態のECU1では、タイマメッセージ格納部13が複数個のタイマメッセージを記憶可能であると共に、図13のタイマクロック処理においては、タイマメッセージ格納部13に記憶されている全てのタイマメッセージのタイマカウンタを1ずつ減らし、タイマカウンタが0に達したタイマメッセージを、タイマメッセージ格納部13からオブジェクトメッセージ格納部12へ、オブジェクトメッセージとして記憶し直すようにしている。
【0241】
このため、本実施形態のECU1によれば、タイマメッセージ格納部13に複数のタイマメッセージが記憶されている状況下において、複数のメソッドの実行開始を遅らせるための各時間を、並列に計時することとなり、複数系統の時間待ち処理を容易に行うことができるようになる。
【0242】
例えば、前述した図17〜図28の具体例では、図25のテスタ読み込み処理メソッドのS725でタイマメッセージ(2,3,P2)が出されてから(図18に示したP2タイマの起動から)、図26の応答開始処理メソッドの実行を開始するまでの時間t2の計時と、図25のテスタ読み込み処理メソッドのS730でタイマメッセージ(2,1,P3)が出されてから(図18に示した最初のP3タイマの起動から)、図24の受信待ち処理メソッドの実行を開始するまでの時間t3の計時とを、並列に行うことができる。また、図27の送信処理メソッドのS795でタイマメッセージ(2,3,P1)が出されてから(図18に示したP1タイマの起動から)、図26の応答開始処理メソッドの実行を開始するまでの時間t1の計時と、図25のテスタ読み込み処理メソッドのS730でタイマメッセージ(2,1,P3)が出されてから図24の受信待ち処理メソッドの実行を開始するまでの時間t3の計時とを、並列に行うことができる。
【0243】
しかも、本実施形態のECU1では、オブジェクトメッセージ格納部12にオブジェクトメッセージとして記憶し直したタイマメッセージを、タイマメッセージ格納部13から消去するようにしている。詳しくは、タイマメッセージが格納されていたタイマメッセージ格納部13のメモリブロックを、オブジェクトメッセージ格納部12へ移動させるようにしている。このため、タイマメッセージ格納部13に不用となった(即ち、タイマカウンタが0となった)タイマメッセージが残ることを防止でき、メモリ資源であるRAM6の記憶領域を有効に活用することができる。
【0244】
そして更に、本実施形態のECU1では、オブジェクトのメソッドの実行により、タイマメッセージ削除要求が出されると、図15のタイマメッセージ削除処理を実行して、そのタイマメッセージ削除要求とOID及びMIDが一致するタイマメッセージを、タイマメッセージ格納部13から消去するようにしている。
【0245】
このため、本実施形態のECU1によれば、ある時点から所定の時間が経過するまでに、監視対象の処理が行われないと、特定のオブジェクトのメソッドを実行する、といったタイムアウト処理を、タイマ割り込み機構のような特別な手段を設けることなく、容易に実現することができる。
【0246】
例えば、前述した図17〜図28の具体例では、図25のテスタ読み込み処理メソッドのS730でタイマメッセージ(2,1,P3)が出されてから(図18に示した最初のP3タイマの起動から)、時間t3が経過するまでの間に、図27の送信処理メソッドが2回実行されなければ、その送信処理メソッドのS785でタイマメッセージ削除要求(2,1)が出されないため、図18に示した最初のP3タイマの起動から時間t3が経過すると、特定のオブジェクトのメソッドとしての、図24の受信待ち処理メソッドが実行されることとなる。
【0247】
一方更に、本実施形態のECU1では、オブジェクトのメソッドの実行によって出されるメッセージに、出力先のオブジェクトのメソッドを示す識別コードとしての、OID(オブジェクト識別番号)とMID(メソッド識別番号)とが含まれている。また、本実施形態のECU1は、図3に示したように、OIDとMIDの各組み合せと、それら各組み合せが示すオブジェクトのメソッドが格納されているROM5の先頭アドレスである格納位置情報としての実行開始アドレスとを、対応付けて記憶した接続情報データベース16を備えている。そして、図9のメッセージ配送処理では、オブジェクトメッセージ格納部12から読み出したオブジェクトメッセージのOID及びMIDに対応するオブジェクトのメソッドの実行開始アドレスを、接続情報データベース16の記憶内容から特定して、上記読み出したオブジェクトメッセージの出力先であるオブジェクトのメソッドの実行へ移行するようにしている。
【0248】
このため、プログラムの設計変更等に伴うオブジェクトの修正によって、そのオブジェクトを構成するメソッドのROM5における格納位置が変わった場合でも、接続情報データベース16の内容を変更するだけで、対応することができる。つまり、各オブジェクトの独立性が向上し、プログラムの設計変更が容易となる。
【0249】
以上、本発明の一実施形態について説明したが、本発明は、前述した実施形態に限定されるものではなく、種々の形態を採り得ることは言うまでもない。
例えば、上記実施形態において、図13のタイマクロック処理を起動するイベントとしてのタイマクロック要求は、所定時間t毎に発生するものであったが、そのタイマクロック要求は、回転センサからパルス信号が出力された時など、時間に非同期なイベントに応じて発生するように構成することもできる。例えば、回転センサからパルス信号が出力された時にタイマクロック要求が発生するように構成した場合には、タイマメッセージ格納部13に記憶されている各タイマメッセージのタイマカウンタは、回転センサからパルス信号が出力される毎に、1ずつ減算されることとなる。
【0250】
また、上記実施形態では、全てのオブジェクトが1つのROM5に格納されていたが、オブジェクトのメソッドが複数のROMに格納されている場合には、接続情報データベース16内の格納位置情報としては、どのROMのどの実行開始アドレスといった情報を記憶させておけば良い。
【0251】
一方、上記実施形態のECU1は、車両のエンジンを制御するものであったが、本発明は、例えば車両の自動変速機やサスペンションなど、その他の制御対象を制御する電子制御装置に対しても、全く同様に適用することができる。
【図面の簡単な説明】
【図1】 実施形態の電子制御装置(ECU)のハードウェア構成を表すブロック図である。
【図2】 ROMに格納された制御用の各オブジェクトと、メッセージ配送制御部との関係を示す概念図である。
【図3】 接続情報データベースを説明する説明図である。
【図4】 メッセージ配送制御部の状態遷移を説明する状態遷移図である。
【図5】 メッセージ配送制御部の初期化処理を表すフローチャートである。
【図6】 メッセージ配送制御部のシリアライズ処理を表すフローチャートである。
【図7】 メッセージ配送制御部のメッセージキューイング処理を表すフローチャートである。
【図8】 メッセージキューイング処理を説明する説明図である。
【図9】 メッセージ配送制御部のメッセージ配送処理を表すフローチャートである。
【図10】 メッセージ配送処理を説明する説明図である。
【図11】 メッセージ配送制御部のタイマメッセージキューイング処理を表すフローチャートである。
【図12】 タイマメッセージキューイング処理を説明する説明図である。
【図13】 メッセージ配送制御部のタイマクロック処理を表すフローチャートである。
【図14】 タイマクロック処理を説明する説明図である。
【図15】 メッセージ配送制御部のタイマメッセージ削除処理を表すフローチャートである。
【図16】 タイマメッセージ削除処理を説明する説明図である。
【図17】 ECUとテスタとの間のデータ通信上の規則を説明する説明図である。
【図18】 テスタとのデータ通信を制御するための各オブジェクトの処理概要を表すメッセージシーケンスチャートである。
【図19】 図18にて六角形の枠で示した応答メッセージ送信処理の部分のメッセージシーケンスチャートである。
【図20】 テスタとのデータ通信を制御するための各オブジェクトのメソッドを説明する説明図である。
【図21】 サービスオブジェクトの要求メッセージ受信通知処理メソッドを表すフローチャートである。
【図22】 サービスオブジェクトの応答メッセージ取得処理メソッドを表すフローチャートである。
【図23】 サービスオブジェクトの回転数保存処理メソッドを表すフローチャートである。
【図24】 通信ハンドラオブジェクトの受信待ち処理メソッドを表すフローチャートである。
【図25】 通信ハンドラオブジェクトのテスタ読み込み処理メソッドを表すフローチャートである。
【図26】 通信ハンドラオブジェクトの応答開始処理メソッドを表すフローチャートである。
【図27】 通信ハンドラオブジェクトの送信処理メソッドを表すフローチャートである。
【図28】 回転センサオブジェクトの回転数取得処理メソッドを表すフローチャートである。
【図29】 オブジェクト指向によって作成されたプログラムの一例を説明するメッセージシーケンスチャートである。
【図30】 オブジェクト間メッセージ通信にフラグチェックの手法を適用した場合の問題を説明する説明図である。
【図31】 オブジェクト間メッセージ通信に関数コールの手法を適用した場合の問題を説明する説明図である。
【符号の説明】
1…電子制御装置(ECU) 2…入力回路 3…CPU
4…出力回路 5…ROM 6…RAM 7…通信回路
8…故障診断用の外部装置(テスタ) 9…通信線
10…メッセージ配送制御部 12…オブジェクトメッセージ格納部
13…タイマメッセージ格納部 14…空きメモリブロック格納部
16…接続情報データベース OB1…サービスオブジェクト
OB2…通信ハンドラオブジェクト OB3…回転センサオブジェクト
Claims (7)
- 制御用のプログラムを単位機能毎に細分化したオブジェクトのメソッドを1つのCPUがそれぞれ実行することにより、前記各単位機能を実現するための処理を夫々行う複数の単位処理手段が実現され、
前記CPUが前記複数の単位処理手段のうちの何れかを実現するメソッドの実行を開始すると、そのメソッドの処理が全て終了するまでは他の単位処理手段を実現するメソッドを実行しないようになっていることにより、前記複数の単位処理手段の何れかが択一的に処理動作を行うようになっており、
更に、前記各単位処理手段が、その処理動作中に何れかの単位処理手段を出力先として示す処理依頼としてのメッセージを出すことにより、そのメッセージの出力先である単位処理手段が処理を行うように構成された自動車用電子制御装置であって、
前記各単位処理手段が出すメッセージとしては、該メッセージの出力先である単位処理手段が処理動作を開始するまでの遅延時間を示すカウント値が含まれない第1種メッセージと、前記カウント値が含まれた第2種メッセージとがあり、
前記単位処理手段が出した前記第1種メッセージを、前記複数の単位処理手段に共通の第1のメッセージ記憶手段に記憶する第1の記憶制御手段と、
前記複数の単位処理手段の何れかが処理動作を終了した時点で、前記第1のメッセージ記憶手段に記憶されている第1種メッセージのうち最初に記憶された第1種メッセージを読み出し、その読み出した第1種メッセージの出力先である単位処理手段に処理を開始させると共に、前記読み出した第1種メッセージを前記第1のメッセージ記憶手段から消去する起動制御手段と、
前記単位処理手段が出した前記第2種メッセージを、前記複数の単位処理手段に共通の第2のメッセージ記憶手段に記憶する第2の記憶制御手段と、
予め定められたイベントが発生する毎に、前記第2のメッセージ記憶手段に記憶されている第2種メッセージの前記カウント値を所定値ずつ減らし、該カウント値が予め定められた設定値に達すると、その第2種メッセージを、前記第1のメッセージ記憶手段に前記第1種メッセージとして記憶し直す遅延制御手段と、
を備えたことを特徴とする自動車用電子制御装置。 - 請求項1に記載の自動車用電子制御装置において、
前記第2のメッセージ記憶手段は、前記第2種メッセージを複数個記憶可能に構成されており、
前記遅延制御手段は、前記第2のメッセージ記憶手段に記憶されている全ての第2種メッセージの前記カウント値を、前記イベントが発生する毎に所定値ずつ減らし、前記カウント値が前記設定値となった第2種メッセージを、前記第1のメッセージ記憶手段に前記第1種メッセージとして記憶し直すように構成されていること、
を特徴とする自動車用電子制御装置。 - 請求項1又は請求項2に記載の自動車用電子制御装置において、
前記遅延制御手段は、前記第1種メッセージとして記憶し直した第2種メッセージを、前記第2のメッセージ記憶手段から消去するように構成されていること、
を特徴とする自動車用電子制御装置。 - 請求項1ないし請求項3の何れかに記載の自動車用電子制御装置において、
前記単位処理手段から、何れかの単位処理手段を示す第2種メッセージの消去要求が出されると、その消去要求に対応した第2種メッセージを前記第2のメッセージ記憶手段から消去する消去手段を備えていること、
を特徴とする自動車用電子制御装置。 - 請求項1ないし請求項4の何れかに記載の自動車用電子制御装置において、
前記オブジェクトのメソッドは、所定のプログラム記憶手段に記憶されていると共に、
前記第1種及び第2種メッセージには、該メッセージの出力先である単位処理手段に対応したオブジェクトのメソッドを示す識別コードが含まれており、
前記起動制御手段は、前記識別コードと、該識別コードが示すメソッドの前記プログラム記憶手段における格納位置を表わす格納位置情報とを、対応付けて記憶した格納位置記憶手段を備えると共に、前記第1のメッセージ記憶手段から読み出した第1種メッセージに含まれている識別コードが示すメソッドの前記プログラム記憶手段における格納位置を、前記格納位置記憶手段の記憶内容に基づき特定することにより、前記読み出した第1種メッセージの出力先である単位処理手段に処理を開始させるよう構成されていること、
を特徴とする自動車用電子制御装置。 - 請求項5に記載の自動車用電子制御装置において、
前記格納位置情報は、前記プログラム記憶手段の記憶領域を示すアドレスであること、
を特徴とする自動車用電子制御装置。 - 請求項1ないし請求項6の何れかに記載の自動車用電子制御装置において、
前記複数の単位処理手段のうち、第1の単位処理手段が、その処理動作中に、第2の単位処理手段に対する処理依頼としての第2の第1種メッセージと、第3の単位処理手段に対する処理依頼としての第3の第1種メッセージとを、第2の第1種メッセージ、第3の第1種メッセージの順に出力し、その各第1種メッセージが前記第1のメッセージ記憶手段に順次記憶され、
前記起動制御手段は、前記第1の単位処理手段が処理動作を終了した時点で、前記第1のメッセージ記憶手段に記憶されている前記第2の第1種メッセージを読み出して、該第2の第1種メッセージの出力先である前記第2の単位処理手段に処理動作を開始させ、該第2の単位処理手段の処理動作が終了した時点で、前記第1のメッセージ記憶手段に記憶されている前記第3の第1種メッセージを読み出して、該第3の第1種メッセージの出力先である前記第3の単位処理手段に処理動作を開始させること、
を特徴とする自動車用電子制御装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP01200299A JP3663950B2 (ja) | 1999-01-20 | 1999-01-20 | 自動車用電子制御装置 |
US09/475,676 US6665566B1 (en) | 1999-01-20 | 1999-12-30 | Electric control apparatus operable on object-oriented program |
ES00100431T ES2384955T3 (es) | 1999-01-20 | 2000-01-10 | Aparato de control electrónico operable sobre programa orientado al objeto |
EP00100431A EP1022657B1 (en) | 1999-01-20 | 2000-01-10 | Electronic control apparatus operable on object-oriented program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP01200299A JP3663950B2 (ja) | 1999-01-20 | 1999-01-20 | 自動車用電子制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000207174A JP2000207174A (ja) | 2000-07-28 |
JP3663950B2 true JP3663950B2 (ja) | 2005-06-22 |
Family
ID=11793391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP01200299A Expired - Fee Related JP3663950B2 (ja) | 1999-01-20 | 1999-01-20 | 自動車用電子制御装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6665566B1 (ja) |
EP (1) | EP1022657B1 (ja) |
JP (1) | JP3663950B2 (ja) |
ES (1) | ES2384955T3 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6502001B1 (en) * | 1997-07-18 | 2002-12-31 | Denso Corporation | Electronic control unit having reduced inter-object message memory requirements for object-oriented control program |
DE10015114A1 (de) * | 2000-03-28 | 2001-10-04 | Bosch Gmbh Robert | Verfahren und Vorrichtung zur Modellierung eines mechatronischen Systems in einem Kraftfahrzeug |
EP1911653B1 (en) * | 2002-06-24 | 2012-05-02 | Denso Corporation | Vehicle control information transmission structure, vehicle control device using the transmission structure, and vehicle control simulator using the transmission structure |
JP3859564B2 (ja) * | 2002-08-05 | 2006-12-20 | 日本電気株式会社 | イベント通知タスク制御処理方式及び方法並びにプログラム |
JP2004078665A (ja) * | 2002-08-20 | 2004-03-11 | Nec Corp | タスク制御装置、及びタスク制御方法 |
JP4009602B2 (ja) * | 2004-03-02 | 2007-11-21 | 日本電気通信システム株式会社 | リアルタイムosを用いたタスク処理方法、装置、及びプログラム |
US20060253205A1 (en) * | 2005-05-09 | 2006-11-09 | Michael Gardiner | Method and apparatus for tabular process control |
JP5033343B2 (ja) * | 2006-03-28 | 2012-09-26 | 株式会社野村総合研究所 | ジョブ管理装置およびジョブ管理方法 |
US8856804B2 (en) * | 2008-02-08 | 2014-10-07 | Microsoft Corporation | Performance indicator for measuring responsiveness of user interface applications to user input |
TWI377580B (en) | 2008-04-03 | 2012-11-21 | Wistron Corp | Method and related device for data storage in an electronic device |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5551035A (en) * | 1989-06-30 | 1996-08-27 | Lucent Technologies Inc. | Method and apparatus for inter-object communication in an object-oriented program controlled system |
US5329619A (en) * | 1992-10-30 | 1994-07-12 | Software Ag | Cooperative processing interface and communication broker for heterogeneous computing environments |
US5453933A (en) * | 1993-09-08 | 1995-09-26 | Hurco Companies, Inc. | CNC control system |
GB9323241D0 (en) * | 1993-11-11 | 1994-01-05 | Int Computers Ltd | Message handler |
GB2293900B (en) * | 1994-10-03 | 2000-01-19 | Univ Westminster | Data processing method and apparatus for parallel discrete event simulation |
US5812390A (en) * | 1995-07-28 | 1998-09-22 | Dell Usa, L.P. | Apparatus and method for message variable reordering |
US6587889B1 (en) * | 1995-10-17 | 2003-07-01 | International Business Machines Corporation | Junction manager program object interconnection and method |
US5826095A (en) * | 1996-08-27 | 1998-10-20 | Hewlett-Packard Company | Method and apparatus for maintaining the order of data items processed by parallel processors |
US5844794A (en) * | 1996-10-18 | 1998-12-01 | Allen Bradley Company, Llc | Electronic data communications system having data consumer defining data transmission structure |
JP3663842B2 (ja) | 1997-07-18 | 2005-06-22 | 株式会社デンソー | 自動車用電子制御装置 |
-
1999
- 1999-01-20 JP JP01200299A patent/JP3663950B2/ja not_active Expired - Fee Related
- 1999-12-30 US US09/475,676 patent/US6665566B1/en not_active Expired - Fee Related
-
2000
- 2000-01-10 EP EP00100431A patent/EP1022657B1/en not_active Expired - Lifetime
- 2000-01-10 ES ES00100431T patent/ES2384955T3/es not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP1022657B1 (en) | 2012-04-11 |
JP2000207174A (ja) | 2000-07-28 |
EP1022657A2 (en) | 2000-07-26 |
US6665566B1 (en) | 2003-12-16 |
EP1022657A3 (en) | 2005-12-07 |
ES2384955T3 (es) | 2012-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3578082B2 (ja) | 処理実行装置及び記録媒体 | |
US7269678B2 (en) | Interrupt request program and microcomputer | |
KR970016979A (ko) | 다중 처리 시스템에서 타스크의 큐잉 시스템 및 방법 | |
JP3663950B2 (ja) | 自動車用電子制御装置 | |
JP3676882B2 (ja) | マイクロプロセッサ及びその周辺装置 | |
JP2002082816A (ja) | 障害監視システム | |
JP3663842B2 (ja) | 自動車用電子制御装置 | |
EP2541404B1 (en) | Technique for task sequence execution | |
JP2877095B2 (ja) | マルチプロセッサシステム | |
JPH11232148A (ja) | 計算機の負荷率計測方法及び計測システム | |
JP2001256062A (ja) | 割込処理方法およびその方法を用いた演算処理装置 | |
US6502001B1 (en) | Electronic control unit having reduced inter-object message memory requirements for object-oriented control program | |
JP2000267868A (ja) | 電子制御装置 | |
JP2000311102A (ja) | 電子制御装置 | |
KR101119458B1 (ko) | 비동기 통신 기술 | |
EP1227401A2 (en) | Task management device, method and program therefor | |
JP3367949B2 (ja) | 画像データ処理装置 | |
EP1020794A2 (en) | Electronic control unit having reduced inter-object message memory requirements for object-oriented control program | |
JP3706982B2 (ja) | メモリ使用状態の保存方法 | |
JPH02157957A (ja) | マイクロプロセッサ | |
JP4231465B2 (ja) | 組込み制御装置 | |
JP3096760B2 (ja) | 共通データ参照設定装置及び参照設定方法 | |
JPH0740231B2 (ja) | 非同期例外捕獲方式 | |
JPH11184712A (ja) | 情報処理装置 | |
JP2003067190A (ja) | プログラム転送制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040106 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040305 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040601 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040802 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050308 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050321 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080408 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110408 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120408 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120408 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130408 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |