JPH06249054A - 車輌制御用コンピュータにおけるスイッチ入力データの読込み方法 - Google Patents

車輌制御用コンピュータにおけるスイッチ入力データの読込み方法

Info

Publication number
JPH06249054A
JPH06249054A JP3096793A JP3096793A JPH06249054A JP H06249054 A JPH06249054 A JP H06249054A JP 3096793 A JP3096793 A JP 3096793A JP 3096793 A JP3096793 A JP 3096793A JP H06249054 A JPH06249054 A JP H06249054A
Authority
JP
Japan
Prior art keywords
job
data
switch
executed
accumulator
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP3096793A
Other languages
English (en)
Inventor
Masaru Kurihara
優 栗原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Subaru Corp
Original Assignee
Fuji Heavy Industries Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fuji Heavy Industries Ltd filed Critical Fuji Heavy Industries Ltd
Priority to JP3096793A priority Critical patent/JPH06249054A/ja
Publication of JPH06249054A publication Critical patent/JPH06249054A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Combined Controls Of Internal Combustion Engines (AREA)

Abstract

(57)【要約】 【目的】 個々のスイッチによって異なるチャタリング
の大きさ、継続時間に対し、コストを上昇させることな
く有効にチャタリングを除去し、応答性良くスイッチ信
号を読込む。 【構成】 I/Oインターフェースの入力ポートからア
キュムレータAにデータを読込むと、アキュムレータB
にアキュムレータAの内容をコピーし、アキュムレータ
Aの内容とメモリM1の内容とのビット毎のANDをと
り、その結果をアキュムレータAの内容とする。その
後、アキュムレータBの内容をメモリM1にバックアッ
プデータとしてストアし、アキュムレータAの内容を現
在の各スイッチのON,OFF状態を示すデータとして
メモリM2にストアする。これにより、個々のスイッチ
によってチャタリングの大きさ、継続時間が異なって
も、コストを上昇させることなく確実にチャタリングを
除去することができ、各スイッチのON,OFF状態を
応答性良く読み込むことができる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、各種スイッチ信号から
チャタリングを除去する車輌制御用コンピュータにおけ
るスイッチ入力データの読込み方法に関する。
【0002】
【従来の技術】近年、自動車などの車輌にマイクロコン
ピュータが導入されるようになり、エンジン、パワート
レインなどを高精度に制御することが可能となった。こ
のマイクロコンピュータは、定電圧回路や各種周辺回路
を加えた電子制御装置(ECU)として車輌に搭載さ
れ、車輌の運転状態を検出する各種センサ、スイッチか
らの信号に基づいてエンジンの燃料噴射制御や点火制御
などを実行する。
【0003】この場合、車輌に備えられるスイッチは、
負荷の開閉を行なう通常の機械的スイッチが多いため、
オンからオフへの切換時あるいはオフからオンへの切換
時に、接点の機械的切換えに伴って出力信号が振動す
る、いわゆるチャタリングが発生する。
【0004】このため、上記ECUにスイッチ信号を読
み込む際には、チャタリングを除去する必要があり、例
えば、特開昭55−127609号公報には、内燃機関
の各種運転状態を検出するスイッチがオン又はオフの状
態を所定時間以上継続した後にのみ信号を出力する手段
を、CR回路及び比較器から構成してチャタリングを除
去する技術が開示されている。
【0005】
【発明が解決しようとする課題】しかしながら、スイッ
チで発生するチャタリングは、個々のスイッチの機械的
特性によって振動の大きさ、振動の継続時間が異なり、
従来のように、CR回路と比較器によるチャタリング除
去回路などでは、CR回路の時定数や比較器の比較レベ
ルを越える激しいチャタリングが発生すると、このチャ
タリングを除去することが困難となる。
【0006】この場合、個々のスイッチ毎に回路定数を
設定したチャタリング除去回路を用意することは、シス
テム全体のコストを上昇させるばかりでなく艤装スペー
スの増大を招き、また、予想される最も激しいチャタリ
ングに回路定数を合わせると、応答性が低下し、制御性
の悪化を招く。
【0007】本発明は上記事情に鑑みてなされたもの
で、個々のスイッチによって異なるチャタリングの大き
さ、継続時間に対し、コストを上昇させることなく有効
にチャタリングを除去し、応答性良くスイッチ信号を読
込むことのできる車輌制御用コンピュータにおけるスイ
ッチ入力データの読込み方法を提供することを目的とし
ている。
【0008】
【課題を解決するための手段】本発明は、車輌に設けた
スイッチからの信号を、オンオフ状態に対応したビット
データとして読込む車輌制御用コンピュータにおけるス
イッチ入力データの読込み方法であって、上記スイッチ
を接続した入力ポートから所定時間前に読込んだデータ
と、上記入力ポートから新たに読込んだ現在のデータと
のビット毎の論理積をとり、この論理積を上記スイッチ
からの現在の入力データとすることを特徴とする。
【0009】
【作用】本発明では、スイッチが接続される入力ポート
から所定時間前に読込んだデータと、この入力ポートか
ら新たに読込んだ現在のデータとのビット毎の論理積を
とることにより、チャタリングが発生している場合には
このチャタリングを除去して現在のスイッチのオンオフ
状態を読込む。
【0010】
【実施例】以下、図面を参照して本発明の実施例を説明
する。図1〜図20は本発明の第1実施例に係り、図1
はスイッチ入力読込みサブルーチンのフローチャート、
図2はリセット割込み処理のフローチャート、図3はス
イッチ入力初期設定サブルーチンのフローチャート、図
4は0.5ms毎の定期割込み処理のフローチャート、
図5はクラセン割込み処理のフローチャート、図6はジ
ョブ優先処理のフローチャート、図7はジョブ実行サブ
ルーチンの部分フローチャート1、図8はジョブ実行サ
ブルーチンの部分フローチャート2、図9はジョブ実行
サブルーチンの部分フローチャート3、図10はジョブ
実行サブルーチンの部分フローチャート4、図11はジ
ョブの実行状態を示す説明図、図12はジョブフラグの
説明図、図13はクランク位置変数の説明図、図14は
ジョブ実行中フラグとオーバーラップカウンタの変化を
示す説明図、図15はシステムシフトバッファの説明
図、図16はスイッチ入力の入力ポートデータとチャタ
リング対策後のデータとの関係を示すタイムチャート、
図17はエンジン系の概略構成図、図18はクランクロ
ータとクランク角センサの正面図、図19はカムロータ
とカム角センサの正面図、図20は電子制御系の回路構
成図である。
【0011】本実施例における車輌制御システムは、例
えば、燃料噴射制御、点火時期制御などを行なうエンジ
ン制御システムであり、図20に示すように、マイクロ
コンピュータを中核とする電子制御装置(ECU)50
によって図17に示すエンジン系が制御される。このE
CU50のマイクロコンピュータには、新しい概念に基
づくオペレーティングシステム(OS)が搭載されてお
り、このOSの管理下で、各制御ストラテジーに基づく
各ジョブが、それぞれの優先レベルに従って実行され
る。
【0012】まず、エンジン系の機器構成について説明
する。図17に示すように、エンジン1(図においては
水平対向4気筒型エンジンを示す)は、シリンダヘッド
2の吸気ポート2aにインテークマニホルド3が連通さ
れ、このインテークマニホルド3の上流にエアチャンバ
4を介してスロットル通路5が連通されている。このス
ロットル通路5の上流側には、吸気管6を介してエアク
リーナ7が取付けられ、このエアクリーナ7が吸入空気
の取り入れ口であるエアインテークチャンバ8に連通さ
れている。
【0013】また、上記排気ポート2bにエキゾースト
マニホルド9を介して排気管10が連通され、この排気
管10に触媒コンバータ11が介装されてマフラ12に
連通されている。一方、上記スロットル通路5にスロッ
トルバルブ5aが設けられ、このスロットル通路5の直
上流の上記吸気管6にインタークーラ13が介装され、
さらに、上記吸気管6の上記エアクリーナ7の下流側に
レゾネータチャンバ14が介装されている。
【0014】また、上記レゾネータチャンバ14と上記
インテークマニホルド3とを連通して上記スロットルバ
ルブ5aの上流側と下流側とをバイパスするバイパス通
路15に、アイドルスピードコントロールバルブ(IS
CV)16が介装されている。さらに、このISCV1
6の直下流側に、吸気圧が負圧のとき開弁し、またター
ボチャージャ18によって過給されて吸気圧が正圧にな
ったとき閉弁するチェックバルブ17が介装されてい
る。
【0015】上記ターボチャージャ18は、上記吸気管
6の上記レゾネータチャンバ14の下流側にコンプレッ
サが介装され、タービンが上記排気管10に介装されて
いる。さらに、上記ターボチャージャ18のタービンハ
ウジング流入口には、ウエストゲート弁19が介装さ
れ、このウエストゲート弁19には、ウエストゲート弁
作動用アクチュエータ20が連設されている。
【0016】上記ウエストゲート弁作動用アクチュエー
タ20は、ダイヤフラムにより2室に仕切られ、一方が
ウエストゲート弁制御用デューティソレノイド弁21に
連通される圧力室を形成し、他方が上記ウエストゲート
弁19を閉方向に付勢するスプリングを収納したスプリ
ング室を形成している。
【0017】上記ウエストゲート弁制御用デューティソ
レノイド弁21は、上記レゾネータチャンバ14と上記
吸気管6の上記ターボチャージャ18のコンプレッサ下
流とを連通する通路に介装されており、ECU50から
出力される制御信号のデューティ比に応じて、上記レゾ
ネータチャンバ14側の圧力と上記コンプレッサ下流側
の圧力とを調圧し、上記ウエストゲート弁作動用アクチ
ュエータ20の圧力室に供給する。
【0018】すなわち、上記ECU50によって上記ウ
エストゲート弁制御用デューティソレノイド弁21を制
御し、上記ウエストゲート弁作動用アクチュエータ20
を作動させて上記ウエストゲート弁19による排気ガス
リリーフを調整することにより、上記ターボチャージャ
18による過給圧を制御するようになっている。
【0019】また、上記インテークマニホルド3に絶対
圧センサ22が通路23を介して連通され、この通路2
3に、上記絶対圧センサ22と上記インテークマニホル
ド3あるいは大気とを選択的に連通する吸気管圧力/大
気圧切換ソレノイド弁24が介装されている。
【0020】さらに、上記インテークマニホルド3の各
気筒の各吸気ポート2aの直上流側にインジェクタ25
が臨まされ、また、上記シリンダヘッド2の各気筒毎
に、その先端を燃焼室に露呈する点火プラグ26が取付
けられ、この点火プラグ26に各気筒毎に配設された点
火コイル26aを介してイグナイタ27が接続されてい
る。
【0021】上記インジェクタ25には、燃料タンク2
8内に設けたインタンク式の燃料ポンプ29から燃料フ
ィルタ30を経て燃料が圧送され、燃料圧力がプレッシ
ャレギュレータ31にて調圧される。
【0022】また、上記吸気管6の上記エアークリーナ
7の直下流に、ホットワイヤ式あるいはホットフィルム
式などの吸入空気量センサ32が介装され、上記スロッ
トルバルブ5aに、スロットル開度センサ33aとアイ
ドルスイッチ33bとを内蔵したスロットルセンサ33
が連設されている。
【0023】さらに、上記エンジン1のシリンダブロッ
ク1aにノックセンサ34が取付けられるとともに、こ
のシリンダブロック1aの左右両バンクを連通する冷却
水通路35に冷却水温センサ36が臨まされ、上記排気
管10の上記エキゾーストマニホルド9の集合部にO2
センサ37が臨まされている。
【0024】また、上記シリンダブロック1aに支承さ
れたクランクシャフト1bにクランクロータ38が軸着
され、このクランクロータ38の外周に、電磁ピックア
ップなどからなるクランク角センサ39が対設されてい
る。さらに、上記エンジン1のカムシャフト1cに連設
するカムロータ40に、電磁ピックアップなどからなる
気筒判別用のカム角センサ41が対設されている。尚、
上記クランク角センサ39及び上記カム角センサ41
は、電磁ピックアップなどの磁気センサに限らず、光セ
ンサなどでも良い。
【0025】上記クランクロータ38は、図18に示す
ように、その外周に突起38a,38b,38cが形成
され、これらの各突起38a,38b,38cが、各気
筒(#1,#2と#3,#4)の圧縮上死点前(BTD
C)θ1,θ2,θ3 の位置に形成されており、本実施例に
おいては、θ1 =97°CA、θ2 =65°CA、θ3
=10°CAである。
【0026】上記クランクロータ38の各突起は、上記
クランク角センサ39によって検出され、BTDC97
°,65°,10°のクランク角信号がエンジン1/2
回転毎(180°CA毎)に出力される。そして、各信
号の入力間隔時間がタイマによって計時され、エンジン
回転数が算出される。
【0027】尚、突起38bは、点火時期設定の際の基
準クランク角となり、また、突起38cは、始動時噴射
開始時期の基準クランク角となるとともに始動時の固定
点火時期を示すクランク角となる。
【0028】また、図19に示すように、上記カムロー
タ40の外周には、気筒判別用の突起40a,40b,
40cが形成され、突起40aが#3,#4気筒の圧縮
上死点後(ATDC)θ4 の位置に形成され、突起40
bが3個の突起で構成されて最初の突起が#1気筒のA
TDCθ5 の位置に形成されている。さらに、突起40
cが2個の突起で形成され、最初の突起が#2気筒のA
TCDθ6 の位置に形成されている。本実施例において
は、θ4 =20°CA、θ5 =5°CA、θ6=20°
CAである。
【0029】そして、上記カムロータ40の各突起が上
記カム角センサ41によって検出され、各気筒の燃焼行
程順を#1→#3→#2→#4とした場合、この燃焼行
程順と、上記カム角センサ41の検出信号をカウンタに
よって計数した値とのパターンに基づいて、気筒判別が
なされる。
【0030】一方、図20に示すように、ECU50
は、燃料噴射制御、点火時期制御などを行なうメインコ
ンピュータ51と、ノック検出処理を行なう専用のサブ
コンピュータ52との2つのコンピュータを中心として
構成され、各部に所定の安定化電源を供給する定電圧回
路53や各種の周辺回路が組込まれている。
【0031】上記定電圧回路53は、ECUリレー54
のリレー接点を介してバッテリ55に接続され、このバ
ッテリ55に、上記ECUリレー54のリレーコイルが
イグニッションスイッチ56を介して接続されている。
また、上記バッテリ55には、上記定電圧回路53が直
接接続され、さらに、燃料ポンプリレー57のリレー接
点を介して燃料ポンプ29が接続されている。
【0032】すなわち、上記定電圧回路53は、上記イ
グニッションスイッチ56がONされ、上記ECUリレ
ー54のリレー接点が閉となったとき、制御用電源を供
給し、また、上記イグニッションスイッチ56がOFF
されたとき、バックアップ用の電源を供給する。
【0033】上記メインコンピュータ51は、CPU5
8(以下、メインCPU58と称する)、ROM59、
RAM60、上記イグニッションスイッチ56がOFF
されたときにも上記定電圧回路53からバックアップ電
源が供給されてデータを保持するバックアップRAM6
1、カウンタ・タイマ群62、シリアル通信インターフ
ェースであるSCI63、及び、I/Oインターフェー
ス64がバスライン65を介して接続されたマイクロコ
ンピュータである。
【0034】尚、上記カウンタ・タイマ群62は、フリ
ーランカウンタ、カム角センサ(以下、適宜、カムセン
と略記する)信号の入力計数用カムセンカウンタなどの
各種カウンタ、燃料噴射タイマ、点火タイマ、後述する
0.5ms毎の定期割込みを発生させるための定期割込
みタイマ、クランク角センサ(以下、適宜、クラセンと
略記する)信号の入力間隔計時用クラセンタイマ、及
び、システム異常監視用のウオッチドッグタイマなどの
各種タイマを便宜上総称するものであり、上記メインコ
ンピュータ51においては、その他、各種のソフトウエ
アカウンタ・タイマが用いられる。
【0035】また、上記サブコンピュータ52も、上記
メインコンピュータ51と同様、CPU71(以下、サ
ブCPU71と称する)、ROM72、RAM73、カ
ウンタ・タイマ群74、SCI75、及び、I/Oイン
ターフェース76がバスライン77を介して接続された
マイクロコンピュータであり、上記メインコンピュータ
51とサブコンピュータ52とは、上記SCI63,7
5を介してシリアル通信ラインにより互いに接続されて
いる。
【0036】上記メインコンピュータ51のI/Oイン
ターフェース64には、入力ポートに、吸入空気量セン
サ32、スロットル開度センサ33a、水温センサ3
6、O2 センサ37、絶対圧センサ22、車速センサ4
2、及び、バッテリ55が、8チャンネル入力のA/D
変換器66を介して接続されるとともに、クランク角セ
ンサ39、カム角センサ41が接続されている。尚、本
実施例においては、上記A/D変換器66は、7チャン
ネル分の入力が使用され、残りの1チャンネルは予備と
なっている。
【0037】さらに、I/Oインターフェース64の入
力ポートには、アイドルスイッチ33b、スタータスイ
ッチ43、その他、図示しないスイッチ類が接続されて
おり、これらの複数のスイッチからの信号は、8ビット
あるいは16ビット単位でパラレルに読込まれる。すな
わち、8個あるいは16個のスイッチからの信号が一度
に読込まれ、各スイッチ毎のON,OFF状態が、例え
ばONの状態を1、OFFの状態を0とするビットデー
タで判断される。
【0038】また、上記I/Oインターフェース64の
出力ポートには、イグナイタ27が接続され、さらに、
駆動回路67を介して、ISCV16、インジェクタ2
5、燃料ポンプリレー57のリレーコイル、および、ウ
エストゲート弁制御用デューティソレノイド弁21、吸
気管圧力/大気圧切換ソレノイド弁24が接続されてい
る。
【0039】一方、上記サブコンピュータ52のI/O
インターフェース76は、入力ポートに、クランク角セ
ンサ39、カム角センサ41が接続されるとともに、A
/D変換器78、周波数フィルタ79、アンプ80を介
してノックセンサ34が接続されており、上記ノックセ
ンサ34からのノック検出信号が上記アンプ80で所定
のレベルに増幅された後に上記周波数フィルタ79によ
り必要な周波数成分が抽出され、上記A/D変換器78
にてデジタル信号に変換されて入力されるようになって
いる。
【0040】上記メインコンピュータ51では、各セン
サ類からの検出信号を処理し、燃料噴射パルス幅、点火
時期などを演算する。すなわち、吸入空気量センサ32
の出力信号から吸入空気量を算出し、RAM60及びバ
ックアップRAM61に記憶されている各種データに基
づき、吸入空気量に見合った燃料噴射量を演算し、ま
た、点火時期などを算出する。
【0041】そして、上記燃料噴射量に相応する駆動パ
ルス幅信号を、駆動回路67を介して所定のタイミング
で該当気筒のインジェクタ25に出力して燃料を噴射
し、また、所定のタイミングでイグナイタ27に点火信
号を出力し、該当気筒の点火プラグ26を点火する。
【0042】その結果、該当気筒に供給された混合気が
爆発燃焼し、エキゾーストマニホルド9の集合部に臨ま
されたO2 センサ37により排気ガス中の酸素濃度が検
出され、この検出信号が波形整形55された後、上記メ
インCPU58で基準電圧(スライスレベル)と比較さ
れ、エンジンの空燃比状態が目標空燃比に対し、リッチ
側にあるか、リーン側にあるかが判別され、空燃比が目
標空燃比となるようフィードバック制御される。
【0043】一方、上記サブコンピュータ52では、エ
ンジン回転数とエンジン負荷とに基づいてノックセンサ
34からの信号のサンプル区間を設定し、このサンプル
区間でノックセンサ34からの信号を高速にA/D変換
して振動波形を忠実にデジタルデータに変換し、ノック
発生の有無を判定する。
【0044】上記サブコンピュータ52のI/Oインタ
ーフェース76の出力ポートは、上記メインコンピュー
タ51のI/Oインターフェース64の入力ポートに接
続されており、上記サブコンピュータ52でのノック判
定結果がI/Oインターフェース76に出力される。そ
して、上記メインコンピュータ51では、上記サブコン
ピュータ52からノック発生有りの判定結果が出力され
ると、SCI63を介してシリアル通信ラインよりノッ
クデータを読込み、このノックデータに基づいて直ちに
該当気筒の点火時期を遅らせ、ノックを回避する。
【0045】このようなエンジン制御において、上記メ
インコンピュータ51では、各センサ類からの信号入力
処理、エンジン回転数算出、吸入空気量算出、燃料噴射
量算出、点火時期算出といった各項目毎の各種プログラ
ムが、一つのOSの管理下で効率的に実行される。この
OSは、車輌制御のための各種マネジメント機能、及
び、このマネジメント機能に密着した内部ストラテジー
を有し、各種ジョブを体系的に結合する。
【0046】上記OSのマネジメント機能としては、 (1-1)ジョブの優先処理 (1ー2)セクション定義による各ジョブの分割ファイル対
応 (1-3)スタックの使用状況モニタ機能 (1-4)異常割込み動作のモニタ機能 (1-5)ジョブ毎に固有の制約を作らない標準マップ・標
準ワークメモリ設定 などの機能があり、制御ストラテジーの開発環境を向上
させるとともに、限られたCPU能力を最大限に発揮さ
せ、デジタル制御理論の基本である等時間間隔処理を可
能な限り達成することができる。
【0047】等時間間隔処理としては、0.5ms毎の
定期割込みを基本として、2,4,10,50,250
ms毎の5種類の等間隔割込みジョブが用意されてお
り、また、エンジン回転に同期した処理として、クラン
ク角信号入力により即割込み実行される高優先クラセン
ジョブ(以下、単にクラセンジョブと称する)と、より
優先順位が高い他のジョブがないときにクランク角信号
入力により割込み実行される比較的緊急度の低い低優先
クラセンジョブとが用意されている。
【0048】これらの各ジョブには、クラセンジョブ>
2msジョブ>4msジョブ>10msジョブ>低優先
クラセンジョブ>50msジョブ>250msジョブの
順で、7〜1の優先レベルが高位側から低位側に向かっ
て付けられており、図11に示すように、高速ジョブに
対し低速ジョブが分割して処理されるとともに、各ジョ
ブの多重待ち処理が行なわれる。
【0049】また、上記OSの下で働く各プログラム
は、機能別の領域毎に順番に配列されており、各機能毎
にセクション宣言によって名前が付けられている。上記
OS下で働く数々のストラテジーファイル(ユーザー側
ファイル)は、各機能毎にOSと同じ名前のセクション
宣言を用いることにより、開発段階において、例えば、
初期値設定処理、10ms毎の処理、バックグランド処
理等を別々のファイルに記述しても、各ファイルがリン
クされたとき、同じ処理は連続した1つの領域の集めら
れ、OSと融合し一体となって動作する。
【0050】各ストラテジーファイル側で使用する主な
セクション領域は、 ○変数宣言領域 ○自己ファイル名、ファイル制作時の自動記録領域 ○セッティングデータ領域 ○クラセンジョブ領域 ○2msジョブ領域 ○4msジョブ領域 ○10msジョブ領域 ○低優先クラセンジョブ領域 ○50msジョブ領域 ○250msジョブ領域 ○リセット時初期化ジョブ領域 ○エンスト時初期化ジョブ領域 ○バックグランドジョブ領域 ○プログラム本体の領域 であり、機能毎にファイルを分割してプログラム開発が
可能になるとともに、プログラムの構造化記述を可能に
する。
【0051】また、上記OSには、以上のマネジメント
機能に密着した内部ストラテジーとして、 (2-1)A/D変換処理 (2-2)クランク位置に係る各種情報の算出 (2-3)デバッグ用シミュレーション機能(エンジン回転
及びA/D変換) (2-4)点火タイマのセット (2-5)燃料噴射タイマのセット などの機能を備えており、さらに、これらの機能に係る
各種サービスルーチンが各セクション中に用意されてい
る。
【0052】従来、このような機能はユーザー側のジョ
ブレベルで達成するようになっていたが、本システムに
おいては、すべてOS側に用意され、OS側で処理した
A/D変換結果、クランク位置情報、エンジン回転数な
どに基づいて、ユーザー側の各ジョブで、燃料噴射量、
点火時期などを設定すると、これらの指示値がOSによ
って燃料噴射タイマ、点火タイマにセットされるように
なっている。
【0053】本発明に係わるスイッチ入力読込みの処理
は、上記OSの基本機能であるジョブ処理の一部として
実行される。以下、図1〜図10のフローチャートに基
づいて説明する。尚、サブコンピュータ52はノック検
出処理専用のコンピュータであるため、その動作説明を
省略する。
【0054】イグニッションスイッチ56がONされて
システムに電源が投入されると、図2に示すリセット割
込みが起動する。このリセット割込みは、システム投入
時のリセット、あるいは、内部演算において0による除
算を実行した場合や、無限ループが発生した場合など、
正常時には発生しない要因によっても起動され、ステッ
プS50で、バックグランド処理のワークエリアを設定す
ると、ステップS51,S52で、スタックポインタの設定、
異常監視用のウオッチドッグタイマの設定を行なう。
【0055】次に、ステップS53,S54で、I/Oインタ
ーターフェース64のポート初期化と、カウンタ・タイ
マ群62の初期化とを行ない、ステップS55で、割込み
優先順位をセットすると、ステップS56で、SCI63
を初期化し、シリアル通信を初期化する。
【0056】その後、ステップS57で、RAM60のク
リアRAMエリアをクリアすると、ステップS58へ進ん
で各変数の初期値を設定し、ステップS59で、スイッチ
入力初期設定サブルーチンを実行し、後述するスイッチ
入力読込みサブルーチンに対するスイッチ入力の初 期
設定を行なう。
【0057】このスイッチ入力の初期設定について説明
すると、図3に示すフローチャートのステップS70で、
アイドルスイッチ33b、スタータスイッチ43などの
複数のスイッチが接続されたI/Oインターフェース6
4の入力ポートから、アキュムレータAに8ビッ トあ
るいは16ビットのパラレルデータを読込み、次いで、
ステップS71,S72の各ステップで、アキュムレータAの
内容すなわち上記入力ポートから読み込んだデータを、
それぞれ、メモリM1、メモリM2にストアしてルーチ
ンを抜ける。
【0058】上記メモリM1は、上記入力ポートから読
込んたデータをバックアップするためにRAM60の所
定アドレスに確保されたメモリであり、4ms毎に実行
される後述のスイッチ入力読込みサブルーチンにおい
て、スイッチのチャタリング対策を行なう上で、上記メ
モリM1のデータが1回前(4ms前)のデータとして
利用される。また、上記メモリM2は、後述のスイッチ
入力読込みサブルーチンにおいて、チャタリング対策を
施された結果のデータをストアするため、同様に、RA
M60の所定アドレスに確保されたメモリであり、上記
メモリM2のデータがスイッチ入力データとしてECU
内部で使用される。
【0059】そして、上記ステップS59でスイッチ入力
初期設定サブルーチンを実行した後は、リセット割込み
のステップS60へ戻り、カウンタ・タイマ群62中の燃
料噴射タイマを噴射幅0で起動することにより燃料噴射
終了状態とし、次の燃料噴射開始に備える。次いで、ス
テップS61で、定期割込みタイマを起動し、ステップS62
で、クラセン割込みを許可すると、ステップS63のバッ
クグランド処理へ移行する。
【0060】上記バックグランド処理は、0.5ms毎
の定期割込み、クラセン割込み、その他、各レベルのジ
ョブ、サブルーチンが実行されていない状態でスタック
の使用状況、デバッグ用シミュレーションモードへの移
行を監視しながらバックグランドジョブを実行するよう
になっており、このバックグランドジョブの上で、0.
5ms毎の定期割込みと、エンジン1回転に6回のクラ
セン割込みとにより、7レベルのジョブが優先処理され
る。
【0061】まず、図4に示す0.5ms毎の定期割込
みについて説明する。この定期割込みでは、ステップS1
00で、OS用ワークエリアを設定し、ステップS101で、
ウオッチドッグタイマを初期化すると、ステップS102へ
進んで、P−RUNフラグを20回に1回すなわち10
ms毎に反転する。このP−RUNフラグは、図示しな
い保護回路によってシステムが自動的にリセットされな
いようにするためのフラグであり、システムが正常に動
作して一定時間毎(10ms毎)に反転される限り、上
記保護回路の作動が阻止される。
【0062】次いで、ステップS103へ進み、スイッチ出
力の転写を行なう。このスイッチ出力は、各ジョブ中で
メモリに書き込んだビットのON,OFF値であり、各
ジョブからは直接I/Oインターフェース64の出力ポ
ートに出力せず、OS側で0.5ms毎にメモリの値を
出力ポートに転写する。
【0063】次に、ステップS104へ進むと、A/D変換
サブルーチンを実行してA/D変換に係る各種設定を行
ない、ステップS105で、ジョブフラグ作成サブルーチン
を実行して、2,4,10,50,250ms毎の各ジ
ョブ割込み要求を示すジョブフラグJB_FLGを作成
した後、ステップS106で、A/D変換をスタートする。
【0064】上記A/D変換は、基本的に、A/D変換
器66の8チャンネル入力が0.5ms毎に所定の変換
順番毎に処理され、4ms周期で全入力の変換が行なわ
れる。但し、特定の1つのチャンネルは、回転脈動が発
生する吸入管圧力などをA/D変換するためクランク角
90°毎に(0.5msの時間精度で)同期し、変換順
番に対して割込んだ形で処理が行なわれ、その後の入力
の順番を1つ遅れにする。
【0065】尚、エンジン回転数3750rpm以上で
は、A/D変換の最後の順番の入力が完全に停止し、7
500rpm以上では、最後から2番目の入力も停止す
るが、A/D変換の順番は、スロットル開度、吸入空気
量など変化の速いものを先として、冷却水温、電圧など
比較的変化の遅いものが後になるように設定してあり、
且つ、最後のA/D変換順番をクランク同期入力に設定
してあるため、特に支障は生じない。
【0066】また、図12に示すように、上記ジョブフ
ラグJB_FLGは、1バイト変数の各ビットを各ジョ
ブに対応するフラグとして割当てたものであり、複数の
ジョブ要求が同時に可能なようになっている。この1バ
イト変数のビット1〜ビット7は優先レベル1〜7に対
応し、それぞれ、250msジョブ、50msジョブ、
低優先クラセンジョブ、10msジョブ、4msジョ
ブ、2msジョブ、クラセンジョブのフラグに割当てら
れている。そして、所定のビットが立てられたとき、対
応する優先レベルのジョブ割込み要求がなされる。尚、
ビット0はバックグランドジョブのフラグに割当てられ
て通常は参照されない。
【0067】そして、上記ステップS105でジョブフラグ
作成サブルーチンによりジョブフラグJB_FLGを作
成し、ステップS106でA/D変換をスタートした後は、
ステップS107へ進み、ジョブフラグJB_FLGのいず
れかのジョブに対応するビットが立っているか否かを調
べる。
【0068】その結果、上記ステップS107で、ジョブフ
ラグJB_FLGのビットが一つも立っていないときに
は、どのジョブからも要求がないため割込みを終了し、
ジョブフラグJB_FLGのいずれかのビットが立って
いるときには、ステップS108へ進んで、現状レベル(こ
の定期割込みが実行される時点で所定の優先レベルのジ
ョブが実行されていた状態)以下のフラグがないか否か
を調べる。
【0069】上記ステップS108で、現状レベル以下のフ
ラグがないときには、ラベルWAR_JBで示される図
6のジョブ優先処理にジャンプし、現状レベル以下のフ
ラグがあるときには、ステップS109で、現状レベル以下
のレベルのオーバーラップカウンタOLCを1増加させ
る。
【0070】上記オーバーラップカウンタOLCは、ジ
ョブ要求を記憶するためのカウンタであり、各優先レベ
ル毎に1バイト割当てられ、上記ジョブフラグJB_F
LGによるジョブ要求時にインクリメント、ジョブ終了
時にデクリメントされる。すなわち、カウンタによって
ジョブ要求を記憶することによりジョブの多重要求に対
応することができるのである。
【0071】次いで、上記ステップS109からステップS1
10へ進み、現状レベルより高いフラグがないか否かを調
べ、現状レベルより高いフラグがないときには、ルーチ
ンを抜けて割込みを終了し、現状レベルより高いフラグ
があるときには、ラベルWAR_JBのジョブ優先処理
へジャンプする。
【0072】一方、この0.5ms毎の定期割込みに対
し、図5のクラセン割込みでは、ステップS200で、OS
用ワークエリアを設定すると、ステップS201で、クラン
ク位置・半回転時間算出のサブルーチンを実行し、現在
のクランク位置を判別するためのクランク位置変数、及
び、最新の3つのクラセン間隔の和である半回転時間を
算出する。
【0073】上記クランク位置変数は、OS中で用意さ
れるシステム変数であり、図13に示すように、#1〜
#4気筒に対するクランク位置を、97°,65°,1
0°CAによって12の状態に区分し、現在のクランク
位置を表わす。
【0074】すなわち、各気筒毎に、0,1,2の数値
でクラセン入力順を示すクラセン順序S_CCAS、#
1気筒を0、#3気筒を1、#2気筒を2、#4気筒を
3として気筒の燃焼順を示す気筒順序S_RCAS、及
び、0〜11の数値でクラセン順序及び気筒順序を総合
的に表わす総合位置S_ACASの3変数によって現在
のクランク位置を表わし、さらに、クランク位置が確証
をもって正常に判別されたときを0、判別結果がつじつ
まが合わず不安の残る推定状態を1、不明な状態を2と
するエラーレベルS_ECASにより、クランク位置の
判別状況を表わすようになっている。
【0075】次いで、上記ステップS201からステップS2
02へ進むと、クランク位置・半回転時間算出のサブルー
チンにおいてクランク位置判定が正常に終了したかある
いは判定不能であったかを、アキュムレータAにストア
されているコードを読み出すことにより調べる(エラー
コード1、正常終了コード0)。
【0076】そして、上記ステップS202で、アキュムレ
ータAの値が1であり、クランク位置が判定不能であっ
たときには、割込みを終了し、アキュムレータAの値が
0であり、クランク位置が正常に判定されているときに
は、ステップS203へ進み、エンストフラグを解除する。
【0077】尚、上記エンストフラグは、クラセン間隔
計測タイマがO.5sec以上の時間(約30rpm以
下)を計測したときセットされてエンジンがエンスト状
態であることを示すフラグであり、このクラセン割込み
によりクリアされ、エンスト状態が解除される。
【0078】次に、ステップS204へ進むと、点火タイマ
セットのサブルーチンを実行し、ユーザージョブ側で設
定した点火時期の指示値に基づいて作成された点火スケ
ジュールに従って点火タイマをセットする。この点火ス
ケジュールは、ドエル開始時期、ドエルオン待ち時間、
ドエルオフ待ち時間などをメンバーとする構造体変数で
あり、10msジョブ中に作成ルーチンが用意され、こ
の点火スケジュールに従って点火シーケンスが決定され
る。
【0079】次いで、スップS205で、燃料噴射タイマセ
ットのサブルーチンを実行し、ユーザージョブ側で設定
した燃料噴射量の指示値(各気筒毎の噴射幅)に対し、
燃料噴射開始時期などを燃料噴射タイマにセットしてス
テップS206へ進む。
【0080】ステップS206では、このクラセンが実行さ
れた現状のジョブレベルが自身のジョブレベルであるか
否かを判別し、現状がクラセンジョブ自身のレベルであ
るときには、ステップS207、S208で、クラセンジョブ、
低優先クラセンジョブのオーバーラップカウンタ OL
Cを、それぞれ1増加させて割込みを終了し、現状のジ
ョブレベルがクラセンジョブのレベルでないときには、
ステップS209で、現状のジョブレベルが低優先クラセン
ジョブのレベル以上であるか否かを調べる。
【0081】そして、現状のジョブレベルが低優先クラ
センジョブ以上であるときには、上記ステップS209から
ステップS210へ進んで、低優先クラセンジョブのオーバ
ーラップカウンタOLCを1増加させると、ステップS2
11で、クラセンジョブのジョブフラグをセットし、ラベ
ルWAR_JBのジョブ優先処理へジャンプする。
【0082】一方、上記ステップS209で、現状のジョブ
レベルが低優先クラセンジョブ以上でないときには、上
記ステップS209からステップS212へ進み、クラセンジョ
ブのジョブフラグをセットすると、ステップS213で、低
優先クラセンジョブのジョブフラグをセットし、ラベル
WAR_JBのジョブ優先処理へジャンプする。
【0083】このジョブ優先処理では、ステップS300
で、ジョブの優先レベルを示す1バイト変数であるジョ
ブレベルJB_LEVを1つ上げると、ステップS301へ
進んで、この優先レベルに対応するジョブフラグが立っ
ていないか調べる。そして、ジョブフラグが立っていな
いときには、ステップS300へ戻ってさらにジョブレベル
JB_LEVを1つ上げ、ジョブフラグが立っていると
きには、ステップS302へ進み、ジョブフラグの立ってい
るジョブのオーバーラップカウンタOLCを初期値の0
から1にし、ステップS303へ進む。
【0084】ステップS303では、より上のジョブフラグ
があるか否かを調べ、より上のジョブがあるときには、
ステップS300へ戻って前述の処理を繰り返し、より上の
ジョブがないときには、ステップS304へ進んで、ジョブ
実行中フラグJB_RUNをセットすると、ステップS3
05で、後述するジョブ実行サブルーチンにより最上位の
ジョブを実行する。
【0085】上記ジョブ実行中フラグJB_RUNは、
ジョブの実行開始時にセットされ、終了時にクリアされ
るフラグであり、このフラグにより、処理の途中で、よ
り優先度の高いジョブによって割込まれたジョブを識別
することができる。
【0086】例えば、図14に示すように、JB_LE
V=4の10msジョブを実行中、JB_LEV=6の
2msジョブの割込み要求がなされると、10msジョ
ブの処理が中断され、より優先度の高い2msジョブ
が、JB_RUN=1、OLC=1にセットされ、実行
される。そして、この2msジョブの処理中に、JB_
LEV=5の4msジョブの割込み要求が発生すると、
この4msジョブは、JB_RUN=0、OLC=1と
されて割込みが受付けられるが、実行はされず待機状態
となる。
【0087】その後、ジョブ実行サブルーチンによるジ
ョブの実行が終了すると、上記ステップS305からステッ
プS306へ進んでオーバーラップカウンタOLCを1減ら
し、ステップS307で、オーバーラップカウンタOLCが
ゼロになったか否かを調べる。その結果、オーバラップ
カウンタOLCがゼロになっておらず、同じ優先レベル
でジョブ割込み要求が複数回あるときには、ステップS3
05へ戻ってジョブを繰返し実行し、オーバラップカウン
タOLCがゼロになったとき、ステップS307からステッ
プS308へ進んで、ジョブ実行中フラグJB_RUNをク
リアする。
【0088】次に、ステップS309へ進み、ジョブレベル
JB_LEVを1つ下げて次のジョブレベルに移ると、
ステップS310で、このジョブレベルJB_LEVがゼロ
になったか否かを調べる。そして、ジョブレベルJB_
LEVがゼロのときには、この割込みを終了し、ジョブ
レベルJB_LEVがゼロでないときには、ステップS3
11へ進んで、オーバーラップカウンタOLCがゼロか否
かを調べる。
【0089】上記ステップS311で、オーバーラップカウ
ンタOLCがゼロのときには、このレベルではジョブ要
求はないため、上記ステップS311からステップS309へ戻
って、ジョブレベルJB_LEVをさらに1つ下げて同
様の処理を繰返し、オーバーラップカウンタOLCがゼ
ロでないときには、ステップS312へ進んで、このジョブ
レベルにおいて、ジョブ実行中フラグJB_RUNがセ
ットされているか否かを調べる。
【0090】上記ステップS312で、ジョブ実行中フラグ
JB_RUNがセットされているときには、割込み前に
ジョブを実行中であったため、割込みを終了して割込み
前のジョブへ戻り、ジョブ実行中フラグJB_RUNが
セットされていなければ、ステップS304へ戻って、この
レベルのジョブを実行し、同様の処理を繰返す。
【0091】すなわち、図14において、JB_LEV
=6の2msジョブが終了し、OLC=0、JB_RU
N=0になると、ジョブレベルが1つ下げられ、JB_
LEV=5の4msジョブが、JB_RUN=0、OL
C=1の待機状態からJB_RUN=1にセットされ、
実行される。さらに、4msジョブが終了すると、JB
_LEV=4に移り、JB_RUN=1(ジョブ実行
中)の状態から、2msジョブ及び4msジョブによっ
て中断されていた10msジョブの処理が再開される。
【0092】このように、0.5ms毎の定期割込み、
クラセン割込みを基本タイミングとして、各ジョブの優
先レベル及び実行タイミングを知らせるジョブフラグJ
B_FLGを作成するため、可能な限り正確に、等時間
間隔処理、エンジン回転同期処理を実現し、各ジョブを
効率良く処理することができる。さらに、基本タイミン
グとなる各割込み毎に更新されるジョブフラグJB_F
LGによらず、オーバーラップカウンタOLCによって
ジョブの多重要求を記憶するため、あるジョブの処理時
間が長引き、再度、同じジョブを実行すべきタイミング
となった場合においても、処理を途中で放棄することな
く、可能な限り最後まで処理を継続することができる。
【0093】次に、図7〜図10のジョブ実行サブルー
チンについて説明する。
【0094】まず、ステップS500で、ジョブフラグJB
_FLGを参照して実行すべきジョブがクラセンジョブ
でないか否かを調べ、クラセンジョブでないときには、
ラベルALJ10へ分岐し、クラセンジョブのときに
は、ステップS501へ進んで、気筒判別がついているか否
かを調べる。
【0095】そして、気筒判別がついていないときに
は、そのままルーチンを抜けてジョブを実行せず、気筒
判別がついているとき、上記ステップS501からステップ
S502へ進んで、オーバーラップカウンタOLCの値を参
照して多重待ち状態であるか否かを調べる。
【0096】上記ステップS502では、多重待ち状態でな
いとき、ステップS503へ進んで、クラセン割込み毎に算
出されるシステム変数S_ACAS(クランク総合位
置)をユーザー変数ACASとし、一方、多重待ち状態
のときには、ステップS504へ分岐し、ユーザー変数AC
ASを一つ増やして12で割った剰余をとって新たなユ
ーザー変数ACASとし、このユーザー変数ACASを
0,1,2,…,11,0,1,…とソフトウエア的に
更新してゆく。
【0097】すなわち、クラセンジョブ及び低優先クラ
センジョブは、自身または優先度の高いジョブに邪魔さ
れて遅れることがあるが、クラセン割込みは正確にクラ
ンク角センサ信号に同期して実行され、システム変数S
_ACASはジョブの遅れに関係なく更新される。
【0098】従って、ジョブ中でシステム変数S_AC
ASを参照してクランク位置を知り、このクランク位置
に応じた仕事を行なおうとしても、自身が他のジョブに
邪魔されて遅れた場合には、自身の仕事に対応したクラ
ンク位置を知ることができなくなる。このため、クラセ
ンジョブ及び低優先クラセンジョブ中では、多重待ち状
態でないときにOS用のシステム変数S_ACASをユ
ーザー用変数ACASとして取込み、このユーザー変数
ACASをジョブ実行毎に更新して多重要求の場合にも
クランク位置に対応した適正な処理がなされるようにす
るのである。
【0099】その後、上記ステップS503あるいは上記ス
テップS504からステップS505へ進み、ジョブのワークエ
リアを設定すると、ステップS506で、レベルゼロの割込
みを許可し、ステップS507で、クラセンジョブのセクシ
ョンに移る。そして、このクラセンジョブセクションに
リンクされた処理を実行し、ステップS508で、割込みを
禁止してルーチンを抜ける。
【0100】次に、ステップS500で、これから実行すべ
きジョブがクラセンジョブでないときには、ラベルAL
J10のステップS510で、2msジョブでないか否か調
べ、2msジョブのとき、ステップS511で、ジョブのワ
ークエリアを設定すると、ステップS512で、レベルゼロ
の割込みを許可し、ステップS513で、2msジョブのセ
クションに移る。そして、このセクションにリンクされ
ているジョブ本体(ユーザー側の制御ストラテジーに基
づくルーチン、あるいは、OS側で用意したサービスル
ーチン)を実行し、ステップS514で、割込みを禁止して
ルーチンを抜ける。
【0101】一方、上記ステップS510で、実行すべきジ
ョブが2msジョブでないときには、ステップS510から
ステップS520へ分岐し、実行すべきジョブが4msジョ
ブか否かを調べる。そして、4msジョブでないときに
は、ラベルALJ30へ分岐し、4msジョブのときに
は、ステップS521で、ジョブのワークエリアを設定する
と、ステップS522へ進む。尚、この4msジョブは、A
/D変換利用ジョブであり、後述するシステムシフトバ
ッファSSHBを介してA/D変換データを利用する。
【0102】ステップS522では、レベルゼロの割込みを
許可し、次いで、ステップS523へ進むと、後述するスイ
ッチ入力読込みサブルーチンにチャタリング対策を行っ
てスイッチ入力を読込み、ステップS524で、4msジョ
ブのセクションに移って、リンクされているジョブ本体
を実行する。その後、4msジョブのセクションから抜
けると、ステップS525で、割込みを禁止し、ステップS5
26へ進んで、システムシフトバッファSSHBをシフト
してルーチンを抜ける。
【0103】上記システムシフトバッファSSHBは、
図15に示すように、8チャンネルの各A/D変換結果
がストアされる先頭オフセットアドレス0,+8,+1
6,+24,+32,+34,+36,+38番の各メ
モリ、及び、4ms毎のクランク同期のA/D変換結果
がストアされる先頭オフセットアドレス−2番地の1ワ
ードのメモリからなり、0.5ms毎に実行される1回
のA/D変換結果が1ワード(2バイト)でストアされ
る。
【0104】先頭オフセットアドレス0番地からは、4
段のシフトメモリとなっており、90°CA毎のA/D
変換結果がストアされ、最新4データ(1回転分)をジ
ョブから参照することができる。また、先頭オフセット
アドレス+32,+34,+36,+38番地は、各1
ワードのメモリであり、なまし処理機能が選択されたと
き、A/D変換結果を加重平均した値がストアされてノ
イズ除去と精度向上を図ることができるようになってお
り、これらのメモリのデータは、低速ジョブで利用でき
る。
【0105】また、各先頭オフセットアドレス+8,+
16,+24番地からは、各4ワードのメモリであり、
4msジョブで利用するようになっている。これらの各
メモリは、最新のA/D変換結果が先頭から数えて、4
msジョブのオーバーラップカウンタOLCの値だけ後
のワードにストアされ、4msジョブの実行に際し先頭
ワードからデータが読出され、ジョブの終了に伴って後
の各ワードのデータが順に先頭方向にシフトされるの
で、先にストアしたデータから読出されるFIFOバッ
ファとなっている。
【0106】すなわち、A/D変換は、0.5ms毎の
定期割込みにより4ms周期で正確に行なわれるが、4
msジョブは優先度の高いジョブに邪魔されて遅れるこ
とがある。従って、A/D変換の受渡しにFIFOバッ
ファを用い、4msジョブで+8,+16,+24番地
の各FIFOバッファのデータを参照後、上記ステップ
S526で、各FIFOバッファのデータを順にシフトする
のである。
【0107】一方、上記ステップS520で、実行すべきジ
ョブが4msジョブでなく、ラベルALJ30へ分岐し
たときには、ステップS530で、実行すべきジョブが10
msジョブか否かを調べ、10msジョブのとき、ステ
ップS531で、ジョブのワークエリアを設定し、ステップ
S532で、レベルゼロの割込みを許可すると、ステップS5
33で、10msジョブのセクションに移って、ジョブ本
体を実行し、ステップS534で割込みを禁止してルーチン
を抜ける。
【0108】尚、上記10msジョブのセクションに
は、半回転時間からエンジン回転数を算出するサービス
ルーチン、前述した点火スケジュールを作成するサービ
スルーチンなどがOS側で用意されている。
【0109】また、上記ステップS530で、実行すべきジ
ョブが10msジョブでないときには、上記ステップS5
30からステップS540へ分岐し、実行すべきジョブが低優
先クラセンジョブであるか否かを調べる。そして、低優
先クラセンジョブでないときには、上記ステップS540か
らラベルALJ50へ分岐し、実行すべきジョブが低優
先クラセンジョブのときは、上記ステップS540からステ
ップS541へ進んで、現在の状態が多重待ち状態であるか
否かを調べる。
【0110】そして、現在の状態が多重待ち状態でない
ときには、上記ステップS541からステップS542へ進ん
で、システム変数S_ACAS(クランク総合位置)を
ユーザー変数ACASとしてステップS544へ進み、多重
待ち状態のときには、上記ステップS541からステップS5
43へ分岐し、ユーザー変数ACASを一つ増やして12
で割った剰余をとった後、ステップS544へ進む。
【0111】ステップS544では、ジョブのワークエリア
を設定し、ステップS545で、レベルゼロの割込みを許可
すると、ステップS546で、低優先クラセンジョブのセク
ションに移り、ジョブ本体を実行した後、ステップS547
で割込みを禁止し、ルーチンを抜ける。
【0112】さらに、ラベルALJ50では、ステップ
S550で実行すべきジョブが50msジョブであるか否か
を調べ、50msジョブのときには、ステップS551へ進
んでジョブのワークエリアを設定し、ステップS552へ進
む。
【0113】ステップS552では、レベルゼロの割込みを
許可すると、ステップS553で、50msジョブのセクシ
ョンに移り、OS側で用意したエンストフラグ作成ルー
チン、気筒別の点火時期リタードルーチン、燃料噴射開
始時期設定ルーチンなどを実行し、また、ユーザ側の制
御ストラテジーに基づくルーチンを実行する。そして、
ジョブの終了後、ステップS554で割込みを禁止し、ルー
チンを抜ける。
【0114】一方、上記ステップS550で実行すべきジョ
ブが50msジョブでないときには、上記ステップS550
からステップS560へ分岐し、ジョブのワークエリアを設
定すると、ステップS561で、レベルゼロの割込みを許可
し、ステップS562へ進んで、250msジョブのセクシ
ョン領域へ移行し、ジョブ本体を実行後、ステップS563
で割込みを禁止してルーチンを抜ける。
【0115】以上のジョブ実行サブルーチンにおけるス
テップS523のスイッチ入力読込みのサブルーチンは、図
1に示され、4ms毎に実行される。
【0116】このサブルーチンでは、まず、ステップS6
00で、I/Oインターフェース64の入力ポートからア
キュムレータAにパラレルデータ(8ビットあるいは1
6ビット)を読込み、ステップS601で、アキュムレータ
BにアキュムレータAの内容をコピーする。
【0117】次に、ステップS602へ進み、アキュムレー
タAの内容と、前述したメモリM1の内容とのビット毎
のAND(論理積)をとり、その結果をアキュムレータ
Aの内容とした後、ステップS603で、アキュムレータB
の内容をメモリM1にバックアップデータとしてストア
し、ステップS604で、アキュムレータAの内容を、現在
の各スイッチのON,OFF状態を示すデータとしてメ
モリM2にストアしてルーチンを抜ける。
【0118】すなわち、図16に示すように、スイッチ
がOFFからONへ切換わった直後のチャタリングが発
生している状態では、データが4ms前後で変化するた
め、スイッチOFFとしてデータが読込まれ、チャタリ
ングがなくなって安定し、4ms前後のデータの変化が
なくなったとき初めてスイッチONのデータが読込まれ
る。
【0119】一方、スイッチがONからOFFへ切換わ
った直後には、新たに読込んだスイッチOFFのデータ
によって直ちにスイッチOFFのデータがメモリM2に
ストアされ、しかも、4ms後に、チャタリングにより
スイッチONのデータが読込まれても、バックアップさ
れたスイッチOFFのデータとのANDがとられるた
め、スイッチONと判断されることはない。
【0120】これにより、複数のスイッチに対し、個々
のスイッチによってチャタリングの大きさ、継続時間が
異なっても、ハードウエアによってチャタリング対策を
行う場合のようにコストを上昇させることなく、確実に
チャタリングを除去することができ、しかも、複数のス
イッチ入力を一括して短時間で処理するため、各スイッ
チのON,OFF状態を応答性良く読み込むことができ
る。
【0121】尚、上記スイッチ入力読込みサブルーチン
は、4msジョブのセクション中に用意しておいても良
い。
【0122】図21は本発明の第2実施例に係わり、ス
イッチ入力読込みのサブルーチンのフローチャートであ
る。
【0123】この第2実施例は、前述の第1実施例に対
し、スイッチ入力読込みサブルーチンにおけるビット毎
AND命令の実行をより高速化するものであり、他の構
成は前述の第1実施例と同じである。
【0124】この第2実施例のスイッチ入力読込みサブ
ルーチンでは、ステップS700で、アキュムレータAに入
力ポートからデータを読込むと、ステップS701で、アキ
ュムレータBにメモリM1のデータを読込み、次いで、
ステップS702へ進んで、アキュムレータAの内容を、バ
ックアップデータとしてメモリM1にストアする。
【0125】そして、ステップS703へ進み、アキュムレ
ータAの内容とアキュムレータBの内容とのビット毎A
ND命令を実行し、その結果をアキュムレータAの内容
とした後、ステップS704で、アキュムレータAの内容を
メモリM2にストアしてルーチンを抜ける。
【0126】すなわち、前述の第1実施例では、ビット
毎AND命令をアキュムレータ対メモリで実行している
が、この第2実施例では、アキュムレータ同士で実行す
るため、命令の実行がより高速化され、処理速度をより
一層向上することができるのである。
【0127】
【発明の効果】以上説明したように本発明によれば、ス
イッチが接続される入力ポートから所定時間前に読込ん
だデータと、この入力ポートから新たに読込んだ現在の
データとのビット毎の論理積をとることにより、チャタ
リングが発生している場合にはこのチャタリングを除去
して現在のスイッチのオンオフ状態を読込むため、個々
のスイッチによって異なるチャタリングの大きさ、継続
時間に対し、コストを上昇させることなく有効にチャタ
リングを除去し、応答性良くスイッチ信号を読込むこと
ができるなど優れた効果が得られる。
【図面の簡単な説明】
【図1】本発明の第1実施例に係わり、スイッチ入力読
込みサブルーチンのフローチャート
【図2】同上、リセット割込み処理のフローチャート
【図3】同上、スイッチ入力初期設定サブルーチンのフ
ローチャート
【図4】同上、0.5ms毎の定期割込み処理のフロー
チャート
【図5】同上、クラセン割込み処理のフローチャート
【図6】同上、ジョブ優先処理のフローチャート
【図7】同上、ジョブ実行サブルーチンの部分フローチ
ャート1
【図8】同上、ジョブ実行サブルーチンの部分フローチ
ャート2
【図9】同上、ジョブ実行サブルーチンの部分フローチ
ャート3
【図10】同上、ジョブ実行サブルーチンの部分フロー
チャート4
【図11】同上、ジョブの実行状態を示す説明図
【図12】同上、ジョブフラグの説明図
【図13】同上、クランク位置変数の説明図
【図14】同上、ジョブ実行中フラグとオーバーラップ
カウンタの変化を示す説明図
【図15】同上、システムシフトバッファの説明図
【図16】同上、スイッチ入力の入力ポートデータとチ
ャタリング対策後のデータとの関係を示すタイムチャー
【図17】同上、エンジン系の概略構成図
【図18】同上、クランクロータとクランク角センサの
正面図
【図19】同上、カムロータとカム角センサの正面図
【図20】同上、電子制御系の回路構成図
【図21】本発明の第2実施例に係わり、スイッチ入力
読込みサブルーチンのフローチャート
【符号の説明】
50 ECU 64 I/Oインターフェース

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 車輌に設けたスイッチからの信号を、オ
    ンオフ状態に対応したビットデータとして読込む車輌制
    御用コンピュータにおけるスイッチ入力データの読込み
    方法であって、 上記スイッチを接続した入力ポートから所定時間前に読
    込んだデータと、上記入力ポートから新たに読込んだ現
    在のデータとのビット毎の論理積をとり、この論理積を
    上記スイッチからの現在の入力データとすることを特徴
    とする車輌制御用コンピュータにおけるスイッチ入力デ
    ータの読込み方法。
JP3096793A 1993-02-19 1993-02-19 車輌制御用コンピュータにおけるスイッチ入力データの読込み方法 Pending JPH06249054A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3096793A JPH06249054A (ja) 1993-02-19 1993-02-19 車輌制御用コンピュータにおけるスイッチ入力データの読込み方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3096793A JPH06249054A (ja) 1993-02-19 1993-02-19 車輌制御用コンピュータにおけるスイッチ入力データの読込み方法

Publications (1)

Publication Number Publication Date
JPH06249054A true JPH06249054A (ja) 1994-09-06

Family

ID=12318446

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3096793A Pending JPH06249054A (ja) 1993-02-19 1993-02-19 車輌制御用コンピュータにおけるスイッチ入力データの読込み方法

Country Status (1)

Country Link
JP (1) JPH06249054A (ja)

Similar Documents

Publication Publication Date Title
US4690122A (en) Ignition control system for internal combustion engines
JP3337149B2 (ja) エンジンのクランク位置判別方法
JPH06249054A (ja) 車輌制御用コンピュータにおけるスイッチ入力データの読込み方法
JP3442806B2 (ja) ジョブの優先処理方法
JP3324818B2 (ja) エンジンのクランク位置情報利用方法
JP3455243B2 (ja) アナログ/デジタル変換結果の利用方法
JP3645576B2 (ja) エンジンの回転時間算出方法
JPH06200819A (ja) マイクロコンピュータのワークエリアの設定方法
JP3617847B2 (ja) ジョブの統合方法
JP3530549B2 (ja) 多気筒エンジンの燃料噴射制御方法
JP3294366B2 (ja) エンジンの点火制御における点火コイルの通電状態判別方法
JP3555689B2 (ja) 多気筒エンジンの燃料噴射制御方法
JPH06257500A (ja) エンジン運転状態の把握方法
JP3294365B2 (ja) エンジンの点火制御方法
JPH06249053A (ja) アナログ/デジタル変換方法
JP3331237B2 (ja) 多気筒エンジンの気筒別噴射開始区間設定方法
JPH06257501A (ja) エンジンの半回転時間推定方法
JP3442807B2 (ja) エンジン回転のシミュレーション方法
JPH07103052A (ja) 多気筒エンジンの燃料噴射制御方法
JPH06257502A (ja) エンジン回転数の算出方法
JP3384498B2 (ja) エンジンの点火制御における処理遅れ解消方法
JPH0719100A (ja) 多気筒エンジンの気筒別噴射開始区間設定方法
JP3530551B2 (ja) 多気筒エンジンの燃料噴射制御方法
JPH06231004A (ja) アナログ/デジタル変換のシミュレーション方法
JPH06272651A (ja) エンジンの点火制御における通電シーケンスの設定方法