[1.第1実施形態]
[1-1.構成]
<全体構成>
図1に示す本実施形態の電子制御装置(以下、ECU10)は、例えば、車両(すなわち、自動車)に搭載されて、制御対象3の制御を行うものである。制御対象3は、例えばその車両の動力源を制御するものであってもよい。制御対象3としての動力源は、エンジンであってよく、モータであってもよい。ただし、制御対象3は、車両の動力源を制御するものに限定されず、車両における種々の構成であり得る。
ECU10には、車両のバッテリ5のプラス端子に接続される電源ライン14が接続されており、その電源ライン14からバッテリ5の電圧であるバッテリ電圧VBが供給される。
また、車両では、当該車両の使用者によって始動スイッチ7がオンされると、その始動スイッチ7を介して電源ライン15にバッテリ5から電圧が供給される。つまり、始動スイッチ7は、エンジンを始動させるためにオンされるスイッチである。始動スイッチ7には、例えば、IGスイッチやスタートスイッチ等が含まれる。「IG」とは「イグニッション」の略である。電源ライン15の電圧は、始動スイッチ7のオン、オフ状態(すなわち、車両がオン状態か否かでもある)を示す始動スイッチ信号Ssとして、ECU10に入力される。
なお、図示していないが、ECU10には、車速信号、アクセルペダル信号、が入力される。車速信号は、車速センサによって検出される信号であり、車速を示す信号である。アクセルペダル信号は、アクセルペダルセンサによって検出される信号であり、アクセル開度を示す信号である。
ECU10は、マイクロコンピュータ(以下、マイコン11)と、外部通信装置12と、IC13と、を備える。ECU10は、当該ECU10が備える全ての機能を実行可能なウェイクアップ状態と、当該ECU10が備える一部の機能のみを実行可能なスリープ状態と、を切り替え可能に構成されている。
具体的には、ウェイクアップ状態では、マイコン11、外部通信装置12、及びIC13の全てに電源が供給され、スリープ状態では、外部通信装置12及びIC13に電源が供給され、マイコン11には電源が供給されない。ここで、マイコン11は、後述する電源スイッチとしての主電源回路31のオンにより電源が供給され、主電源回路31のオフにより電源の供給が停止される。一方、IC13及び外部通信装置12は、主電源回路31のオンオフに拘わらず、電源が常時供給されて動作するように構成されている。
マイコン11は、始動スイッチ7がオンされている間、ウェイクアップ状態では、外部通信装置12を介して、制御対象3(例えば、本実施形態ではエンジン)を制御するための各種処理を実行する。また、マイコン11は、始動スイッチ7がオフされた後は、予め定められた処理期間のあいだ、停止前処理を実行する。停止前処理は、始動スイッチ7がオフされた後であってECU10(すなわち、本実施形態ではマイコン11)への電源供給が停止する前にECU10が行うべき予め定められた処理である。
停止前処理には、例えば、制御対象3を制御するための制御パラメータや必要とされるデータ、制御対象3の故障の状態を示す故障コード等といった、種々のデータをバックアップする処理が含まれる。バックアップとは、種々のデータをECU10が備えるメモリ(例えば、フラッシュメモリ等)に記憶すること(すなわち、書き込むこと)をいう。
また、停止前処理には、始動スイッチ7がオフされた後に制御対象3が備えるアクチュエータへの電源供給をオフすることにより、該アクチュエータに電源供給がオンされ続ける故障が生じていないことを診断する処理が含まれ得る。また、停止前処理には、ECU10毎に必要とされる種々の処理が含まれ得る。
外部通信装置12は、通信線19を介して制御対象3と接続され、制御対象3との間で予め定められた通信方式に従って通信を行う。通信方式としては、CANやイーサネット等が挙げられる。CAN及びイーサネットは登録商標である。外部通信装置12には電源電圧(すなわち、後述する電源電圧Vs)が常時供給されている。
外部通信装置12は、予め定められたウェイクアップ条件が成立すると、スリープ状態にあるECU10をウェイクアップ状態に切り替えるためのウェイクアップ信号Swを生成してECU10へ出力する。ウェイクアップ条件としては、例えば、外部通信装置12によって、通信線19を介してECU10をあて先とする通信フレームが受信されること、が挙げられる。
ウェイクアップ信号Swは、電源の供給が停止されているマイコン11に電源を供給するために用いられ得る。本実施形態では、ウェイクアップ信号Swは、外部通信装置12からマイコン11及びIC13へ出力される。具体的には、ウェイクアップ信号Swはハイレベル又はローレベルの信号であり、ウェイクアップ条件が成立する場合にハイレベルのウェイクアップ信号Swが出力され、ウェイクアップ条件が成立しない場合にローレベルのウェイクアップ信号Swが出力される。
本実施形態では、ハイレベルは5Vであり、ローレベルは0Vである。但し、ハイレベル及びローレベルの信号電圧はこれに限定されるものではない。
IC13は、バッテリ電圧VBから、一定の電源電圧Vm及び一定の電源電圧Vsを生成する。電源電圧Vmはマイコン11へ供給するための電圧であり、IC13は電源電圧Vmの供給及び供給停止を切り替える。電源電圧Vsは少なくとも外部通信装置12及びIC13へ供給するための電圧であり、IC13は電源電圧Vsを常時(すなわち、始動スイッチ7のオンオフに拘わらず)出力する。なお、IC13は、電源電圧Vsをマイコン11の一部に供給するように構成されてもよい。
IC13とマイコン11とは、通信バス(以下、バス16)を介して通信可能に接続される。バス16は、予め定められた通信方式(例えば、SPI)に従う。SPIは「Serial Peripheral Interface」の略である。
バス16には、複数の信号線が含まれる。例えば、バス16には、マイコン11からIC13にマイコン11が通信相手(すなわち、IC13)を選択したことを示す信号を出力するための信号線が含まれる。また、バス16には、マイコン11からIC13に同期通信用の通信クロックを出力するための信号線が含まれる。また、バス16には、マイコン11からIC13へのデータ転送用の信号線、IC13からマイコン11へのデータ転送用の信号線、が含まれる。なお、バス16は、SPI以外の通信方式に従うものであってもよい。
<IC13>
IC13は、電源回路21と、入力回路22と、駆動部23と、装置内通信部24と、指令部25と、保持信号記憶部としてのレジスタ26と、を備える。電源回路21は、主電源回路31及び副電源回路32を備える。主電源回路31及び副電源回路32には、バッテリ電圧VBが常時供給されている。
ここで、主電源回路31は、バッテリ電圧VBから電源電圧Vmを生成するための回路である。主電源回路31は、少なくともスイッチ(すなわち、電源スイッチ)として構成されており、駆動部23から出力される駆動信号Sdが主電源回路31のオンオフを切り替える信号として供給されている。主電源回路31は、リレー、半導体スイッチ等であり得る。なお、本実施形態では、主電源回路31は、電源スイッチとして作動するとともに、一定の電圧を出力するレギュレータとしても作動するように構成される。
駆動信号Sdは、ハイレベル(すなわち、上述のように5V)又はローレベル(すなわち、上述のように0V)の信号である。主電源回路31は、駆動信号Sdがハイレベルである場合に、電源ライン14を介して、当該ECU10に入力される動作用電源としてのバッテリ電圧VBから一定の電源電圧Vm(例えば、5V)を生成して出力する。
なお、主電源回路31は、駆動信号Sdがローレベルである場合に、電源電圧Vmを生成せず、電源電圧Vmを出力しない。つまり、主電源回路31は、駆動信号Sdがハイレベルである場合にオンされ、駆動信号Sdがローレベルである場合にオフされる電源スイッチとして構成されている。このような主電源回路31によって、駆動信号Sdに従って、マイコン11への電源電圧Vmの供給及び供給停止が切り替えられる。
一方、副電源回路32は、バッテリ電圧VBから一定の電源電圧Vs(例えば、5V)を生成して、常時(すなわち、始動スイッチ7のオンオフに拘わらず)出力する。
入力回路22は、始動スイッチ7を経由して電源ライン15に出力される信号を、アクティブ状態及び非アクティブ状態のいずれかの状態である信号に変換して、始動スイッチ信号Ssとして駆動部23及びマイコン11に出力する。なお以下では、アクティブ状態及び非アクティブ状態のいずれかの状態である信号であって、駆動部23へ入力される信号を、指示信号ともいう。なお、アクティブ状態及び非アクティブ状態のいずれかの状態である、とは、アクティブ状態及び非アクティブ状態のいずれかの状態をとり得る、ということを表す。例えば、指示信号には始動スイッチ信号Ssが含まれる。
本実施形態では、始動スイッチ7がオンされると、入力回路22からハイレベルの始動スイッチ信号Ssが出力され、始動スイッチ7がオフされると、入力回路22からローレベルの始動スイッチ信号Ssが出力される。ハイレベルが上述のアクティブ状態に相当し、ローレベルが上述の非アクティブ状態に相当する。ただし、アクティブ状態及び非アクティブ状態の信号レベルは、これに限定されるものではなく、ハイレベル及びローレベルが逆であってもよい。
駆動部23には、複数(すなわち、複数種)の指示信号が入力される。本実施形態では、駆動部23に入力される指示信号には、上述の始動スイッチ信号Ss、上述のウェイクアップ信号Sw、後述する保持信号、が含まれる。
保持信号とは、マイコン11から出力される少なくとも1つの指示信号である。保持信号は、始動スイッチ7がオンされている間、及び、始動スイッチ7がオフされた後の処理期間のあいだ少なくとも、主電源回路31をオンするために出力される。処理期間は、始動スイッチ7がオフされた後の所定期間であってマイコン11が後述する停止前処理を終了する迄の期間である。本実施形態では、保持信号は、複数であり、第1保持信号Sh1と第2保持信号Sh2とを含む。
駆動部23は、保持信号を含む複数の指示信号に従って、複数の指示信号のうち少なくとも1つがアクティブ状態である場合に、主電源回路31にハイレベルの駆動信号Sdを出力する。ハイレベルの駆動信号Sdが出力されることによって、電源スイッチとしての主電源回路31がオンされる。これにより、マイコン11に電源電圧Vmが供給される。
装置内通信部24は、バス16に接続され、マイコン11との間でSPI通信を行う。
指令部25は、SPI通信によりマイコン11から受信した指令に基づいて動作する。例えば、指令部25は、マイコン11からSPI通信により、データとデータを書き込む記憶領域が指定された書き込み指令を受信すると、指定された記憶領域にデータを書き込む。また、指令部25は、マイコン11からSPI通信により、データを読み出す記憶領域が指定された読み出し指令を受信すると、指定された記憶領域からデータを読み出し、読み出したデータをSPI通信によりマイコン11へ送信する。
レジスタ26は、少なくとも1つの保持信号の状態を記憶する。保持信号は、上述のように、マイコン11から出力される指示信号であり、アクティブ状態及び非アクティブ状態のいずれかの状態の信号である。つまり、レジスタ26は、保持信号の状態を記憶している。本実施形態では、レジスタ26は、複数の記憶領域を備える。具体的には、レジスタ26は、第1記憶領域41と、第1記憶領域41とは異なる記憶領域である第2記憶領域42と、を備える。
第1記憶領域41に第1保持信号Sh1が保存され、第2記憶領域42に第2保持信号Sh2が保存される。なお、以下では、第1保持信号Sh1及び第2保持信号Sh2に共通の説明を記載するとき、第1保持信号Sh1及び第2保持信号Sh2を、単に保持信号と記載することがある。
(第1記憶領域41)
第1記憶領域41は、バス16に含まれる複数の信号線とは異なる少なくとも1つ(例えば、本実施形態では1つ)の信号線である接続線17よって、マイコン11における保持部56としての第1出力部57と接続されている。第1出力部57からは第1保持信号Sh1が出力される。これにより、第1保持信号Sh1の状態が第1記憶領域41に記憶されるようになっている。IC13内において、第1記憶領域41と駆動部23とは信号線によって接続される。
以下でいう「保持部56(例えば、第1出力部57)が保持信号(例えば、第1保持信号Sh1)を駆動部23へ出力する」とは、保持部56が保持信号を、接続線17を介して第1記憶領域41へ出力すること、を含む。
第1記憶領域41には第1保持信号Sh1の状態が記憶されているので、マイコン11は、第1記憶領域41から第1保持信号Sh1の状態を取得することにより、駆動部23に実際に入力される第1保持信号Sh1の状態を検出することができる。
なお、指令部25は、マイコン11から、SPI通信により、データを読み出す記憶領域として第1記憶領域41を指定した読み出し指令を受信すると、指定された記憶領域からデータとしての第1保持信号Sh1を読み出す。指令部25は、読み出した第1保持信号Sh1(すなわち、第1保持信号Sh1の状態)をSPI通信によりマイコン11へ送信する。
以下でいう「保持信号記憶部(例えば、第1記憶領域41)から保持信号(例えば、第1保持信号Sh1)を取得する」とは、SPI通信により、保持信号記憶部から保持信号を読み出すことを含む。
(第2記憶領域42)
第2記憶領域42には第2保持信号Sh2の状態が記憶される。具体的には、マイコン11の第1出力部57からは、バス16を介してSPI通信により、データとしての第2保持信号Sh2と、書き込み領域として第2記憶領域42を指定する書き込み指令とが出力される。これにより、第2保持信号Sh2の状態が第2記憶領域42に記憶されるようになっている。IC13内において、第2記憶領域42と駆動部23とは信号線によって接続される。
以下でいう「保持部56(例えば、第1出力部57)が保持信号(例えば、第2保持信号Sh2)を駆動部23へ出力する」とは、保持部56が保持信号の状態をバス16を介してSPI通信を用いて上述のように書き込むこと、を含む。すなわち、上述のように書き込み指令とデータ(すなわち、第2保持信号Sh2)とを出力すること、が含まれる。
第2記憶領域42には第2保持信号Sh2の状態が記憶されているので、マイコン11は、第2記憶領域42から第2保持信号Sh2の状態を取得することにより、駆動部23に実際に入力される第2保持信号Sh2の状態を検出することができる。
なお、指令部25は、マイコン11から、SPI通信により、データを読み出す記憶領域として第2記憶領域42を指定した読み出し指令を受信すると、指定された記憶領域からデータとしての第2保持信号Sh2を読み出す。指令部25は、読み出した第2保持信号Sh2(すなわち、第2保持信号Sh2の状態)をSPI通信によりマイコン11へ送信する。
以下でいう「保持信号記憶部(例えば、第2記憶領域42)から保持信号(例えば、第2保持信号Sh2)を取得する」とは、SPI通信により、保持信号記憶部から保持信号を読み出すことを含む。
(IC13の動作)
このように構成されたIC13では、第1保持信号Sh1及び第2保持信号Sh2のうち少なくとも一方がアクティブ状態である場合に、駆動部23はハイレベルの駆動信号Sdを主電源回路31に供給する。換言すれば、IC13は、始動スイッチ信号Ss及びウェイクアップ信号Swが共に非アクティブ状態であっても、少なくとも1つの保持信号がアクティブ状態であれば、マイコン11に電源電圧Vmを供給するように作動する。
(電源電圧Vmの供給停止の検出について)
主電源回路31を動作させるための保持信号が、始動スイッチ7がオフになった後に出力されないような故障(例えば、バス16における通信線の断線、接続線17の断線等)が生じていると、停止前処理が実行されないおそれがある。始動スイッチ7のオフと共に主電源回路31によるECU10への電源電圧Vmの供給が停止するおそれがあるからである。
この場合、種々のデータのバックアップの最新状態が記憶されないことになる。このため、始動スイッチ7のオフ後にマイコンへの電源電圧Vmの供給が停止するような故障が生じているかをマイコンによって検出することが望ましい。例えば、始動スイッチ7のオフ後に上述の保持信号が出力されないような故障が生じていないことをマイコンによって精度よく検出することが望ましい。
仮に、マイコンを、始動スイッチ7がオンからオフになったときに、停止前処理を実行するとともに、始動スイッチ7がオンからオフになってからの経過時間が所定の待ち時間閾値を超えた場合に経過フラグをセットするように構成するとする。以下、このように構成された装置を比較装置という。経過時間はマイコンが備える計測タイマにより計測する。
比較装置では、次回に始動スイッチ7がオフからオンになったときに経過フラグがセットされていることに基づいて、前回に始動スイッチ7がオフになった直後にマイコンへの電源供給が停止していなかったと診断することが可能となる。計測タイマはマイコンにより作動するため、マイコンへの電源供給が停止すると計測タイマが作動せず、経過フラグがセットされないためである。
なお、処理負荷軽減のため、比較装置を、電源電圧Vmが瞬断した場合は上述の診断を行わず、電源電圧Vmが所定時間以上供給停止となった場合に上述の診断を行うように構成することが考えられる。マイコンが備えるRAMは、マイコンへの電源供給が所定時間以上途絶するとブランク状態となる。例えば、比較装置は、電源の瞬断が、マイコンが備えるRAMの状態がブランク状態とならない程度の長さであれば上述の診断を行わず、ブランク状態となる程度の長さであれば上述の診断を行うように構成されてもよい。
しかしながら、RAMの状態がブランク状態となる程度の瞬断の長さは、個々のマイコンの性能によって異なる。例えば、クランキング等による約数十msec程度の瞬断によってRAMの状態がブランク状態となるような性能のマイコンがある。仮にクランキング等によってこのような性能のマイコンへの電源供給の瞬断が生じた場合に、比較装置において上述のような診断を行おうとすると、誤った診断結果となるおそれがある。正常に保持信号が出力されていたとしても、クランキング等によるマイコンへの電源供給の瞬断により計測タイマが作動せず、経過フラグがセットされないためである。
本実施形態のマイコン11は、個々のマイコンの性能に依存することなく、始動スイッチ7のオフ後に保持信号が出力されないような故障が生じていないことを診断できるように構成されることが望ましい。
<マイコン11>
マイコン11は、図示は省略されているが、CPUと、例えばROM又はRAM、フラッシュメモリ等の半導体メモリ(以下、メモリ)と、備える。そして、マイコン11における各機能は、CPUが上述のメモリに格納されたプログラムを実行することにより実現される。ここでいう機能として、マイコン11は、装置外通信部51、実行部52、内部通信部53、判定部54、診断部55、及び保持部56を備える。
上記メモリに格納されたプログラムが実行されることで、プログラムに対応する方法が実行される。また、マイコン11は、1パッケージ化されたものでもよいし、例えばCPUとメモリ等が別々のパッケージになっている構成のものでもよい。CPUとメモリ等が別々のパッケージになっている場合、図1における外部通信装置12は、例えばCPUに内蔵されてもよい。また、マイコン11又はCPUは、MPU(すなわち、Micro Processing Unit)と呼ばれてもよい。また、マイコン11の機能の一部又は全部は、一つあるいは複数のハードウェアを用いて実現されてもよい。例えば、マイコン11の機能がハードウェアである電子回路によって実現される場合、その電子回路は、デジタル回路、又はアナログ回路、あるいはこれらの組合せによって実現されてよい。
装置外通信部51は、外部通信装置12を用いて通信線19を介して制御対象3との間で予め定められた通信方式(例えば、本実施形態ではCAN)で通信を行う。
実行部52は、装置外通信部51を用いて、制御対象3の制御を行う。また、実行部52は、始動スイッチ7がオフされた後に上述の停止前処理を少なくとも実行する。実行部52は、停止前処理が完了すると、完了フラグをセットするように構成され得る。なお、停止前処理が実行される前は、完了フラグはリセットされている。
また、実行部52は、上述の入力回路22を介して入力された始動スイッチ信号Ssがアクティブ状態の場合に始動フラグをセットし、始動スイッチ信号Ssが非アクティブ状態である場合に始動フラグをリセットする。
保持部56は、第1出力部57を備える。第1出力部57は、始動スイッチ7がオンされている間、及び、始動スイッチ7がオフされた後の少なくとも上述の処理期間に、主電源回路31をオンするための保持信号を駆動部23へ出力するように構成される。
具体的には、第1出力部57は、始動スイッチ7がオンされている間、アクティブ状態の第1保持信号Sh1及びアクティブ状態の第2保持信号Sh2を駆動部23へ出力する。また、第1出力部57は、処理期間は、第1保持信号Sh1及び第2保持信号Sh2のうち少なくとも一方をアクティブ状態として、第1保持信号Sh1及び第2保持信号Sh2を駆動部23へ出力する。
判定部54は、始動スイッチ7がオンされている間、レジスタ26から保持信号の状態を繰り返し取得する。判定部54は、取得された保持信号の状態に基づいて、保持信号が出力される経路に非実行故障が生じているか否かを判定するように構成される。非実行故障とは、始動スイッチ7がオフされた後に停止前処理が実行されない故障をいう。
非実行故障は、換言すれば、始動スイッチ7がオフされた後の停止前処理が実行されるべき処理期間に、主電源回路31がオンにならない故障(以下、オフ故障ともいう)であるといえる。なお、非実行故障の要因としては、例えば、保持信号が出力される経路における信号線の断線が含まれる。判定部54は、オフ故障診断処理を実行することによって、該機能を実現する。
診断部55は、始動スイッチ7がオフされた後に、第1保持信号Sh1が出力される経路又は第2保持信号Sh2が出力される経路において、いずれかの保持信号をアクティブ状態に固定する固定故障が生じているか否かを判定するように構成される。診断部55は、固定故障判定処理を実行することによって、該機能を実現する。
[1-2.処理]
以下、マイコン11における保持部56としての第1出力部57、判定部54、及び診断部55が実行する処理についてフローチャートを用いて説明する。
[1-2-1.保持部56が実行する処理]
次に、保持部56としての第1出力部57が実行する保持出力処理について、図2のフローチャートを用いて説明する。保持出力処理は、始動スイッチ7がオンされてから、少なくとも停止前処理が終了する迄の間、電源スイッチとしての主電源回路31をオンするための処理である。第1出力部57は、始動スイッチ7がオンされたことをきっかけとして本処理を開始し、停止前処理が終了する迄の間予め定められた周期で本処理を繰り返し実行する。
S1では、第1出力部57は、始動スイッチ7がオンされた直後であるか否かを判定する。第1出力部57は、始動スイッチ7がオンされた直後であると判定される場合に処理をS2へ移させ、始動スイッチ7がオンされた直後でないと判定される場合に処理をS2へ移させる。例えば、第1出力部57は、始動フラグがオフからオンに変化した場合に、始動スイッチ7がオンされた直後であると判定するように構成され得る。
S2では、第1出力部57は、アクティブ状態の第1保持信号Sh1を駆動部23へ出力する。これにより、始動スイッチ7がオンされた直後に、第1記憶領域41にアクティブ状態の第1保持信号Sh1が記憶される。
S3では、第1出力部57は、アクティブ状態の第2保持信号Sh2を駆動部23へ出力する。つまり、第1出力部57は、内部通信部53を用いて、バス16を介したSPI通信によって、第2保持信号Sh2をアクティブ状態で第2記憶領域42に書き込むための書き込み指令を出力する。これにより、始動スイッチ7がオンされた直後に、第2記憶領域42に、アクティブ状態の第2保持信号Sh2が記憶される。
そして、第1出力部57は、以上で本保持出力処理を終了する。
S4では、第1出力部57は、停止前処理が完了したか否かを判定する。第1出力部57は、停止前処理が完了したと判定された場合に処理をS5へ移行させ、始動スイッチ7がオフされていないと判定された場合に、以上で本保持出力処理を終了する。第1出力部57は、完了フラグがセットされている場合に、停止前処理が完了したと判定するように構成され得る。
S5では、第1出力部57は、非アクティブ状態の第1保持信号Sh1を駆動部23へ出力する。これにより、第1記憶領域41に、非アクティブ状態の第1保持信号Sh1が記憶される。
S6では、第1出力部57は、非アクティブ状態の第2保持信号Sh2を駆動部23へ出力する。つまり、第1出力部57は、内部通信部53を用いて、バス16を介したSPI通信によって、第2保持信号Sh2を非アクティブ状態で第2記憶領域42に書き込むための書き込み指令を出力する。これにより、第2記憶領域42に、非アクティブ状態の第2保持信号Sh2が記憶される。そして、第1出力部57は、以上で本保持出力処理を終了する。
このように構成された第1出力部57は、始動スイッチ7がオンされてから停止前処理が終了する迄の間、駆動部23へアクティブ状態の保持信号を出力する。これにより、始動スイッチ7がオンされてから停止前処理が終了する迄の間、主電源回路31が継続してオンされマイコン11に電源電圧Vmが継続して供給される。
なお、マイコン11は、始動スイッチ7がオンされてから停止前処理が終了する迄の間、マイコン11によって定期的な処理が実行されていない空き時間であるアイドルタスク期間に、保持信号をアクティブ状態に更新するように構成され得る。アイドルタスク期間を利用することによって、マイコン11の処理負荷の増加を抑制しつつ、保持信号を更新することができる。ここでいう処理負荷の増加とは、実行すべき処理が同時期に重なることをいう。本実施形態では、保持信号は、第1保持信号Sh1と第2保持信号Sh2とを含んでおり、冗長構成になっている。
[1-2-2.判定部54が実行する処理]
<オフ故障判定処理>
次に、判定部54が実行するオフ故障判定処理について、図3のフローチャートを用いて説明する。判定部54は、予め定められた周期で、本処理を繰り返し実行する。非実行故障は始動スイッチ7がオフされた後に影響が生じる故障である。このため、判定部54は、処理負荷の低減を考慮して、相対的に低い周期(例えば、約百msec~約数百msec)で本オフ故障判定処理を実行してもよい。
なお、後述する第1オフ故障正常フラグFoff_T1及び第1オフ故障異常フラグFoff_F1は初期状態ではリセットされている。また、後述する第2オフ故障正常フラグFoff_T2及び第2オフ故障異常フラグFoff_F2は初期状態ではリセットされている。
S10では、判定部54は、IC監視情報及び通信監視情報を取得する。IC監視情報は、IC13が正常に作動しているか否かを表す情報である。通信監視情報は、バス16による通信(すなわち、本実施形態ではSPI通信)が正常に実行されているか否かを表す情報である。
ここで、マイコン11は、例えば、IC13の動作良否を監視するIC監視処理を行うように構成され得る。この場合、例えば、IC13は、図示していないが、所定時間毎にパルス信号であるウォッチドッグパルスを出力するように構成される。マイコン11は、IC監視処理では、ウォッチドッグパルスを監視して、ウォッチドッグパルスが所定時間毎に出力されている場合に、IC13が正常であることを示すIC監視情報を生成してマイコン11が備えるメモリに記憶する。
また、マイコン11は、ウォッチドッグパルスがIC13から出力されない継続時間が規定時間に達したと判定すると、IC13が異常であることを示すIC監視情報を生成してマイコン11が備えるメモリに記憶する。なお、IC監視処理は、上述の処理に限定されるものではなく、IC13の動作良否を検知するための種々の処理であり得る。
一方、マイコン11は、例えば、バス16による通信の良否を監視する通信監視処理を行うように構成され得る。マイコン11は、通信監視処理では、IC13へ出力する指令に対する応答をIC13から受信している場合に、バス16による通信が正常に実行されていることを示す通信監視情報を生成し、マイコン11が備えるメモリに記憶する。
また、マイコン11は、IC13へ出力する指令に対する応答をIC13から受信していない場合に、バス16による通信が正常に実行されていないことを示す通信監視情報を生成し、マイコン11が備えるメモリに記憶する。なお、通信監視処理は、上述の処理に限定されるものではなく、バス16の通信良否を検知するための種々の処理であり得る。
判定部54は、IC監視情報及び通信監視情報を、マイコン11が備える上述のメモリから取得する。
S20では、判定部54は、IC監視情報及び通信監視情報に基づいて、IC13が正常であり、且つ、バス16によるIC13との通信が正常であるか、否か、を判定する。判定部54は、IC13が正常であり、且つ、バス16によるIC13との通信が正常である場合に、処理をS50へ移行させる。判定部54は、IC13の状態及びバス16によるIC13との通信の少なくとも一方に異常が生じている場合に、処理をS30へ移行させる。
S30では、判定部54は、第1オフ故障正常カウンタのカウント値Coff_T1、及び、第1オフ故障異常カウンタのカウント値Coff_F1をリセット(すなわち、クリアして0に)する。カウント値Coff_T1、カウント値Coff_F1は、第1保持信号Sh1の出力経路に非実行故障が生じているか否かを判定するために用いられる値である。
続くS40では、判定部54は、第2オフ故障正常カウンタのカウント値Coff_T2、及び、第2オフ故障異常カウンタのカウント値Coff_F2をリセット(すなわち、クリアして0に)する。カウント値Coff_T2、カウント値Coff_F2は、第2保持信号Sh2の出力経路に非実行故障が生じているか否かを判定するために用いられる値である。
そして、判定部54は、以上でオフ故障判定処理を終了する。つまり、判定部54は、IC13の状態及びIC13との通信状態のいずれか一方に異常が生じている場合は、非実行故障が生じているか否かの判定を実行せず、オフ故障判定処理を終了する。
S50では、判定部54は、第1オフ故障診断を実行する。後述するように、第1オフ故障診断では、判定部54は、IC13の第1記憶領域41から取得された複数回ぶんの第1保持信号Sh1の状態に基づいて、第1保持信号Sh1が出力される経路に非実行故障が生じているか否かを判定する。判定部54は、非実行故障が生じていると判定される場合に、第1オフ故障異常フラグFoff_F1をセットする。
続くS60では、判定部54は、第2オフ故障診断を実行する。後述するように、第2オフ故障診断では、判定部54は、IC13の第2記憶領域42から取得された複数回ぶんの第2保持信号Sh2の状態に基づいて、第2保持信号Sh2が出力される経路に非実行故障が生じているか否かを判定する。判定部54は、非実行故障が生じていると判定される場合に、第2オフ故障異常フラグFoff_F2をセットする。そして、判定部54は、処理をS70へ移行させる。
S70では、判定部54は、第1オフ故障診断の実行結果、及び第2オフ故障診断の実行結果を種々の態様で出力する。例えば、判定部54は、第1オフ故障診断の実行結果、及び、第2オフ故障診断の実行結果を、車両が備える他の電子制御装置等に出力するように構成され得る。第1オフ故障異常フラグFoff_F1がセットされていることが、第1保持信号Sh1が出力される経路に非実行故障が生じているという実行結果を示す。第2オフ故障異常フラグFoff_F2がセットされていることが、第2保持信号Sh2が出力される経路に非実行故障が生じているという実行結果を示す。
例えば、判定部54は、第1保持信号Sh1の出力経路(又は、第2保持信号Sh2の出力経路)に非実行故障が生じていると判定された場合に、運転者や他の電子制御装置への報知のための出力を行うように構成され得る。又は、判定部54は、第1保持信号Sh1の出力経路及び第2保持信号Sh2の出力経路の両方に非実行故障が生じていると判定された場合にのみ、運転者や他の電子制御装置への報知のための出力を行うように構成され得る。
また例えば、判定部54は、第1保持信号Sh1の出力経路及び第2保持信号Sh2の出力経路の少なくとも一方に非実行故障が生じていると判定された場合に、制御対象3の制御パラメータとして、より安全側の制御パラメータを用いるように構成され得る。
そして、判定部54は、以上で本オフ故障判定処理を終了する。
<第1オフ故障診断>
次に、オフ故障判定処理のS50で実行される第1オフ故障診断について図4を用いて説明する。
S110では、判定部54は、バス16を用いたIC13との通信によって、第1記憶領域41から第1保持信号Sh1の状態を取得する。判定部54は、取得した第1保持信号Sh1の状態を第1状態モニタ値として、マイコン11が備えるメモリに記憶する。
S111では、判定部54は、第1状態モニタ値がアクティブ状態であるか否かを判定する。判定部54は、第1状態モニタ値がアクティブ状態である場合に処理をS112へ移行させ、第1状態モニタ値が非アクティブ状態である場合に処理をS115へ移行させる。
S112では、判定部54は、第1オフ故障正常カウンタのカウント値Coff_T1をカウントアップし(すなわち、1増加させ)、第1オフ故障異常カウンタのカウント値Coff_F1をクリアする(すなわち、0にする)。
続くS113では、判定部54は、予め定められた複数回数である判定回数H(例えば、3回)以上連続して、第1状態モニタ値がアクティブ状態であるか否かを判定する。具体的には、判定部54は、カウント値Coff_T1が判定回数H以上(すなわち、3以上)であり、且つ、第1オフ故障異常フラグFoff_F1がリセットされている場合に、判定回数H以上連続して第1状態モニタ値がアクティブ状態である、と判定する。
ここで、判定部54は、カウント値Coff_T1が判定回数H以上であり、且つ、第1オフ故障異常フラグFoff_F1がリセットされている場合に処理をS114へ移行させる。一方、判定部54は、カウント値Coff_T1が判定回数H以上であること、及び、第1オフ故障異常フラグFoff_F1がリセットされていること、のうち少なくとも一方が満たされていない場合に、本第1オフ故障診断を終了する。
S114では、判定部54は、第1オフ故障正常フラグFoff_T1をセットし、第1オフ故障異常フラグFoff_F1をリセットし、本第1オフ故障診断を終了する。
S115では、判定部54は、第1オフ故障正常カウンタのカウント値Coff_T1をクリアし(すなわち、0にし)、第1オフ故障異常カウンタのカウント値Coff_F1をカウントアップする(すなわち、1増加させる)。
S116では、判定部54は、上述の判定回数H(例えば、3回)連続して第1状態モニタ値が非アクティブ状態であるか否かを判定する。具体的には、判定部54は、カウント値Coff_F1が判定回数H以上(すなわち、3以上)である場合に判定回数H以上連続して第1状態モニタ値が非アクティブ状態である、と判定する。ここで、判定部54は、カウント値Coff_F1が判定回数H以上である場合に処理をS117へ移行させる。一方、判定部54は、カウント値Coff_F1が判定回数H未満である場合に、本第1オフ故障診断を終了する。
S117では、判定部54は、第1オフ故障正常フラグFoff_T1をセットし、第1オフ故障異常フラグFoff_F1をリセットし、本第1オフ故障診断を終了する。
<第2オフ故障診断>
次に、オフ故障判定処理のS60で実行される第2オフ故障診断について図5を用いて説明する。判定部54は、第2オフ故障診断では、第2保持信号Sh2に基づいて、第1オフ故障診断と同様の処理を実行する。
S120では、判定部54は、バス16を用いたIC13との通信によって、第2記憶領域42から第2保持信号Sh2の状態を取得する。判定部54は、取得した第2保持信号Sh2の状態を第2状態モニタ値として、マイコン11が備えるメモリに記憶する。
S121では、判定部54は、第2状態モニタ値がアクティブ状態であるか否かを判定する。判定部54は、第2状態モニタ値がアクティブ状態である場合に処理をS122へ移行させ、第2状態モニタ値が非アクティブ状態である場合に処理をS125へ移行させる。
S122では、判定部54は、第2オフ故障正常カウンタのカウント値Coff_T2をカウントアップし(すなわち、1増加させ)、第2オフ故障異常カウンタのカウント値Coff_F2をクリアする(すなわち、0にする)。
続くS123では、判定部54は、予め定められた複数回数である判定回数H(例えば、3回)以上連続して、第2状態モニタ値がアクティブ状態であるか否かを判定する。具体的には、判定部54は、カウント値Coff_T2が判定回数H以上(すなわち、3以上)であり、且つ、第2オフ故障異常フラグFoff_F2がリセットされている場合に、判定回数H以上連続して第2状態モニタ値がアクティブ状態である、と判定する。
ここで、判定部54は、カウント値Coff_T2が判定回数H以上であり、且つ、第2オフ故障異常フラグFoff_F2がリセットされている場合に処理をS124へ移行させる。一方、判定部54は、カウント値Coff_T2が判定回数H以上であること、及び、第2オフ故障異常フラグFoff_F2がリセットされていること、のうち少なくとも一方が満たされていない場合に、本第2オフ故障診断を終了する。
S124では、判定部54は、第2オフ故障正常フラグFoff_T2をセットし、第2オフ故障異常フラグFoff_F2をリセットし、本第2オフ故障診断を終了する。
S125では、判定部54は、第2オフ故障正常カウンタのカウント値Coff_T2をクリアし(すなわち、0にし)、第2オフ故障異常カウンタのカウント値Coff_F2をカウントアップする(すなわち、1増加させる)。
S126では、判定部54は、上述の判定回数H(例えば、3回)連続して第2状態モニタ値が非アクティブ状態であるか否かを判定する。具体的には、判定部54は、カウント値Coff_F2が判定回数H以上(すなわち、3以上)である場合に判定回数H以上連続して第2状態モニタ値が非アクティブ状態である、と判定する。ここで、判定部54は、カウント値Coff_F2が判定回数H以上である場合に処理をS127へ移行させる。一方、判定部54は、カウント値Coff_F2が判定回数H未満である場合に、本第2オフ故障診断を終了する。
S127では、判定部54は、第2オフ故障正常フラグFoff_T2をセットし、第2オフ故障異常フラグFoff_F2をリセットし、本第2オフ故障診断を終了する。
<固定故障判定処理>
次に、診断部55が実行する固定故障判定処理について、図6のフローチャートを用いて説明する。固定故障には、第1保持信号Sh1が出力される経路において第1保持信号Sh1がアクティブ状態に固定される故障、及び、第2保持信号Sh2が出力される経路において第2保持信号Sh2がアクティブ状態に固定される故障、が含まれる。診断部55は、始動スイッチ7がオフされたことをきっかけとして、所定の周期で繰り返し固定故障判定処理を実行する。
なお、後述する第1固定故障正常フラグFon_T1及び第1固定故障異常フラグFon_F1は初期状態ではリセットされている。また、後述する第2固定故障正常フラグFon_T2及び第2固定故障異常フラグFon_F2は初期状態ではリセットされている。
S200では、診断部55は、上述のIC監視情報及び上述の通信監視情報を取得する。また、診断部55は、第1オフ故障正常フラグFoff_T1及び第1オフ故障異常フラグFoff_F1と、第2オフ故障正常フラグFoff_T2及び第2オフ故障異常フラグFoff_F2と、を取得する。
S205では、診断部55は、IC13が正常であり、且つ、バス16によるIC13との通信が正常であり、且つ、第1保持信号Sh1及び第2保持信号Sh2が出力される経路に非実行故障(すなわち、オフ故障)が生じていない場合に、処理をS225へ移行させる。つまり、診断部55は、固定故障の有無を判定するために処理をS225へ移行させる。診断部55は、IC13が正常でない、又は、バス16によるIC13との通信が正常でない、又は、第1保持信号Sh1及び第2保持信号Sh2が出力される経路の少なくとも一方に非実行故障が生じている場合に、処理をS210へ移行させる。
S210では、診断部55は、第1固定故障正常カウンタのカウント値Con_T1、及び、第1固定故障異常カウンタのカウント値Con_F1をリセット(すなわち、クリアして0に)する。カウント値Con_T1、カウント値Con_F1は、第1保持信号Sh1が出力される経路に固定故障が生じているか否かを判定するために第1固定故障診断にて用いられる値である。第1固定故障診断は、第1保持信号Sh1が出力される経路に固定故障が生じているか否かを判定するための処理である。
S215では、診断部55は、第2固定故障正常カウンタのカウント値Con_T2、及び、第2固定故障異常カウンタのカウント値Con_F2をリセット(すなわち、クリアして0に)する。カウント値Con_T2、カウント値Con_F2は、第2保持信号Sh2が出力される経路に固定故障が生じているか否かを判定するために第2固定故障診断にて用いられる値である。第2固定故障診断は、第2保持信号Sh2が出力される経路に固定故障が生じているか否かを判定するための処理である。
つまり、診断部55は、S210-S215では、第1固定故障診断及び第2固定故障診断を実行せずに、本固定故障判定処理を終了する。
S220では、診断部55は、後述する第1固定故障診断が完了しているか否かを判定する。診断部55は、第1固定故障診断が完了している場合に処理をS235へ移行させ、第1固定故障診断が完了していない場合に処理をS225へ移行させる。診断部55は、第1固定故障正常フラグFon_T1及び第1固定故障異常フラグFon_F1のうち一方がセットされている場合に、第1固定故障診断が完了していると判定する。
S225では、診断部55は、第1出力部57に、非アクティブ状態である第1保持信号Sh1を駆動部23に出力させ、且つ、アクティブ状態である第2保持信号Sh2を駆動部23に出力させる。
例えば、診断部55は、第1出力部57に切替指示を出力するように構成され得る。切替指示は、第1保持信号Sh1及び第2保持信号Sh2のうち、一方を対象信号とし他方を非対象信号として選択することを指示する。第1出力部57は、切替指示に従って、非アクティブ状態である対象信号を駆動部23に出力し、アクティブ状態である非対象信号を駆動部23に出力するように構成され得る。
本ステップでは、診断部55は、第1保持信号Sh1及び第2保持信号Sh2のうち、第1保持信号Sh1を対象信号とし第2保持信号Sh2を非対象信号として選択することを指示する切替指示を出力する。これにより、第1出力部57は、切替指示に従って、非アクティブ状態である第1保持信号Sh1を駆動部23に出力し、アクティブ状態である第2保持信号Sh2を駆動部23に出力する。
続くS230では、診断部55は、後述する第1固定故障診断を実行する。第1固定故障診断では、診断部55は、第1出力部57によって非アクティブ状態である対象信号(すなわち、第1保持信号Sh1)及びアクティブ状態である非対象信号(すなわち、第2保持信号Sh2)が出力されている間、レジスタ26から対象信号の状態を繰り返し取得する。
そして診断部55は、取得された対象信号としての第1保持信号Sh1の状態に基づいて、対象信号が出力される経路において該対象信号をアクティブ状態に固定する固定故障が生じているか否かを判定する。診断部55は、第1固定故障診断を終了すると、本固定故障判定処理を終了する。つまり、本固定故障判定処理が実行される次のサイクルで、S205にて肯定判定され、且つ、S220にて肯定判定された場合に、処理はS235へ移行される。
S235では、診断部55は、後述する第2固定故障診断が完了しているか否かを判定する。診断部55は、第2固定故障診断が完了している場合に本固定故障判定処理を終了し、第2固定故障診断が完了していない場合に処理をS240へ移行させる。診断部55は、第2固定故障正常フラグFon_T2及び第2固定故障異常フラグFon_F2のうち一方がセットされている場合に、第2固定故障診断が完了していると判定する。
S240では、診断部55は、第1出力部57に、アクティブ状態である第1保持信号Sh1を駆動部23に出力させ、且つ、非アクティブ状態である第2保持信号Sh2を駆動部23に出力させる。本ステップでは、診断部55は、第1保持信号Sh1及び第2保持信号Sh2のうち、第1保持信号Sh1を非対象信号とし第2保持信号Sh2を対象信号として選択することを指示する切替指示を出力する。これにより、第1出力部57は、切替指示に従って、アクティブ状態である第1保持信号Sh1を駆動部23に出力し、非アクティブ状態である第2保持信号Sh2を駆動部23に出力する。
つまり、診断部55は、第1固定故障診断が完了した後に、第1保持信号Sh1及び第2保持信号Sh2において対象信号及び非対象信号を入れ替えて、一方である第1保持信号Sh1を非対象信号とし、他方である第2保持信号Sh2を対象信号とする。そして、診断部55は、非アクティブ状態である対象信号を駆動部23に出力し、アクティブ状態である非対象信号を前記駆動部に出力する。
続くS245では、診断部55は、後述する第2固定故障診断を実行する。第2固定故障診断では、診断部55は、第1出力部57によって非アクティブ状態である対象信号(すなわち、第2保持信号Sh2)及びアクティブ状態である非対象信号(すなわち、第1保持信号Sh1)が出力されている間、レジスタ26から対象信号の状態を繰り返し取得する。
そして診断部55は、取得された対象信号としての第2保持信号Sh2の状態に基づいて、対象信号が出力される経路において該対象信号をアクティブ状態に固定する固定故障が生じているか否かを判定する。診断部55は、第2固定故障診断を終了すると、本固定故障判定処理を終了する。
(第1固定故障診断)
次に、診断部55が固定故障判定処理のS230で実行する第1固定故障診断について、図7のフローチャートを用いて説明する。
S310では、診断部55は、対象信号としての第1保持信号Sh1をアクティブ状態から非アクティブ状態に切り替えた後の経過時間(すなわち、非アクティブ状態の第1保持信号Sh1を出力した以降の経過時間)を、経過カウンタを用いてカウントする。なお、経過カウンタの経過カウント値は、本固定故障判定処理が実行される前に初期化(すなわち、0にリセット)されている。診断部55は、本ステップでは、経過カウント値を1増加させる。
S311では、診断部55は、経過カウント値が1よりも大きい場合に処理をS312へ移行させ、経過カウント値が1以下である場合に本第1固定故障診断を終了する。つまり、第1保持信号Sh1をアクティブ状態から非アクティブ状態に切り替えたサイクルの次のサイクル以降において、S312以降の処理を実行する。
経過カウント値が1以下である場合に第1固定故障診断を終了するのは、切替指示によって実際に非アクティブ状態の第1保持信号Sh1が出力されるまでの遅延を考慮するためである。例えば、第1固定故障診断(すなわち、換言すれば第1故障診断を含む固定故障判定処理)が約10msecの周期で実行されるとする。この場合は、経過カウント値>1の場合に、すなわち、対象信号としての第1保持信号Sh1をアクティブ状態から非アクティブ状態に切り替えてから約10msecが経過した後に、S312以降の処理が実行される。
S312では、診断部55は、第1記憶領域41から第1保持信号Sh1を取得する。診断部55は、取得した第1保持信号Sh1の状態を、第1切替モニタ値として、マイコン11が備えるメモリに記憶する。
続くS313では、診断部55は第1切替モニタ値が非アクティブ状態であるか否かを判定する。診断部55は、第1切替モニタ値が非アクティブ状態である場合に処理をS314へ移行させ、第1切替モニタ値がアクティブ状態である場合に処理をS317へ移行させる。
S314では、診断部55は、第1固定故障正常カウンタのカウント値Con_T1をカウントアップし(すなわち、1増加させ)、第1固定故障異常カウンタのカウント値Con_F1をクリア(すなわち、0に)する。
続くS315では、診断部55は、第1切替モニタ値が予め定められた複数回数である診断回数S(例えば、3回)以上連続して非アクティブ状態であるか否かを判定する。具体的には、診断部55は、カウント値Con_T1が診断回数S(例えば、3回)以上である場合に、第1切替モニタ値が診断回数S以上連続して非アクティブ状態であると判定する。診断部55は、カウント値Con_T1が診断回数S以上である場合に処理をS316へ移行させ、カウント値Con_T1が診断回数S未満である場合に、本第1固定故障診断処理を終了する。
S316では、診断部55は、第1固定故障正常フラグFon_T1をセットし、第1固定故障異常フラグFon_F1をリセットして、本第1固定故障診断処理を終了する。なお、診断部55は、本ステップでは、第1保持信号Sh1の出力経路に固定故障が生じていないことを、種々の態様で出力するように構成されてもよい。
例えば、診断部55は、車両が備えるディスプレイに表示を行うことによって、第1保持信号Sh1の出力経路に固定故障が生じていないことを運転者等に報知するように構成され得る。また例えば、診断部55は、第1保持信号Sh1の出力経路に固定故障が生じていないことを示すコードをマイコン11が備えるメモリに記憶するように構成され得る。
S317では、診断部55は、第1固定故障正常カウンタのカウント値Con_T1をクリア(すなわち、0に)し、第1固定故障異常カウンタのカウント値Con_F1をカウントアップする(すなわち、1増加させる)。
続くS318では、診断部55は、第1切替モニタ値が上述の診断回数S(例えば、3回)以上連続してアクティブ状態であるか否かを判定する。具体的には、診断部55は、カウント値Con_F1が診断回数S(例えば、3回)以上である場合に、第1切替モニタ値が診断回数S以上連続してアクティブ状態であると判定する。診断部55は、カウント値Con_F1が診断回数S以上である場合に処理をS319へ移行させ、カウント値Con_F1が診断回数S未満である場合に、本第1固定故障診断処理を終了する。
S319では、診断部55は、第1固定故障正常フラグFon_T1をリセットし、第1固定故障異常フラグFon_F1をセットして、本第1固定故障診断処理を終了する。なお、診断部55は、本ステップでは、第1保持信号Sh1の出力経路に固定故障が生じていることを、種々の態様で出力するように構成されてもよい。
例えば、診断部55は、車両が備えるディスプレイに表示を行うことによって、第1保持信号Sh1の出力経路に固定故障が生じていることを運転者等に報知するように構成され得る。また例えば、診断部55は、第1保持信号Sh1の出力経路に固定故障が生じていることを示す故障コードをマイコン11が備えるメモリに記憶するように構成され得る。
(第2固定故障診断)
次に、診断部55が固定故障判定処理のS245で実行する第2固定故障診断について、図8のフローチャートを用いて説明する。診断部55は、第2固定故障診断では、第1固定故障診断と同様に、第2保持信号Sh2に固定故障が生じているか否かを判定する。
S320では、診断部55は、対象信号としての第2保持信号Sh2をアクティブ状態から非アクティブ状態に切り替えた後の経過時間(すなわち、非アクティブ状態の第2保持信号Sh2を出力した以降の経過時間)を、経過カウンタを用いてカウントする。なお、経過カウンタの経過カウント値は、本固定故障判定処理が実行される前に初期化(すなわち、0にリセット)されている。診断部55は、本ステップでは、経過カウント値を1増加させる。
S321では、診断部55は、経過カウント値が1よりも大きい場合に処理をS322へ移行させ、経過カウント値が1以下である場合に本第2固定故障診断を終了する。つまり、第2保持信号Sh2をアクティブ状態から非アクティブ状態に切り替えたサイクルの次のサイクル以降において、S322以降の処理を実行する。
経過カウント値が1以下である場合に第2固定故障診断を終了するのは、切替指示によって実際に非アクティブ状態の第2保持信号Sh2が出力されるまでの遅延を考慮するためである。例えば、第2固定故障診断(すなわち、換言すれば第2故障診断を含む固定故障判定処理)が約10msecの周期で実行されるとする。この場合は、経過カウント値>1の場合に、すなわち、対象信号としての第2保持信号Sh2をアクティブ状態から非アクティブ状態に切り替えてから約10msecが経過した後に、S322以降の処理が実行される。
S322では、診断部55は、第2記憶領域42から第2保持信号Sh2を取得する。診断部55は、取得した第2保持信号Sh2の状態を、第2切替モニタ値として、マイコン11が備えるメモリに記憶する。
続くS323では、診断部55は第2切替モニタ値が非アクティブ状態であるか否かを判定する。診断部55は、第2切替モニタ値が非アクティブ状態である場合に処理をS324へ移行させ、第2切替モニタ値がアクティブ状態である場合に処理をS327へ移行させる。
S324では、診断部55は、第2固定故障正常カウンタのカウント値Con_T2をカウントアップし(すなわち、1増加させ)、第2固定故障異常カウンタのカウント値Con_F2をクリア(すなわち、0に)する。
続くS325では、診断部55は、第2切替モニタ値が予め定められた複数回数である診断回数S(例えば、3回)以上連続して非アクティブ状態であるか否かを判定する。具体的には、診断部55は、カウント値Con_T2が診断回数S(例えば、3回)以上である場合に、第2切替モニタ値が診断回数S以上連続して非アクティブ状態であると判定する。診断部55は、カウント値Con_T2が診断回数S以上である場合に処理をS326へ移行させ、カウント値Con_T2が診断回数S未満である場合に、本第2固定故障診断処理を終了する。
S326では、診断部55は、第2固定故障正常フラグFon_T2をセットし、第2固定故障異常フラグFon_F2をリセットして、本第2固定故障診断処理を終了する。なお、診断部55は、本ステップでは、第2保持信号Sh2の出力経路に固定故障が生じていないことを、種々の態様で出力するように構成されてもよい。
例えば、診断部55は、車両が備えるディスプレイに表示を行うことによって、第2保持信号Sh2の出力経路に固定故障が生じていないことを運転者等に報知するように構成され得る。また例えば、診断部55は、第2保持信号Sh2の出力経路に固定故障が生じていないことを示すコードをマイコン11が備えるメモリに記憶するように構成され得る。
S327では、診断部55は、第2固定故障正常カウンタのカウント値Con_T2をクリア(すなわち、0に)し、第2固定故障異常カウンタのカウント値Con_F2をカウントアップする(すなわち、1増加させる)。
続くS328では、診断部55は、第2切替モニタ値が上述の診断回数S(例えば、3回)以上連続してアクティブ状態であるか否かを判定する。具体的には、診断部55は、カウント値Con_F2が診断回数S(例えば、3回)以上である場合に、第2切替モニタ値が診断回数S以上連続してアクティブ状態であると判定する。診断部55は、カウント値Con_F2が診断回数S以上である場合に処理をS329へ移行させ、カウント値Con_F2が診断回数S未満である場合に、本第2固定故障診断処理を終了する。
S329では、診断部55は、第2固定故障正常フラグFon_T2をリセットし、第2固定故障異常フラグFon_F2をセットして、本第2固定故障診断処理を終了する。なお、診断部55は、本ステップでは、第2保持信号Sh2の出力経路に固定故障が生じていることを、種々の態様で出力するように構成されてもよい。
例えば、診断部55は、車両が備えるディスプレイに表示を行うことによって、第2保持信号Sh2の出力経路に固定故障が生じていることを運転者等に報知するように構成され得る。また例えば、診断部55は、第2保持信号Sh2の出力経路に固定故障が生じていることを示す故障コードをマイコン11が備えるメモリに記憶するように構成され得る。
このように、固定故障判定処理では、対象信号となる保持信号がアクティブ状態から非アクティブ状態に切り替わる指示が出力された際に、アクティブ状態である対象信号がレジスタ26から取得された場合には、対象信号の出力経路に固定故障が生じていると判定される。
[1-3.効果]
以上詳述した第1実施形態によれば、以下の効果を奏する。
(1a)マイコン11は、実行部52と、保持部56(すなわち、第1出力部57)と、判定部54を備える。実行部52は、始動スイッチ7がオフされた後に停止前処理を少なくとも実行する。第1出力部57は、始動スイッチ7がオンされている間、及び、処理期間に、主電源回路31をオンするための少なくとも1つの指示信号を保持信号として駆動部23へ出力するように構成される。処理期間は、始動スイッチ7がオフされた後の所定期間であって少なくともマイコン11が停止前処理を終了する迄の期間である。
判定部54は、始動スイッチ7がオンされている間、レジスタ26から少なくとも1つの保持信号(すなわち、第1保持信号Sh1、第2保持信号Sh2)の状態を取得する。判定部54は、取得された保持信号の状態に基づいて、該保持信号が出力される経路に、非実行故障が生じているか否かを判定する。
これにより、ECU10において、主電源回路31によるECU10への電源供給を始動スイッチ7がオフになった後も維持するための信号(すなわち、保持信号)が出力されない故障(すなわち、非実行故障)、を検出することができる。また、ECU10は、上述の比較装置のように、電源供給を受けるマイコンにて作動する計測タイマを用いた計測結果をRAMに記憶して該計測結果に基づいて、非実行故障の有無を判定しない。このため、例えば電源の瞬断時におけるRAMでの記憶保持の期間(すなわち、RAMが電源の瞬断によりブランク状態になるまでの期間)といったマイコンの性能に拘わらず、非実行故障を精度よく検出することができる。
(1b)保持信号は複数であり、第1保持信号Sh1と第2保持信号Sh2とを含む。判定部54は、保持信号としての第1保持信号Sh1が出力される経路において非実行故障が生じているか否かを判定し、且つ、保持信号としての第2保持信号Sh2が出力される経路において非実行故障が生じているか否かを判定する。つまり、保持信号は冗長構成となっているので、第1保持信号Sh1及び第2保持信号Sh2のうち一方が出力される経路に非実行故障が生じたとしても、他方の保持信号が駆動部23へ出力される。結果として、マイコン11に停止前処理を確実に実行させることができる。
(1c)判定部54は、保持信号の状態を繰り返し取得し、非アクティブ状態である保持信号が判定回数H取得された場合に、保持信号が出力される経路において非実行故障が生じていると判定する。判定回数Hは複数である。これにより、複数回の判定により、非実行故障が生じているとことを精度よく判定することができる。また、判定部54は、非アクティブ状態である保持信号が判定回数H連続して取得された場合に、非実行故障が生じていると判定する。同一の判定が連続して得られた場合に判定を確定するので、非実行故障が生じているとことをより精度よく検出することができる。
(1d)判定部54は、保持信号の状態を繰り返し取得し、アクティブ状態である保持信号が判定回数H取得された場合に、保持信号が出力される経路において非実行故障が生じていないと判定する。判定回数Hは複数である。これにより、複数回の判定により、非実行故障が生じていないことを精度よく判定することができる。また、判定部54は、アクティブ状態である保持信号が判定回数H連続して取得された場合に、非実行故障が生じていないと判定する。同一の判定が連続して得られた場合に判定を確定するので、非実行故障が生じていないことをより精度よく検出することができる。
(1e)第1出力部57は、始動スイッチ7がオフされた後、第1保持信号Sh1及び第2保持信号Sh2のうちの一方を対象信号とし他方を非対象信号として、非アクティブ状態である対象信号を駆動部23に出力する。また、第1出力部57は、アクティブ状態である非対象信号を駆動部23に出力する。診断部55は、第1出力部57によって非アクティブ状態である対象信号及びアクティブ状態である非対象信号が出力されている間、レジスタ26から対象信号の状態を取得する。
そして、診断部55は、取得された対象信号の状態に基づいて、対象信号が出力される経路において対象信号をアクティブ状態に固定する固定故障が生じているか否かを判定する。これにより、駆動部23へ複数の保持信号のうちの他方(すなわち、非対象信号)を供給した状態で、複数の保持信号のうちの一方(すなわち、対象信号)が出力される経路において固定故障が生じているか否かを判定することができる。つまり、非実行故障が生じることを抑制しつつ、複数の保持信号のうちの一方が出力される経路において固定故障が生じているか否かを判定することができる。
(1f)第1出力部57は、診断部55によって対象信号についての判定が完了した後に、第1保持信号Sh1及び第2保持信号Sh2のうちの上述の一方を非対象信号とし上述の他方を対象信号として、アクティブ状態である対象信号を駆動部23に出力する。また、第1出力部57は、非アクティブ状態である非対象信号を駆動部23に出力する。ここでいう対象信号についての判定とは、対象信号が出力される経路において固定故障が生じているか否かの判定をいう。
診断部55は、第1出力部57によって非アクティブ状態である対象信号及びアクティブ状態である非対象信号が出力されている間、対象信号が出力される経路において対象信号をアクティブ状態に固定する故障である固定故障が生じているか否かを判定する。これにより、駆動部23へ複数の保持信号のうちの一方(すなわち、非対象信号)を供給した状態で、複数の保持信号のうちの他方(すなわち、対象信号)が出力される経路において固定故障が生じているか否かを判定することができる。つまり、非実行故障が生じることを抑制しつつ、複数の保持信号のうちの他方が出力される経路において固定故障が生じているか否かを判定することができる。
(1g)診断部55は、対象信号の状態を繰り返し取得し、アクティブ状態である対象信号が予め定められた診断回数S取得された場合に、固定故障が生じていると判定する。診断回数Sは複数である。これにより、複数回の判定により、固定故障が生じていることを精度よく判定することができる。また、本実施形態の診断部55は、アクティブ状態である保持信号が診断回数S連続して取得された場合に、固定故障が生じていると判定する。同一の判定が連続して得られた場合に判定を確定するので、固定故障が生じていることをより精度よく判定することができる。
(1h)診断部55は、対象信号の状態を繰り返し取得し、非アクティブ状態である対象信号が診断回数S取得された場合に、固定故障が生じていないと判定する。診断回数Sは複数である。これにより、複数回の判定により、固定故障が生じていないことを精度よく判定することができる。また、本実施形態の診断部55は、非アクティブ状態である保持信号が診断回数S連続して取得された場合に、固定故障が生じていると判定する。同一の判定が連続して得られた場合に判定を確定するので、固定故障が生じていることをより精度よく判定することができる。
(1i)マイコン11は、予め定められた通信方式(例えば、本実施形態ではSPI通信)に従う通信を行うバス16に接続されIC13との間で該通信方式に従う通信を行うように構成されている。第1出力部57は、少なくとも1つの保持信号を、バス16に含まれる信号線とは異なる信号線である接続線17に出力するように構成される。これにより、バス16による通信が実行されるか否かに拘わらず、第1保持信号Sh1を常に駆動部23へ出力することができる。
なお、上述の実施形態において、ECU10が電子制御装置に相当し、マイコン11が制御部に相当し、IC13が供給部に相当する。レジスタ26、第1記憶領域41、第2記憶領域42が保持信号記憶部に相当し、第1出力部57及び第2出力部58が保持部に相当する。アクティブ状態及び非アクティブ状態のいずれかが、保持信号の状態に相当する。第1保持信号Sh1及び第2保持信号Sh2が保持信号に相当し、第1保持信号Sh1が主保持信号に相当し、第2保持信号Sh2が副保持信号に相当する。接続線17が保持信号としての第1保持信号Sh1が出力される経路に相当し、バス16が保持信号としての第2保持信号Sh2が出力される経路に相当する。
[2.第2実施形態]
[2-1.構成]
[全体構成]
第2実施形態は、基本的な構成は第1実施形態と同様であるため、相違点について以下に説明する。なお、第1実施形態と同じ符号は、同一の構成を示すものであって、先行する説明を参照する。
上述した第1実施形態では、ECU10では、保持信号は複数の保持信号(すなわち、第1保持信号Sh1及び第2保持信号Sh2)を備えていた。これに対し、第2実施形態では、図9に示すように、ECU20は、1つの保持信号として、第1保持信号Sh1のみを備える点で、第1実施形態と相違する。この相違点に伴って、レジスタ26は、第1記憶領域41のみを備え、第2記憶領域42を備えない。また、マイコン11は、保持部56としての第1出力部57に代えて保持部56としての第2出力部58を備え、且つ、診断部55を備えない。また、判定部54が実行する処理が第1実施形態とは異なる。
[2-2.処理]
次に、第2実施形態のマイコン11において、保持部56としての第2出力部58が第1実施形態の第1出力部57に代えて実行する処理、及び、第2実施形態の判定部54が、第1実施形態の判定部54に代えて実行する処理、について説明する。
第2出力部58は、上述の図2における保持出力処理から、第2保持信号Sh2に関する処理であるS3及びS6を削除した処理を実行する。
本実施形態の判定部54は、図3におけるオフ故障判定処理から、第2保持信号Sh2に関する処理であるS40及びS60を削除した処理を実行する。判定部54は、S70では、第1オフ故障診断の実行結果のみを種々の態様で出力する。
[2-3.効果]
以上詳述した第2実施形態によれば、上述した第1実施形態の効果(1a)、(1c)-(1d)を奏する。
[3.第3実施形態]
上述のECU10及びECU20(すなわち、具体的にはマイコン11)は、フェールセーフ処理を実行するように構成されてもよい。ここでいうフェールセーフ処理とは、始動スイッチ7がオフになった後に実行される停止前処理に含まれる少なくとも1つの処理内容と同様の処理内容を、始動スイッチ7がオンの間にも少なくとも1回実行する処理をいう。換言すれば、フェールセーフ処理とは、始動スイッチ7がオンの間に停止前処理に含まれる少なくとも1つの処理内容と同様の処理内容が実行される実行頻度を増やすための処理である。
以下では、ECU10におけるフェールセーフ処理の例を説明する。
例えば、ECU10は、フラッシュメモリの書き換え可能回数を考慮して、制御対象3の制御パラメータのフラッシュメモリへの書き込みを、停止前処理として行うように構成され得る。
この場合、ECU10では、判定部54は、図示しないが、図3に示すS70に続いて更に、全ての保持信号の出力経路に非実行故障が生じていると判定された場合には、フェールセーフ処理を実行するように構成される。また、判定部54は、少なくとも1つの保持信号の出力経路に非実行故障が生じていないと判定された場合には、図3のオフ故障判定処理を終了するように構成され得る。
具体的には、ECU10では、判定部54は、第1保持信号Sh1の出力経路及び第2保持信号Sh2の出力経路の両方に非実行故障が生じている場合に、フェールセーフ処理を実行する。なお、ECU20では、判定部54は、第1保持信号Sh1の出力経路に非実行故障が生じている場合に、フェールセーフ処理を実行する。
例えば、ECU10では、マイコン11は、書き込み指示に従って、制御対象3の制御パラメータをフラッシュメモリへ書き込む書き込み部を備えるように構成され得る。
フェールセーフ処理では、判定部54は、該書き込み部に対して、停止前処理としてだけでなく、制御パラメータに変化が生じるごとに該制御パラメータをフラッシュメモリへ書き込むための書き込み指示を出力するように構成され得る。つまり、制御パラメータをフラッシュメモリへ書き込む書き込み頻度が増加する。
これにより、全ての保持信号の出力経路に非実行故障が生じていない場合は、制御パラメータのフラッシュメモリへの書き込みは停止前処理によって実行されるので、フラッシュメモリの寿命の短縮を抑制することができる。また、全ての保持信号の出力経路に非実行故障が生じている場合には、制御パラメータのフラッシュメモリへの書き込み頻度が増加するので、仮に非実行故障が生じたとしても、直近の制御パラメータがフラッシュメモリへ記憶される。
また、判定部54は、全ての保持信号の出力経路に非実行故障が生じている場合に、1トリップに対して複数回(例えば、所定時間毎に)制御パラメータをフラッシュメモリへ書き込むための書き込み指示を出力するように構成され得る。1トリップとは、始動スイッチ7がオンされてからオフされるまでの期間をいう。これにより、制御パラメータのフラッシュメモリへの書き込み頻度が増加し、仮に非実行故障が生じたとしても、直近に近いタイミングの制御パラメータをフラッシュメモリに記憶させることができる。
なお、本開示はこれに限定されるものではない。マイコン11は、停止処理及びフェールセーフ処理において、上述の制御パラメータに代えて故障コードをフラッシュメモリへ記憶するように構成され得る。これにより、仮に全ての保持信号の出力経路に非実行故障が生じたとしても、直近に近いタイミングの故障コードをフラッシュメモリに記憶させることができる。また、フェールセーフ処理の対象となる処理内容は上述の例に限定されるものではなく、停止前処理の処理内容のうちの種々の処理内容であってよい。
[4.他の実施形態]
以上、本開示の実施形態について説明したが、本開示は上述の実施形態に限定されることなく、種々変形して実施することができる。
(4a)上記実施形態では、判定部54は、同じ状態の保持信号が連続して判定回数H(すなわち、判定回数Hは複数)得られたことに基づいて、該保持信号の出力経路に非実行故障が生じているか否かを判定したが、本開示はこれに限定されるものではない。例えば、判定部54は、同じ状態の保持信号が単に複数回得られたことに基づいて、該保持信号の出力経路に非実行故障が生じているか否かを判定してもよい。又は、判定部54は、1回の保持信号の状態に基づいて、該保持信号の出力経路に非実行故障が生じているか否かを判定してもよい。
(4b)上記実施形態では、診断部55は、同じ状態の保持信号が連続して診断回数S(すなわち、診断回数Sは複数)得られたことに基づいて、該保持信号の出力経路に固定故障が生じているか否かを判定したが、本開示はこれに限定されるものではない。例えば、診断部55は、同じ状態の保持信号が単に複数回得られたことに基づいて、該保持信号の出力経路に固定故障が生じているか否かを判定してもよい。又は、判定部54は、1回の保持信号の状態に基づいて、該保持信号の出力経路に固定故障が生じているか否かを判定してもよい。
(4c)判定部54は、S70において、上述のフェールセーフ処理のみを実行するように構成されてもよい。
(4d)本開示に記載のマイコン11及びその手法は、コンピュータプログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリを構成することによって提供された専用コンピュータにより、実現されてもよい。あるいは、本開示に記載のマイコン11及びその手法は、一つ以上の専用ハードウェア論理回路によってプロセッサを構成することによって提供された専用コンピュータにより、実現されてもよい。もしくは、本開示に記載のマイコン11及びその手法は、一つ乃至は複数の機能を実行するようにプログラムされたプロセッサ及びメモリと一つ以上のハードウェア論理回路によって構成されたプロセッサとの組み合わせにより構成された一つ以上の専用コンピュータにより、実現されてもよい。また、コンピュータプログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されてもよい。マイコン11に含まれる各部の機能を実現する手法には、必ずしもソフトウェアが含まれている必要はなく、その全部の機能が、一つあるいは複数のハードウェアを用いて実現されてもよい。
(4e)上記実施形態における1つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、1つの構成要素が有する1つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、1つの構成要素によって実現したり、複数の構成要素によって実現される1つの機能を、1つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加又は置換してもよい。
(4f)上述したECU10、20、マイコン11、IC13の他、当該ECU10、20を構成要素とするシステム、当該ECU10、20を機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実体的記録媒体、故障判定方法など、種々の形態で本開示を実現することもできる。