JP4265071B2 - 自己診断機能を備えた車両用制御装置及び記録媒体 - Google Patents
自己診断機能を備えた車両用制御装置及び記録媒体 Download PDFInfo
- Publication number
- JP4265071B2 JP4265071B2 JP2000057356A JP2000057356A JP4265071B2 JP 4265071 B2 JP4265071 B2 JP 4265071B2 JP 2000057356 A JP2000057356 A JP 2000057356A JP 2000057356 A JP2000057356 A JP 2000057356A JP 4265071 B2 JP4265071 B2 JP 4265071B2
- Authority
- JP
- Japan
- Prior art keywords
- abnormality
- abnormality detection
- water temperature
- abnormal
- self
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Combined Controls Of Internal Combustion Engines (AREA)
- Testing And Monitoring For Control Systems (AREA)
Description
【発明の属する技術分野】
本発明は、車両を制御する車両用制御装置の自己診断機能に関し、さらに、当該自己診断機能をオブジェクト指向プログラミングにて実現する技術に関する。
【0002】
【従来の技術】
近年、高性能マイクロプロセッサの出現などエレクトロニクス技術の進歩を背景として、機械技術と電子技術とが結びついたメカトロニクス技術の進歩が著しい。メカトロニクスの進歩の一部として、自動車等の車両にも多くのコンピュータシステムが採用されてきている。このような車載用のコンピュータシステムは、省資源、省エネルギー、走行性能、安全性、快適性等を追求するものであり、車両内のエンジン・駆動系、走行・安全系、エンターテイメント系、及びその他の随所に搭載されている。
【0003】
その中でも特に高い信頼性を要求される車両制御用のコンピュータシステムは、システム内の各部位の異常検出を的確に行わないと、走行上の不具合を引き起こす可能性があり、場合によっては走行不能となることもある。そのため、コンピュータシステムに自己診断機能を備えることにより、信頼性の向上が図られている。すなわち、コンピュータ部やセンサ類の動作状態を適当な周期で自動的にチェックし、故障時には、ユーザなどに故障を知らせるための警告灯(MIL)を点灯したり、その故障内容が修理担当者などに分かるよう異常コード(DTC)を記憶したりするダイアグノーシス(以下「ダイアグ」という。)処理を可能にしている。このダイアグ処理の対象は、クランク角センサ、カム角センサ、水温センサなどの各センサをはじめ、現在では約200にもおよぶ。以下、ダイアグ処理の対象を「ダイアグ対象」と呼ぶ。
【0004】
ところでこのダイアグ処理は、ただ単にダイアグ対象の作動状態を単発的にチェックして「正常」又は「異常」を判定するものではない。「正常」、「異常」にもレベルがあるからである。例えば、センサからの入力信号系の「異常」を例に挙げた場合、コネクタ等における一時的な接触不良も「異常」であるし、完全な断線も「異常」である。前者の場合は、その後良好な作動状態を維持することがあり、特に部品交換の必要性が認められないことがある。したがって、一度異常と判定された場合であっても、例えば40暖機サイクルの間に全てのダイアグ対象について異常が検出されなかった場合には、それまでに記憶した異常コードを全て消去する車両用制御装置があった。
【0005】
【発明が解決しようとする課題】
本発明は、ある限定された期間に上述したような一時的な異常が検出される可能性が高く、そのために記憶される異常コードによって生じる不都合に着目したものである。これについて説明する。
【0006】
一時的な異常が検出される可能性の高い期間として、例えば工場における車両の組立期間や工場出荷直後の走行期間が挙げられる。車両の組立期間においては、動作確認のためにバッテリを仮固定するため、バッテリ接続関係の異常が検出されてしまう可能性が高い。また、工場出荷直後の走行期間には、エンジン等の稼働部分から微量の金属くずが出るため、この金属くずの影響によって異常が検出されてしまう可能性が高い。そして、これらの異常はどちらも、一時的なものであって本質的なものでない。しかしながら、従来の構成において異常コードの消去は、上述したように、全てのダイアグ対象について40暖機サイクルの間異常検出がなされなかった場合にはじめて行われる。したがって、異常コードが消去されないうちにユーザが車両を修理工場などに持ち込んだ場合など、記憶された異常コードに基づき、本来は交換する必要のない部品が交換されてしまうという問題があった。
【0007】
これを防止するためには、一度記憶された異常コードを、ダイアグ対象毎に、例えば20暖機サイクルというような比較的早いタイミングで消去することが考えられる。ところが、あるダイアグ対象に対して複数の異常検出手法が存在することがあるため、そのダイアグ対象に対して記憶された異常コードを単純に消去できない。例えばあるダイアグ対象の異常検出手法に2つの手法A,Bがある場合、手法Aによる異常検出がなされないからと言って、異常コードを消去してしまうことはできない。手法Bによって異常検出がなされている可能性があるためである。したがって、同一のダイアグ対象に複数の異常検出手法が存在する場合には、それら複数の異常検出結果に基づき異常コードを消去する構成を必要とする。
【0008】
そして、このような構成を採用するにあたっては、次に示す点における考慮がさらに必要になる。
それは、上述したダイアグ対象が、車種やグレードあるいはモデルチェンジのタイミングで変わるということである。そのため、再利用性を考慮したオブジェクト指向設計とすることが望ましい。つまり、ダイアグ対象に依存する処理とダイアグ対象に依存しない処理を別のオブジェクトが実行するようにして、ダイアグ対象に依存しない処理を実行するオブジェクトはそのまま再利用できるようにし、作成した自己診断プログラムを部分的に用いて新たな自己診断プログラムを作成できるようにするのである。
【0009】
本発明は、自己診断プログラムの再利用性を確保しつつ、一時的な異常によって記憶された異常時情報をダイアグ対象毎に消去できるようにし、本来は交換する必要のない部品が交換されてしまうことを極力防止することを目的とする。
【0010】
【課題を解決するための手段及び発明の効果】
上述した目的を達成するためになされた請求項1に記載の車両用制御装置は、ダイアグ対象の異常検出結果に基づき、当該ダイアグ対象に対応する異常時情報を記憶する自己診断機能を備えている。ここで異常時情報には、少なくとも異常内容を示す異常コードが含まれる。異常時情報としたのは、その他に、車速・エンジン回転数・水温・スロットル開度など異常時の車両状態を示すいわゆるフリーズデータを含める意図である。すなわち、ここでいう自己診断機能は、異常検出結果に基づき、これらの異常時情報を例えばスタンバイRAMやEEPROMに記憶するというものであり、これによって、修理工場などでスタンバイRAM又はEEPROMの記憶内容を読み出せば異常箇所を特定できる。
【0011】
本発明では、この自己診断機能が、自己診断プログラムの実行によって実現される。そして、この自己診断プログラムは、ダイアグ対象毎に処理を実行する異常検出オブジェクトと、ダイアグ対象に共通する処理を実行するオブジェクト群とから構成されている。異常検出オブジェクトは、ダイアグ対象毎に用意されて、ダイアグ対象の異常を検出する処理(異常検出処理)を実行する。一方、オブジェクト群は、異常検出オブジェクトによる異常検出結果に基づき、異常時情報を記憶する処理を実行する。
【0012】
このような構成を前提とし、本発明では特に、同一のダイアグ対象の異常を検出する複数の手法が存在する場合には、当該複数の手法毎に異常検出オブジェクトを用意する。そして、それら異常検出オブジェクトの少なくとも1つは、一度異常検出を行った後に所定の条件が満たされると、同一のダイアグ対象に係る他の異常検出オブジェクトにて異常検出がなされていない場合に限り、異常時情報を無効にするよう指示する。ここで所定の条件が満たされた場合とは、例えば20暖機サイクルといった所定回の暖機サイクルの間に異常検出がなされなかった場合や、例えば20トリップ(イグニッションキーのオンからオフまでの期間が1トリップである。)といった所定回のトリップの間に異常検出がなされなかった場合等が考えられる。また、他の異常検出オブジェクトにて異常検出がなされたか否かは、異常検出オブジェクトの異常検出結果が例えばグローバル変数に代入されるような構成においてはそのグローバル変数を参照して判断する。また、異常検出結果が例えば異常検出オブジェクトの内部情報となっている場合には、該当する異常検出オブジェクトに異常検出結果を読み出すためのメッセージを送出し、これによって異常検出結果を参照して判断する。
【0013】
そして、異常検出オブジェクトから異常時情報の無効指示があると、上述したオブジェクト群が異常時情報を無効にする。ここで「無効にする」としたのは、記憶された異常時情報を消去することだけでなく、記憶された異常時情報をマスク処理することが考えられるためである。マスク処理とは、例えば異常時情報に対するフラグを立てることによって、その異常時情報を読み出せない状態にすることをいう。この場合、記憶装置自体には異常時情報が残るため、修理工場などにおける通常操作では読み出せないが、特別な操作をすれば異常時情報を読み出して参照することができる。
【0014】
本発明によれば、検出された異常が一時的なものであれば、ダイアグ対象毎に、例えば20暖機サイクルといった比較的早いタイミングで、記憶された異常時情報が無効にされる。その結果、本来は交換する必要のない部品が交換されてしまうことを防止できる。
【0015】
また、各異常検出手法毎に用意される複数の異常検出オブジェクトの少なくとも1つが、同一のダイアグ対象に係る他の異常検出オブジェクトにて異常検出がなされていない場合に限って異常時情報の無効指示を行う。したがって、ある異常検出手法にて異常検出がなされていないからと言って、他の手法にて異常検出がなされている場合に異常コードが無効にされることもない。
【0016】
さらにまた、他の異常検出オブジェクトの異常検出結果を判断してオブジェクト群に異常時情報の無効指示を送出するのは、異常検出オブジェクトである。したがって、ダイアグ対象が変わった場合には、異常検出オブジェクトのみを変更すればよく、オブジェクト群は何等変更する必要がない。そのため、自己診断プログラムの再利用性を確保できる。
【0017】
なお、異常時情報の無効指示を行う異常検出オブジェクトは、同一のダイアグ対象に係る異常検出オブジェクトの中で、異常を検出する可能性の相対的に高い手法にて異常検出を行うものとするとよい(請求項2)。例えば、異常を検出する可能性が最も高い異常検出オブジェクトが、他の異常検出オブジェクトの異常検出結果を参照して異常時情報の無効指示を行うという具合である。ただし、無効指示を行う異常検出オブジェクトは、異常を検出する可能性が相対的に高いものであればよく、一つには限られない。
【0018】
異常を検出する可能性が相対的に高いオブジェクトで異常が検出されなかった場合、他のオブジェクトで異常が検出される可能性は少なく、全ての異常検出オブジェクトにおいて判断処理を実行しなくても十分である。本発明によれば、異常時情報を無効とするか否かの判断処理を一部の(例えば一つの)異常検出オブジェクトに挿入することになるため、処理プログラムが簡略化されるという面において、また、判断処理の実行回数が少なくなり処理負荷が軽減されるという面において有利である。
【0019】
一方、オブジェクト群は、例えば請求項3に示すように構成することが考えられる。すなわち、少なくとも、異常確定オブジェクトと、異常時処理オブジェクトと、異常時情報記憶オブジェクトとを含むものとすることが考えられる。このとき各オブジェクトは、次のように動作する。
【0020】
異常確定オブジェクトは、異常検出オブジェクトによる異常検出結果に基づき実質的な異常であるか否かを判断する。例えばバッテリが外れている場合には、バッテリが外れたことに起因して、たとえセンサ等のダイアグ対象自体が正常であっても、その異常が検出されることがあるからである。また、異常時処理オブジェクトは、異常確定オブジェクトにて異常判断がなされると、異常時情報の記憶要求を行う。すると、異常時情報記憶オブジェクトが、異常時処理オブジェクトによる異常時情報の記憶要求に従い、異常時情報を記憶する。
【0021】
上述したように検出された異常が実質的なものであるか否かといった判断、例えばバッテリ外れによるものであるか否かの判断は、各ダイアグに共通する判断処理である。したがって、この判断処理を実行する異常確定オブジェクトを設けることによって全体のプログラム構成が簡単になり、さらなる再利用性を図ることができる。
【0022】
また、異常時処理オブジェクトの要求に従い、異常時情報記憶オブジェクトが異常時情報を記憶する構成を採るのは、次のような理由による。
ダイアグ処理においては、異常時情報の記憶に限らず、異常発生をユーザに知らせるために警告灯の点灯/消灯処理を行うのが一般的である。このような構成を考えると、異常時情報の記憶や警告灯の点灯/消灯といった異常時処理を統括するオブジェクトを用意することが望ましい。プログラム構成が分かり易くなると共に拡張性が高くなるからである。そこで本発明では、異常時処理オブジェクトを設けた。このようにすれば、例えば警告灯の点灯/消灯を行う場合には、異常時処理オブジェクトが警告灯の点灯/消灯要求を所定のオブジェクトに出力し、その所定のオブジェクトが警告灯の点灯/消灯をすることで実現できる。
【0023】
なお、このような構成を前提とすれば、異常検出オブジェクトから異常時情報の無効指示があると、異常時処理オブジェクトが、異常時情報の無効要求を行うことが考えられる。このとき、異常時情報記憶オブジェクトは、異常時処理オブジェクトによる異常時情報の無効要求に従い、異常時情報を無効にする(請求項4)。
【0024】
ところで、このような車両用制御装置の備える自己診断プログラムは、例えば、フロッピーディスク、光磁気ディスク、CD−ROM、ハードディスク等のコンピュータ読み取り可能な記録媒体に記録し、必要に応じてコンピュータシステムにロードして起動することにより用いることができる。この他、ROMやバックアップRAMをコンピュータ読み取り可能な記録媒体として自己診断プログラムを記録しておき、このROMあるいはバックアップRAMをコンピュータシステムに組み込んで用いてもよい。
【0025】
【発明の実施の形態】
以下、本発明を具体化した一実施例を図面を参照して説明する。
図1は、エンジン制御システムの全体を示す構成図である。このエンジン制御システムは、エンジン11及び、このエンジン11を制御するエンジン制御ユニット16を中心に構成されている。このエンジン制御ユニット16が「車両用制御装置」に相当する。
【0026】
エンジン11には、エアクリーナからの吸入空気が吸気管12を経て供給されている。この吸気管12には、吸入空気量を測定するエアフローセンサ13と、吸気温度を検出する吸気温センサ14が配置され、さらに、アクセルペダルによって駆動されるスロットル弁15が配置されている。
【0027】
エンジン制御ユニット16には、エンジン11の状態を示す各種信号が入力される。この信号を列挙すれば、エアフローセンサ13からの吸入空気量検出信号、スロットルセンサ17からのスロットル弁15の開度検出信号、排出ガス中に含まれる酸素濃度を検出する空燃比センサ18からの信号、バッテリ19からのバッテリ電圧信号、水温センサ20からの検出信号、エンジン11によって駆動されるディストリビュータ21からの回転信号、さらに気筒判別信号等である。
【0028】
また、エンジン制御ユニット16では、これらの各種検出信号に基づいてエンジン11の運転状態に対応した燃料噴射量等を演算し、エンジン11の複数の気筒それぞれに設定されるインジェクタ22a〜22dに対して燃料噴射指令を出力し、また、イグナイタ23に対して点火指令信号を出力して、エンジン11の運転制御を実行する。
【0029】
さらに、エンジン制御ユニット16は、車両の各部位の診断も各センサ群からの検出信号に基づいて実行する。このため、エンジン制御ユニット16に対しては、異常検出結果の出力のための診断モードを設定するテストスイッチ24が配置され、さらに、そのテスト結果であるダイアグノーシスの結果表示等を行う警告灯25が接続されている。
【0030】
スイッチ26はバッテリ19をエンジン制御ユニット16に対して接続するイグニッションスイッチであり、このイグニッションスイッチ26に連動するようにしてスタータモータ27を制御するスタータスイッチ28が設けられている。
次に、エンジン制御ユニット16について説明する。図2は、図1に示したエンジン制御ユニット16の構成を示すブロック図である。エンジン制御ユニット16は、コンピュータシステムを構成するCPU31を備える。このCPU31にはアナログ入力回路32及びディジタル入力回路33からのデータが入力され、アナログ入力回路32からのアナログ入力データは、A/D変換器34でディジタルデータに変換されてCPU31に入力される。
【0031】
アナログ入力回路32には、エアフローセンサ13からの検出信号Us、水温センサ20からの検出信号Thw、吸気温センサ14からの検出信号Tha、及びバッテリ19の電圧+Bが入力される。一方、ディジタル入力回路33には、ディストリビュータ21からの気筒判別信号G1と回転角信号Ne、空燃比センサ18からの酸素濃度に対応したリーン・リッチ信号Ox、スロットルセンサ17からのスロットル弁15が全閉であることを示すアイドル信号Idle、スタータスイッチ28からのスタート信号STA、及びテストスイッチ24からの診断モードを設定する信号Tが入力される。
【0032】
A/D変換器34は、アナログ入力回路32に入力される各種の検出信号をCPU31からの指令に従い順次選択して読み取り、ディジタルデータに変換するマルチプレクサ機能を有する。
また、電源回路35は、イグニッションスイッチ26を経てバッテリ19の電圧+BをCPU31に供給し、また、常時バックアップ用電源Battを供給している。
【0033】
CPU31からの出力データは、出力回路36、37及び38に供給され、エンジン制御ユニット16からの出力信号として取り出される。すなわち、出力回路36からはイグナイタ23に対して点火指令信号IGtを出力する。また、出力回路37からは診断結果を表す信号Wを出力して警告灯25を点灯制御する。出力回路38からの出力信号τqは、エンジン11の運転状態に対応した燃料噴射量を指示するもので、インジェクタ22a〜22dに出力されて、これらインジェクタ22a〜22dの噴射量を変える。
【0034】
さらにCPU(エンジン制御ユニット)31内には、後述する自己診断プログラムを格納するメモリ39が設けられている。このメモリ39は、ROM及び、イグニッションスイッチ26がオフされているときにも電源供給されてデータを保持するスタンバイRAMとで構成されている。自己診断プログラムは、ROM内に格納されている。そして後述するように、スタンバイRAMには、自己診断プログラムによって異常コードが記憶される。
【0035】
本実施例は、メモリ39のROM内に格納された自己診断プログラムに特徴を有するものである。そこで次に、自己診断プログラムについて説明する。
図3は、自己診断プログラムの構造(アーキテクチャ)を概念的に示した説明図である。自己診断プログラムは、オブジェクト指向設計された複数のプログラムで構成される。既に知られるように、オブジェクト指向設計とは、従来のソフトウェアが処理(例えば、燃料噴射という処理)に着目したものに対し、モノを基本単位にモデル化し、そのモノの特性や振る舞い(動作)で処理を記述するものである。この基本単位を「オブジェクト」と称し、オブジェクト指向設計されたプログラムは、このオブジェクトを最小構成単位として記述される。プログラム全体としては、要求や応答といったやりとり(以下「メッセージ」という。)によりオブジェクト間を結合することで一連の処理が実行される。オブジェクトは、データ(属性)とデータに対するメソッド(手続き)とを備え、他のオブジェクトからのメッセージによってメソッドを実行する。なお、本明細書中では、「オブジェクトが・・・する。」というオブジェクトを主体とした表現を用いるが、実際には、CPU31が処理プログラムを実行することで実現されることはいうまでもない。
【0036】
図3には、本実施例を説明するために必要なオブジェクトのみを示した。つまり、本実施例における自己診断プログラムは少なくとも、異常検出オブジェクト100と、異常確定オブジェクト200と、異常時処理オブジェクト300と、異常コード記憶オブジェクト400とを備えている。
【0037】
異常検出オブジェクト100は、エンジン制御ユニット16に入力された各センサ群などの情報に基づき、自己診断の対象となるダイアグ対象の異常を検出する。この異常検出オブジェクト100は、ダイアグ対象毎に用意されている。例えば図3には、異常検出オブジェクト100の中の、水温センサ20の異常を検出する水温センサ異常検出オブジェクト(以下「水温センサオブジェクト」という。)110、吸気温センサ14の異常を検出する吸気温センサ異常検出オブジェクト(以下「吸気温センサオブジェクト」という。)120、及びスロットルセンサ17の異常を検出するスロットルセンサ異常検出オブジェクト(以下「スロットルセンサオブジェクト」という。)130を示した。つまり、ここでは水温センサ20、吸気温センサ14、スロットルセンサ17が「ダイアグ対象」に相当する。
【0038】
そしてまた、同一のダイアグ対象に対し複数の異常検出手法があれば、当該複数の異常検出手法毎に、異常検出オブジェクト100が用意される。例えば水温センサ20の異常検出手法が3つあれば、図3に示すように、3つの水温センサオブジェクト110a,110b,110cが用意される。以下、この3つの水温センサオブジェクト110a〜110cを、A水温センサオブジェクト110a,B水温センサオブジェクト110b,C水温センサオブジェクト110cと記述して区別する。
【0039】
異常確定オブジェクト200は、各異常検出オブジェクト100にて検出された異常が実質的な異常であるか否かを判断する。例えばバッテリ19が外れている場合には、バッテリ19が外れたことに起因し、たとえダイアグ対象自体が正常であっても、その異常が検出されることがあるからである。
【0040】
異常時処理オブジェクト300は、異常時処理を実行する。異常時処理には、異常コードの記憶/マスク要求や警告灯の点灯/消灯要求が含まれる。
異常コード記憶オブジェクト400は、ダイアグ対象に対応する異常コードをメモリ39のスタンバイRAMに記憶する。又は、一度メモリ39に記憶した異常コードをマスクする。マスクとは、異常コードに対応するフラグを立てることによって、スタンバイRAMに記憶された異常コードを通常操作では読み出せない状態にすることをいう。なお、本実施例では、煩雑になることを避ける意味で異常コードのみを記憶/マスクする構成としたが、異常コードだけでなく、異常判断がなされた時点における車速・エンジン回転数・水温・スロットル開度など車両状態を示すいわゆるフリーズデータをスタンバイRAMに記憶/マスクするようにしてもよい。
【0041】
上述したように各オブジェクト100〜400は、メッセージによって結合されて一連の処理を実行する。そこで次に、メッセージシーケンスチャート(以下「MSC」という。)を参照して各オブジェクト100〜400の結合を説明する。
【0042】
図4は、ダイアグ対象の異常検出から異常コードの記憶までを示すMSCである。まず異常検出オブジェクト100が異常検出処理を実行する(S1)。この異常検出処理にて、ダイアグ対象の異常が検出されると、異常フラグがセットされる。そこで、異常検出オブジェクト100は、フラグ処理要求を異常確定オブジェクト200に対して発行する。
【0043】
異常確定オブジェクト200は、このフラグ処理要求を受け取ると、異常確定処理を実行する(S2)。この異常確定処理にて実質的な異常であると判断されると、異常確定オブジェクト200は、異常時処理オブジェクト300に対して異常確定通知を行う。
【0044】
すると、異常時処理オブジェクト300は、異常時処理を実行する(S3)。この異常時処理では、異常コード記憶オブジェクト400に対する異常コード記憶要求が発行される。なお、異常時処理では、警告灯の点灯要求も他のオブジェクト(不図示)に発行されるのが一般的であるが、実施例の説明に必要でないため警告灯の点灯要求については割愛する。
【0045】
異常コード記憶要求を受け取ると、異常コード記憶オブジェクト400は、異常コード記憶処理を実行する(S4)。これによって、異常と判断されたダイアグ対象に対応する異常コードがメモリ39のスタンバイRAMに記憶される。
また、本実施例では、一度異常コードが記憶された後の20トリップの間に、そのダイアグ対象の異常が検出されない場合には、一時的な異常であるとして、メモリ39のスタンバイRAMに記憶した異常コードをダイアグ対象毎にマスクする。
【0046】
図5は、異常コードのマスク処理を示すMSCである。上述した異常検出処理(S1)では、異常が検出された後の20トリップの間に異常検出がなされない場合、異常時処理オブジェクト300に対してマスク処理要求が発行される。
異常時処理オブジェクト300は、上述した異常時処理を実行して(S3)、このマスク処理要求に従い異常コードマスク要求を発行する。これによって、異常コード記憶オブジェクト400が、異常コードマスク処理を実行する(S5)。その結果、ダイアグ対象に対応してメモリ39のスタンバイRAMに記憶された異常コードがマスクされることになる。
【0047】
ただし、図3に示したように、ダイアグ対象である水温センサ20に対しては、異常検出オブジェクト100としてA〜Cの3つの水温センサオブジェクト110a〜110cが存在する。したがって、水温センサ20に対応する異常コードが記憶された後、例えばA水温センサオブジェクト110aが20トリップの間に異常を検出しない場合であっても、B水温センサオブジェクト110bが異常を検出している場合も考えられる。そのため、A水温センサオブジェクト110aは、B,Cの水温センサオブジェクト110b,110cの異常検出結果を参照してマスク処理要求を発行する必要がある。
【0048】
本実施例では、同一のダイアグ対象に対して複数の異常検出オブジェクト100が存在することを前提とし、上述したマスク処理要求について工夫した。
したがってこの点を含め、上述した異常検出処理(S1)、異常確定処理(S2)、異常コード記憶処理(S4)及び異常コードマスク処理(S5)の詳細について、図6〜図14のフローチャートに基づき説明する。なお、異常検出処理(S1)については、A〜Cの3つの水温センサオブジェクト110a〜110cのぞれぞれにおける異常検出処理を例に挙げて説明する。なお説明上、A水温センサオブジェクト110aの実行する異常検出処理を「A異常検出処理」と記述し、同様に、B水温センサオブジェクト110bの実行する異常検出処理を「B異常検出処理」、C水温センサオブジェクト110cの実行する異常検出処理を「C異常検出処理」と記述して区別する。A〜Cの異常検出処理は、いずれも水温センサ20のレンジ外れによる異常を検出するものである。レンジ外れとは、規定通りの信号幅で信号が出力されない状況をいう。例えば0〜5Vの範囲で出力されるはずの信号Thwが常に2Vで出力されたり、2〜3Vの範囲で出力されたりする場合が挙げられる。このように信号Thwがある値に又はある範囲のものとなってしまうことを「信号値の固着」という。
【0049】
図6及び図7は、A水温センサオブジェクト110aが実行するA異常検出処理を示すフローチャートである。A異常検出処理は、信号値の低温側の固着を判断するものであり、暖機による水温上昇に基づき異常検出を行うものである。
まず最初のステップ(以下ステップを単に記号Sで示す。)1000において、フラグ情報をレジスタへコピーする。ここでいうフラグ情報は、異常検出結果を示す異常フラグ(正常:「0」、異常「1」)及び異常が確定したことを示す異常判定フラグ(未確定:「0」、確定「1」)である。これらのフラグは、グローバル変数としてメモリ39のスタンバイRAMに用意される。この処理は、前回の処理にて確定したフラグ情報を、過去のフラグ情報として待避させるものである。
【0050】
続くS1010では、エンジン始動時であるか否かを判断する。ここでエンジン始動時であると判断された場合(S1010:YES)、S1020にて初期化処理を実行し、その後、図7中のS1110へ移行する。S1020の初期化処理では、エンジン始動時の水温を始動時水温Tsに代入し、暖機カウンタDをリセットして「0」にし、さらにトリップフラグFtを「0」にセットする。一方、エンジン始動時でないと判断された場合(S1010:NO)、S1030へ移行する。
【0051】
S1030では、暖機カウンタDをインクリメントする。続くS1040では、水温Tがフィードバック水温T(F/B)よりも小さいか否かを判断する。このフィードバック水温T(F/B)は、エンジン11のフィードバック制御を開始する条件となる水温である。ここでT<T(F/B)である場合(S1040:YES)、S1050へ移行する。一方、T≧T(F/B)である場合(S1040:NO)、S1070へ移行する。
【0052】
S1050では、暖機カウンタDが暖機判定値Dthよりも大きいか否かを判断する。この暖機判定値Dthは、フィードバック制御に移行可能な程度に暖機されたか否かを判定するためのものであり、エンジンの始動時における水温である始動時水温Tsに基づいて算出される。つまり、始動時水温Tsが相対的に高い場合には小さく算出され、逆に始動時水温Tsが相対的に低い場合には大きく算出される。始動時水温Tsが高ければ暖機されるまでに時間がかかり、低ければ暖機されるまでに時間がかからないためである。ここでD>Dthである場合(S1050:YES)、すなわち、フィードバック水温T(F/B)よりも水温Tが低いにもかかわらず暖機されていると判断された場合には、水温を示す信号値が低温側に固着しているとして、S1060にて異常フラグFAを「1」にセットし、さらに正常判定カウンタSを「0」にリセットして、図7中のS1110へ移行する。一方、D≦Dthである場合(S1050:NO)、すなわち暖機が不十分である場合には、S1060の処理を実行せず、図7中のS1110へ移行する。
【0053】
S1040で否定判断された場合に移行するS1070では、正常であるとして異常フラグFAを「0」にセットする。この場合、水温Tがフィードバック水温T(F/B)よりも大きくなっており、水温を示す信号値の低温側への固着がないためである。
【0054】
続くS1080では、トリップフラグFtが「0」であるか否かを判断する。トリップフラグFtは、各トリップで既にS1040にて否定判断がなされたか否かを判断するためのものである。ここでFt=0である場合(S1080:YES)、正常判定カウンタSをインクリメントし(S1090)、トリップフラグFtを「1」にセットして(S1100)、図7中のS1110へ移行する。これによって、正常判定カウンタSは、各トリップで一度だけインクリメントされることになる。一方、Ft≠0である場合(S1080:NO)、S1090及びS1100の処理を実行せず、図7中のS1110へ移行する。
【0055】
図7中のS1110では、異常確定オブジェクト200に対してフラグ処理要求を発行する。続くS1120では、正常判定カウンタSが「20」以上となったか否かを判断する。ここでS≧20である場合(S1120:YES)、すなわち20トリップの間に異常検出がなされなかった場合には、S1130へ移行する。一方、S<20である場合(S1120:NO)、S1130及びS1140の処理を実行せず、本A異常検出処理を終了する。
【0056】
S1130では、異常フラグFB,FCが共に「0」であるか否かを判断する。異常フラグFB,FCはそれぞれ、後述するように、B水温センサオブジェクト110b、C水温センサオブジェクト110cで異常が検出された時にセットされて「1」となるグローバル変数である。したがって、ここではグローバル変数FB,FCを参照して判断する。ここでFB=0かつFC=0である場合(S1130:YES)、すなわちB及びCの両方の水温センサオブジェクト110b,110cにて異常検出がなされていない場合には、S1140にて異常時処理オブジェクト300へマスク処理要求を発行し、その後、本A異常検出処理を終了する。一方、FB=1又はFC=1である場合(S1130:NO)、すなわちB又はCの少なくともいずれか一方の水温センサオブジェクト110b,110cで異常検出がなされている場合には、S1140の処理を実行せず、本A異常検出処理を終了する。
【0057】
続けて、図8のフローチャートに基づき、B水温センサオブジェクト110bの実行するB異常検出処理を説明する。このB異常検出処理は、加速運転による水温上昇に基づき異常検出を行うものである。
まず最初のS2000において、フラグ情報をレジスタへコピーする。続くS2010では、エンジン始動時であるか否かを判断する。ここでエンジン始動時であると判断された場合(S2010:YES)、S2020にて初期化処理を実行し、その後、S2100へ移行する。S2020の初期化処理では、最低水温TL、最高水温TU、最低車速SL、最高車速SUをそれぞれエンジン始動時の水温・車速として初期化し、アイドルOFFカウンタIを「0」にリセットする。また、始動時水温Tsにエンジン始動時の水温を代入し、加速モードカウンタMAを「0」にリセットする。一方、エンジン始動時でないと判断された場合(S2010:NO)、S2030へ移行する。
【0058】
S2030では、演算の対象となる値を更新する演算対象値更新処理を実行する。この演算対象値更新処理は、図9に示す如くである。図9に示すように、まず処理が開始されると、最低車速SL・最高車速SUを更新する。具体的には、最低車速SLが現車速よりも大きければ、最低車速SLに現車速を代入する。また、最高車速SUが現車速よりも小さければ、最高車速SUに現車速を代入する。続いてアイドル状態か否かを判断する(S2210)。アイドル状態とは、図1中のスロットル弁15の全閉の状態をいう。したがってこの判断は、スロットルセンサ17からのIdle信号に基づいてなされる。ここでアイドル状態でないと判断された場合(S2210:NO)、アイドルOFFカウンタIをインクリメントし(S2220)、S2230へ移行する。一方、アイドル状態であると判断された場合(S2210:YES)、S2220の処理を実行せず、S2230へ移行する。さらに、最低水温TL・最高水温TUを更新する(S2230)。具体的には、最低水温TLが現水温よりも高ければ、最低水温TLに現水温を代入する。また、最高水温TUが現水温よりも低ければ、最高水温TUに現水温を代入する。
【0059】
ここで図8のフローチャートの説明に戻る。S2030に続くS2040では、最高車速SUと最低車速SLとの差分(SU−SL)が加速判定値Ath以上であるか否かを判断する。つまり、ある程度の加速運転がなされたか否かを判断するのである。ここで(SU−SL)≧Athである場合(S2040:YES)、S2050にて加速モードカウンタMAをインクリメントし、さらに、現車速を代入することで最低車速SL・最高車速SUをリセットして、その後、S2060へ移行する。一方(SU−SL)<Athである場合(S2040:NO)、S2050の処理を実行せず、S2060へ移行する。
【0060】
S2060では、最高水温TUと最低水温TLとの差分(TU−TL)が水温偏差判定値Tth以上であるか否かを判断する。また、始動時水温Tsが水温判定値TH以下であるか否かを判断する。つまり、ここでは一定の水温上昇があったか否かを判断する。ただし、始動時水温Tsが低い場合には水温上昇率が低くなるため、その場合を考慮する。ここで(TU−TL)≧Tth、又は、Ts≦THである場合(S2060:YES)、正常であると判断し、異常フラグFBを「0」にセットして(S2070)、S2100へ移行する。一方、(TU−TL)<Tth、かつ、Ts>THである場合(S2060:NO)、S2080へ移行する。
【0061】
S2080では、加速モードカウンタMAが一定値Mth以上であるか否かを判断する。また、アイドルOFFカウンタIが一定値Ith以上であるか否かを判断する。前者は、ある程度の加速運転が一定回数以上なされたか否かを判断するものである。一方後者は、アイドルOFFの状態が一定回数以上あったか否かを判断するものである。ここでMA≧Mth、かつ、I≧Ithである場合(S2080:YES)、すなわち、S2060にて(TU−TL)<Tthと判断されているにもかかわらず、一定回数の加速運転がなされておりアイドルOFFの状態が一定回数以上あった場合には、異常であると判断し、S2090にて異常フラグFBを「1」にセットして、その後、S2100へ移行する。一方、MA<Mth、又は、I<Ithである場合(S2080:NO)、S2090の処理を実行せず、S2100へ移行する。
【0062】
S2100では、異常確定オブジェクト200に対してフラグ処理要求を発行する。その後、本B異常検出処理を終了する。
さらに続けて、図10及び図11のフローチャートに基づき、C水温センサオブジェクト110cの実行するC異常検出処理を説明する。このC異常検出処理は、上述したB異常検出処理と同様、加速運転による水温上昇に基づき異常検出を行うものである。ただし、この異常検出手法は、法規で定められたものであり、一定の加減速パターンで走行した場合の水温上昇に基づく。
【0063】
まず最初のS3000において、フラグ情報をレジスタへコピーする。続くS3010では、エンジン始動時であるか否かを判断する。ここでエンジン始動時であると判断された場合(S3010:YES)、S3020にて初期化処理を実行し、その後、図11中のS3100へ移行する。S3020の初期化処理では、パターン条件成立フラグFpを「0」にセットし、最低水温TL、最高水温TUをそれぞれエンジン始動時の水温として初期化し、さらに、始動時水温Tsにエンジン始動時の水温を代入する。一方、エンジン始動時でないと判断された場合(S3010:NO)、S3030へ移行する。
【0064】
S3030では、パターン条件が成立したか否かを判断する。このパターンは法規によって定められており、加速走行→定常走行→第1の減速走行→定常走行→第2の減速走行といった一定の加減速パターンである。したがってここでは、走行パターンの軌跡がこの加減速パターンに一致したか否かを判断する。ここでパターン条件が成立したと判断された場合(S3030:YES)、S3040にてパターン条件成立フラグFpを「1」にセットし、その後、S3050へ移行する。一方、パターン条件が成立していないと判断された場合(S3030:NO)、S3040の処理を実行せず、S3050へ移行する。
【0065】
S3050では、最低水温TL・最高水温TUを更新する。この処理は、図9中のS2230と同様、最低水温TLが現水温よりも高ければ最低水温TLに現水温を代入し、一方、最高水温TUが現水温よりも低ければ最高水温TUに現水温を代入するものである。
【0066】
続くS3060では、最高水温TUと最低水温TLとの差分(TU−TL)が水温偏差判定値Tth以上であるか否かを判断する。つまり、ここでは一定の水温上昇があったか否かを判断する。ここで(TU−TL)≧Tthである場合(S3060:YES)、正常であると判断し、異常フラグFCを「0」にセットして(S3070)、その後、S3080へ移行する。一方、(TU−TL)<Tthである場合(S3060:NO)、S3070の処理を実行せず、S3080へ移行する。
【0067】
S3080では、パターン条件成立フラグFpが「1」であるか否かを判断する。また、最高水温TUと最低水温TLとの差分(TU−TL)が水温偏差判定値Tthよりも小さいか否かを判断する。ここでFp=1、かつ、(TU−TL)<Tthである場合(S3080:YES)、すなわち定められた加減速パターンで走行したにもかかわらず一定の水温上昇が見られない場合には、異常であるとして異常フラグFCを「1」にセットし(S3090)、図11中のS3100へ移行する。一方、Fp=0、又は、(TU−TL)≧Tthである場合(S3080:NO)、S3090の処理を実行せず、図11中のS3100へ移行する。
【0068】
図11中のS3100では、最低水温TL・最高水温TUを更新する。この処理は、上述した図10中のS3050と同様の処理である。
続くS3110では、最高水温TUと最低水温TLとの差分(TU−TL)が第2の水温偏差判定値T2th以上であるか否かを判断する。第2の水温偏差判定値T2thは、トリップを跨いでいる場合の水温上昇を判定するためのものである。ここで(TU−TL)>T2thである場合(S3110:YES)、正常であるとして異常フラグFCを「0」にセットし、さらに現水温を代入することにより最低水温TL・最高水温TUをリセットして(S3120)、その後、S3130へ移行する。一方、(TU−TL)≦T2thである場合(S3110:NO)、S3120の処理を実行せず、S3130へ移行する。
【0069】
S3130では、異常確定オブジェクト200に対し、フラグ処理要求を発行する。その後、本C異常検出処理を終了する。
次に、異常確定オブジェクト200にて実行される異常確定処理(S2)を、図12のフローチャートに基づいて説明する。
【0070】
S4000,S4010,S4020における低電圧1〜3は、フラグ情報であり、「0」又は「1」にセットされて、フラグ処理要求と共に異常検出オブジェクト100から送出される。
例えば水温センサ20の異常検出の場合、バッテリ19の電圧+Bが低下すると、水温センサ20が正常であるにもかかわらず、水温センサ20からの信号値は固着する。そこで水温センサオブジェクト110は、低電圧3を「1」にセットする。これによってバッテリ19の電圧+Bが低下して電圧V以下となっている場合には、S4020にて肯定判断され、異常判定フラグが「0」にセットされる(S4030)。つまり、実質的な異常ではないと判断されるのである。エンジンの回転信号を検出する回転センサ等はバッテリ19の電圧+Bに関係しないため、回転センサの異常を検出する異常検出オブジェクト100は、低電圧3を「0」にセットして送出する。
【0071】
このように各異常検出オブジェクト100が低電圧1〜3というフラグ情報を送出するようにし、各異常検出オブジェクト100の異常検出結果を共通の処理ステップ(S4000〜S4020)で処理できるようにした。
すなわち、S4000における判断処理では、イグニッションスイッチ26からの信号IGがオフで、かつ低電圧1が「1」にセットされている場合(S4000:YES)、異常でないと判断してS4030へ移行させる。また、S4010における判断処理では、スタータスイッチ28からの信号STAがオンで、かつ低電圧2が「1」にセットされている場合(S4010:YES)、異常でないと判断してS4030へ移行させる。さらにまた、S4020における判断処理では、バッテリ19の電圧+Bが電圧V以下で、かつ低電圧3が「1」にセットされている場合(S4010:YES)、異常でないと判断してS4030へ移行させる。
【0072】
S4000〜S4020で全て否定判断された場合に移行するS4040では、フラグ情報が変化したか否かを判断する。これは異常検出オブジェクト100にて待避させられた(図6中のS1000,図8中のS2000,図10中のS3000参照)過去のフラグ情報と比較して判断する。ここでフラグ情報が変化したと判断された場合(S4040:YES)、S4050にて異常判定フラグを「1」にセットし、S4060にて異常時処理オブジェクト300に対する異常確定通知を行い、その後、本異常確定処理を終了する。一方、フラグ情報が変化していないと判断された場合(S4040:NO)、S4050及びS4060の処理を実行せず、本異常確定処理を終了する。
【0073】
次に、異常コード記憶オブジェクト400にて実行される異常コード記憶処理(S4)・異常コードマスク処理(S5)を、図13及び図14のフローチャートに基づいて説明する。
図13に示す異常コード記憶処理では、最初にメモリ39のスタンバイRAMに空き領域があるか否かを判断する(S5000)。ここで空き領域があると判断された場合(S5000:YES)、S5010へ移行する。一方、空き領域がないと判断された場合(S5000:NO)、以下の処理を実行せず、本異常コード記憶処理を終了する。
【0074】
S5010では、記憶しようとする異常コードが既に記憶されているか否かを判断する。既に記憶されている場合(S5010:YES)、S5020の処理を実行せず、本異常コード記憶処理を終了する。一方、未だ記憶されていない場合(S5010:NO)、異常コードを小さい順にソートしてメモリ39のスタンバイRAMに記憶し(S5020)、その後、本異常コード記憶処理を終了する。
【0075】
図14に示す異常コードマスク処理では、最初にマスク対象となる異常コードが16進表記で「0000」であるか否かを判断する。これは空き領域に「0000」が記憶されているために行う不具合の防止処理である。マスク対象が「0000」であれば(S6000:YES)、以降の処理を実行せず、本異常コードマスク処理を終了する。一方、マスク対象が「0000」以外であれば(S6000:NO)、S6010へ移行する。
【0076】
S6010では、マスク対象となる異常コードが記憶されているか否かを判断する。ここでマスク対象となる異常コードが記憶されていなければ(S6010:NO)、S6020の処理を実行せず、本異常コードマスク処理を終了する。一方、マスク対象となる異常コードが記憶されていれば(S6010:YES)、S6020にてその異常コードをマスクする。すなわち、異常コードに対応するフラグを立て異常コードを読み出せない状態とする。その後、本異常コードマスク処理を終了する。
【0077】
以上のように各オブジェクト100〜400を構成したことによる本実施例のエンジン制御ユニット16の発揮する効果を次に述べる。
本実施例のエンジン制御ユニット16では、異常検出オブジェクト100が異常検出処理(S1)を実行することによって(図5参照)、一度異常検出を行った後に20トリップの間異常検出がなされなかった場合には(図7中のS1120:YES)、異常時処理オブジェクト300に対するマスク処理要求を発行する(S1140)。異常時処理オブジェクト300は異常時処理(S3)を実行して異常コードマスク要求を発行し、これによって、異常コード記憶オブジェクト400が異常コードマスク処理(S5)を実行する。この処理(S5)は、図14に示したように、ダイアグ対象に対応する異常コードを検索し(S6010)、ダイアグ対象毎に異常コードをマスクするものである(S6020)。つまり、検出された異常が一時的なものであれば、ダイアグ対象毎に、20トリップといった比較的早いタイミングで、記憶された異常コードがマスクされる。その結果、例えば修理工場などで異常コードが読み出され、本来は交換する必要のない部品が交換されてしまうことを防止できる。
【0078】
また、水温センサオブジェクト110を例に挙げて上述したように、複数の異常検出手法に対応させてA〜Cの3つの水温センサオブジェクト110a,110b,110cを設けた。そして3つのうちのA水温センサオブジェクト110aがマスク処理要求を行うのであるが、このときB及びCの両方の水温センサオブジェクト110b,110cで異常検出がなされていない場合に限り(図7中のS1130:YES)、マスク処理要求を発行する(S1140)。したがって、A水温センサオブジェクト110aにて異常検出がなされていないからと言って、B又はCの水温センサオブジェクト110b,110cにて異常検出がなされている場合に異常コードがマスク処理されることはない。
【0079】
さらにまた、異常検出オブジェクト100がダイアグ対象に依存する異常検出処理を実行する構成とし、加えて、B及びCの水温センサオブジェクト110b,110cの異常検出結果を判断してマスク処理要求を発行するオブジェクトも、異常検出オブジェクト100であるA水温センサオブジェクト110aとした。したがって、ダイアグ対象が変わった場合には、異常検出オブジェクト100のみを、つまりA〜Cの3つの水温センサオブジェクト110a〜110c・吸気温センサオブジェクト120・スロットルセンサオブジェクト130等を変更すればよく、異常確定オブジェクト200、異常時処理オブジェクト300、異常コード記憶オブジェクト400は何等変更する必要がない。そのため、自己診断プログラムの再利用性を確保できる。
【0080】
なお、A〜Cの3つの水温センサオブジェクト110a〜110cが相互に異常検出結果を参照してそれぞれがマスク処理要求を発行する構成も考えられるが、A水温センサオブジェクト110aがB及びCの水温センサオブジェクト110b,110cの異常検出結果を参照してマスク処理要求を発行すれば十分である。その理由は、B又はCの異常検出処理と比較してA水温センサオブジェクト110aの実行するA異常検出処理では異常が検出される可能性が相対的に高いからであり、A異常検出処理において水温センサ20の異常が検出されなかった場合、B又はCの異常検出処理で異常が検出される可能性は少ないためである。本実施例では、マスク処理要求を発行するための処理(図6中のS1060,S1080,S1090,S1100,図7中のS1120,S1130,S1140)をA水温センサオブジェクト110aのみが有するため、自己診断プログラムをトータルで見た場合に、処理プログラムが簡略化されるという面において、また、判断処理が少なくなり処理負荷が軽減されるという面において有利である。
【0081】
ところで、異常確定オブジェクト200にて実行される各異常確定処理を異常検出オブジェクト100が実行する構成とすることもできる。しかし、異常確定処理は、異常を検出する場合の共通の処理であるため、本実施例では、異常確定オブジェクト200が実行するようにした。これによって、自己診断プログラムの構成が簡単になると共に、ダイアグ対象の変更によって異常検出オブジェクト100を変更する場合、この共通の処理を作成/変更する必要がないため、さらなる再利用性を図ることができる。
【0082】
また、本実施例では、異常時処理オブジェクト300を設けた。この異常時処理オブジェクト300は、異常コードの記憶/マスク要求だけでなく、警告灯25の点灯/消灯要求も発行し(図3参照)、図示しないオブジェクトによって警告灯25の点灯/消灯が行われる。このような異常時の処理を統括する異常時処理オブジェクト300を備える構成としたため、本実施例では、自己診断プログラムの全体構成が分かり易くなると共に拡張性が高くなっている。
【0083】
以上、本発明はこのような実施形態に何等限定されるものではなく、本発明の主旨を逸脱しない範囲において種々なる形態で実施し得る。
例えば上記実施例では、異常コードをマスクすることによって読み出せなくする構成であった。この場合、メモリ39のスタンバイRAM内には異常コードが残っているため、修理工場などにおける通常操作では読み出せないが、特別な操作をすれば異常時情報を読み出して参照することができるという点で有利である。これに対して、メモリ39のスタンバイRAMに記憶された異常コードを消去してしまう構成とすることも当然できる。
【0084】
また、上記実施例ではメモリ39内のスタンバイRAMに異常コードを記憶していたが、イグニッションスイッチがオフの状態となっても記憶内容が失われないメモリ装置であればよく、スタンバイRAMには限られない。例えばEEPROMに異常コードを記憶する構成としても差し支えない。
【図面の簡単な説明】
【図1】実施例のエンジン制御システムを示す構成図である。
【図2】実施例のエンジン制御ユニットの構成を示すブロック図である。
【図3】自己診断プログラムの構造を概念的に示した説明図である。
【図4】異常コードの記憶手順を示すMSCである。
【図5】異常コードのマスク手順を示すMSCである。
【図6】A異常検出処理の前半部分を示すフローチャートである。
【図7】A異常検出処理の後半部分を示すフローチャートである。
【図8】B異常検出処理を示すフローチャートである。
【図9】演算対象値更新処理を示すフローチャートである。
【図10】C異常検出処理の前半部分を示すフローチャートである。
【図11】C異常検出処理の後半部分を示すフローチャートである。
【図12】異常確定処理を示すフローチャートである。
【図13】異常コード記憶処理を示すフローチャートである。
【図14】異常コードマスク処理を示すフローチャートである。
【符号の説明】
11…エンジン
12…吸気管
13…エアフローセンサ
14…吸気温センサ
15…スロットル弁
16…エンジン制御ユニット
17…スロットルセンサ
18…空燃比センサ
19…バッテリ
20…水温センサ
21…ディストリビュータ
22a,22b,22c,22d
…インジェクタ
23…イグナイタ
24…テストスイッチ
25…警告灯
26…イグニッションスイッチ
27…スタータモータ
28…スタータスイッチ
32…アナログ入力回路
33…ディジタル入力回路
34…A/D変換器
35…電源回路
36,37,38
…出力回路
39…メモリ
100…異常検出オブジェクト
110…水温センサオブジェクト
110a…A水温センサオブジェクト
110b…B水温センサオブジェクト
110c…C水温センサオブジェクト
120…吸気温センサオブジェクト
130…スロットルセンサオブジェクト
200…異常確定オブジェクト
300…異常時処理オブジェクト
400…異常コード記憶オブジェクト
Claims (5)
- ダイアグ対象の異常検出結果に基づき、当該ダイアグ対象に対応する異常時情報を記憶する自己診断機能を備え、
前記自己診断機能を実現するための自己診断プログラムを、前記ダイアグ対象毎に用いられて前記ダイアグ対象の異常を検出する処理を実行する異常検出オブジェクトと、前記ダイアグ対象に共通して用いられて前記異常検出オブジェクトによる異常検出結果に基づき前記異常時情報を記憶する処理を実行するオブジェクト群とで構成した車両用制御装置において、
同一のダイアグ対象の異常を検出する複数の手法が存在する場合には、当該複数の手法毎に前記異常検出オブジェクトを用意し、当該異常検出オブジェクトの少なくとも1つは、一度異常検出を行った後に所定の条件が満たされると、同一のダイアグ対象に係る他の異常検出オブジェクトにて異常検出がなされていない場合に限り、前記異常時情報を無効にするよう指示し、
一方、前記オブジェクト群は、前記異常検出オブジェクトから前記異常時情報の無効指示があると、前記異常時情報を無効にすること
を特徴とする自己診断機能を備えた車両用制御装置。 - 請求項1に記載の車両用制御装置において、
前記異常時情報の無効指示を行う異常検出オブジェクトは、同一のダイアグ対象に係る異常検出オブジェクトの中で、相対的に異常を検出する可能性の高い手法にて異常検出を行うオブジェクトであること
を特徴とする自己診断機能を備えた車両用制御装置。 - 請求項1又は2に記載の車両用制御装置において、
前記オブジェクト群は少なくとも、
前記異常検出オブジェクトによる異常検出結果に基づき実質的な異常であるか否かを判断する異常確定オブジェクトと、
該異常確定オブジェクトにて異常判断がなされると、前記異常時情報の記憶要求を行う異常時処理オブジェクトと、
該異常時処理オブジェクトによる前記異常時情報の記憶要求に従い、前記異常時情報を記憶する異常時情報記憶オブジェクトとを含むこと
を特徴とする自己診断機能を備えた車両用制御装置。 - 請求項3に記載の車両用制御装置において、
前記異常時処理オブジェクトは、前記異常検出オブジェクトから前記異常時情報の無効指示があると、前記異常時情報の無効要求を行い、
前記異常時情報記憶オブジェクトは、前記異常時処理オブジェクトによる前記異常時情報の無効要求に従い、前記異常時情報を無効にすること
を特徴とする自己診断機能を備えた車両用制御装置。 - 請求項1〜4のいずれかに記載の車両用制御装置の前記自己診断プログラムを記録したコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000057356A JP4265071B2 (ja) | 2000-03-02 | 2000-03-02 | 自己診断機能を備えた車両用制御装置及び記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000057356A JP4265071B2 (ja) | 2000-03-02 | 2000-03-02 | 自己診断機能を備えた車両用制御装置及び記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001248494A JP2001248494A (ja) | 2001-09-14 |
JP4265071B2 true JP4265071B2 (ja) | 2009-05-20 |
Family
ID=18578165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000057356A Expired - Fee Related JP4265071B2 (ja) | 2000-03-02 | 2000-03-02 | 自己診断機能を備えた車両用制御装置及び記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4265071B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5272507B2 (ja) * | 2008-05-12 | 2013-08-28 | 株式会社デンソー | 電子制御装置 |
JP6972875B2 (ja) * | 2017-10-05 | 2021-11-24 | 株式会社デンソー | 電子制御装置 |
-
2000
- 2000-03-02 JP JP2000057356A patent/JP4265071B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001248494A (ja) | 2001-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4491967B2 (ja) | 自己診断機能を備えた車両用制御装置及び記録媒体 | |
JP3692932B2 (ja) | 情報提供機能を備えた車両用制御装置及び記録媒体 | |
JP2666229B2 (ja) | 内燃エンジンの異常診断装置 | |
JPS61261145A (ja) | 車両用故障診断装置 | |
JP4080115B2 (ja) | エンジンの故障診断システム | |
JP3659017B2 (ja) | 自己診断装置を備えた車両用制御装置 | |
US8240193B2 (en) | Method for operating a sensor | |
JPH0711435B2 (ja) | 内燃機関のセンサ異常判定方法 | |
JPH02502392A (ja) | 内燃機関用の制御装置 | |
JP5285458B2 (ja) | 制御装置及び制御方法 | |
JP4449220B2 (ja) | 自己診断機能を備えた車両用制御装置及び記録媒体 | |
JPH06201496A (ja) | 大気圧センサの異常判定装置 | |
JP4265071B2 (ja) | 自己診断機能を備えた車両用制御装置及び記録媒体 | |
US6216084B1 (en) | Memory check apparatus and method for checking data upon retrieval from memory | |
JP2007085176A (ja) | 気筒別燃料噴射弁故障診断 | |
JPH07502316A (ja) | 点火終段のための動作検査機能を有する電子エンジン制御装置 | |
US20020052678A1 (en) | Vehicular control device having self-diagnosis function and self-diagnosis program for implementing the same | |
JPH10506449A (ja) | 過給機付き内燃機関のための保護系 | |
US20220003182A1 (en) | Method and system for diagnosing misfire of engine | |
JP3846398B2 (ja) | 車両制御装置 | |
JP4210940B2 (ja) | 吸気系センサの異常診断装置 | |
JP2008215113A (ja) | 内燃機関制御システムの異常診断装置 | |
KR100412694B1 (ko) | 산소센서 오체결 체크방법 | |
JPS6155612B2 (ja) | ||
JP2005055967A (ja) | Cpu診断システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060419 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080916 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081114 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090127 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090209 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120227 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130227 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140227 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |