JPH0118256B2 - - Google Patents
Info
- Publication number
- JPH0118256B2 JPH0118256B2 JP54112949A JP11294979A JPH0118256B2 JP H0118256 B2 JPH0118256 B2 JP H0118256B2 JP 54112949 A JP54112949 A JP 54112949A JP 11294979 A JP11294979 A JP 11294979A JP H0118256 B2 JPH0118256 B2 JP H0118256B2
- Authority
- JP
- Japan
- Prior art keywords
- task
- execution
- interrupt
- tasks
- activation
- 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
- 230000004913 activation Effects 0.000 claims description 57
- 238000012545 processing Methods 0.000 claims description 38
- 238000000034 method Methods 0.000 claims description 26
- 230000008569 process Effects 0.000 claims description 23
- 230000006870 function Effects 0.000 claims description 5
- 239000000446 fuel Substances 0.000 description 20
- 238000010586 diagram Methods 0.000 description 18
- 238000006243 chemical reaction Methods 0.000 description 9
- 101100434411 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ADH1 gene Proteins 0.000 description 7
- 101150102866 adc1 gene Proteins 0.000 description 7
- 239000000498 cooling water Substances 0.000 description 7
- 239000007858 starting material Substances 0.000 description 6
- 238000002347 injection Methods 0.000 description 5
- 239000007924 injection Substances 0.000 description 5
- 101150042711 adc2 gene Proteins 0.000 description 4
- 230000001052 transient effect Effects 0.000 description 4
- 238000012937 correction Methods 0.000 description 3
- 239000002828 fuel tank Substances 0.000 description 3
- 238000010438 heat treatment Methods 0.000 description 3
- YWXYYJSYQOXTPL-SLPGGIOYSA-N isosorbide mononitrate Chemical compound [O-][N+](=O)O[C@@H]1CO[C@@H]2[C@@H](O)CO[C@@H]21 YWXYYJSYQOXTPL-SLPGGIOYSA-N 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 241000234435 Lilium Species 0.000 description 2
- 238000002485 combustion reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002401 inhibitory effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 101710096660 Probable acetoacetate decarboxylase 2 Proteins 0.000 description 1
- 238000011109 contamination Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005485 electric heating Methods 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
Landscapes
- Combined Controls Of Internal Combustion Engines (AREA)
- Control By Computers (AREA)
Description
本発明は自動車のエンジン制御装置に関し、更
に具体的にはマイクロコンピユータを使用したエ
ンジン制御装置に関する。 最近ではマイクロコンピユータによりエンジン
の総合的制御を行うことが実施されつつある。こ
の例は、例えば特開昭50−90826号公報に開示さ
れている。マイクロコンピユータによりエンジン
の総合的制御を高精度で行うにはソフトウエアと
してはエンジンの運転状況に応じて複数の、起動
周期の異なるプログラム(以下、タスクという。)
群の起動、停止の管理が十分に行われるように構
成されることが要請される。 しかしながら現在の処、上記のようなマイクロ
コンピユータによるエンジンの総合的制御を行う
ものにおいては上記タスク群の管理は粗雑なもの
であり、特にエンジンの過渡的運転状態、即ちエ
ンジン始動時、アイドル時または加速運転時には
円滑なタスクの引き継ぎを行うことが不可能であ
る為に自動車において要請される、例えば排気ガ
ス対策等に合致したエンジン制御が行われない欠
点がある。 また、タスクの優先制御にあつても、特開昭53
−40105号公報や特開昭54−58116号公報等に提案
されているように、タスクを優先度に基づいて複
数のタスクレベル(優先レベル)に分類し、割込
優先制御はタスクレベル単位で一律に行なうよう
にしている。しかし、この方法によれば、1つの
タスクレベルに属する複数のタスクが一括して実
行されることになるので、例えば起動周期が異な
るタスクを同一のタスクレベルに含ませることが
できない。このため、エンジンの制御特性に応じ
て要求される各タスクの起動周期と優先度にそれ
ぞれ対応させたきめ細かなタスク管理ができない
という問題があつた。 本発明の目的は、エンジン制御の状態に応じて
実行が必要なタスクの追加、削除を容易に行え、
またタスクの起動周期と優先度とにそれぞれ対応
させた優先制御を行なえる構成とし、エンジンの
過渡的運転状態における高精度のエンジン制御を
可能とするエンジン制御装置を提供することにあ
る。 本発明は、上記目的を達成するため、第18図
に示した構成図のように、入力されるインターバ
ル割込要求を含む複数の割込要求をそれぞれ一旦
蓄積する手段と、該手段の出力端に設けられ与え
られる割込禁止指令に応じて前記割込要求の発生
を阻止するゲート手段とを有してなる割込要求発
生手段801と、 エンジンの制御機能毎に分類され、それぞれ所
定の起動周期が設定されてなり、かつ起動周期の
異同に拘らず優先度に対応させて複数のタスクレ
ベルに区分されてなる複数のタスクが格納された
メモリ802と、 前記割込要求発生手段801から出力されるイ
ンターバル割込要求に基づいて計数された前記各
タスクの起動周期に係る経過時間データが格納さ
れるソフトタイマテーブル803と、 前記タスクの中でエンジンの状態等に基づいて
与えられる実行を禁止したいタスクに対する実行
禁止指令が格納されるタスク単位実行禁止テーブ
ル804と、 前記割込要求発生手段801から出力されるイ
ンターバル割込要求により実行中のタスクの実行
を中断させ、前記ソフトタイマテーブルの経過時
間データに基づいて各タスクが起動周期に達した
か否かを判定し、起動周期に達したタスクの起動
要求フラグをタスク制御テーブル805に立てる
割込処理手段806と、 前記タスク制御テーブル805を検索し中断さ
れたタスクを含め起動要求フラグが立てられてい
るタスクの中で優先度の高い順にしたがつてタス
クを選択して当該タスクの実行指令を出力するタ
スクデイスパツチヤ807と、 前記タスク単位実行禁止テーブル804に実行
禁止指令が格納されているタスクについて、前記
割込処理手段806におけるタスクの起動要求フ
ラグを立てる処理と前記タスクデイスパツチヤ8
07におけるタスクの実行指令の出力のいずれか
一方を禁止するタスク単位実行禁止手段808
と、 前記タスクデイスパツチヤ807から出力され
る実行指令に対応するタスクを前記メモリ802
から読み出し、タスクの内容に従つてエンジンの
制御演算を実行するタスク実行手段809と、 を備えてなるエンジン制御装置としたことにあ
る。 なお、前記タスク単位実行禁止手段808は前
記割込処理手段806又はタスクデイスパツチヤ
807に一体的に組込むことができる。 このように構成されることから、割込要求発生
手段801から出力されるインターバル割込要求
に係る各タスクの実行は、まず割込処理手段80
6によりソフトタイマテーブル803の起動周期
に基づき管理される。この管理はタスク制御テー
ブル805に起動要求フラグを立てることによつ
てなされる。次にタスクデイスパツチヤ807に
よりタスク制御テーブル805の内容が検索さ
れ、起動要求フラグが立てられているタスク相互
間での優先制御がなされる。 そして、タスク実行手段809はタスクデイス
パツチヤ807から出力される実行指令に基づ
き、メモリ802から対応するタスクを読出して
エンジンの制御演算を実行する。したがつて、ソ
フトタイマテーブル803において起動周期に達
していないタスクは、同一のタスクレベルに属し
ていても実行されることがないことから、不必要
なタスクの実行をすることがなくなるばかりでな
く、他の優先度の低いタスクにとつては優先割込
みによる中断時間が短縮されることになる。この
結果、エンジンの制御機能等の要求に応じて、自
由にタスクの起動周期と優先制御を組立てること
ができるので、きめ細かな効率のよい制御を実現
でき、これにより過渡状態の制御を高精度化でき
る。 また、タスク単位実行禁止テーブル804の内
容により、タスク単位実行禁止手段808を介し
て所定のタスクの実行が禁止される。したがつ
て、実行を禁止又は再開したいタスクをソフト的
に簡単に指定できることから、エンジンの状態等
に応じてタスク単位で追加、削除を行なうことが
可能になり、これにより一層エンジンの状態に対
応したきめ細かな効率のよい制御を実現できるこ
とになる。 以下、本発明を図面に示した実施例に基づき詳
細に説明する。 第1図にはエンジン系統全体の制御装置が示さ
れている。図において、吸入空気はエアクリーナ
2、スロツトルチヤンバ4、吸気管6を通り、シ
リンダ8へ供給される。シリンダ8で燃焼したガ
スは、シリンダ8から排気管10を通り、大気中
へ排出される。 スロツトルチヤンバ4には、燃料を噴射するた
めのインジエクタ12が設けられており、このイ
ンジエクタ12から噴出した燃料はスロツトルチ
ヤンバ4の空気通路内で霧化され、吸入空気と混
合して混合気を形成し、この混合気は吸気管6を
通つて、吸気弁20の開弁により、シリンダ8の
燃焼室へ供給される。 インジエクタ12の出口近傍には絞り弁14,
16が設けられている。絞り弁14は、アクセル
ペタルと機械的に連動するように構成され、運転
者により駆動される。一方、絞り弁16はダイヤ
フラム18により駆動されるように配置され、空
気流量が小の領域で全閉状態となり、空気流量が
増大するにつれてダイヤフラム18への負圧が増
大することにより絞り弁16は開き始め、吸入抵
抗の増大を抑止する。 スロツトルチヤンバ4の絞り弁14,16の上
流には空気通路22が設けられ、この空気通路2
2には熱線式空気流量計を構成する電気的発熱体
24が配設され、空気流速と発熱体の伝熱量との
関係から定まる空気流速に応じて変化する電気信
号が取り出される。発熱体24は空気通路22内
に設けられているので、シリンダ8のバツクフア
イア時に生じる高温ガスから保護されると共に、
吸入空気中のごみなどによつて汚染されることか
らも保護される。この空気通路22の出口はベン
チユリの最狭部近傍に開口され、その入口はベン
チユリの上流側に開口されている。 インジエクタ12に供給される燃料は、燃料タ
ンク30から、フユーエルポンプ32、フユーエ
ルダンパ34及びフイルタ36を介して燃圧レギ
ユレータ38へ供給される。一方、燃圧レギユレ
ータ38からはインジエクタ12へパイプ40を
介して加圧燃料が供給され、そのインジエクタ1
2から燃料が噴射される吸気管6の圧力と上記イ
ンジエクタ12への燃量圧の差が常に一定になる
ように、燃圧レギユレータ38から燃料タンク3
0へリターンパイプ42を介して燃料が戻される
ようになつている。 吸気弁20から吸入された混合気はピストン5
0により圧縮され、点火プラグ52によるスパー
クにより燃焼し、この燃焼は運動エネルギに変換
される。シリンダ8は冷却水54により冷却さ
れ、この冷却水の温度は水温センサ56により計
測され、この計測値はエンジン温度として利用さ
れる。点火プラグ52には点火コイル58より点
火タイミングに合わせて高電圧が供給される。 また、図示しないクランク軸にはエンジンの回
転に応じて基準クランク角毎におよび一定角度
(例えば0.5度)毎に基準角信号およびポジシヨン
信号を出すクランク角センサが設けられている。 このクランク角センサの出力、水温センサ56
の出力56A及び発熱体24からの電気信号はマ
イクロコンピユータなどからなる制御回路64に
入力され、制御回路64で演算処理され、この制
御回路64の出力によつてインジエクタ12及び
点火コイル58が駆動される。 以上の構成に基づき制御されるエンジン系統に
おいて、スロツトルチヤンバ4にはスロツトルの
絞り弁16を跨いで吸気管6に連通するバイパス
26が設けられ、このバイパス26には開閉制御
されるバイパスバルブ62が設けられている。こ
のバイパスバルブ62の駆動部には、前記制御回
路64の制御入力が供給され、開閉制御されるよ
うになつている。 このバイパスバルブ62は絞り弁16を迂回し
て設けられたバイパス26に臨ませられ、パルス
電流によつて開閉制御がなされる。このバイパス
バルブ62の弁のリフト量によりバイパス26の
断面積を変更するもので、このリフト量は制御回
路64の出力によつて駆動系が駆動され制御され
る。即ち、制御回路64においては駆動系の制御
のため開閉周期信号が発生され、駆動系はこの開
閉周期信号によつてバイパスバルブ62のリフト
量を調節するための制御信号をバイパスバルブ6
2の駆動部に付与するものである。 第2図は第1図の点火装置の説明図であり、増
幅器68を介してパワー・トランジスタ72へパ
ルス電流が供給され、この電流によりトランジス
タ72はONする。これによりバツテリ66より
点火コイル58へ一次コイル電流が流れる。この
パルス電流の立ち下がりでトランジスタ72は遮
断状態となり、点火コイル58の2次コイルに高
電圧を発生する。 この高電圧は配電器70を介してエンジンの各
シリンダにある点火プラグ52のそれぞれにエン
ジン回転に同期して高電圧を配電する。 第3図は排気ガス環流(以下EGRと記す)シ
ステムを説明するためのもので、負圧源80の一
定負圧が制圧弁84を介して制御弁86へ加えて
いる。制圧弁84はトランジスタ90に加えられ
る繰返しパルスのONデユーテイ比率に応じ、負
圧源の一定負圧を大気88へ開放に対する比率を
制御し、制御弁86への負圧の印加状態を制御す
る。従つて制御弁86へ加えられる負圧はトラン
ジスタ90のONデユーテイ比率で定まる。この
制圧弁84の制御負圧により排気管10から吸気
管6へのEGR量が制御される。 第4図は制御システムの全体構成図である。
CPU102とリード・オンリ・メモリ104
(以下ROMと記す。)とランダム・アクセス・メ
モリ106(以下RAMと記す。)と入出力回路
108とから構成されている。上記CPU102
はROM104内に記憶された各種のプログラム
により、入出力回路108からの入力データを演
算し、その演算結果を再び入出力回路108へ戻
す。これらの演算に必要な中間的な記憶はRAM
106を使用する。CPU102、ROM104、
RAM106、入出力回路108間の各種データ
のやり取りはデータ・バスとコントロール・バス
とアドレス・バスからなるバスライン110によ
つて行われる。 入出力回路108には第1のアナログ・デイジ
タル・コンバータ(以下ADC1と記す)と第2
のアナログ・デイジタル・コンバータ(以下
ADC2と記す)と角度信号処理回路126と1
ビツト情報を入出力する為のデイスクリート入出
力回路(以下DIOと記す)との入力手段を持つ。 ADC1にはバツテリ電圧検出センサ132
(以下VBSと記す)と冷却水温センサ56(以下
TWSと記す)と大気温センサ112(以下TAS
と記す)と調整電圧発生器114(以下VRSと
記す)とスロツトル角センサ116(以下θTHS
と記す)とλセンサ118(以下λSと記す)と
の出力がマルチ・プレクサ120(以下MPXと
記す)に加えられ、MPX120によりこの内の
1つを選択してアナログ・デイジタル・変換回路
122(以下ADCと記す)へ入力する。ADC1
22の出力であるデイジタル値はレジスタ124
(以下REGと記す)に保持される。 また流量センサ24(以下AFSと記す)は
ADC2へ入力され、アナログ・デイジタル・変
換回路128(以下ADCと記す)を介してデイ
ジタル変換されレジスタ130(以下REGと記
す)へセツトされる。 角度センサ146(以下ANGSと記す)から
は基準クランク角例えば180度クランク角を示す
信号(以下REFと記す)と微少角例えば1度ク
ランク角を示す信号(以下POSと記す)とが出
力され、角度信号処理回路126へ加えられ、こ
こで波形整形される。 DIOにはアイドル・スイツチ148(以下
IDLE−SWと記す)とトツプ・ギヤ・スイツチ
150(以下TOP−SWと記す)とスタータ・ス
イツチ152(以下START−SWと記す)とが
入力される。 次にCPUの演算結果に基づくパルス出力回路
および制御対象について説明する。インジエクタ
制御回路134(INJCと記す)は演算結果のデ
イジタル値をパルス出力に変換する回路である。
従つて燃料噴射量に相当したパルス幅を有するパ
ルスがINJC134で作られ、ANDゲート136
を介してインジエクタ12へ印加される。 点火パルス発生回路138(以下IGNCと記
す)は点火時期をセツトするレジスタ(ADVと
記す)と点火コイルの1次電流通電開始時間をセ
ツトするレジスタ(DWLと記す)とを有し、
CPUよりこれらデータがセツトされる。セツト
されたデータに基づいてパルスを発生し、第2図
に詳述した増幅器68へANDゲート140を介
してこのパルスを加える。 バイパスバルブ62の開弁率は制御回路(以下
ISCCと記す)142からANDゲート144を介
して加えられるパルスによつて制御される。
ISCC142はパルス幅をセツトするレジスタ
ISCDと繰返しパルス周期をセツトするレジスタ
ISCPとを持つている。 第3図に示したEGR制御弁86を制御するト
ランジスタ90を制御するEGR量制御パルス発
生回路154(以下EGRCと記す)にはパルスの
デユーテイを表わす値をセツトするレジスタ
EGRDとパルスの繰返し周期を表わす値をセツト
するレジスタEGRPとを有している。このEGRC
の出力パルスはANDゲート156を介してトラ
ンジスタ90に加えられる。 また1ビツトの入出力信号は回路DIOにより制
御される。入力信号としてはIDLE−SW信号、
TOP−SW信号、START−SW信号がある。ま
た出力信号としては燃料ポンプを駆動するための
パルス出力信号がある。このDIOは端子を入力端
子として使用するか、出力端子として使用するか
を決定するためのレジスタDDRと、出力データ
をラツチするためのレジスタDOUTとが設けら
れている。 レジスタ160は入出力回路108内部の色々
な状態を指令する命令を保持するレジスタ(以下
MODと記す)であり、例えばこのレジスタに命
令をセツトすることにより、ANDゲート136,
140,144,156を総てターンオンさせた
り、ターンオフさせたりする。このようにMOD
レジスタ160に命令をセツトすることにより、
INJCやIGNC、ISCCの出力の停止や起動を制御
できる。 第5図は第4図の制御回路のプログラムシステ
ムの基本構成を示す図である。 図においてイニシヤル処理プログラム202、
割込処理プログラム206、マクロ処理プログラ
ム228およびタスクデイスパツチヤ208はタ
スク群を管理するための管理プログラムである。
イニシヤル処理プログラム202はマイクロコン
ピユータを作動させるための前処理を行うための
プログラムであり例えば、RAM106の記憶内
容をクリアしたり入出力インターフエイス回路1
08のレジスタ類の初期値を設定したり、さらに
はエンジン制御を行うのに必要な前処理を行うた
めの入力情報例えば冷却水温TW、バツテリー電
圧等のデータを取込むための処理を行う。また、
割込処理プログラム206は各種の割込みを受け
付け、その割込要因を分析し、タスク群210な
いし226の内の必要なタスクを起動させるため
の起動要求をタスクデイスパツチヤ208に出
す。割込要因には後述するごとく電源電圧、冷却
水温度等の入力情報をAD変換終了後に発生する
AD変換割込(ADC)、エンジン回転に同期して
発生するイニシヤル割込(INTL)、又設定され
た一定時間毎に、例えば10ms毎に発生するイン
ターバル割込(INTV)、更にはエンジンのスト
ツプ状態を検出し、発生するエンスト割込
(ENST)等がある。 タスク群210乃至226の各タスクには優先
順位を表わすタスク番号が割り当てられており、
各タスクはタスクレベル0乃至2の何れかのタス
クレベルに属する。即ち、タスク0乃至タスク2
はタスクレベル0に、タスク3乃至タスク5はタ
スクレベル1に、更にタスク6乃至タスク8はタ
スクレベル2に各々属する。 タスクデイスパツチヤ208は前記各種割込の
起動要求を受け付けこれらの起動要求に対応する
各種タスクに付けられた優先順位に基づきCPU
の占有時間を割り当てる。 ここでタスクデイスパツチヤ208によるタス
クの優先制御は下記の方法に拠る。(1)優先度の低
いタスクを中断し、優先度の高いタスクへの実行
権の移行はタスクレベル間のみで行う。なおここ
ではレベル0が最も優先度が高いものとする。(2)
同じタスクレベル内で、現在実行中又は中断中の
タスクがある場合は、該タスクが最も優先度が高
く該タスクが終了するまで他のタスクは動作でき
ない。(3)同じタスクレベル内で複数のタスクに起
動要求がある場合には、タスク番号が小さい程優
先度が高いものとする。タスクデイスパツチヤ2
08の処理内容は後述するが本発明では上記優先
制御を行うためにタスク単位にRAMにソフトタ
イマを設け、又タスクレベル単位にタスクを管理
する制御ブロツクをRAM中に設定するように構
成している。そして上記各タスクの実行終了毎に
そのタスクの実行終了報告をマクロ処理プログラ
ム228によりタスクデイスパツチヤ208に行
うようにしている。 次にタスクデイスパツチヤ208の処理内容に
ついて第6図乃至第12図に基づき説明する。第
6図はタスクデイスパツチヤ208の管理する
RAMに設けられたタスク制御ブロツクが示され
ている。このタスク制御ブロツクがタスクレベル
の数だけ設けられており本実施例ではタスクレベ
ル0乃至2の3つ設けられている。各制御ブロツ
クには各々8ビツトが割り当てられ、その内0乃
至2ビツト目(Q0〜Q2)までが起動要求タスク
表示を行う起動ビツトであり、7ビツト目(R)
が同一タスクレベル中の何れかのタスクが現在実
行中であるか又は中断中であるかを示す実行ビツ
トを表わす。そして前記起動ビツトQ0乃至Q2は
それぞれ各タスクレベル中で実行優先度の高い順
に配列されており、例えば第5図中でタスク4に
該当する起動ビツトはタスクレベル1のQ1であ
る。ここでタスクの起動要求があつた場合には起
動ビツトの何れかにフラグが立てられ、一方タス
クデイスパツチヤ208は出された起動要求を高
いレベルのタスクに該当する起動ビツトより順に
検索し、出された起動要求に該当するフラグをリ
セツトすると共に実行ビツトにフラグ1を立て、
該当タスクを起動させるための処理を行う。 第7図はタスクデイスパツチヤ208の管理す
るRAM106に設けられたスタートアドレステ
ーブルである。スタートアドレスSA0乃至SA8
は第5図に示したタスク群210乃至226の各
タスク0乃至8に該当するスタートアドレスを示
す。各スタートアドレス情報には16ビツトが割り
当てられ、これらのスタートアドレス情報は後述
する如くタスクデイスパツチヤ208により起動
要求のあつた該当タスクを起動するのに使用され
る。 次に第8図乃至第9図にタスクデイスパツチヤ
の処理フローを示す。第8図に於いてステツプ
300でタスクデイスパツチヤの処理が開始される
とステツプ302でタスクレベルlに属するタスク
が実行中断中か否かが判断される。即ち、実行ビ
ツトに1が立つていたらマクロ処理プログラム2
28により未だタスク終了報告がタスクデイスパ
ツチヤ208に出されていない状態であり、実行
中だつたタスクがより優先レベルが高い割込みが
生じたために中断させられている状態を示す。従
つて、実行ビツトにフラグ1が立つていたらステ
ツプ314にジヤンプし、中断タスクを再開する。 一方、実行ビツトにフラグ1が立つていない即
ち実行表示フラグがリセツトされている場合には
ステツプ304に移行し、レベルlに起動待ちタス
クがあるか否かが判断される。即ち、レベルlの
起動ビツトを対応するタスクの実行優先度の高い
順、即ちQ0、Q1、Q2の順に検索する。タスクレ
ベルlに属する起動ビツトにフラグ1が立つてい
ない場合はステツプ306に移行し、タスクレベル
の更新が行われる。即ちタスクレベルlは+1イ
ンクリメントされl+1とする。ステツプ306で
タスクレベルの更新が行われるとステツプ308に
移行しタスクレベルの全レベルがチエツクされた
か否かが判断される。全レベルのチエツクが行わ
れていない、即ちl=2でない場合にはステツプ
302に戻り同様に上記手順で処理が行われる。ス
テツプ308でタスクレベルの全レベルがチエツク
されている場合にはステツプ310に移行し、割込
み解除が行われる。即ち、ステツプ302乃至ステ
ツプ308までの処理期間中は割込みを禁止してい
るのでこのステツプで割込み解除が為される。そ
して次のステツプ312で次の割込みを待つ。 次に前記ステツプ304でタスクレベルlに起動
待ちタスクがある場合、即ちタスクレベルlに属
する起動ビツトにフラグ1が立つている場合には
ステツプ400に移行する。ステツプ400及び402の
ループでタスクレベルlのどの起動ビツトにフラ
グ1が立つているか対応する優先実行度の高いレ
ベルの順に即ちQ0、Q1、Q2の順で検索する。該
当する起動ビツトを割出したらステツプ404に移
行し、ステツプ404ではそのフラグの立つている
起動ビツトをリセツトし、その該当タスクレベル
のlの実行ビツト(以下Rビツト)にフラグ1を
立てる。更にステツプ406では起動タスク番号の
割出しを行いステツプ408で第7図に示した
RAMに設けられたスタートアドレステーブルに
より該当する起動タスクのスタートアドレス情報
を取り出す。 次にステツプ410では該当起動タスクを実行す
るか否かの判断が行われる。ここでは取り出した
スタートアドレス情報が特定の値例えば0であれ
ば該当タスクの実行は行わなくてよいと判断され
る。この判断ステツプはエンジン制御を行う前記
タスク群の内各車種により選択的に特定のタスク
のみの機能を持たせるのに必要なものである。ス
テツプ410で該当タスクの実行が停止(実行禁止)
であると判断された場合にはステツプ414に移行
し、該当タスクレベルlのRビツトをリセツトす
る。そして更にステツプ302に戻りタスクレベル
lは中断中であるか否かが判断される。これは同
一タスクレベルl中に複数の起動ビツトにフラグ
が立つている場合があり得るのでステツプ414で
Rビツトをリセツトした後ステツプ302に移行す
るように構成されている。 一方ステツプ410で該当タスクの実行が停止で
ない場合即ち実行する場合にはステツプ412へ移
行し該当タスクへジヤンプし、タスクの実行が行
われる。 次に第10図はマクロ処理プログラム228の
処理フローを示す図である。このプログラムは終
了タスクを見つけるためのステツプ562と564から
成る。このステツプ562と564で先ずタスクレベル
の0より検索し終了したタスクレベルを見つけ
る。これによりステツプ568へ進みここで終了し
たタスクのタスク制御ブロツクの7ビツト目の実
行(RUN)フラグをリセツトする。これにより
そのタスクの実行が完全に終わつた事になる。そ
して再びタスクデイスパツチヤ208に戻り次の
実行タスクが決定される。 次にタスクデイスパツチヤ208によりタスク
優先制御が行われる場合のタスクの実行と中断の
様子を第11図に基づき説明する。ここで起動要
求Nnoに於けるmはタスクレベルを表わし、nは
タスクレベルm中に於ける優先度の順位を表わす
ものとする。今CPUは管理プログラムOSを実行
していたとすると、この管理プログラムOSの実
行中に起動要求N21が発生した場合には時刻T1で
起動要求N21に該当するタスク、即ちタスク6の
実行が開始される。ここでタスク6の実行中に時
刻T2でより実行優先度の高いタスクの起動要求
N01が生じた場合には管理プログラムOSに実行
が移り既に述べた所定の処理を行つた後に時刻
T3で起動要求N01に該当するタスク、即ちタスク
0の実行が開始される。このタスク0の実行中に
更に時刻T4で起動要求N11が入つた場合には一
旦、管理プログラムOSに実行が移り所定の処理
が行われた後再び時刻T5で中断されていたタス
ク0の実行が再開される。そしてタスク0の実行
が時刻T6で終了すると再び管理プログラムOSに
実行が移りここでマクロ処理プログラム228に
よりタスクデイスパツチヤ208へタスク0の実
行終了報告がなされ時刻T7で再び起動待ちにな
つていた起動要求N11に該当するタスク3の実行
が開始される。このタスク3の実行中時刻T8で
同じタスクレベル1のより優先度の低い起動要求
N12が入つた場合にはタスク3の実行は一旦中断
され実行は管理プログラムOSに移り所定の処理
が為された後、時刻T9でタスク3の実行が再開
される。そして時刻T10でタスク3の実行が終了
するとCPUの実行は管理プログラムOSに移り前
記マクロ処理プログラム228によりタスクデイ
スパツチヤ208へタスク3の実行終了報告が為
され、次いで時刻T11でより優先レベルの低い起
動要求N12に該当するタスク4の実行が開始さ
れ、時刻T12でタスク4の実行が終了すると実行
は管理プログラムOSに移り所定の処理が為され
た後、今まで中断されていた起動要求N21に該当
するタスク6の実行が時刻T13から再開される。 以上の様にしてタスクの優先制御が行われる。 タスクの優先制御に於ける状態遷移を第12図
に示す。Idle状態は起動待ちの状態であり、タス
クにまだ起動要求が出されていない。次に起動要
求が出されるとタスク制御ブロツクの起動ビツト
にフラグが立ち、起動が必要ということが表示さ
れる。Idle状態からQueue状態へ移動する時間は
各タスクのレベルにより定まつている。更に
Queue状態になつても実行される順序は優先度に
より定まる。そのタスクが実行状態に入るのは管
理プログラムOSの内のタスクデイスパツチヤ2
08でタスク制御ブロツクの起動ビツトのフラグ
がリセツトされ、Rビツト(7ビツト目)にフラ
グが立つてからである。これによりタスクの実行
が始められる。この状態がRUN状態である。そ
して実行が終るとタスク制御ブロツクのRビツト
のフラグがクリアされ、終了報告を終了する。こ
れによりRUN状態は終り、再びIdle状態となり
次の起動要求が出るのを待つ。しかし、タスクの
実行中即ちRUN中に割込みIRQが発生すると、
そのタスクは実行を中断しなければならない。こ
のためCPUの内容が待避され、実行が中断する。
この状態がReady状態である。次にこのタスクが
再び実行される状態になると待避エリアより、待
避していた内容を再びCPUへ戻し、実行が再開
される。つまりReady状態から再びRUN状態へ
戻る。この様に各レベルプログラムは第12図の
4つの状態を繰り返す。第12図は代表的な流れ
であるがReady状態でタスク制御ブロツクの起動
ビツトにフラグが立つ可能性がある。これは例え
ば起動中断中にそのタスクの次の起動要求タイミ
ングになつてしまつた場合である。この時にはR
ビツトのフラグが優先されて先ず、中断中のタス
クを終了させる。これによりRビツトのフラグが
消え、起動ビツトのフラグによりIdle状態を通ら
ずにQueue状態となる。 この様にタスク0〜8は各々第12図の何れか
の状態にある。 次に第13図は第5図のプログラムシステムの
具体的実施例を示している。図に於いて管理プロ
グラムOSはイニシヤル処理プログラム202、
割込み処理プログラム206、タスクデイスパツ
チヤ208及びマクロ処理プログラム228より
成る。 割込み処理プログラム206には各種の割込み
処理プログラムがあり、イニシヤル割込み処理
(以下INTL割込み処理という)602はエンジ
ン回転に同期して発生するイニシヤル割込み信号
によつて、エンジン1回転当たりエンジン気筒数
の半分、即ち4気筒なら2回イニシヤル割込みが
発生する。このイニシヤル割込みによつてEGIタ
スク612で計算した燃料の噴射時間を入出力イ
ンターフエイス回路108のEGIレジスタに設定
する。AD変換割込み処理604は2種類あり1
つはAD変換器1割込み(以下ADC1と略す)及
びAD変換器2割込み(以下ADC2と略す)であ
る。AD変換器1は8ビツトの精度を有し、電源
電圧、冷却水温度、吸気温度及び使用調整などの
入力に用いられ、マルチプレクサ120に対する
入力ポイントの指定を行うと同時に変換を開始
し、変換終了後にADC1割込みを発生する。な
お本割込みはクランキング前にのみ使用する。又
AD変換器128は空気流量の入力に用いられ変
換終了後にADC2割込みを発生する。なお、本
割込みもクランキング前にのみ使用する。 次にインターバル割込み処理プログラム(以下
INTV割込み処理プログラムと示す。)606で
はINTV割込み信号はINTVレジスタに設定した
時間例えば10ms毎に発生し、一定周期で起動す
べきタスクの時間監視用基本信号として用いられ
る。本割込み信号によつて、ソフトタイマの更新
を行い、規定周期に達したタスクを起動する。更
にエンスト割込み処理プログラム(以下ENST割
込み処理プログラムと記す。)608ではエンジ
ンのストツプ状態を検出するもので、INTL割込
み信号を検出すると、計数を開始し所定時間例え
ば1秒以内に次にINTL割込み信号を検出できな
かつた時、ENST割込みが発生する。そして
ENST割込みが3回、例えば3秒経過しても
INTL割込み信号が検出できなかつた場合にエン
ストが起つたものと判断し点火コイルへの通電及
び燃料ポンプの停止を行う。これらの処理の後ス
タータスイツチ152がオンするまで待機する。
上記割込み要因に対する処理概要を表1に示す。
に具体的にはマイクロコンピユータを使用したエ
ンジン制御装置に関する。 最近ではマイクロコンピユータによりエンジン
の総合的制御を行うことが実施されつつある。こ
の例は、例えば特開昭50−90826号公報に開示さ
れている。マイクロコンピユータによりエンジン
の総合的制御を高精度で行うにはソフトウエアと
してはエンジンの運転状況に応じて複数の、起動
周期の異なるプログラム(以下、タスクという。)
群の起動、停止の管理が十分に行われるように構
成されることが要請される。 しかしながら現在の処、上記のようなマイクロ
コンピユータによるエンジンの総合的制御を行う
ものにおいては上記タスク群の管理は粗雑なもの
であり、特にエンジンの過渡的運転状態、即ちエ
ンジン始動時、アイドル時または加速運転時には
円滑なタスクの引き継ぎを行うことが不可能であ
る為に自動車において要請される、例えば排気ガ
ス対策等に合致したエンジン制御が行われない欠
点がある。 また、タスクの優先制御にあつても、特開昭53
−40105号公報や特開昭54−58116号公報等に提案
されているように、タスクを優先度に基づいて複
数のタスクレベル(優先レベル)に分類し、割込
優先制御はタスクレベル単位で一律に行なうよう
にしている。しかし、この方法によれば、1つの
タスクレベルに属する複数のタスクが一括して実
行されることになるので、例えば起動周期が異な
るタスクを同一のタスクレベルに含ませることが
できない。このため、エンジンの制御特性に応じ
て要求される各タスクの起動周期と優先度にそれ
ぞれ対応させたきめ細かなタスク管理ができない
という問題があつた。 本発明の目的は、エンジン制御の状態に応じて
実行が必要なタスクの追加、削除を容易に行え、
またタスクの起動周期と優先度とにそれぞれ対応
させた優先制御を行なえる構成とし、エンジンの
過渡的運転状態における高精度のエンジン制御を
可能とするエンジン制御装置を提供することにあ
る。 本発明は、上記目的を達成するため、第18図
に示した構成図のように、入力されるインターバ
ル割込要求を含む複数の割込要求をそれぞれ一旦
蓄積する手段と、該手段の出力端に設けられ与え
られる割込禁止指令に応じて前記割込要求の発生
を阻止するゲート手段とを有してなる割込要求発
生手段801と、 エンジンの制御機能毎に分類され、それぞれ所
定の起動周期が設定されてなり、かつ起動周期の
異同に拘らず優先度に対応させて複数のタスクレ
ベルに区分されてなる複数のタスクが格納された
メモリ802と、 前記割込要求発生手段801から出力されるイ
ンターバル割込要求に基づいて計数された前記各
タスクの起動周期に係る経過時間データが格納さ
れるソフトタイマテーブル803と、 前記タスクの中でエンジンの状態等に基づいて
与えられる実行を禁止したいタスクに対する実行
禁止指令が格納されるタスク単位実行禁止テーブ
ル804と、 前記割込要求発生手段801から出力されるイ
ンターバル割込要求により実行中のタスクの実行
を中断させ、前記ソフトタイマテーブルの経過時
間データに基づいて各タスクが起動周期に達した
か否かを判定し、起動周期に達したタスクの起動
要求フラグをタスク制御テーブル805に立てる
割込処理手段806と、 前記タスク制御テーブル805を検索し中断さ
れたタスクを含め起動要求フラグが立てられてい
るタスクの中で優先度の高い順にしたがつてタス
クを選択して当該タスクの実行指令を出力するタ
スクデイスパツチヤ807と、 前記タスク単位実行禁止テーブル804に実行
禁止指令が格納されているタスクについて、前記
割込処理手段806におけるタスクの起動要求フ
ラグを立てる処理と前記タスクデイスパツチヤ8
07におけるタスクの実行指令の出力のいずれか
一方を禁止するタスク単位実行禁止手段808
と、 前記タスクデイスパツチヤ807から出力され
る実行指令に対応するタスクを前記メモリ802
から読み出し、タスクの内容に従つてエンジンの
制御演算を実行するタスク実行手段809と、 を備えてなるエンジン制御装置としたことにあ
る。 なお、前記タスク単位実行禁止手段808は前
記割込処理手段806又はタスクデイスパツチヤ
807に一体的に組込むことができる。 このように構成されることから、割込要求発生
手段801から出力されるインターバル割込要求
に係る各タスクの実行は、まず割込処理手段80
6によりソフトタイマテーブル803の起動周期
に基づき管理される。この管理はタスク制御テー
ブル805に起動要求フラグを立てることによつ
てなされる。次にタスクデイスパツチヤ807に
よりタスク制御テーブル805の内容が検索さ
れ、起動要求フラグが立てられているタスク相互
間での優先制御がなされる。 そして、タスク実行手段809はタスクデイス
パツチヤ807から出力される実行指令に基づ
き、メモリ802から対応するタスクを読出して
エンジンの制御演算を実行する。したがつて、ソ
フトタイマテーブル803において起動周期に達
していないタスクは、同一のタスクレベルに属し
ていても実行されることがないことから、不必要
なタスクの実行をすることがなくなるばかりでな
く、他の優先度の低いタスクにとつては優先割込
みによる中断時間が短縮されることになる。この
結果、エンジンの制御機能等の要求に応じて、自
由にタスクの起動周期と優先制御を組立てること
ができるので、きめ細かな効率のよい制御を実現
でき、これにより過渡状態の制御を高精度化でき
る。 また、タスク単位実行禁止テーブル804の内
容により、タスク単位実行禁止手段808を介し
て所定のタスクの実行が禁止される。したがつ
て、実行を禁止又は再開したいタスクをソフト的
に簡単に指定できることから、エンジンの状態等
に応じてタスク単位で追加、削除を行なうことが
可能になり、これにより一層エンジンの状態に対
応したきめ細かな効率のよい制御を実現できるこ
とになる。 以下、本発明を図面に示した実施例に基づき詳
細に説明する。 第1図にはエンジン系統全体の制御装置が示さ
れている。図において、吸入空気はエアクリーナ
2、スロツトルチヤンバ4、吸気管6を通り、シ
リンダ8へ供給される。シリンダ8で燃焼したガ
スは、シリンダ8から排気管10を通り、大気中
へ排出される。 スロツトルチヤンバ4には、燃料を噴射するた
めのインジエクタ12が設けられており、このイ
ンジエクタ12から噴出した燃料はスロツトルチ
ヤンバ4の空気通路内で霧化され、吸入空気と混
合して混合気を形成し、この混合気は吸気管6を
通つて、吸気弁20の開弁により、シリンダ8の
燃焼室へ供給される。 インジエクタ12の出口近傍には絞り弁14,
16が設けられている。絞り弁14は、アクセル
ペタルと機械的に連動するように構成され、運転
者により駆動される。一方、絞り弁16はダイヤ
フラム18により駆動されるように配置され、空
気流量が小の領域で全閉状態となり、空気流量が
増大するにつれてダイヤフラム18への負圧が増
大することにより絞り弁16は開き始め、吸入抵
抗の増大を抑止する。 スロツトルチヤンバ4の絞り弁14,16の上
流には空気通路22が設けられ、この空気通路2
2には熱線式空気流量計を構成する電気的発熱体
24が配設され、空気流速と発熱体の伝熱量との
関係から定まる空気流速に応じて変化する電気信
号が取り出される。発熱体24は空気通路22内
に設けられているので、シリンダ8のバツクフア
イア時に生じる高温ガスから保護されると共に、
吸入空気中のごみなどによつて汚染されることか
らも保護される。この空気通路22の出口はベン
チユリの最狭部近傍に開口され、その入口はベン
チユリの上流側に開口されている。 インジエクタ12に供給される燃料は、燃料タ
ンク30から、フユーエルポンプ32、フユーエ
ルダンパ34及びフイルタ36を介して燃圧レギ
ユレータ38へ供給される。一方、燃圧レギユレ
ータ38からはインジエクタ12へパイプ40を
介して加圧燃料が供給され、そのインジエクタ1
2から燃料が噴射される吸気管6の圧力と上記イ
ンジエクタ12への燃量圧の差が常に一定になる
ように、燃圧レギユレータ38から燃料タンク3
0へリターンパイプ42を介して燃料が戻される
ようになつている。 吸気弁20から吸入された混合気はピストン5
0により圧縮され、点火プラグ52によるスパー
クにより燃焼し、この燃焼は運動エネルギに変換
される。シリンダ8は冷却水54により冷却さ
れ、この冷却水の温度は水温センサ56により計
測され、この計測値はエンジン温度として利用さ
れる。点火プラグ52には点火コイル58より点
火タイミングに合わせて高電圧が供給される。 また、図示しないクランク軸にはエンジンの回
転に応じて基準クランク角毎におよび一定角度
(例えば0.5度)毎に基準角信号およびポジシヨン
信号を出すクランク角センサが設けられている。 このクランク角センサの出力、水温センサ56
の出力56A及び発熱体24からの電気信号はマ
イクロコンピユータなどからなる制御回路64に
入力され、制御回路64で演算処理され、この制
御回路64の出力によつてインジエクタ12及び
点火コイル58が駆動される。 以上の構成に基づき制御されるエンジン系統に
おいて、スロツトルチヤンバ4にはスロツトルの
絞り弁16を跨いで吸気管6に連通するバイパス
26が設けられ、このバイパス26には開閉制御
されるバイパスバルブ62が設けられている。こ
のバイパスバルブ62の駆動部には、前記制御回
路64の制御入力が供給され、開閉制御されるよ
うになつている。 このバイパスバルブ62は絞り弁16を迂回し
て設けられたバイパス26に臨ませられ、パルス
電流によつて開閉制御がなされる。このバイパス
バルブ62の弁のリフト量によりバイパス26の
断面積を変更するもので、このリフト量は制御回
路64の出力によつて駆動系が駆動され制御され
る。即ち、制御回路64においては駆動系の制御
のため開閉周期信号が発生され、駆動系はこの開
閉周期信号によつてバイパスバルブ62のリフト
量を調節するための制御信号をバイパスバルブ6
2の駆動部に付与するものである。 第2図は第1図の点火装置の説明図であり、増
幅器68を介してパワー・トランジスタ72へパ
ルス電流が供給され、この電流によりトランジス
タ72はONする。これによりバツテリ66より
点火コイル58へ一次コイル電流が流れる。この
パルス電流の立ち下がりでトランジスタ72は遮
断状態となり、点火コイル58の2次コイルに高
電圧を発生する。 この高電圧は配電器70を介してエンジンの各
シリンダにある点火プラグ52のそれぞれにエン
ジン回転に同期して高電圧を配電する。 第3図は排気ガス環流(以下EGRと記す)シ
ステムを説明するためのもので、負圧源80の一
定負圧が制圧弁84を介して制御弁86へ加えて
いる。制圧弁84はトランジスタ90に加えられ
る繰返しパルスのONデユーテイ比率に応じ、負
圧源の一定負圧を大気88へ開放に対する比率を
制御し、制御弁86への負圧の印加状態を制御す
る。従つて制御弁86へ加えられる負圧はトラン
ジスタ90のONデユーテイ比率で定まる。この
制圧弁84の制御負圧により排気管10から吸気
管6へのEGR量が制御される。 第4図は制御システムの全体構成図である。
CPU102とリード・オンリ・メモリ104
(以下ROMと記す。)とランダム・アクセス・メ
モリ106(以下RAMと記す。)と入出力回路
108とから構成されている。上記CPU102
はROM104内に記憶された各種のプログラム
により、入出力回路108からの入力データを演
算し、その演算結果を再び入出力回路108へ戻
す。これらの演算に必要な中間的な記憶はRAM
106を使用する。CPU102、ROM104、
RAM106、入出力回路108間の各種データ
のやり取りはデータ・バスとコントロール・バス
とアドレス・バスからなるバスライン110によ
つて行われる。 入出力回路108には第1のアナログ・デイジ
タル・コンバータ(以下ADC1と記す)と第2
のアナログ・デイジタル・コンバータ(以下
ADC2と記す)と角度信号処理回路126と1
ビツト情報を入出力する為のデイスクリート入出
力回路(以下DIOと記す)との入力手段を持つ。 ADC1にはバツテリ電圧検出センサ132
(以下VBSと記す)と冷却水温センサ56(以下
TWSと記す)と大気温センサ112(以下TAS
と記す)と調整電圧発生器114(以下VRSと
記す)とスロツトル角センサ116(以下θTHS
と記す)とλセンサ118(以下λSと記す)と
の出力がマルチ・プレクサ120(以下MPXと
記す)に加えられ、MPX120によりこの内の
1つを選択してアナログ・デイジタル・変換回路
122(以下ADCと記す)へ入力する。ADC1
22の出力であるデイジタル値はレジスタ124
(以下REGと記す)に保持される。 また流量センサ24(以下AFSと記す)は
ADC2へ入力され、アナログ・デイジタル・変
換回路128(以下ADCと記す)を介してデイ
ジタル変換されレジスタ130(以下REGと記
す)へセツトされる。 角度センサ146(以下ANGSと記す)から
は基準クランク角例えば180度クランク角を示す
信号(以下REFと記す)と微少角例えば1度ク
ランク角を示す信号(以下POSと記す)とが出
力され、角度信号処理回路126へ加えられ、こ
こで波形整形される。 DIOにはアイドル・スイツチ148(以下
IDLE−SWと記す)とトツプ・ギヤ・スイツチ
150(以下TOP−SWと記す)とスタータ・ス
イツチ152(以下START−SWと記す)とが
入力される。 次にCPUの演算結果に基づくパルス出力回路
および制御対象について説明する。インジエクタ
制御回路134(INJCと記す)は演算結果のデ
イジタル値をパルス出力に変換する回路である。
従つて燃料噴射量に相当したパルス幅を有するパ
ルスがINJC134で作られ、ANDゲート136
を介してインジエクタ12へ印加される。 点火パルス発生回路138(以下IGNCと記
す)は点火時期をセツトするレジスタ(ADVと
記す)と点火コイルの1次電流通電開始時間をセ
ツトするレジスタ(DWLと記す)とを有し、
CPUよりこれらデータがセツトされる。セツト
されたデータに基づいてパルスを発生し、第2図
に詳述した増幅器68へANDゲート140を介
してこのパルスを加える。 バイパスバルブ62の開弁率は制御回路(以下
ISCCと記す)142からANDゲート144を介
して加えられるパルスによつて制御される。
ISCC142はパルス幅をセツトするレジスタ
ISCDと繰返しパルス周期をセツトするレジスタ
ISCPとを持つている。 第3図に示したEGR制御弁86を制御するト
ランジスタ90を制御するEGR量制御パルス発
生回路154(以下EGRCと記す)にはパルスの
デユーテイを表わす値をセツトするレジスタ
EGRDとパルスの繰返し周期を表わす値をセツト
するレジスタEGRPとを有している。このEGRC
の出力パルスはANDゲート156を介してトラ
ンジスタ90に加えられる。 また1ビツトの入出力信号は回路DIOにより制
御される。入力信号としてはIDLE−SW信号、
TOP−SW信号、START−SW信号がある。ま
た出力信号としては燃料ポンプを駆動するための
パルス出力信号がある。このDIOは端子を入力端
子として使用するか、出力端子として使用するか
を決定するためのレジスタDDRと、出力データ
をラツチするためのレジスタDOUTとが設けら
れている。 レジスタ160は入出力回路108内部の色々
な状態を指令する命令を保持するレジスタ(以下
MODと記す)であり、例えばこのレジスタに命
令をセツトすることにより、ANDゲート136,
140,144,156を総てターンオンさせた
り、ターンオフさせたりする。このようにMOD
レジスタ160に命令をセツトすることにより、
INJCやIGNC、ISCCの出力の停止や起動を制御
できる。 第5図は第4図の制御回路のプログラムシステ
ムの基本構成を示す図である。 図においてイニシヤル処理プログラム202、
割込処理プログラム206、マクロ処理プログラ
ム228およびタスクデイスパツチヤ208はタ
スク群を管理するための管理プログラムである。
イニシヤル処理プログラム202はマイクロコン
ピユータを作動させるための前処理を行うための
プログラムであり例えば、RAM106の記憶内
容をクリアしたり入出力インターフエイス回路1
08のレジスタ類の初期値を設定したり、さらに
はエンジン制御を行うのに必要な前処理を行うた
めの入力情報例えば冷却水温TW、バツテリー電
圧等のデータを取込むための処理を行う。また、
割込処理プログラム206は各種の割込みを受け
付け、その割込要因を分析し、タスク群210な
いし226の内の必要なタスクを起動させるため
の起動要求をタスクデイスパツチヤ208に出
す。割込要因には後述するごとく電源電圧、冷却
水温度等の入力情報をAD変換終了後に発生する
AD変換割込(ADC)、エンジン回転に同期して
発生するイニシヤル割込(INTL)、又設定され
た一定時間毎に、例えば10ms毎に発生するイン
ターバル割込(INTV)、更にはエンジンのスト
ツプ状態を検出し、発生するエンスト割込
(ENST)等がある。 タスク群210乃至226の各タスクには優先
順位を表わすタスク番号が割り当てられており、
各タスクはタスクレベル0乃至2の何れかのタス
クレベルに属する。即ち、タスク0乃至タスク2
はタスクレベル0に、タスク3乃至タスク5はタ
スクレベル1に、更にタスク6乃至タスク8はタ
スクレベル2に各々属する。 タスクデイスパツチヤ208は前記各種割込の
起動要求を受け付けこれらの起動要求に対応する
各種タスクに付けられた優先順位に基づきCPU
の占有時間を割り当てる。 ここでタスクデイスパツチヤ208によるタス
クの優先制御は下記の方法に拠る。(1)優先度の低
いタスクを中断し、優先度の高いタスクへの実行
権の移行はタスクレベル間のみで行う。なおここ
ではレベル0が最も優先度が高いものとする。(2)
同じタスクレベル内で、現在実行中又は中断中の
タスクがある場合は、該タスクが最も優先度が高
く該タスクが終了するまで他のタスクは動作でき
ない。(3)同じタスクレベル内で複数のタスクに起
動要求がある場合には、タスク番号が小さい程優
先度が高いものとする。タスクデイスパツチヤ2
08の処理内容は後述するが本発明では上記優先
制御を行うためにタスク単位にRAMにソフトタ
イマを設け、又タスクレベル単位にタスクを管理
する制御ブロツクをRAM中に設定するように構
成している。そして上記各タスクの実行終了毎に
そのタスクの実行終了報告をマクロ処理プログラ
ム228によりタスクデイスパツチヤ208に行
うようにしている。 次にタスクデイスパツチヤ208の処理内容に
ついて第6図乃至第12図に基づき説明する。第
6図はタスクデイスパツチヤ208の管理する
RAMに設けられたタスク制御ブロツクが示され
ている。このタスク制御ブロツクがタスクレベル
の数だけ設けられており本実施例ではタスクレベ
ル0乃至2の3つ設けられている。各制御ブロツ
クには各々8ビツトが割り当てられ、その内0乃
至2ビツト目(Q0〜Q2)までが起動要求タスク
表示を行う起動ビツトであり、7ビツト目(R)
が同一タスクレベル中の何れかのタスクが現在実
行中であるか又は中断中であるかを示す実行ビツ
トを表わす。そして前記起動ビツトQ0乃至Q2は
それぞれ各タスクレベル中で実行優先度の高い順
に配列されており、例えば第5図中でタスク4に
該当する起動ビツトはタスクレベル1のQ1であ
る。ここでタスクの起動要求があつた場合には起
動ビツトの何れかにフラグが立てられ、一方タス
クデイスパツチヤ208は出された起動要求を高
いレベルのタスクに該当する起動ビツトより順に
検索し、出された起動要求に該当するフラグをリ
セツトすると共に実行ビツトにフラグ1を立て、
該当タスクを起動させるための処理を行う。 第7図はタスクデイスパツチヤ208の管理す
るRAM106に設けられたスタートアドレステ
ーブルである。スタートアドレスSA0乃至SA8
は第5図に示したタスク群210乃至226の各
タスク0乃至8に該当するスタートアドレスを示
す。各スタートアドレス情報には16ビツトが割り
当てられ、これらのスタートアドレス情報は後述
する如くタスクデイスパツチヤ208により起動
要求のあつた該当タスクを起動するのに使用され
る。 次に第8図乃至第9図にタスクデイスパツチヤ
の処理フローを示す。第8図に於いてステツプ
300でタスクデイスパツチヤの処理が開始される
とステツプ302でタスクレベルlに属するタスク
が実行中断中か否かが判断される。即ち、実行ビ
ツトに1が立つていたらマクロ処理プログラム2
28により未だタスク終了報告がタスクデイスパ
ツチヤ208に出されていない状態であり、実行
中だつたタスクがより優先レベルが高い割込みが
生じたために中断させられている状態を示す。従
つて、実行ビツトにフラグ1が立つていたらステ
ツプ314にジヤンプし、中断タスクを再開する。 一方、実行ビツトにフラグ1が立つていない即
ち実行表示フラグがリセツトされている場合には
ステツプ304に移行し、レベルlに起動待ちタス
クがあるか否かが判断される。即ち、レベルlの
起動ビツトを対応するタスクの実行優先度の高い
順、即ちQ0、Q1、Q2の順に検索する。タスクレ
ベルlに属する起動ビツトにフラグ1が立つてい
ない場合はステツプ306に移行し、タスクレベル
の更新が行われる。即ちタスクレベルlは+1イ
ンクリメントされl+1とする。ステツプ306で
タスクレベルの更新が行われるとステツプ308に
移行しタスクレベルの全レベルがチエツクされた
か否かが判断される。全レベルのチエツクが行わ
れていない、即ちl=2でない場合にはステツプ
302に戻り同様に上記手順で処理が行われる。ス
テツプ308でタスクレベルの全レベルがチエツク
されている場合にはステツプ310に移行し、割込
み解除が行われる。即ち、ステツプ302乃至ステ
ツプ308までの処理期間中は割込みを禁止してい
るのでこのステツプで割込み解除が為される。そ
して次のステツプ312で次の割込みを待つ。 次に前記ステツプ304でタスクレベルlに起動
待ちタスクがある場合、即ちタスクレベルlに属
する起動ビツトにフラグ1が立つている場合には
ステツプ400に移行する。ステツプ400及び402の
ループでタスクレベルlのどの起動ビツトにフラ
グ1が立つているか対応する優先実行度の高いレ
ベルの順に即ちQ0、Q1、Q2の順で検索する。該
当する起動ビツトを割出したらステツプ404に移
行し、ステツプ404ではそのフラグの立つている
起動ビツトをリセツトし、その該当タスクレベル
のlの実行ビツト(以下Rビツト)にフラグ1を
立てる。更にステツプ406では起動タスク番号の
割出しを行いステツプ408で第7図に示した
RAMに設けられたスタートアドレステーブルに
より該当する起動タスクのスタートアドレス情報
を取り出す。 次にステツプ410では該当起動タスクを実行す
るか否かの判断が行われる。ここでは取り出した
スタートアドレス情報が特定の値例えば0であれ
ば該当タスクの実行は行わなくてよいと判断され
る。この判断ステツプはエンジン制御を行う前記
タスク群の内各車種により選択的に特定のタスク
のみの機能を持たせるのに必要なものである。ス
テツプ410で該当タスクの実行が停止(実行禁止)
であると判断された場合にはステツプ414に移行
し、該当タスクレベルlのRビツトをリセツトす
る。そして更にステツプ302に戻りタスクレベル
lは中断中であるか否かが判断される。これは同
一タスクレベルl中に複数の起動ビツトにフラグ
が立つている場合があり得るのでステツプ414で
Rビツトをリセツトした後ステツプ302に移行す
るように構成されている。 一方ステツプ410で該当タスクの実行が停止で
ない場合即ち実行する場合にはステツプ412へ移
行し該当タスクへジヤンプし、タスクの実行が行
われる。 次に第10図はマクロ処理プログラム228の
処理フローを示す図である。このプログラムは終
了タスクを見つけるためのステツプ562と564から
成る。このステツプ562と564で先ずタスクレベル
の0より検索し終了したタスクレベルを見つけ
る。これによりステツプ568へ進みここで終了し
たタスクのタスク制御ブロツクの7ビツト目の実
行(RUN)フラグをリセツトする。これにより
そのタスクの実行が完全に終わつた事になる。そ
して再びタスクデイスパツチヤ208に戻り次の
実行タスクが決定される。 次にタスクデイスパツチヤ208によりタスク
優先制御が行われる場合のタスクの実行と中断の
様子を第11図に基づき説明する。ここで起動要
求Nnoに於けるmはタスクレベルを表わし、nは
タスクレベルm中に於ける優先度の順位を表わす
ものとする。今CPUは管理プログラムOSを実行
していたとすると、この管理プログラムOSの実
行中に起動要求N21が発生した場合には時刻T1で
起動要求N21に該当するタスク、即ちタスク6の
実行が開始される。ここでタスク6の実行中に時
刻T2でより実行優先度の高いタスクの起動要求
N01が生じた場合には管理プログラムOSに実行
が移り既に述べた所定の処理を行つた後に時刻
T3で起動要求N01に該当するタスク、即ちタスク
0の実行が開始される。このタスク0の実行中に
更に時刻T4で起動要求N11が入つた場合には一
旦、管理プログラムOSに実行が移り所定の処理
が行われた後再び時刻T5で中断されていたタス
ク0の実行が再開される。そしてタスク0の実行
が時刻T6で終了すると再び管理プログラムOSに
実行が移りここでマクロ処理プログラム228に
よりタスクデイスパツチヤ208へタスク0の実
行終了報告がなされ時刻T7で再び起動待ちにな
つていた起動要求N11に該当するタスク3の実行
が開始される。このタスク3の実行中時刻T8で
同じタスクレベル1のより優先度の低い起動要求
N12が入つた場合にはタスク3の実行は一旦中断
され実行は管理プログラムOSに移り所定の処理
が為された後、時刻T9でタスク3の実行が再開
される。そして時刻T10でタスク3の実行が終了
するとCPUの実行は管理プログラムOSに移り前
記マクロ処理プログラム228によりタスクデイ
スパツチヤ208へタスク3の実行終了報告が為
され、次いで時刻T11でより優先レベルの低い起
動要求N12に該当するタスク4の実行が開始さ
れ、時刻T12でタスク4の実行が終了すると実行
は管理プログラムOSに移り所定の処理が為され
た後、今まで中断されていた起動要求N21に該当
するタスク6の実行が時刻T13から再開される。 以上の様にしてタスクの優先制御が行われる。 タスクの優先制御に於ける状態遷移を第12図
に示す。Idle状態は起動待ちの状態であり、タス
クにまだ起動要求が出されていない。次に起動要
求が出されるとタスク制御ブロツクの起動ビツト
にフラグが立ち、起動が必要ということが表示さ
れる。Idle状態からQueue状態へ移動する時間は
各タスクのレベルにより定まつている。更に
Queue状態になつても実行される順序は優先度に
より定まる。そのタスクが実行状態に入るのは管
理プログラムOSの内のタスクデイスパツチヤ2
08でタスク制御ブロツクの起動ビツトのフラグ
がリセツトされ、Rビツト(7ビツト目)にフラ
グが立つてからである。これによりタスクの実行
が始められる。この状態がRUN状態である。そ
して実行が終るとタスク制御ブロツクのRビツト
のフラグがクリアされ、終了報告を終了する。こ
れによりRUN状態は終り、再びIdle状態となり
次の起動要求が出るのを待つ。しかし、タスクの
実行中即ちRUN中に割込みIRQが発生すると、
そのタスクは実行を中断しなければならない。こ
のためCPUの内容が待避され、実行が中断する。
この状態がReady状態である。次にこのタスクが
再び実行される状態になると待避エリアより、待
避していた内容を再びCPUへ戻し、実行が再開
される。つまりReady状態から再びRUN状態へ
戻る。この様に各レベルプログラムは第12図の
4つの状態を繰り返す。第12図は代表的な流れ
であるがReady状態でタスク制御ブロツクの起動
ビツトにフラグが立つ可能性がある。これは例え
ば起動中断中にそのタスクの次の起動要求タイミ
ングになつてしまつた場合である。この時にはR
ビツトのフラグが優先されて先ず、中断中のタス
クを終了させる。これによりRビツトのフラグが
消え、起動ビツトのフラグによりIdle状態を通ら
ずにQueue状態となる。 この様にタスク0〜8は各々第12図の何れか
の状態にある。 次に第13図は第5図のプログラムシステムの
具体的実施例を示している。図に於いて管理プロ
グラムOSはイニシヤル処理プログラム202、
割込み処理プログラム206、タスクデイスパツ
チヤ208及びマクロ処理プログラム228より
成る。 割込み処理プログラム206には各種の割込み
処理プログラムがあり、イニシヤル割込み処理
(以下INTL割込み処理という)602はエンジ
ン回転に同期して発生するイニシヤル割込み信号
によつて、エンジン1回転当たりエンジン気筒数
の半分、即ち4気筒なら2回イニシヤル割込みが
発生する。このイニシヤル割込みによつてEGIタ
スク612で計算した燃料の噴射時間を入出力イ
ンターフエイス回路108のEGIレジスタに設定
する。AD変換割込み処理604は2種類あり1
つはAD変換器1割込み(以下ADC1と略す)及
びAD変換器2割込み(以下ADC2と略す)であ
る。AD変換器1は8ビツトの精度を有し、電源
電圧、冷却水温度、吸気温度及び使用調整などの
入力に用いられ、マルチプレクサ120に対する
入力ポイントの指定を行うと同時に変換を開始
し、変換終了後にADC1割込みを発生する。な
お本割込みはクランキング前にのみ使用する。又
AD変換器128は空気流量の入力に用いられ変
換終了後にADC2割込みを発生する。なお、本
割込みもクランキング前にのみ使用する。 次にインターバル割込み処理プログラム(以下
INTV割込み処理プログラムと示す。)606で
はINTV割込み信号はINTVレジスタに設定した
時間例えば10ms毎に発生し、一定周期で起動す
べきタスクの時間監視用基本信号として用いられ
る。本割込み信号によつて、ソフトタイマの更新
を行い、規定周期に達したタスクを起動する。更
にエンスト割込み処理プログラム(以下ENST割
込み処理プログラムと記す。)608ではエンジ
ンのストツプ状態を検出するもので、INTL割込
み信号を検出すると、計数を開始し所定時間例え
ば1秒以内に次にINTL割込み信号を検出できな
かつた時、ENST割込みが発生する。そして
ENST割込みが3回、例えば3秒経過しても
INTL割込み信号が検出できなかつた場合にエン
ストが起つたものと判断し点火コイルへの通電及
び燃料ポンプの停止を行う。これらの処理の後ス
タータスイツチ152がオンするまで待機する。
上記割込み要因に対する処理概要を表1に示す。
【表】
イニシヤル処理プログラム202及びマクロ処
理プログラム228については記述の通りの処理
を行う。 上記各種の割込みにより起動されるタスク群は
次の通りである。タスクレベル0に属するタスク
としてはAD2入力タスク(以下ADIN2タスク
と記す)、燃料噴射制御タスク(以下EGIタスク
と記す)及び始動モニタタスク(MONITタスク
と言う)がある。又タスクレベル1に属するタス
クとしてはAD1入力タスク(以上ADIN1タス
クと記す)、時間係数処理タスク(以下AFSIAタ
スク)がある。更にタスクレベル2に属するタス
クとしてはアイドル回転制御タスク(以下ISCタ
スクと記す)、補正計算タスク(以下HOSEIタス
クと記す)及び始動前処理タスク(以下ISTRT
タスクと記す)がある。 上記各タスクレベルの割り当てとタスクの機能
を表2に示す。
理プログラム228については記述の通りの処理
を行う。 上記各種の割込みにより起動されるタスク群は
次の通りである。タスクレベル0に属するタスク
としてはAD2入力タスク(以下ADIN2タスク
と記す)、燃料噴射制御タスク(以下EGIタスク
と記す)及び始動モニタタスク(MONITタスク
と言う)がある。又タスクレベル1に属するタス
クとしてはAD1入力タスク(以上ADIN1タス
クと記す)、時間係数処理タスク(以下AFSIAタ
スク)がある。更にタスクレベル2に属するタス
クとしてはアイドル回転制御タスク(以下ISCタ
スクと記す)、補正計算タスク(以下HOSEIタス
クと記す)及び始動前処理タスク(以下ISTRT
タスクと記す)がある。 上記各タスクレベルの割り当てとタスクの機能
を表2に示す。
【表】
【表】
表2から明らかなように各種割込みにより起動
される各タスクの起動周期は予め定められており
これらの情報はROM104に格納されている。 以下第14図乃至第16図に基づきINTV割込
み処理について説明する。第14図はRAM10
6に設けられたソフトタイマテーブルであり、こ
のソフトタイマテーブルには各種割込みにより起
動される異なる起動周期の数だけのタイマブロツ
クが設けられている。ここでタイマブロツクとは
ROM104に格納されているタスクの起動周期
に関する時間情報が転送される記憶エリアを指し
ている。同図に於いて左端に記載されている
TMBはRAM106に於けるソフトタイマテー
ブルの先頭番地を意味する。このソフトタイマテ
ーブルの各タイマブロツクにはエンジン始動時に
ROM104より前記起動周期に関する時間情
報、即ちINTV割込みを例えば10ms毎に行う場
合にはその整数倍の値が転送され、格納される。 次に第15図にINTV割込み処理606の処理
フローを示す。同図に於いてステツプ626でプロ
グラムが起動されるとステツプ628でRAM10
6に設けられたソフトタイマテーブルのイニシヤ
ライズが行われる。即ち、インデツクスレジスタ
の内容iを0にし前記ソフトタイマテーブルの番
地TMB+0のタイマブロツクに記憶されている
残り時間Tiを調べる。ここでこの場合にはTi=
T0である。次にステツプ630で上記ステツプ628
で調べたソフトタイマが停止中であるか否かが判
断される。即ち、ソフトタイマテーブルに記憶さ
れている残り時間TiがTi=0である場合にはソフ
トタイマは停止中であると判断され、該ソフトタ
イマにより起動されるべき該当タスクは停止中で
あると判断され、ステツプ640にジヤンプし、ソ
フトタイマテーブルの更新が行われる。 一方、ソフトタイマテーブルの残り時間TiがTi
≠0である場合にはステツプ632に移行し前記タ
イマブロツクの残り時間の更新が行われる。即
ち、残り時間Tiから−1だけデイクリメントされ
る。次にステツプ634では前記タイマテーブルの
ソフトタイマが起動周期に達したか否かが判断さ
れる。即ち残り時間TiがTi=0である場合には起
動周期に達したと判断されその場合にはステツプ
636に移行する。又ソフトタイマが起動周期に達
していないと判断される場合にはステツプ640に
ジヤンプし、ソフトタイマテーブルの更新が行わ
れる。前記ソフトタイマテーブルが起動周期に達
している場合にはステツプ636でソフトタイマテ
ーブルの残り時間Tiを初期化する。即ち、ROM
104よりRAM106へ該当タスクの起動周期
の時間情報を転送する。そしてステツプ636で前
記ソフトタイマテーブルの残り時間Tiを初期化し
た後、ステツプ638でそのソフトタイマテーブル
に該当するタスクの起動要求を行う。次にステツ
プ640でソフトタイマテーブルの更新を行う。即
ち、インデツクスレジスタの内容を+1インクリ
メントする。更にステツプ642では全部のソフト
タイマテーブルをチエツクしたか否かが判断され
る。即ち、第14図に示したように本実施例では
ソフトタイマテーブルをN+1個だけ設けてある
のでインデツクスレジスタの内容iがi=N+1
である場合には全ソフトタイマテーブルのチエツ
クが完了したと判断されステツプ644でINTV割
込み処理プログラム606は終了する。一方ステ
ツプ642で全ソフトタイマテーブルがチエツクさ
れていないと判断された場合にはステツプ630に
戻り、前述と同様の処理が行われる。 以上の様にして各種の割込みに応じて該当タス
クの起動要求が出され、それに基づいて該当タス
クの実行が為されるが、表2に掲げられたタスク
群が常にすべてが実行されるのではなく、エンジ
ンの運転情報に基づいてROM104に設けられ
ている前記タスク群の起動周期に関する時間情報
を選択してRAM106のソフトタイマテーブル
中に転送し格納する。そして与えられたそのタス
クの起動周期が例えば20msであるとすれば、そ
の時間毎にタスクが起動されるがそのタスクの起
動が運転条件に応じて継続して行う必要があるも
のであれば常にそのタスクに該当するソフトタイ
マテーブルは更新して初期化される。次にエンジ
ンの運転条件に応じて各種割込みにより前記タス
ク群が起動停止される様子を第16図に示すタイ
ムチヤートにより説明する。スタータスイツチ1
52の操作によりパワーオンの状態になると
CPUが作動し、ソフトウエアフラグIST及びソフ
トウエアフラグEMに1が立てられる。ソフトウ
エアフラグISTはエンジンが始動前の状態にある
ことを示すフラグであり、ソフトウエアフラグ
EMはENST割込みを禁止するためのフラグであ
る。これらの2つのフラグによりエンジンが始動
前の状態にあるか或いは始動中か又は始動後の状
態にあるかの判別が為される。さてスタータスイ
ツチ152の操作によりパワーオンの状態になる
と先ず最初にタスクADIN1が起動され各種セン
サによりエンジンの始動に必要なデータ例えば冷
却水温度、バツテリ電圧等の入力情報がマルチプ
レクサ120を介してAD変換器122に取込ま
れ、これらのデータの一巡入力毎にタスク
HOSEIタスク補正が起動され前記入力情報に基
づき補正計算が行われる。又前記タスクADIN1
によりAD変換器122に各種センサからのデー
タの一巡入力毎にタスクISTRTが起動されエン
ジン始動中に必要な燃料噴射量の計算がなされ
る。以上の3つのタスク、即ちタスクADIN1、
タスクHOSEI及びタスクISTRTはイニシヤル処
理プログラム202により起動されるものであ
る。 スタータスイツチ152がON状態になるとタ
スクISTRTの割込み信号によりタスクADIN1、
タスクMONIT及びタスクADIN2の3つのタス
クに起動が掛けられる。即ち、これらのタスクは
スタータスイツチ152がON状態になつている
期間(エンジンのクランキング時)のみ実行され
る必要がある。この期間ではROM104から
RAM106に設けられた前記タスクにそれぞれ
該当するソフトタイマテーブルに所定の起動周期
の時間情報が転送され格納される。そしてこの期
間は前記ソフトタイマテーブルの起動周期の残り
時間Tiは初期化され起動周期の設定が繰り返し行
われる。タスクMONITはエンジン始動時の燃料
噴射量を計算するためのタスクでありエンジン始
動後は不要なタスクであるので所定の回数だけタ
スクの実行を終了したらソフトタイマの起動を停
止し、そのタスク終了時に発せられる停止信号に
より上記以外のエンジン始動後に必要なタスク群
の起動を行う。ここでタスクの停止をソフトタイ
マにより行うにはそのタスクの終了に於ける判断
時点でそのタスクが終了したことを示す信号によ
りそのタスクの該当するソフトタイマテーブルに
0を格納する、即ちソフトタイマの内容をクリア
することによりタスクの停止を行うものである。
以上の如く本実施例ではタスクの起動停止をソフ
トタイマにより簡単に行えるように構成したので
異なる起動周期を有する複数のタスクに対し能率
的且つ信頼性有る管理を行うことが可能となる。 次にIRQの発生回路を第17図に示す。レジス
タ735とカウンタ736と比較器737とフリ
ツプフロツプ738はINTV IRQの発生回路で
あり、レジスタ735にINTV IRQの発生周期
例えば本実施例では10〔ms〕がセツトされる。
これに対しクロツクパルスがカウンタ736へセ
ツトされ、そのカウント値がレジスタ735と一
致するとフリツプフロツプ738をセツト状態と
する。このセツト状態でカウンタ736をクリア
し、再びカウントを再開する。従つて一定時間
(10mSEC)ごとにINTV IRQが発生する。 レジスタ741とカウンタ742と比較器74
3、フリツプフロツプ744はエンジンの停止を
検知するENST IRQの発生回路である。レジス
タ741とカウンタ742と比較器743は上の
説明と同様であり、カウント値がレジスタ741
の値に達するとENST IRQを発生する。しかし
エンジンの回転中はクランク角センサより一定ク
ランク角毎に発生するREFパルスによりカウン
タ742がクリアされるのでカウンタ742のカ
ウント値がレジスタ741の値に達しないので
ENST IRQは発生しない。 フリツプフロツプ738に発生したINTV
IRQやフリツプフロツプ744に発生したENST
IRQさらにADC1やADC2で発生したIRQはそ
れぞれフリツプフロツプ740,746,76
4,768へセツトされる。またフリツプフロツ
プ739,745,762,766にはIRQを発
生させるか禁止するかの信号がセツトされる。フ
リツプフロツプ739,745,762,766
に“H”がセツトされていればANDゲート74
8,750,770,772は能動となり、IRQ
が発生するとORゲートよりただちにIRQが発生
する。 従つてフリツプフロツプ739,745,76
2,766のそれぞれに“H”を入れるか“L”
を入れるかによつてIRQの発生を禁止したり、禁
止を解除したりできる。またIRQが発生するとフ
リツプフロツプ740,746,764,768
の内容をCPUに取込むことにより、IRQ発生の
原因が解かる。 IRQに応じてCPUがプログラムを実行し始た
場合、そのIRQ信号はクリアする必要があるので
実行を始めたIRQに関するフリツプフロツプ74
0,746,764,768の1つをクリアす
る。 以上説明したように、本発明によれば、タスク
を起動周期の異同に拘らず優先度に対応させて複
数のタスクレベルに区分し、各タスクの実行を起
動周期と優先度に基づいて、それぞれ割込処理手
段とタスクデイスパツチヤとにより各別に制御
し、起動周期はソフトタイマテーブルにより管理
する構成としたことから、エンジンの制御機能等
の要求に応じて、自由にタスクの起動周期と優先
制御を組立てることができるので、きめ細かな効
率のよい制御を実現でき、これにより過渡状態の
制御を高精度化できるという効果がある。 また、タスク単位実行禁止テーブルにより、エ
ンジンの状態等に基づいて、実行を禁止したいタ
スクをソフト的に簡単に指定できることから、エ
ンジンの状態等に応じてタスク単位で実行タスク
の追加、削除を行なうことが可能になり、ハード
ウエア部分の低減が可能になるだけでなく、上記
効果が一層拡大されるという効果がある。
される各タスクの起動周期は予め定められており
これらの情報はROM104に格納されている。 以下第14図乃至第16図に基づきINTV割込
み処理について説明する。第14図はRAM10
6に設けられたソフトタイマテーブルであり、こ
のソフトタイマテーブルには各種割込みにより起
動される異なる起動周期の数だけのタイマブロツ
クが設けられている。ここでタイマブロツクとは
ROM104に格納されているタスクの起動周期
に関する時間情報が転送される記憶エリアを指し
ている。同図に於いて左端に記載されている
TMBはRAM106に於けるソフトタイマテー
ブルの先頭番地を意味する。このソフトタイマテ
ーブルの各タイマブロツクにはエンジン始動時に
ROM104より前記起動周期に関する時間情
報、即ちINTV割込みを例えば10ms毎に行う場
合にはその整数倍の値が転送され、格納される。 次に第15図にINTV割込み処理606の処理
フローを示す。同図に於いてステツプ626でプロ
グラムが起動されるとステツプ628でRAM10
6に設けられたソフトタイマテーブルのイニシヤ
ライズが行われる。即ち、インデツクスレジスタ
の内容iを0にし前記ソフトタイマテーブルの番
地TMB+0のタイマブロツクに記憶されている
残り時間Tiを調べる。ここでこの場合にはTi=
T0である。次にステツプ630で上記ステツプ628
で調べたソフトタイマが停止中であるか否かが判
断される。即ち、ソフトタイマテーブルに記憶さ
れている残り時間TiがTi=0である場合にはソフ
トタイマは停止中であると判断され、該ソフトタ
イマにより起動されるべき該当タスクは停止中で
あると判断され、ステツプ640にジヤンプし、ソ
フトタイマテーブルの更新が行われる。 一方、ソフトタイマテーブルの残り時間TiがTi
≠0である場合にはステツプ632に移行し前記タ
イマブロツクの残り時間の更新が行われる。即
ち、残り時間Tiから−1だけデイクリメントされ
る。次にステツプ634では前記タイマテーブルの
ソフトタイマが起動周期に達したか否かが判断さ
れる。即ち残り時間TiがTi=0である場合には起
動周期に達したと判断されその場合にはステツプ
636に移行する。又ソフトタイマが起動周期に達
していないと判断される場合にはステツプ640に
ジヤンプし、ソフトタイマテーブルの更新が行わ
れる。前記ソフトタイマテーブルが起動周期に達
している場合にはステツプ636でソフトタイマテ
ーブルの残り時間Tiを初期化する。即ち、ROM
104よりRAM106へ該当タスクの起動周期
の時間情報を転送する。そしてステツプ636で前
記ソフトタイマテーブルの残り時間Tiを初期化し
た後、ステツプ638でそのソフトタイマテーブル
に該当するタスクの起動要求を行う。次にステツ
プ640でソフトタイマテーブルの更新を行う。即
ち、インデツクスレジスタの内容を+1インクリ
メントする。更にステツプ642では全部のソフト
タイマテーブルをチエツクしたか否かが判断され
る。即ち、第14図に示したように本実施例では
ソフトタイマテーブルをN+1個だけ設けてある
のでインデツクスレジスタの内容iがi=N+1
である場合には全ソフトタイマテーブルのチエツ
クが完了したと判断されステツプ644でINTV割
込み処理プログラム606は終了する。一方ステ
ツプ642で全ソフトタイマテーブルがチエツクさ
れていないと判断された場合にはステツプ630に
戻り、前述と同様の処理が行われる。 以上の様にして各種の割込みに応じて該当タス
クの起動要求が出され、それに基づいて該当タス
クの実行が為されるが、表2に掲げられたタスク
群が常にすべてが実行されるのではなく、エンジ
ンの運転情報に基づいてROM104に設けられ
ている前記タスク群の起動周期に関する時間情報
を選択してRAM106のソフトタイマテーブル
中に転送し格納する。そして与えられたそのタス
クの起動周期が例えば20msであるとすれば、そ
の時間毎にタスクが起動されるがそのタスクの起
動が運転条件に応じて継続して行う必要があるも
のであれば常にそのタスクに該当するソフトタイ
マテーブルは更新して初期化される。次にエンジ
ンの運転条件に応じて各種割込みにより前記タス
ク群が起動停止される様子を第16図に示すタイ
ムチヤートにより説明する。スタータスイツチ1
52の操作によりパワーオンの状態になると
CPUが作動し、ソフトウエアフラグIST及びソフ
トウエアフラグEMに1が立てられる。ソフトウ
エアフラグISTはエンジンが始動前の状態にある
ことを示すフラグであり、ソフトウエアフラグ
EMはENST割込みを禁止するためのフラグであ
る。これらの2つのフラグによりエンジンが始動
前の状態にあるか或いは始動中か又は始動後の状
態にあるかの判別が為される。さてスタータスイ
ツチ152の操作によりパワーオンの状態になる
と先ず最初にタスクADIN1が起動され各種セン
サによりエンジンの始動に必要なデータ例えば冷
却水温度、バツテリ電圧等の入力情報がマルチプ
レクサ120を介してAD変換器122に取込ま
れ、これらのデータの一巡入力毎にタスク
HOSEIタスク補正が起動され前記入力情報に基
づき補正計算が行われる。又前記タスクADIN1
によりAD変換器122に各種センサからのデー
タの一巡入力毎にタスクISTRTが起動されエン
ジン始動中に必要な燃料噴射量の計算がなされ
る。以上の3つのタスク、即ちタスクADIN1、
タスクHOSEI及びタスクISTRTはイニシヤル処
理プログラム202により起動されるものであ
る。 スタータスイツチ152がON状態になるとタ
スクISTRTの割込み信号によりタスクADIN1、
タスクMONIT及びタスクADIN2の3つのタス
クに起動が掛けられる。即ち、これらのタスクは
スタータスイツチ152がON状態になつている
期間(エンジンのクランキング時)のみ実行され
る必要がある。この期間ではROM104から
RAM106に設けられた前記タスクにそれぞれ
該当するソフトタイマテーブルに所定の起動周期
の時間情報が転送され格納される。そしてこの期
間は前記ソフトタイマテーブルの起動周期の残り
時間Tiは初期化され起動周期の設定が繰り返し行
われる。タスクMONITはエンジン始動時の燃料
噴射量を計算するためのタスクでありエンジン始
動後は不要なタスクであるので所定の回数だけタ
スクの実行を終了したらソフトタイマの起動を停
止し、そのタスク終了時に発せられる停止信号に
より上記以外のエンジン始動後に必要なタスク群
の起動を行う。ここでタスクの停止をソフトタイ
マにより行うにはそのタスクの終了に於ける判断
時点でそのタスクが終了したことを示す信号によ
りそのタスクの該当するソフトタイマテーブルに
0を格納する、即ちソフトタイマの内容をクリア
することによりタスクの停止を行うものである。
以上の如く本実施例ではタスクの起動停止をソフ
トタイマにより簡単に行えるように構成したので
異なる起動周期を有する複数のタスクに対し能率
的且つ信頼性有る管理を行うことが可能となる。 次にIRQの発生回路を第17図に示す。レジス
タ735とカウンタ736と比較器737とフリ
ツプフロツプ738はINTV IRQの発生回路で
あり、レジスタ735にINTV IRQの発生周期
例えば本実施例では10〔ms〕がセツトされる。
これに対しクロツクパルスがカウンタ736へセ
ツトされ、そのカウント値がレジスタ735と一
致するとフリツプフロツプ738をセツト状態と
する。このセツト状態でカウンタ736をクリア
し、再びカウントを再開する。従つて一定時間
(10mSEC)ごとにINTV IRQが発生する。 レジスタ741とカウンタ742と比較器74
3、フリツプフロツプ744はエンジンの停止を
検知するENST IRQの発生回路である。レジス
タ741とカウンタ742と比較器743は上の
説明と同様であり、カウント値がレジスタ741
の値に達するとENST IRQを発生する。しかし
エンジンの回転中はクランク角センサより一定ク
ランク角毎に発生するREFパルスによりカウン
タ742がクリアされるのでカウンタ742のカ
ウント値がレジスタ741の値に達しないので
ENST IRQは発生しない。 フリツプフロツプ738に発生したINTV
IRQやフリツプフロツプ744に発生したENST
IRQさらにADC1やADC2で発生したIRQはそ
れぞれフリツプフロツプ740,746,76
4,768へセツトされる。またフリツプフロツ
プ739,745,762,766にはIRQを発
生させるか禁止するかの信号がセツトされる。フ
リツプフロツプ739,745,762,766
に“H”がセツトされていればANDゲート74
8,750,770,772は能動となり、IRQ
が発生するとORゲートよりただちにIRQが発生
する。 従つてフリツプフロツプ739,745,76
2,766のそれぞれに“H”を入れるか“L”
を入れるかによつてIRQの発生を禁止したり、禁
止を解除したりできる。またIRQが発生するとフ
リツプフロツプ740,746,764,768
の内容をCPUに取込むことにより、IRQ発生の
原因が解かる。 IRQに応じてCPUがプログラムを実行し始た
場合、そのIRQ信号はクリアする必要があるので
実行を始めたIRQに関するフリツプフロツプ74
0,746,764,768の1つをクリアす
る。 以上説明したように、本発明によれば、タスク
を起動周期の異同に拘らず優先度に対応させて複
数のタスクレベルに区分し、各タスクの実行を起
動周期と優先度に基づいて、それぞれ割込処理手
段とタスクデイスパツチヤとにより各別に制御
し、起動周期はソフトタイマテーブルにより管理
する構成としたことから、エンジンの制御機能等
の要求に応じて、自由にタスクの起動周期と優先
制御を組立てることができるので、きめ細かな効
率のよい制御を実現でき、これにより過渡状態の
制御を高精度化できるという効果がある。 また、タスク単位実行禁止テーブルにより、エ
ンジンの状態等に基づいて、実行を禁止したいタ
スクをソフト的に簡単に指定できることから、エ
ンジンの状態等に応じてタスク単位で実行タスク
の追加、削除を行なうことが可能になり、ハード
ウエア部分の低減が可能になるだけでなく、上記
効果が一層拡大されるという効果がある。
第1図はエンジン系統全体の制御装置を示す構
成図、第2図は第1図の点火装置の説明図、第3
図は排気ガス還流システムを説明するための構成
図、第4図はエンジン制御システムの全体構成
図、第5図は本発明に係わるエンジン制御方法の
プログラムシステムの基本的構成を示す図、第6
図はタスクデイスパツチヤの管理するRAMに設
けられたタスク制御ブロツクのテーブルを示す
図、第7図は各種割込みにより起動されるタスク
群のスタートアドレステーブルを示す図、第8図
及び第9図はタスクデイスパツチヤの処理フロー
を示す図、第10図はマクロ処理プログラムの処
理フローを示す図、第11図はタスク優先制御の
一例を示す図、第12図は上記タスク優先制御に
於けるタスクの状態遷移を示す図、第13図は第
5図に於ける具体的実施例を示す図、第14図は
RAMに設けられたソフトタイマテーブルを示す
図、第15図はINTV割込み処理プログラムの処
理フローを示す図、第16図はエンジンの運転状
態に応じて各種タスクの起動停止が行われる様子
を示したタイミングチヤート、第17図は割込み
IRQの発生回路、第18図は本発明の特徴構成を
示す図である。102……CPU、104……
ROM、106……RAM。
成図、第2図は第1図の点火装置の説明図、第3
図は排気ガス還流システムを説明するための構成
図、第4図はエンジン制御システムの全体構成
図、第5図は本発明に係わるエンジン制御方法の
プログラムシステムの基本的構成を示す図、第6
図はタスクデイスパツチヤの管理するRAMに設
けられたタスク制御ブロツクのテーブルを示す
図、第7図は各種割込みにより起動されるタスク
群のスタートアドレステーブルを示す図、第8図
及び第9図はタスクデイスパツチヤの処理フロー
を示す図、第10図はマクロ処理プログラムの処
理フローを示す図、第11図はタスク優先制御の
一例を示す図、第12図は上記タスク優先制御に
於けるタスクの状態遷移を示す図、第13図は第
5図に於ける具体的実施例を示す図、第14図は
RAMに設けられたソフトタイマテーブルを示す
図、第15図はINTV割込み処理プログラムの処
理フローを示す図、第16図はエンジンの運転状
態に応じて各種タスクの起動停止が行われる様子
を示したタイミングチヤート、第17図は割込み
IRQの発生回路、第18図は本発明の特徴構成を
示す図である。102……CPU、104……
ROM、106……RAM。
Claims (1)
- 【特許請求の範囲】 1 入力されるインターバル割込要求を含む複数
の割込要求をそれぞれ一旦蓄積する手段と、該手
段の出力端に設けられ与えられる割込禁止指令に
応じて前記割込要求の発生を阻止するゲート手段
とを有してなる割込要求発生手段と、 エンジンの制御機能毎に分類され、それぞれ所
定の起動周期が設定されてなり、かつ起動周期の
異同に拘らず優先度に対応させて複数のタスクレ
ベルに区分されてなる複数のタスクが格納された
メモリと、 前記割込要求発生手段から出力されるインター
バル割込要求に基づいて計数された前記各タスク
の起動周期に係る経過時間データが格納されるソ
フトタイマテーブルと、 前記タスクの中でエンジンの状態等に基づいて
与えられる実行を禁止したいタスクに対する実行
禁止指令が格納されるタスク単位実行禁止テーブ
ルと、 前記割込要求発生手段から出力されるインター
バル割込要求により実行中のタスクの実行を中断
させ、前記ソフトタイマテーブルの経過時間デー
タに基づいて各タスクが起動周期に達したか否か
を判定し、起動周期に達したタスクの起動要求フ
ラグをタスク制御テーブルに立てる割込処理手段
と、 前記タスク制御テーブルを検索し中断されたタ
スクを含め起動要求フラグが立てられているタス
クの中で優先度の高い順にしたがつてタスクを選
択して当該タスクの実行指令を出力するタスクデ
イスパツチヤと、 前記タスク単位実行禁止テーブルに実行禁止指
令が格納されているタスクについて、前記割込処
理手段におけるタスクの起動要求フラグを立てる
処理と前記タスクデイスパツチヤにおけるタスク
の実行指令の出力のいずれか一方を禁止するタス
ク単位実行禁止手段と、 前記タスクデイスパツチヤから出力される実行
指令に対応するタスクを前記メモリから読み出
し、タスクの内容に従つてエンジンの制御演算を
実行するタスク実行手段と、 を備えてなるエンジン制御装置。 2 特許請求の範囲第1項記載の装置において、
前記タスク単位実行禁止手段は前記割込処理手段
に一体的に含まれ、該割込処理手段は前記タスク
単位実行禁止テーブルに実行禁止指令が格納され
ているタスクについては前記起動要求フラグを立
てないことを特徴とする装置。 3 特許請求の範囲第1項記載の装置において、
前記タスク単位実行禁止手段は前記タスクデイス
パツチヤに一体的に含まれ、該タスクデイスパツ
チヤは前記タスク単位実行禁止テーブルに実行禁
止指令が格納されているタスクについては前記実
行指令を出力しないことを特徴とする装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11294979A JPS5638541A (en) | 1979-09-05 | 1979-09-05 | Controlling method for engine |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11294979A JPS5638541A (en) | 1979-09-05 | 1979-09-05 | Controlling method for engine |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP62331334A Division JPS63314352A (ja) | 1987-12-25 | 1987-12-25 | エンジン制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS5638541A JPS5638541A (en) | 1981-04-13 |
JPH0118256B2 true JPH0118256B2 (ja) | 1989-04-05 |
Family
ID=14599546
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11294979A Granted JPS5638541A (en) | 1979-09-05 | 1979-09-05 | Controlling method for engine |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPS5638541A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59128947A (ja) * | 1983-01-13 | 1984-07-25 | Nippon Denso Co Ltd | 自動車用多重信号伝送装置 |
JPS62107303A (ja) * | 1985-11-06 | 1987-05-18 | Japan Electronic Control Syst Co Ltd | 自動車用電子制御装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5340105A (en) * | 1976-09-24 | 1978-04-12 | Nippon Denso Co Ltd | Automobile control unit |
JPS5458116A (en) * | 1977-10-19 | 1979-05-10 | Hitachi Ltd | Engine controller |
-
1979
- 1979-09-05 JP JP11294979A patent/JPS5638541A/ja active Granted
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5340105A (en) * | 1976-09-24 | 1978-04-12 | Nippon Denso Co Ltd | Automobile control unit |
JPS5458116A (en) * | 1977-10-19 | 1979-05-10 | Hitachi Ltd | Engine controller |
Also Published As
Publication number | Publication date |
---|---|
JPS5638541A (en) | 1981-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4482962A (en) | Engine control method | |
US4282573A (en) | Processor interrupt device for an electronic engine control apparatus | |
US4337513A (en) | Electronic type engine control method and apparatus | |
JPS6212384B2 (ja) | ||
US4450815A (en) | Internal combustion engine control apparatus | |
JPS6360220B2 (ja) | ||
US4363097A (en) | Electronic type engine control method | |
JPS6315465B2 (ja) | ||
JPH0375740B2 (ja) | ||
JPS6350546B2 (ja) | ||
KR920003200B1 (ko) | 엔진제어장치 | |
US4501249A (en) | Fuel injection control apparatus for internal combustion engine | |
US4528964A (en) | Fuel injection control apparatus for internal combustion engine | |
JPH0118256B2 (ja) | ||
JPH0138176B2 (ja) | ||
JPS5974339A (ja) | 燃料噴射装置 | |
JPS6218748B2 (ja) | ||
JPH0118443B2 (ja) | ||
JPS627381B2 (ja) | ||
JPS5895214A (ja) | 熱線式流量センサの信号処理方法 | |
JPS6356420B2 (ja) | ||
JPH0318026B2 (ja) | ||
US4522178A (en) | Method of fuel control in engine | |
JPS58150047A (ja) | 内燃機関の燃料噴射制御装置 | |
JPS6240645B2 (ja) |