JPS6239260B2 - - Google Patents
Info
- Publication number
- JPS6239260B2 JPS6239260B2 JP4090179A JP4090179A JPS6239260B2 JP S6239260 B2 JPS6239260 B2 JP S6239260B2 JP 4090179 A JP4090179 A JP 4090179A JP 4090179 A JP4090179 A JP 4090179A JP S6239260 B2 JPS6239260 B2 JP S6239260B2
- Authority
- JP
- Japan
- Prior art keywords
- task
- program
- engine
- level
- flag
- 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
Links
- 238000000034 method Methods 0.000 claims description 45
- 230000008569 process Effects 0.000 claims description 33
- 230000004913 activation Effects 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 14
- 238000004364 calculation method Methods 0.000 claims description 13
- 239000000446 fuel Substances 0.000 description 39
- 238000012545 processing Methods 0.000 description 27
- 239000007858 starting material Substances 0.000 description 23
- 238000010586 diagram Methods 0.000 description 21
- 101100434411 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ADH1 gene Proteins 0.000 description 9
- 101150102866 adc1 gene Proteins 0.000 description 9
- 239000000498 cooling water Substances 0.000 description 7
- 101150042711 adc2 gene Proteins 0.000 description 6
- 241000234435 Lilium Species 0.000 description 5
- 101100438536 Nicotiana plumbaginifolia CABC gene Proteins 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 102100032501 Death-inducer obliterator 1 Human genes 0.000 description 3
- 101000869896 Homo sapiens Death-inducer obliterator 1 Proteins 0.000 description 3
- 101001053773 Homo sapiens Type I iodothyronine deiodinase Proteins 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000000839 emulsion Substances 0.000 description 3
- 230000005764 inhibitory process Effects 0.000 description 3
- 239000000454 talc Substances 0.000 description 3
- 229910052623 talc Inorganic materials 0.000 description 3
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 3
- ITHCSGCUQDMYAI-ZMIZWQJLSA-N 2-carboxy-D-arabinitol 1,5-bisphosphate Chemical compound OP(=O)(O)OC[C@@H](O)[C@@H](O)[C@](O)(COP(O)(O)=O)C(O)=O ITHCSGCUQDMYAI-ZMIZWQJLSA-N 0.000 description 2
- 101100425794 Arabidopsis thaliana TOM2B gene Proteins 0.000 description 2
- 101100101155 Arabidopsis thaliana TTM1 gene Proteins 0.000 description 2
- 102100021486 Protein S100-G Human genes 0.000 description 2
- 101710122252 Protein S100-G Proteins 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 101100208128 Arabidopsis thaliana TSA1 gene Proteins 0.000 description 1
- 102100023882 Endoribonuclease ZC3H12A Human genes 0.000 description 1
- 101710112715 Endoribonuclease ZC3H12A Proteins 0.000 description 1
- 101100201844 Homo sapiens RSPH1 gene Proteins 0.000 description 1
- 102100035089 Radial spoke head 1 homolog Human genes 0.000 description 1
- 101150104676 TSA2 gene Proteins 0.000 description 1
- 208000000260 Warts Diseases 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 239000002828 fuel tank Substances 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- QGVYYLZOAMMKAH-UHFFFAOYSA-N pegnivacogin Chemical compound COCCOC(=O)NCCCCC(NC(=O)OCCOC)C(=O)NCCCCCCOP(=O)(O)O QGVYYLZOAMMKAH-UHFFFAOYSA-N 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 201000010153 skin papilloma Diseases 0.000 description 1
- 238000010792 warming Methods 0.000 description 1
Landscapes
- Combined Controls Of Internal Combustion Engines (AREA)
- Control By Computers (AREA)
- Control Of Velocity Or Acceleration (AREA)
- Electrical Control Of Ignition Timing (AREA)
- Electrical Control Of Air Or Fuel Supplied To Internal-Combustion Engine (AREA)
Description
本発明はエンジンの電子式制御方法に関する。
プログラムを所定時間ごとに実行しデイジタル
計算機によりエンジンの制御量を演算する方法は
例えば特開昭53−40105号公報などに開示されて
いる。 エンジンの制御内容が複雑になりプログラムを
エンジンの制御機能毎にタスクに分解し、複数の
設計者が該タスクを別々に作りさらに必要に応じ
て調整し、これらのタスクを組合せることにより
制御システムを完成させることが必要になつてき
た。また制御内容が車のモデルチエンジや制御仕
様の変更に応じて変更され、これにともない制御
システムを構成するタスクが種々異なる場合も頻
繁に起こる。このような場合タスクの追加や削除
が他のタスクの実行結果に影響を与えないことが
必要となる。 従来のシステムにおいてはタスク実行の制御が
全て割込み発生に従つて行われたため、タスクの
追加や削除は割込み発生回路であるハードウエア
の変更が必要であつた。またタスクの実行が終了
する度に割込みを発生させて他のタスクを実行す
ることになるので、割込み発生条件が変更され、
他のタスクの実行条件が変更されたりした。 このためタスクの追加や削除が簡単に行えなか
つたり、あるいは労力を必要としたりする問題が
あつた。 本発明の目的はタスクの追加や削除の変更が容
易に行える電子式エンジン制御方法を提供するこ
とである。 本発明の第1の方法は、エンジンを制御するの
に必要な情報をセンサにより検出する第1のステ
ツプと、上記検出された情報に基づいてメモリに
保持されたプログラムの実行によりデイジタル計
算機でエンジンを制御するための値を演算する第
2のステツプと、上記デイジタル計算機の演算結
果によりエンジンを制御する第3ステツプを有す
る制御方法において、上記プログラムは、エンジ
ンの制御機能毎に分類され且つ上記制御機能がエ
ンジンに及ぼす影響に基づいて決められた起動周
期で実行されるタスクを有し、該各タスクの起動
周期が単位時間毎に発生するINTV割込みの割込
み発生回数により表示され、上記INTV割込み要
求により上記タスクはそのタスクレベルにかかわ
らず実行を中断しINTV割込みを発生する第4ス
テツプと、上記INTV割込みの発生により上記各
タスクの起動周期に達したかどうかを検知し起動
周期に達したタスクには起動要求を示すQフラグ
を表示する第5ステツプと、上記INTV割込み発
生により中断されたタスクのレベルと上記Qフラ
グが表示されたタスクのレベルのうち高い方のレ
ベルのタスクを実行する第6ステツプを有するこ
とである。 本発明の第2の方法は、エンジンを制御するの
に必要な情報をセンサにより検出する第1のステ
ツプと、上記検出された情報に基づいてメモリに
保持されたプログラムの実行によりデイジタル計
算機でエンジンを制御するための値を演算する第
2のステツプと、上記デイジタル計算機の演算結
果によりエンジンを制御する第3ステツプを有す
る制御方法において、上記プログラムは、エンジ
ンの制御機能毎に分類され且つ上記制御機能がエ
ンジンに及ぼす影響に基づいて決められた起動周
期で実行されるタスクを有し、該各タスクの起動
周期が単位時間毎に発生するINTV割込みの割込
み発生回数により表示され、上記INTV割込み要
求により上記タスクはそのタスクレベルにかかわ
らず実行を中断しINTV割込みを発生する第4ス
テツプと、上記INTV割込みの発生により上記各
タスクの起動周期に達したかどうかを検知し起動
周期に達したタスクには起動要求を示すQフラグ
を表示する第5ステツプと、上記INTV割込み発
生により中断されたタスクのレベルと上記Qフラ
グが表示されたタスクのレベルのうち高い方のレ
ベルのタスクを実行する第6ステツプと、上記タ
スクの実行を終了した場合には起動要求を示すQ
フラグの有無を調べ、Qフラグの表示されたタス
クの内最もレベルの高いタスクを実行し、以下こ
れを繰り返すことである。 まず燃料系の制御につき、その燃料供給の一例
を第1図に示す。 第1図はエンジンのスロツトル・チヤンバの断
面図である。まずこのスロツトルチヤンバ周辺に
設けられた各ソレノイドの動作により、このスロ
ツトル・チエンバへ供給される燃料量およびバイ
パス空気量の制御を説明する。 アクセル・ペダル(図示せず)によつて低速系
のスロツトル・バルブ12の開口が制御され、こ
れによりエア・クリーナ(図示せず)からエンジ
ンの各シリンダへの供給空気量が制御される。こ
の低速スロツトル・バルブの開口が大きくなり、
低速側ベンチユリの通過空気量が増大すると、こ
の低速側ベンチユリの負圧によりダイアフラム
(図示せず)を用いて高速側スロツトル14を開
口する。これにより吸入空気量増加に供なう空気
低抗の増大を軽減する。 このようにしてスロツトル・バルブで制御され
てエンジンへ供給される空気流量は、負圧センサ
(図示せず)によりアナログ量として取り込まれ
る。このアナログ量およびその他の後で述べるセ
ンサよりの信号に基づき、第1図の各ソレノイ
ド・バルブ16,18,20,22の開度が制御
される。 次に燃料供給量の制御について説明する。燃料
タンクから導びかれた燃料は導管24よりメイ
ン・ジエツト26を介して導管28へ導びかれ
る。さらに導管24の燃料はまたメイン・ソレノ
イド・バルブ18を介して導管28へ導びかれ
る。従つて導管28への導入燃料はメイン・ソレ
ノイド・バルブ18の開口が大きくなればなるほ
ど多くなり、これらの燃料はさらにメイン・エマ
ルジヨン・チユーブ30で空気と混合され、メイ
ン・ノズル32よりベンチユリ34に供給され
る。高速スロツトル14の開口時にはさらにノズ
ル36からもベンチユリ38に燃料は吸出され
る。一方メイン・ソレノイド・バルブ18と同時
にスロー・ソレノイド・バルブ16も制御され、
このスロー・ソレノイドバルブ16が開口すると
エアー・クリーナを介した空気は開口40より、
導管42へ供給される。一方導管28よりの燃料
はスロー・エマルジヨン・チユーブ44を介して
導管42へ供給される。従つて導管42の燃料量
はスロー・ソレノイドバルブ16よりの空気量が
増大するほど少くなる。この導管42の燃料と空
気の混合はスロー・ホール46よりスロツトルチ
ヤンバへ供給される。 フユーエル・ソレノイド・バルブ20は燃料の
増量の為のバルブで、始動増量や暖機増量等の為
に用いられる。導管42と連通する穴48より導
入された燃料はフユーエル・ソレノイドバルブ2
0の開口量に応じ、スロツトル・チヤンバへ通ず
る導管50へ導びかれる。 エアーソレノイドバルブ22はエンジンへ供給
する空気量を制御するバルブで、エアー・クリー
ナよりの空気が開口52よりエアー・ソレノイ
ド・バルブ22へ供給され、その開口に応じてス
ロツトル・チヤンバへ通じている導管54へ導び
かれる。 第1図のスロー・ソレノイド・バルブ16とメ
イン・ソレノイド・バルブ18によつて空燃比を
制御し、フユーエル・ソレノイドバルブ20によ
つて燃料の増量を行なう。さらにスロー・ソレノ
イドバルブ16とメイン・ソレノイドバルブ18
およびエアー・ソレノイドバルブ22とによりア
イドル時のエンジン・スピードを制御する。 第2図点火装置であり、増幅器62を介してパ
ワー・トランジスタ64へパルス電流が供給さ
れ、この電流によりトランジスタ64はONす
る。これによりバツテリ66より点火コイル68
へ一次コイル電流が流れる。このパルス電流の立
ち下がりでトランジスタ64は遮断状態となり、
点火コイル68の2次コイルに高電圧を発生す
る。 この高電圧は配電器70を介してエンジンの各
シリンダにある点火プラグ72のそれぞれにエン
ジン回転に同期して高電圧を配電する。 第3図は排気ガス環流(以下EGRと記す)シ
ステムを説明するためのもので、負圧源82の一
定負圧が定圧弁84を介して制御弁86へ加えて
いる。定圧弁84はトランジスタ90に加えられ
る繰返しパルスのONデユーテイ比率に応じ、負
圧源の一定負圧を大気88へ開放に対する比率を
制御し、制御弁86への負圧の印加状態を制御す
る。従つて制御弁86へ加えられる負圧はトラン
ジスタ90のONデユーテイ比率で定まる。この
定圧弁84の制御負圧により排気管92から吸気
管82へのEGR量が制御される。 第4図は制御システムの全体構成図である。
CPU102とリード・オンリ・メモリ104
(以下ROHと記す。)とランダ4・アクセス・メ
モリ106(以下RAMと記す。)と入出力回路1
08とから構成されている。上記CPU102は
ROM104内に記憶された各種のプログラムに
より、入出力回路108からの入力データを演算
し、その演算結果を再び入出力回路108へ戻
す。これらの演算に必要な中間的な記憶はRAM
106を使用する。CPU102、ROM104、
RAM106、入出力回路108間の各種データ
のやり取りはデータ・バスとコントロール・バス
とアドレス・バスとからなるバスライン110に
よつて行なわれる。 入出力回路108には第1のアナログ・デイジ
タル・コンバータ122(以下ADC1と記す)と
第2のアナログ・デイジタル・コンバータ124
(以下ADC2と記す)と角度信号処理回路126
と1ビツト情報を入出力する為のデイスクリート
入出力回路128(以下DIOと記す)との入力手
段を待つ。 ADC1にはバツテリ電圧検出センサ132(以
下VBSと記す)と冷却水温センサ134(以下
TWSと記す)と大気温センサ136(以下TAS
と記す)と調整電圧発生器138(以下VRSと
記す)とスロツトル角センサ140(以下θ
THSと記す)とλセンサ142(以下λSと記
す)との出力がマルチ・プレクサ162(以下
MPXと記す)に加えられ、MPX162によりこ
の内の1つを選択してアナログ・デイジタル・変
換回路164(以下ADCと記す)へ入力する。
ADC164の出力であるデイジタル値はレジス
タ166(以下REGと記す)に保持される。 また負圧センサ144(以下VCSと記す)は
ADC2・124へ入力され、アナログ・デイジタ
ル・変換回路172(以下ADCと記す)を介し
てデイジタル変換されレジスタ124(以下
REGと記す)へセツトされる。 角度センサ146(以下ANGSと記す)からは
基準クランク角例えば180度クランク角を示す信
号(以下REFと記す)を微少角例えば1度クラ
ンク角を示す信号(以下POSと記す)とが出力さ
れ、角度信号処理回路126へ加えられ、ここで
波形整形される。 DIO128にはアイドル・スイツチ148(以
下IDLE−SWと記す)とトツプ・ギヤ・スイツ
チ150(以下TOP−SWと記す)とスタータ・
スイツチ152(以下START−SWと記す)と
が入力されている。 次にCPU102の演算結果に基づくパルス出
力回路および制御対象について説明する。空燃比
制御装置162(以下CABCと記す)はこの実施
例ではパルス・デユーテイを変えてスロー・ソレ
ノイド16とメイン・ソレノイド18を制御する
ものである。CABC162のオン・デユーテイを
増大したことにより、メイン・ソレノイド18は
燃料供給を減少させる方向にあるので、インバー
タ163を介して加えられる。一方スロー・ソレ
ノイド16はCABCのオン・デユーテイが増大す
るにつれて燃料供給量は増大する。CABC162
には繰返しパルス周期をセツトするレジスタ16
6(以下CABPと記す)とオン・デユーテイをセ
ツトするレジスタ164(以下CABDと記す)と
が設けられており、CPU102よりこれらのデ
ータがそれぞれセツトされる。 点火パルス発生回路166(以下IGNCと記
す)は点火時期データをセツトするレジスタ16
6(以下ADVと記す)と点火コイル1次電流通
電時間を制御するレジスタ168(以下DWLと
記す)とを有し、これらのデータはCPU102
よりセツトされる。このIGNC164の出力パル
スは点火装置170へ印加される。この点火装置
170の詳細は第2図に示す通りであり出力パル
スは第2図の増幅器62へ加えられる。 燃料増量パルス発生回路172(以下FSCと
記す)はパルスのオン・デユーテイを制御して第
1図のフユーエル・ソレノイド20を制御するも
ので、繰返し周期をセツトするレジスタ176
(以下FSCPと記す)とオン時間をセツトするた
めのレジスタ176(以下FSCDと記す)とを有
している。 EGR量制御パルス発生回路180(以下EGRC
と記す)にはパルス繰返し周期のデータをセツト
するためのレジスタ182(以下EGRPと記す)
とオン時間のデータをセツトするためのレジスタ
180(以下EGRDと記す)とが設けられてお
り、繰返しパルスがANDゲート184を介して
エアー・ソレノイドバルブ22へ加えられる。こ
のANDゲート184にはDIO128の出力DIO1
の信号が加えられ、このDIO1信号がLレベルの
時ANDゲート184は閉じ、エアー・ソレノイ
ドバルブ22が制御される。 一方DIO1がHレベルの時はANDゲート186
を閉じ、EGR装置188を制御する。EGR装置
188の基本構成を第3図に示す。 DIO128は上述の如く、1ビツト信号の入出
力回路で、入力あるいは出力を決定するためのデ
ータを保持するレジスタ(以下DDRと記す)1
92と出力するデータを保持するためのレジスタ
194(以下DOUTと記す)と入力されたデー
タを保持するレジスタ196(以下DINと記す)
とを有している。このDIO128よりフユーエ
ル・ポンプ190を制御するための信号DIO0が
出力される。 第5図は第4図の制御回路のプログラムシステ
ムである。キー・スイツチ(図示せず)により電
源がONするとCPU102はスタート・モードと
なり、イニシヤライズ・プログラム
(INITIALIZ)204を実行する。次に監視プロ
グラム(MONIT)206を実行し、バツク・グ
ラウンド・ジヨブ(BACK GROUND JOB)2
08を実行する。このバツク・グラウンド・ジヨ
ブとして例えばEGR量の計算タスク(以下EGR
CAL.TASKと記す)やフユーエル・ソレノイド
バルブとエア・ソレノイドバルブの計算タスク
(以下EISCと記す)を実行する。このTASKの実
行中、割込要因(以下IRQと記す)が発生すると
IRQの開示ステツプ222より、IRQ要因分析プ
ログラム224(以下IRQ ANALと記す)を実
行する。このIRQ ANALのプログラムはさらに
ADC1の終了割込処理(以下ADC1END IRQと記
す)プログラム226とADC2の終了割込処理
(以下ADC2END IRQと記す)プログラム228
と一定期間経過割込処理(以下INTV IRQと記
す)プログラムとエンジン停止割込処理(以下
ENST IRQと記す)プログラムからなり、後述
する各タスクの起動の必要なタスクにそれぞれ起
動要求(以下QUEUEと記す)を出す。 このIRQ ANALプログラム224内の各プロ
グラムADC1 END IRQ226やADC2 END
IRQ228やINTV IRQ230の各プログラムに
よりQUEUEが出される各タスクはレベル・ゼ
ロ・タスク群252やレベル1タスク群254や
レベル2タスク群256やレベル3タスク群25
6であるか、あるいは該各タスク群は構成するタ
スクである。またENST IRQプログラム232
によりQUEUEが発生するタスクはエンジン停止
時の処理タスク262(以下ENST TASKと記
す)である。このENST TASK262が実行さ
れると再び制御システムはスタート・モードとな
り、開始点202へ戻る。 タスク・スケジユーラ242はQUEUEの発生
しているタスク群かあるいは実行中断タスク群の
内レベルの高いタスク群(ここではレベル・ゼロ
を最高とする)から実行するように、タスク群の
実行序順を決定する。タスク群の実行が終了する
と終了報告プログラム258(以下EXITと記
す)により終了報告される。この終了報告によ
り、実行待ちになつているタスク群の内の最もレ
ベルの高いタスク群を次に実行する。 実行中断タスク群やQUEUEの発生しているタ
スク群がなくなるとタスク・スケジユーラ242
より再びバツク・グラウンド・ジヨブ208の実
行へ移る。さらにレベル・ゼロ・タスク群からレ
ベル3タスク群のどれかを実行中にIRQが発生す
るとIRQ処理プログラムの開始点222へ戻る。 第1表に各タスクの起動とその機能を示す。
計算機によりエンジンの制御量を演算する方法は
例えば特開昭53−40105号公報などに開示されて
いる。 エンジンの制御内容が複雑になりプログラムを
エンジンの制御機能毎にタスクに分解し、複数の
設計者が該タスクを別々に作りさらに必要に応じ
て調整し、これらのタスクを組合せることにより
制御システムを完成させることが必要になつてき
た。また制御内容が車のモデルチエンジや制御仕
様の変更に応じて変更され、これにともない制御
システムを構成するタスクが種々異なる場合も頻
繁に起こる。このような場合タスクの追加や削除
が他のタスクの実行結果に影響を与えないことが
必要となる。 従来のシステムにおいてはタスク実行の制御が
全て割込み発生に従つて行われたため、タスクの
追加や削除は割込み発生回路であるハードウエア
の変更が必要であつた。またタスクの実行が終了
する度に割込みを発生させて他のタスクを実行す
ることになるので、割込み発生条件が変更され、
他のタスクの実行条件が変更されたりした。 このためタスクの追加や削除が簡単に行えなか
つたり、あるいは労力を必要としたりする問題が
あつた。 本発明の目的はタスクの追加や削除の変更が容
易に行える電子式エンジン制御方法を提供するこ
とである。 本発明の第1の方法は、エンジンを制御するの
に必要な情報をセンサにより検出する第1のステ
ツプと、上記検出された情報に基づいてメモリに
保持されたプログラムの実行によりデイジタル計
算機でエンジンを制御するための値を演算する第
2のステツプと、上記デイジタル計算機の演算結
果によりエンジンを制御する第3ステツプを有す
る制御方法において、上記プログラムは、エンジ
ンの制御機能毎に分類され且つ上記制御機能がエ
ンジンに及ぼす影響に基づいて決められた起動周
期で実行されるタスクを有し、該各タスクの起動
周期が単位時間毎に発生するINTV割込みの割込
み発生回数により表示され、上記INTV割込み要
求により上記タスクはそのタスクレベルにかかわ
らず実行を中断しINTV割込みを発生する第4ス
テツプと、上記INTV割込みの発生により上記各
タスクの起動周期に達したかどうかを検知し起動
周期に達したタスクには起動要求を示すQフラグ
を表示する第5ステツプと、上記INTV割込み発
生により中断されたタスクのレベルと上記Qフラ
グが表示されたタスクのレベルのうち高い方のレ
ベルのタスクを実行する第6ステツプを有するこ
とである。 本発明の第2の方法は、エンジンを制御するの
に必要な情報をセンサにより検出する第1のステ
ツプと、上記検出された情報に基づいてメモリに
保持されたプログラムの実行によりデイジタル計
算機でエンジンを制御するための値を演算する第
2のステツプと、上記デイジタル計算機の演算結
果によりエンジンを制御する第3ステツプを有す
る制御方法において、上記プログラムは、エンジ
ンの制御機能毎に分類され且つ上記制御機能がエ
ンジンに及ぼす影響に基づいて決められた起動周
期で実行されるタスクを有し、該各タスクの起動
周期が単位時間毎に発生するINTV割込みの割込
み発生回数により表示され、上記INTV割込み要
求により上記タスクはそのタスクレベルにかかわ
らず実行を中断しINTV割込みを発生する第4ス
テツプと、上記INTV割込みの発生により上記各
タスクの起動周期に達したかどうかを検知し起動
周期に達したタスクには起動要求を示すQフラグ
を表示する第5ステツプと、上記INTV割込み発
生により中断されたタスクのレベルと上記Qフラ
グが表示されたタスクのレベルのうち高い方のレ
ベルのタスクを実行する第6ステツプと、上記タ
スクの実行を終了した場合には起動要求を示すQ
フラグの有無を調べ、Qフラグの表示されたタス
クの内最もレベルの高いタスクを実行し、以下こ
れを繰り返すことである。 まず燃料系の制御につき、その燃料供給の一例
を第1図に示す。 第1図はエンジンのスロツトル・チヤンバの断
面図である。まずこのスロツトルチヤンバ周辺に
設けられた各ソレノイドの動作により、このスロ
ツトル・チエンバへ供給される燃料量およびバイ
パス空気量の制御を説明する。 アクセル・ペダル(図示せず)によつて低速系
のスロツトル・バルブ12の開口が制御され、こ
れによりエア・クリーナ(図示せず)からエンジ
ンの各シリンダへの供給空気量が制御される。こ
の低速スロツトル・バルブの開口が大きくなり、
低速側ベンチユリの通過空気量が増大すると、こ
の低速側ベンチユリの負圧によりダイアフラム
(図示せず)を用いて高速側スロツトル14を開
口する。これにより吸入空気量増加に供なう空気
低抗の増大を軽減する。 このようにしてスロツトル・バルブで制御され
てエンジンへ供給される空気流量は、負圧センサ
(図示せず)によりアナログ量として取り込まれ
る。このアナログ量およびその他の後で述べるセ
ンサよりの信号に基づき、第1図の各ソレノイ
ド・バルブ16,18,20,22の開度が制御
される。 次に燃料供給量の制御について説明する。燃料
タンクから導びかれた燃料は導管24よりメイ
ン・ジエツト26を介して導管28へ導びかれ
る。さらに導管24の燃料はまたメイン・ソレノ
イド・バルブ18を介して導管28へ導びかれ
る。従つて導管28への導入燃料はメイン・ソレ
ノイド・バルブ18の開口が大きくなればなるほ
ど多くなり、これらの燃料はさらにメイン・エマ
ルジヨン・チユーブ30で空気と混合され、メイ
ン・ノズル32よりベンチユリ34に供給され
る。高速スロツトル14の開口時にはさらにノズ
ル36からもベンチユリ38に燃料は吸出され
る。一方メイン・ソレノイド・バルブ18と同時
にスロー・ソレノイド・バルブ16も制御され、
このスロー・ソレノイドバルブ16が開口すると
エアー・クリーナを介した空気は開口40より、
導管42へ供給される。一方導管28よりの燃料
はスロー・エマルジヨン・チユーブ44を介して
導管42へ供給される。従つて導管42の燃料量
はスロー・ソレノイドバルブ16よりの空気量が
増大するほど少くなる。この導管42の燃料と空
気の混合はスロー・ホール46よりスロツトルチ
ヤンバへ供給される。 フユーエル・ソレノイド・バルブ20は燃料の
増量の為のバルブで、始動増量や暖機増量等の為
に用いられる。導管42と連通する穴48より導
入された燃料はフユーエル・ソレノイドバルブ2
0の開口量に応じ、スロツトル・チヤンバへ通ず
る導管50へ導びかれる。 エアーソレノイドバルブ22はエンジンへ供給
する空気量を制御するバルブで、エアー・クリー
ナよりの空気が開口52よりエアー・ソレノイ
ド・バルブ22へ供給され、その開口に応じてス
ロツトル・チヤンバへ通じている導管54へ導び
かれる。 第1図のスロー・ソレノイド・バルブ16とメ
イン・ソレノイド・バルブ18によつて空燃比を
制御し、フユーエル・ソレノイドバルブ20によ
つて燃料の増量を行なう。さらにスロー・ソレノ
イドバルブ16とメイン・ソレノイドバルブ18
およびエアー・ソレノイドバルブ22とによりア
イドル時のエンジン・スピードを制御する。 第2図点火装置であり、増幅器62を介してパ
ワー・トランジスタ64へパルス電流が供給さ
れ、この電流によりトランジスタ64はONす
る。これによりバツテリ66より点火コイル68
へ一次コイル電流が流れる。このパルス電流の立
ち下がりでトランジスタ64は遮断状態となり、
点火コイル68の2次コイルに高電圧を発生す
る。 この高電圧は配電器70を介してエンジンの各
シリンダにある点火プラグ72のそれぞれにエン
ジン回転に同期して高電圧を配電する。 第3図は排気ガス環流(以下EGRと記す)シ
ステムを説明するためのもので、負圧源82の一
定負圧が定圧弁84を介して制御弁86へ加えて
いる。定圧弁84はトランジスタ90に加えられ
る繰返しパルスのONデユーテイ比率に応じ、負
圧源の一定負圧を大気88へ開放に対する比率を
制御し、制御弁86への負圧の印加状態を制御す
る。従つて制御弁86へ加えられる負圧はトラン
ジスタ90のONデユーテイ比率で定まる。この
定圧弁84の制御負圧により排気管92から吸気
管82へのEGR量が制御される。 第4図は制御システムの全体構成図である。
CPU102とリード・オンリ・メモリ104
(以下ROHと記す。)とランダ4・アクセス・メ
モリ106(以下RAMと記す。)と入出力回路1
08とから構成されている。上記CPU102は
ROM104内に記憶された各種のプログラムに
より、入出力回路108からの入力データを演算
し、その演算結果を再び入出力回路108へ戻
す。これらの演算に必要な中間的な記憶はRAM
106を使用する。CPU102、ROM104、
RAM106、入出力回路108間の各種データ
のやり取りはデータ・バスとコントロール・バス
とアドレス・バスとからなるバスライン110に
よつて行なわれる。 入出力回路108には第1のアナログ・デイジ
タル・コンバータ122(以下ADC1と記す)と
第2のアナログ・デイジタル・コンバータ124
(以下ADC2と記す)と角度信号処理回路126
と1ビツト情報を入出力する為のデイスクリート
入出力回路128(以下DIOと記す)との入力手
段を待つ。 ADC1にはバツテリ電圧検出センサ132(以
下VBSと記す)と冷却水温センサ134(以下
TWSと記す)と大気温センサ136(以下TAS
と記す)と調整電圧発生器138(以下VRSと
記す)とスロツトル角センサ140(以下θ
THSと記す)とλセンサ142(以下λSと記
す)との出力がマルチ・プレクサ162(以下
MPXと記す)に加えられ、MPX162によりこ
の内の1つを選択してアナログ・デイジタル・変
換回路164(以下ADCと記す)へ入力する。
ADC164の出力であるデイジタル値はレジス
タ166(以下REGと記す)に保持される。 また負圧センサ144(以下VCSと記す)は
ADC2・124へ入力され、アナログ・デイジタ
ル・変換回路172(以下ADCと記す)を介し
てデイジタル変換されレジスタ124(以下
REGと記す)へセツトされる。 角度センサ146(以下ANGSと記す)からは
基準クランク角例えば180度クランク角を示す信
号(以下REFと記す)を微少角例えば1度クラ
ンク角を示す信号(以下POSと記す)とが出力さ
れ、角度信号処理回路126へ加えられ、ここで
波形整形される。 DIO128にはアイドル・スイツチ148(以
下IDLE−SWと記す)とトツプ・ギヤ・スイツ
チ150(以下TOP−SWと記す)とスタータ・
スイツチ152(以下START−SWと記す)と
が入力されている。 次にCPU102の演算結果に基づくパルス出
力回路および制御対象について説明する。空燃比
制御装置162(以下CABCと記す)はこの実施
例ではパルス・デユーテイを変えてスロー・ソレ
ノイド16とメイン・ソレノイド18を制御する
ものである。CABC162のオン・デユーテイを
増大したことにより、メイン・ソレノイド18は
燃料供給を減少させる方向にあるので、インバー
タ163を介して加えられる。一方スロー・ソレ
ノイド16はCABCのオン・デユーテイが増大す
るにつれて燃料供給量は増大する。CABC162
には繰返しパルス周期をセツトするレジスタ16
6(以下CABPと記す)とオン・デユーテイをセ
ツトするレジスタ164(以下CABDと記す)と
が設けられており、CPU102よりこれらのデ
ータがそれぞれセツトされる。 点火パルス発生回路166(以下IGNCと記
す)は点火時期データをセツトするレジスタ16
6(以下ADVと記す)と点火コイル1次電流通
電時間を制御するレジスタ168(以下DWLと
記す)とを有し、これらのデータはCPU102
よりセツトされる。このIGNC164の出力パル
スは点火装置170へ印加される。この点火装置
170の詳細は第2図に示す通りであり出力パル
スは第2図の増幅器62へ加えられる。 燃料増量パルス発生回路172(以下FSCと
記す)はパルスのオン・デユーテイを制御して第
1図のフユーエル・ソレノイド20を制御するも
ので、繰返し周期をセツトするレジスタ176
(以下FSCPと記す)とオン時間をセツトするた
めのレジスタ176(以下FSCDと記す)とを有
している。 EGR量制御パルス発生回路180(以下EGRC
と記す)にはパルス繰返し周期のデータをセツト
するためのレジスタ182(以下EGRPと記す)
とオン時間のデータをセツトするためのレジスタ
180(以下EGRDと記す)とが設けられてお
り、繰返しパルスがANDゲート184を介して
エアー・ソレノイドバルブ22へ加えられる。こ
のANDゲート184にはDIO128の出力DIO1
の信号が加えられ、このDIO1信号がLレベルの
時ANDゲート184は閉じ、エアー・ソレノイ
ドバルブ22が制御される。 一方DIO1がHレベルの時はANDゲート186
を閉じ、EGR装置188を制御する。EGR装置
188の基本構成を第3図に示す。 DIO128は上述の如く、1ビツト信号の入出
力回路で、入力あるいは出力を決定するためのデ
ータを保持するレジスタ(以下DDRと記す)1
92と出力するデータを保持するためのレジスタ
194(以下DOUTと記す)と入力されたデー
タを保持するレジスタ196(以下DINと記す)
とを有している。このDIO128よりフユーエ
ル・ポンプ190を制御するための信号DIO0が
出力される。 第5図は第4図の制御回路のプログラムシステ
ムである。キー・スイツチ(図示せず)により電
源がONするとCPU102はスタート・モードと
なり、イニシヤライズ・プログラム
(INITIALIZ)204を実行する。次に監視プロ
グラム(MONIT)206を実行し、バツク・グ
ラウンド・ジヨブ(BACK GROUND JOB)2
08を実行する。このバツク・グラウンド・ジヨ
ブとして例えばEGR量の計算タスク(以下EGR
CAL.TASKと記す)やフユーエル・ソレノイド
バルブとエア・ソレノイドバルブの計算タスク
(以下EISCと記す)を実行する。このTASKの実
行中、割込要因(以下IRQと記す)が発生すると
IRQの開示ステツプ222より、IRQ要因分析プ
ログラム224(以下IRQ ANALと記す)を実
行する。このIRQ ANALのプログラムはさらに
ADC1の終了割込処理(以下ADC1END IRQと記
す)プログラム226とADC2の終了割込処理
(以下ADC2END IRQと記す)プログラム228
と一定期間経過割込処理(以下INTV IRQと記
す)プログラムとエンジン停止割込処理(以下
ENST IRQと記す)プログラムからなり、後述
する各タスクの起動の必要なタスクにそれぞれ起
動要求(以下QUEUEと記す)を出す。 このIRQ ANALプログラム224内の各プロ
グラムADC1 END IRQ226やADC2 END
IRQ228やINTV IRQ230の各プログラムに
よりQUEUEが出される各タスクはレベル・ゼ
ロ・タスク群252やレベル1タスク群254や
レベル2タスク群256やレベル3タスク群25
6であるか、あるいは該各タスク群は構成するタ
スクである。またENST IRQプログラム232
によりQUEUEが発生するタスクはエンジン停止
時の処理タスク262(以下ENST TASKと記
す)である。このENST TASK262が実行さ
れると再び制御システムはスタート・モードとな
り、開始点202へ戻る。 タスク・スケジユーラ242はQUEUEの発生
しているタスク群かあるいは実行中断タスク群の
内レベルの高いタスク群(ここではレベル・ゼロ
を最高とする)から実行するように、タスク群の
実行序順を決定する。タスク群の実行が終了する
と終了報告プログラム258(以下EXITと記
す)により終了報告される。この終了報告によ
り、実行待ちになつているタスク群の内の最もレ
ベルの高いタスク群を次に実行する。 実行中断タスク群やQUEUEの発生しているタ
スク群がなくなるとタスク・スケジユーラ242
より再びバツク・グラウンド・ジヨブ208の実
行へ移る。さらにレベル・ゼロ・タスク群からレ
ベル3タスク群のどれかを実行中にIRQが発生す
るとIRQ処理プログラムの開始点222へ戻る。 第1表に各タスクの起動とその機能を示す。
【表】
【表】
この第1表において、第5図の制御システムを
管理するためのプログラムとして、IRQ ANAL
プログラムやTASK SCHDULERやEXITがあ
る。これらのプログラム(以下OSと記す)は第
6図の如くROM104のアドレスA000から
アドレスA300に保持されている。 さらにレベル・ゼロ・プログラムとして
AD1IN、AD1ST、AD2IN、AD2ST、RPMINの
各プログラムがあり、通常INTV IRQの10〔m
SEC〕で起動される。レベル1プログラムとし
てCARBC、IGNCAL、DWLCALプログラムがあ
り、INTV IRQの20〔mSEC〕ごとに起動され
る。レベル2プログラムのLAMBDAプログラム
があり、INTV IRQの40〔mSEC〕ごとに起動さ
れる。レベル3プログラムとしてHOSEIプログ
ラムがあり、INTV IRQの100〔mSEC〕ごとに
記動される。またバツク・グラウンド・ジヨブと
してEGRCALとFISCプログラムがある。上記レ
ベル・ゼロ・プログラムはPROG1としてそれぞ
れ第6図のROM104のアドレスA700から
AB00に記憶されている。レベル・1プログラ
ムはPROG2としてROM104のアドレスAB0
0からAE00に記憶されている。レベル2プロ
グラムはPROG3としてTROM104のアドレス
AF00からB000に記憶されている。レベル
3プログラムはPROG4としてROM104のア
ドレスB000からB100に記憶されている。
またバツク・グラウンド・ジヨブ・プログラムは
B100からB200に保持されている。なお上
記プログラムPROG1からPROG4までの各プロ
グラムのスタード・アドレスのリスト(以下
SFTMRと記す)がB200からB300までに
保持され、PROG1からPROG4までの各プログ
ラム起動周期を表わす値(以下TTMと記す)が
アドレスB300からB400に記憶されてい
る。 その他のデータは必要に応じB400からB5
00に記憶される。それに続いて演算のためのデ
ータADV・MAPやAF・MAP、EGR・MAPをそ
れぞれ記憶している。 第5図におけるINITIALIZ204プログラムの
詳細を第7図を用いて説明する。ステツプ282で
IRQ発生時の退避エリアを設定する。次にステツ
プ284でRAM106を全てクリアする。ステツプ
286で入出力回路108のレジスタ内に初期値の
設定を行なう。この初期値設定として例えば、エ
ンジンのシリンダ数や角度センサ146の初期値
やDIO128のDDRの設定やINTV IRQ発生のた
めのタイマの設定やENST IRQ発生のための検
出期間の設定やエンジン回転数検出のための計測
時間の設定がある。 ステツプ288でADC1に起動をかけ、さらに
ADC1ENDIRQの為の禁止解除を行なう。この場
合AD1STプログラムのスタート・アドレスであ
る第6図のアドレスA701へジヤンプする。こ
れにより第4図のADC1・122のMPXの入力の
1つであるバツテリ電圧検出センサVBS132の
出力がセレクトされてADC164へ入力され
る。ステツプ290へ戻つてここでADC1END IRQ
を待つ。ADC164の動作が完了し、REG16
6へデイジタル値がセツトされるとステータス・
レジスタSTAUS198へADC164の動作完了
が報告され、ADC1END IRQがCPU102へ入
力される。これによりプログラムAD1INが実行
され、センサ132の出力が取り込まれる。 ステツプ292でセンサ132から142の値を
全て取り込んだかを確認する。この場合センサ1
32の入力の取込みが完了されただけなので、ス
テツプ288へ戻る。このステツプ288で再び
AD1STプログラムが起動され、MPX162は次
の入力であるセンサ134の出力をセレクトす
る。ステツプセンサ134の出力のアナログ・デ
イジタル変換が完了すると再び、ステツプ292で
プログラムAD1INが実行され、レジスタREG1
66内に保持されている水温センサTWS134
の出力のデイジタル値が取り込まれたROM10
4のDATAエリアに保持される。ステツプ292で
再びステツプ288へ戻される。このようにステツ
プ288からステツプ292のループを回ることにより
センサ132から142の出力のデイジタル値が
次々に取り込まれ、λセンサであるλS142の
出力値の取り込みが完了すると、ステツプ294へ
進む。 ステツプ294で始動時の点火時期の演算と設定
を行なう。この点火時期θADV(ST)はエンジ
ンの冷却水温TWの関数として演算する。この関
数を第9図に示す。第9図の特性に従つてθ
ADV(ST)を演算し、この演算された結果は第
4図IGNC164のレジスタADV166にセツト
される。 ステツプ296で始動時のエアー・ソレノイドバ
ルブ22の演算を行う。この演算は第10図に示
す特性に基づいて行なわれ、その演算出力はレジ
スタEGRD180にセツトされる。尚EGRP18
2についても固定値がセツトされる。第10図の
特性はEGRP182のセツト値に対するEGRD1
80のセツト値の比である。 ステツプ298で燃料ソレノイド・オン・デユー
テイの初期値が演算される。この演算値は第11
図により行なわれるものであり、レジスタCABP
166の設定値に対するレジスタCABD164の
設定値の比率が第11図の特性図として示されて
いる。レジスタCABD164とCABP166のデ
ータのセツトにより、第5図のプログラム
INITIALIZ204の実行を終了し、第8図に示す
MONITプログラム206へ移る。 MONITプログラム206はステツプ302より開
始され、ステツプ302で第4図のスタータ・スイ
ツチ152がON状態かどうかDIO128のDIN
レジスタ196を監視することにより行なわれ
る。もしスタータ・スイツチ152がON状態で
あるとDINレジスタ196の第6ビツトが“H”
となつている。また逆にOFFしていると“L”
となつている。今エンジンの始動前であるとする
とスタータ・スイツチはOFFであり、ステツプ
302からステツプ312へ進み、ここで始動後かどう
かを判断する。この判断は例えばスタータ・フラ
グが立つているかどうかを判断する。このスター
タ・フラグはステツプ308で立てられるものであ
る。始動前はスタータ・フラグが立つていないの
で、ステツプ312でNOとなり、再びステツプ302
へ戻る。スタータ・スイツチ152がONされる
までステツプ302のNOからステツプ312のNOを通
つてステツプ302へ戻るルートを回る。このルー
トトを回りながら、スタータ・スイツチの監視を
行なう。 スタータ・スイツチがONするとステツプ302で
判断がYESとなり、ステツプ304へ進む。ここ
で、既にスタータ・スイツチがONしていたかど
うかを判断する。初めてステツプ304へ進んだ場
合はスタータ・スイツチのONを検出した直後で
あり、ステツプ304で判断がNOとなる。ステツプ
304の判断もスタータ・フラツグが立つているか
どうかで判断される。スタータ・フラツグの立つ
ていない時は判断をNOとしてステツプ306へ進
み、始動の為の準備がされる。例えば本実施例で
は、フユーエル・ポンプ190の起動のために
DIO128のDOUTレジスタ194の第ゼロ・ビ
ツトに“H”をセツトする。これに、よりフユー
エル・ポンプの電源が入る。次にステツプ306
で、DOUTレジスタ194の第1ビツトを
“L”とする。これによりEGRC回路178の出
力でエアー・ソレノイド22が制御される。実際
にはDOUTレジスタ194の第ゼロビツトと第
1ビツトのセツトは同時に行なわれる。 ステツプ308でINTV IRQの禁止解除がなさ
れ、点火出力禁止の解除がなされる。このINTV
IRQの禁止解除は例えば第4図のMASKレジスタ
200の第4ビツトを“H”にすることにより行
なう。さらにステツプ308でスタータ・フラグを
立てる。このスタータ・フラグは既にスタータ・
スイツチがONであることを示していて、ステツ
プ304とステツプ312でこのフラグを判断に用い
る。 ステツプ310で入出力回路108の出力系であ
るCABC162とIGNC164とFSC172と
EGRC178とに起動をかけるため、後で説明す
るモード・レジスタに“H”をセツトする。これ
により各制御装置ヘパルス出力が送られる。ステ
ツプ310からステツプ302へ戻り、ステツプ302で
スタータ・スイツチ152がONかどうか判断さ
れる。始動中はスタータ・スイツチがONであ
り、YESからステツプ304へ進む。このステツプ
304で、スタータ・フラグをチエツクし、フラグ
が立つていれば既にスタート中であるとしてステ
ツプ302へ戻る。 このようにスタータ・モータが駆動されている
間は、ステツプ302のYESと304のYESと作られ
るループを回つている。 エンジンが始動されるとスタータ・スイツチ1
52がOFFとなるので、ステツプ302の判断は
NOとなり、ステツプ312へ進む。ステツプ312で
スタータ・フラグがチエツクされ、スタータ・フ
ラグが立つているのでステツプ314へ進む。この
ステツプ314で、ENST IRQの禁止解除がなさ
れ、このステツプ316以降エンジンの停止はこの
ENST IRQで検出できる。 次にプログラム208へ進む、このプログラム
を第12図に詳細する。 第12図において、ステツプ410でアイドル・
スイツチ148がONかどうかが判断される。も
しONであれば排気ガス環流は行なわれない。 従つてステツプ412へ進み、ここでエアー・ソ
レノイドバルブ22をDIOのレジスタDOUT19
4の第1ビツト“L”にすることにより指定され
る。このため、レジスタEGRD180にセツトさ
れた値に応じて第1図のエアー・ソレノイドバル
ブ22が制御される。ステツプ414で冷却水温に
応じてエアーソレノイドバルブ22のデユーテイ
がレジスタEGRD180に設定される。さらに水
温TWに応じたフユーエル・ソレノイドバルブか
らの燃料供給量がレジスタFSCD172にセツト
される。これらの値に応じてフユーエル・ソレノ
イドバルブ20とエアー・ソレノイドバルブ22
が制御され、アイドル時のエンジンが制御され
る。このステツプ416の終了により再び410へ進
み、このフローを繰り返す。 一方アイドル・スイツチ148がオンでない状
態ではエアー・ソレノイドバルブ22は使用され
ず、代りに排気ガス環流が行なわれる。このため
EGR量を制御するEGR装置が駆動されるこの装
置を駆動するためにステツプ418でDIOのDOUT
レジスタ194の第4ビツトが“H”とされ、レ
ジスタEGRD180にセツトされた値でEGR装置
188が駆動される。次にステツプ420でレジス
タFSCD172にゼロがセツトされ、フユーエ
ル・ソレノイド15の駆動を停止する。ステツプ
422で冷却水温が一定値例えばTA℃より高いか
どうかを判断し、もし高ければEGRを掛けない
ようにする。このためステツプ426でEGRCUTを
行うための値を設定する。またステツプ422で冷
却水温が一定値(TA℃)であればステツプ424
へ進む。ステツプ424で冷却水温がTB度Cより低
いかどうかを判断する。もし低い場合、やはり
EGRを掛けないのでステツプ426でEGR CUTを
行う値を設定する。これらの値はステツプ430で
EGRDレジスタにセツトされる。 一方冷却水温TWがTB度より高くTA度より低
い場合EGRを行う。このときのEGR量は負圧セ
ンサ144の出力VCとエンジン回転速度Nで定
まる。出力VCとNとによるEGR量のマツプは第
6図のROMのアドレスB701〜B800に設
けられており、このマツプから検索してEGR量
を定める。ステツプ428で検索を行い。この値を
ステツプ430でレジスタEGRD180へセツトす
る。このレジスタEGRD180のセツト値に応じ
て第4図に示したEGR装置188は駆動され
る。 第12図に示したフローチヤートでは、ステツ
プ430あるいはステツプ416の終了により、再びス
テツプ410へ戻る。このようにすることにより計
算機はエアー・ソレノイド22を制御するための
ステツプ410からステツプ416までのフローチヤー
トかあるいはステツプ418からステツプ430までの
ステツプのフローチヤートを常に実行できる。従
つてIRQなどの発生が生じないものとすれば、点
202よりスタートしたプログラムはINITIALIZ
プログラム204、MONITプログラム206を
通つてバツクグラウンド・ジヨブ208である
FISCプログラムあるいはEGRCALプログラムを
常に実行し続けることになる。 MONITプログラム206やバツクグラウン
ド・ジヨブ208は割込み要求(IRQ)を発生さ
せてその処理を中断できるようになつており、
IRQによる処理が終了すると再び上記プログラム
の実行を再開する。 次に第5図におけるIRQの発生に基づく処理の
説明を行なう。IRQの要因分析のプログラム22
4はADC1END IRQ226の処理とADC2END
IRQ228の処理とINTV IRQ230の処理と
ENST IRQ232の処理とからなつている。こ
こで各プログラム226,228,230,23
2のそれぞれを実行するためには先ず、IRQの要
求内容は何かを調べる。このため第4図のSTA
TUSレジスタ198の内容が調べられる。この
STATUSレジスタの内容を見ることにより、
IRQの発生要因が判明する。この発生要因に応じ
て上記各プログラム226,228,230,2
32を実行し、これによりTASK252,25
4,256,258,262の内の実行が必要な
TASKに起動要求(QUEUE)を出す。 但し、IRQの発生を多くすると管理プログラム
(以下OSと記す)の実行時間が多くなり実質的な
エンジン制御の為の演算時間がとれなくなる欠点
がある。従つてこの実施例では、ADC2END
IRQ228はINITI ALIZあるいはMONITプログ
ラム204と206の実行中のみ発生させ、その
他は発生させない。つまりMONITプログラム2
06の第8図で示したステツプ314で第4図の
MASKレジスタ200にADC2END IRQの禁止
命令をセツトする。またADC1END IRQ226
は最初から発生させない、つまりスタート点であ
る202で全ての割込みが禁止されるように入出
力回路のゼネラル・リセツト信号でIRQ発生禁止
状態になるようにMASKレジスタをセツトす
る。その後IRQ禁止解除の命令を出さないように
することによりADC1END IRQを禁止状態とす
る。 プログラム224の具体例を第13図に示す。
IRQの入口222よりステツプ502へ行く。ここ
でIRQの発生要求がADC2END IRQかどうかを
判断し、そうであればステツプ516でタスク・レ
ベル・ゼロのプログラムに起動要求を出す。これ
は第15図に示したRAM106内のタスク・コ
ントロール・ワードTCW0のb6に“1”のフラ
グを立てる。そしてTASK SCHDULER242
へ進む。ADC2END IRQが発生するのはこの実
施例では第5図のINITIALIZプログラム204の
実行中のみである。それ以外の状態では
ADC2END IRQは禁止される。ステツプ502の判
断が“NO”の場合ステツプ504へ進む。 ステツプ504でIRQの要因が一定周期で発生す
るINTV IRQかどうかを判断する。 “YES”の場合、ステツプ506へ進む。ステツ
プ506からステツプ514はタスク・レベル・ゼロか
らタスク・レベル3までのプログラムの起動タイ
ミングかどうかの判断をする機能を持つ。先ずタ
スク・レベル・ゼロを調べる。タスク・レベル・
ゼロのタスク・コントロール・ワードすなわち第
15図のTCW0のb0〜b5までのカウンタ0
をプラス1だけインクリメントする。ステツプ
508でTCW0のカウンタ0の値と第15図のタス
ク起動タイマTTM0と比較する。ここでTTM0
には“1”が入つている。ここでINTV IRQは10
〔mSEC〕毎に発生するものとしているので、
TTM0に“1”が入つていることはタスク・レ
ベル・ゼロ・プログラム(第5図の252)は10
〔mSEC〕毎に起動されることを表わしている。
第15図のカウンタCNTR0とTTM0をステツ
プ508で比較し、一致する場合“YES”へ進む。
この場合は一致するのでステツプ510へ進み、タ
スク・コントロール・ロードTCW0のb6にフ
ラグ“1”を立てる。この実施例では各TCWの
b6はそのタスクの起動要求のフラグとなる。ス
テツプ510でTCW0のb6にフラグ“1”を立て
たのでこのTCW0のb0〜b5に設けられたカ
ウンタCNTR0をクリアする。 ステツプ512でタスク・レベル・ゼロからタス
ク・レベル1の起動タイミング検索に移る。ステ
ツプ514でタルク・レベル3の終了かを判断す
る。つまりn=4かを判断する。この場合n=1
であるので、ステツプ506へ戻る。ステツプ506で
タルク・レベル1のプログラムのタスク・コント
ロール・ワードである第15図のRAM106内
のTCW1のカウンタCNTR1の内容を+1イン
クリメントする。ステツプ508で、第15図の
ROM104のTTM1と比較する。この実施例で
はTTM1の内容は“2”である。つまりタス
ク・レベル1の起動タイミングは20〔mSEC〕
である。今カウンタCNTR1の内容が“1”であ
ると仮定すると508の判断は“NO”つまりタス
ク・レベル1プログラム254は起動タイミング
ではないことが判断され、ステツプ512へ進む。
ここで再び検索されるタスク・レベルが更進さ
れ、次はタスク・レベル2となる。同様にしてタ
スク・レベル3まで終了すると、ステツプ512で
n=4となり、ステツプ514でn=nMAXの条件
が満足される。そしてタスク・スチジユータ24
2へ進む。 ステツプ504でINTV IRQでなければステツプ
518へ進む。ここでエンジン停止を示すENST
IRQかどうかを判断する。ステツプ504で“NO”
の場合かならずENST IRQのはずであり、ステ
ツプ518を省略してステツプ520へ進んでもよい。
ステツプ520はエンジン停止に基づく特別のプロ
グラムで燃料ポンプを停止し、さらに点火系燃料
の全ての出力系の信号をリセツト状態にし、第5
図のスタート点202へ戻る。 第14図はタスク・スチジユーラ242の詳細
フローチヤートであり、ステツプ530でタスク・
レベルnの実行が必要かを判断する。最初はn=
0であり、タスク・レベル・ゼロのプログラムの
実行の必要について判断する。これはタスク・コ
ントロール・ワードTCWのb6とb7を検索す
ることにより判断できる。b6は起動要求フラグ
でここに“1”が立つていると起動要求が“有
り”であることがわかる。またb7には実行中を
示すフラグであり、ここに“1”が立つていると
実行中であり今中断されていることになる。従つ
てb6とb7の少くともどちらかに“1”があれ
ば実行要となりステツプ538へ進む。 ステツプ538でb7のフラグを判断し、b7が
“1”であれば実行中断中であり点540よりそ
の中断していた実行を再開する。b6とb7の再
方にフラグが立つていてもやはりステツプ538の
判断は“YES”となり、中断中のところのプロ
グラムから再開する。b6のみが“1”の場合、
そのレベルの起動要求フラグつまりb6をステツ
プ542でクリアして、ステツプ544でb7のフラグ
(以下RUNフラグと記す)をセツトする。ステツ
プ542と544はそのタスク・レベルの起動要求状態
から実行状態に進んだことを示す。ステツプ546
でそのタスク・レベル・プログラムのスタート・
アドレスを検索する。これは第15図に示した
ROM104の内に各タスク・レベルのTCWに対
応させて設けられたスタートアドレステーブル
TSAより求められ、このスタートアドレスへジ
ヤンプすることによりそのタスクの実行が行なわ
れる。 第14図へ戻つてステツプ530で“NO”と判断
された場合、この場合は検索のタスク・レベルの
プログラムには起動要求がでていなくしかも、実
行中断でもないことを示している。この場合次の
タスク・レベルの検索にうつる。つまりタスク・
レベルのnがn+1となつてレベルが1つ移動す
る。ここでnがMAXつまりここでは4であるか
を見、4でなければ再びステツプ530へ進む。こ
れを繰り返し、n=4となると点536よりバツ
ク・グラウンド・ジヨブの中断点へ戻る。つまり
点536ではタルク・レベル・ゼロ〜3までの全
てのプログラムに実行の必要がないことが判明し
たことになり、IRQの発生前のバツク・グラン
ド・ジヨブの中断点へ戻る。 第15図は上で述べたタスク・コントロール・
ワードTCWとROM内のタスク・起動周期を表わ
すTTMタスク・スタート・アドレス・テーブル
の関係を示したものである。タスク・コントロー
ル・ワートTCWの0〜3に対応してROM内にタ
スク起動周期TTMがあり、INTV IRQごとに
TCWのカウンタCNTRが各々更新され、各タス
クのTTMと一致したことにより、そのTCWのb6
にフラグが立つ。このフラグにより次にROM内
のタスク・スタート・アドレスTSAよりそのタ
スクのスタート・アドレスが検索され、そのスタ
ート・アドレスへジヤンプすることによりプログ
ラム1〜4の選ばれたプログラムが実行される。
この実行中はRAM106内のそのプログラムに
対応したTCWのb7にフラグが立つ。このフラ
グが立つている間は実行中であることが判断でき
る。このようにして第5図のタスク・スケジユー
ル242のプログラムが実行される。そして例え
ばレベル0〜3までのプログラム252〜258
のいずれかが実行される。この実行中にIRQが発
生すれば再びそのタスクを中断してIRQの処理に
なる。今IRQが発生しないとすると実行中のタス
クの処理はやがて終了する。これにより終了報告
を行うため、EXITプログラム260へ進む。 このEXITプログラムの詳細を第16図に示
す。このプログラムは、紙了タスクを見つけるた
めのステツプ562と564からなる。このステツプ
562と564で先ずタスク・レベルのゼロより検索
し、終了したタスク・レベルを見つける。これに
よりステツプ568へ進み、ここで終了したタスク
のタスク・コントロール・ワードのb7のRUN
フラグをリセツトする。これによりそのプログラ
ムの実行が完全に終つたことになる。そして再び
タスク・スケジユーラへ戻り、次の実行プログラ
ムが決定される。 プログラムの実行と中断を第17図で再び説明
する。今、最も優先度の低いバツク・グラウン
ド・ジヨブ208を実行していたとする。時間t
1でINTV IRQが発生すると管理プログラム(以
下OSプログラムと記す)へ実行が移る。そして
ここで第5図のプログラム224,242の実行
により、例えばレベル・ゼロ・プログラム252
が実行要求されたことがわかる。そして時間t2
でTCW0のb7に“1”が立てられ、さらにb
6がクリアされ、このレベル・ゼロ・プログラム
252が実行される。またこの時、同時にレベル
1のプログラムも起動要求が出たとすとTCW1
のb6にもフラグ“1”が立つている。しかし先
ず、優先度の高いレベル・ゼロ・プログラムを実
行する。時間t3でこのレベル・ゼロ・プログラ
ムの実行を終了すると再びOSプログラムへ戻
り、TCW0のb7のフラグをクリアして次のレ
ベルであるレベル1の実行要求の検知と実行の準
備がされ、t4より実行が始まる。ここでレベル
1の処理に時間がかかると再び次のINTV IRQが
発生し、t5でレベル1のプログラムを中断し
て、OSプログラムへ戻る。そしてOSプログラム
を実行し、このINTV IRQで起動すべきプログラ
ム、例えばプログラム252に起動要求を出す。
そして優先度の最も高いプログラム252を時間
t6より実行する。つまりTCW0のb7にフラ
グ“1”を立てさらにb6のフラグをクリアし
て、TSA0よりプログラム252のスタート・
アドレスを検索し、プログラム252を実行す
る。時間t7でプログラム252の実行を終了
し、OSプログラムへ戻り、EXITプログラムで、
TCW0のb7をクリアする。さらにOSプログラ
ムのタスク・スケジユーラ・プログラム242で
起動要求または中断プログラムを検索する。この
プログラム242により。プログラム254の中
断を検知し、実行を再開する。この再開は時間t
5でCPU102の内容が待避されていたのを時
間t8で再びCPUへ戻すことにより行なわれ
る。プログラム254を再開し、時間t9でその
実行を終了すると、OSプログラムへ戻り、EXIT
プログラムを実行することによりプログラム25
4の終了報告がされる。つまりTCW1のb7の
フラグがクリアされる。 その後、タスク・スケジユーラ・プログラム2
42の実行により、起動要求の出ているプログラ
ムや実行中断のプログラムがないかどうかを検索
し、例えばプログラム256のTCW2のb6に
フラグ“1”が立つているのを発見する。これに
よりプログラム256のスタード・アドレスであ
るTSA2を検索し、プログラム256のスター
ト・アドレスへジヤンプしてプログラム256を
実行する。このとき前にも述べた如く、TCW2
のb6フラグをクリアし、b7のフラグを立て
る。さらに時間t11でプログラム256の実行
が終了するとOSプログラムへ戻り、EXITプログ
ラムによりTCWb7のフラグをクリアして終了報
告する。さらに再び起動要求と実行中断の検索を
行なう。この検索により起動要求や実行中断のプ
ログラムがないとすると、バツク・グラウンド・
ジヨブ208の待避エリアよりCPUへ各データ
を戻し、実行再開を行なう。そしてt13で
INTV IRQが入るとCPUの内容を再び待避させ
て、OSプログラムへ戻り、IRQの要因分折を行
なつて再びプログラムに起動要求をかける。 この説明より解かるように各プログラムの実行
中に割込みが発生するとそのプログラムを中断
し、OSプログラムへ戻り、最も高いレベルのプ
ログラムより実行する。このようにすることによ
り、より重要なプログラムに優先的に処理時間を
割りあてられる。 さらに各プログラムを優先度に応じて各レベル
に分け、各レベルに含まれるそれぞれの処理プロ
グラムを連絡的につらねて実行させ、それぞれの
レベルのプログラムに対し、その総ての処理の終
了で終了報告させているので、OSプログラムの
占める割合が少くてすみ、処理効率が向上する。
さらにこのようにすることにより、同一レベル内
プログラムに対し、相互に割込みが発生すること
がないので、割込みのための待避エリアを各レベ
ルプログラムに対応して設けることで実行可能と
なるので待避エリアが大幅に減少する。 第5図および第17図の説明を各レベルのプロ
グラム252,254,256,258の立場よ
り見た時の実行状態を第18図とに示す。IDLE
状態に起動待ちの状態であり、プログラムにまだ
起動要求が立されていない。次に起動要求が出さ
れるとTCWのb6にフラグが立ち、起動が必要
ということが表示される。IDLE状態から
QUEUE状態へ移動する時間は各プログラムのレ
ベルにより定まつている。さらにQUEUE状態に
なつても実行され順序は優先度により定まる。そ
のプログラムが実行状態に入るのはOSプログラ
ムでTCWのb6のフラグがクリアされ、b7に
フラグが立つてからである。これによりプログラ
ムの実行が始められる。この状態がRUN状態で
ある。そして実行が終るとTCWのb7フラグが
クリアされ、終了報告を完了する。これにより
RUN状態は終り、再びIDLE状態となり次の起動
要求が出るのを待つ。しかし、プログラムの実行
中すなわちRUN中にIRQが発生するとそのプロ
グラムは実行を中断しなければならない。このた
めCPUの内容が待避され、実行が中断する。こ
の状態がREADY状態である。次にこのプログラ
ムが再び実行される状態になると待避エリアよ
り、待避していた内容を再びCPUへ戻し、実行
が再開される。つまりREADY状態から再びRUN
状態へ戻る。このように各レベルプログラムは第
18図の4つの状態を繰り返す。第18図は代表
的な流れであるがREADY状態でTCWのb6に
フラグが立つ可能性がある。これは例えば起動中
断中にそのプログラムの次の起動要求タイミング
になつてしまつた場合である。このときはb7フ
ラグが優先されて先ず、中断中の仕事を終了させ
る。これによりb7フラグが消え、b6フラグに
よりIDLE状態を通らずにQUEUE状態となる。 このように各レベル・プログラム252,25
4,256,258は各々第18図のどれかの状
態にある。また各レベルプログラムはREADY状
態になるのはその各レベルプログラム状態毎にな
る。つまり、例えばレベル1プログラムは第1に
示すCARBCプログラムやIGNCALプログラムや
DWLCALプログラムより構成されている。とこ
ろがレベル1プログラムに対してREADY状態が
存在するのであつて上記各CARB、IGNCAL、
DWLCALプログラムに対してREADY状態があ
るのではないので、各レベルプログラムに対応し
て待避エリアを持たせればよい。第20図の
RAM106のエリア602から608は各レベ
ルに対応して設けられている。 第19図はバツク・グランド・ジヨブの状態変
化を示す図であり、実行中にRUN状態であり、
IRQが発生するとCPUの内容を待避させて
READY状態となる。また割込み処理が終了する
と、待避していた内容をCPUに戻し、実行再開
つまりRUNとなる。IRQの発生でCPUの内容を
待避させる場合第20図で示した待避エリア61
0へ待避される。 第21図はレベル0プログラムである。このプ
ログラムは第1表に示す通り、10ミリ・セツク毎
に起動要求が出される。ステツプ650でADC1の
データの取込みを行ない、654でADC1の次のデ
ータを取り込むための起動をかける。また652の
ステツプは始動前にADCEND IRGを使用するた
めであり、始動前のフラグが立つている場合、始
動前であるためRTIつまり中断しているプログラ
ムへ戻る。このプログラムは第5図のINITIALIZ
プログラム204である。ステツプ656でAD2の
データを取り込み、さらにステツプ658でADC2
の次のデータ取り込みのための起動をかける。ス
テツプ660でエンジン速度を取り込む。これらの
ステツプを終了するとOSのEXITプログラムを実
行し、TCWb7のフラグをクリアーする。 第22図はレベル1プログラムであり、ステツ
プ672で始動中かどうかを判断する。始動中の場
合、始動中の燃料を供給しさらに点火時期を決定
するので、計算の必要がなく、ステツプ678へジ
ンプする。ステツプ674で燃料を計算するための
CARBCALプログラムを実行し、次にステツプ
676でIGNCALプログラムを実行する。これらは
それぞれテーブル検索で行なわれる。ステツプ
678でDWALCALプログラムを実行し、これによ
り通電時間を計算する。 レベル2のLAMBDAプログラムはλの補正プ
ログラムであり、レベル3のHOSEIプログラム
は各補正係数のプログラムである。補正係数とし
ては例えば大気温や、水温などの補正係数を求め
るプログラムであり、これらのパラメータは時定
数が大きいので、長いインターバルブ係数を計数
すれば良い。 また本発明は前述した如く、総ての演算制御が
エンジンの回転数に無関係に行なわれるように
INTV IRQを発生している。このようにIRQの発
生回路の構成を第23図に示す。図において、レ
ジスタ735はCPUからタイマ割込周期を設定
するデータ(例えば10mS)がデータバス752
を通じてセツトされ、同時にカウンタ736には
CLOCKが入力される。そしてこのカウント数と
上記レジスタにセツトされた内容は比較器737
でもつて比較され、レジスタ735の内容とカウ
ンタ736の内容が等しくなつた時、比較器73
7から出力が発せられ、フリツプフロツプ73
8、及び740をセツトする。これと同時に
AND回路747の出力でもつてカウンタ736
とフリツプフロツプ738はリセツトされる。一
方フリツプフロツプ739がセツトされていれ
ば、タイマ割込信号IRQはAND回路748、OR
回路751を介して出力される。ここで上記フリ
ツプフロツプ739は上記IRQを不要とする時
(例えばエンジン始動中)IRQをマスクするため
のフリツプフロツプである。そしてこの時は
CPUからフリツプフロツプ739に対してリセ
ツト指令が発せられる。また上記したタイマ割込
に対して、エンジンの回転が運転中に故障もしく
は操作上のミスで停止(いわゆるエンスト)した
時のエンスト割込は以下の構成で示されている。
この構成はタイマ割込の場合と同一であり、レジ
スタ741、カウンタ742、比較器743、
AND回路746,750、フリツプフロツプ7
45,746からなり動作も前述の場合と同一で
ある。但し、カウンタ742に入力される信号は
エンジンが回転している時に発せられる信号であ
つて、第4図に示す146センサより発生するクラ
ンクの基準角信号REFであり、例えば4気筒の
エンジンの時はクランクが180゜回転する毎に発
せられる信号である。そしてカウンタ742は上
記REF信号が入つている間リセツトがかかるた
め、エンスト割込信号は発せられず、エンジンが
停止するとREF信号が停止しリセツトが解除さ
れるためにエンスト割込信号が発せられる。 以上述べた様なタイマ割込IRQは前述した第5
図のフローチヤートに示されるようにタスクに起
動をかけ、タスクの優先処理が行われる。すなわ
ち、CPUが割込要求を受けるとその割込要引の
分析の判定を行なう。そしてそれがタイマ割込で
あるならば、優先度の高い順にレベル分けされた
タスク器252,254,256,258に起動
をかけタスクスケジユラー242によつて選択
し、タスクの実行がなされる。そしてタスク実行
が終了するとEXITで終了報告され、再び次のタ
イマ割込とタスクスケジユーラによつて次のタス
クが選択される。 一方割込がエンスト割込の場合は燃料ポンプを
OFFすると同時に点火系をリセツトし、入出力
制御回路を総てNO−GOとする。 ADC1END IRQとADC2END 1RQも同様であ
り、ADC1のシーケンス動作が終了するとフリツ
プフロツプ764へ“1”がセツトされる。さら
にCPUよりバス・ライン752を介してフリツ
プフロツプ762へ“1”がセツトされると
ANDゲート770の条件がとれ、ORゲートIRQ
を介してCPUへADC1ENDIRQのサービスを要求
する。しかしフリツプフロツプ762に“1”が
セツトされていない場合はADC1END IRQは禁
止される。ADC2についても同様で、ADC2のシ
ーケンスの終了でフリツプフロツプ768に
“1”がセツトされる。このときフリツプフロツ
プ766に“1”がセツトされていれば
ADC2ENDIRQはANDケート772とORゲート
751を介して発生するが、フリツプフロツプ7
66に“1”がセツトされていないと、ANDゲ
ート772の条件がとれないのでAD2ENDIRQは
発生しない。従つてフリツプフロツプ739,7
45,762,766に対し“1”をセツトした
もののみのIRQが発生し、“0”をセツトすると
IRQの発生を禁止する状態となる。 以上説明したごとく、本発明によれば次のよう
な効果がある。 (A) 本発明においてはプログラムをエンジンの制
御機能毎にタスクに分解し、複数の設計者が該
タスクを別々に作りさらに必要に応じて調整
し、これらのタスクを組合せることにより制御
システムを完成させることが可能と成る。従つ
てエンジンの制御内容が複雑となり高精度の制
御が要求されても迅速にこれに対応できる。 (B) エンジン制御においては制御内容が車のモデ
ルチエンジや制御仕様の変更に応じて変更さ
れ、これにともない制御システムを構成するタ
スクが種々異なる場合も頻繁に起こる。このよ
うな場合タスクの追加や削除が他のタスクの実
行結果に影響を与えないことが必要となる。ま
た、タスクの内容が変更になる場合も頻繁にお
こる。この場合も同様である。 本発明においてはINTV割込みに対応するタ
スクは一定時間毎に中断される。従来の方式の
ごとく、タスクの実行終了時、次の実行タスク
の検索のために割込みを発生させる必要がない
ので、INTV割込みによる中断が終わると次の
INTV割込みまでに中断される可能性はINTV
割込み以外の割込みによる場合のみとなり、非
常に少なくなる。従つて割込み発生条件が簡単
であり、タスクの内容を変更することによる退
避エリアの増減が少ない。このため退避エリア
の余裕を少なくできメモリを有効に活用でき
る。 (C) タスクの分割は制御機能毎に行われるが、こ
の制御機能を比較的細かくし、タスク数を多く
すると上記制御仕様の変更に木目細かく対応で
きるが、従来の方式ではタスク数が増えるた
め、割込み回数が増加し、実質的なエンジン制
御のための処理時間が短くなる問題がある。さ
らに中断タスクが増えるため、退避エリアを増
大させる必要がある。 一方本発明では1タスクの処理時間が短くな
り、INTV割込み間に処理できる可能性が増大
し、中断タスクの数が少なくなる。従つて退避
エリアが減少し、しかも処理時間はほとんど増
加しない。 また第5図の実施例によれば、各レベルプログ
ラム毎に起動周期を変えているので制御効率がさ
らに向上する。さらにまた同一レベルのプログラ
ムに対してはそのプログラムの終了毎にEXIT報
告させているので、同一レベル内で次のプログラ
ムへ進むのに何らOSプログラムの実行を要しな
い。従つて処理時間が速くなる。 またこれにより、同一レベル内のプロクラム相
互間での割込みが互にかからないので待避エリア
の設定を各タスクレベルに応じて行えばよいので
エリアが少くてすむ。 エンジンが始動した後、ADC1END割込や
ADC1END割込みにマスクを掛けているので、
OSプログラムの実行時間の短縮ができ処理効率
が向上する。 第15図に示す実施例によればTCWは各レベ
ルに対して設ければよく、第1表の各プログラム
に対して設ける必要がないのでTCWのエリアが
少くてすむ。 さらにTCWには起動要求を示すフラグb6と
実行中を示すフラグb7が設けてあるので、第1
7図と第18図に示すごとく、プログラムの実行
と中断さらに再開がスムーズにしかも優先度の高
いものよりでき、CPUの制御効率が向上する。
管理するためのプログラムとして、IRQ ANAL
プログラムやTASK SCHDULERやEXITがあ
る。これらのプログラム(以下OSと記す)は第
6図の如くROM104のアドレスA000から
アドレスA300に保持されている。 さらにレベル・ゼロ・プログラムとして
AD1IN、AD1ST、AD2IN、AD2ST、RPMINの
各プログラムがあり、通常INTV IRQの10〔m
SEC〕で起動される。レベル1プログラムとし
てCARBC、IGNCAL、DWLCALプログラムがあ
り、INTV IRQの20〔mSEC〕ごとに起動され
る。レベル2プログラムのLAMBDAプログラム
があり、INTV IRQの40〔mSEC〕ごとに起動さ
れる。レベル3プログラムとしてHOSEIプログ
ラムがあり、INTV IRQの100〔mSEC〕ごとに
記動される。またバツク・グラウンド・ジヨブと
してEGRCALとFISCプログラムがある。上記レ
ベル・ゼロ・プログラムはPROG1としてそれぞ
れ第6図のROM104のアドレスA700から
AB00に記憶されている。レベル・1プログラ
ムはPROG2としてROM104のアドレスAB0
0からAE00に記憶されている。レベル2プロ
グラムはPROG3としてTROM104のアドレス
AF00からB000に記憶されている。レベル
3プログラムはPROG4としてROM104のア
ドレスB000からB100に記憶されている。
またバツク・グラウンド・ジヨブ・プログラムは
B100からB200に保持されている。なお上
記プログラムPROG1からPROG4までの各プロ
グラムのスタード・アドレスのリスト(以下
SFTMRと記す)がB200からB300までに
保持され、PROG1からPROG4までの各プログ
ラム起動周期を表わす値(以下TTMと記す)が
アドレスB300からB400に記憶されてい
る。 その他のデータは必要に応じB400からB5
00に記憶される。それに続いて演算のためのデ
ータADV・MAPやAF・MAP、EGR・MAPをそ
れぞれ記憶している。 第5図におけるINITIALIZ204プログラムの
詳細を第7図を用いて説明する。ステツプ282で
IRQ発生時の退避エリアを設定する。次にステツ
プ284でRAM106を全てクリアする。ステツプ
286で入出力回路108のレジスタ内に初期値の
設定を行なう。この初期値設定として例えば、エ
ンジンのシリンダ数や角度センサ146の初期値
やDIO128のDDRの設定やINTV IRQ発生のた
めのタイマの設定やENST IRQ発生のための検
出期間の設定やエンジン回転数検出のための計測
時間の設定がある。 ステツプ288でADC1に起動をかけ、さらに
ADC1ENDIRQの為の禁止解除を行なう。この場
合AD1STプログラムのスタート・アドレスであ
る第6図のアドレスA701へジヤンプする。こ
れにより第4図のADC1・122のMPXの入力の
1つであるバツテリ電圧検出センサVBS132の
出力がセレクトされてADC164へ入力され
る。ステツプ290へ戻つてここでADC1END IRQ
を待つ。ADC164の動作が完了し、REG16
6へデイジタル値がセツトされるとステータス・
レジスタSTAUS198へADC164の動作完了
が報告され、ADC1END IRQがCPU102へ入
力される。これによりプログラムAD1INが実行
され、センサ132の出力が取り込まれる。 ステツプ292でセンサ132から142の値を
全て取り込んだかを確認する。この場合センサ1
32の入力の取込みが完了されただけなので、ス
テツプ288へ戻る。このステツプ288で再び
AD1STプログラムが起動され、MPX162は次
の入力であるセンサ134の出力をセレクトす
る。ステツプセンサ134の出力のアナログ・デ
イジタル変換が完了すると再び、ステツプ292で
プログラムAD1INが実行され、レジスタREG1
66内に保持されている水温センサTWS134
の出力のデイジタル値が取り込まれたROM10
4のDATAエリアに保持される。ステツプ292で
再びステツプ288へ戻される。このようにステツ
プ288からステツプ292のループを回ることにより
センサ132から142の出力のデイジタル値が
次々に取り込まれ、λセンサであるλS142の
出力値の取り込みが完了すると、ステツプ294へ
進む。 ステツプ294で始動時の点火時期の演算と設定
を行なう。この点火時期θADV(ST)はエンジ
ンの冷却水温TWの関数として演算する。この関
数を第9図に示す。第9図の特性に従つてθ
ADV(ST)を演算し、この演算された結果は第
4図IGNC164のレジスタADV166にセツト
される。 ステツプ296で始動時のエアー・ソレノイドバ
ルブ22の演算を行う。この演算は第10図に示
す特性に基づいて行なわれ、その演算出力はレジ
スタEGRD180にセツトされる。尚EGRP18
2についても固定値がセツトされる。第10図の
特性はEGRP182のセツト値に対するEGRD1
80のセツト値の比である。 ステツプ298で燃料ソレノイド・オン・デユー
テイの初期値が演算される。この演算値は第11
図により行なわれるものであり、レジスタCABP
166の設定値に対するレジスタCABD164の
設定値の比率が第11図の特性図として示されて
いる。レジスタCABD164とCABP166のデ
ータのセツトにより、第5図のプログラム
INITIALIZ204の実行を終了し、第8図に示す
MONITプログラム206へ移る。 MONITプログラム206はステツプ302より開
始され、ステツプ302で第4図のスタータ・スイ
ツチ152がON状態かどうかDIO128のDIN
レジスタ196を監視することにより行なわれ
る。もしスタータ・スイツチ152がON状態で
あるとDINレジスタ196の第6ビツトが“H”
となつている。また逆にOFFしていると“L”
となつている。今エンジンの始動前であるとする
とスタータ・スイツチはOFFであり、ステツプ
302からステツプ312へ進み、ここで始動後かどう
かを判断する。この判断は例えばスタータ・フラ
グが立つているかどうかを判断する。このスター
タ・フラグはステツプ308で立てられるものであ
る。始動前はスタータ・フラグが立つていないの
で、ステツプ312でNOとなり、再びステツプ302
へ戻る。スタータ・スイツチ152がONされる
までステツプ302のNOからステツプ312のNOを通
つてステツプ302へ戻るルートを回る。このルー
トトを回りながら、スタータ・スイツチの監視を
行なう。 スタータ・スイツチがONするとステツプ302で
判断がYESとなり、ステツプ304へ進む。ここ
で、既にスタータ・スイツチがONしていたかど
うかを判断する。初めてステツプ304へ進んだ場
合はスタータ・スイツチのONを検出した直後で
あり、ステツプ304で判断がNOとなる。ステツプ
304の判断もスタータ・フラツグが立つているか
どうかで判断される。スタータ・フラツグの立つ
ていない時は判断をNOとしてステツプ306へ進
み、始動の為の準備がされる。例えば本実施例で
は、フユーエル・ポンプ190の起動のために
DIO128のDOUTレジスタ194の第ゼロ・ビ
ツトに“H”をセツトする。これに、よりフユー
エル・ポンプの電源が入る。次にステツプ306
で、DOUTレジスタ194の第1ビツトを
“L”とする。これによりEGRC回路178の出
力でエアー・ソレノイド22が制御される。実際
にはDOUTレジスタ194の第ゼロビツトと第
1ビツトのセツトは同時に行なわれる。 ステツプ308でINTV IRQの禁止解除がなさ
れ、点火出力禁止の解除がなされる。このINTV
IRQの禁止解除は例えば第4図のMASKレジスタ
200の第4ビツトを“H”にすることにより行
なう。さらにステツプ308でスタータ・フラグを
立てる。このスタータ・フラグは既にスタータ・
スイツチがONであることを示していて、ステツ
プ304とステツプ312でこのフラグを判断に用い
る。 ステツプ310で入出力回路108の出力系であ
るCABC162とIGNC164とFSC172と
EGRC178とに起動をかけるため、後で説明す
るモード・レジスタに“H”をセツトする。これ
により各制御装置ヘパルス出力が送られる。ステ
ツプ310からステツプ302へ戻り、ステツプ302で
スタータ・スイツチ152がONかどうか判断さ
れる。始動中はスタータ・スイツチがONであ
り、YESからステツプ304へ進む。このステツプ
304で、スタータ・フラグをチエツクし、フラグ
が立つていれば既にスタート中であるとしてステ
ツプ302へ戻る。 このようにスタータ・モータが駆動されている
間は、ステツプ302のYESと304のYESと作られ
るループを回つている。 エンジンが始動されるとスタータ・スイツチ1
52がOFFとなるので、ステツプ302の判断は
NOとなり、ステツプ312へ進む。ステツプ312で
スタータ・フラグがチエツクされ、スタータ・フ
ラグが立つているのでステツプ314へ進む。この
ステツプ314で、ENST IRQの禁止解除がなさ
れ、このステツプ316以降エンジンの停止はこの
ENST IRQで検出できる。 次にプログラム208へ進む、このプログラム
を第12図に詳細する。 第12図において、ステツプ410でアイドル・
スイツチ148がONかどうかが判断される。も
しONであれば排気ガス環流は行なわれない。 従つてステツプ412へ進み、ここでエアー・ソ
レノイドバルブ22をDIOのレジスタDOUT19
4の第1ビツト“L”にすることにより指定され
る。このため、レジスタEGRD180にセツトさ
れた値に応じて第1図のエアー・ソレノイドバル
ブ22が制御される。ステツプ414で冷却水温に
応じてエアーソレノイドバルブ22のデユーテイ
がレジスタEGRD180に設定される。さらに水
温TWに応じたフユーエル・ソレノイドバルブか
らの燃料供給量がレジスタFSCD172にセツト
される。これらの値に応じてフユーエル・ソレノ
イドバルブ20とエアー・ソレノイドバルブ22
が制御され、アイドル時のエンジンが制御され
る。このステツプ416の終了により再び410へ進
み、このフローを繰り返す。 一方アイドル・スイツチ148がオンでない状
態ではエアー・ソレノイドバルブ22は使用され
ず、代りに排気ガス環流が行なわれる。このため
EGR量を制御するEGR装置が駆動されるこの装
置を駆動するためにステツプ418でDIOのDOUT
レジスタ194の第4ビツトが“H”とされ、レ
ジスタEGRD180にセツトされた値でEGR装置
188が駆動される。次にステツプ420でレジス
タFSCD172にゼロがセツトされ、フユーエ
ル・ソレノイド15の駆動を停止する。ステツプ
422で冷却水温が一定値例えばTA℃より高いか
どうかを判断し、もし高ければEGRを掛けない
ようにする。このためステツプ426でEGRCUTを
行うための値を設定する。またステツプ422で冷
却水温が一定値(TA℃)であればステツプ424
へ進む。ステツプ424で冷却水温がTB度Cより低
いかどうかを判断する。もし低い場合、やはり
EGRを掛けないのでステツプ426でEGR CUTを
行う値を設定する。これらの値はステツプ430で
EGRDレジスタにセツトされる。 一方冷却水温TWがTB度より高くTA度より低
い場合EGRを行う。このときのEGR量は負圧セ
ンサ144の出力VCとエンジン回転速度Nで定
まる。出力VCとNとによるEGR量のマツプは第
6図のROMのアドレスB701〜B800に設
けられており、このマツプから検索してEGR量
を定める。ステツプ428で検索を行い。この値を
ステツプ430でレジスタEGRD180へセツトす
る。このレジスタEGRD180のセツト値に応じ
て第4図に示したEGR装置188は駆動され
る。 第12図に示したフローチヤートでは、ステツ
プ430あるいはステツプ416の終了により、再びス
テツプ410へ戻る。このようにすることにより計
算機はエアー・ソレノイド22を制御するための
ステツプ410からステツプ416までのフローチヤー
トかあるいはステツプ418からステツプ430までの
ステツプのフローチヤートを常に実行できる。従
つてIRQなどの発生が生じないものとすれば、点
202よりスタートしたプログラムはINITIALIZ
プログラム204、MONITプログラム206を
通つてバツクグラウンド・ジヨブ208である
FISCプログラムあるいはEGRCALプログラムを
常に実行し続けることになる。 MONITプログラム206やバツクグラウン
ド・ジヨブ208は割込み要求(IRQ)を発生さ
せてその処理を中断できるようになつており、
IRQによる処理が終了すると再び上記プログラム
の実行を再開する。 次に第5図におけるIRQの発生に基づく処理の
説明を行なう。IRQの要因分析のプログラム22
4はADC1END IRQ226の処理とADC2END
IRQ228の処理とINTV IRQ230の処理と
ENST IRQ232の処理とからなつている。こ
こで各プログラム226,228,230,23
2のそれぞれを実行するためには先ず、IRQの要
求内容は何かを調べる。このため第4図のSTA
TUSレジスタ198の内容が調べられる。この
STATUSレジスタの内容を見ることにより、
IRQの発生要因が判明する。この発生要因に応じ
て上記各プログラム226,228,230,2
32を実行し、これによりTASK252,25
4,256,258,262の内の実行が必要な
TASKに起動要求(QUEUE)を出す。 但し、IRQの発生を多くすると管理プログラム
(以下OSと記す)の実行時間が多くなり実質的な
エンジン制御の為の演算時間がとれなくなる欠点
がある。従つてこの実施例では、ADC2END
IRQ228はINITI ALIZあるいはMONITプログ
ラム204と206の実行中のみ発生させ、その
他は発生させない。つまりMONITプログラム2
06の第8図で示したステツプ314で第4図の
MASKレジスタ200にADC2END IRQの禁止
命令をセツトする。またADC1END IRQ226
は最初から発生させない、つまりスタート点であ
る202で全ての割込みが禁止されるように入出
力回路のゼネラル・リセツト信号でIRQ発生禁止
状態になるようにMASKレジスタをセツトす
る。その後IRQ禁止解除の命令を出さないように
することによりADC1END IRQを禁止状態とす
る。 プログラム224の具体例を第13図に示す。
IRQの入口222よりステツプ502へ行く。ここ
でIRQの発生要求がADC2END IRQかどうかを
判断し、そうであればステツプ516でタスク・レ
ベル・ゼロのプログラムに起動要求を出す。これ
は第15図に示したRAM106内のタスク・コ
ントロール・ワードTCW0のb6に“1”のフラ
グを立てる。そしてTASK SCHDULER242
へ進む。ADC2END IRQが発生するのはこの実
施例では第5図のINITIALIZプログラム204の
実行中のみである。それ以外の状態では
ADC2END IRQは禁止される。ステツプ502の判
断が“NO”の場合ステツプ504へ進む。 ステツプ504でIRQの要因が一定周期で発生す
るINTV IRQかどうかを判断する。 “YES”の場合、ステツプ506へ進む。ステツ
プ506からステツプ514はタスク・レベル・ゼロか
らタスク・レベル3までのプログラムの起動タイ
ミングかどうかの判断をする機能を持つ。先ずタ
スク・レベル・ゼロを調べる。タスク・レベル・
ゼロのタスク・コントロール・ワードすなわち第
15図のTCW0のb0〜b5までのカウンタ0
をプラス1だけインクリメントする。ステツプ
508でTCW0のカウンタ0の値と第15図のタス
ク起動タイマTTM0と比較する。ここでTTM0
には“1”が入つている。ここでINTV IRQは10
〔mSEC〕毎に発生するものとしているので、
TTM0に“1”が入つていることはタスク・レ
ベル・ゼロ・プログラム(第5図の252)は10
〔mSEC〕毎に起動されることを表わしている。
第15図のカウンタCNTR0とTTM0をステツ
プ508で比較し、一致する場合“YES”へ進む。
この場合は一致するのでステツプ510へ進み、タ
スク・コントロール・ロードTCW0のb6にフ
ラグ“1”を立てる。この実施例では各TCWの
b6はそのタスクの起動要求のフラグとなる。ス
テツプ510でTCW0のb6にフラグ“1”を立て
たのでこのTCW0のb0〜b5に設けられたカ
ウンタCNTR0をクリアする。 ステツプ512でタスク・レベル・ゼロからタス
ク・レベル1の起動タイミング検索に移る。ステ
ツプ514でタルク・レベル3の終了かを判断す
る。つまりn=4かを判断する。この場合n=1
であるので、ステツプ506へ戻る。ステツプ506で
タルク・レベル1のプログラムのタスク・コント
ロール・ワードである第15図のRAM106内
のTCW1のカウンタCNTR1の内容を+1イン
クリメントする。ステツプ508で、第15図の
ROM104のTTM1と比較する。この実施例で
はTTM1の内容は“2”である。つまりタス
ク・レベル1の起動タイミングは20〔mSEC〕
である。今カウンタCNTR1の内容が“1”であ
ると仮定すると508の判断は“NO”つまりタス
ク・レベル1プログラム254は起動タイミング
ではないことが判断され、ステツプ512へ進む。
ここで再び検索されるタスク・レベルが更進さ
れ、次はタスク・レベル2となる。同様にしてタ
スク・レベル3まで終了すると、ステツプ512で
n=4となり、ステツプ514でn=nMAXの条件
が満足される。そしてタスク・スチジユータ24
2へ進む。 ステツプ504でINTV IRQでなければステツプ
518へ進む。ここでエンジン停止を示すENST
IRQかどうかを判断する。ステツプ504で“NO”
の場合かならずENST IRQのはずであり、ステ
ツプ518を省略してステツプ520へ進んでもよい。
ステツプ520はエンジン停止に基づく特別のプロ
グラムで燃料ポンプを停止し、さらに点火系燃料
の全ての出力系の信号をリセツト状態にし、第5
図のスタート点202へ戻る。 第14図はタスク・スチジユーラ242の詳細
フローチヤートであり、ステツプ530でタスク・
レベルnの実行が必要かを判断する。最初はn=
0であり、タスク・レベル・ゼロのプログラムの
実行の必要について判断する。これはタスク・コ
ントロール・ワードTCWのb6とb7を検索す
ることにより判断できる。b6は起動要求フラグ
でここに“1”が立つていると起動要求が“有
り”であることがわかる。またb7には実行中を
示すフラグであり、ここに“1”が立つていると
実行中であり今中断されていることになる。従つ
てb6とb7の少くともどちらかに“1”があれ
ば実行要となりステツプ538へ進む。 ステツプ538でb7のフラグを判断し、b7が
“1”であれば実行中断中であり点540よりそ
の中断していた実行を再開する。b6とb7の再
方にフラグが立つていてもやはりステツプ538の
判断は“YES”となり、中断中のところのプロ
グラムから再開する。b6のみが“1”の場合、
そのレベルの起動要求フラグつまりb6をステツ
プ542でクリアして、ステツプ544でb7のフラグ
(以下RUNフラグと記す)をセツトする。ステツ
プ542と544はそのタスク・レベルの起動要求状態
から実行状態に進んだことを示す。ステツプ546
でそのタスク・レベル・プログラムのスタート・
アドレスを検索する。これは第15図に示した
ROM104の内に各タスク・レベルのTCWに対
応させて設けられたスタートアドレステーブル
TSAより求められ、このスタートアドレスへジ
ヤンプすることによりそのタスクの実行が行なわ
れる。 第14図へ戻つてステツプ530で“NO”と判断
された場合、この場合は検索のタスク・レベルの
プログラムには起動要求がでていなくしかも、実
行中断でもないことを示している。この場合次の
タスク・レベルの検索にうつる。つまりタスク・
レベルのnがn+1となつてレベルが1つ移動す
る。ここでnがMAXつまりここでは4であるか
を見、4でなければ再びステツプ530へ進む。こ
れを繰り返し、n=4となると点536よりバツ
ク・グラウンド・ジヨブの中断点へ戻る。つまり
点536ではタルク・レベル・ゼロ〜3までの全
てのプログラムに実行の必要がないことが判明し
たことになり、IRQの発生前のバツク・グラン
ド・ジヨブの中断点へ戻る。 第15図は上で述べたタスク・コントロール・
ワードTCWとROM内のタスク・起動周期を表わ
すTTMタスク・スタート・アドレス・テーブル
の関係を示したものである。タスク・コントロー
ル・ワートTCWの0〜3に対応してROM内にタ
スク起動周期TTMがあり、INTV IRQごとに
TCWのカウンタCNTRが各々更新され、各タス
クのTTMと一致したことにより、そのTCWのb6
にフラグが立つ。このフラグにより次にROM内
のタスク・スタート・アドレスTSAよりそのタ
スクのスタート・アドレスが検索され、そのスタ
ート・アドレスへジヤンプすることによりプログ
ラム1〜4の選ばれたプログラムが実行される。
この実行中はRAM106内のそのプログラムに
対応したTCWのb7にフラグが立つ。このフラ
グが立つている間は実行中であることが判断でき
る。このようにして第5図のタスク・スケジユー
ル242のプログラムが実行される。そして例え
ばレベル0〜3までのプログラム252〜258
のいずれかが実行される。この実行中にIRQが発
生すれば再びそのタスクを中断してIRQの処理に
なる。今IRQが発生しないとすると実行中のタス
クの処理はやがて終了する。これにより終了報告
を行うため、EXITプログラム260へ進む。 このEXITプログラムの詳細を第16図に示
す。このプログラムは、紙了タスクを見つけるた
めのステツプ562と564からなる。このステツプ
562と564で先ずタスク・レベルのゼロより検索
し、終了したタスク・レベルを見つける。これに
よりステツプ568へ進み、ここで終了したタスク
のタスク・コントロール・ワードのb7のRUN
フラグをリセツトする。これによりそのプログラ
ムの実行が完全に終つたことになる。そして再び
タスク・スケジユーラへ戻り、次の実行プログラ
ムが決定される。 プログラムの実行と中断を第17図で再び説明
する。今、最も優先度の低いバツク・グラウン
ド・ジヨブ208を実行していたとする。時間t
1でINTV IRQが発生すると管理プログラム(以
下OSプログラムと記す)へ実行が移る。そして
ここで第5図のプログラム224,242の実行
により、例えばレベル・ゼロ・プログラム252
が実行要求されたことがわかる。そして時間t2
でTCW0のb7に“1”が立てられ、さらにb
6がクリアされ、このレベル・ゼロ・プログラム
252が実行される。またこの時、同時にレベル
1のプログラムも起動要求が出たとすとTCW1
のb6にもフラグ“1”が立つている。しかし先
ず、優先度の高いレベル・ゼロ・プログラムを実
行する。時間t3でこのレベル・ゼロ・プログラ
ムの実行を終了すると再びOSプログラムへ戻
り、TCW0のb7のフラグをクリアして次のレ
ベルであるレベル1の実行要求の検知と実行の準
備がされ、t4より実行が始まる。ここでレベル
1の処理に時間がかかると再び次のINTV IRQが
発生し、t5でレベル1のプログラムを中断し
て、OSプログラムへ戻る。そしてOSプログラム
を実行し、このINTV IRQで起動すべきプログラ
ム、例えばプログラム252に起動要求を出す。
そして優先度の最も高いプログラム252を時間
t6より実行する。つまりTCW0のb7にフラ
グ“1”を立てさらにb6のフラグをクリアし
て、TSA0よりプログラム252のスタート・
アドレスを検索し、プログラム252を実行す
る。時間t7でプログラム252の実行を終了
し、OSプログラムへ戻り、EXITプログラムで、
TCW0のb7をクリアする。さらにOSプログラ
ムのタスク・スケジユーラ・プログラム242で
起動要求または中断プログラムを検索する。この
プログラム242により。プログラム254の中
断を検知し、実行を再開する。この再開は時間t
5でCPU102の内容が待避されていたのを時
間t8で再びCPUへ戻すことにより行なわれ
る。プログラム254を再開し、時間t9でその
実行を終了すると、OSプログラムへ戻り、EXIT
プログラムを実行することによりプログラム25
4の終了報告がされる。つまりTCW1のb7の
フラグがクリアされる。 その後、タスク・スケジユーラ・プログラム2
42の実行により、起動要求の出ているプログラ
ムや実行中断のプログラムがないかどうかを検索
し、例えばプログラム256のTCW2のb6に
フラグ“1”が立つているのを発見する。これに
よりプログラム256のスタード・アドレスであ
るTSA2を検索し、プログラム256のスター
ト・アドレスへジヤンプしてプログラム256を
実行する。このとき前にも述べた如く、TCW2
のb6フラグをクリアし、b7のフラグを立て
る。さらに時間t11でプログラム256の実行
が終了するとOSプログラムへ戻り、EXITプログ
ラムによりTCWb7のフラグをクリアして終了報
告する。さらに再び起動要求と実行中断の検索を
行なう。この検索により起動要求や実行中断のプ
ログラムがないとすると、バツク・グラウンド・
ジヨブ208の待避エリアよりCPUへ各データ
を戻し、実行再開を行なう。そしてt13で
INTV IRQが入るとCPUの内容を再び待避させ
て、OSプログラムへ戻り、IRQの要因分折を行
なつて再びプログラムに起動要求をかける。 この説明より解かるように各プログラムの実行
中に割込みが発生するとそのプログラムを中断
し、OSプログラムへ戻り、最も高いレベルのプ
ログラムより実行する。このようにすることによ
り、より重要なプログラムに優先的に処理時間を
割りあてられる。 さらに各プログラムを優先度に応じて各レベル
に分け、各レベルに含まれるそれぞれの処理プロ
グラムを連絡的につらねて実行させ、それぞれの
レベルのプログラムに対し、その総ての処理の終
了で終了報告させているので、OSプログラムの
占める割合が少くてすみ、処理効率が向上する。
さらにこのようにすることにより、同一レベル内
プログラムに対し、相互に割込みが発生すること
がないので、割込みのための待避エリアを各レベ
ルプログラムに対応して設けることで実行可能と
なるので待避エリアが大幅に減少する。 第5図および第17図の説明を各レベルのプロ
グラム252,254,256,258の立場よ
り見た時の実行状態を第18図とに示す。IDLE
状態に起動待ちの状態であり、プログラムにまだ
起動要求が立されていない。次に起動要求が出さ
れるとTCWのb6にフラグが立ち、起動が必要
ということが表示される。IDLE状態から
QUEUE状態へ移動する時間は各プログラムのレ
ベルにより定まつている。さらにQUEUE状態に
なつても実行され順序は優先度により定まる。そ
のプログラムが実行状態に入るのはOSプログラ
ムでTCWのb6のフラグがクリアされ、b7に
フラグが立つてからである。これによりプログラ
ムの実行が始められる。この状態がRUN状態で
ある。そして実行が終るとTCWのb7フラグが
クリアされ、終了報告を完了する。これにより
RUN状態は終り、再びIDLE状態となり次の起動
要求が出るのを待つ。しかし、プログラムの実行
中すなわちRUN中にIRQが発生するとそのプロ
グラムは実行を中断しなければならない。このた
めCPUの内容が待避され、実行が中断する。こ
の状態がREADY状態である。次にこのプログラ
ムが再び実行される状態になると待避エリアよ
り、待避していた内容を再びCPUへ戻し、実行
が再開される。つまりREADY状態から再びRUN
状態へ戻る。このように各レベルプログラムは第
18図の4つの状態を繰り返す。第18図は代表
的な流れであるがREADY状態でTCWのb6に
フラグが立つ可能性がある。これは例えば起動中
断中にそのプログラムの次の起動要求タイミング
になつてしまつた場合である。このときはb7フ
ラグが優先されて先ず、中断中の仕事を終了させ
る。これによりb7フラグが消え、b6フラグに
よりIDLE状態を通らずにQUEUE状態となる。 このように各レベル・プログラム252,25
4,256,258は各々第18図のどれかの状
態にある。また各レベルプログラムはREADY状
態になるのはその各レベルプログラム状態毎にな
る。つまり、例えばレベル1プログラムは第1に
示すCARBCプログラムやIGNCALプログラムや
DWLCALプログラムより構成されている。とこ
ろがレベル1プログラムに対してREADY状態が
存在するのであつて上記各CARB、IGNCAL、
DWLCALプログラムに対してREADY状態があ
るのではないので、各レベルプログラムに対応し
て待避エリアを持たせればよい。第20図の
RAM106のエリア602から608は各レベ
ルに対応して設けられている。 第19図はバツク・グランド・ジヨブの状態変
化を示す図であり、実行中にRUN状態であり、
IRQが発生するとCPUの内容を待避させて
READY状態となる。また割込み処理が終了する
と、待避していた内容をCPUに戻し、実行再開
つまりRUNとなる。IRQの発生でCPUの内容を
待避させる場合第20図で示した待避エリア61
0へ待避される。 第21図はレベル0プログラムである。このプ
ログラムは第1表に示す通り、10ミリ・セツク毎
に起動要求が出される。ステツプ650でADC1の
データの取込みを行ない、654でADC1の次のデ
ータを取り込むための起動をかける。また652の
ステツプは始動前にADCEND IRGを使用するた
めであり、始動前のフラグが立つている場合、始
動前であるためRTIつまり中断しているプログラ
ムへ戻る。このプログラムは第5図のINITIALIZ
プログラム204である。ステツプ656でAD2の
データを取り込み、さらにステツプ658でADC2
の次のデータ取り込みのための起動をかける。ス
テツプ660でエンジン速度を取り込む。これらの
ステツプを終了するとOSのEXITプログラムを実
行し、TCWb7のフラグをクリアーする。 第22図はレベル1プログラムであり、ステツ
プ672で始動中かどうかを判断する。始動中の場
合、始動中の燃料を供給しさらに点火時期を決定
するので、計算の必要がなく、ステツプ678へジ
ンプする。ステツプ674で燃料を計算するための
CARBCALプログラムを実行し、次にステツプ
676でIGNCALプログラムを実行する。これらは
それぞれテーブル検索で行なわれる。ステツプ
678でDWALCALプログラムを実行し、これによ
り通電時間を計算する。 レベル2のLAMBDAプログラムはλの補正プ
ログラムであり、レベル3のHOSEIプログラム
は各補正係数のプログラムである。補正係数とし
ては例えば大気温や、水温などの補正係数を求め
るプログラムであり、これらのパラメータは時定
数が大きいので、長いインターバルブ係数を計数
すれば良い。 また本発明は前述した如く、総ての演算制御が
エンジンの回転数に無関係に行なわれるように
INTV IRQを発生している。このようにIRQの発
生回路の構成を第23図に示す。図において、レ
ジスタ735はCPUからタイマ割込周期を設定
するデータ(例えば10mS)がデータバス752
を通じてセツトされ、同時にカウンタ736には
CLOCKが入力される。そしてこのカウント数と
上記レジスタにセツトされた内容は比較器737
でもつて比較され、レジスタ735の内容とカウ
ンタ736の内容が等しくなつた時、比較器73
7から出力が発せられ、フリツプフロツプ73
8、及び740をセツトする。これと同時に
AND回路747の出力でもつてカウンタ736
とフリツプフロツプ738はリセツトされる。一
方フリツプフロツプ739がセツトされていれ
ば、タイマ割込信号IRQはAND回路748、OR
回路751を介して出力される。ここで上記フリ
ツプフロツプ739は上記IRQを不要とする時
(例えばエンジン始動中)IRQをマスクするため
のフリツプフロツプである。そしてこの時は
CPUからフリツプフロツプ739に対してリセ
ツト指令が発せられる。また上記したタイマ割込
に対して、エンジンの回転が運転中に故障もしく
は操作上のミスで停止(いわゆるエンスト)した
時のエンスト割込は以下の構成で示されている。
この構成はタイマ割込の場合と同一であり、レジ
スタ741、カウンタ742、比較器743、
AND回路746,750、フリツプフロツプ7
45,746からなり動作も前述の場合と同一で
ある。但し、カウンタ742に入力される信号は
エンジンが回転している時に発せられる信号であ
つて、第4図に示す146センサより発生するクラ
ンクの基準角信号REFであり、例えば4気筒の
エンジンの時はクランクが180゜回転する毎に発
せられる信号である。そしてカウンタ742は上
記REF信号が入つている間リセツトがかかるた
め、エンスト割込信号は発せられず、エンジンが
停止するとREF信号が停止しリセツトが解除さ
れるためにエンスト割込信号が発せられる。 以上述べた様なタイマ割込IRQは前述した第5
図のフローチヤートに示されるようにタスクに起
動をかけ、タスクの優先処理が行われる。すなわ
ち、CPUが割込要求を受けるとその割込要引の
分析の判定を行なう。そしてそれがタイマ割込で
あるならば、優先度の高い順にレベル分けされた
タスク器252,254,256,258に起動
をかけタスクスケジユラー242によつて選択
し、タスクの実行がなされる。そしてタスク実行
が終了するとEXITで終了報告され、再び次のタ
イマ割込とタスクスケジユーラによつて次のタス
クが選択される。 一方割込がエンスト割込の場合は燃料ポンプを
OFFすると同時に点火系をリセツトし、入出力
制御回路を総てNO−GOとする。 ADC1END IRQとADC2END 1RQも同様であ
り、ADC1のシーケンス動作が終了するとフリツ
プフロツプ764へ“1”がセツトされる。さら
にCPUよりバス・ライン752を介してフリツ
プフロツプ762へ“1”がセツトされると
ANDゲート770の条件がとれ、ORゲートIRQ
を介してCPUへADC1ENDIRQのサービスを要求
する。しかしフリツプフロツプ762に“1”が
セツトされていない場合はADC1END IRQは禁
止される。ADC2についても同様で、ADC2のシ
ーケンスの終了でフリツプフロツプ768に
“1”がセツトされる。このときフリツプフロツ
プ766に“1”がセツトされていれば
ADC2ENDIRQはANDケート772とORゲート
751を介して発生するが、フリツプフロツプ7
66に“1”がセツトされていないと、ANDゲ
ート772の条件がとれないのでAD2ENDIRQは
発生しない。従つてフリツプフロツプ739,7
45,762,766に対し“1”をセツトした
もののみのIRQが発生し、“0”をセツトすると
IRQの発生を禁止する状態となる。 以上説明したごとく、本発明によれば次のよう
な効果がある。 (A) 本発明においてはプログラムをエンジンの制
御機能毎にタスクに分解し、複数の設計者が該
タスクを別々に作りさらに必要に応じて調整
し、これらのタスクを組合せることにより制御
システムを完成させることが可能と成る。従つ
てエンジンの制御内容が複雑となり高精度の制
御が要求されても迅速にこれに対応できる。 (B) エンジン制御においては制御内容が車のモデ
ルチエンジや制御仕様の変更に応じて変更さ
れ、これにともない制御システムを構成するタ
スクが種々異なる場合も頻繁に起こる。このよ
うな場合タスクの追加や削除が他のタスクの実
行結果に影響を与えないことが必要となる。ま
た、タスクの内容が変更になる場合も頻繁にお
こる。この場合も同様である。 本発明においてはINTV割込みに対応するタ
スクは一定時間毎に中断される。従来の方式の
ごとく、タスクの実行終了時、次の実行タスク
の検索のために割込みを発生させる必要がない
ので、INTV割込みによる中断が終わると次の
INTV割込みまでに中断される可能性はINTV
割込み以外の割込みによる場合のみとなり、非
常に少なくなる。従つて割込み発生条件が簡単
であり、タスクの内容を変更することによる退
避エリアの増減が少ない。このため退避エリア
の余裕を少なくできメモリを有効に活用でき
る。 (C) タスクの分割は制御機能毎に行われるが、こ
の制御機能を比較的細かくし、タスク数を多く
すると上記制御仕様の変更に木目細かく対応で
きるが、従来の方式ではタスク数が増えるた
め、割込み回数が増加し、実質的なエンジン制
御のための処理時間が短くなる問題がある。さ
らに中断タスクが増えるため、退避エリアを増
大させる必要がある。 一方本発明では1タスクの処理時間が短くな
り、INTV割込み間に処理できる可能性が増大
し、中断タスクの数が少なくなる。従つて退避
エリアが減少し、しかも処理時間はほとんど増
加しない。 また第5図の実施例によれば、各レベルプログ
ラム毎に起動周期を変えているので制御効率がさ
らに向上する。さらにまた同一レベルのプログラ
ムに対してはそのプログラムの終了毎にEXIT報
告させているので、同一レベル内で次のプログラ
ムへ進むのに何らOSプログラムの実行を要しな
い。従つて処理時間が速くなる。 またこれにより、同一レベル内のプロクラム相
互間での割込みが互にかからないので待避エリア
の設定を各タスクレベルに応じて行えばよいので
エリアが少くてすむ。 エンジンが始動した後、ADC1END割込や
ADC1END割込みにマスクを掛けているので、
OSプログラムの実行時間の短縮ができ処理効率
が向上する。 第15図に示す実施例によればTCWは各レベ
ルに対して設ければよく、第1表の各プログラム
に対して設ける必要がないのでTCWのエリアが
少くてすむ。 さらにTCWには起動要求を示すフラグb6と
実行中を示すフラグb7が設けてあるので、第1
7図と第18図に示すごとく、プログラムの実行
と中断さらに再開がスムーズにしかも優先度の高
いものよりでき、CPUの制御効率が向上する。
第1図はエンジンのスロツトル・チヤンバの断
面図、第2図は点火装置の概略図、第3図は排気
ガス環流装置のシステム図、第4図は制御システ
ムの全体構成図、第5図はプログラムのシステム
図、第6図はプログラムの記憶状態を示すメモリ
の構成図、第7図はINITIALIZプログラムの詳細
なフローチヤート図、第8図はMONITプログラ
ムのフローチヤート図、第9図は始動時の点火時
期を示す特性図、第10図は始動時の燃料供給量
を示す特性図、第11図は始動時の空気供給量を
示す特性図、第12図はEGRCALとFISCプログ
ラムの詳細図、第13図は第12図のプログラム
224の詳細フローチヤート図、第14図はタス
ク・スケジユーラの詳細フローチヤート図、第1
5図はタスク・レベル・プログラムの起動要求発
生動作を説明するための説明図、第16図は
EXITプログラムの詳細フローチヤート図、第1
7図はプログラムの処理シーケンスの説明図、第
18図はレベル・プログラムの状態変化を示す
図、第19図はバツク・グラウンド・ジヨブの状
態変化を説明するための図、第20図は待避エリ
アを説明するための図、第21図レベル・ゼロ・
プログラムの詳細フローチヤート図、第22図は
レベル1プログラムの詳細フローチヤート図、第
23図はIRQ発生回路図である。 12……スロツトル・バルブ、14……スロツ
トル、16,18,20,22……ソレノイド・
バルブ、26……メイン・ジエツト、30……メ
イン・エマルジヨン・チユーブ、32……メイ
ン・ノズル、34……ベンチユリ、62……増幅
器、64……パワー・トランジスタ、70……配
電器、102……CPU、104……ROM、10
6……RAM、108……入出力回路、132,
134,136,138,140,142,14
4……センサ、148,150,152……スイ
ツチ。
面図、第2図は点火装置の概略図、第3図は排気
ガス環流装置のシステム図、第4図は制御システ
ムの全体構成図、第5図はプログラムのシステム
図、第6図はプログラムの記憶状態を示すメモリ
の構成図、第7図はINITIALIZプログラムの詳細
なフローチヤート図、第8図はMONITプログラ
ムのフローチヤート図、第9図は始動時の点火時
期を示す特性図、第10図は始動時の燃料供給量
を示す特性図、第11図は始動時の空気供給量を
示す特性図、第12図はEGRCALとFISCプログ
ラムの詳細図、第13図は第12図のプログラム
224の詳細フローチヤート図、第14図はタス
ク・スケジユーラの詳細フローチヤート図、第1
5図はタスク・レベル・プログラムの起動要求発
生動作を説明するための説明図、第16図は
EXITプログラムの詳細フローチヤート図、第1
7図はプログラムの処理シーケンスの説明図、第
18図はレベル・プログラムの状態変化を示す
図、第19図はバツク・グラウンド・ジヨブの状
態変化を説明するための図、第20図は待避エリ
アを説明するための図、第21図レベル・ゼロ・
プログラムの詳細フローチヤート図、第22図は
レベル1プログラムの詳細フローチヤート図、第
23図はIRQ発生回路図である。 12……スロツトル・バルブ、14……スロツ
トル、16,18,20,22……ソレノイド・
バルブ、26……メイン・ジエツト、30……メ
イン・エマルジヨン・チユーブ、32……メイ
ン・ノズル、34……ベンチユリ、62……増幅
器、64……パワー・トランジスタ、70……配
電器、102……CPU、104……ROM、10
6……RAM、108……入出力回路、132,
134,136,138,140,142,14
4……センサ、148,150,152……スイ
ツチ。
Claims (1)
- 【特許請求の範囲】 1 エンジンを制御するのに必要な情報をセンサ
により検出する第1のステツプと、上記検出され
た情報に基づいてメモリに保持されたプログラム
の実行によりデイジタル計算機でエンジンを制御
するための値を演算する第2のステツプと、上記
デイジタル計算機の演算結果によりエンジンを制
御する第3ステツプを有する制御方法において、
上記プログラムは、エンジンの制御機能毎に分類
され且つ上記制御機能がエンジンに及ぼす影響に
基づいて決められた起動周期で実行されるタスク
を有し、該各タスクの起動周期が単位時間毎に発
生するINTV割込みの割込み発生回数により表示
され、上記INTV割込み要求により上記タスクは
そのタスクレベルにかかわらず実行を中断し
INTV割込みを発生する第4ステツプと、上記
INTV割込みの発生により上記各タスクについて
起動周期に達したかどうかを検知し起動周期に達
したタスクには起動要求を示すQフラグを表示す
る第5ステツプと、上記INTV割込み発生により
中断されたタスクのレベルと上記Qフラグが表示
されたタスクのレベルのうち高い方のレベルのタ
スクを実行する第6ステツプを有することを特徴
とする電子式エンジン制御方法。 2 特許請求の範囲第1項において、Qフラグが
表示されたタスクの実行の場合は上記Qフラグの
表示を消し、実行中であることを示すRフラグを
表示する第7ステツプと、タスクの実行を終了す
ると該タスクのRフラグの表示を消す第8ステツ
プを有することを特徴とする電子式エンジン制御
方法。 3 エンジンを制御するのに必要な情報をセンサ
により検出する第1のステツプと、上記検出され
た情報に基づいてメモリに保持されたプログラム
の実行によりデイジタル計算機でエンジンを制御
するための値を演算する第2のステツプと、上記
デイジタル計算機の演算結果によりエンジンを制
御する第3ステツプを有する制御方法において、
上記プログラムは、エンジンの制御機能毎に分類
され且つ上記制御機能がエンジンに及ぼす影響に
基づき決められた起動周期で実行されるタスクを
有し、該各タスクの起動周期が単位時間毎に発生
するINTV割込みの割込み発生回数により表示さ
れ、上記INTV割込み要求により上記タスクはそ
のタスクレベルにかかわらず実行を中断しINTV
割込みを発生する第4ステツプと、上記INTV割
込みの発生により上記各タスクについて起動周期
に達したかどうかを検知し起動周期に達したタス
クには起動要求を示すQフラグを表示する第5ス
テツプと、上記INTV割込み発生により中断され
たタスクのレベルと上記Qフラグが表示されたタ
スクのレベルのうち高い方のレベルのタスクを実
行する第6ステツプと、上記タスクの実行を終了
した場合には起動要求を示すQフラグの有無を調
べ、Qフラグの表示されたタスクの内最もレベル
の高いタスクを実行し、以下これを繰り返すこと
を特徴とする電子式エンジン制御方法。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4090179A JPS55134719A (en) | 1979-04-06 | 1979-04-06 | Method and apparatus for controlling engine electronically |
| EP80101757A EP0017219B1 (en) | 1979-04-06 | 1980-04-02 | Electronic type engine control method and apparatus |
| DE8080101757T DE3072043D1 (en) | 1979-04-06 | 1980-04-02 | Electronic type engine control method and apparatus |
| US06/137,519 US4337513A (en) | 1979-04-06 | 1980-04-04 | Electronic type engine control method and apparatus |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4090179A JPS55134719A (en) | 1979-04-06 | 1979-04-06 | Method and apparatus for controlling engine electronically |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS55134719A JPS55134719A (en) | 1980-10-20 |
| JPS6239260B2 true JPS6239260B2 (ja) | 1987-08-21 |
Family
ID=12593406
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP4090179A Granted JPS55134719A (en) | 1979-04-06 | 1979-04-06 | Method and apparatus for controlling engine electronically |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS55134719A (ja) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS55159240A (en) * | 1979-05-31 | 1980-12-11 | Nissan Motor Co Ltd | Collection and control unit of data for automobile |
| JPS62276604A (ja) * | 1986-05-26 | 1987-12-01 | Nissan Motor Co Ltd | シ−ケンスコントロ−ラ |
-
1979
- 1979-04-06 JP JP4090179A patent/JPS55134719A/ja active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| JPS55134719A (en) | 1980-10-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4354238A (en) | Method of controlling air-fuel ratio of internal combustion engine so as to effectively maintain the air fuel ratio at a desired air-fuel ratio of λ=1 | |
| EP0017219B1 (en) | Electronic type engine control method and apparatus | |
| US4482962A (en) | Engine control method | |
| JPS6127571B2 (ja) | ||
| JPS6232343B2 (ja) | ||
| US4363097A (en) | Electronic type engine control method | |
| US4449502A (en) | Control system for internal combustion engine | |
| JPS6212382B2 (ja) | ||
| JPS6212384B2 (ja) | ||
| JPS6256339B2 (ja) | ||
| JPS6352225B2 (ja) | ||
| JPH0375740B2 (ja) | ||
| JPS58185948A (ja) | 燃料噴射制御装置 | |
| JPS6239260B2 (ja) | ||
| EP0030114A1 (en) | Method for starting an operation of an internal combustion engine and apparatus therefor | |
| JPS632027B2 (ja) | ||
| JPH0217703B2 (ja) | ||
| JPH0138176B2 (ja) | ||
| JPS6336521B2 (ja) | ||
| KR850000119B1 (ko) | 전자식 엔진 제어방법 | |
| JPS58150047A (ja) | 内燃機関の燃料噴射制御装置 | |
| JPH0118443B2 (ja) | ||
| JPS6239257B2 (ja) | ||
| KR840001328B1 (ko) | 내연기관의 공연비(空撚比)제어 방법 | |
| JPH0663483B2 (ja) | 内燃機関制御装置 |