JP2000267868A - 電子制御装置 - Google Patents
電子制御装置Info
- Publication number
- JP2000267868A JP2000267868A JP2000004481A JP2000004481A JP2000267868A JP 2000267868 A JP2000267868 A JP 2000267868A JP 2000004481 A JP2000004481 A JP 2000004481A JP 2000004481 A JP2000004481 A JP 2000004481A JP 2000267868 A JP2000267868 A JP 2000267868A
- Authority
- JP
- Japan
- Prior art keywords
- message
- unit
- stored
- processing
- electronic control
- 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.)
- Pending
Links
Abstract
(57)【要約】
【課題】 制御対象を制御するためのプログラムを単位
機能毎に細分化した各オブジェクトの処理を、多くのメ
モリ資源を消費することなく行うことのできる電子制御
装置を提供する。 【解決手段】 オブジェクトのメソッドの実行によりメ
ッセージが出されると、そのメッセージをオブジェクト
メッセージ格納部に記憶(キューイング)し、何れかの
オブジェクトのメソッドの実行が終了した時点で、メッ
セージ配送処理を実行して、オブジェクトメッセージ格
納部にメッセージが記憶されていれば(S210:YE
S)、キューイングメッセージ数をカウントした後(S
220)、最初に記憶されたメッセージを1つ読み出し
て(S230)、そのメッセージの出力先であるオブジ
ェクトのメソッドの実行へ移行する(S250,S26
0)。この結果、メッセージのみを記憶すれば良く、記
憶情報量が少なくて済む。
機能毎に細分化した各オブジェクトの処理を、多くのメ
モリ資源を消費することなく行うことのできる電子制御
装置を提供する。 【解決手段】 オブジェクトのメソッドの実行によりメ
ッセージが出されると、そのメッセージをオブジェクト
メッセージ格納部に記憶(キューイング)し、何れかの
オブジェクトのメソッドの実行が終了した時点で、メッ
セージ配送処理を実行して、オブジェクトメッセージ格
納部にメッセージが記憶されていれば(S210:YE
S)、キューイングメッセージ数をカウントした後(S
220)、最初に記憶されたメッセージを1つ読み出し
て(S230)、そのメッセージの出力先であるオブジ
ェクトのメソッドの実行へ移行する(S250,S26
0)。この結果、メッセージのみを記憶すれば良く、記
憶情報量が少なくて済む。
Description
【0001】
【発明の属する技術分野】本発明は、オブジェクト指向
のプログラムに従って制御対象を制御する電子制御装置
に関する。
のプログラムに従って制御対象を制御する電子制御装置
に関する。
【0002】
【従来の技術】従来より、例えば車両のエンジンを制御
する電子制御装置においては、マイクロコンピュータ
(詳しくは、マイクロコンピュータのCPU)によって
実行されるエンジン制御用のプログラムを、制御の種類
毎に作成するようにしていた。例えば燃料噴射制御に関
しては、エンジンの回転に同期した通常の噴射制御,エ
ンジンの回転とは非同期の噴射制御,及び高回転時の燃
料カット制御といった具合に、制御の種類毎(以下、制
御毎という)にプログラムを夫々作成していた。
する電子制御装置においては、マイクロコンピュータ
(詳しくは、マイクロコンピュータのCPU)によって
実行されるエンジン制御用のプログラムを、制御の種類
毎に作成するようにしていた。例えば燃料噴射制御に関
しては、エンジンの回転に同期した通常の噴射制御,エ
ンジンの回転とは非同期の噴射制御,及び高回転時の燃
料カット制御といった具合に、制御の種類毎(以下、制
御毎という)にプログラムを夫々作成していた。
【0003】しかしながら、制御毎にプログラムを作成
したのでは、各プログラムに共通部分が多く含まれるこ
ととなるため、プログラムを格納するメモリ資源やプロ
グラムの開発時間に無駄が生じてしまう。例えば、上記
燃料噴射制御の例では、各制御毎のプログラム中に、イ
ンジェクタ(燃料噴射弁)を駆動するための処理部分が
重複して設けられることとなる。また、各プログラムに
共通部分が多いため、その共通部分に関わる制御仕様を
変更しなければならない場合には、各プログラムの中か
ら仕様変更部分に関係するプログラムを捜し出して修正
する必要があり、プログラム開発に多大な時間を要して
しまうこととなっていた。
したのでは、各プログラムに共通部分が多く含まれるこ
ととなるため、プログラムを格納するメモリ資源やプロ
グラムの開発時間に無駄が生じてしまう。例えば、上記
燃料噴射制御の例では、各制御毎のプログラム中に、イ
ンジェクタ(燃料噴射弁)を駆動するための処理部分が
重複して設けられることとなる。また、各プログラムに
共通部分が多いため、その共通部分に関わる制御仕様を
変更しなければならない場合には、各プログラムの中か
ら仕様変更部分に関係するプログラムを捜し出して修正
する必要があり、プログラム開発に多大な時間を要して
しまうこととなっていた。
【0004】そこで、本発明者は、この種の電子制御装
置においても、パーソナルコンピュータなどの場合と同
様に、制御プログラムをオブジェクト指向によって作成
する(プログラミングする)ことを試みている。
置においても、パーソナルコンピュータなどの場合と同
様に、制御プログラムをオブジェクト指向によって作成
する(プログラミングする)ことを試みている。
【0005】オブジェクト指向とは、人間が行動すると
きの如く操作対象に注目して仕事を進めるという考え方
を、コンピュータシステムにモデル化したものであり、
このオブジェクト指向のプログラミングでは、プログラ
ムの処理を、オブジェクトという単位で考える。
きの如く操作対象に注目して仕事を進めるという考え方
を、コンピュータシステムにモデル化したものであり、
このオブジェクト指向のプログラミングでは、プログラ
ムの処理を、オブジェクトという単位で考える。
【0006】即ち、オブジェクトは、データとそのデー
タを処理する手続きであるプログラム(以下、メソッド
という)とを、一まとめにしたソフトウェアモジュール
であり、オブジェクト指向のプログラミングでは、制御
プログラムの全機能を部品毎などの単位機能毎に細分化
して、その単位機能毎にオブジェクトを用意する。そし
て、オブジェクト指向のプログラミングでは、オブジェ
クト間でメッセージのやり取りを行う、所謂オブジェク
ト間メッセージ通信の考え方を利用して、各オブジェク
トが結合される。
タを処理する手続きであるプログラム(以下、メソッド
という)とを、一まとめにしたソフトウェアモジュール
であり、オブジェクト指向のプログラミングでは、制御
プログラムの全機能を部品毎などの単位機能毎に細分化
して、その単位機能毎にオブジェクトを用意する。そし
て、オブジェクト指向のプログラミングでは、オブジェ
クト間でメッセージのやり取りを行う、所謂オブジェク
ト間メッセージ通信の考え方を利用して、各オブジェク
トが結合される。
【0007】ここで、エンジンのアイドル回転数を制御
するためのプログラムを、オブジェクト指向に基づき作
成した場合の一例について、図28を用いて説明する。
するためのプログラムを、オブジェクト指向に基づき作
成した場合の一例について、図28を用いて説明する。
【0008】尚、図28は、エンジンのアイドル回転数
制御に関する機能を細分してオブジェクト化し、これに
各オブジェクト間でのメッセージのやり取りを加えて示
したメッセージシーケンスチャートである。そして、こ
のメッセージシーケンスチャートでは、オブジェクトを
上下方向の線で示し、そのオブジェクト間でのメッセー
ジのやり取りを左右の矢印で示している。また、オブジ
ェクトを示す線の上にある長方形の枠は、そのオブジェ
クトの処理を表している。
制御に関する機能を細分してオブジェクト化し、これに
各オブジェクト間でのメッセージのやり取りを加えて示
したメッセージシーケンスチャートである。そして、こ
のメッセージシーケンスチャートでは、オブジェクトを
上下方向の線で示し、そのオブジェクト間でのメッセー
ジのやり取りを左右の矢印で示している。また、オブジ
ェクトを示す線の上にある長方形の枠は、そのオブジェ
クトの処理を表している。
【0009】一方、本明細書中の説明において、「オブ
ジェクトが…する。」や「オブジェクトは…する。」と
いったオブジェクトを主語とした動作表現は、実際に
は、マイクロコンピュータのCPUがオブジェクトに従
って動作する(換言すれば、CPUがオブジェクトのメ
ソッドを実行する)ことで実現される機能手段(即ち、
本発明における単位処理手段)が、上記「…」の動作を
行うことを示している。また、「オブジェクトが動作す
る」とは、マイクロコンピュータのCPUが、そのオブ
ジェクトのメソッドを実行することを示している。
ジェクトが…する。」や「オブジェクトは…する。」と
いったオブジェクトを主語とした動作表現は、実際に
は、マイクロコンピュータのCPUがオブジェクトに従
って動作する(換言すれば、CPUがオブジェクトのメ
ソッドを実行する)ことで実現される機能手段(即ち、
本発明における単位処理手段)が、上記「…」の動作を
行うことを示している。また、「オブジェクトが動作す
る」とは、マイクロコンピュータのCPUが、そのオブ
ジェクトのメソッドを実行することを示している。
【0010】まず最初に、図28に示した各オブジェク
トの機能について説明する。
トの機能について説明する。
【0011】ISCオブジェクトは、エンジンの水温値
などに基づき、エンジン回転数を最適なアイドル回転数
にするための目標スロットル開度を算出するオブジェク
トであり、水温センサオブジェクトは、エンジンの水温
を検出する水温センサからのアナログ信号をAD変換し
たデジタル値を、水温値に変換するオブジェクトであ
る。そして、AD変換器オブジェクトは、水温センサか
らのアナログ信号をデジタル値に変換(AD変換)する
ためのAD変換器を制御するオブジェクトであり、スロ
ットルコントローラオブジェクトは、エンジンのスロッ
トル弁を、ISCオブジェクトによって算出された目標
スロットル開度となるように制御するオブジェクトであ
る。
などに基づき、エンジン回転数を最適なアイドル回転数
にするための目標スロットル開度を算出するオブジェク
トであり、水温センサオブジェクトは、エンジンの水温
を検出する水温センサからのアナログ信号をAD変換し
たデジタル値を、水温値に変換するオブジェクトであ
る。そして、AD変換器オブジェクトは、水温センサか
らのアナログ信号をデジタル値に変換(AD変換)する
ためのAD変換器を制御するオブジェクトであり、スロ
ットルコントローラオブジェクトは、エンジンのスロッ
トル弁を、ISCオブジェクトによって算出された目標
スロットル開度となるように制御するオブジェクトであ
る。
【0012】次に、図28の各オブジェクトによって実
現される処理の内容について説明する。
現される処理の内容について説明する。
【0013】まず、アイドル回転数制御タイミングにな
るとISCオブジェクトが動作を開始する(つまり、C
PUがISCオブジェクトのメソッドの実行を開始す
る)。そして、図28のに示すように、ISCオブジ
ェクトが、水温センサオブジェクトに水温取得要求のメ
ッセージを送る。
るとISCオブジェクトが動作を開始する(つまり、C
PUがISCオブジェクトのメソッドの実行を開始す
る)。そして、図28のに示すように、ISCオブジ
ェクトが、水温センサオブジェクトに水温取得要求のメ
ッセージを送る。
【0014】すると、水温センサオブジェクトが動作し
て、図28のに示すように、AD変換器オブジェクト
に水温AD値取得要求のメッセージを送る。そして、そ
の水温AD値取得要求のメッセージに伴い、AD変換器
オブジェクトが動作して、水温センサからのアナログ信
号をデジタル信号に変換する演算を行う。
て、図28のに示すように、AD変換器オブジェクト
に水温AD値取得要求のメッセージを送る。そして、そ
の水温AD値取得要求のメッセージに伴い、AD変換器
オブジェクトが動作して、水温センサからのアナログ信
号をデジタル信号に変換する演算を行う。
【0015】AD変換器オブジェクトは、上記演算を終
了した後、図28のに示すように、水温センサオブジ
ェクトに水温AD値取得応答のメッセージ(即ち、水温
センサのデジタル変換が終了したというメッセージ)を
送る。
了した後、図28のに示すように、水温センサオブジ
ェクトに水温AD値取得応答のメッセージ(即ち、水温
センサのデジタル変換が終了したというメッセージ)を
送る。
【0016】すると、水温センサオブジェクトが、AD
変換器オブジェクトの演算結果に基づいて水温値を算出
し、その算出後、図28のに示すように、ISCオブ
ジェクトに水温取得応答のメッセージ(即ち、水温値の
算出が終了したというメッセージ)を送る。
変換器オブジェクトの演算結果に基づいて水温値を算出
し、その算出後、図28のに示すように、ISCオブ
ジェクトに水温取得応答のメッセージ(即ち、水温値の
算出が終了したというメッセージ)を送る。
【0017】そして、上記水温取得応答のメッセージに
伴い、ISCオブジェクトが、上記算出された水温値に
基づいて目標スロットル開度を算出し、その算出後、I
SCオブジェクトは、図28のに示すように、スロッ
トルコントローラオブジェクトにスロットル設定要求の
メッセージ(即ち、目標スロットル開度を算出したこと
を示すメッセージ)を送る。
伴い、ISCオブジェクトが、上記算出された水温値に
基づいて目標スロットル開度を算出し、その算出後、I
SCオブジェクトは、図28のに示すように、スロッ
トルコントローラオブジェクトにスロットル設定要求の
メッセージ(即ち、目標スロットル開度を算出したこと
を示すメッセージ)を送る。
【0018】すると、スロットルコントローラオブジェ
クトが動作して、エンジンのスロットル弁を、上記算出
された目標スロットル開度となるように制御し、これに
より、エンジン回転数が最適なアイドル回転数に制御さ
れる。
クトが動作して、エンジンのスロットル弁を、上記算出
された目標スロットル開度となるように制御し、これに
より、エンジン回転数が最適なアイドル回転数に制御さ
れる。
【0019】このように、オブジェクト指向のプログラ
ムでは、各オブジェクトが他のオブジェクトに対し処理
依頼としてのメッセージを出すことにより、そのメッセ
ージの出力先であるオブジェクトが動作する、といった
仮想的なオブジェクト間メッセージ通信により、各オブ
ジェクトの処理順序が決定される。
ムでは、各オブジェクトが他のオブジェクトに対し処理
依頼としてのメッセージを出すことにより、そのメッセ
ージの出力先であるオブジェクトが動作する、といった
仮想的なオブジェクト間メッセージ通信により、各オブ
ジェクトの処理順序が決定される。
【0020】そして、オブジェクト指向によってプログ
ラムを作成すれば、プログラムの共通部分をまとめ易く
なり、制御毎にプログラムを作成する場合と比較して、
制御仕様の変更時にもプログラムの修正が非常に容易と
なる。
ラムを作成すれば、プログラムの共通部分をまとめ易く
なり、制御毎にプログラムを作成する場合と比較して、
制御仕様の変更時にもプログラムの修正が非常に容易と
なる。
【0021】このようなオブジェクト指向によりプログ
ラムを作成する場合、先にも述べたとおり、オブジェク
ト間の処理要求のやりとり(オブジェクト間メッセージ
通信)方法を考慮する必要がある。このため、従来より
知られている関数コールの手法をオブジェクト間メッセ
ージ通信に適用することも考えられる。
ラムを作成する場合、先にも述べたとおり、オブジェク
ト間の処理要求のやりとり(オブジェクト間メッセージ
通信)方法を考慮する必要がある。このため、従来より
知られている関数コールの手法をオブジェクト間メッセ
ージ通信に適用することも考えられる。
【0022】関数コールを用いた手法では、図29に示
すように、オブジェクトのメソッド内に、次に処理した
いオブジェクトのメソッドをコールする命令を、書き込
んでおくようにする。そして、オブジェクト間のメッセ
ージ通信を次々に行いたい場合には、コールされるオブ
ジェクトのメソッド内に、他のオブジェクトのメソッド
をコールする命令を予め書き込んでおく。
すように、オブジェクトのメソッド内に、次に処理した
いオブジェクトのメソッドをコールする命令を、書き込
んでおくようにする。そして、オブジェクト間のメッセ
ージ通信を次々に行いたい場合には、コールされるオブ
ジェクトのメソッド内に、他のオブジェクトのメソッド
をコールする命令を予め書き込んでおく。
【0023】具体的には、図29に例示するように、オ
ブジェクトAのメソッドの実行中に、オブジェクトBの
メソッドをコールし、更に、オブジェクトBのメソッド
の実行中に、オブジェクトCのメソッドをコールする。
つまり、この手法では、関数コールにより、他のオブ
ジェクトに対する処理依頼としてのメッセージが出され
ることとなる。
ブジェクトAのメソッドの実行中に、オブジェクトBの
メソッドをコールし、更に、オブジェクトBのメソッド
の実行中に、オブジェクトCのメソッドをコールする。
つまり、この手法では、関数コールにより、他のオブ
ジェクトに対する処理依頼としてのメッセージが出され
ることとなる。
【0024】
【発明が解決しようとする課題】このようなプログラム
を実行する際に使用するメモリ領域の利用方法として、
動的(特定のデータを記憶するために記憶領域を確保せ
ず、必要な時に記憶する領域を確保し、不要となった時
点で記憶領域を開放する利用の仕方)と静的(マイコン
が動作中の間中、記憶内容に応じて専用にメモリ領域を
確保する利用の仕方)がある。動的に利用する場合は、
メモリ領域確保をデータの内容(サイズ・個数)によら
ず汎用的に確保することができ、限られたメモリの資源
を有効に利用できる。
を実行する際に使用するメモリ領域の利用方法として、
動的(特定のデータを記憶するために記憶領域を確保せ
ず、必要な時に記憶する領域を確保し、不要となった時
点で記憶領域を開放する利用の仕方)と静的(マイコン
が動作中の間中、記憶内容に応じて専用にメモリ領域を
確保する利用の仕方)がある。動的に利用する場合は、
メモリ領域確保をデータの内容(サイズ・個数)によら
ず汎用的に確保することができ、限られたメモリの資源
を有効に利用できる。
【0025】動的に利用するには、通常、システム上の
オペレーティングシステム(OS)でメモリ領域を管理
する。OSで管理する場合、メモリ領域確保をデータの
内容(サイズ・個数)によらず汎用的に確保するため、
OSに対しメモリ領域取得命令、メモリ領域解放命令と
いったシステムコールを実行することになるが、システ
ムコールを呼び出すのにかかるオーバーヘッドが大きい
(プログラムの処理負荷が大きい)。従って動作速度を
向上させるためメモリ領域を静的に管理し、その中で動
的に管理できるよう構成することが望まれる。
オペレーティングシステム(OS)でメモリ領域を管理
する。OSで管理する場合、メモリ領域確保をデータの
内容(サイズ・個数)によらず汎用的に確保するため、
OSに対しメモリ領域取得命令、メモリ領域解放命令と
いったシステムコールを実行することになるが、システ
ムコールを呼び出すのにかかるオーバーヘッドが大きい
(プログラムの処理負荷が大きい)。従って動作速度を
向上させるためメモリ領域を静的に管理し、その中で動
的に管理できるよう構成することが望まれる。
【0026】しかしながら、関数コールを用いる上記の
手法では、コールする側のメソッドの実行を一時中断
し、コールされる側のメソッドを実行した後で、中断し
ていたメソッドの実行を再開することとなる。よって、
中断していたメソッドの実行を再開するためには、中断
直前のマイクロコンピュータの内部状態(即ち、プログ
ラムカウンタや各種レジスタの値)を、RAMのスタッ
ク領域に記憶しておかなければならず、RAMの記憶領
域を多く消費してしまう。
手法では、コールする側のメソッドの実行を一時中断
し、コールされる側のメソッドを実行した後で、中断し
ていたメソッドの実行を再開することとなる。よって、
中断していたメソッドの実行を再開するためには、中断
直前のマイクロコンピュータの内部状態(即ち、プログ
ラムカウンタや各種レジスタの値)を、RAMのスタッ
ク領域に記憶しておかなければならず、RAMの記憶領
域を多く消費してしまう。
【0027】特に、ネスティング(即ち、多重の層に形
成されるコールの組み合わせ)の数が多くなればなるほ
ど、消費されるRAMの記憶領域が顕著に多くなってし
まい、電子制御装置のようにメモり資源が限られた装置
では限界がある。
成されるコールの組み合わせ)の数が多くなればなるほ
ど、消費されるRAMの記憶領域が顕著に多くなってし
まい、電子制御装置のようにメモり資源が限られた装置
では限界がある。
【0028】しかも、コール時でのRAMの記憶領域の
消費量は、記憶すべきプログラム実行位置、実行再開後
に利用される変数の値が、センサ入力やその他プログラ
ムの実行状態により変わるので、予め確保する必要があ
る記憶領域を予測することが難しく、静的に利用するこ
とが困難である。
消費量は、記憶すべきプログラム実行位置、実行再開後
に利用される変数の値が、センサ入力やその他プログラ
ムの実行状態により変わるので、予め確保する必要があ
る記憶領域を予測することが難しく、静的に利用するこ
とが困難である。
【0029】本発明は、こうした問題に鑑みなされたも
のであり、制御対象を制御するためのプログラムを単位
機能毎に細分化した各オブジェクトの処理を、高い動作
速度で且つ多くのメモリ資源を消費することなく行うこ
とのできる電子制御装置を提供することを目的としてい
る。
のであり、制御対象を制御するためのプログラムを単位
機能毎に細分化した各オブジェクトの処理を、高い動作
速度で且つ多くのメモリ資源を消費することなく行うこ
とのできる電子制御装置を提供することを目的としてい
る。
【0030】
【課題を解決するための手段、及び発明の効果】請求項
1に記載の本発明の電子制御装置は、制御対象を制御す
るためのプログラムを単位機能毎に細分化したオブジェ
クトに従って、前記各単位機能を実現するための処理を
夫々行う複数の単位処理手段を備えている。
1に記載の本発明の電子制御装置は、制御対象を制御す
るためのプログラムを単位機能毎に細分化したオブジェ
クトに従って、前記各単位機能を実現するための処理を
夫々行う複数の単位処理手段を備えている。
【0031】ここで、単位処理手段とは、例えば前述し
たように、マイクロコンピュータのCPUがオブジェク
トに従って動作する(換言すれば、CPUがオブジェク
トのメソッドを実行する)ことで実現される機能手段で
ある。つまり、マイクロコンピュータのCPUがオブジ
ェクトのメソッドを実行することにより、そのオブジェ
クトに割り振られた機能を実現するための処理が行われ
る。
たように、マイクロコンピュータのCPUがオブジェク
トに従って動作する(換言すれば、CPUがオブジェク
トのメソッドを実行する)ことで実現される機能手段で
ある。つまり、マイクロコンピュータのCPUがオブジ
ェクトのメソッドを実行することにより、そのオブジェ
クトに割り振られた機能を実現するための処理が行われ
る。
【0032】そして、本発明の電子制御装置では、その
前提として、複数の単位処理手段の何れかが択一的に処
理動作を行うと共に、各単位処理手段が、その処理動作
中に他の単位処理手段に対して処理依頼としてのメッセ
ージを出すことにより、そのメッセージの出力先である
単位処理手段が処理を行う。
前提として、複数の単位処理手段の何れかが択一的に処
理動作を行うと共に、各単位処理手段が、その処理動作
中に他の単位処理手段に対して処理依頼としてのメッセ
ージを出すことにより、そのメッセージの出力先である
単位処理手段が処理を行う。
【0033】ここで特に、本発明の電子制御装置は、メ
ッセージ記憶手段と起動制御手段とを備えており、メッ
セージ記憶手段が、メモリ内に予め記憶領域を専用に確
保しておき、ここに単位処理手段の出したメッセージを
記憶する。そして、起動制御手段が、メッセージ記憶手
段に記憶されているメッセージを読み出し、その読み出
したメッセージの出力先である単位処理手段の何れかに
処理を開始させる。
ッセージ記憶手段と起動制御手段とを備えており、メッ
セージ記憶手段が、メモリ内に予め記憶領域を専用に確
保しておき、ここに単位処理手段の出したメッセージを
記憶する。そして、起動制御手段が、メッセージ記憶手
段に記憶されているメッセージを読み出し、その読み出
したメッセージの出力先である単位処理手段の何れかに
処理を開始させる。
【0034】従って、本発明の電子制御装置によれば、
オペレーティングシステムに依存せずにメモリを利用す
ることができ、制御対象を制御するためのプログラムを
単位機能毎に細分化した各オブジェクトの処理を高い動
作速度で行うことができる。しかも、起動制御手段が単
位処理手段の処理を開始させるためのメッセージのみを
専用に確保した記憶領域に記憶させるため、確保すべき
容量が予測しやすくメモリ資源の消費量を減らすことが
可能となる。
オペレーティングシステムに依存せずにメモリを利用す
ることができ、制御対象を制御するためのプログラムを
単位機能毎に細分化した各オブジェクトの処理を高い動
作速度で行うことができる。しかも、起動制御手段が単
位処理手段の処理を開始させるためのメッセージのみを
専用に確保した記憶領域に記憶させるため、確保すべき
容量が予測しやすくメモリ資源の消費量を減らすことが
可能となる。
【0035】ところで、起動制御手段は、請求項2に記
載のように、メッセージ記憶手段に記憶されているメッ
セージを読み出して、その読み出したメッセージの出力
先である単位処理手段に処理を開始させると共に、その
読み出したメッセージをメッセージ記憶手段から消去す
るように構成すれば、メッセージ記憶手段に不用となっ
たメッセージが残ることを防止でき、メモリ資源を有効
に活用することができる。
載のように、メッセージ記憶手段に記憶されているメッ
セージを読み出して、その読み出したメッセージの出力
先である単位処理手段に処理を開始させると共に、その
読み出したメッセージをメッセージ記憶手段から消去す
るように構成すれば、メッセージ記憶手段に不用となっ
たメッセージが残ることを防止でき、メモリ資源を有効
に活用することができる。
【0036】次に、請求項3に記載の本発明の電子制御
装置では、前述した請求項1,2に記載の電子制御装置
において、起動制御手段は、単位処理手段の何れかが処
理動作を終了した時点で、メッセージ記憶手段に記憶さ
れているメッセージの内容に応じて、複数の単位処理手
段の何れかの処理を開始させる。
装置では、前述した請求項1,2に記載の電子制御装置
において、起動制御手段は、単位処理手段の何れかが処
理動作を終了した時点で、メッセージ記憶手段に記憶さ
れているメッセージの内容に応じて、複数の単位処理手
段の何れかの処理を開始させる。
【0037】従って、制御対象を制御するためのプログ
ラムを単位機能毎に細分化した各オブジェクトの処理を
リアルタイムに行うことができる。つまり各オブジェク
トの処理を、イベントドリブンで実行することができ
る。
ラムを単位機能毎に細分化した各オブジェクトの処理を
リアルタイムに行うことができる。つまり各オブジェク
トの処理を、イベントドリブンで実行することができ
る。
【0038】次に、請求項4に記載の電子制御装置で
は、前述した請求項1ないし請求項2の何れかに記載の
電子制御装置において、メッセージ記憶手段はメッセー
ジのデータサイズに応じて決定した記憶容量を単位とし
て単位記憶領域を決められた個数確保し、1つの前記単
位記憶領域に1つの前記メッセージの内容を記憶する。
は、前述した請求項1ないし請求項2の何れかに記載の
電子制御装置において、メッセージ記憶手段はメッセー
ジのデータサイズに応じて決定した記憶容量を単位とし
て単位記憶領域を決められた個数確保し、1つの前記単
位記憶領域に1つの前記メッセージの内容を記憶する。
【0039】これにより、一度にメッセージを記憶する
最大数を予想して設定することができるため、確保すべ
きメッセージ専用の記憶領域を簡単に設定できる。ま
た、従来の関数コールによる手法では、ネスティングが
発生する場合、ネスティングの数が増えるほどメモリ領
域が必要になり、実現するためにメモリ容量を多く確保
する必要があるが、本発明では単位記憶領域のメモリの
みで実現することが可能である。
最大数を予想して設定することができるため、確保すべ
きメッセージ専用の記憶領域を簡単に設定できる。ま
た、従来の関数コールによる手法では、ネスティングが
発生する場合、ネスティングの数が増えるほどメモリ領
域が必要になり、実現するためにメモリ容量を多く確保
する必要があるが、本発明では単位記憶領域のメモリの
みで実現することが可能である。
【0040】次に、請求項5に記載の電子制御装置で
は、前述した請求項4に記載の電子制御装置において、
各単位処理手段が出すメッセージには、そのメッセージ
の出力先である単位処理手段に対応したオブジェクトを
示す識別コードが含まれている。
は、前述した請求項4に記載の電子制御装置において、
各単位処理手段が出すメッセージには、そのメッセージ
の出力先である単位処理手段に対応したオブジェクトを
示す識別コードが含まれている。
【0041】そして更に、メッセージ記憶手段は、単位
記憶領域に識別コードを記憶する。起動制御手段は識別
コードを読み出し、読み出した識別コードの示す単位処
理手段に処理を開始させる。
記憶領域に識別コードを記憶する。起動制御手段は識別
コードを読み出し、読み出した識別コードの示す単位処
理手段に処理を開始させる。
【0042】このような請求項5に記載の電子制御装置
によれば、単位記憶領域に記憶するメッセージが定型と
なるため、確保すべきメッセージ専用の記憶領域の記憶
容量を減らすことができる。さらにオペレーティングシ
ステムが提供するような汎用的なメモリ領域の確保・解
放のシステムコール実行に頼らず、独自にメモリ管理す
るよう構成することが容易にできる。
によれば、単位記憶領域に記憶するメッセージが定型と
なるため、確保すべきメッセージ専用の記憶領域の記憶
容量を減らすことができる。さらにオペレーティングシ
ステムが提供するような汎用的なメモリ領域の確保・解
放のシステムコール実行に頼らず、独自にメモリ管理す
るよう構成することが容易にできる。
【0043】次に、請求項6に記載の電子制御装置によ
れば、前述した請求項1ないし請求項5の何れかに記載
の電子制御装置において、起動制御手段は、所定の処理
を行っている間、メッセージ記憶手段に記憶しているメ
ッセージの数をカウントする。そして、この所定の処理
を行っている間のカウント値で最も大きい値に応じて確
保する記憶領域の容量を決定する。また、請求項7に記
載の電子制御装置によれば、請求項4又は請求項5の何
れかに記載の電子制御装置において、起動制御手段は、
所定の処理を行っている間、メッセージ記憶手段の有す
る単位記憶領域のうちメッセージが記憶されていない単
位記憶領域の数をカウントする。そして、所定の処理を
行っている間のカウント値で最も小さい値に応じて確保
する記憶領域の容量を決定する。
れば、前述した請求項1ないし請求項5の何れかに記載
の電子制御装置において、起動制御手段は、所定の処理
を行っている間、メッセージ記憶手段に記憶しているメ
ッセージの数をカウントする。そして、この所定の処理
を行っている間のカウント値で最も大きい値に応じて確
保する記憶領域の容量を決定する。また、請求項7に記
載の電子制御装置によれば、請求項4又は請求項5の何
れかに記載の電子制御装置において、起動制御手段は、
所定の処理を行っている間、メッセージ記憶手段の有す
る単位記憶領域のうちメッセージが記憶されていない単
位記憶領域の数をカウントする。そして、所定の処理を
行っている間のカウント値で最も小さい値に応じて確保
する記憶領域の容量を決定する。
【0044】この請求項6および請求項7に記載の電子
制御装置により、所定の処理にて最大のメッセージ記憶
数を求めることができるので、確保すべき記憶領域を求
めることが容易となる。特に請求項4及び請求項5に記
載の単位記憶領域にメッセージを記憶することにすれ
ば、最大のメッセージ記憶数と単位記憶領域の個数が一
致するため、容易に確保すべき記憶領域を求めることが
できる。
制御装置により、所定の処理にて最大のメッセージ記憶
数を求めることができるので、確保すべき記憶領域を求
めることが容易となる。特に請求項4及び請求項5に記
載の単位記憶領域にメッセージを記憶することにすれ
ば、最大のメッセージ記憶数と単位記憶領域の個数が一
致するため、容易に確保すべき記憶領域を求めることが
できる。
【0045】また、請求項8記載の電子制御装置によれ
ば、請求項4記載の電子制御装置に加え更に、複数の単
位記憶領域にそれぞれメッセージのデータを記憶する部
分とメッセージ記憶手段のアドレス情報を記憶するポイ
ンタ部分とを設け、このポインタ部分により前記メッセ
ージの前記単位記憶領域への記憶順序を決定する。そし
て、起動制御手段により前記単位記憶領域に最初に記憶
されたメッセージのデータを読み出し、その読み出した
メッセージの出力先である、前記複数の単位処理手段の
何れかに処理を開始させる。
ば、請求項4記載の電子制御装置に加え更に、複数の単
位記憶領域にそれぞれメッセージのデータを記憶する部
分とメッセージ記憶手段のアドレス情報を記憶するポイ
ンタ部分とを設け、このポインタ部分により前記メッセ
ージの前記単位記憶領域への記憶順序を決定する。そし
て、起動制御手段により前記単位記憶領域に最初に記憶
されたメッセージのデータを読み出し、その読み出した
メッセージの出力先である、前記複数の単位処理手段の
何れかに処理を開始させる。
【0046】そして、請求項9に記載の電子制御装置に
よれば、請求項8記載の電子制御装置に加え更に、メッ
セージのデータをN番目に記憶した単位記憶領域のポイ
ンタ部分に、メッセージのデータをN+1番目に記憶し
た単位記憶領域のアドレス情報を記憶する。
よれば、請求項8記載の電子制御装置に加え更に、メッ
セージのデータをN番目に記憶した単位記憶領域のポイ
ンタ部分に、メッセージのデータをN+1番目に記憶し
た単位記憶領域のアドレス情報を記憶する。
【0047】また請求項10の電子制御装置によれば、
請求項8ないし9の何れかに記載の電子制御装置に加え
更に、メッセージ記憶手段に、メッセージのうち最初に
記憶したメッセージのデータが記憶された単位記憶領域
のアドレスと、最後に記憶したメッセージのデータが記
憶された単位記憶領域のアドレスとを記憶するメッセー
ジ記憶管理手段を設け、このメッセージ記憶管理手段の
記憶する情報を基に、起動制御手段が単位処理手段の何
れかに処理を開始させる。
請求項8ないし9の何れかに記載の電子制御装置に加え
更に、メッセージ記憶手段に、メッセージのうち最初に
記憶したメッセージのデータが記憶された単位記憶領域
のアドレスと、最後に記憶したメッセージのデータが記
憶された単位記憶領域のアドレスとを記憶するメッセー
ジ記憶管理手段を設け、このメッセージ記憶管理手段の
記憶する情報を基に、起動制御手段が単位処理手段の何
れかに処理を開始させる。
【0048】この請求項8、9、10記載の電子制御装
置により、メモリ資源の消費量を減らしながら、アドレ
スを記憶するだけで簡易にメッセージの管理(オブジェ
クトの処理)を管理することができる。
置により、メモリ資源の消費量を減らしながら、アドレ
スを記憶するだけで簡易にメッセージの管理(オブジェ
クトの処理)を管理することができる。
【0049】また請求項11記載の電子制御装置によれ
ば、請求項8ないし10の何れかに記載の電子制御装置
に加え更に、メッセージ記憶手段に、複数の単位記憶領
域のうち、メッセージのデータが記憶されていない未記
憶単位記憶領域を管理する単位記憶領域管理手段を設
け、未記憶単位記憶領域が複数ある場合に各未記憶単位
記憶領域のアドレス情報を、1つを除いて別の未記憶単
位記憶領域のうちどれか1つの単位記憶領域のポインタ
部分に記憶する。
ば、請求項8ないし10の何れかに記載の電子制御装置
に加え更に、メッセージ記憶手段に、複数の単位記憶領
域のうち、メッセージのデータが記憶されていない未記
憶単位記憶領域を管理する単位記憶領域管理手段を設
け、未記憶単位記憶領域が複数ある場合に各未記憶単位
記憶領域のアドレス情報を、1つを除いて別の未記憶単
位記憶領域のうちどれか1つの単位記憶領域のポインタ
部分に記憶する。
【0050】そして単位記憶領域管理手段が、未記憶単
位記憶領域のうち、他の未記憶単位記憶領域のポインタ
部分にアドレス情報が記載されていない未記憶単位記憶
領域のアドレス情報と、他の未記憶単位記憶領域のアド
レス情報を記憶していない未記憶単位記憶領域のアドレ
ス情報とを記憶することにより未記憶単位記憶領域を管
理する。
位記憶領域のうち、他の未記憶単位記憶領域のポインタ
部分にアドレス情報が記載されていない未記憶単位記憶
領域のアドレス情報と、他の未記憶単位記憶領域のアド
レス情報を記憶していない未記憶単位記憶領域のアドレ
ス情報とを記憶することにより未記憶単位記憶領域を管
理する。
【0051】これにより簡易にメッセージの管理(オブ
ジェクトの処理)とともに、メッセージを記憶していな
い単位記憶領域の管理もアドレスを記憶するだけで簡易
に行うことができる。
ジェクトの処理)とともに、メッセージを記憶していな
い単位記憶領域の管理もアドレスを記憶するだけで簡易
に行うことができる。
【0052】
【発明の実施の形態】以下、本発明が適用された実施形
態の電子制御装置について図面を用いて説明する。尚、
本発明は、下記の実施形態に限定されることなく、本発
明の技術的範囲に属する限り、種々の形態を採り得るこ
とは言うまでもない。
態の電子制御装置について図面を用いて説明する。尚、
本発明は、下記の実施形態に限定されることなく、本発
明の技術的範囲に属する限り、種々の形態を採り得るこ
とは言うまでもない。
【0053】まず図1は、自動車に搭載されて内燃機関
型エンジンの制御を行う実施形態の電子制御装置(以
下、ECUという)1のハードウェア構成を表すブロッ
ク図である。
型エンジンの制御を行う実施形態の電子制御装置(以
下、ECUという)1のハードウェア構成を表すブロッ
ク図である。
【0054】図1に示すように、ECU1は、エンジン
の水温を検出する水温センサやエンジンの回転数を検出
するクランクセンサなどの各種センサからの入力信号に
基づきエンジンに対する最適制御量を演算し、その演算
結果に基づき制御信号を出力するCPU3と、各種セン
サからの信号を入力してCPU3に送ると共に、CPU
3からの制御信号を受けて、エンジンのスロットル弁や
インジェクタ(燃料噴射弁)等のアクチュエータを駆動
する入出力回路2と、CPU3がエンジンを制御するた
めに実行するプログラム及びそのプログラムの実行時に
参照されるデータを格納する不揮発性のROM5と、C
PU3の演算結果等を一時格納する揮発性のRAM6と
を備えている。
の水温を検出する水温センサやエンジンの回転数を検出
するクランクセンサなどの各種センサからの入力信号に
基づきエンジンに対する最適制御量を演算し、その演算
結果に基づき制御信号を出力するCPU3と、各種セン
サからの信号を入力してCPU3に送ると共に、CPU
3からの制御信号を受けて、エンジンのスロットル弁や
インジェクタ(燃料噴射弁)等のアクチュエータを駆動
する入出力回路2と、CPU3がエンジンを制御するた
めに実行するプログラム及びそのプログラムの実行時に
参照されるデータを格納する不揮発性のROM5と、C
PU3の演算結果等を一時格納する揮発性のRAM6と
を備えている。
【0055】そして、このECU1においては、上記C
PU3,ROM5,及びRAM6によりマイクロコンピ
ュータの主要部が構成されており、図示はされていない
が、そのマイクロコンピュータには、CPU3が入出力
回路2との間で信号の入出力を行うためのI/Oポート
も備えられている。また、RAM6の一部の記憶領域
は、ECU1への電源供給が遮断された状態においても
記憶内容を保持可能なバックアップRAMとして設定さ
れている。
PU3,ROM5,及びRAM6によりマイクロコンピ
ュータの主要部が構成されており、図示はされていない
が、そのマイクロコンピュータには、CPU3が入出力
回路2との間で信号の入出力を行うためのI/Oポート
も備えられている。また、RAM6の一部の記憶領域
は、ECU1への電源供給が遮断された状態においても
記憶内容を保持可能なバックアップRAMとして設定さ
れている。
【0056】またCPU3が実行するプログラムが決め
られたとおりに動作しているかどうかを確かめる際に
は、デバッグツール7をECU1の外部より入出力回路
2に接続する。デバッグツール7を入出力回路2に接続
した後、RAM6内にフラグDEBUGがたったとき、
CPU3はプログラム動作確認のため所定の処理を行
う。
られたとおりに動作しているかどうかを確かめる際に
は、デバッグツール7をECU1の外部より入出力回路
2に接続する。デバッグツール7を入出力回路2に接続
した後、RAM6内にフラグDEBUGがたったとき、
CPU3はプログラム動作確認のため所定の処理を行
う。
【0057】ところで、本実施形態のECU1におい
て、ROM5に格納されてCPU3により実行されるエ
ンジン制御用のプログラム及びデータは、オブジェクト
指向によってプログラミングされている。そのため、本
実施形態のECU1では、前述したオブジェクト間メッ
セージ通信を実現するための手段として、図2に示すメ
ッセージ配送制御部10を備えている。
て、ROM5に格納されてCPU3により実行されるエ
ンジン制御用のプログラム及びデータは、オブジェクト
指向によってプログラミングされている。そのため、本
実施形態のECU1では、前述したオブジェクト間メッ
セージ通信を実現するための手段として、図2に示すメ
ッセージ配送制御部10を備えている。
【0058】尚、図2は、ハードウェア構成を示すもの
ではなく、ROM5に格納されたエンジン制御用のオブ
ジェクトと、メッセージ配送制御部10との関係を示す
概念図である。そして、メッセージ配送制御部10は、
ハードウェアによって構成されているのではなく、CP
U3がROM5に格納されたメッセージ配送制御用のオ
ブジェクトに従い動作することで実現される機能手段で
ある。
ではなく、ROM5に格納されたエンジン制御用のオブ
ジェクトと、メッセージ配送制御部10との関係を示す
概念図である。そして、メッセージ配送制御部10は、
ハードウェアによって構成されているのではなく、CP
U3がROM5に格納されたメッセージ配送制御用のオ
ブジェクトに従い動作することで実現される機能手段で
ある。
【0059】そこで、以下では、メッセージ配送制御部
10について、エンジンのアイドル回転数を制御するた
めのプログラム部分を例に挙げて説明する。
10について、エンジンのアイドル回転数を制御するた
めのプログラム部分を例に挙げて説明する。
【0060】まず、図2に示すように、ROM5には、
エンジンのアイドル回転数を制御するためのオブジェク
トとして、エンジンの水温値や実際の回転数などに基づ
き、エンジン回転数を最適なアイドル回転数にするため
の目標スロットル開度を算出するISCオブジェクトO
B1と、水温センサからのアナログ信号をAD変換した
デジタル値を、水温値に変換する水温センサオブジェク
トOB2と、水温センサからのアナログ信号をデジタル
値に変換(AD変換)するためのAD変換器(図示省
略)を制御するAD変換器オブジェクトOB3と、クラ
ンクセンサからの信号に基づきエンジン回転数を算出す
るクランクセンサオブジェクトOB5と、エンジンのス
ロットル弁を、ISCオブジェクトによって算出された
目標スロットル開度となるように制御するスロットルコ
ントローラオブジェクトOB4と、が格納されている。
エンジンのアイドル回転数を制御するためのオブジェク
トとして、エンジンの水温値や実際の回転数などに基づ
き、エンジン回転数を最適なアイドル回転数にするため
の目標スロットル開度を算出するISCオブジェクトO
B1と、水温センサからのアナログ信号をAD変換した
デジタル値を、水温値に変換する水温センサオブジェク
トOB2と、水温センサからのアナログ信号をデジタル
値に変換(AD変換)するためのAD変換器(図示省
略)を制御するAD変換器オブジェクトOB3と、クラ
ンクセンサからの信号に基づきエンジン回転数を算出す
るクランクセンサオブジェクトOB5と、エンジンのス
ロットル弁を、ISCオブジェクトによって算出された
目標スロットル開度となるように制御するスロットルコ
ントローラオブジェクトOB4と、が格納されている。
【0061】また、ROM5には、上記オブジェクトO
B1〜OB5以外のオブジェクトも格納されており、そ
の中には、メッセージ配送制御部10の機能を実現する
ためのオブジェクト(メッセージ配送制御用のオブジェ
クト)が含まれている。
B1〜OB5以外のオブジェクトも格納されており、そ
の中には、メッセージ配送制御部10の機能を実現する
ためのオブジェクト(メッセージ配送制御用のオブジェ
クト)が含まれている。
【0062】次に、上記各オブジェクトOB1〜OB5
によって実現される処理の概要について、図3のメッセ
ージシーケンスチャートに沿って説明する。
によって実現される処理の概要について、図3のメッセ
ージシーケンスチャートに沿って説明する。
【0063】まず、アイドル回転数制御のタイミングを
決定するために定期的(例えば4ms毎)に実行される
上記オブジェクトOB1〜OB5以外の他のオブジェク
トから、図3のに示すように、ISCオブジェクトO
B1へスロットル設定開始要求のメッセージが出される
と、ISCオブジェクトOB1が動作を開始する(つま
り、CPU3がISCオブジェクトOB1のメソッドの
実行を開始する)。
決定するために定期的(例えば4ms毎)に実行される
上記オブジェクトOB1〜OB5以外の他のオブジェク
トから、図3のに示すように、ISCオブジェクトO
B1へスロットル設定開始要求のメッセージが出される
と、ISCオブジェクトOB1が動作を開始する(つま
り、CPU3がISCオブジェクトOB1のメソッドの
実行を開始する)。
【0064】そして、ISCオブジェクトOB1は、図
3のに示すように、水温センサオブジェクトOB2へ
水温取得要求のメッセージを出し、次いで、図3のに
示すように、クランクセンサオブジェクトOB5へエン
ジン回転数取得要求のメッセージを出す。
3のに示すように、水温センサオブジェクトOB2へ
水温取得要求のメッセージを出し、次いで、図3のに
示すように、クランクセンサオブジェクトOB5へエン
ジン回転数取得要求のメッセージを出す。
【0065】すると、上記水温取得要求のメッセージに
伴い、水温センサオブジェクトOB2が動作して、図3
のに示すように、AD変換器オブジェクトOB3へ水
温AD値取得要求のメッセージを出す。
伴い、水温センサオブジェクトOB2が動作して、図3
のに示すように、AD変換器オブジェクトOB3へ水
温AD値取得要求のメッセージを出す。
【0066】一方、上記エンジン回転数取得要求のメッ
セージに伴い、クランクセンサオブジェクトOB5が動
作して、クランクセンサからの信号に基づきエンジン回
転数を算出する。そして、クランクセンサオブジェクト
OB5は、エンジン回転数の算出を終了した後、図3の
に示すように、ISCオブジェクトOB1へエンジン
回転数取得応答のメッセージ(即ち、エンジン回転数の
算出が終了したというメッセージ)を出す。
セージに伴い、クランクセンサオブジェクトOB5が動
作して、クランクセンサからの信号に基づきエンジン回
転数を算出する。そして、クランクセンサオブジェクト
OB5は、エンジン回転数の算出を終了した後、図3の
に示すように、ISCオブジェクトOB1へエンジン
回転数取得応答のメッセージ(即ち、エンジン回転数の
算出が終了したというメッセージ)を出す。
【0067】また、水温センサオブジェクトOB2が出
した水温AD値取得要求のメッセージに伴い、AD変換
器オブジェクトOB3が動作して、水温センサからのア
ナログ信号をデジタル値に変換する演算を行う。そし
て、AD変換器オブジェクトOB3は、上記演算を終了
した後、図3のに示すように、水温センサオブジェク
トOB2へ水温AD値取得応答のメッセージ(即ち、水
温センサのデジタル変換が終了したというメッセージ)
を出す。
した水温AD値取得要求のメッセージに伴い、AD変換
器オブジェクトOB3が動作して、水温センサからのア
ナログ信号をデジタル値に変換する演算を行う。そし
て、AD変換器オブジェクトOB3は、上記演算を終了
した後、図3のに示すように、水温センサオブジェク
トOB2へ水温AD値取得応答のメッセージ(即ち、水
温センサのデジタル変換が終了したというメッセージ)
を出す。
【0068】すると、水温センサオブジェクトOB2
は、AD変換器オブジェクトOB3の演算結果に基づい
て水温値を算出し、その算出後、図3のに示すよう
に、ISCオブジェクトOB1へ水温取得応答のメッセ
ージ(即ち、水温値の算出が終了したというメッセー
ジ)を出す。
は、AD変換器オブジェクトOB3の演算結果に基づい
て水温値を算出し、その算出後、図3のに示すよう
に、ISCオブジェクトOB1へ水温取得応答のメッセ
ージ(即ち、水温値の算出が終了したというメッセー
ジ)を出す。
【0069】そして、上記水温取得応答のメッセージ或
いは上記エンジン回転数取得応答のメッセージに伴い、
ISCオブジェクトOB1が動作して、水温センサオブ
ジェクトOB2により算出された水温値とクランクセン
サオブジェクトOB5により算出されたエンジン回転数
とに基づき目標スロットル開度を算出し、その算出後、
ISCオブジェクトOB1は、図3のに示すように、
スロットルコントローラオブジェクトOB4へスロット
ル設定要求のメッセージ(即ち、目標スロットル開度を
算出したことを示すメッセージ)を出す。
いは上記エンジン回転数取得応答のメッセージに伴い、
ISCオブジェクトOB1が動作して、水温センサオブ
ジェクトOB2により算出された水温値とクランクセン
サオブジェクトOB5により算出されたエンジン回転数
とに基づき目標スロットル開度を算出し、その算出後、
ISCオブジェクトOB1は、図3のに示すように、
スロットルコントローラオブジェクトOB4へスロット
ル設定要求のメッセージ(即ち、目標スロットル開度を
算出したことを示すメッセージ)を出す。
【0070】すると、スロットルコントローラオブジェ
クトOB4が動作して、エンジンのスロットル弁を、上
記算出された目標スロットル開度となるように制御し、
これにより、エンジン回転数が最適なアイドル回転数に
制御される。
クトOB4が動作して、エンジンのスロットル弁を、上
記算出された目標スロットル開度となるように制御し、
これにより、エンジン回転数が最適なアイドル回転数に
制御される。
【0071】このように、本実施形態のECU1では、
各オブジェクトOB1〜OB5が他のオブジェクトに対
し処理依頼としてのメッセージを出すことにより、その
メッセージの出力先であるオブジェクトが動作する、と
いった仮想的なオブジェクト間メッセージ通信により、
各オブジェクトOB1〜OB5の処理順序が決定されて
いる。
各オブジェクトOB1〜OB5が他のオブジェクトに対
し処理依頼としてのメッセージを出すことにより、その
メッセージの出力先であるオブジェクトが動作する、と
いった仮想的なオブジェクト間メッセージ通信により、
各オブジェクトOB1〜OB5の処理順序が決定されて
いる。
【0072】次に、上記のようなオブジェクト間メッセ
ージ通信を実現するためのメッセージ配送制御部10
は、各オブジェクトが出したメッセージをキューイング
すると共に、所定の配送条件が成立する毎に、上記キュ
ーイングしたメッセージのうち最初にキューイングした
メッセージを読み出して、その読み出したメッセージを
当該メッセージの出力先であるオブジェクトに配送する
ものである。
ージ通信を実現するためのメッセージ配送制御部10
は、各オブジェクトが出したメッセージをキューイング
すると共に、所定の配送条件が成立する毎に、上記キュ
ーイングしたメッセージのうち最初にキューイングした
メッセージを読み出して、その読み出したメッセージを
当該メッセージの出力先であるオブジェクトに配送する
ものである。
【0073】尚、「キューイング」とは、キューに対し
てデータの挿入記憶を行う操作のことであり、「キュ
ー」とは、待ち行列であって、データ構造体のうち、一
方の端でデータの挿入が行われ、他方の端でデータの削
除が行われるものである。また、「配送」とは、メッセ
ージの出力先であるオブジェクトの処理(詳しくは、メ
ッセージにより指定されるオブジェクトのメソッドの実
行)を開始させることを意味している。
てデータの挿入記憶を行う操作のことであり、「キュ
ー」とは、待ち行列であって、データ構造体のうち、一
方の端でデータの挿入が行われ、他方の端でデータの削
除が行われるものである。また、「配送」とは、メッセ
ージの出力先であるオブジェクトの処理(詳しくは、メ
ッセージにより指定されるオブジェクトのメソッドの実
行)を開始させることを意味している。
【0074】そして、メッセージ配送制御部10は、図
2に示すように、各オブジェクトからのメッセージをキ
ューイングするためのオブジェクトメッセージ格納部1
2と、このオブジェクトメッセージ格納部12に対し
て、メッセージを記憶(キューイング)するための記憶
領域を確保する空きメモリブロック格納部14とを備え
ている。
2に示すように、各オブジェクトからのメッセージをキ
ューイングするためのオブジェクトメッセージ格納部1
2と、このオブジェクトメッセージ格納部12に対し
て、メッセージを記憶(キューイング)するための記憶
領域を確保する空きメモリブロック格納部14とを備え
ている。
【0075】ここで、オブジェクトメッセージ格納部1
2と空きメモリブロック格納部14は、RAM6上に確
保されたメッセージ専用の記憶領域を確保するものであ
り、確保した記憶領域の容量はダイナミックに変動す
る。なお詳細は後述する。
2と空きメモリブロック格納部14は、RAM6上に確
保されたメッセージ専用の記憶領域を確保するものであ
り、確保した記憶領域の容量はダイナミックに変動す
る。なお詳細は後述する。
【0076】一方、本実施形態において、各オブジェク
トから出されるメッセージには、そのメッセージ内容と
して、当該メッセージの出力先のオブジェクトを示すオ
ブジェクト識別番号(以下、OIDという)と、その出
力先のオブジェクトを構成するメソッドのうちで実行さ
れるべきメソッドを示すメソッド識別番号(以下、MI
Dという)とが含まれており、更に引数を含んでいる場
合もある。なお、引数の代わりにメッセージ送信先の演
算に必要なデータを記憶するアドレスでもよい。
トから出されるメッセージには、そのメッセージ内容と
して、当該メッセージの出力先のオブジェクトを示すオ
ブジェクト識別番号(以下、OIDという)と、その出
力先のオブジェクトを構成するメソッドのうちで実行さ
れるべきメソッドを示すメソッド識別番号(以下、MI
Dという)とが含まれており、更に引数を含んでいる場
合もある。なお、引数の代わりにメッセージ送信先の演
算に必要なデータを記憶するアドレスでもよい。
【0077】そして、メッセージ配送制御部10は、図
2に示すように、オブジェクトメッセージ格納部12か
ら読み出したメッセージの配送先を特定するために、換
言すれば、読み出したメッセージに含まれているOID
とMIDが示すオブジェクトのメソッドが、ROM5の
何れのアドレスに格納されているかを特定するために、
接続情報データベース16を備えている。
2に示すように、オブジェクトメッセージ格納部12か
ら読み出したメッセージの配送先を特定するために、換
言すれば、読み出したメッセージに含まれているOID
とMIDが示すオブジェクトのメソッドが、ROM5の
何れのアドレスに格納されているかを特定するために、
接続情報データベース16を備えている。
【0078】この接続情報データベース16は、図4に
示す如く、OIDとMIDの各組み合せと、それら各組
み合せが示すオブジェクトのメソッドが格納されている
ROM5の先頭アドレス(即ち、実行開始アドレス)と
を、対応付けて記憶したデータテーブルからなる。例え
ば、図4のデータテーブルでは、OIDがnでMIDが
mであるオブジェクトのメソッドが、ROM5において
「Anm」というアドレスを先頭にして格納されている
ことを示す。そして、このようなデータテーブルからな
る接続情報データベース16は、各オブジェクトと共に
ROM5に予め格納されている。
示す如く、OIDとMIDの各組み合せと、それら各組
み合せが示すオブジェクトのメソッドが格納されている
ROM5の先頭アドレス(即ち、実行開始アドレス)と
を、対応付けて記憶したデータテーブルからなる。例え
ば、図4のデータテーブルでは、OIDがnでMIDが
mであるオブジェクトのメソッドが、ROM5において
「Anm」というアドレスを先頭にして格納されている
ことを示す。そして、このようなデータテーブルからな
る接続情報データベース16は、各オブジェクトと共に
ROM5に予め格納されている。
【0079】次に前述のオブジェクトメッセージ格納部
12と空きメモリブロック格納部14の詳細について説
明する。前述のメッセージの記憶領域はこのオブジェク
トメッセージ格納部12と空きメモリブロック格納部1
4が指定して確保しており、またメッセージのデータの
サイズに合わせた所定の容量を単位として確保される
(その単位容量の記憶領域をメモリブロックと呼ぶ)。
つまりRAM6内にはプログラムにて指定されている
所定数(例えば5個)分のメモリブロックがメッセージ
専用の記憶領域として確保されている。
12と空きメモリブロック格納部14の詳細について説
明する。前述のメッセージの記憶領域はこのオブジェク
トメッセージ格納部12と空きメモリブロック格納部1
4が指定して確保しており、またメッセージのデータの
サイズに合わせた所定の容量を単位として確保される
(その単位容量の記憶領域をメモリブロックと呼ぶ)。
つまりRAM6内にはプログラムにて指定されている
所定数(例えば5個)分のメモリブロックがメッセージ
専用の記憶領域として確保されている。
【0080】このメモリブロックは図5(a)に示すよ
うにメッセージの出力先のOIDを記憶するOID部
と、メッセージの出力先のMIDを記憶するMID部
と、引数を記憶する引数部とを有する。また、メモリブ
ロックはオブジェクトメッセージ格納部12と空きメモ
リブロック格納部14に確保されている時、所定のルー
ルで確保から解放する順序が決められているため、この
順序に従って次の順のメモリブロックのメモリアドレス
を指定するポインタも有する。
うにメッセージの出力先のOIDを記憶するOID部
と、メッセージの出力先のMIDを記憶するMID部
と、引数を記憶する引数部とを有する。また、メモリブ
ロックはオブジェクトメッセージ格納部12と空きメモ
リブロック格納部14に確保されている時、所定のルー
ルで確保から解放する順序が決められているため、この
順序に従って次の順のメモリブロックのメモリアドレス
を指定するポインタも有する。
【0081】例えばメモリアドレス0000〜0004
の順に5つのメモリブロックが確保されているとする
と、ポインタは図5(b)に示すようにメモリアドレス
0000のメモリブロックのポインタには0001、メ
モリアドレス0001のメモリブロックのポインタには
0002、という具合で書き込まれており、最終となる
メモリアドレス0004のメモリブロックのポインタに
は何も存在していないという意味を持つNULLが書き
込まれる。
の順に5つのメモリブロックが確保されているとする
と、ポインタは図5(b)に示すようにメモリアドレス
0000のメモリブロックのポインタには0001、メ
モリアドレス0001のメモリブロックのポインタには
0002、という具合で書き込まれており、最終となる
メモリアドレス0004のメモリブロックのポインタに
は何も存在していないという意味を持つNULLが書き
込まれる。
【0082】なお以下説明を簡略化するため、メモリブ
ロックの確保する数を5個、解放する順序を0000→
0001→0002→0003→0004で統一する
が、これに限るものではない。
ロックの確保する数を5個、解放する順序を0000→
0001→0002→0003→0004で統一する
が、これに限るものではない。
【0083】この予め確保されているメモリブロックの
うちメッセージが書き込まれている(OID、MIDが
書き込まれている)メモリブロック(以下、メッセージ
ブロックと呼ぶ)がオブジェクトメッセージ格納部12
に、メッセージが書き込まれていないメモリブロック
(以下、空きメモリブロックと呼ぶ)が空きメモリブロ
ック格納部12に確保される。
うちメッセージが書き込まれている(OID、MIDが
書き込まれている)メモリブロック(以下、メッセージ
ブロックと呼ぶ)がオブジェクトメッセージ格納部12
に、メッセージが書き込まれていないメモリブロック
(以下、空きメモリブロックと呼ぶ)が空きメモリブロ
ック格納部12に確保される。
【0084】そして、オブジェクトからメッセージが出
されると、空きメモリブロック格納部14に確保されて
いるメモリブロックが1つ減り、その代わりに、オブジ
ェクトメッセージ格納部12が確保するメモリブロック
が1つ増えて、その増加されたメモリブロックにメッセ
ージが記憶される。また、オブジェクトメッセージ格納
部12からメッセージが読み出されてオブジェクトに配
送されると、そのメッセージが記憶されていたメモリブ
ロックがオブジェクトメッセージ格納部12から、空き
メモリブロック格納部14に戻るようになっている。
されると、空きメモリブロック格納部14に確保されて
いるメモリブロックが1つ減り、その代わりに、オブジ
ェクトメッセージ格納部12が確保するメモリブロック
が1つ増えて、その増加されたメモリブロックにメッセ
ージが記憶される。また、オブジェクトメッセージ格納
部12からメッセージが読み出されてオブジェクトに配
送されると、そのメッセージが記憶されていたメモリブ
ロックがオブジェクトメッセージ格納部12から、空き
メモリブロック格納部14に戻るようになっている。
【0085】次にオブジェクトメッセージ格納部12と
空きメモリブロック格納部14はどのようにメモリブロ
ックを確保しているか図6を用いて説明する。
空きメモリブロック格納部14はどのようにメモリブロ
ックを確保しているか図6を用いて説明する。
【0086】オブジェクトメッセージ格納部12と空き
メモリブロック格納部14はそれぞれ確保しているメモ
リブロックのうち、最初に解放するメモリブロックのメ
モリアドレスとを先頭アドレスとして、最後に解放する
メモリブロックのメモリアドレスを末尾アドレスとして
記憶している。
メモリブロック格納部14はそれぞれ確保しているメモ
リブロックのうち、最初に解放するメモリブロックのメ
モリアドレスとを先頭アドレスとして、最後に解放する
メモリブロックのメモリアドレスを末尾アドレスとして
記憶している。
【0087】最初は、メモリブロックは全て空きメモリ
ブロックで、メッセージをキューイングしていないた
め、図6(a)に示すように、空きメモリブロック格納
部14は先頭アドレスとして0000を、末尾アドレス
として0004を記憶している。そしてオブジェクトメ
ッセージ格納部14は先頭アドレスおよび末尾アドレス
としてNULLを記憶している。
ブロックで、メッセージをキューイングしていないた
め、図6(a)に示すように、空きメモリブロック格納
部14は先頭アドレスとして0000を、末尾アドレス
として0004を記憶している。そしてオブジェクトメ
ッセージ格納部14は先頭アドレスおよび末尾アドレス
としてNULLを記憶している。
【0088】また、決められた順序に従って、メモリア
ドレス0000〜0004の各メモリブロック(空きメ
モリブロック)のポインタにはそれぞれ0001、00
02、0003、0004、NULLが書き込まれてい
る。
ドレス0000〜0004の各メモリブロック(空きメ
モリブロック)のポインタにはそれぞれ0001、00
02、0003、0004、NULLが書き込まれてい
る。
【0089】ここからメッセージのやりとりがなされ、
メッセージを2個キューイングしたとすると、図6
(b)に示すとおり、オブジェクトメッセージ格納部1
4は先頭アドレスとして0000、末尾アドレスとして
0001を記憶しており、空きメモリブロック格納部1
4は先頭アドレスとして0002、末尾アドレスとして
0004を記憶している。
メッセージを2個キューイングしたとすると、図6
(b)に示すとおり、オブジェクトメッセージ格納部1
4は先頭アドレスとして0000、末尾アドレスとして
0001を記憶しており、空きメモリブロック格納部1
4は先頭アドレスとして0002、末尾アドレスとして
0004を記憶している。
【0090】そして、メモリアドレス0000、000
1のメモリブロック(メッセージブロック)のポインタ
には、それぞれ0001、NULLが書き込まれ、メモ
リアドレス0002、0003、0004のメモリブロ
ック(空きメモリブロック)のポインタには、それぞれ
0003、0004、NULLが書き込まれている。な
お、OIDa、OIDb、MIDa、MIDbはキュー
イングしたメッセージの出力先のOIDとMIDであ
る。
1のメモリブロック(メッセージブロック)のポインタ
には、それぞれ0001、NULLが書き込まれ、メモ
リアドレス0002、0003、0004のメモリブロ
ック(空きメモリブロック)のポインタには、それぞれ
0003、0004、NULLが書き込まれている。な
お、OIDa、OIDb、MIDa、MIDbはキュー
イングしたメッセージの出力先のOIDとMIDであ
る。
【0091】また、図6(a)の状態からメッセージの
やりとりがなされ、メッセージを5個キューイングした
とすると、空きメモリブロックがない状態なので、図6
(c)に示すとおり、オブジェクトメッセージ格納部1
4は先頭アドレスとして0000、末尾アドレスとして
0004を記憶しており、空きメモリブロック格納部1
4は先頭アドレス、および末尾アドレスとしてNULL
を記憶している。
やりとりがなされ、メッセージを5個キューイングした
とすると、空きメモリブロックがない状態なので、図6
(c)に示すとおり、オブジェクトメッセージ格納部1
4は先頭アドレスとして0000、末尾アドレスとして
0004を記憶しており、空きメモリブロック格納部1
4は先頭アドレス、および末尾アドレスとしてNULL
を記憶している。
【0092】そしてメモリアドレス0000〜0004
の各メモリブロック(メッセージブロック)のポインタ
には、図示のように0001、0002、0003、0
004、NULLが書き込まれている。なお、 OID
c〜g、MIDc〜gはキューイングしたメッセージの
出力先のOIDとMIDである。
の各メモリブロック(メッセージブロック)のポインタ
には、図示のように0001、0002、0003、0
004、NULLが書き込まれている。なお、 OID
c〜g、MIDc〜gはキューイングしたメッセージの
出力先のOIDとMIDである。
【0093】オブジェクトからメッセージをキューイン
グする場合は、まず、空きメモリブロック格納部14
が、先頭アドレスとして記憶しているメモリアドレスの
メモリブロックの次に解放するメモリブロックのメモリ
アドレスを先頭アドレスに書き込むことでメモリブロッ
クを解放する。その後、受け取ったメッセージのOI
D、MID、引数を、解放したメモリブロックの該当場
所に書き込む。そして、この書き込んだメモリブロック
をオブジェクトメッセージ格納部12が確保するため
に、これまでオブジェクトメッセージ格納部12の末尾
アドレスとして記憶していたメモリアドレスのメモリブ
ロックのポインタを、NULLから新しく確保するメモ
リブロックのメモリアドレスに書き換え、新しく確保す
るメモリブロックのポインタをNULLにする。最後
に、オブジェクトメッセージ格納部12に末尾アドレス
として新しく確保するメモリブロックのメモリアドレス
を記憶する。
グする場合は、まず、空きメモリブロック格納部14
が、先頭アドレスとして記憶しているメモリアドレスの
メモリブロックの次に解放するメモリブロックのメモリ
アドレスを先頭アドレスに書き込むことでメモリブロッ
クを解放する。その後、受け取ったメッセージのOI
D、MID、引数を、解放したメモリブロックの該当場
所に書き込む。そして、この書き込んだメモリブロック
をオブジェクトメッセージ格納部12が確保するため
に、これまでオブジェクトメッセージ格納部12の末尾
アドレスとして記憶していたメモリアドレスのメモリブ
ロックのポインタを、NULLから新しく確保するメモ
リブロックのメモリアドレスに書き換え、新しく確保す
るメモリブロックのポインタをNULLにする。最後
に、オブジェクトメッセージ格納部12に末尾アドレス
として新しく確保するメモリブロックのメモリアドレス
を記憶する。
【0094】また、オブジェクトにメッセージを配送す
る場合は、オブジェクトメッセージ格納部12に先頭ア
ドレスとして記憶されていたメモリアドレスのメモリブ
ロックの次に解放するメモリブロックのメモリアドレス
を先頭アドレスとして記憶し直し、メモリブロックを解
放する。そして解放したメモリブロックに記憶されてい
るOIDとMIDと読み込み、該当するオブジェクトに
メッセージを配送する。その後、オブジェクトメッセー
ジ格納部12から解放したメモリブロックを空きメモリ
ブロック格納部14にて確保するため、これまで空きメ
モリブロック格納部12に末尾アドレスとして記憶され
ていたメモリアドレスのメモリブロックのポインタをN
ULLから解放したメモリブロックのメモリアドレスに
書き換えるとともに、新しく確保するメモリブロックの
ポインタにNULLを書き込む。最後に、空きメモリブ
ロック格納部14に末尾アドレスとして新しく確保する
メモリブロックのメモリアドレスを記憶する。
る場合は、オブジェクトメッセージ格納部12に先頭ア
ドレスとして記憶されていたメモリアドレスのメモリブ
ロックの次に解放するメモリブロックのメモリアドレス
を先頭アドレスとして記憶し直し、メモリブロックを解
放する。そして解放したメモリブロックに記憶されてい
るOIDとMIDと読み込み、該当するオブジェクトに
メッセージを配送する。その後、オブジェクトメッセー
ジ格納部12から解放したメモリブロックを空きメモリ
ブロック格納部14にて確保するため、これまで空きメ
モリブロック格納部12に末尾アドレスとして記憶され
ていたメモリアドレスのメモリブロックのポインタをN
ULLから解放したメモリブロックのメモリアドレスに
書き換えるとともに、新しく確保するメモリブロックの
ポインタにNULLを書き込む。最後に、空きメモリブ
ロック格納部14に末尾アドレスとして新しく確保する
メモリブロックのメモリアドレスを記憶する。
【0095】よって、概念的には、RAM6内に確保さ
れた全てのメモリブロックは、最初は空きメモリブロッ
ク格納部14に入っており、オブジェクトからメッセー
ジが出されると、空きメモリブロック格納部14からオ
ブジェクトメッセージ格納部12へメモリブロックが1
つ引き渡されて(移管されて)、その引き渡されたメモ
リブロックにメッセージが記憶される。また、オブジェ
クトメッセージ格納部12にキューイングされたメッセ
ージが読み出されてオブジェクトに配送されると、その
メッセージが記憶されていたメモリブロックは、オブジ
ェクトメッセージ格納部12から空きメモリブロック格
納部14へ戻されて再利用される。
れた全てのメモリブロックは、最初は空きメモリブロッ
ク格納部14に入っており、オブジェクトからメッセー
ジが出されると、空きメモリブロック格納部14からオ
ブジェクトメッセージ格納部12へメモリブロックが1
つ引き渡されて(移管されて)、その引き渡されたメモ
リブロックにメッセージが記憶される。また、オブジェ
クトメッセージ格納部12にキューイングされたメッセ
ージが読み出されてオブジェクトに配送されると、その
メッセージが記憶されていたメモリブロックは、オブジ
ェクトメッセージ格納部12から空きメモリブロック格
納部14へ戻されて再利用される。
【0096】次に、メッセージ配送制御部10の状態遷
移と機能について、図7を参照しつつ説明する。尚、図
7は、メッセージ配送制御部10の状態遷移図である。
また、以下に説明するメッセージ配送制御部10の処理
は、実際には、CPU3がROM5に格納されたメッセ
ージ配送制御用のオブジェクト(メソッド及びデータ)
に従って動作することにより実現されている。
移と機能について、図7を参照しつつ説明する。尚、図
7は、メッセージ配送制御部10の状態遷移図である。
また、以下に説明するメッセージ配送制御部10の処理
は、実際には、CPU3がROM5に格納されたメッセ
ージ配送制御用のオブジェクト(メソッド及びデータ)
に従って動作することにより実現されている。
【0097】メッセージ配送制御部10は、車両のイグ
ニッションスイッチがオフされて、ECU1のマイクロ
コンピュータが動作を停止している際に、図7(a)に
示す如くオフ状態となる。そして、例えばイグニッショ
ンスイッチがオフ状態からオンされたり、マイクロコン
ピュータにリセットがかけられる等の初期化要求が生じ
ると、図7(b)に示す如く初期化処理を行い、その
後、図7(c)に示す如くメッセージ受信待ち状態とな
る。
ニッションスイッチがオフされて、ECU1のマイクロ
コンピュータが動作を停止している際に、図7(a)に
示す如くオフ状態となる。そして、例えばイグニッショ
ンスイッチがオフ状態からオンされたり、マイクロコン
ピュータにリセットがかけられる等の初期化要求が生じ
ると、図7(b)に示す如く初期化処理を行い、その
後、図7(c)に示す如くメッセージ受信待ち状態とな
る。
【0098】ここで、図7(b)で行われる初期化処理
では、図8に示すように、まずS50にて、オブジェク
トメッセージ格納部12を初期化する。具体的には、図
6(a)に示すように、オブジェクトメッセージ格納部
12に記憶している先頭アドレスおよび末尾アドレスを
NULLにする。
では、図8に示すように、まずS50にて、オブジェク
トメッセージ格納部12を初期化する。具体的には、図
6(a)に示すように、オブジェクトメッセージ格納部
12に記憶している先頭アドレスおよび末尾アドレスを
NULLにする。
【0099】次にS60にて、空きメモリブロック格納
部14を初期化する。具体的には、図6(a)に示すよ
うに、まずプログラム上に規定された個数(例では5
個)の空きメモリブロックを確保する。次に決められた
解放の順序(この例では0000、0001、000
2、0003、0004)に従って各メモリブロックの
ポインタに、その次に解放するメモリブロックのメモリ
アドレスを書き込む(メモリアドレス0004のメモリ
ブロックのポインタにはNULL)。そして空きメモリ
ブロック格納部14に先頭アドレスおよび末尾アドレス
として予め定められたアドレスを書き込む(この例では
先頭アドレスが0000、末尾アドレスが0004)。
これにより、オブジェクトの何れかからメッセージが出
されたときに、空きメモリブロック格納部14が保有し
ている空きメモリブロックをオブジェクトメッセージ格
納部12へ引き渡すことのできる状態となる。
部14を初期化する。具体的には、図6(a)に示すよ
うに、まずプログラム上に規定された個数(例では5
個)の空きメモリブロックを確保する。次に決められた
解放の順序(この例では0000、0001、000
2、0003、0004)に従って各メモリブロックの
ポインタに、その次に解放するメモリブロックのメモリ
アドレスを書き込む(メモリアドレス0004のメモリ
ブロックのポインタにはNULL)。そして空きメモリ
ブロック格納部14に先頭アドレスおよび末尾アドレス
として予め定められたアドレスを書き込む(この例では
先頭アドレスが0000、末尾アドレスが0004)。
これにより、オブジェクトの何れかからメッセージが出
されたときに、空きメモリブロック格納部14が保有し
ている空きメモリブロックをオブジェクトメッセージ格
納部12へ引き渡すことのできる状態となる。
【0100】そして、メッセージ配送制御部10は、こ
のような初期化処理を終了した後、メッセージ受信待ち
状態となる。メッセージ受信待ち状態とは、オブジェク
トから出されたメッセージをオブジェクトメッセージ格
納部12にキューイングすることのできる状態であり、
この状態において、イグニッションスイッチがオフされ
る等の終了要求が生じると、メッセージ配送制御部10
は、図7(d)に示す如くシリアライズ処理を行い、そ
の後、前述したオフ状態に戻る。
のような初期化処理を終了した後、メッセージ受信待ち
状態となる。メッセージ受信待ち状態とは、オブジェク
トから出されたメッセージをオブジェクトメッセージ格
納部12にキューイングすることのできる状態であり、
この状態において、イグニッションスイッチがオフされ
る等の終了要求が生じると、メッセージ配送制御部10
は、図7(d)に示す如くシリアライズ処理を行い、そ
の後、前述したオフ状態に戻る。
【0101】ここで、図7(d)で行われるシリアライ
ズ処理では、図9に示すように、まずS70にて、オブ
ジェクトメッセージ格納部12を初期化する。次にS8
0にて、空きメモリブロック格納部14を初期化する。
具体的には、図8の初期化処理のS50、S60と同じ
である。
ズ処理では、図9に示すように、まずS70にて、オブ
ジェクトメッセージ格納部12を初期化する。次にS8
0にて、空きメモリブロック格納部14を初期化する。
具体的には、図8の初期化処理のS50、S60と同じ
である。
【0102】一方、メッセージ配送制御部10は、メッ
セージ受信待ち状態において、オブジェクトからメッセ
ージが出されると、図7(e)に示す如くメッセージキ
ューイング処理を行って、上記オブジェクトからのメッ
セージをオブジェクトメッセージ格納部12にキューイ
ングし、その後、メッセージ受信待ち状態に戻る。
セージ受信待ち状態において、オブジェクトからメッセ
ージが出されると、図7(e)に示す如くメッセージキ
ューイング処理を行って、上記オブジェクトからのメッ
セージをオブジェクトメッセージ格納部12にキューイ
ングし、その後、メッセージ受信待ち状態に戻る。
【0103】尚、本実施形態では、オブジェクトがメッ
セージ送信要求を出すことにより、メッセージの出力が
行われる。そして、以下の説明において、メッセージ内
容としてのOIDがn(=1,2,…)であり且つMI
Dがm(=1,2,…)であるメッセージを、特に「メ
ッセージ(n,m)」と記し、そのメッセージ(n,
m)を出力するためのメッセージ送信要求を、「メッセ
ージ送信要求(n,m)」と記す。
セージ送信要求を出すことにより、メッセージの出力が
行われる。そして、以下の説明において、メッセージ内
容としてのOIDがn(=1,2,…)であり且つMI
Dがm(=1,2,…)であるメッセージを、特に「メ
ッセージ(n,m)」と記し、そのメッセージ(n,
m)を出力するためのメッセージ送信要求を、「メッセ
ージ送信要求(n,m)」と記す。
【0104】ここで、オブジェクトがメッセージ(メッ
セージ送信要求)を出した時に行われるメッセージキュ
ーイング処理では、図10に示すように、まずS100
にて、空きメモリブロック格納部14から空きメモリブ
ロックを取得できるか否か(つまり、空きメモリブロッ
ク格納部14に空きメモリブロックが確保されているか
否か)を判断する。そして、空きメモリブロックが取得
可能であれば、続くS110にて、空きメモリブロック
格納部14から、空きメモリブロックのうちで先頭にあ
る空きメモリブロック、即ち、空きメモリブロック格納
部14に先頭アドレスとして記憶されているメモリアド
レスの空きメモリブロックを取得する。
セージ送信要求)を出した時に行われるメッセージキュ
ーイング処理では、図10に示すように、まずS100
にて、空きメモリブロック格納部14から空きメモリブ
ロックを取得できるか否か(つまり、空きメモリブロッ
ク格納部14に空きメモリブロックが確保されているか
否か)を判断する。そして、空きメモリブロックが取得
可能であれば、続くS110にて、空きメモリブロック
格納部14から、空きメモリブロックのうちで先頭にあ
る空きメモリブロック、即ち、空きメモリブロック格納
部14に先頭アドレスとして記憶されているメモリアド
レスの空きメモリブロックを取得する。
【0105】次にS120にて、上記取得した空きメモ
リブロックに、オブジェクトから今回出されたメッセー
ジを書き込む。尚、具体的には、空きメモリブロック
に、メッセージの内容であるOID及びMID或いは更
に引数が書き込まれる。
リブロックに、オブジェクトから今回出されたメッセー
ジを書き込む。尚、具体的には、空きメモリブロック
に、メッセージの内容であるOID及びMID或いは更
に引数が書き込まれる。
【0106】そして、続くS130にて、上記S120
でメッセージを書き込んだメモリブロックを、オブジェ
クトメッセージ格納部12にキューイングする。つま
り、まず、今まで最後尾に確保されていたメッセージブ
ロックのポインタにメッセージを書き込んだメモリブロ
ックのメモリアドレスを書き込むとともに、メッセージ
を書き込んだメモリブロックのポインタにNULLを書
き込む。そして、メッセージを書き込んだメモリブロッ
クのメモリアドレスをオブジェクトメッセージ格納部1
2に末尾アドレスとして記憶する。
でメッセージを書き込んだメモリブロックを、オブジェ
クトメッセージ格納部12にキューイングする。つま
り、まず、今まで最後尾に確保されていたメッセージブ
ロックのポインタにメッセージを書き込んだメモリブロ
ックのメモリアドレスを書き込むとともに、メッセージ
を書き込んだメモリブロックのポインタにNULLを書
き込む。そして、メッセージを書き込んだメモリブロッ
クのメモリアドレスをオブジェクトメッセージ格納部1
2に末尾アドレスとして記憶する。
【0107】そして、S140にてデバッグ状態を示す
フラグDEBUGがOFFかどうか判断する。S140
にてフラグDEBUGがONと判断した場合は、デバッ
グ中にキューイングしているメッセージの最大値を数え
るため、S150にてカウンタCを1つインクリメント
する。このカウンタCはメッセージのキューイング処理
の時に1つインクリメントされ、後に述べるメッセージ
配送処理にて1つディクリメントされるカウンタであ
る。
フラグDEBUGがOFFかどうか判断する。S140
にてフラグDEBUGがONと判断した場合は、デバッ
グ中にキューイングしているメッセージの最大値を数え
るため、S150にてカウンタCを1つインクリメント
する。このカウンタCはメッセージのキューイング処理
の時に1つインクリメントされ、後に述べるメッセージ
配送処理にて1つディクリメントされるカウンタであ
る。
【0108】次にS160にてこれまでのキューイング
メッセージ数の最大値Cmaxの値をRAMより読み込
み、S170にてカウンタCと最大値Cmaxの値の大
小を比較する。カウンタCの値の方が大きいとき、現在
のキューイング数がこれまでのデバッグ処理中で最大値
となるため、S180にて最大値CmaxをカウンタC
の値に置き換え、メッセージキューイング処理を終了す
る。またS180にてカウンタ値の方が最大値Cmax
の値より小さいと判断された場合はRAMに記憶されて
いた最大値Cmaxの値が、今回のキューイング処理が
終了しても最大値のままであるとして、そのままメッセ
ージキューイング処理を終了する。
メッセージ数の最大値Cmaxの値をRAMより読み込
み、S170にてカウンタCと最大値Cmaxの値の大
小を比較する。カウンタCの値の方が大きいとき、現在
のキューイング数がこれまでのデバッグ処理中で最大値
となるため、S180にて最大値CmaxをカウンタC
の値に置き換え、メッセージキューイング処理を終了す
る。またS180にてカウンタ値の方が最大値Cmax
の値より小さいと判断された場合はRAMに記憶されて
いた最大値Cmaxの値が、今回のキューイング処理が
終了しても最大値のままであるとして、そのままメッセ
ージキューイング処理を終了する。
【0109】なお、上記S140にてフラグDEBUG
がOFFと判断された場合は、デバッグ中ではないた
め、前述のデバッグ処理を行わずにメッセージキューイ
ング処理を終了する。
がOFFと判断された場合は、デバッグ中ではないた
め、前述のデバッグ処理を行わずにメッセージキューイ
ング処理を終了する。
【0110】また、上記S100にて、空きメモリブロ
ックを取得することができない(つまり、空きメモリブ
ロック格納部14に空きメモリブロックがない)と判断
した場合には、メッセージ送信要求を出したオブジェク
トのメソッドへエラーメッセージを出す。これにより確
保した空きメモリブロックの個数が少ないことが判断で
きる。
ックを取得することができない(つまり、空きメモリブ
ロック格納部14に空きメモリブロックがない)と判断
した場合には、メッセージ送信要求を出したオブジェク
トのメソッドへエラーメッセージを出す。これにより確
保した空きメモリブロックの個数が少ないことが判断で
きる。
【0111】次に、このメッセージキューイング処理に
よりどのようにメッセージのキューイング、メモリブロ
ックの解放・確保が行われるか図11、図12を用いて
説明する。なお、図11は、最初、図11(a)に示す
ように、メモリアドレス0000、0001のメモリブ
ロックがメッセージブロックで、メモリアドレス000
2、0003、0004のメモリブロックが空きメモリ
ブロックの例である。また、図12は、最初、図12
(a)に示すように、メモリアドレス0003、000
4のメモリブロックがメッセージブロックで、メモリア
ドレス0000、0001、0002のメモリブロック
が空きメモリブロックの例である。ここでOIDk、
m、n、p、q、rとMIDk、m、n、p、q、rは
各メッセージのOIDとMIDである。
よりどのようにメッセージのキューイング、メモリブロ
ックの解放・確保が行われるか図11、図12を用いて
説明する。なお、図11は、最初、図11(a)に示す
ように、メモリアドレス0000、0001のメモリブ
ロックがメッセージブロックで、メモリアドレス000
2、0003、0004のメモリブロックが空きメモリ
ブロックの例である。また、図12は、最初、図12
(a)に示すように、メモリアドレス0003、000
4のメモリブロックがメッセージブロックで、メモリア
ドレス0000、0001、0002のメモリブロック
が空きメモリブロックの例である。ここでOIDk、
m、n、p、q、rとMIDk、m、n、p、q、rは
各メッセージのOIDとMIDである。
【0112】最初に、空きメモリブロック格納部14に
先頭アドレスとして記憶されているメモリアドレスのメ
モリブロックが選択される(メモリアドレスが、図11
の例で0002、図12の例で0000のメモリブロッ
ク)。
先頭アドレスとして記憶されているメモリアドレスのメ
モリブロックが選択される(メモリアドレスが、図11
の例で0002、図12の例で0000のメモリブロッ
ク)。
【0113】次に、図11(b)、図12(b)に示す
ように、空きメモリブロック格納部14に先頭アドレス
として、次のメモリブロックのメモリアドレス(図11
の例で0003、図12の例で0001)に記憶し直す
と共に、取得したメモリブロックのポインタを消去する
(S100:YES,S110)。
ように、空きメモリブロック格納部14に先頭アドレス
として、次のメモリブロックのメモリアドレス(図11
の例で0003、図12の例で0001)に記憶し直す
と共に、取得したメモリブロックのポインタを消去する
(S100:YES,S110)。
【0114】そして、図11(c)、図12(c)に示
すように、上記取得した空きメモリブロックに、オブジ
ェクトから今回出されたメッセージの内容(図11の例
でOIDn、MIDn、図12の例でOIDr、MID
r)が書き込まれ(S120)、これまで末尾アドレス
であったメモリブロック(メモリアドレスが、図11の
例で0001、図12の例で0004のメモリブロッ
ク)のポインタに新しく確保したメモリブロックのメモ
リアドレス(図11の例で0002、図12の例で00
00)が書き込まれ、新しく確保したメモリブロックの
ポインタにNULLが書き込まれる。加えて、メッセー
ジの内容が書き込まれたメモリブロック(メモリアドレ
スが、図11の例で0002、図12の例で0000の
メモリブロック)が、オブジェクトメッセージ格納部1
2におけるメッセージブロックの最後尾になるよう、オ
ブジェクトメッセージ格納部12に末尾アドレスとして
メモリアドレスが記憶される(S130)。
すように、上記取得した空きメモリブロックに、オブジ
ェクトから今回出されたメッセージの内容(図11の例
でOIDn、MIDn、図12の例でOIDr、MID
r)が書き込まれ(S120)、これまで末尾アドレス
であったメモリブロック(メモリアドレスが、図11の
例で0001、図12の例で0004のメモリブロッ
ク)のポインタに新しく確保したメモリブロックのメモ
リアドレス(図11の例で0002、図12の例で00
00)が書き込まれ、新しく確保したメモリブロックの
ポインタにNULLが書き込まれる。加えて、メッセー
ジの内容が書き込まれたメモリブロック(メモリアドレ
スが、図11の例で0002、図12の例で0000の
メモリブロック)が、オブジェクトメッセージ格納部1
2におけるメッセージブロックの最後尾になるよう、オ
ブジェクトメッセージ格納部12に末尾アドレスとして
メモリアドレスが記憶される(S130)。
【0115】このあとフラグDEBUGがONであれ
ば、カウンタCの値が1つインクリメントされ、メッセ
ージのキューイング数と同じ値(図11の例、図12の
例ともにC=3)となる(S140:YES,S15
0)。そして、これまでのキューイング数の最大値Cm
axがカウンタCの値より大きければCmaxにCの値
を書き込む(S170:YES,S180)。
ば、カウンタCの値が1つインクリメントされ、メッセ
ージのキューイング数と同じ値(図11の例、図12の
例ともにC=3)となる(S140:YES,S15
0)。そして、これまでのキューイング数の最大値Cm
axがカウンタCの値より大きければCmaxにCの値
を書き込む(S170:YES,S180)。
【0116】これにより、メッセージのキューイング処
理が終了する。
理が終了する。
【0117】以上のように、この状態では、図11およ
び図12に示すように、オブジェクトメッセージ格納部
12で確保しているメッセージブロックが1つ増え、そ
の代わりに、空きメモリブロック格納部14で確保して
いる空きメモリブロックが1つ減ることとなる。そし
て、空きメモリブロック格納部14にて解放の順序が当
初2番目にあった空きメモリブロック(メモリアドレス
が、図11の例で0003、図12の例で0001のメ
モリブロック)が、先頭の空きメモリブロックとなり、
当初3番目にあった空きメモリブロック(メモリアドレ
スが、図11の例で0004、図12の例で0002の
メモリブロック)が、2番目の空きメモリブロックとな
る。
び図12に示すように、オブジェクトメッセージ格納部
12で確保しているメッセージブロックが1つ増え、そ
の代わりに、空きメモリブロック格納部14で確保して
いる空きメモリブロックが1つ減ることとなる。そし
て、空きメモリブロック格納部14にて解放の順序が当
初2番目にあった空きメモリブロック(メモリアドレス
が、図11の例で0003、図12の例で0001のメ
モリブロック)が、先頭の空きメモリブロックとなり、
当初3番目にあった空きメモリブロック(メモリアドレ
スが、図11の例で0004、図12の例で0002の
メモリブロック)が、2番目の空きメモリブロックとな
る。
【0118】一方、次に、メッセージ配送制御部10
は、メッセージ受信待ち状態において、オブジェクトか
ら図7(f)の如くメッセージ配送要求が出されると、
図7(g)に示す如くメッセージ配送状態になる。
は、メッセージ受信待ち状態において、オブジェクトか
ら図7(f)の如くメッセージ配送要求が出されると、
図7(g)に示す如くメッセージ配送状態になる。
【0119】メッセージ配送状態では、図7(h)に示
すように、オブジェクトメッセージ格納部12にキュー
イングされているメッセージがあれば、後述するメッセ
ージ配送処理を行って、そのキューイングされているメ
ッセージの配送(即ち、メッセージにより指定されるオ
ブジェクトのメソッドの実行)を行い、また、図7
(i)に示すように、オブジェクトメッセージ格納部1
2にキューイングされているメッセージがなければ、メ
ッセージ受信状態へ戻る。
すように、オブジェクトメッセージ格納部12にキュー
イングされているメッセージがあれば、後述するメッセ
ージ配送処理を行って、そのキューイングされているメ
ッセージの配送(即ち、メッセージにより指定されるオ
ブジェクトのメソッドの実行)を行い、また、図7
(i)に示すように、オブジェクトメッセージ格納部1
2にキューイングされているメッセージがなければ、メ
ッセージ受信状態へ戻る。
【0120】また、メッセージ配送状態では、実行中の
オブジェクトからメッセージ送信要求が出されると、メ
ッセージ受信待ち状態の場合と同様に、図7(j)に示
す如く前述した図10のメッセージキューイング処理を
行う。
オブジェクトからメッセージ送信要求が出されると、メ
ッセージ受信待ち状態の場合と同様に、図7(j)に示
す如く前述した図10のメッセージキューイング処理を
行う。
【0121】ここで、図13に示すように、メッセージ
配送処理は、オブジェクトからメッセージ配送要求が出
された時、或いは、何れかのオブジェクトのメソッドの
実行が終了した時に行われ、まずS210にて、オブジ
ェクトメッセージ格納部12にキューイングされている
メッセージがあるか否か(つまり、オブジェクトメッセ
ージ格納部12からメッセージブロックを取得できるか
否か)を判断する。そして、キューイングされているメ
ッセージがあれば、続くS220にて、メッセージを1
つ配送するため、前述のメッセージのキューイング数を
カウントするカウンタCを1つディクリメントする。そ
の後、S230にてオブジェクトメッセージ格納部12
から、メッセージブロックのうちで先頭にあるメッセー
ジブロック、即ち、オブジェクトメッセージ格納部12
にキューイングされているメッセージブロックのうちで
最初にキューイングされたメッセージが記憶されている
メッセージブロックを取得し、そのメッセージブロック
に書き込まれているメッセージの内容(OID及びMI
D)を読み取る。
配送処理は、オブジェクトからメッセージ配送要求が出
された時、或いは、何れかのオブジェクトのメソッドの
実行が終了した時に行われ、まずS210にて、オブジ
ェクトメッセージ格納部12にキューイングされている
メッセージがあるか否か(つまり、オブジェクトメッセ
ージ格納部12からメッセージブロックを取得できるか
否か)を判断する。そして、キューイングされているメ
ッセージがあれば、続くS220にて、メッセージを1
つ配送するため、前述のメッセージのキューイング数を
カウントするカウンタCを1つディクリメントする。そ
の後、S230にてオブジェクトメッセージ格納部12
から、メッセージブロックのうちで先頭にあるメッセー
ジブロック、即ち、オブジェクトメッセージ格納部12
にキューイングされているメッセージブロックのうちで
最初にキューイングされたメッセージが記憶されている
メッセージブロックを取得し、そのメッセージブロック
に書き込まれているメッセージの内容(OID及びMI
D)を読み取る。
【0122】次にS240にて、上記S230で取得し
たメッセージブロックを、空きメモリブロックとして、
空きメモリブロック格納部14における空きメモリブロ
ックの最後尾に登録する。
たメッセージブロックを、空きメモリブロックとして、
空きメモリブロック格納部14における空きメモリブロ
ックの最後尾に登録する。
【0123】そして、続くS250にて、上記S230
で読み取ったメッセージ内容であるOIDとMIDに対
応するオブジェクトのメソッドが格納されているROM
5の先頭アドレス(実行開始アドレス)を、前述した接
続情報データベース16から検索により算出し、続くS
260にて、上記S250で算出した実行開始アドレス
をコールする。
で読み取ったメッセージ内容であるOIDとMIDに対
応するオブジェクトのメソッドが格納されているROM
5の先頭アドレス(実行開始アドレス)を、前述した接
続情報データベース16から検索により算出し、続くS
260にて、上記S250で算出した実行開始アドレス
をコールする。
【0124】すると、CPU3によるプログラムの実行
先が、S230で読み取ったメッセージ内容に対応した
オブジェクトのメソッドの先頭へ移り、これにより、メ
ッセージの配送が行われる。そして、そのメソッドの処
理実行が終了すると、再び、当該メッセージ配送処理が
前述したS210から行われる。
先が、S230で読み取ったメッセージ内容に対応した
オブジェクトのメソッドの先頭へ移り、これにより、メ
ッセージの配送が行われる。そして、そのメソッドの処
理実行が終了すると、再び、当該メッセージ配送処理が
前述したS210から行われる。
【0125】一方、上記S210にて、オブジェクトメ
ッセージ格納部12にキューイングされているメッセー
ジがない(つまり、オブジェクトメッセージ格納部12
からメッセージブロックを取得できない)と判断した場
合には、そのままメッセージ受信待ち状態へ戻る。
ッセージ格納部12にキューイングされているメッセー
ジがない(つまり、オブジェクトメッセージ格納部12
からメッセージブロックを取得できない)と判断した場
合には、そのままメッセージ受信待ち状態へ戻る。
【0126】次に、このメッセージ配送グ処理によりど
のようにメッセージの配送、メモリブロックの解放・確
保が行われるか図14、図15を用いて説明する。
のようにメッセージの配送、メモリブロックの解放・確
保が行われるか図14、図15を用いて説明する。
【0127】なお、図14は、最初、図14(a)に示
すように、メモリアドレス0000、0001、000
2のメモリブロックがメッセージブロックで、メモリア
ドレス0003、0004のメモリブロックが空きメモ
リブロックの例である。また、図15は、最初、図15
(a)に示すように、メモリアドレス0001、000
2のメモリブロックがメッセージブロックで、メモリア
ドレス0003、0004、0000のメモリブロック
が空きメモリブロックの例である。ここでOIDh、
i、jとMIDh、i、jは各メッセージのOIDとM
IDである。
すように、メモリアドレス0000、0001、000
2のメモリブロックがメッセージブロックで、メモリア
ドレス0003、0004のメモリブロックが空きメモ
リブロックの例である。また、図15は、最初、図15
(a)に示すように、メモリアドレス0001、000
2のメモリブロックがメッセージブロックで、メモリア
ドレス0003、0004、0000のメモリブロック
が空きメモリブロックの例である。ここでOIDh、
i、jとMIDh、i、jは各メッセージのOIDとM
IDである。
【0128】最初に、オブジェクトメッセージ格納部1
2にメッセージがキューイングされていれば、キューイ
ングされているメッセージの数を示すカウンタCの値を
1つディクリメントされ、メッセージ配送処理後のメッ
セージのキューイング数と同じ値(図14の例ではC=
2、図15の例ではC=1)となる(S210:YE
S,S220)。
2にメッセージがキューイングされていれば、キューイ
ングされているメッセージの数を示すカウンタCの値を
1つディクリメントされ、メッセージ配送処理後のメッ
セージのキューイング数と同じ値(図14の例ではC=
2、図15の例ではC=1)となる(S210:YE
S,S220)。
【0129】次に、図14(b)、図15(b)に示す
ように、オブジェクトメッセージ格納部12に先頭アド
レスとして記憶されているメモリアドレスのメモリブロ
ックが選択され(メモリアドレスが、図14の例で00
00、図15の例で0001のメモリブロック)、オブ
ジェクトメッセージ格納部12に先頭アドレスとして、
次のメモリブロックのメモリアドレス(図14の例で0
001、図15の例で0002)に記憶し直すと共に、
取得したメモリブロックのポインタを消去する(S23
0)。
ように、オブジェクトメッセージ格納部12に先頭アド
レスとして記憶されているメモリアドレスのメモリブロ
ックが選択され(メモリアドレスが、図14の例で00
00、図15の例で0001のメモリブロック)、オブ
ジェクトメッセージ格納部12に先頭アドレスとして、
次のメモリブロックのメモリアドレス(図14の例で0
001、図15の例で0002)に記憶し直すと共に、
取得したメモリブロックのポインタを消去する(S23
0)。
【0130】そして、上記取得したメモリブロック に
記憶しているOIDとMID(図14の例でOIDh、
MIDh、図15の例でOIDi、MIDi)を読み取
り、メッセージの内容を消去して、これまで末尾アドレ
スであったメモリブロック(メモリアドレスが、図14
の例で0004、図15の例で0000のメモリブロッ
ク)のポインタに新しく確保したメモリブロックのメモ
リアドレス(図14の例で0000、図15の例で00
01)が書き込まれ、新しく確保したメモリブロックの
ポインタにNULLが書き込まれる。加えて、空きメモ
リブロックとなったメモリブロック(メモリアドレス
が、図14の例で0000、図15の例で0001のメ
モリブロック) が、空きメモリブロック格納部14に
おけるメッセージブロックの最後尾になるよう、空きメ
モリブロック格納部14に末尾アドレスとしてメモリア
ドレスが記憶される(S240)。
記憶しているOIDとMID(図14の例でOIDh、
MIDh、図15の例でOIDi、MIDi)を読み取
り、メッセージの内容を消去して、これまで末尾アドレ
スであったメモリブロック(メモリアドレスが、図14
の例で0004、図15の例で0000のメモリブロッ
ク)のポインタに新しく確保したメモリブロックのメモ
リアドレス(図14の例で0000、図15の例で00
01)が書き込まれ、新しく確保したメモリブロックの
ポインタにNULLが書き込まれる。加えて、空きメモ
リブロックとなったメモリブロック(メモリアドレス
が、図14の例で0000、図15の例で0001のメ
モリブロック) が、空きメモリブロック格納部14に
おけるメッセージブロックの最後尾になるよう、空きメ
モリブロック格納部14に末尾アドレスとしてメモリア
ドレスが記憶される(S240)。
【0131】そして最後に、メッセージブロック から
読み取ったメッセージ内容に対応するオブジェクトのメ
ソッドのアドレスが読み出され、メソッドがコールさ
れ、実行が開始される(S250、S260)。
読み取ったメッセージ内容に対応するオブジェクトのメ
ソッドのアドレスが読み出され、メソッドがコールさ
れ、実行が開始される(S250、S260)。
【0132】以上のように、この状態では、図14およ
び図15に示すように、空きメモリブロック格納部14
で確保している空きメモリブロックが1つ増え、その代
わりに、オブジェクトメッセージ格納部12で確保して
いるメッセージブロックが1つ減ることとなる。そし
て、オブジェクトメッセージ格納部12にて解放の順序
が当初2番目にあったメッセージブロック(メモリアド
レスが、図14の例で0001、図15の例で0002
のメモリブロック) が、先頭の空きメモリブロックと
なる。
び図15に示すように、空きメモリブロック格納部14
で確保している空きメモリブロックが1つ増え、その代
わりに、オブジェクトメッセージ格納部12で確保して
いるメッセージブロックが1つ減ることとなる。そし
て、オブジェクトメッセージ格納部12にて解放の順序
が当初2番目にあったメッセージブロック(メモリアド
レスが、図14の例で0001、図15の例で0002
のメモリブロック) が、先頭の空きメモリブロックと
なる。
【0133】なお、キューイングされているメッセージ
のキューイング・配送の例として図11、図12、図1
4、図15を示した。しかし、このメッセージブロック
の数、メモリアドレスはこれに限定されず、プログラム
で決められているメモリブロックの数や、解放順序はも
とより、これまでのメッセージキューイング処理、メッ
セージ配送処理でどのようにメッセージのやりとりが行
われたかにより変化する。つまり上記例ではオブジェク
トメッセージ格納部12(または空きメモリブロック格
納部14)に先頭アドレスとして記憶されているメモリ
アドレスのメモリブロック(つまり各格納部に確保され
ているメモリブロックの中で最初に解放されるメモリブ
ロック)が取得され、メッセージの読み取り/消去(ま
たはメッセージの書きこみ)が行われたあと、空きメモ
リブロック格納部14(またはオブジェクトメッセージ
格納部12)に末尾アドレスとして登録する本発明のポ
イントを説明するための具体例としてあげたものであ
る。
のキューイング・配送の例として図11、図12、図1
4、図15を示した。しかし、このメッセージブロック
の数、メモリアドレスはこれに限定されず、プログラム
で決められているメモリブロックの数や、解放順序はも
とより、これまでのメッセージキューイング処理、メッ
セージ配送処理でどのようにメッセージのやりとりが行
われたかにより変化する。つまり上記例ではオブジェク
トメッセージ格納部12(または空きメモリブロック格
納部14)に先頭アドレスとして記憶されているメモリ
アドレスのメモリブロック(つまり各格納部に確保され
ているメモリブロックの中で最初に解放されるメモリブ
ロック)が取得され、メッセージの読み取り/消去(ま
たはメッセージの書きこみ)が行われたあと、空きメモ
リブロック格納部14(またはオブジェクトメッセージ
格納部12)に末尾アドレスとして登録する本発明のポ
イントを説明するための具体例としてあげたものであ
る。
【0134】そして、図1のデバッグツール7によりデ
バッグ処理が行われる場合であれば、フラグDEBUG
がONされるため、メッセージのキューイング数のカウ
ント処理が行われ、キューイング数の最大値Cmaxが
求められる。
バッグ処理が行われる場合であれば、フラグDEBUG
がONされるため、メッセージのキューイング数のカウ
ント処理が行われ、キューイング数の最大値Cmaxが
求められる。
【0135】所定のデバッグ処理が終了したとき、デバ
ッグツール7がRAM6よりCmax値を読み取り、読
み取った値をプログラムの中メモリブロック数指定箇所
に反映する。
ッグツール7がRAM6よりCmax値を読み取り、読
み取った値をプログラムの中メモリブロック数指定箇所
に反映する。
【0136】次に、図2に示したアイドル回転数制御用
の各オブジェクトOB1〜OB5が、メッセージ配送制
御部10の作用により如何にしてオブジェクト間メッセ
ージ通信を行い、図3のメッセージシーケンスチャート
に示した処理が行われるかについて、図16〜図25を
用いて具体的に説明する。
の各オブジェクトOB1〜OB5が、メッセージ配送制
御部10の作用により如何にしてオブジェクト間メッセ
ージ通信を行い、図3のメッセージシーケンスチャート
に示した処理が行われるかについて、図16〜図25を
用いて具体的に説明する。
【0137】まず、図16に示すように、ISCオブジ
ェクトOB1は、図3のに示したスロットル設定開始
要求のメッセージとしてのメッセージ(1,2)、つま
りOIDが1でMIDが2であるメッセージに伴い実行
されるアイドル時スロットル設定開始要求メソッド(図
18)と、図3のに示した水温取得応答のメッセージ
としてのメッセージ(1,3)に伴い実行される水温取
得応答メソッド(図19)と、図3のに示したエンジ
ン回転数取得応答のメッセージとしてのメッセージ
(1,4)に伴い実行されるエンジン回転数取得応答メ
ソッド(図20)とを有している。
ェクトOB1は、図3のに示したスロットル設定開始
要求のメッセージとしてのメッセージ(1,2)、つま
りOIDが1でMIDが2であるメッセージに伴い実行
されるアイドル時スロットル設定開始要求メソッド(図
18)と、図3のに示した水温取得応答のメッセージ
としてのメッセージ(1,3)に伴い実行される水温取
得応答メソッド(図19)と、図3のに示したエンジ
ン回転数取得応答のメッセージとしてのメッセージ
(1,4)に伴い実行されるエンジン回転数取得応答メ
ソッド(図20)とを有している。
【0138】また、水温センサオブジェクトOB2は、
図3のに示した水温取得要求のメッセージとしてのメ
ッセージ(2,1)に伴い実行される水温取得要求メソ
ッド(図21)と、図3のに示した水温AD値取得応
答のメッセージとしてのメッセージ(2,2)に伴い実
行される水温AD値取得応答メソッド(図26)とを有
している。
図3のに示した水温取得要求のメッセージとしてのメ
ッセージ(2,1)に伴い実行される水温取得要求メソ
ッド(図21)と、図3のに示した水温AD値取得応
答のメッセージとしてのメッセージ(2,2)に伴い実
行される水温AD値取得応答メソッド(図26)とを有
している。
【0139】また更に、AD変換器オブジェクトOB3
は、図3のに示した水温AD値取得要求のメッセージ
としてのメッセージ(3,0)に伴い実行される水温A
D値取得要求メソッド(図23)を有し、スロットルコ
ントローラオブジェクトOB4は、図3のに示したス
ロットル設定要求のメッセージとしてのメッセージ
(4,4)に伴い実行されるスロットル設定要求メソッ
ド(図24)を有し、クランクセンサオブジェクトOB
5は、図3のに示したエンジン回転数取得要求のメッ
セージとしてのメッセージ(5,0)に伴い実行される
エンジン回転数取得要求メソッド(図25)を有してい
る。
は、図3のに示した水温AD値取得要求のメッセージ
としてのメッセージ(3,0)に伴い実行される水温A
D値取得要求メソッド(図23)を有し、スロットルコ
ントローラオブジェクトOB4は、図3のに示したス
ロットル設定要求のメッセージとしてのメッセージ
(4,4)に伴い実行されるスロットル設定要求メソッ
ド(図24)を有し、クランクセンサオブジェクトOB
5は、図3のに示したエンジン回転数取得要求のメッ
セージとしてのメッセージ(5,0)に伴い実行される
エンジン回転数取得要求メソッド(図25)を有してい
る。
【0140】そして、上記オブジェクトOB1〜OB5
の各メソッドの実行開始アドレスは、図16に示す如
く、各メソッドを示すOID及びMIDに夫々対応し
て、接続情報データベース16内に予め登録されてい
る。
の各メソッドの実行開始アドレスは、図16に示す如
く、各メソッドを示すOID及びMIDに夫々対応し
て、接続情報データベース16内に予め登録されてい
る。
【0141】次に、CPU3により実行される処理の詳
細について説明する。
細について説明する。
【0142】まず、上記オブジェクトOB1〜OB5以
外のオブジェクトであって、アイドル回転数制御のタイ
ミングを決定するためのオブジェクトの処理である、図
17のスケジュール処理が4ms毎に実行される。尚、
以下の説明においては、デバッグ処理とし、フラグDE
BUGがON状態であるものとする。従って、図10に
示したメッセージキューイング処理のS140では、常
に肯定判定されるものとする。そして、このスケジュー
ル処理は図8の初期化処理が行われた後、実行されたも
のとする。また、空きメモリブロック格納部14には充
分な数の空きメモリブロックを設定しており、図10に
示したメッセージキューイング処理のS100では、常
に肯定判定されるものとする。
外のオブジェクトであって、アイドル回転数制御のタイ
ミングを決定するためのオブジェクトの処理である、図
17のスケジュール処理が4ms毎に実行される。尚、
以下の説明においては、デバッグ処理とし、フラグDE
BUGがON状態であるものとする。従って、図10に
示したメッセージキューイング処理のS140では、常
に肯定判定されるものとする。そして、このスケジュー
ル処理は図8の初期化処理が行われた後、実行されたも
のとする。また、空きメモリブロック格納部14には充
分な数の空きメモリブロックを設定しており、図10に
示したメッセージキューイング処理のS100では、常
に肯定判定されるものとする。
【0143】図17に示すように、スケジュール処理の
実行が開始されると、まずS300にて、メッセージ送
信要求(1,2)が出される。
実行が開始されると、まずS300にて、メッセージ送
信要求(1,2)が出される。
【0144】すると、前述した図10のメッセージキュ
ーイング処理が実行されて、オブジェクトメッセージ格
納部12にメッセージ(1,2)がキューイングされ
る。
ーイング処理が実行されて、オブジェクトメッセージ格
納部12にメッセージ(1,2)がキューイングされ
る。
【0145】即ち、図10のS110にて、空きメモリ
ブロック格納部14から先頭の空きメモリブロックが取
得され、S120にて、その取得した空きメモリブロッ
クにメッセージ(1,2)が書き込まれ、更に、S13
0にて、メッセージ(1,2)が書き込まれたメモリブ
ロックが、オブジェクトメッセージ格納部12にメッセ
ージブロックとして登録される。そして、この場合に
は、オブジェクトメッセージ格納部12に、メッセージ
(1,2)が書き込まれたメッセージブロックが、1つ
だけ登録されることとなる。換言すれば、オブジェクト
メッセージ格納部12に、メッセージ(1,2)が1つ
だけ記憶されることとなる。そのため、S150にてカ
ウンタCが1つインクリメントされ、このときのカウン
タCのカウント値C=1が最大値となるため、S180
にて最大値Cmax=1となる。
ブロック格納部14から先頭の空きメモリブロックが取
得され、S120にて、その取得した空きメモリブロッ
クにメッセージ(1,2)が書き込まれ、更に、S13
0にて、メッセージ(1,2)が書き込まれたメモリブ
ロックが、オブジェクトメッセージ格納部12にメッセ
ージブロックとして登録される。そして、この場合に
は、オブジェクトメッセージ格納部12に、メッセージ
(1,2)が書き込まれたメッセージブロックが、1つ
だけ登録されることとなる。換言すれば、オブジェクト
メッセージ格納部12に、メッセージ(1,2)が1つ
だけ記憶されることとなる。そのため、S150にてカ
ウンタCが1つインクリメントされ、このときのカウン
タCのカウント値C=1が最大値となるため、S180
にて最大値Cmax=1となる。
【0146】このようにしてメッセージ(1,2)のキ
ューイングが終わると、処理の実行が図17のスケジュ
ール処理に戻り、図17のS310にて、メッセージ配
送要求が出される。
ューイングが終わると、処理の実行が図17のスケジュ
ール処理に戻り、図17のS310にて、メッセージ配
送要求が出される。
【0147】すると、前述した図13のメッセージ配送
処理が実行されて、オブジェクトメッセージ格納部12
にキューイングされているメッセージ(1,2)が配送
される。
処理が実行されて、オブジェクトメッセージ格納部12
にキューイングされているメッセージ(1,2)が配送
される。
【0148】即ち、まず図13のS210にて、オブジ
ェクトメッセージ格納部12にメッセージがキューイン
グされているか否かがチェックされるが、この場合に
は、メッセージ(1,2)のみがキューイングされてい
るため、S220にてカウンタCが1つディクリメント
されたのち、S230にて、オブジェクトメッセージ格
納部12の先頭にあるメッセージブロックからメッセー
ジ(1,2)の内容が読み取られる。また、S240に
て、メッセージ(1,2)が書き込まれていたメッセー
ジブロックが、空きメモリブロック格納部14へ空きメ
モリブロックとして返却される。
ェクトメッセージ格納部12にメッセージがキューイン
グされているか否かがチェックされるが、この場合に
は、メッセージ(1,2)のみがキューイングされてい
るため、S220にてカウンタCが1つディクリメント
されたのち、S230にて、オブジェクトメッセージ格
納部12の先頭にあるメッセージブロックからメッセー
ジ(1,2)の内容が読み取られる。また、S240に
て、メッセージ(1,2)が書き込まれていたメッセー
ジブロックが、空きメモリブロック格納部14へ空きメ
モリブロックとして返却される。
【0149】そして、図13のS250にて、上記読み
取ったメッセージ(1,2)の内容に対応するISCオ
ブジェクトOB1のアイドル時スロットル設定開始要求
メソッドの実行開始アドレスA12(図16参照)が、
接続情報データベース16から算出され、S260に
て、その算出した実行開始アドレスがコールされる。
取ったメッセージ(1,2)の内容に対応するISCオ
ブジェクトOB1のアイドル時スロットル設定開始要求
メソッドの実行開始アドレスA12(図16参照)が、
接続情報データベース16から算出され、S260に
て、その算出した実行開始アドレスがコールされる。
【0150】これにより、メッセージ(1,2)の配送
が行われて、図18に示すアイドル時スロットル設定開
始要求メソッドの実行が開始される。
が行われて、図18に示すアイドル時スロットル設定開
始要求メソッドの実行が開始される。
【0151】図18に示すように、アイドル時スロット
ル設定開始要求メソッドの実行が開始されると、まずS
400にて、アイドル時か否か、つまりエンジンがアイ
ドル運転状態であるか否かが判断される。
ル設定開始要求メソッドの実行が開始されると、まずS
400にて、アイドル時か否か、つまりエンジンがアイ
ドル運転状態であるか否かが判断される。
【0152】そして、アイドル時でなければ、そのまま
当該メソッドの実行が終了されて、処理の実行が図17
のスケジュール処理に戻り、これに伴い全ての処理が終
了するが、アイドル時であれば、続くS405にて、メ
ッセージ送信要求(2,1)が出される。
当該メソッドの実行が終了されて、処理の実行が図17
のスケジュール処理に戻り、これに伴い全ての処理が終
了するが、アイドル時であれば、続くS405にて、メ
ッセージ送信要求(2,1)が出される。
【0153】すると、図10のメッセージキューイング
処理が実行されて、オブジェクトメッセージ格納部12
にメッセージ(2,1)がキューイングされる。
処理が実行されて、オブジェクトメッセージ格納部12
にメッセージ(2,1)がキューイングされる。
【0154】即ち、図10のS110にて、空きメモリ
ブロック格納部14から先頭の空きメモリブロックが取
得され、S120にて、その取得した空きメモリブロッ
クにメッセージ(2,1)が書き込まれ、更に、S13
0にて、メッセージ(2,1)が書き込まれたメモリブ
ロックが、オブジェクトメッセージ格納部12にメッセ
ージブロックとして登録される。そして、この場合に
は、オブジェクトメッセージ格納部12に、メッセージ
(2,1)が書き込まれたメッセージブロックが、1つ
だけ登録されることとなる。換言すれば、オブジェクト
メッセージ格納部12に、メッセージ(2,1)が1つ
だけ記憶されることとなる。そのため、S150にてカ
ウンタCが1つインクリメントされ、このときのカウン
タCのカウント値C=1が最大値となるため、S180
にて最大値Cmax=1となる。
ブロック格納部14から先頭の空きメモリブロックが取
得され、S120にて、その取得した空きメモリブロッ
クにメッセージ(2,1)が書き込まれ、更に、S13
0にて、メッセージ(2,1)が書き込まれたメモリブ
ロックが、オブジェクトメッセージ格納部12にメッセ
ージブロックとして登録される。そして、この場合に
は、オブジェクトメッセージ格納部12に、メッセージ
(2,1)が書き込まれたメッセージブロックが、1つ
だけ登録されることとなる。換言すれば、オブジェクト
メッセージ格納部12に、メッセージ(2,1)が1つ
だけ記憶されることとなる。そのため、S150にてカ
ウンタCが1つインクリメントされ、このときのカウン
タCのカウント値C=1が最大値となるため、S180
にて最大値Cmax=1となる。
【0155】このようにしてメッセージ(2,1)のキ
ューイングが終わると、処理の実行が図18のアイドル
時スロットル設定開始要求メソッドに戻り、図18のS
410にて、メッセージ送信要求(5,0)が出され
る。
ューイングが終わると、処理の実行が図18のアイドル
時スロットル設定開始要求メソッドに戻り、図18のS
410にて、メッセージ送信要求(5,0)が出され
る。
【0156】すると、再び、図10のメッセージキュー
イング処理が実行されて、オブジェクトメッセージ格納
部12にメッセージ(5,0)がキューイングされる。
イング処理が実行されて、オブジェクトメッセージ格納
部12にメッセージ(5,0)がキューイングされる。
【0157】即ち、図10のS110にて、空きメモリ
ブロック格納部14から先頭の空きメモリブロックが取
得され、S120にて、その取得した空きメモリブロッ
クにメッセージ(5,0)が書き込まれ、更に、S13
0にて、メッセージ(5,0)が書き込まれたメモリブ
ロックが、オブジェクトメッセージ格納部12における
メッセージブロックの最後尾に(この場合には先頭から
2番目)に、メッセージブロックとして登録される。
ブロック格納部14から先頭の空きメモリブロックが取
得され、S120にて、その取得した空きメモリブロッ
クにメッセージ(5,0)が書き込まれ、更に、S13
0にて、メッセージ(5,0)が書き込まれたメモリブ
ロックが、オブジェクトメッセージ格納部12における
メッセージブロックの最後尾に(この場合には先頭から
2番目)に、メッセージブロックとして登録される。
【0158】そして、この場合には、オブジェクトメッ
セージ格納部12に、メッセージ(2,1)が書き込ま
れたメッセージブロックと、メッセージ(5,0)が書
き込まれたメッセージブロックとが、その順に2つ登録
されることとなる。換言すれば、オブジェクトメッセー
ジ格納部12に、2つのメッセージが、メッセージ
(2,1)→メッセージ(5,0)の順に記憶されるこ
ととなる。そのため、S150にてカウンタCが1つイ
ンクリメントされ、このときのカウンタCのカウント値
C=2が最大値となるため、S180にて最大値Cma
x=2となる。
セージ格納部12に、メッセージ(2,1)が書き込ま
れたメッセージブロックと、メッセージ(5,0)が書
き込まれたメッセージブロックとが、その順に2つ登録
されることとなる。換言すれば、オブジェクトメッセー
ジ格納部12に、2つのメッセージが、メッセージ
(2,1)→メッセージ(5,0)の順に記憶されるこ
ととなる。そのため、S150にてカウンタCが1つイ
ンクリメントされ、このときのカウンタCのカウント値
C=2が最大値となるため、S180にて最大値Cma
x=2となる。
【0159】このようにしてメッセージ(5,0)のキ
ューイングが終わると、処理の実行が図18のアイドル
時スロットル設定開始要求メソッドに戻る。そして、こ
のアイドル時スロットル設定開始要求メソッドの処理が
終了すると、図13のメッセージ配送処理が実行され
て、オブジェクトメッセージ格納部12にキューイング
されている2つのメッセージのうち、最初に記憶された
方のメッセージ(2,1)が配送される。
ューイングが終わると、処理の実行が図18のアイドル
時スロットル設定開始要求メソッドに戻る。そして、こ
のアイドル時スロットル設定開始要求メソッドの処理が
終了すると、図13のメッセージ配送処理が実行され
て、オブジェクトメッセージ格納部12にキューイング
されている2つのメッセージのうち、最初に記憶された
方のメッセージ(2,1)が配送される。
【0160】即ち、図13のS220にてカウンタCが
1つディクリメントされたのち、S230にて、オブジ
ェクトメッセージ格納部12の先頭にあるメッセージブ
ロックからメッセージ(2,1)の内容が読み取られ、
また、S240にて、メッセージ(2,1)が書き込ま
れていたメッセージブロックが、空きメモリブロック格
納部14へ空きメモリブロックとして返却される。そし
て、S250にて、上記読み取ったメッセージ(2,
1)の内容に対応する水温センサオブジェクトOB2の
水温取得要求メソッドの実行開始アドレスA21(図1
6参照)が、接続情報データベース16から算出され、
S260にて、その算出した実行開始アドレスがコール
される。
1つディクリメントされたのち、S230にて、オブジ
ェクトメッセージ格納部12の先頭にあるメッセージブ
ロックからメッセージ(2,1)の内容が読み取られ、
また、S240にて、メッセージ(2,1)が書き込ま
れていたメッセージブロックが、空きメモリブロック格
納部14へ空きメモリブロックとして返却される。そし
て、S250にて、上記読み取ったメッセージ(2,
1)の内容に対応する水温センサオブジェクトOB2の
水温取得要求メソッドの実行開始アドレスA21(図1
6参照)が、接続情報データベース16から算出され、
S260にて、その算出した実行開始アドレスがコール
される。
【0161】これにより、メッセージ(2,1)の配送
が行われて、図21に示す水温取得要求メソッドの実行
が開始される。
が行われて、図21に示す水温取得要求メソッドの実行
が開始される。
【0162】図21に示すように、水温取得要求メソッ
ドの実行が開始されると、S500にて、メッセージ送
信要求(3,0)が出される。
ドの実行が開始されると、S500にて、メッセージ送
信要求(3,0)が出される。
【0163】すると、図10のメッセージキューイング
処理が実行されて、前述した手順と全く同様に、オブジ
ェクトメッセージ格納部12にメッセージ(3,0)が
キューイングされる。そして、この場合には、オブジェ
クトメッセージ格納部12に、メッセージ(5,0)が
書き込まれたメッセージブロックと、メッセージ(3,
0)が書き込まれたメッセージブロックとが、その順に
2つ登録されることとなる。換言すれば、オブジェクト
メッセージ格納部12に、2つのメッセージが、メッセ
ージ(5,0)→メッセージ(3,0)の順に記憶され
ることとなる。そのため、S150にてカウンタCが1
つインクリメントされ、このときのカウンタCのカウン
ト値Cが2であるため、最大値Cmaxは2のままであ
る。
処理が実行されて、前述した手順と全く同様に、オブジ
ェクトメッセージ格納部12にメッセージ(3,0)が
キューイングされる。そして、この場合には、オブジェ
クトメッセージ格納部12に、メッセージ(5,0)が
書き込まれたメッセージブロックと、メッセージ(3,
0)が書き込まれたメッセージブロックとが、その順に
2つ登録されることとなる。換言すれば、オブジェクト
メッセージ格納部12に、2つのメッセージが、メッセ
ージ(5,0)→メッセージ(3,0)の順に記憶され
ることとなる。そのため、S150にてカウンタCが1
つインクリメントされ、このときのカウンタCのカウン
ト値Cが2であるため、最大値Cmaxは2のままであ
る。
【0164】このようにしてメッセージ(3,0)のキ
ューイングが終わると、処理の実行が図21の水温取得
要求メソッドに戻る。そして、この水温取得要求メソッ
ドの処理が終了すると、図13のメッセージ配送処理が
実行されて、オブジェクトメッセージ格納部12にキュ
ーイングされている2つのメッセージのうち、最初に記
憶された方のメッセージ(5,0)が配送される。
ューイングが終わると、処理の実行が図21の水温取得
要求メソッドに戻る。そして、この水温取得要求メソッ
ドの処理が終了すると、図13のメッセージ配送処理が
実行されて、オブジェクトメッセージ格納部12にキュ
ーイングされている2つのメッセージのうち、最初に記
憶された方のメッセージ(5,0)が配送される。
【0165】即ち、図13のS220にてカウンタCが
1つディクリメントされたのち、S230にて、オブジ
ェクトメッセージ格納部12の先頭にあるメッセージブ
ロックからメッセージ(5,0)の内容が読み取られ、
また、S240にて、メッセージ(5,0)が書き込ま
れていたメッセージブロックが、空きメモリブロック格
納部14へ空きメモリブロックとして返却される。そし
て、S250にて、上記読み取ったメッセージ(5,
0)の内容に対応するクランクセンサオブジェクトOB
5のエンジン回転数取得要求メソッドの実行開始アドレ
スA50(図16参照)が、接続情報データベース16
から算出され、S260にて、その算出した実行開始ア
ドレスがコールされる。
1つディクリメントされたのち、S230にて、オブジ
ェクトメッセージ格納部12の先頭にあるメッセージブ
ロックからメッセージ(5,0)の内容が読み取られ、
また、S240にて、メッセージ(5,0)が書き込ま
れていたメッセージブロックが、空きメモリブロック格
納部14へ空きメモリブロックとして返却される。そし
て、S250にて、上記読み取ったメッセージ(5,
0)の内容に対応するクランクセンサオブジェクトOB
5のエンジン回転数取得要求メソッドの実行開始アドレ
スA50(図16参照)が、接続情報データベース16
から算出され、S260にて、その算出した実行開始ア
ドレスがコールされる。
【0166】これにより、メッセージ(5,0)の配送
が行われて、図25に示すエンジン回転数取得要求メソ
ッドの実行が開始される。
が行われて、図25に示すエンジン回転数取得要求メソ
ッドの実行が開始される。
【0167】図25に示すように、エンジン回転数取得
要求メソッドの実行が開始されると、S800にて、ク
ランクセンサからの信号に基づきエンジン回転数が算出
される。そして、続くS805にて、上記S800で算
出されたエンジン回転数がRAM6に保存され、次のS
810にて、メッセージ送信要求(1,4)が出され
る。
要求メソッドの実行が開始されると、S800にて、ク
ランクセンサからの信号に基づきエンジン回転数が算出
される。そして、続くS805にて、上記S800で算
出されたエンジン回転数がRAM6に保存され、次のS
810にて、メッセージ送信要求(1,4)が出され
る。
【0168】すると、図10のメッセージキューイング
処理が実行されて、前述した手順と全く同様に、オブジ
ェクトメッセージ格納部12にメッセージ(1,4)が
キューイングされる。そして、この場合には、オブジェ
クトメッセージ格納部12に、メッセージ(3,0)が
書き込まれたメッセージブロックと、メッセージ(1,
4)が書き込まれたメッセージブロックとが、その順に
2つ登録されることとなる。換言すれば、オブジェクト
メッセージ格納部12に、2つのメッセージが、メッセ
ージ(3,0)→メッセージ(1,4)の順に記憶され
ることとなる。そのため、S150にてカウンタCが1
つインクリメントされ、このときのカウンタCのカウン
ト値Cが2であるため、最大値Cmaxは2のままであ
る。
処理が実行されて、前述した手順と全く同様に、オブジ
ェクトメッセージ格納部12にメッセージ(1,4)が
キューイングされる。そして、この場合には、オブジェ
クトメッセージ格納部12に、メッセージ(3,0)が
書き込まれたメッセージブロックと、メッセージ(1,
4)が書き込まれたメッセージブロックとが、その順に
2つ登録されることとなる。換言すれば、オブジェクト
メッセージ格納部12に、2つのメッセージが、メッセ
ージ(3,0)→メッセージ(1,4)の順に記憶され
ることとなる。そのため、S150にてカウンタCが1
つインクリメントされ、このときのカウンタCのカウン
ト値Cが2であるため、最大値Cmaxは2のままであ
る。
【0169】このようにしてメッセージ(1,4)のキ
ューイングが終わると、処理の実行が図25のエンジン
回転数取得要求メソッドに戻る。そして、このエンジン
回転数取得要求メソッドの処理が終了すると、図13の
メッセージ配送処理が実行されて、オブジェクトメッセ
ージ格納部12にキューイングされている2つのメッセ
ージのうち、最初に記憶された方のメッセージ(3,
0)が配送される。
ューイングが終わると、処理の実行が図25のエンジン
回転数取得要求メソッドに戻る。そして、このエンジン
回転数取得要求メソッドの処理が終了すると、図13の
メッセージ配送処理が実行されて、オブジェクトメッセ
ージ格納部12にキューイングされている2つのメッセ
ージのうち、最初に記憶された方のメッセージ(3,
0)が配送される。
【0170】即ち、図13のS220にてカウンタCが
1つディクリメントされたのち、S230にて、オブジ
ェクトメッセージ格納部12の先頭にあるメッセージブ
ロックからメッセージ(3,0)の内容が読み取られ、
また、S240にて、メッセージ(3,0)が書き込ま
れていたメッセージブロックが、空きメモリブロック格
納部14へ空きメモリブロックとして返却される。そし
て、S250にて、上記読み取ったメッセージ(3,
0)の内容に対応するAD変換器オブジェクトOB3の
水温AD値取得要求メソッドの実行開始アドレスA30
(図16参照)が、接続情報データベース16から算出
され、S260にて、その算出した実行開始アドレスが
コールされる。
1つディクリメントされたのち、S230にて、オブジ
ェクトメッセージ格納部12の先頭にあるメッセージブ
ロックからメッセージ(3,0)の内容が読み取られ、
また、S240にて、メッセージ(3,0)が書き込ま
れていたメッセージブロックが、空きメモリブロック格
納部14へ空きメモリブロックとして返却される。そし
て、S250にて、上記読み取ったメッセージ(3,
0)の内容に対応するAD変換器オブジェクトOB3の
水温AD値取得要求メソッドの実行開始アドレスA30
(図16参照)が、接続情報データベース16から算出
され、S260にて、その算出した実行開始アドレスが
コールされる。
【0171】これにより、メッセージ(3,0)の配送
が行われて、図23に示す水温AD値取得要求メソッド
の実行が開始される。
が行われて、図23に示す水温AD値取得要求メソッド
の実行が開始される。
【0172】図23に示すように、水温AD値取得要求
メソッドの実行が開始されると、S600にて、水温セ
ンサからのアナログ信号をデジタル値に変換する演算が
行われ、続くS605にて、上記S600で演算された
デジタル値がRAM6に保存される。そして、次のS6
10にて、メッセージ送信要求(2,2)が出される。
メソッドの実行が開始されると、S600にて、水温セ
ンサからのアナログ信号をデジタル値に変換する演算が
行われ、続くS605にて、上記S600で演算された
デジタル値がRAM6に保存される。そして、次のS6
10にて、メッセージ送信要求(2,2)が出される。
【0173】すると、図10のメッセージキューイング
処理が実行されて、前述した手順と全く同様に、オブジ
ェクトメッセージ格納部12にメッセージ(2,2)が
キューイングされる。そして、この場合には、オブジェ
クトメッセージ格納部12に、メッセージ(1,4)が
書き込まれたメッセージブロックと、メッセージ(2,
2)が書き込まれたメッセージブロックとが、その順に
2つ登録されることとなる。換言すれば、オブジェクト
メッセージ格納部12に、2つのメッセージが、メッセ
ージ(1,4)→メッセージ(2,2)の順に記憶され
ることとなる。そのため、S150にてカウンタCが1
つインクリメントされ、このときのカウンタCのカウン
ト値Cが2であるため、最大値Cmaxは2のままであ
る。
処理が実行されて、前述した手順と全く同様に、オブジ
ェクトメッセージ格納部12にメッセージ(2,2)が
キューイングされる。そして、この場合には、オブジェ
クトメッセージ格納部12に、メッセージ(1,4)が
書き込まれたメッセージブロックと、メッセージ(2,
2)が書き込まれたメッセージブロックとが、その順に
2つ登録されることとなる。換言すれば、オブジェクト
メッセージ格納部12に、2つのメッセージが、メッセ
ージ(1,4)→メッセージ(2,2)の順に記憶され
ることとなる。そのため、S150にてカウンタCが1
つインクリメントされ、このときのカウンタCのカウン
ト値Cが2であるため、最大値Cmaxは2のままであ
る。
【0174】このようにしてメッセージ(2,2)のキ
ューイングが終わると、処理の実行が図23の水温AD
値取得要求メソッドに戻る。そして、この水温AD値取
得要求メソッドの処理が終了すると、図13のメッセー
ジ配送処理が実行されて、オブジェクトメッセージ格納
部12にキューイングされている2つのメッセージのう
ち、最初に記憶された方のメッセージ(1,4)が配送
される。
ューイングが終わると、処理の実行が図23の水温AD
値取得要求メソッドに戻る。そして、この水温AD値取
得要求メソッドの処理が終了すると、図13のメッセー
ジ配送処理が実行されて、オブジェクトメッセージ格納
部12にキューイングされている2つのメッセージのう
ち、最初に記憶された方のメッセージ(1,4)が配送
される。
【0175】即ち、図13のS220にてカウンタCが
1つディクリメントされたのち、S230にて、オブジ
ェクトメッセージ格納部12の先頭にあるメッセージブ
ロックからメッセージ(1,4)の内容が読み取られ、
また、S240にて、メッセージ(1,4)が書き込ま
れていたメッセージブロックが、空きメモリブロック格
納部14へ空きメモリブロックとして返却される。そし
て、S250にて、上記読み取ったメッセージ(1,
4)の内容に対応するISCオブジェクトOB1のエン
ジン回転数取得応答メソッドの実行開始アドレスA14
(図16参照)が、接続情報データベース16から算出
され、S260にて、その算出した実行開始アドレスが
コールされる。
1つディクリメントされたのち、S230にて、オブジ
ェクトメッセージ格納部12の先頭にあるメッセージブ
ロックからメッセージ(1,4)の内容が読み取られ、
また、S240にて、メッセージ(1,4)が書き込ま
れていたメッセージブロックが、空きメモリブロック格
納部14へ空きメモリブロックとして返却される。そし
て、S250にて、上記読み取ったメッセージ(1,
4)の内容に対応するISCオブジェクトOB1のエン
ジン回転数取得応答メソッドの実行開始アドレスA14
(図16参照)が、接続情報データベース16から算出
され、S260にて、その算出した実行開始アドレスが
コールされる。
【0176】これにより、メッセージ(1,4)の配送
が行われて、図20に示すエンジン回転数取得応答メソ
ッドの実行が開始される。
が行われて、図20に示すエンジン回転数取得応答メソ
ッドの実行が開始される。
【0177】図20に示すように、エンジン回転数取得
応答メソッドの実行が開始されると、S450にて、水
温取得済みか否か、つまりRAM6に最新の水温値が保
存されているか否かが判断される。
応答メソッドの実行が開始されると、S450にて、水
温取得済みか否か、つまりRAM6に最新の水温値が保
存されているか否かが判断される。
【0178】ここで、仮に、水温取得済みであれば、S
455にて、RAM6から最新のエンジン回転数と水温
値とが読み出され、続くS460にて、S455で読み
出されたエンジン回転数及び水温値に基づき、エンジン
回転数を最適なアイドル回転数にするための目標スロッ
トル開度が算出される。そして、続くS465にて、上
記S460で算出された目標スロットル開度がRAM6
に保存され、次のS470にて、メッセージ送信要求
(4,4)が出される。
455にて、RAM6から最新のエンジン回転数と水温
値とが読み出され、続くS460にて、S455で読み
出されたエンジン回転数及び水温値に基づき、エンジン
回転数を最適なアイドル回転数にするための目標スロッ
トル開度が算出される。そして、続くS465にて、上
記S460で算出された目標スロットル開度がRAM6
に保存され、次のS470にて、メッセージ送信要求
(4,4)が出される。
【0179】但し、本実施形態の場合には、この時点
で、最新の水温値をRAM6に保存するための、水温セ
ンサオブジェクトOB2の水温AD値取得応答メソッド
が、未だ実行されていないため、上記S450にて、常
に、水温取得済みではないと判断され、上記S455〜
S470の処理を行うことなく、そのまま当該エンジン
回転数取得応答メソッドの実行が終了される。
で、最新の水温値をRAM6に保存するための、水温セ
ンサオブジェクトOB2の水温AD値取得応答メソッド
が、未だ実行されていないため、上記S450にて、常
に、水温取得済みではないと判断され、上記S455〜
S470の処理を行うことなく、そのまま当該エンジン
回転数取得応答メソッドの実行が終了される。
【0180】そして、エンジン回転数取得応答メソッド
の実行が終了すると、図13のメッセージ配送処理が実
行されて、オブジェクトメッセージ格納部12にキュー
イングされているメッセージ(2,2)が配送される。
の実行が終了すると、図13のメッセージ配送処理が実
行されて、オブジェクトメッセージ格納部12にキュー
イングされているメッセージ(2,2)が配送される。
【0181】即ち、この場合には、メッセージ(2,
2)のみがキューイングされているため、図13のS2
20にてカウンタCが1つディクリメントされたのち、
S230にて、オブジェクトメッセージ格納部12の先
頭にあるメッセージブロックからメッセージ(2,2)
の内容が読み取られる。また、S240にて、メッセー
ジ(2,2)が書き込まれていたメッセージブロック
が、空きメモリブロック格納部14へ空きメモリブロッ
クとして返却される。そして、S250にて、上記読み
取ったメッセージ(2,2)の内容に対応する水温セン
サオブジェクトOB2の水温AD値取得応答メソッドの
実行開始アドレスA22(図16参照)が、接続情報デ
ータベース16から算出され、S260にて、その算出
した実行開始アドレスがコールされる。
2)のみがキューイングされているため、図13のS2
20にてカウンタCが1つディクリメントされたのち、
S230にて、オブジェクトメッセージ格納部12の先
頭にあるメッセージブロックからメッセージ(2,2)
の内容が読み取られる。また、S240にて、メッセー
ジ(2,2)が書き込まれていたメッセージブロック
が、空きメモリブロック格納部14へ空きメモリブロッ
クとして返却される。そして、S250にて、上記読み
取ったメッセージ(2,2)の内容に対応する水温セン
サオブジェクトOB2の水温AD値取得応答メソッドの
実行開始アドレスA22(図16参照)が、接続情報デ
ータベース16から算出され、S260にて、その算出
した実行開始アドレスがコールされる。
【0182】これにより、メッセージ(2,2)の配送
が行われて、図22に示す水温AD値取得応答メソッド
の実行が開始される。
が行われて、図22に示す水温AD値取得応答メソッド
の実行が開始される。
【0183】図22に示すように、水温AD値取得応答
メソッドの実行が開始されると、S510にて、水温A
D値取得要求メソッド(図23)のS605でRAM6
に保存されたデジタル値が読み出され、続くS515に
て、上記S510で読み出したデジタル値を水温値
(℃)に変換する演算が行われる。
メソッドの実行が開始されると、S510にて、水温A
D値取得要求メソッド(図23)のS605でRAM6
に保存されたデジタル値が読み出され、続くS515に
て、上記S510で読み出したデジタル値を水温値
(℃)に変換する演算が行われる。
【0184】そして、続くS520にて、上記S515
で演算された水温値がRAM6に保存され、次のS52
5にて、メッセージ送信要求(1,3)が出される。
で演算された水温値がRAM6に保存され、次のS52
5にて、メッセージ送信要求(1,3)が出される。
【0185】すると、図10のメッセージキューイング
処理が実行されて、前述した手順と全く同様に、オブジ
ェクトメッセージ格納部12にメッセージ(1,3)が
キューイングされる。そして、この場合には、オブジェ
クトメッセージ格納部12に、メッセージ(1,3)が
書き込まれたメッセージブロックが、1つだけ登録され
ることとなる。換言すれば、オブジェクトメッセージ格
納部12に、メッセージ(1,3)が1つだけ記憶され
ることとなる。そのため、S150にてカウンタCが1
つインクリメントされ、このときのカウンタCのカウン
ト値C=1は最大値とならないため、最大値Cmaxは
2のままである。
処理が実行されて、前述した手順と全く同様に、オブジ
ェクトメッセージ格納部12にメッセージ(1,3)が
キューイングされる。そして、この場合には、オブジェ
クトメッセージ格納部12に、メッセージ(1,3)が
書き込まれたメッセージブロックが、1つだけ登録され
ることとなる。換言すれば、オブジェクトメッセージ格
納部12に、メッセージ(1,3)が1つだけ記憶され
ることとなる。そのため、S150にてカウンタCが1
つインクリメントされ、このときのカウンタCのカウン
ト値C=1は最大値とならないため、最大値Cmaxは
2のままである。
【0186】このようにしてメッセージ(1,3)のキ
ューイングが終わると、処理の実行が図22の水温AD
値取得応答メソッドに戻る。そして、この水温AD値取
得応答メソッドの処理が終了すると、図13のメッセー
ジ配送処理が実行されて、オブジェクトメッセージ格納
部12にキューイングされているメッセージ(1,3)
が配送される。
ューイングが終わると、処理の実行が図22の水温AD
値取得応答メソッドに戻る。そして、この水温AD値取
得応答メソッドの処理が終了すると、図13のメッセー
ジ配送処理が実行されて、オブジェクトメッセージ格納
部12にキューイングされているメッセージ(1,3)
が配送される。
【0187】即ち、図13のS220にてカウンタCが
1つディクリメントされたのち、S230にて、オブジ
ェクトメッセージ格納部12の先頭にあるメッセージブ
ロックからメッセージ(1,3)の内容が読み取られ、
また、S240にて、メッセージ(1,3)が書き込ま
れていたメッセージブロックが、空きメモリブロック格
納部14へ空きメモリブロックとして返却される。そし
て、S250にて、上記読み取ったメッセージ(1,
3)の内容に対応するISCオブジェクトOB1の水温
取得応答メソッドの実行開始アドレスA13(図16参
照)が、接続情報データベース16から算出され、S2
60にて、その算出した実行開始アドレスがコールされ
る。
1つディクリメントされたのち、S230にて、オブジ
ェクトメッセージ格納部12の先頭にあるメッセージブ
ロックからメッセージ(1,3)の内容が読み取られ、
また、S240にて、メッセージ(1,3)が書き込ま
れていたメッセージブロックが、空きメモリブロック格
納部14へ空きメモリブロックとして返却される。そし
て、S250にて、上記読み取ったメッセージ(1,
3)の内容に対応するISCオブジェクトOB1の水温
取得応答メソッドの実行開始アドレスA13(図16参
照)が、接続情報データベース16から算出され、S2
60にて、その算出した実行開始アドレスがコールされ
る。
【0188】これにより、メッセージ(1,3)の配送
が行われて、図19に示す水温取得応答メソッドの実行
が開始される。
が行われて、図19に示す水温取得応答メソッドの実行
が開始される。
【0189】図19に示すように、水温取得応答メソッ
ドの実行が開始されると、S420にて、回転数取得済
みか否か、つまりRAM6に最新のエンジン回転数が保
存されているか否かが判断される。
ドの実行が開始されると、S420にて、回転数取得済
みか否か、つまりRAM6に最新のエンジン回転数が保
存されているか否かが判断される。
【0190】ここで、仮に、回転数取得済みでなけれ
ば、そのまま当該水温取得応答メソッドが終了される
が、本実施形態の場合には、この時点で、前述したエン
ジン回転数取得要求メソッド(図25)のS805によ
り、最新のエンジン回転数がRAM6に保存されている
ため、上記S420にて、常に、回転数取得済みである
と判断される。
ば、そのまま当該水温取得応答メソッドが終了される
が、本実施形態の場合には、この時点で、前述したエン
ジン回転数取得要求メソッド(図25)のS805によ
り、最新のエンジン回転数がRAM6に保存されている
ため、上記S420にて、常に、回転数取得済みである
と判断される。
【0191】そして、回転数取得済みであると判断され
ると、続くS425にて、RAM6から最新のエンジン
回転数と水温値とが読み出され、続くS430にて、S
425で読み出されたエンジン回転数及び水温値に基づ
き、エンジン回転数を最適なアイドル回転数にするため
の目標スロットル開度が算出される。そして、続くS4
35にて、上記S430で算出された目標スロットル開
度がRAM6に保存され、次のS440にて、メッセー
ジ送信要求(4,4)が出される。
ると、続くS425にて、RAM6から最新のエンジン
回転数と水温値とが読み出され、続くS430にて、S
425で読み出されたエンジン回転数及び水温値に基づ
き、エンジン回転数を最適なアイドル回転数にするため
の目標スロットル開度が算出される。そして、続くS4
35にて、上記S430で算出された目標スロットル開
度がRAM6に保存され、次のS440にて、メッセー
ジ送信要求(4,4)が出される。
【0192】すると、図10のメッセージキューイング
処理が実行されて、前述した手順と全く同様に、オブジ
ェクトメッセージ格納部12にメッセージ(4,4)が
キューイングされる。そして、この場合には、オブジェ
クトメッセージ格納部12に、メッセージ(4,4)が
書き込まれたメッセージブロックが、1つだけ登録され
ることとなる。換言すれば、オブジェクトメッセージ格
納部12に、メッセージ(4,4)が1つだけ記憶され
ることとなる。そのため、S150にてカウンタCが1
つインクリメントされ、このときのカウンタCのカウン
ト値C=1は最大値とならないため、最大値Cmaxは
2のままである。
処理が実行されて、前述した手順と全く同様に、オブジ
ェクトメッセージ格納部12にメッセージ(4,4)が
キューイングされる。そして、この場合には、オブジェ
クトメッセージ格納部12に、メッセージ(4,4)が
書き込まれたメッセージブロックが、1つだけ登録され
ることとなる。換言すれば、オブジェクトメッセージ格
納部12に、メッセージ(4,4)が1つだけ記憶され
ることとなる。そのため、S150にてカウンタCが1
つインクリメントされ、このときのカウンタCのカウン
ト値C=1は最大値とならないため、最大値Cmaxは
2のままである。
【0193】このようにしてメッセージ(4,4)のキ
ューイングが終わると、処理の実行が図19の水温取得
応答メソッドに戻る。そして、この水温取得応答メソッ
ドの処理が終了すると、図13のメッセージ配送処理が
実行されて、オブジェクトメッセージ格納部12にキュ
ーイングされているメッセージ(4,4)が配送され
る。
ューイングが終わると、処理の実行が図19の水温取得
応答メソッドに戻る。そして、この水温取得応答メソッ
ドの処理が終了すると、図13のメッセージ配送処理が
実行されて、オブジェクトメッセージ格納部12にキュ
ーイングされているメッセージ(4,4)が配送され
る。
【0194】即ち、図13のS220にてカウンタCが
1つディクリメントされたのち、S230にて、オブジ
ェクトメッセージ格納部12の先頭にあるメッセージブ
ロックからメッセージ(4,4)の内容が読み取られ、
また、S240にて、メッセージ(4,4)が書き込ま
れていたメッセージブロックが、空きメモリブロック格
納部14へ空きメモリブロックとして返却される。そし
て、S250にて、上記読み取ったメッセージ(4,
4)の内容に対応するスロットルコントローラオブジェ
クトOB4のスロットル設定要求メソッドの実行開始ア
ドレスA44(図16参照)が、接続情報データベース
16から算出され、S260にて、その算出した実行開
始アドレスがコールされる。
1つディクリメントされたのち、S230にて、オブジ
ェクトメッセージ格納部12の先頭にあるメッセージブ
ロックからメッセージ(4,4)の内容が読み取られ、
また、S240にて、メッセージ(4,4)が書き込ま
れていたメッセージブロックが、空きメモリブロック格
納部14へ空きメモリブロックとして返却される。そし
て、S250にて、上記読み取ったメッセージ(4,
4)の内容に対応するスロットルコントローラオブジェ
クトOB4のスロットル設定要求メソッドの実行開始ア
ドレスA44(図16参照)が、接続情報データベース
16から算出され、S260にて、その算出した実行開
始アドレスがコールされる。
【0195】これにより、メッセージ(4,4)の配送
が行われて、図24に示すスロットル設定要求メソッド
の実行が開始される。
が行われて、図24に示すスロットル設定要求メソッド
の実行が開始される。
【0196】図24に示すように、スロットル設定要求
メソッドの実行が開始されると、S700にて、水温取
得応答メソッド(図19)のS435でRAM6に保存
された目標スロットル開度が読み出され、続くS705
にて、スロットル弁の開度を上記目標スロットル開度に
調整するスロットル制御が行われる。そして、このS7
05のスロットル制御を行った後、当該スロットル設定
要求メソッドが終了する。
メソッドの実行が開始されると、S700にて、水温取
得応答メソッド(図19)のS435でRAM6に保存
された目標スロットル開度が読み出され、続くS705
にて、スロットル弁の開度を上記目標スロットル開度に
調整するスロットル制御が行われる。そして、このS7
05のスロットル制御を行った後、当該スロットル設定
要求メソッドが終了する。
【0197】すると、図13のメッセージ配送処理が実
行されて、そのS210にて、オブジェクトメッセージ
格納部12にメッセージがキューイングされているか否
かがチェックされるが、この場合には、もはやキューイ
ングされているメッセージが無いため、メッセージ受信
待ち状態に戻る。そして、図17のスケジュール処理に
戻り、そのスケジュール処理の終了に伴い全ての処理が
一旦終わる。
行されて、そのS210にて、オブジェクトメッセージ
格納部12にメッセージがキューイングされているか否
かがチェックされるが、この場合には、もはやキューイ
ングされているメッセージが無いため、メッセージ受信
待ち状態に戻る。そして、図17のスケジュール処理に
戻り、そのスケジュール処理の終了に伴い全ての処理が
一旦終わる。
【0198】所定のデバッグ処理が終了したので、図1
のデバッグツール7がRAM6よりCmax値を読み取
り、読み取った値をプログラムの中のメモリブロック数
指定箇所に反映する。
のデバッグツール7がRAM6よりCmax値を読み取
り、読み取った値をプログラムの中のメモリブロック数
指定箇所に反映する。
【0199】上記の例では、Cmax=2である。従っ
てメモリブロックを2個用意しておけば上記処理をエラ
ーなく行うことができることがわかるので、プログラム
の中のメモリブロック数指定箇所を2またはこれ以上の
近い値に書き換える。これにより有効にメモリブロック
を確保できる。
てメモリブロックを2個用意しておけば上記処理をエラ
ーなく行うことができることがわかるので、プログラム
の中のメモリブロック数指定箇所を2またはこれ以上の
近い値に書き換える。これにより有効にメモリブロック
を確保できる。
【0200】以上のように、各オブジェクトOB1〜O
B5のメソッドが、ISCオブジェクトOB1のアイ
ドル時スロットル設定開始要求メソッド(図18),
水温センサオブジェクトOB2の水温取得要求メソッド
(図21),クランクセンサオブジェクトOB5のエ
ンジン回転数取得要求メソッド(図25),AD変換
器オブジェクトOB3の水温AD値取得要求メソッド
(図23),ISCオブジェクトOB1のエンジン回
転数取得応答メソッド(図20),水温センサオブジ
ェクトOB2の水温AD値取得応答メソッド(図2
2),ISCオブジェクトOB1の水温取得応答メソ
ッド(図19),スロットルコントローラオブジェク
トOB4のスロットル設定要求メソッド(図24)の順
で実行されて、図3のメッセージシーケンスチャートに
示した順序でアイドル回転数制御のための処理が行われ
る。
B5のメソッドが、ISCオブジェクトOB1のアイ
ドル時スロットル設定開始要求メソッド(図18),
水温センサオブジェクトOB2の水温取得要求メソッド
(図21),クランクセンサオブジェクトOB5のエ
ンジン回転数取得要求メソッド(図25),AD変換
器オブジェクトOB3の水温AD値取得要求メソッド
(図23),ISCオブジェクトOB1のエンジン回
転数取得応答メソッド(図20),水温センサオブジ
ェクトOB2の水温AD値取得応答メソッド(図2
2),ISCオブジェクトOB1の水温取得応答メソ
ッド(図19),スロットルコントローラオブジェク
トOB4のスロットル設定要求メソッド(図24)の順
で実行されて、図3のメッセージシーケンスチャートに
示した順序でアイドル回転数制御のための処理が行われ
る。
【0201】ここで特に、本実施形態のECU1では、
イグニッションスイッチがオフ状態からオンされたり、
マイクロコンピュータにリセットがかけられる等の初期
化要求が生じると、図8の初期化処理を実行して、空き
メモリブロック格納部14にメッセージの記憶(キュー
イング)専用にメモリに記憶領域(空きメモリブロッ
ク)を確保する。そしてオブジェクトが出したメッセー
ジ(メッセージ送信要求)を記憶し、オブジェクトメッ
セージ格納部12で確保する。そして、オブジェクトメ
ッセージ格納部12に記憶されているメッセージを読み
出し、その読み出したメッセージの出力先であるオブジ
ェクトのメソッドの実行に移行するようにしている。
イグニッションスイッチがオフ状態からオンされたり、
マイクロコンピュータにリセットがかけられる等の初期
化要求が生じると、図8の初期化処理を実行して、空き
メモリブロック格納部14にメッセージの記憶(キュー
イング)専用にメモリに記憶領域(空きメモリブロッ
ク)を確保する。そしてオブジェクトが出したメッセー
ジ(メッセージ送信要求)を記憶し、オブジェクトメッ
セージ格納部12で確保する。そして、オブジェクトメ
ッセージ格納部12に記憶されているメッセージを読み
出し、その読み出したメッセージの出力先であるオブジ
ェクトのメソッドの実行に移行するようにしている。
【0202】従って、本実施形態のECU1によれば、
各オブジェクトのメソッドを、高い動作速度で実行する
ことができる。しかも、メッセージのみを専用に確保し
た記憶領域(空きメモリブロック)に記憶させるため、
確保すべき容量が予測しやすくメモリ資源の消費量を減
らすことが可能となる。
各オブジェクトのメソッドを、高い動作速度で実行する
ことができる。しかも、メッセージのみを専用に確保し
た記憶領域(空きメモリブロック)に記憶させるため、
確保すべき容量が予測しやすくメモリ資源の消費量を減
らすことが可能となる。
【0203】また、本実施形態のECU1によれば、メ
モリ領域をシステム存続中に必要となる量だけイニシャ
ル時に確保し、これらをメッセージ配送制御部10上で
管理し、その中で動的に運用している。
モリ領域をシステム存続中に必要となる量だけイニシャ
ル時に確保し、これらをメッセージ配送制御部10上で
管理し、その中で動的に運用している。
【0204】このようにOSに依存しない管理方法でメ
モリを利用することで、OSからの独立性が高まり、さ
らにOSへのシステムコールにかかるオーバーヘッドを
なくすことができる。
モリを利用することで、OSからの独立性が高まり、さ
らにOSへのシステムコールにかかるオーバーヘッドを
なくすことができる。
【0205】また、本実施形態のECU1では、オブジ
ェクトメッセージ格納部12に記憶されているメッセー
ジを読み出して、その読み出したメッセージの出力先で
あるオブジェクトのメソッドに処理を開始させると共
に、その読み出したメッセージをオブジェクトメッセー
ジ格納部12から消去するようにしている。詳しくは、
読み出したメッセージが書き込まれていたオブジェクト
メッセージ格納部12のメモリブロックを、内容を消去
して空きメモリブロック格納部12に返すようにしてい
る。
ェクトメッセージ格納部12に記憶されているメッセー
ジを読み出して、その読み出したメッセージの出力先で
あるオブジェクトのメソッドに処理を開始させると共
に、その読み出したメッセージをオブジェクトメッセー
ジ格納部12から消去するようにしている。詳しくは、
読み出したメッセージが書き込まれていたオブジェクト
メッセージ格納部12のメモリブロックを、内容を消去
して空きメモリブロック格納部12に返すようにしてい
る。
【0206】このため、メッセージ記憶手段に不用とな
ったメッセージが残ることを防止でき、メモリ資源を有
効に活用することができる。
ったメッセージが残ることを防止でき、メモリ資源を有
効に活用することができる。
【0207】また、本実施形態のECU1では、図10
のメッセージキューイング処理を実行して、そのメッセ
ージをオブジェクトメッセージ格納部12に記憶(キュ
ーイング)し、何れかのオブジェクトのメソッドの実行
が終了した時点で、図13のメッセージ配送処理を実行
して、オブジェクトメッセージ格納部12に記憶されて
いるメッセージの内容を読み出し、その読み出したメッ
セージの出力先であるオブジェクトのメソッドの実行へ
移行するようにしている。
のメッセージキューイング処理を実行して、そのメッセ
ージをオブジェクトメッセージ格納部12に記憶(キュ
ーイング)し、何れかのオブジェクトのメソッドの実行
が終了した時点で、図13のメッセージ配送処理を実行
して、オブジェクトメッセージ格納部12に記憶されて
いるメッセージの内容を読み出し、その読み出したメッ
セージの出力先であるオブジェクトのメソッドの実行へ
移行するようにしている。
【0208】このため、本実施形態のECU1によれ
ば、各オブジェクトのメソッドを、リアルタイムに実行
することができる。つまり各オブジェクトのメソッドを
イベントドリブンで実行することができる。
ば、各オブジェクトのメソッドを、リアルタイムに実行
することができる。つまり各オブジェクトのメソッドを
イベントドリブンで実行することができる。
【0209】また、本実施形態のECU1では、図8の
初期化処理において、空きメモリブロック格納部12に
メッセージのデータサイズに応じて記憶容量を決定した
単位記憶領域(空きメモリブロック)を決められた個数
だけ確保し、図10に示すメッセージキューイング処理
にて、1つのメッセージの配送があったとき、空きメモ
リブロック格納部12から1つの空きメモリブロックを
取得し、メッセージ内容を書き込む。
初期化処理において、空きメモリブロック格納部12に
メッセージのデータサイズに応じて記憶容量を決定した
単位記憶領域(空きメモリブロック)を決められた個数
だけ確保し、図10に示すメッセージキューイング処理
にて、1つのメッセージの配送があったとき、空きメモ
リブロック格納部12から1つの空きメモリブロックを
取得し、メッセージ内容を書き込む。
【0210】これにより、一度にメッセージを記憶する
最大数を予想して設定することができるため、確保すべ
きメモリブロックを簡単に設定できる。
最大数を予想して設定することができるため、確保すべ
きメモリブロックを簡単に設定できる。
【0211】そして、従来の関数コールによる手法で
は、ネスティングが発生する場合、ネスティングの数が
増えるほどメモリ領域が必要になり、実現するためにメ
モリ容量を多く確保する必要があるが、本発明では空き
メモリブロック1つで実現することが可能である。
は、ネスティングが発生する場合、ネスティングの数が
増えるほどメモリ領域が必要になり、実現するためにメ
モリ容量を多く確保する必要があるが、本発明では空き
メモリブロック1つで実現することが可能である。
【0212】また、本実施形態のECU1では、オブジ
ェクトのメソッドの実行によって出されるメッセージ
に、出力先のオブジェクト及びメソッドを示す識別コー
ドとしてのOID(オブジェクト識別番号)とMID
(メソッド識別番号)が含まれている。
ェクトのメソッドの実行によって出されるメッセージ
に、出力先のオブジェクト及びメソッドを示す識別コー
ドとしてのOID(オブジェクト識別番号)とMID
(メソッド識別番号)が含まれている。
【0213】そして更に、オブジェクトメッセージ格納
部12は、メモリブロックにOIDとMIDを記憶す
る。そして図13に示すメッセージ配送処理により、読
み出した識別コードの示すオブジェクトのメソッドの実
行に移行する。
部12は、メモリブロックにOIDとMIDを記憶す
る。そして図13に示すメッセージ配送処理により、読
み出した識別コードの示すオブジェクトのメソッドの実
行に移行する。
【0214】これにより、メモリブロックに記憶するメ
ッセージが定型となるため、確保すべきメモリブロック
の数を減らすことができる。
ッセージが定型となるため、確保すべきメモリブロック
の数を減らすことができる。
【0215】さらにオペレーティングシステムが提供す
るような汎用的なメモリ領域の確保・解放のシステムコ
ール実行に頼らず、オブジェクトメッセージ格納部12
及び空きメモリブロック格納部14にて独自にメモリ管
理するよう構成することが容易にできる。
るような汎用的なメモリ領域の確保・解放のシステムコ
ール実行に頼らず、オブジェクトメッセージ格納部12
及び空きメモリブロック格納部14にて独自にメモリ管
理するよう構成することが容易にできる。
【0216】また、本実施形態のECU1では、デバッ
グ中、オブジェクトメッセージ格納部12にキューイン
グしているメッセージブロックの数をカウントする。そ
して、デバッグ中に一度にキューイングした最も大きい
値を求めて、ここから、図8に示す初期化処理にて空き
メモリブロック格納部12に確保する空きメモリブロッ
クの数を決定する。
グ中、オブジェクトメッセージ格納部12にキューイン
グしているメッセージブロックの数をカウントする。そ
して、デバッグ中に一度にキューイングした最も大きい
値を求めて、ここから、図8に示す初期化処理にて空き
メモリブロック格納部12に確保する空きメモリブロッ
クの数を決定する。
【0217】これにより、デバッグ処理にて最大のメッ
セージブロックキューイング数を求めることができるの
で、予め確保すべきメモリブロック数を求めることが容
易となる。
セージブロックキューイング数を求めることができるの
で、予め確保すべきメモリブロック数を求めることが容
易となる。
【0218】なお、上記実施形態のECU1では、デバ
ッグ中、オブジェクトメッセージ格納部12にキューイ
ングしているメッセージブロックの数をカウントし、デ
バッグ中に一度にキューイングした最も大きい値を求め
て、ここから、図8に示す初期化処理にて空きメモリブ
ロック格納部12に確保する空きメモリブロックの数を
決定していた。しかし、図26、図27に示すように空
きメモリブロックの数をカウントして空きメモリブロッ
ク格納部12に確保する空きメモリブロックの数を決定
してもよい。
ッグ中、オブジェクトメッセージ格納部12にキューイ
ングしているメッセージブロックの数をカウントし、デ
バッグ中に一度にキューイングした最も大きい値を求め
て、ここから、図8に示す初期化処理にて空きメモリブ
ロック格納部12に確保する空きメモリブロックの数を
決定していた。しかし、図26、図27に示すように空
きメモリブロックの数をカウントして空きメモリブロッ
ク格納部12に確保する空きメモリブロックの数を決定
してもよい。
【0219】詳しくは、図26に示すようにメッセージ
キューイング処理(S140)が終了した後、デバッグ
中であれば、空きメモリブロックの数をカウントするカ
ウンタC’を1つディクリメントする(S140;YE
S、S155)。そしてc’min値をRAMより読み
込み(S165)、カウンタC’がC’minより小さ
ければC’minをカウンタC’の値に書き換える(
S175;YES、S185)。
キューイング処理(S140)が終了した後、デバッグ
中であれば、空きメモリブロックの数をカウントするカ
ウンタC’を1つディクリメントする(S140;YE
S、S155)。そしてc’min値をRAMより読み
込み(S165)、カウンタC’がC’minより小さ
ければC’minをカウンタC’の値に書き換える(
S175;YES、S185)。
【0220】そして図27に示すように、メッセージブ
ロック取得(S230)前にカウンタC’を1つインク
リメントする(S225)。
ロック取得(S230)前にカウンタC’を1つインク
リメントする(S225)。
【0221】従って、デバッグ中、オブジェクトメッセ
ージ格納部12にキューイングしているメッセージブロ
ックの数をカウントするのと同様に、デバッグ処理にて
最大のメッセージブロックキューイング数を求めること
ができるので、予め確保すべきメモリブロック数を求め
ることが容易となる。
ージ格納部12にキューイングしているメッセージブロ
ックの数をカウントするのと同様に、デバッグ処理にて
最大のメッセージブロックキューイング数を求めること
ができるので、予め確保すべきメモリブロック数を求め
ることが容易となる。
【0222】なお、図26、図27において、ステップ
番号が図10、図13と同じステップはそれぞれ同様な
処理を行う。
番号が図10、図13と同じステップはそれぞれ同様な
処理を行う。
【0223】尚、上記実施形態では、図10または図2
6のメッセージキューイング処理とオブジェクトメッセ
ージ格納部12、空きメモリブロック格納部14、及び
図8の初期化処理をメッセージ記憶手段に相当し、図1
3又は図27のメッセージ配送処理が起動制御手段に相
当する。
6のメッセージキューイング処理とオブジェクトメッセ
ージ格納部12、空きメモリブロック格納部14、及び
図8の初期化処理をメッセージ記憶手段に相当し、図1
3又は図27のメッセージ配送処理が起動制御手段に相
当する。
【0224】一方、上記実施形態では、全てのオブジェ
クトが1つのROM5に格納されていたが、オブジェク
トが複数のROMに格納されている場合には、接続情報
データベース16内の格納位置情報としては、どのRO
Mのどの実行開始アドレスといった情報を記憶させてお
けば良い。
クトが1つのROM5に格納されていたが、オブジェク
トが複数のROMに格納されている場合には、接続情報
データベース16内の格納位置情報としては、どのRO
Mのどの実行開始アドレスといった情報を記憶させてお
けば良い。
【0225】一方、上記実施形態では、各オブジェクト
および各メソッドそれぞれに識別番号をつけていたが、
1つの識別番号にて一意的に決めることも可能である。
および各メソッドそれぞれに識別番号をつけていたが、
1つの識別番号にて一意的に決めることも可能である。
【0226】一方、上記実施形態では、イグニッション
スイッチがオフ状態からオンされたとき、またはマイク
ロコンピュータにリセットがかけられるときに、初期化
処理が要求が生じ、図8の初期化処理が行われたが、メ
ッセージのキューイング処理が始まる直前までに行って
もよい。つまりメッセージ専用のメモリ領域は、メッセ
ージキューイング処理を開始するまでに確保できれば、
本発明の有する効果を享受することができる。
スイッチがオフ状態からオンされたとき、またはマイク
ロコンピュータにリセットがかけられるときに、初期化
処理が要求が生じ、図8の初期化処理が行われたが、メ
ッセージのキューイング処理が始まる直前までに行って
もよい。つまりメッセージ専用のメモリ領域は、メッセ
ージキューイング処理を開始するまでに確保できれば、
本発明の有する効果を享受することができる。
【0227】一方、上記実施形態では、オブジェクトメ
ッセージ格納部12からオブジェクトにメッセージを配
送した後、メモリブロックを空きメモリブロック格納部
14に確保する際、これまで空きメモリブロック格納部
12に末尾アドレスとして記憶されていたメモリアドレ
スのメモリブロックのポインタをNULLから解放した
メモリブロックのメモリアドレスに書き換えるととも
に、新しく確保するメモリブロックのポインタにNUL
Lを書き込み、空きメモリブロック格納部14に末尾ア
ドレスとして新しく確保するメモリブロックのメモリア
ドレスを記憶していた。しかしオブジェクトメッセージ
格納部12が解放したメモリブロックを末尾アドレスと
して確保せずに(例えば先頭アドレスとなるように)確
保してもよい。
ッセージ格納部12からオブジェクトにメッセージを配
送した後、メモリブロックを空きメモリブロック格納部
14に確保する際、これまで空きメモリブロック格納部
12に末尾アドレスとして記憶されていたメモリアドレ
スのメモリブロックのポインタをNULLから解放した
メモリブロックのメモリアドレスに書き換えるととも
に、新しく確保するメモリブロックのポインタにNUL
Lを書き込み、空きメモリブロック格納部14に末尾ア
ドレスとして新しく確保するメモリブロックのメモリア
ドレスを記憶していた。しかしオブジェクトメッセージ
格納部12が解放したメモリブロックを末尾アドレスと
して確保せずに(例えば先頭アドレスとなるように)確
保してもよい。
【0228】また、上記実施形態のECU1は、車両の
エンジンを制御するものであったが、本発明は、例えば
車両の自動変速機やサスペンションなど、その他の制御
対象を制御する電子制御装置に対しても、全く同様に適
用することができる。
エンジンを制御するものであったが、本発明は、例えば
車両の自動変速機やサスペンションなど、その他の制御
対象を制御する電子制御装置に対しても、全く同様に適
用することができる。
【図1】実施形態の電子制御装置(ECU)のハードウ
ェア構成を表すブロック図である。
ェア構成を表すブロック図である。
【図2】エンジン制御用のオブジェクトとメッセージ配
送制御部との関係を示す概念図である。
送制御部との関係を示す概念図である。
【図3】アイドル回転数を制御するための各オブジェク
トの処理概要を説明するメッセージシーケンスチャート
である。
トの処理概要を説明するメッセージシーケンスチャート
である。
【図4】接続情報データベースを説明する説明図であ
る。
る。
【図5】メモリのメッセージ記憶領域を説明する説明図
である。
である。
【図6】オブジェクトメッセージ格納部と空きメモリブ
ロック格納部とによるメモリブロックの確保の仕方を説
明する説明図である。
ロック格納部とによるメモリブロックの確保の仕方を説
明する説明図である。
【図7】メッセージ配送制御部の状態遷移を説明する状
態遷移図である。
態遷移図である。
【図8】メッセージ配送制御部の初期化処理を表すフロ
ーチャートである。
ーチャートである。
【図9】メッセージ配送制御部のシリアライズ処理を表
すフローチャートである。
すフローチャートである。
【図10】メッセージ配送制御部のメッセージキューイ
ング処理を表すフローチャートである。
ング処理を表すフローチャートである。
【図11】メッセージのキューイング処理の一例を説明
する説明図である。
する説明図である。
【図12】メッセージのキューイング処理の別の例を説
明する説明図である。
明する説明図である。
【図13】メッセージ配送制御部のメッセージ配送処理
を表すフローチャートである。
を表すフローチャートである。
【図14】メッセージの配送処理の一例を説明する説明
図である。
図である。
【図15】メッセージの配送処理の別の例を説明する説
明図である。
明図である。
【図16】エンジンのアイドル回転数を制御するための
オブジェクトと、接続情報データベースの具体例とを説
明する説明図である。
オブジェクトと、接続情報データベースの具体例とを説
明する説明図である。
【図17】アイドル回転数制御のタイミングを決定する
ために定期的に実行されるスケジュール処理を表すフロ
ーチャートである。
ために定期的に実行されるスケジュール処理を表すフロ
ーチャートである。
【図18】ISCオブジェクトのアイドル時スロットル
設定開始要求メソッドを表すフローチャートである。
設定開始要求メソッドを表すフローチャートである。
【図19】ISCオブジェクトの水温取得応答メソッド
を表すフローチャートである。
を表すフローチャートである。
【図20】ISCオブジェクトのエンジン回転数取得応
答メソッドを表すフローチャートである。
答メソッドを表すフローチャートである。
【図21】水温センサオブジェクトの水温取得要求メソ
ッドを表すフローチャートである。
ッドを表すフローチャートである。
【図22】水温センサオブジェクトの水温AD値取得応
答メソッドを表すフローチャートである。
答メソッドを表すフローチャートである。
【図23】AD変換器オブジェクトの水温AD値取得要
求メソッドを表すフローチャートである。
求メソッドを表すフローチャートである。
【図24】スロットルコントローラオブジェクトのスロ
ットル設定要求メソッドを表すフローチャートである。
ットル設定要求メソッドを表すフローチャートである。
【図25】クランクセンサオブジェクトのエンジン回転
数取得要求メソッドを表すフローチャートである。
数取得要求メソッドを表すフローチャートである。
【図26】メッセージ配送制御部のメッセージキューイ
ング処理の別の例を表すフローチャートである。
ング処理の別の例を表すフローチャートである。
【図27】メッセージ配送制御部のメッセージ配送処理
の別の例を表すフローチャートである。
の別の例を表すフローチャートである。
【図28】オブジェクト指向によって作成されたプログ
ラムの一例を説明するメッセージシーケンスチャートで
ある。
ラムの一例を説明するメッセージシーケンスチャートで
ある。
【図29】オブジェクト間メッセージ通信に関数コール
の手法を適用した場合の問題を説明する説明図である。
の手法を適用した場合の問題を説明する説明図である。
1…電子制御装置(ECU) 2…入力回路 3…
CPU 4…出力回路 5…ROM 6…RAM 10…
メッセージ配送制御部 12…オブジェクトメッセージ格納部 14…空きメ
モリブロック格納部 16…接続情報データベース OB1…ISCオブジ
ェクト OB2…水温センサオブジェクト OB3…AD変換
器オブジェクト OB4…スロットルコントローラオブジェクト OB5…クランクセンサオブジェクト
CPU 4…出力回路 5…ROM 6…RAM 10…
メッセージ配送制御部 12…オブジェクトメッセージ格納部 14…空きメ
モリブロック格納部 16…接続情報データベース OB1…ISCオブジ
ェクト OB2…水温センサオブジェクト OB3…AD変換
器オブジェクト OB4…スロットルコントローラオブジェクト OB5…クランクセンサオブジェクト
───────────────────────────────────────────────────── フロントページの続き (72)発明者 梶岡 繁 愛知県刈谷市昭和町1丁目1番地 株式会 社デンソー内 Fターム(参考) 5B076 AB17 5B098 GA02 GB13 GC16
Claims (11)
- 【請求項1】 制御対象を制御するためのプログラムを
単位機能毎に細分化したオブジェクトに従って、前記各
単位機能を実現するための処理を夫々行う複数の単位処
理手段を備え、 前記複数の単位処理手段の何れかが択一的に処理動作を
行うと共に、前記各単位処理手段が、その処理動作中に
他の単位処理手段に対して処理依頼としてのメッセージ
を出すことにより、そのメッセージの出力先である単位
処理手段が処理を行うように構成された電子制御装置に
おいて、 前記プログラムやその制御結果を一時的に記憶するメモ
リ内に記憶領域を予め専用に確保し、前記単位処理手段
が出したメッセージをこの専用に確保した記憶領域に記
憶するメッセージ記憶手段と、 前記メッセージ記憶手段に記憶されているメッセージを
読み出し、その読み出したメッセージの出力先である、
前記複数の単位処理手段の何れかに処理を開始させる起
動制御手段と、 を備えることを特徴とする電子制御装置。 - 【請求項2】 請求項1に記載の電子制御装置におい
て、 前記起動制御手段は、 前記メッセージを読み出す際に、前記メッセージ記憶手
段より前記読み出したメッセージの内容を消去するこ
と、 を特徴とする電子制御装置。 - 【請求項3】 請求項1又は2に記載の電子制御装置に
おいて、 前記起動制御手段は、 前記複数の単位処理手段の何れかが処理動作を終了した
時点で、前記メッセージ記憶手段に記憶されているメッ
セージの内容に応じ、前記複数の単位処理手段の何れか
の処理を開始させること、 を特徴とする電子制御装置。 - 【請求項4】 請求項1ないし請求項2の何れかに記載
の電子制御装置において、 前記メッセージ記憶手段は、 前記メッセージのデータサイズに応じて予め決められた
所定の記憶容量を単位とする単位記憶領域を予め決めら
れた個数確保することにより、前記メッセージを記憶す
るための専用の記憶領域を確保するとともに、 1つの前記単位記憶領域に1つの前記メッセージの内容
を記憶すること、 を特徴とする電子制御装置。 - 【請求項5】 請求項4に記載の電子制御装置におい
て、 前記メッセージには、該メッセージの出力先である単位
処理手段に対応したオブジェクトを示す識別コードが含
まれており、 前記メッセージ記憶手段は、前記単位記憶領域に前記識
別コードを記憶するとともに、 前記起動制御手段は前記メッセージ記憶手段から前記識
別コードを読み出すことで、前記読み出した識別コード
の示す単位処理手段に処理を開始させること、を特徴と
する電子制御装置。 - 【請求項6】 請求項1ないし請求項5の何れかに記載
の電子制御装置において、 前記起動制御手段は、 所定の処理を行っている間、前記メッセージ記憶手段に
記憶しているメッセージの数をカウントし、前記所定の
処理を行っている間のカウント値で最も大きい値を記憶
するとともに、 所定の処理終了後、前記記憶した最も大きいカウント値
を読み出し、読み出した値に応じて確保する記憶領域の
容量を決定すること、 を特徴とする電子制御装置。 - 【請求項7】 請求項4又は請求項5の何れかに記載の
電子制御装置において、 前記起動制御手段は、 所定の処理を行っている間、前記メッセージ記憶手段の
有する単位記憶領域のうちメッセージが記憶されていな
い単位記憶領域の数をカウントし、前記所定の処理を行
っている間のカウント値で最も小さい値を記憶するとと
もに、 所定の処理終了後、前記記憶した最も小さい値を読み出
し、読み出した値に応じて確保する記憶領域の容量を決
定すること、 を特徴とする電子制御装置。 - 【請求項8】 請求項4記載の電子制御装置において、 前記複数の単位記憶領域はそれぞれメッセージのデータ
を記憶する部分と前記メッセージ記憶手段のアドレス情
報を記憶するポインタ部分とを備え、このポインタ部分
は前記メッセージの前記単位記憶領域への記憶順序を示
し、 前記起動制御手段は、前記単位記憶領域に最初に記憶さ
れたメッセージのデータを読み出し、その読み出したメ
ッセージの出力先である、前記複数の単位処理手段の何
れかに処理を開始させることを特徴とする電子制御装
置。 - 【請求項9】 請求項8に記載の電子制御装置におい
て、 メッセージのデータをN番目に記憶した前記単位記憶領
域のポインタ部分に、メッセージのデータをN+1番目
に記憶した単位記憶領域のアドレス情報を記憶すること
を特徴とする電子制御装置。 - 【請求項10】 請求項8ないし9の何れかに記載の電
子制御装置において、 前記メッセージ記憶手段は前記メッセージのうち最初に
記憶したメッセージのデータが記憶された単位記憶領域
のアドレスと、最後に記憶したメッセージのデータが記
憶された単位記憶領域のアドレスとを記憶するメッセー
ジ記憶管理手段を備え、 前記起動制御手段は、前記メッセージ記憶管理手段の記
憶する情報を基に単位処理手段の何れかに処理を開始さ
せることを特徴とする電子制御装置。 - 【請求項11】 請求項8ないし10の何れかに記載の
電子制御装置において、 前記メッセージ記憶手段は、前記複数の単位記憶領域の
うちメッセージのデータが記憶されていない未記憶単位
記憶領域を管理する単位記憶領域管理手段を備え、 前記未記憶単位記憶領域が複数ある場合、該各未記憶単
位記憶領域のアドレス情報は、1つを除いて別の前記未
記憶単位記憶領域のうちどれか1つの単位記憶領域のポ
インタ部分に記憶されており、 前記単位記憶領域管理手段は、前記未記憶単位記憶領域
のうち、他の未記憶単位記憶領域のポインタ部分にアド
レス情報が記憶されていない未記憶単位記憶領域のアド
レス情報と、他の未記憶単位記憶領域のアドレス情報を
記憶していない未記憶単位記憶領域のアドレス情報とを
記憶することにより未記憶単位記憶領域を管理すること
を特徴とする電子制御装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000004481A JP2000267868A (ja) | 1999-01-13 | 2000-01-13 | 電子制御装置 |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP657499 | 1999-01-13 | ||
| JP11-6574 | 1999-01-13 | ||
| JP2000004481A JP2000267868A (ja) | 1999-01-13 | 2000-01-13 | 電子制御装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2000267868A true JP2000267868A (ja) | 2000-09-29 |
Family
ID=26340757
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000004481A Pending JP2000267868A (ja) | 1999-01-13 | 2000-01-13 | 電子制御装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2000267868A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112114757A (zh) * | 2020-09-28 | 2020-12-22 | 北京百度网讯科技有限公司 | 对象存储系统中的存储方法及系统、计算设备和介质 |
| CN114244747A (zh) * | 2021-11-12 | 2022-03-25 | 潍柴动力股份有限公司 | 一种报文健康监控方法、装置及ecu |
-
2000
- 2000-01-13 JP JP2000004481A patent/JP2000267868A/ja active Pending
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112114757A (zh) * | 2020-09-28 | 2020-12-22 | 北京百度网讯科技有限公司 | 对象存储系统中的存储方法及系统、计算设备和介质 |
| CN112114757B (zh) * | 2020-09-28 | 2024-04-05 | 北京百度网讯科技有限公司 | 对象存储系统中的存储方法及系统、计算设备和介质 |
| CN114244747A (zh) * | 2021-11-12 | 2022-03-25 | 潍柴动力股份有限公司 | 一种报文健康监控方法、装置及ecu |
| CN114244747B (zh) * | 2021-11-12 | 2023-11-17 | 潍柴动力股份有限公司 | 一种报文健康监控方法、装置及ecu |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3578082B2 (ja) | 処理実行装置及び記録媒体 | |
| US7269678B2 (en) | Interrupt request program and microcomputer | |
| EP1405184A2 (en) | Data processing apparatus | |
| WO2010026836A1 (ja) | 分散制御用制御ソフトウェアおよび電子制御装置 | |
| JP2002236583A (ja) | 組込み用ソフトウェアモジュール | |
| JP2001265609A (ja) | 演算処理装置 | |
| JP4728020B2 (ja) | 車両制御用ソフトウェア及び車両制御装置 | |
| JP3663950B2 (ja) | 自動車用電子制御装置 | |
| JP2003529819A (ja) | 自動化装置および更新方法 | |
| JP3663842B2 (ja) | 自動車用電子制御装置 | |
| JP2000267868A (ja) | 電子制御装置 | |
| JP3882760B2 (ja) | タスク間通信方法、プログラム、記録媒体、電子機器 | |
| JP2001256062A (ja) | 割込処理方法およびその方法を用いた演算処理装置 | |
| EP2541404B1 (en) | Technique for task sequence execution | |
| US6502001B1 (en) | Electronic control unit having reduced inter-object message memory requirements for object-oriented control program | |
| CN114303107B (zh) | 用于在具有opc ua的控制程序中同步地调用功能模块的方法和工业控制器 | |
| JP4419943B2 (ja) | Cpu間データ転送装置 | |
| JPH0991154A (ja) | スタック割り当て方法、制御装置 | |
| JP2000311102A (ja) | 電子制御装置 | |
| EP1020794A2 (en) | Electronic control unit having reduced inter-object message memory requirements for object-oriented control program | |
| JP2012173919A (ja) | 情報処理装置、車両用電子制御ユニット、データ記憶方法 | |
| KR101119458B1 (ko) | 비동기 통신 기술 | |
| CN116804942B (zh) | 一种基于事件驱动的单片机操作系统实现方法 | |
| KR20030050860A (ko) | 다중 프로세서 시스템의 작업 함수 처리 방법 | |
| JPS6182244A (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: 20040302 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20040601 |