説明

制御装置、電子制御ユニット、異常検出方法

【課題】ECUに搭載されたCPUと、ECUに供給される入力データの供給元の異常を判別できる制御装置を提供すること。
【解決手段】 第1のデータを出力し、前記第1のデータの後、第2のデータを出力するデータ出力手段22と、第1のデータから前記第2のデータを予測して予測データとして出力するデータ予測手段16と、第2のデータに演算を行う第1の演算手段Aと、前記予測データに演算を行う第2の演算手段Bと、前記第1の演算手段が前記第2のデータに演算を施した第1の出力値と、前記第2の演算手段が前記予測データに演算を施した第2の出力値と、を比較する比較手段17と、を有することを特徴とする制御装置100を提供する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、CPUや入力系の異常を検出することが可能な制御装置等に関し、特に、CPUが複数のコアを有する場合にCPUや入力系の異常を検出することが可能な制御装置、電子制御ユニット及び異常検出方法に関する。
【背景技術】
【0002】
車載されるECU(electronic control unit)に異常が生じると車両の制御に影響を与えるので、ECUの異常を検出する機能が搭載されることが多い。例えば、1つのCPUの異常を検出するWDT(Watch Dog Timer)や、2つのECU間で相互監視する技術が知られている。しかし、WDTは、何らかの原因でタスクの処理が進まなくなるなど処理遅れを検出するものであり、処理は進むが正しい演算が行えなくなっている状態を検出する相互監視の方が、より早期に異常を検出できる可能性がある。
【0003】
2つのECUの相互監視では、物理的に異なる処理系統による2つの演算結果を比較するので、同時に同種の異常が双方に起こらない限り異常の検出が可能である。
【0004】
ところで、車載されるECUの数を低減するためECUの統合化が進められており、従来、2つだったECUの機能が1つのECUに搭載されると、こういった相互監視が不可能になる。例えば、異常を検出する方法として、演算結果の前回値と現在値の差が誤差を超える場合に異常を検出する技術が考案されている(例えば、特許文献1参照。)。この技術を1つのECUに適用した場合、複数のコアで同じ演算を行い両者の演算結果の差が誤差を超えるか否かを判定することが考えられる。
【0005】
また、対象システムの入出力データから仮定的にモデル化した状態空間モデルのパラメータを求めて、対象システムのシステム同定を行うシステムモデル構築方法が提案されている(例えば、特許文献2参照。)。特許文献2には、モデルにより推定された推定出力データと、入力データを実際に対象システムに対して実行させた実測出力データとを比較することで、得られた状態空間モデルとパラメータとの精度を確認する技術が開示されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開昭61−175701号公報
【特許文献2】特開2007−260504号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1と2のいずれも入力データは正しいという前提であるが、入力データもハード的に構成されるセンサや回路などが供給するものであるため、入力データに大きな誤差が含まれることがある。この場合、特許文献1,2では入力データを共に複数の演算手段に提供するので、入力データを提供するセンサ等の異常を検知できないという問題がある。
【0008】
本発明は、上記課題に鑑み、ECUに搭載されたCPUと、ECUに供給される入力データの供給元の異常を判別できる制御装置、電子制御ユニット及び異常検出方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記課題に鑑み、本発明は、第1のデータを出力し、前記第1のデータの後、第2のデータを出力するデータ出力手段と、前記第1のデータから前記第2のデータを予測して予測データとして出力するデータ予測手段と、前記第2のデータに演算を行う第1の演算手段と、前記予測データに演算を行う第2の演算手段と、前記第1の演算手段が前記第2のデータに演算を施した第1の出力値と、前記第2の演算手段が前記予測データに演算を施した第2の出力値と、を比較する比較手段と、を有することを特徴とする制御装置を提供する。
【発明の効果】
【0010】
ECUに搭載されたCPUと、ECUに供給される入力データの供給元の異常を判別できる制御装置、電子制御ユニット及び異常検出方法を提供することができる。
【図面の簡単な説明】
【0011】
【図1】ECUの概略を説明する図の一例である。
【図2】ECUのハードウェア構成図の一例である。
【図3】ECUの機能ブロックを模式的に説明する図の一例である。
【図4】隠れマルコフモデルを模式的に説明する図の一例である。
【図5】学習結果を模式的に示す図の一例である。
【図6】自己組織化マップで用いられる参照ベクトルを説明する図の一例である。
【図7】ラベルと入力ベクトルの関係を模式的に示す図の一例である。
【図8】ECUの動作手順を示すフローチャート図の一例である。
【発明を実施するための形態】
【0012】
以下、本発明を実施するための形態について図面を参照しながら説明する。
図1(a)は、本実施形態のECUの概略を説明する図の一例である。なお、比較のため、従来のECU(electronic control unit)についても図1(b)に示した。
【0013】
従来図に示すように、従来は、別々の基板にECU_AとECU_Bが搭載されており、ECU_AはアプリケーションAを、ECU_BはアプリケーションBをそれぞれ実行している。また、ECU_AはECU_Bの異常を、ECU_BはECU_Aの異常を相互に監視している。
【0014】
したがって、仮にECU_AとECU_Bをそのまま1つのECU_Wに統合した場合は、図1(b)の下図に示すように、ECU_Wは共通のPF(プラットフォーム)上で、アプリケーションAとアプリケーションBを実行する。この場合、アプリケーションAとアプリケーションBにはそれぞれ独立したコアが割り当てられるが、2つのコアには同じ入力値(演算対象)が与えられるので、単に統合しただけでは入力値に異常があることは検出できない。
【0015】
これに対し、本実施形態では、ECU_AとECU_Bを統合する際に、確率モデルを一方のコアBに接続する。確率モデルは、入力値の推定に有効な確率モデルであればよいが、例えば、隠れマルコフモデルや自己組織化マップである。確率モデルは、ECU_Aとその入力系、ECU_Bとその入力系が正常な状態における、入力値を学習しており、1制御周期前の入力値が正常なら、「確率的に最も起こりえる正常値」を出力する(この正常値は後述の「予測入力値」である)。以下、ハードウェア22が入力値を供するとして説明する。
【0016】
コアAのアプリケーションA、Bは、ハードウェア22が出力する入力値に基づき演算し、コアBのアプリケーションA、Bは、確率モデルが出力する予測入力値に基づき演算する。したがって、入力値と予測入力値がほぼ同じで、コアAのアプリケーションA、BとコアBのアプリケーションA、Bが出力する値(以下、それぞれを今回出力値と予測出力値という)が違う場合、コアA、Bのどちらか又は両方に何らかの異常が生じている可能性があることになる。
【0017】
一方、コアAのアプリケーションA、Bが出力する今回出力値とコアBのアプリケーションA、Bが出力する予測出力値が違う場合、入力値と予測入力値が同じでないのなら、確率モデルが出力する予測入力値は正常値なので、ハードウェア22に異常が生じている可能性があることになる
このように、本実施形態のECU100は、正常な入力値を提供する確率モデルを有することで、1つのECUに搭載された複数のコアと、複数のコアに入力値を提供するハードウェア22のどちらに異常が生じたのかを検出することができる。
【0018】
〔構成〕
図2は、ECU100のハードウェア構成図の一例を示す。ECU100は、マルチコアCPU11、リセット回路12、I/Oブリッジ13、EEPROM14、比較装置17、確率モデル実装部16及びメモリ15を有する。マルチコアCPU11は、コアAとコアBに代表される複数のコア18を有する。図では2つだがコア18は3つ以上でもよい。
【0019】
I/Oブリッジ13には各種のセンサ、アクチュエータ及びスイッチが接続されており、I/Oブリッジ13はセンサ等からの接続要求を調停したり、マルチコアCPU11の要求に従いマルチコアCPU11が演算したデータをアクチュエータ等に送信する。
【0020】
リセット回路12は、コアAとコアBのいずれか又はコアAとコアBの両方にリセット信号を出力する回路である。リセットされたコアA、コアBは再起動されるので、何らかの異常が生じた場合に、回復させることができる場合がある。
【0021】
EEPROM14はアプリケーションA,B、OS(Operating System)、ドライバ等を記憶する不揮発メモリである。OSとドライバなどハードウェア側のソフトウェアが上記のPF21に相当する。コアAはメモリ15を一時的な記憶領域にしてアプリケーションA,Bを実行し、コアBも同様にアプリケーションA,Bを実行するが、アクチュエータ等の制御に用いられるのはコアAがアプリケーションA,Bを実行して算出した出力値とする(コアBがアプリケーションA,Bを実行して算出した出力値を制御に用いてもよい)。なお、メモリ15はDIMM(Dual Inline Memory Module)等の揮発メモリである。
【0022】
コアAとコアBは、アプリケーションA又はBの処理内容に基づき、入力値に対し同じ演算を施す。ただ、例えは、センサがアナログ値を出力する場合、コアAだけはA/D変換することが必要になる。
【0023】
比較装置17は、コアAが実行したアプリケーションAの今回出力値とコアBが実行したアプリケーションAの予測出力値とをそれぞれ比較し、コアAが実行したアプリケーションBの今回出力値とコアBが実行したアプリケーションBの予測出力値とを比較する。両者の差の絶対値に一致したと見なせない程度以上の差があった場合、比較装置17は異常回避行動を開始する。異常回避行動については後述する。
【0024】
確率モデル実装部16は、所定の確率モデルに従いハードウェア22が正常状態の入力値を学習し、学習結果を利用して過去の実際の入力値から予測入力値を算出し、コアBに出力する。予測入力値の求め方については後述する。この確率モデル実装部16が、検証された入力値(今回入力値)から予測入力値を算出することで、「確率的に最も起こりえる正常値=予測入力値」をコアBに提供することができる。確率モデル実装部16は、例えば、前回の入力値に基づき学習により得られたマップを引いて今回の予測入力値を取り出し、または、前回の入力値を学習により得られた関数に入力し予測入力値を算出する。
【0025】
確率モデル実装部16は、アプリケーションA用の予測入力値とアプリケーションB用の予測入力値をそれぞれ算出する。確率モデルはアプリケーションA又はアプリケーションBが演算に用いる入力値を確率的に推定する上で適したモデルをものを使えばよい。なお、本実施形態ではアプリケーションAとアプリケーションBを区別せずに説明する。
【0026】
比較装置17及び確率モデル実装部16は、ハード的にもソフト的にも実装できるが、ハード的に実装することがより好ましい。ハード的に実装することで、コアAやコアB及び入力系の異常の影響を受けずに、比較装置17は今回出力値と予測出力値を比較でき、確率モデル実装部16は予測入力値を算出できる。ソフト的に実装する場合、3つめのコアCを設け、コアCが今回出力値と予測出力値を比較し、確率モデルに基づき予測入力値を算出することが好ましい。
【0027】
図3は、ECU100の機能ブロックを模式的に説明する図の一例である。ハードウェア22は、センサ、アクチュエータ、ECU100のハード部分等であり、ECU100に入力値を供給するハードウェアが相当する。
(1)図示するようにコアAにはハードウェア22から入力値(今回入力値と同じもの)が入力されるが、コアBには入力されない。
【0028】
比較装置17は、今回入力値と前回値(前回の制御周期の今回入力値)及び予測入力値をRAMなどに記憶し、今回出力値と予測出力値をRAMなどに記憶することができる。比較装置17は、ハードウェア22からの入力値を今回入力値として記憶しておく。
(2)コアAは、ハードウェア22からの入力値に基づきアプリケーションA又はBの今回出力値を算出し、比較装置17に入力する。比較装置17は今回出力値を記憶する。比較装置17は、例えば、ECU100が安定するまで(例えば、起動から数秒から数分間)、今回出力値と予測出力値を比較することなく、コアAのアプリケーションA又はBが今回出力値を出力する毎に今回出力値の上書きを繰り返す。
(3)比較装置17は、コアAのアプリケーションA又はBが今回出力値を出力する毎に(比較結果が一致した場合)、すでに記憶している今回入力値を前回値にコピーし、その前回値を確率モデル実装部16に出力する。よって、コアAに入力される入力値と確率モデル実装部16に入力される入力値(前回値)は1制御周期ずれたものになる。
(4)これにより、確率モデル実装部16は前回値から予測入力値を算出する。予測入力値は、次の制御周期でコアAに入力される今回入力値を予測したものである。確率モデル実装部16は、算出した予測入力値を比較装置17に書き込む。これにより比較装置17は、予測入力値と今回入力値の比較が可能になる。
(5)また、確率モデル実装部16は、算出した予測入力値をコアBに提供する。これにより、コアBは予測出力値の出力が可能になる。コアBが出力する予測出力値とコアAが出力する今回出力値は同じ制御周期の演算結果とみなすことができる。
(6)コアBは予測入力値に基づき演算した予測出力値を比較装置17に出力する。
(7)比較装置17は今回出力値と予測出力値が略一致する場合、今回出力値が正しいことが検証されたので、今回出力値をアクチュエータ等に出力する。今回出力値が正しいことが検証されれば今回入力値も正しいと検証できる。よって、(3)のように、今回出力値と予測出力値が一致する場合、比較装置17は、正しいことが検証された今回入力値を前回値にコピーし、その前回値を確率モデル実装部16に出力する。
【0029】
このようにコアBは、常に、正しいことが検証された前回値から算出された、確率的に最も起こりえる予測入力値を、演算対象とすることができる。これを利用することでマルチコアCPU11とハードウェア22の異常を切り分けることができる。
【0030】
〔隠れマルコフモデル〕
確率モデル実装部16が実装する確率モデルについて説明する。
隠れマルコフモデルは、任意の時点tでの状態Stがそれ以前のk個の状態系列St-1,St-2,St-3,… St-k,だけを条件として決定されるマルコフ連鎖に基づいた、時系列パターンの確率的な生成モデルである。観察者は外から状態Stを観測できないが,確率に従い出力される観測シンボルを観測することができる。
【0031】
図4は、隠れマルコフモデルを模式的に説明する図の一例である。“a”と添字ijで表される値は、状態SiからSjへの遷移確率であり、“b”と添字で表される値は、状態遷移する際に出力される観測シンボルの出力確率である。なお、下記の“N”は状態の数であるのでN=4である。
aij(t)=P(St+1=S|St=Si) (1≦i、j≦N)

bjk(t)=P(Ot|Si=Sj) (1≦i、j≦N)
なお、bi1+bi2+bi3=1である。
【0032】
ここでOtは観測シンボルであり、O1〜OTのT個(図では3個)のシンボル数を有するものとする。
Ot=O1,O2,…OT
また、隠れマルコフモデルは初期に状態Stを取る確率を初期状態πで表す。本実施形態ではπ={1,0,0}である。
【0033】
隠れマルコフモデルによる事象の確率は、aij(t)、bjk(t)及びπから導くことができる。aij(t)、bjk(t)及びπの組を隠れマルコフモデルλという。
上記のように、隠れマルコフモデルでは状態Stを外部から観測することができないので、観測シンボルから次にある観測シンボルが観測される確率や、観測シンボルの観測系列が生じる確率を算出する。例えば、初期状態(状態S1)においてO1が観測される確率は「a11・b11」、O2が観測される確率は「a11・b12」、O3が観測される確率は「a11・ b13」である。また{O1,O2}が観測される確率は、以下のようになる。
a11・b11・a11・b12+a11・b11・a12・b22+a11・b11・a13・b32
+a12・b21・a22・b22+a12・b21・a23・b32
+a13・b31・a33・b32+a13・b31・a32・b22
したがって、後述するような方法でaij(t)、bjk(t)及びπを求めれば、過去の観測系列から、次に最も観測される可能性が高い出力シンボルを決定することができる。例えば、{O1,O2}の次にどの観測シンボルが最も観測され易いかを算出することができる。
【0034】
上式の第1項「a11・b11・a11・b12」の次に“O1”が観測される確率は
a11・b11・a11・b12 ・a11・b11
“O2”が観測される確率は
a11・b11・a11・b12 ・a11・b12
“O3”が観測される確率は
a11・b11・a11・b12 ・a11・b13
となる。このような計算を式(1)の全項について行い、最も数値の高かった観測シンボルが{O1,O2}の次に最も観測されやすい観測シンボルとなる。
【0035】
以上から、観測シンボルの数から状態Stの数や可能な遷移を想定し、a ij(t)、bjk(t)及びπを求めることで、隠れマルコフモデルを生成することができる。a ij(t)及びbjk(t)の完全な解法は見つかっていないが、前向きアルゴリズムでa ij(t)を、後ろ向きアルゴリズムでbjk(t)をそれぞれ推定でき、観測系列の生成確率を最大にするモデルλのパラメータの局所的最適値を求める方法としてBaum-Welch アルゴリズムが知られている。これらの推定方法は既知なので簡単に説明する。詳細は例えば上坂吉則著「パターン認識と学習のアルゴリズム」に記載されている。
【0036】
・前向きアルゴリズム
時刻tの時に状態St=iにいる確率を次のように定義する。
αt(i)=P(O12...T,St=i|λ)
まず、αt(i)を初期化する。すべてのαt(i)(1≦i≦N)に対し、
α1(j)=πjbjkとする。また、bjk(t)に適当な初期値(例えば、各要素が均一な初期値)を設定しておく。
次に、各時間t(1〜T)毎に、全てのj(1≦j≦N)に対し以下の計算を繰り返す。
【0037】
【数1】


以上の計算から
P(O|λ)は次のように表すことができる、
【0038】
【数2】


・後ろ向きアルゴリズム
時間tにおいて状態Siにいて、Ot+1,Ot+2…,OTという観測系列を出力する確率Pを次のように定義する。
βt(i)=P(Ot+1,Ot+2…,OT,St=i|λ)
まず、β(i)を初期化する。すべてのB(i)(1≦i≦N)に対し、
βT(i)=1とする。
次に、各時間t(T-1、T-2、…0)毎に、全てのi(1≦j≦N)に対し以下の計算を繰り返す。す
【0039】
【数3】


以上の計算から
P(O|λ)は次のように表すことができる、
【0040】
【数4】


・Baum-Welch アルゴリズム
与えられた観測系列の生成確率を最大にするモデルλを推定する。まず、以下の式により、πi、aij、bijを計算する。πi、aij、bijの上のバー中間の計算値を意味する。
【0041】
【数5】


これにより、モデルλが推定されるので、モデルλに対し与えられた観測系列O12...T,が観測される確率P(O|λ)を計算する。計算された確率Pを記憶しておき、再度、上式によりP(O|λ)を計算し、記憶しておいた確率Pと比較して、両者の差が閾値を超えなくなったら、演算を終了する。言い換えると、隠れマルコフモデルが与えられた観測系列による学習が終了したことになる。
【0042】
〔適用例〕
以上のようにして求められた隠れマルコフモデルによる確率モデル実装部16は、比較装置17から与えられた前回値に対し、確率的に最も起こりえる正常値(入力予測値)を出力する。例えば、確率モデル実装部16は過去のm個の前回値に基づき、最尤値を入力予測値として出力する。
【0043】
ハードウェア22が提供する入力値をPWM信号のデューティとし、デューティとして0%、100%、又は、不定値のいずれかを出力する場合を例に説明する。このデューティが隠れマルコフモデルにおいて外部から観測可能な観測シンボルとなる。したがって、確率モデル実装部16が観測シンボルを学習する際は、0%、100%、又は、不定値を、観測シンボルO、O、Oにそれぞれ割り当てる。また、学習の際には、ハードウェア22が実際に出力したデューティを時系列に記録し、観測シンボルに割り当てていく。
【0044】
ハードウェア22は、例えば、100%のデューティの後は100%のデューティを出力する確率が多く、不定値の後は0%のデューティを出力し、0%は2回連続して出力しないことが多いとする。確率モデル実装部16は、このようなハードウェア22が出力する入力値を観測系列から学習している。
【0045】
図5は、学習結果を模式的に示す図の一例である。遷移確率の下の3つの数値は、観測シンボルO、O、Oが観測される確率を示す。
・観測系列が{O2、O2}の場合(100%、100%の場合)に、次に観測されうる観測シンボルはO、O、Oであるが、それぞれが観測される確率を算出すると次のようになる。π={1,0,0}として初期状態はSとする。
O1:0.9×0.5×0.7×1×0.2×0.5
O2:0.9×0.5×0.7×1×0.7×1 + 0.9×0.5×0.7×1×0.2×0.5 + 0.9×0.5×0.7×1×0.1×0.5
O3:0.9×0.5×0.7×1×0.1×0.5 + 0.9×0.5×0.2×0.5×0.1×15
したがって、観測系列が{O2、O2}の場合に次に最も観測されやすい観測シンボルはOであることがわかる。
・観測系列が{O3、O1}の場合(不定値、0%の場合)に、次に観測されうる観測シンボルはO、O、Oであるが、それぞれが観測される確率を算出すると次のようになる。
O1: 0.9×0.1×0.2×0.5×0.9×0.4
O2: 0.9×0.1×0.2×0.5×0.9×0.5
O3: 0.9×0.1×0.2×0.5×0.9×0.1 + 0.9×0.1×0.2×0.5×0.1×1
したがって、{O3、O1}の場合に次に最も観測されやすい観測シンボルはOであることがわかる。
このように、確率モデル実装部16は、確率モデル実装部16が正常である限り、ハードウェア22が正常な状態で出力する予測入力値を算出できる。上記の例から以下のように予測できる。
【0046】
100%(t−2)→100%(t−1)→100%(t:現在)
不定値(t−2)→0%(t−1)→100%(t:現在)
車両においてPWM信号はモータのトルクの制御によく使用されている。実際にはデューティは1%単位の値を取りうるが、全てのデューティを異なる観測シンボルへ割り当てる必要はなく、入力値の種類が多い場合には観測シンボルを量子化すればよい。
【0047】
また、PWM信号に限られず、入力値として電圧値や電流値が用いられている場合も確率モデルを生成することが可能である。例えば、電圧値が0〜12Vの範囲を取る場合、0≦電圧値<4を観測シンボル1に、4≦電圧値<8を観測シンボル2に、8≦電圧値≦12を観測シンボル3に、割り当て、確率モデルを決定する。
【0048】
〔自己組織化マップ〕
確率モデルに自己組織化マップを用いた例を説明する。
図6は自己組織化マップで用いられる参照ベクトルを説明する図の一例である。入力層には分析対象となる入力値の特徴量x〜xが配置され、出力層には特徴量の数以上のユニット(ニューロン)m1,1〜m5,5がある。出力層における任意の1つのユニットmi,jは、入力層における特徴量x〜xと同次元の参照ベクトルを持っている。例えば、ユニットm5,1は{m5,11,m5,12、m5,13,… m5,1n}という参照ベクトルを持っている。
【0049】
このような構造の自己組織化マップは、入力ベクトルx(t)に最も近い参照ベクトルを有するユニットの座標(i、j)を出力する。すなわち、入力ベクトルx(t)に最も関連性がある座標が得られる。この座標に意味を与えておけば、入力ベクトルx(t)を意味のある値に変換できることになる。
【0050】
自己組織化マップでは、複数の入力ベクトルx(t)が入力されることで、教師なし学習によりユニットの持つ参照ベクトルが入力ベクトルx(t)に類似したものに偏るよう参照ベクトルを更新していく。参照ベクトルのこの更新が自己組織化マップの学習である。なお、学習方法は公知なので間単に説明する。
【0051】
(1)参照ベクトル{mi,j1,mi,j2、mi,j3,… mi,jn}をランダムに決定する。
【0052】
(2)学習用の入力ベクトルx(t)を用意して、x(t)に最も類似したユニットを決定する。類似の尺度は例えばユークリッド距離である。
【0053】
(3)決定したユニットとその周辺のユニットの参照ベクトルを更新する。この更新により、参照ベクトルは徐々に入力ベクトルを学習していく(近くなっていく)。下式のhci(t)は近傍係数で、決定されたユニットと周辺のユニットの距離が大きいほど小さくなる。
【0054】
mij(t+1)=mij(t)+hci(t)[x(t)-mij(t)]
(4) (2)(3)を繰り返すことにより、入力ベクトルx(t)に類似したユニットが集まるようになる。
【0055】
〔適用例〕
簡略化された例として、例えば、入力ベクトルx(t)をいずれかの座標に分類する例を説明する。入力ベクトルx(t)として{前々回値、前回値}を用いる。すなわち、特徴量は2つであり、各ユニットは{前々回値、前回値}を学習することで、{前々回値、前回値}に近い参照ベクトルを持つようになる。
【0056】
ハードウェア22が提供する入力値を入力ベクトルx(t)として、その特徴量を上記と同じくPWM信号のデューティとする。すなわち、入力ベクトルx(t)は前々回の入力値と、前回の入力値を特徴量として有する。また、取り扱いを簡単にするため、デューティ0%を“0”、100%を“1”、不定値を“2”に置き換える。
【0057】
図7は、自己組織化マップの学習例を模式的に示す図の一例である。自己組織化マップは、ハードウェア22が実際に出力した入力値を前々回値から現在値までの3つの入力値を1セットに取り出す。
【0058】
そして、自己組織化マップは、前々回値と前回値の組に最も近い参照ベクトルを持っているユニットを特定し、そのユニットの参照ベクトルを前々回値と前回値により学習する。また、前々回値と前回値の組に最も近い参照ベクトルに現在値を紐付ける。この処理を繰り返すことで、自己組織化マップの各座標の参照ベクトルは、前々回値と前回値に近いものが集まるようになり、各座標には現在値が紐付けられる。
【0059】
なお、学習の過程では、時刻tでユニットmijに紐付けられたラベルaが、時刻t+1では同じユニットmijにラベルbが紐付けられることもある。自己組織化マップは、現在値を正確に学習するため、学習過程のラベルを記憶しておき、学習過程のラベルの、例えば平均、中央値、最頻度値など統計処理した値をユニットのラベルとする。
【0060】
図7では、学習によりユニットm2,2が(2,0)の参照ベクトルを有し、ユニットm4,2が(1,1)の参照ベクトルを有し、ユニットm2,4が(2,2)の参照ベクトルを有し、ユニットm4,4が(0,1)の参照ベクトルを有するようになった。また、ユニットm2,2にはラベル“100%”が、ユニットm4,2にはラベル“100%”が、ユニットm2,4にはラベル“0%”が、ユニットm4,4にはラベル“100%”が、それぞれ紐付けられている。これらの代表的なユニットには、各ユニットの参照ベクトルに近い参照ベクトルを有するユニットが近接している。なお、ユニットの数は識別したい事象の数に応じて調整できる。
【0061】
確率モデル実装部16は、このようにして学習した結果を利用して、予測入力値を算出する。例えば、前々回値が100%、前回値が100%の場合、入力ベクトルx(t)は{1,1}となり、確率モデル実装部16は入力ベクトルx(t)をユニットm4,2に分類する。そして、ラベルを参照し、“100%”を予測入力値としてコアBに提供する。
【0062】
同様に、前々回値が不定値、前回値が0%の場合、入力ベクトルx(t)は{2,0}となり、ユニットm2,2に分類される。よって、予測入力値は“100%”となる。前々回値が0%、前回値が100%の場合、入力ベクトルx(t)は{0,1}となり、ユニットm4,2に分類される。よって、予測入力値は“100%”となる。前々回値が不定値、前回値が不定値の場合、入力ベクトルx(t)は{2,2}となり、ユニットm2,4に分類される。よって、予測入力値は“0%”となる。
このように、確率モデル実装部16は、前々回値と前回の入力値から入力予測値を出力できる。
【0063】
〔動作手順〕
図8は、ECU100の動作手順を示すフローチャート図の一例である。まず、ハードウェア22からコアAに今回入力値が入力される(S10)。コアAは、今回入力値がアナログ値の場合、今回入力値にA/D変換を施す(S20)。また、コアAは、今回入力値を比較装置17に書き込む。
【0064】
また、少なくとも一制御周期が経過する前に、確率モデル実装部16は、比較装置17から前回値の入力を受け付ける(S101)。そして、上述した方法で、確率モデル実装部16は、予測入力値を算出する(S201)。また、確率モデル実装部16は、予測入力値を比較装置17に書き込む。
【0065】
以降の処理は、コアAとコアBで同様である。コアAは今回入力値を論理値に変換し(S30)、コアBは予測入力値を論理値に変換する(S301)。論理値は、入力値をアプリケーションA又はBが取り扱う形に変換したものである。例えば、デューティであれば0〜100%のパーセント値を所定の数値に変換する。
【0066】
次に、コアAは論理値を制御値に変換し(S40)、コアBは論理値を制御値に変換する(S401)。すなわち、論理値はアプリケーションA又はBの処理内容に応じて制御値へ変換される。例えば、目標制御値との差分に応じたフィードバック制御のための演算や、論理値に応じた値をマップから読み出す処理により、制御値が得られる。
【0067】
次に、コアAは制御値を物理値に変換し(S50)、コアBは制御値を物理値に変換する(S501)。物理値は、アクチュエータ等を制御する際の電圧値や電流値とほぼ同義であり、これまでの説明ではデューティである。よって、コアAの物理値は今回出力値となり比較装置17に書き込まれ、コアBの物理値は予測出力値となり比較装置17に書き込まれる。
【0068】
比較装置17は、今回出力値と予測出力値が書き込まれると、両者が略一致するか否かを判定する(S60)。予測出力値は、確率モデル実装部16が算出した予測入力値が完全に今回入力値と一致しない場合、今回出力値と完全には一致しない可能性がある。このため、比較装置17は、今回出力値と予測出力値の差の絶対値が予め定めた閾値未満の場合、両者が一致すると判定する。
【0069】
今回出力値と予測出力値が略一致する場合(S70のYes)、予測入力値が正常であると検証されたことになるので、比較装置17は予測入力値を前回値に上書きする(S80)。そして、コアAは、今回出力値をアクチュエータ等に出力する(S90)。
【0070】
今回出力値と予測出力値が略一致しない場合(S70のNo)、コアA又はコアBに異常が生じている可能性があるので、比較装置17は、今回入力値と予測入力値と比較する(S100)。同様に、今回入力値と予測入力値は、完全には一致しない可能性があるので、比較装置17は、今回入力値と予測入力値の差の絶対値が予め定めた閾値未満の場合、両者が一致すると判定する。
【0071】
今回入力値と予測入力値が略一致する場合(S100のYes)、ハードウェア22が適切な今回入力値を提供しているので、比較装置17はマルチコアCPU11に異常があることを検出する。このため、比較装置17は、リセット回路12に異常回避のためコアA及びコアBをリセットするよう要求する(S110)。
【0072】
今回入力値と予測入力値が略一致しない場合(S100のNo)、予測入力値は正常であるのでハードウェア22に異常が生じた可能性が高くなる。このため、比較装置17は、ハードウェア22に異常からの異常回避行動を要求する(S120)。例えば、ハードウェア22がセンサやアクチュエータの場合、代替性のあるセンサやアクチュエータに切り替えたり、センサやアクチュエータを再起動したり、そのセンサやアクチュエータを停止させる。
【0073】
なお、ステップS120、S130で何らかの異常を検出した場合、比較装置17はマルチコアCPU11に通知する。これにより、マルチコアCPU11は、異常が生じたことの記録を取ることができる。記録される内容は、例えば、推定される異常箇所(マルチコアCPU11 or ハードウェア22)、異常検出日時、車両の位置情報、その他の車両情報(車速、アクセル開度、操舵角等)である。
【0074】
以上説明したように、本実施形態のECU100は、正常な予測入力値を算出する確率モデルを有することで、ECU100に搭載されたマルチコアCPU11と、入力系のハードウェア22のどちらに異常が生じたのかを検出することができる。
【符号の説明】
【0075】
11 マルチコアCPU
12 リセット回路
13 I/Oブリッジ
14 EEPROM
15 メモリ
16 確率モデル実装部
17 比較装置
22 ハードウェア
100 ECU

【特許請求の範囲】
【請求項1】
第1のデータを出力し、前記第1のデータの後、第2のデータを出力するデータ出力手段と、
前記第1のデータから前記第2のデータを予測して予測データとして出力するデータ予測手段と、
前記第2のデータに演算を行う第1の演算手段と、
前記予測データに演算を行う第2の演算手段と、
前記第1の演算手段が前記第2のデータに演算を施した第1の出力値と、前記第2の演算手段が前記予測データに演算を施した第2の出力値と、を比較する比較手段と、
を有することを特徴とする制御装置。
【請求項2】
前記データ予測手段は、確率モデルに基づき前記予測データを予測する、ことを特徴とする請求項1記載の制御装置。
【請求項3】
前記確率モデルは、隠れマルコフモデル又は自己組織化マップである、ことを特徴とする請求項2記載の制御装置。
【請求項4】
前記比較装置は、前記第1の出力値と前記第2の出力値との差の絶対値を、閾値と比較することで、異常の有無を判定する、ことを特徴とする請求項1〜3いずれか1項記載の制御装置。
【請求項5】
前記比較装置は、前記第1の出力値と前記第2の出力値との差の絶対値が閾値以上の場合、
前記第2のデータと前記予測データを比較して、異常の有無を判定する、ことを特徴とする請求項4項記載の制御装置。
【請求項6】
前記比較装置は、前記第2のデータと前記予測データの差の絶対値が閾値以上の場合、前記データ提供手段に異常があると判定し、
前記第2のデータと前記予測データの差の絶対値が閾値未満の場合、前記第1の演算手段又は前記第2の演算手段の少なくとも一方に異常があると判定する、
ことを特徴とする請求項5項記載の制御装置。
【請求項7】
前記演算手段に異常があると判定された場合、前記第1の演算手段又は前記第2の演算手段に異常の解消動作をさせる異常解消手段を有する、
ことを特徴とする請求項6項記載の制御装置。
【請求項8】
請求項1〜7いずれか1項記載の制御装置を搭載した電子制御ユニット。
【請求項9】
第1の演算手段と第2の演算手段とを備えた制御装置の異常検出方法であって、
データ出力手段が、第1のデータを出力するステップと、
前記データ出力手段が、第2のデータを出力するステップと、
データ予測手段が、前記第1のデータから前記第2のデータを予測して予測データとして出力するステップと、
前記第1の演算手段が、前記第2のデータに演算を行うステップと、
第2の演算手段が、前記予測データに演算を行うステップと、
比較手段が、前記第1の演算手段が前記第2のデータに演算を施した第1の出力値と、前記第2の演算手段が前記予測データに演算を施した第2の出力値と、を比較するステップと、を有することを特徴とする異常検出方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−48405(P2012−48405A)
【公開日】平成24年3月8日(2012.3.8)
【国際特許分類】
【出願番号】特願2010−188766(P2010−188766)
【出願日】平成22年8月25日(2010.8.25)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】