以下、本発明の実施形態を図に基づいて説明する。
(第1実施形態)
まず、図1に基づいて、第1実施形態におけるECU200を説明する。本実施形態では、本発明をECU200に適用した例を採用している。なお、ECUは、Electronic Control Unitの略である。
ECU200は、主構成要素としてマイコン100を備えている。また、ECU200は、第1センサ300、第2センサ400、及びアクチュエータ500が電気的に接続されている。ECU200は、第1センサ300の検出結果を示す信号、及び第2センサ400の検出結果を示す信号が入力される。このように、ECU200は、複数の信号(入力信号)が入力されることになる。
そして、ECU200は、第1センサ300及び第2センサ400から出力された複数の信号(入力信号)を用いて、制御対象であるアクチュエータ500に対する制御信号を生成するための制御演算を実行する。言い換えると、ECU200は、入力された入力信号に基づいた制御信号を生成する。つまり、ECU200は、アクチュエータ500を制御する装置と言い換えることができる。よって、制御信号は、アクチュエータ500を制御するための信号である。
また、ECU200に入力される複数の入力信号は、第1センサ300の検出結果を示す信号、及び第2センサ400の検出結果を示す信号(この場合、センサ値)である。第1センサ300、第2センサ400、及びアクチュエータ500は、特に限定されない。但し、第1センサ300と第2センサ400とは、検出対象が同一であり、ECU200がアクチュエータ500を制御するための信号を出力する。また、第1センサ300と第2センサ400とは、ECU200がアクチュエータ500を制御するための信号であり、互いに相関関係にある信号を出力するセンサであっても採用できる。
また、本実施形態では、ECU200として、第1センサ300及び第2センサ400が接続されており、この第1センサ300及び第2センサ400から入力された入力信号を用いて制御演算を実行する例を採用した。しかしながら、本発明はこれに限定されない。ECU200は、CANバスなどの通信線が接続されており、通信線から入力された入力信号を用いて制御演算を実行するものであっても採用できる。つまり、ECU200は、他のECUから出力され、通信線を介して入力された信号を用いて制御演算を実行するものであっても採用できる。さらに、ECU200は、スイッチが接続されており、スイッチから入力された入力信号を用いて制御演算を実行するものであっても採用できる。
このように、ECU200に入力される入力信号を出力する複数の入力機器は、センサ(300や400など)や、スイッチや、ECUなどを採用できる。よって、ECU200に入力される複数の入力信号は、各入力機器が出力する同じ信号であってもよいし、各入力機器が出力する互いに相関関係にある信号であってもよい。また、このように、各入力機器が出力する信号は、同じであるか、互いに相関関係にあるものの、各入力機器やECU200までの経路などに異常が生じている場合、ECU200には異なった信号として入力されることもある。さらに、ECU200は、各入力機器やECU200までの経路などが正常である場合、複数の入力信号のうちのどの入力信号を用いて制御演算を行っても、同じ制御信号を生成することができる。
さらに、本実施形態では、ECU200に二つの入力信号が入力される例を採用している。しかしながら、本発明はこれに限定されない。ECU200には、三つ以上の入力信号が入力されてもよい。
マイコン100は、主に、ADC10、CPU、ROM、RAM、レジスタなどを備えて構成されている。マイコン100は、CPUが入力信号やROMに記憶されたプログラムに基づいて、RAM及びレジスタを一時的に記憶領域として用いつつ各種演算処理を実行する。CPUは、演算処理として、上記制御演算に加えて、後ほど説明する冗長演算、ダイアグ演算などを実行する。また、マイコン100は、ダイアグ演算時のように記憶領域を用いることなく、複数の入力信号を比較して、複数の入力信号から一つの入力信号を選択する比較選択処理を実行する。
なお、ADCは、analog to digital converterの略である。CPUは、Central Processing Unitの略である。ROMは、Read Only Memoryの略である。RAMは、Random AccessMemoryの略である。
このように構成されたマイコン100は、図1に示すように、機能ブロックとして、比較部20、記憶部30、メイン演算部40、冗長演算部50とを備えて構成されている。さらに、メイン演算部40は、ダイアグ演算部41、第1制御演算部42、第2制御演算部43を備えて構成されている。また、冗長演算部50は、比較選択部51、第1制御演算部52、第2制御演算部53を備えて構成されている。
例えば、マイコン100が二つのCPUを備えている場合、一方のCPUをメイン演算部40とし、他方のCPUを冗長演算部50とすることができる。また、マイコン100がマルチコアタイプのCPUを備えている場合、一つのコアをメイン演算部40とし、他のコアのうちの一つのコアを冗長演算部50とすることができる。
マイコン100のADC10には、第1センサ300からの信号及び第2センサ400からの信号が入力される。ADC10は、アナログ信号である第1センサ300からの信号をデジタル信号に変換してメイン演算部40及び冗長演算部50に出力する。同様に、ADC10は、アナログ信号である第2センサ400からの信号をデジタル信号に変換してメイン演算部40及び冗長演算部50に出力する。よって、メイン演算部40及び冗長演算部50は、デジタル変換された入力信号が入力される。なお、以下の説明においては、第1センサ300の検出結果を示す信号を第1信号、第2センサ400の検出結果を示す信号を第2信号とも称する。
また、記憶部30は、上記ROM、RAM、レジスタなどによって構成されている。記憶部30の一部(例えばROM)には、メイン演算部40用のプログラム、及び冗長演算部50用のプログラムが記憶されている。また、メイン演算部40及び冗長演算部50は、演算処理を実行する際に、記憶部30の一部(例えばRAMやレジスタ)を用いる。
なお、メイン演算部40が用いる記憶領域(記憶部30の一部)と、冗長演算部50が用いる記憶領域(記憶部30の一部)とは、別々に設けられていてもよい。言い換えると、メイン演算部40が用いる記憶部と、冗長演算部50が用いる記憶部とは、切り分けられていてもよい。
また、メイン演算部40が実行するプログラムと、冗長演算部50が実行するプログラムとは、別々に設けられている。言い換えると、メイン演算部40が実行するプログラムと、冗長演算部50が実行するプログラムとは、切り分けられている。
また、マイコン100は、ROM、RAM、レジスタからなる記憶領域(記憶部30)を一つのアドレス空間として一括管理してもよい。この場合、メイン演算部40が用いる記憶領域と、冗長演算部50が用いる記憶領域とは、上記アドレス空間の一部とすることができる。
ここで、メイン演算部40に関して説明する。メイン演算部40は、ADC10によってデジタル変換された複数の入力信号が入力される。ダイアグ演算部41は、本発明の特許請求の範囲における入力保証演算部に相当し、記憶部30を用いつつ、複数の入力信号が正常であるか否かの入力保証を行うための保証演算(ダイアグ演算)を実行する。本実施形態でのダイアグ演算部41は、第1信号と第2信号の保証演算を実行する。
また、ダイアグ演算部41は、複数の入力信号のうち、正常であると保証した入力信号を第1制御演算部42及び第2制御演算部43に出力する。また、ダイアグ演算部41は、全ての入力信号が異常であるとみなした場合、固定値(デフォルト値)を第1制御演算部42及び第2制御演算部43に出力する。
なお、ダイアグ演算部41は、複数の入力信号が正常であると保証した場合は、複数の入力信号のいずれか一つの入力信号を第1制御演算部42及び第2制御演算部43に出力する。このように複数の入力信号が正常であった場合、ダイアグ演算部41は、予め決められたメインの入力機器から出力された信号(入力信号)を、第1制御演算部42及び第2制御演算部43に出力する。例えば、第1センサ300をメインの入力機器、第2センサ400をサブの入力機器と予め決めておく。この場合、ダイアグ演算部41は、第1信号と第2信号が共に正常であると保証すると、第1信号を第1制御演算部42及び第2制御演算部43に出力する。
ここで、ダイアグ演算部41が行う保証演算の一例を説明する。例えば、ダイアグ演算部41は、第1信号及び第2信号の夫々が、各センサの特性上起こり得ない高い電圧や低い電圧であるか否かによって、各入力信号が正常であるか否かの入力保証を行う。つまり、ダイアグ演算部41は、第1信号を絶対値と比較すると共に、第2信号を絶対値と比較することで入力保証を行う。よって。ダイアグ演算部41は、各入力信号と絶対値とを比較する保証演算を実行する、と言い換えることができる。
ここでの絶対値とは、高い電圧側の閾値電圧である第1閾値、及び低い電圧側の閾値電圧である第2閾値を示す。この第1閾値及び第2閾値は、記憶部30に記憶させておく必要がある。よって、ダイアグ演算部41は、保証演算を実行する場合、第1閾値及び第2閾値を記憶部30から読み出して、第1信号を第1閾値及び第2閾値と比較すると共に、第2信号を第1閾値及び第2閾値と比較する。そして、ダイアグ演算部41は、第1信号が第1閾値よりも高い場合、第1信号が第2閾値よりも低い場合、第2信号が第1閾値よりも高い場合、第2信号が第2閾値よりも低い場合に異常であると検出する(異常とみなす、異常と判定する)。この異常は、Hi−Low異常と称することもできる。つまり、ダイアグ演算部41は、第1閾値よりも低く且つ第2閾値よりも高い入力信号を正常であると検出する(正常とみなす、正常と判定する、正常であると保証する)。
また、ダイアグ演算部41は、第1信号及び第2信号の夫々が、一定時間以上継続したか否かによって、各入力信号が正常であるか否かの入力保証を行ってもよい。つまり、ダイアグ演算部41は、第1信号(言い換えると、第1信号を示す電圧値)が同じ値で継続している時間を計測することで入力保証を行う。同様に、ダイアグ演算部41は、第2信号(言い換えると、第2信号を示す電圧値)が同じ値で継続している時間を計測することで入力保証を行う。よって、ダイアグ演算部41は、入力信号の夫々が同じ値である継続時間を計測する保証演算を実行する、と言い換えることができる。
そして、ダイアグ演算部41は、第1信号が同じ値で一定時間以上継続した場合に異常であると検出する。同様に、ダイアグ演算部41は、第2信号が同じ値で一定時間以上継続した場合に異常であると検出する。なお、ダイアグ演算部41は、同じ値で一定時間以上継続していない入力信号を正常であると検出する。この異常は、固着異常と称することもできる。
また、ダイアグ演算部41は、第1信号及び第2信号の夫々が、類似センサ(図示)の検出値と電圧差が発生したか否かによって、各入力信号が正常であるか否かの入力保証を行ってもよい。言い換えると、ダイアグ演算部41は、特性異常検出を行ってもよい。つまり、ダイアグ演算部41は、第1信号を類似センサの検出値と比較すると共に、第2信号を類似センサの検出値と比較することで入力保証を行う。よって、ダイアグ演算部41は、各入力信号と他の検出値とを比較する保証演算を実行する、と言い換えることができる。詳述すると、ダイアグ演算部41は、特性異常検出を行う際には単純比較ではなく、所定値以上の電圧差が一定時間継続することを検出する。そのため、ダイアグ演算部41は、センサ間の検出値の差分を取り、差分と所定値との比較を行い、継続時間を計測する必要がある。従って、ダイアグ演算部41は、単純比較する場合よりも、特性異常検出を行う場合の方が処理が増える。
なお、類似センサとは、第1センサ300や第2センサ400と同様の検出結果(検出値)を出力するセンサである。よって、第1信号と比較される検出値を出力する類似センサは、第1センサ300と同様の検出結果を出力するセンサである。同様に、第2信号と比較される検出値を出力する類似センサは、第2センサ400と同様の検出結果を出力するセンサである。
類似センサの検出値は、記憶部30に記憶させておく必要がある。よって、ダイアグ演算部41は、保証演算を実行する場合、検出値を記憶部30から読み出して、第1信号を検出値と比較すると共に、第2信号を検出値と比較する。そして、ダイアグ演算部41は、第1信号と検出値とが異なる場合(電圧差がある場合)、第2信号と検出値とが異なる場合に、異常であると検出する。この異常は、特性異常と称することもできる。つまり、ダイアグ演算部41は、検出値と同じ入力信号を正常であると検出する。なお、ダイアグ演算部41は、検出値と入力信号とが完全に一致していなくても、一定範囲の違いであれば同じとみなすようにしてもよい。
また、ダイアグ演算部41は、特性異常検出を行う際には、第1信号と比較する類似センサの検出値として第2信号を採用することもできる。つまり、ダイアグ演算部41は、第1信号と第2信号とを用いて上記特性異常検出を行うこともできる。
第1制御演算部42及び第2制御演算部43は、本発明の特許請求の範囲における第1演算部に相当し、記憶部30を用いつつ、ダイアグ演算部41にて正常であることが保証された入力信号を用いて上記制御演算を実行する。また、ECU200は、第1センサ300から入力された入力信号、及び第2センサ400から入力された入力信号がいずれも正常であると保証された場合、二つの入力信号のいずれか一つを用いて制御演算を実行する。このように、第1制御演算部42及び第2制御演算部43は、第1センサ300から入力された信号、及び第2センサ400から入力された信号が共に正常である場合、どちらの入力信号であっても制御演算に用いることができる。さらに、第1制御演算部42及び第2制御演算部43は、ダイアグ演算部41にて複数の入力信号が異常であるとみなされた場合は、固定値を用いて制御演算を実行する(フェールセーフ処置)。なお、ECU200は、入力信号として三つ以上の信号が入力される場合であり、且つ、三つの入力信号が全て正常であると保証された場合、三つの入力信号のいずれか一つを用いて制御演算を実行する。
本実施形態では、第1演算部として、第1制御演算部42及び第2制御演算部43を備えたメイン演算部40を採用した。しかしながら、本発明はこれに限定されない。メイン演算部40は、第1制御演算部42及び第2制御演算部43のいずれか一方を有していれば採用できる。つまり、メイン演算部40は、制御演算を実行する演算部(第1演算部)を少なくとも一つ備えていれば採用できる。よって、メイン演算部40は、制御演算を実行する演算部(第1演算部)を三つ以上備えていてもよい。
次に、冗長演算部50に関して説明する。冗長演算部50は、メイン演算部40と同様に、ADC10によってデジタル変換された複数の入力信号が入力される。比較選択部51は、複数の入力信号を互いに比較して、複数の入力信号から一つの入力信号を選択する(比較選択処理)。よって、比較選択部51は、複数の入力信号を互いに比較して、複数の入力信号から一つの入力信号を出力する回路を採用することができる。なお、この比較とは、複数の入力信号の大小比較である。また、複数の入力信号から一つの入力信号を選択するとは、複数の入力信号から一つの入力信号を選択して出力する、と言い換えることもできる。
本実施形態での比較選択部51は、第1信号と第2信号とを比較して、第1信号と第2信号の一方の入力信号を選択する。つまり、比較選択部51は、第1信号と第2信号から、後ほど説明する第1制御演算部52及び第2制御演算部53が演算に用いる一つの入力信号を選択する。なお、比較選択部51は、入力信号として三つ以上の信号が入力される場合は、三つの入力信号からいずれか一つの入力信号を選択する。なお、比較選択部51は、比較部20における検出において、メイン演算部40の異常が最も未検出となりにくい入力信号を選択する。
このように、比較選択部51は、第1信号と第2信号とを相対的に比較して、一方の入力信号を選択する。よって、比較選択部51は、上記ダイアグ演算部41のように記憶領域を用いることなく、一つの入力信号を選択することができる。つまり、比較選択部51は、冗長演算部50が演算処理を実行する際に用いる記憶部30を用いることなく、一つの入力信号を選択することができる。また、比較選択部51は、第1信号と第2信号とを相対的に比較するだけなので、ダイアグ演算部41よりも処理負荷を軽減できる。
第1制御演算部52及び第2制御演算部53は、本発明の特許請求の範囲における第2演算部に相当し、記憶部30を用いつつ、比較選択部51にて選択された入力信号を用いて冗長演算を実行する。詳述すると、第1制御演算部52及び第2制御演算部53は、冗長演算を実行することで、メイン演算部40が正常に動作しているか否かを監視するための冗長信号を生成する。よって、第1制御演算部52及び第2制御演算部53は、冗長演算として、第1制御演算部42及び第2制御演算部43が実行する制御演算と同様の演算を実行する。但し、第1制御演算部52及び第2制御演算部53は、冗長演算として、第1制御演算部42及び第2制御演算部43が実行する制御演算よりも簡易的な演算を実行するものであってもよい。当然ながら、第1制御演算部52及び第2制御演算部53は、第1制御演算部42及び第2制御演算部43が実行する制御演算よりも簡易的であり、且つ、第1制御演算部42及び第2制御演算部43が実行する制御演算に相関する演算を実行する。
このように、冗長演算部50は、メイン演算部40が正常に動作しているか否かを監視するための冗長信号を生成するものであるため、監視部と言い換えることもできる。なお、この冗長信号は、メイン演算部40が正常に動作していない場合、制御信号の代替信号として用いることもできる。
本実施形態では、第2演算部として、第1制御演算部52及び第2制御演算部53を備えた冗長演算部50を採用した。しかしながら、本発明はこれに限定されない。冗長演算部50は、第1制御演算部52及び第2制御演算部53のいずれか一方を有していれば採用できる。つまり、冗長演算部50は、冗長演算を実行する演算部(第2演算部)を少なくとも一つ備えていれば採用できる。よって、冗長演算部50は、冗長演算を実行する演算部(第2演算部)を三つ以上備えていてもよい。
比較部20は、メイン演算部40における制御演算の演算結果と、冗長演算部50における冗長演算の演算結果とが入力される。つまり、比較部20は、制御信号と冗長信号とが入力される。比較部20は、制御信号と冗長信号とを比較して、メイン演算部40の異常を検出する。比較部20は、制御信号が冗長信号よりも所定値以上大きい場合にメイン演算部40は異常であると判定し、制御信号が冗長信号よりも大きくない場合にメイン演算部40は正常であると判定する。このようにして、ECU200は、メイン演算部40が異常であるか否かを検出することができる。なお、ここでは、冗長演算部50は正常に動作しているものとする。
また、比較部20によってメイン演算部40が正常であると判定された場合、メイン演算部40から制御信号がアクチュエータ500に出力される。言い換えると、比較部20は、メイン演算部40が正常であると判定した場合、メイン演算部40から出力された制御信号をアクチュエータ500に出力可能とする。
しかしながら、比較部20は、メイン演算部40が異常であると判定した場合、アクチュエータ500を停止させたり、フェールセーフを実行したりする。例えば、比較部20は、メイン演算部40が出力した制御信号のかわりに、予め決められた固定値をアクチュエータ500に出力する。また、比較部20は、メイン演算部40が出力した制御信号のかわりに、冗長演算部50が出力した冗長信号をアクチュエータ500に出力してもよい。
このように、ECU200は、メイン演算部40に加えて、冗長演算部50を備えている。そして、メイン演算部40は、ダイアグ演算部41によって保証演算を行う。このため、第1制御演算部42及び第2制御演算部43は、第1信号及び第2信号のうち、正常であると保証された入力信号を用いて制御演算を実行することができる。
これに対して、冗長演算部50は、比較選択部51によって、第1信号及び第2信号を互いに大小比較して、第1信号及び第2信号から一つの入力信号を選択する。そして、第1制御演算部52及び第2制御演算部53は、比較選択部51にて選択された入力信号を用いて冗長演算を実行する。このように、冗長演算部51は、二つの入力信号を互いに比較して、二つの入力信号から一つの入力信号を選択するだけなので、ダイアグ演算部41のように記憶部30を用いる必要がない。従って、ECU200は、処理負荷及び記憶領域(ROMやRAMなどのリソーセス)の増加を抑制することができる。つまり、ECU200は、冗長演算部50が、メイン演算部40に設けられたダイアグ演算部41と同様のダイアグ演算部を有している場合よりも、処理負荷及び記憶領域の増加を抑制することができる。
また、冗長演算部50は、二つの入力信号を互いに比較して、二つの入力信号から一つの入力信号を選択するだけである。よって、冗長演算部50が実行するプログラは、メイン演算部40が実行するプログラムよりも簡素化することができる。つまり、冗長演算部50が実行するプログラは、メイン演算部40が実行するプログラムよりも容量を小さく(少なく)することができる。従って、ECU200は、冗長演算部50がメイン演算部40に設けられたダイアグ演算部41と同様のダイアグ演算部を有している場合よりも、記憶部30における記憶領域(例えば記憶部30のROM)の増加を抑制できる。
なお、ECU200は、特許文献1の第3のレベルのテストを実施するようにしてもよい。つまり、ECU200は、冗長演算部50が正常に動作しているか否かのテストを実施してもよい。この第3のレベルに関しては、特許文献1を参照されたい。
この場合、冗長演算部50は、特許文献1の第3のレベルが行うテストの対象範囲となる。しかしながら、冗長演算部50は、メイン演算部40よりも処理負荷が小さいの。よって、このため、ECU200は、特許文献1の第3のレベルのテストを実施する場合、第3のレベルが行うテストの処理を低減できる。
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上述した実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。
(第2実施形態)
次に、図2〜図5に基づいて、第2実施形態におけるECU210を説明する。本実施形態では、本発明をECU210に適用した例を採用している。なお、ECU210は、車両に設けられており、第1アクセルセンサ310又は第2アクセルセンサ410から出力された信号を用いて、エンジンのトルク値を算出するためのトルク演算を実行する制御装置である。つまり、トルク値は、ECU200における制御信号に相当し、トルク演算は、ECU200における制御演算に相当する。
なお、ECU210は、ECU200と同様の箇所が多いので、ECU200と同様の箇所に関する説明は省略する。ここでは、ECU210において、ECU200と異なる点を重点的に説明する。また、ECU210において、ECU200と同様の箇所には、同じ符号を付与する。
まず、図2を用いて、ECU210の構成を説明する。ECU210は、主構成要素としてマイコン110を備えている。また、ECU210は、第1アクセルセンサ310、第2アクセルセンサ410、及びアクチュエータ510が電気的に接続されている。ECU210は、第1アクセルセンサ310の検出結果を示す信号、及び第2アクセルセンサ410の検出結果を示す信号が入力される。このように、ECU210は、複数の信号(入力信号)が入力されることになる。
第1アクセルセンサ310は、ECU200に接続されている第1センサ300に相当する。同様に、第2アクセルセンサ410は、ECU200に接続されている第2センサ400に相当する。第1アクセルセンサ310及び第2アクセルセンサ410の夫々は、車両に設けられたアクセルの踏み込み量(言い換えると、アクセル開度)を検出し、この踏み込み量に応じた信号を出力する。よって、ECU210は、入力信号として、踏み込み量に応じた信号が入力されることになる。そして、ECU210は、入力された入力信号を用いて、アクチュエータ510に対するトルク値を生成するためのトルク演算を実行する。
なお、第1アクセルセンサ310及び第2アクセルセンサ410は、アクセル開度が大きくなるに連れて、ECU210への入力電圧(入力信号)が大きくなるものとする。つまり、ECU210によって制御されるアクチュエータ510は、ECU210への入力電圧が低くなるに連れてトルクが減少する。よって、ECU210が搭載されている車両は、ECU210への入力電圧が低くなるに連れて車両速度は減速することとなる。本実施形態では、第1アクセルセンサ310の検出結果を示す信号を第1信号、第2アクセルセンサ410の検出結果を示す信号を第2信号とも称する。
マイコン110は、図2に示すように、機能ブロックとして、比較部20、記憶部30、メイン演算部60、冗長演算部70とを備えて構成されている。さらに、メイン演算部60は、ダイアグ演算部61、トルク演算部62を備えて構成されている。また、冗長演算部70は、比較選択部71、トルク演算部72を備えて構成されている。
メイン演算部60は、ECU200のメイン演算部40に相当する。よって、メイン演算部60は、ECU200のダイアグ演算部41に相当するダイアグ演算部61と、ECU200の第1制御演算部42及び第2制御演算部43に相当するトルク演算部62とを有している。このトルク演算部62は、ダイアグ演算部61にて正常であることが保証された入力信号を用いて上記トルク演算を実行する。
冗長演算部70は、ECU200の冗長演算部50に相当する。よって、冗長演算部70は、ECU200の比較選択部51に相当する比較選択部71と、ECU200の第1制御演算部52及び第2制御演算部53に相当するトルク演算部72とを有している。このトルク演算部72は、比較選択部71にて選択された入力信号を用いて冗長演算を実行する。なお、トルク演算部72は、冗長演算として、トルク演算部62が実行するトルク演算と同様の演算を実行する。但し、トルク演算部72は、冗長演算として、トルク演算部62が実行するトルク演算よりも簡易的なトルク演算を実行するものであってもよい。
ここで、図3を用いて、ECU210の処理動作に関して説明する。ECU210は、所定時間毎に、図3のフローチャートに示す処理を実行する。なお、ステップS10〜S13は、メイン演算部60が実行する処理である。ステップS14〜S17は、冗長演算部70が実行する処理である。そして、ステップS18〜21は、比較部20が実行する処理である。また、ここでは、メイン演算部60の処理の後に、冗長演算部70の処理を行う例を採用している。しかしながら、本発明はこれに限定されない。本発明は、冗長演算部70の処理の後に、メイン演算部60の処理を行ってもよいし、冗長演算部70の処理とメイン演算部60の処理とを並行して行ってもよい。
ステップS10では、ダイアグ演算部61は、上述のようにダイアグ演算を行う。ステップS11では、ダイアグ演算部61は、異常があるか否かを判定する。そして、ダイアグ演算部61は、正常であると判定した場合はステップS12へ進み、異常があると判定した場合はステップS13へ進む。
なお、ダイアグ演算部61は、異常があると判定した場合は、フラグを立てることで、第1信号及び第2信号の少なくとも一方が異常であることを示すようにしてもよい。このフラグは、センサダイアグフラグと称することもできる。例えば、図4のタイムチャートに示すように、タイミングt1でセンサ異常が発生した場合、ダイアグ演算部61は、タイミングt2で異常があると判定することができる。そして、ダイアグ演算部61は、タイミングt2でセンサダイアグフラグを立てる。このセンサダイアグフラグは、ECU200においても採用できる。
ステップS12では、トルク演算部62は、メイントルク演算を実行する。つまり、トルク演算部62は、ダイアグ演算部61にて正常であることが保証された入力信号を用いてトルク演算を実行する。一方、ステップS13では、トルク演算部62は、センサ異常と判定すると共に、固定値を用いて制御演算を実行する(フェールセーフ処置)。
ステップS14では、比較選択部71は、第1信号と第2信号とを比較する。つまり、比較選択部71は、第1信号が示す電圧値と、第2信号が示す電圧値との大小を比較する。そして、ステップS15では、比較選択部71は、第1信号が第2信号よりも小さいと判定した場合はステップS16へ進み、第2信号が第1信号よりも小さいと判定した場合はステップS17へ進む。
言い換えると、比較選択部71は、第1信号が第2信号よりも小さいと判定した場合、比較部20における検出において、メイン演算部60の異常が最も未検出となりにくい入力信号として第1信号を選択する。つまり、比較選択部71は、第1信号が第2信号よりも小さいと判定した場合、第2信号よりも第1信号の方が、比較部20における検出において、メイン演算部60の異常が未検出となりにくい入力信号とみなす。
同様に、比較選択部71は、第2信号が第1信号よりも小さいと判定した場合、比較部20における検出において、メイン演算部60の異常が最も未検出となりにくい入力信号として第2信号を選択する、と言い換えることができる。つまり、比較選択部71は、第2信号が第1信号よりも小さいと判定した場合、第1信号よりも第2信号の方が、比較部20における検出において、メイン演算部60の異常が未検出となりにくい入力信号とみなす。このようにすることで、本実施形態では、第1信号と第2信号のうち、アクセルペダル開度が小さい方の信号を選択することになる。従って、本実施形態では、第1信号と第2信号のうち、トルク演算部72にて算出されるトルク値が小さくなる方の信号を選択することになる。
ステップS16では、トルク演算部72は、第1信号を用いてトルク演算(冗長演算)を実行する。一方、ステップS17では、トルク演算部72は、第2信号を用いてトルク演算(冗長演算)を実行する。
ステップS18では、比較部20は、トルク比較を行う。つまり、比較部20は、メイン演算部60のトルク演算部62が行ったトルク演算の結果と、冗長演算部70のトルク演算部72が行ったトルク演算の結果とを比較する。よって、比較部20は、トルク演算部62が行ったトルク演算の結果が示す電圧値と、トルク演算部72が行ったトルク演算の結果が示す電圧値とを比較することになる。
ステップS19では、比較部20は、メイン演算結果が冗長演算結果よりも大きいか否かを判定する。つまり、比較部20は、トルク演算部62が行ったトルク演算の結果が示す電圧値が、トルク演算部72が行ったトルク演算の結果が示す電圧値よりも大きいか否かを判定する。そして、比較部20は、メイン演算結果が冗長演算結果よりも大きいと判定した場合はステップS20へ進み、メイン演算結果が冗長演算結果よりも大きくないと判定した場合はステップS21へ進む。
なお、トルク演算部62が行ったトルク演算の結果が示す電圧値は、制御信号に相当するトルク値である。一方、トルク演算部72が行ったトルク演算の結果が示す電圧値は、冗長信号に相当するトルク値である。また、これらのトルク値は、アクチュエータ510を制御する際の目標トルク値である。さらに、これらのトルク値は、アクチュエータ510の制御に必要な目標トルク値、と言い換えることもできる。
ステップS21では、比較部20は、メイン演算部60から出力された制御信号をアクチュエータ510に出力する。つまり、比較部20は、メイン演算結果が冗長演算結果よりも大きくないと判定した場合はメイン演算部60が正常であるとみなす。そして、比較部20は、メイン演算部60から出力された制御信号をアクチュエータ510に出力可能とする。
ステップS20では、比較部20は、演算異常と判定すると共に、フェールセーフ処置を行う。つまり、比較部20は、メイン演算結果が冗長演算結果よりも大きいと判定した場合はメイン演算部60の異常(演算異常)とみなす。例えば、メイン演算部60にて記憶部30の異常などが生じた場合に、演算異常となることがある。なお、記憶部30の異常とは、演算RAM異常などをあげることができる。
なお、比較部20は、異常とみなした場合、フラグを立てることで、メイン演算部60の演算異常であることを示すようにしてもよい。このフラグは、演算異常フラグと称することもできる。また、この演算異常フラグは、ECU200においても採用できる。
例えば、図5のタイムチャートに示すように、メイン演算部60に異常が生じている場合、タイミングt1でセンサ異常が発生したとしても、ダイアグ演算部61は、タイミングt2で異常があると判定できない。この場合、トルク演算部62は、図5のタイミングt2からt3の間に示されているように、第1信号をメインセンサとして扱う場合、第1信号を用いて、トルク演算を行うことが考えられる。つまり、メイン演算部60は、ダイアグ演算部61がタイミングt2で異常と判定できないため、トルク演算部62によるトルク演算の結果が大きくなってしまう。一方、トルク演算部72は、第2信号を用いてトルク演算を行うことになる。
よって、図5のタイミングt2からt3の間に示されているように、メイン演算結果が冗長演算結果よりも大きくなる。このため、比較部20は、メイン演算結果と冗長演算結果を比較して、メイン演算結果が冗長演算結果よりも大きいと判定し、メイン演算部60の異常とみなす。そして、比較部20は、タイミングt3で演算異常フラグを立てる。このように、ECU210は、メイン演算部60が異常であり、且つ、冗長演算部70がダイアグ演算を行わなくても、比較選択部71が簡易的な大小比較を行うことで、メイン演算部60の異常を検出することができる。なお、ダイアグ演算部61による入力信号の異常判定と、比較部20によるメイン演算部60の異常判定とを切り分ける際には、図4,5のタイムチャートに示すように、メイン演算部を先に確定させることが必要である。
そして、比較部20は、メイン演算部60が異常であると判定した場合、例えば、比較部20は、メイン演算部60が出力した制御信号のかわりに、予め決められた固定値をアクチュエータ510に出力する。また、比較部20は、メイン演算部60が出力した制御信号のかわりに、冗長演算部70が出力した冗長信号をアクチュエータ510に出力してもよい。さらに、比較部20は、メイン演算部60が異常であると判定した場合、アクチュエータ510を停止させてもよい。
このように、本実施形態の比較部20は、エンジンのトルク過大状態を検出するものである。比較部20は、比較選択部71が第1信号と第2信号のうち、トルク演算部72にてトルクが大きく算出される方を選択してしまうと、メイン演算部60にて記憶部30の異常などが生じている場合に、この異常を検出できない可能性がある。しかしながら、本発明は、上述のように、比較選択部71が第1信号と第2信号のうち、トルク演算部72にてトルクが小さく算出される方を選択するので、メイン演算部60にて記憶部30の異常などが生じている場合に、この異常を検出しやすい。
また、本実施形態では、アクセル開度が大きくなるに連れて、ECU210への入力電圧(入力信号)が大きくなる第1アクセルセンサ310及び第2アクセルセンサ410を採用した。しかしながら、本発明は、これに限定されない。第1アクセルセンサ310及び第2アクセルセンサ410は、アクセル開度が大きくなるに連れて、ECU210への入力電圧(入力信号)が小さくなるものでも採用できる。但し、この場合、比較選択部71は、第1信号と第2信号のうち、大きい方の信号を選択することになる。