(57)【要約】【課題】ＥＣＵに搭載されたＣＰＵと、ＥＣＵに供給される入力データの供給元の異常を判別できる制御装置を提供すること。【解決手段】  第１のデータを出力し、前記第１のデータの後、第２のデータを出力するデータ出力手段２２と、第１のデータから前記第２のデータを予測して予測データとして出力するデータ予測手段１６と、第２のデータに演算を行う第１の演算手段Ａと、前記予測データに演算を行う第２の演算手段Ｂと、前記第１の演算手段が前記第２のデータに演算を施した第１の出力値と、前記第２の演算手段が前記予測データに演算を施した第２の出力値と、を比較する比較手段１７と、を有することを特徴とする制御装置１００を提供する。【選択図】図１
2012048405.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータを出力し、前記第１のデータの後、第２のデータを出力するデータ出力手段と、
前記第１のデータから前記第２のデータを予測して予測データとして出力するデータ予測手段と、
前記第２のデータに演算を行う第１の演算手段と、
前記予測データに演算を行う第２の演算手段と、
前記第１の演算手段が前記第２のデータに演算を施した第１の出力値と、前記第２の演算手段が前記予測データに演算を施した第２の出力値と、を比較する比較手段と、
を有することを特徴とする制御装置。
【請求項２】
前記データ予測手段は、確率モデルに基づき前記予測データを予測する、ことを特徴とする請求項１記載の制御装置。
【請求項３】
前記確率モデルは、隠れマルコフモデル又は自己組織化マップである、ことを特徴とする請求項２記載の制御装置。
【請求項４】
前記比較装置は、前記第１の出力値と前記第２の出力値との差の絶対値を、閾値と比較することで、異常の有無を判定する、ことを特徴とする請求項１〜３いずれか１項記載の制御装置。
【請求項５】
前記比較装置は、前記第１の出力値と前記第２の出力値との差の絶対値が閾値以上の場合、
前記第２のデータと前記予測データを比較して、異常の有無を判定する、ことを特徴とする請求項４項記載の制御装置。
【請求項６】
前記比較装置は、前記第２のデータと前記予測データの差の絶対値が閾値以上の場合、前記データ提供手段に異常があると判定し、
前記第２のデータと前記予測データの差の絶対値が閾値未満の場合、前記第１の演算手段又は前記第２の演算手段の少なくとも一方に異常があると判定する、
ことを特徴とする請求項５項記載の制御装置。
【請求項７】
前記演算手段に異常があると判定された場合、前記第１の演算手段又は前記第２の演算手段に異常の解消動作をさせる異常解消手段を有する、
ことを特徴とする請求項６項記載の制御装置。
【請求項８】
請求項１〜７いずれか1項記載の制御装置を搭載した電子制御ユニット。
【請求項９】
第１の演算手段と第２の演算手段とを備えた制御装置の異常検出方法であって、
データ出力手段が、第１のデータを出力するステップと、
前記データ出力手段が、第２のデータを出力するステップと、
データ予測手段が、前記第１のデータから前記第２のデータを予測して予測データとして出力するステップと、
前記第１の演算手段が、前記第２のデータに演算を行うステップと、
第２の演算手段が、前記予測データに演算を行うステップと、
比較手段が、前記第１の演算手段が前記第２のデータに演算を施した第１の出力値と、前記第２の演算手段が前記予測データに演算を施した第２の出力値と、を比較するステップと、を有することを特徴とする異常検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵや入力系の異常を検出することが可能な制御装置等に関し、特に、ＣＰＵが複数のコアを有する場合にＣＰＵや入力系の異常を検出することが可能な制御装置、電子制御ユニット及び異常検出方法に関する。
【背景技術】
【０００２】
車載されるＥＣＵ（electronic  control  unit）に異常が生じると車両の制御に影響を与えるので、ＥＣＵの異常を検出する機能が搭載されることが多い。例えば、１つのＣＰＵの異常を検出するＷＤＴ（Watch  Dog  Timer）や、２つのＥＣＵ間で相互監視する技術が知られている。しかし、ＷＤＴは、何らかの原因でタスクの処理が進まなくなるなど処理遅れを検出するものであり、処理は進むが正しい演算が行えなくなっている状態を検出する相互監視の方が、より早期に異常を検出できる可能性がある。
【０００３】
２つのＥＣＵの相互監視では、物理的に異なる処理系統による２つの演算結果を比較するので、同時に同種の異常が双方に起こらない限り異常の検出が可能である。
【０００４】
ところで、車載されるＥＣＵの数を低減するためＥＣＵの統合化が進められており、従来、２つだったＥＣＵの機能が１つのＥＣＵに搭載されると、こういった相互監視が不可能になる。例えば、異常を検出する方法として、演算結果の前回値と現在値の差が誤差を超える場合に異常を検出する技術が考案されている（例えば、特許文献１参照。）。この技術を１つのＥＣＵに適用した場合、複数のコアで同じ演算を行い両者の演算結果の差が誤差を超えるか否かを判定することが考えられる。
【０００５】
また、対象システムの入出力データから仮定的にモデル化した状態空間モデルのパラメータを求めて、対象システムのシステム同定を行うシステムモデル構築方法が提案されている（例えば、特許文献２参照。）。特許文献２には、モデルにより推定された推定出力データと、入力データを実際に対象システムに対して実行させた実測出力データとを比較することで、得られた状態空間モデルとパラメータとの精度を確認する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開昭６１−１７５７０１号公報
【特許文献２】特開２００７−２６０５０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１と２のいずれも入力データは正しいという前提であるが、入力データもハード的に構成されるセンサや回路などが供給するものであるため、入力データに大きな誤差が含まれることがある。この場合、特許文献１，２では入力データを共に複数の演算手段に提供するので、入力データを提供するセンサ等の異常を検知できないという問題がある。
【０００８】
本発明は、上記課題に鑑み、ＥＣＵに搭載されたＣＰＵと、ＥＣＵに供給される入力データの供給元の異常を判別できる制御装置、電子制御ユニット及び異常検出方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題に鑑み、本発明は、第１のデータを出力し、前記第１のデータの後、第２のデータを出力するデータ出力手段と、前記第１のデータから前記第２のデータを予測して予測データとして出力するデータ予測手段と、前記第２のデータに演算を行う第１の演算手段と、前記予測データに演算を行う第２の演算手段と、前記第１の演算手段が前記第２のデータに演算を施した第１の出力値と、前記第２の演算手段が前記予測データに演算を施した第２の出力値と、を比較する比較手段と、を有することを特徴とする制御装置を提供する。
【発明の効果】
【００１０】
ＥＣＵに搭載されたＣＰＵと、ＥＣＵに供給される入力データの供給元の異常を判別できる制御装置、電子制御ユニット及び異常検出方法を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】ＥＣＵの概略を説明する図の一例である。
【図２】ＥＣＵのハードウェア構成図の一例である。
【図３】ＥＣＵの機能ブロックを模式的に説明する図の一例である。
【図４】隠れマルコフモデルを模式的に説明する図の一例である。
【図５】学習結果を模式的に示す図の一例である。
【図６】自己組織化マップで用いられる参照ベクトルを説明する図の一例である。
【図７】ラベルと入力ベクトルの関係を模式的に示す図の一例である。
【図８】ＥＣＵの動作手順を示すフローチャート図の一例である。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について図面を参照しながら説明する。
図１（ａ）は、本実施形態のＥＣＵの概略を説明する図の一例である。なお、比較のため、従来のＥＣＵ（electronic  control  unit）についても図１（ｂ）に示した。
【００１３】
従来図に示すように、従来は、別々の基板にＥＣＵ_ＡとＥＣＵ_Ｂが搭載されており、ＥＣＵ_ＡはアプリケーションＡを、ＥＣＵ_ＢはアプリケーションＢをそれぞれ実行している。また、ＥＣＵ_ＡはＥＣＵ_Ｂの異常を、ＥＣＵ_ＢはＥＣＵ_Ａの異常を相互に監視している。
【００１４】
したがって、仮にＥＣＵ_ＡとＥＣＵ_Ｂをそのまま１つのＥＣＵ_Ｗに統合した場合は、図１（ｂ）の下図に示すように、ＥＣＵ_Ｗは共通のＰＦ（プラットフォーム）上で、アプリケーションＡとアプリケーションＢを実行する。この場合、アプリケーションＡとアプリケーションＢにはそれぞれ独立したコアが割り当てられるが、２つのコアには同じ入力値（演算対象）が与えられるので、単に統合しただけでは入力値に異常があることは検出できない。
【００１５】
これに対し、本実施形態では、ＥＣＵ_ＡとＥＣＵ_Ｂを統合する際に、確率モデルを一方のコアＢに接続する。確率モデルは、入力値の推定に有効な確率モデルであればよいが、例えば、隠れマルコフモデルや自己組織化マップである。確率モデルは、ＥＣＵ_Ａとその入力系、ＥＣＵ_Ｂとその入力系が正常な状態における、入力値を学習しており、１制御周期前の入力値が正常なら、「確率的に最も起こりえる正常値」を出力する（この正常値は後述の「予測入力値」である）。以下、ハードウェア２２が入力値を供するとして説明する。
【００１６】
コアＡのアプリケーションＡ、Ｂは、ハードウェア２２が出力する入力値に基づき演算し、コアＢのアプリケーションＡ、Ｂは、確率モデルが出力する予測入力値に基づき演算する。したがって、入力値と予測入力値がほぼ同じで、コアＡのアプリケーションＡ、ＢとコアＢのアプリケーションＡ、Ｂが出力する値（以下、それぞれを今回出力値と予測出力値という）が違う場合、コアＡ、Ｂのどちらか又は両方に何らかの異常が生じている可能性があることになる。
【００１７】
一方、コアＡのアプリケーションＡ、Ｂが出力する今回出力値とコアＢのアプリケーションＡ、Ｂが出力する予測出力値が違う場合、入力値と予測入力値が同じでないのなら、確率モデルが出力する予測入力値は正常値なので、ハードウェア２２に異常が生じている可能性があることになる
このように、本実施形態のＥＣＵ１００は、正常な入力値を提供する確率モデルを有することで、１つのＥＣＵに搭載された複数のコアと、複数のコアに入力値を提供するハードウェア２２のどちらに異常が生じたのかを検出することができる。
【００１８】
〔構成〕
図２は、ＥＣＵ１００のハードウェア構成図の一例を示す。ＥＣＵ１００は、マルチコアＣＰＵ１１、リセット回路１２、Ｉ／Ｏブリッジ１３、ＥＥＰＲＯＭ１４、比較装置１７、確率モデル実装部１６及びメモリ１５を有する。マルチコアＣＰＵ１１は、コアＡとコアＢに代表される複数のコア１８を有する。図では２つだがコア１８は３つ以上でもよい。
【００１９】
Ｉ／Ｏブリッジ１３には各種のセンサ、アクチュエータ及びスイッチが接続されており、Ｉ／Ｏブリッジ１３はセンサ等からの接続要求を調停したり、マルチコアＣＰＵ１１の要求に従いマルチコアＣＰＵ１１が演算したデータをアクチュエータ等に送信する。
【００２０】
リセット回路１２は、コアＡとコアＢのいずれか又はコアＡとコアＢの両方にリセット信号を出力する回路である。リセットされたコアＡ、コアＢは再起動されるので、何らかの異常が生じた場合に、回復させることができる場合がある。
【００２１】
ＥＥＰＲＯＭ１４はアプリケーションＡ，Ｂ、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、ドライバ等を記憶する不揮発メモリである。ＯＳとドライバなどハードウェア側のソフトウェアが上記のＰＦ２１に相当する。コアＡはメモリ１５を一時的な記憶領域にしてアプリケーションＡ，Ｂを実行し、コアＢも同様にアプリケーションＡ,Ｂを実行するが、アクチュエータ等の制御に用いられるのはコアＡがアプリケーションＡ，Ｂを実行して算出した出力値とする（コアＢがアプリケーションＡ，Ｂを実行して算出した出力値を制御に用いてもよい）。なお、メモリ１５はＤＩＭＭ（Dual  Inline  Memory  Module)等の揮発メモリである。
【００２２】
コアＡとコアＢは、アプリケーションＡ又はＢの処理内容に基づき、入力値に対し同じ演算を施す。ただ、例えは、センサがアナログ値を出力する場合、コアＡだけはＡ／Ｄ変換することが必要になる。
【００２３】
比較装置１７は、コアＡが実行したアプリケーションＡの今回出力値とコアＢが実行したアプリケーションＡの予測出力値とをそれぞれ比較し、コアＡが実行したアプリケーションＢの今回出力値とコアＢが実行したアプリケーションＢの予測出力値とを比較する。両者の差の絶対値に一致したと見なせない程度以上の差があった場合、比較装置１７は異常回避行動を開始する。異常回避行動については後述する。
【００２４】
確率モデル実装部１６は、所定の確率モデルに従いハードウェア２２が正常状態の入力値を学習し、学習結果を利用して過去の実際の入力値から予測入力値を算出し、コアＢに出力する。予測入力値の求め方については後述する。この確率モデル実装部１６が、検証された入力値（今回入力値）から予測入力値を算出することで、「確率的に最も起こりえる正常値＝予測入力値」をコアＢに提供することができる。確率モデル実装部１６は、例えば、前回の入力値に基づき学習により得られたマップを引いて今回の予測入力値を取り出し、または、前回の入力値を学習により得られた関数に入力し予測入力値を算出する。
【００２５】
確率モデル実装部１６は、アプリケーションＡ用の予測入力値とアプリケーションＢ用の予測入力値をそれぞれ算出する。確率モデルはアプリケーションＡ又はアプリケーションＢが演算に用いる入力値を確率的に推定する上で適したモデルをものを使えばよい。なお、本実施形態ではアプリケーションＡとアプリケーションＢを区別せずに説明する。
【００２６】
比較装置１７及び確率モデル実装部１６は、ハード的にもソフト的にも実装できるが、ハード的に実装することがより好ましい。ハード的に実装することで、コアＡやコアＢ及び入力系の異常の影響を受けずに、比較装置１７は今回出力値と予測出力値を比較でき、確率モデル実装部１６は予測入力値を算出できる。ソフト的に実装する場合、３つめのコアＣを設け、コアＣが今回出力値と予測出力値を比較し、確率モデルに基づき予測入力値を算出することが好ましい。
【００２７】
図３は、ＥＣＵ１００の機能ブロックを模式的に説明する図の一例である。ハードウェア２２は、センサ、アクチュエータ、ＥＣＵ１００のハード部分等であり、ＥＣＵ１００に入力値を供給するハードウェアが相当する。
（１）図示するようにコアＡにはハードウェア２２から入力値（今回入力値と同じもの）が入力されるが、コアＢには入力されない。
【００２８】
比較装置１７は、今回入力値と前回値（前回の制御周期の今回入力値）及び予測入力値をＲＡＭなどに記憶し、今回出力値と予測出力値をＲＡＭなどに記憶することができる。比較装置１７は、ハードウェア２２からの入力値を今回入力値として記憶しておく。
（２）コアＡは、ハードウェア２２からの入力値に基づきアプリケーションＡ又はＢの今回出力値を算出し、比較装置１７に入力する。比較装置１７は今回出力値を記憶する。比較装置１７は、例えば、ＥＣＵ１００が安定するまで（例えば、起動から数秒から数分間）、今回出力値と予測出力値を比較することなく、コアＡのアプリケーションＡ又はＢが今回出力値を出力する毎に今回出力値の上書きを繰り返す。
（３）比較装置１７は、コアＡのアプリケーションＡ又はＢが今回出力値を出力する毎に（比較結果が一致した場合）、すでに記憶している今回入力値を前回値にコピーし、その前回値を確率モデル実装部１６に出力する。よって、コアＡに入力される入力値と確率モデル実装部１６に入力される入力値（前回値）は１制御周期ずれたものになる。
（４）これにより、確率モデル実装部１６は前回値から予測入力値を算出する。予測入力値は、次の制御周期でコアＡに入力される今回入力値を予測したものである。確率モデル実装部１６は、算出した予測入力値を比較装置１７に書き込む。これにより比較装置１７は、予測入力値と今回入力値の比較が可能になる。
（５）また、確率モデル実装部１６は、算出した予測入力値をコアＢに提供する。これにより、コアＢは予測出力値の出力が可能になる。コアＢが出力する予測出力値とコアＡが出力する今回出力値は同じ制御周期の演算結果とみなすことができる。
（６）コアＢは予測入力値に基づき演算した予測出力値を比較装置１７に出力する。
（７）比較装置１７は今回出力値と予測出力値が略一致する場合、今回出力値が正しいことが検証されたので、今回出力値をアクチュエータ等に出力する。今回出力値が正しいことが検証されれば今回入力値も正しいと検証できる。よって、（３）のように、今回出力値と予測出力値が一致する場合、比較装置１７は、正しいことが検証された今回入力値を前回値にコピーし、その前回値を確率モデル実装部１６に出力する。
【００２９】
このようにコアＢは、常に、正しいことが検証された前回値から算出された、確率的に最も起こりえる予測入力値を、演算対象とすることができる。これを利用することでマルチコアＣＰＵ１１とハードウェア２２の異常を切り分けることができる。
【００３０】
〔隠れマルコフモデル〕
確率モデル実装部１６が実装する確率モデルについて説明する。
隠れマルコフモデルは、任意の時点ｔでの状態Ｓｔがそれ以前のｋ個の状態系列St-1，St-2，St-3，…  St-k，だけを条件として決定されるマルコフ連鎖に基づいた、時系列パターンの確率的な生成モデルである。観察者は外から状態Stを観測できないが，確率に従い出力される観測シンボルを観測することができる。
【００３１】
図４は、隠れマルコフモデルを模式的に説明する図の一例である。“ａ”と添字ijで表される値は、状態SiからSjへの遷移確率であり、“ｂ”と添字で表される値は、状態遷移する際に出力される観測シンボルの出力確率である。なお、下記の“Ｎ”は状態の数であるのでＮ＝４である。
aij(t)＝P（St+1＝Sｊ｜St＝Si）  （１≦ｉ、ｊ≦Ｎ）
bjk(t)＝P（Ot｜Si＝Sj）  （１≦ｉ、ｊ≦Ｎ） 
なお、ｂi1＋ｂi2＋ｂi3＝１である。
【００３２】
ここでOtは観測シンボルであり、O1〜OTのT個（図では３個）のシンボル数を有するものとする。
Ot＝O1,O2,…OT
また、隠れマルコフモデルは初期に状態Stを取る確率を初期状態πで表す。本実施形態ではπ＝｛１，０，０｝である。
【００３３】
隠れマルコフモデルによる事象の確率は、ａij(t)、bjk(t)及びπから導くことができる。ａij(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 
したがって、後述するような方法でａij(t)、bjk(t)及びπを求めれば、過去の観測系列から、次に最も観測される可能性が高い出力シンボルを決定することができる。例えば、｛O1,O2｝の次にどの観測シンボルが最も観測され易いかを算出することができる。
【００３４】
上式の第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
となる。このような計算を式（１）の全項について行い、最も数値の高かった観測シンボルが｛O1,O2｝の次に最も観測されやすい観測シンボルとなる。
【００３５】
以上から、観測シンボルの数から状態Stの数や可能な遷移を想定し、a ij(t)、bjk(t)及びπを求めることで、隠れマルコフモデルを生成することができる。a ij(t)及びbjk(t)の完全な解法は見つかっていないが、前向きアルゴリズムでa ij(t)を、後ろ向きアルゴリズムでbjk(t)をそれぞれ推定でき、観測系列の生成確率を最大にするモデルλのパラメータの局所的最適値を求める方法としてBaum-Welch アルゴリズムが知られている。これらの推定方法は既知なので簡単に説明する。詳細は例えば上坂吉則著「パターン認識と学習のアルゴリズム」に記載されている。
【００３６】
・前向きアルゴリズム
時刻ｔの時に状態St＝iにいる確率を次のように定義する。 
αt(i)＝Ｐ（Ｏ1Ｏ2...ＯT，St＝i｜λ）
まず、αt(i)を初期化する。すべてのαt(i)（１≦i≦N）に対し、
α1（j）＝πjbjkとする。また、bjk(t)に適当な初期値（例えば、各要素が均一な初期値）を設定しておく。
次に、各時間ｔ（１〜T）毎に、全てのｊ（１≦ｊ≦N）に対し以下の計算を繰り返す。
【００３７】
【数１】
2012048405.tif 000003
以上の計算から
P(O|λ)は次のように表すことができる、
【００３８】
【数２】
2012048405.tif 000004
・後ろ向きアルゴリズム
時間ｔにおいて状態Siにいて、Ot+1，Ot+2…,OTという観測系列を出力する確率Pを次のように定義する。 
βt(i)＝Ｐ（Ot+1，Ot+2…,OT，St＝i｜λ）
まず、βｔ(i)を初期化する。すべてのBｔ(i)（１≦i≦N）に対し、
βT（i）＝１とする。
次に、各時間ｔ（T-1、T-2、…０）毎に、全てのi（１≦ｊ≦N）に対し以下の計算を繰り返す。す
【００３９】
【数３】
2012048405.tif 000005
以上の計算から
P(O|λ)は次のように表すことができる、
【００４０】
【数４】
2012048405.tif 000006
・Baum-Welch アルゴリズム
与えられた観測系列の生成確率を最大にするモデルλを推定する。まず、以下の式により、πi、aij、bijを計算する。πi、aij、bijの上のバー中間の計算値を意味する。
【００４１】
【数５】
2012048405.tif 000007
これにより、モデルλが推定されるので、モデルλに対し与えられた観測系列Ｏ1Ｏ2...ＯT，が観測される確率P（O｜λ）を計算する。計算された確率Pを記憶しておき、再度、上式によりP（O｜λ）を計算し、記憶しておいた確率Pと比較して、両者の差が閾値を超えなくなったら、演算を終了する。言い換えると、隠れマルコフモデルが与えられた観測系列による学習が終了したことになる。
【００４２】
〔適用例〕
以上のようにして求められた隠れマルコフモデルによる確率モデル実装部１６は、比較装置１７から与えられた前回値に対し、確率的に最も起こりえる正常値（入力予測値）を出力する。例えば、確率モデル実装部１６は過去のｍ個の前回値に基づき、最尤値を入力予測値として出力する。
【００４３】
ハードウェア２２が提供する入力値をPWM信号のデューティとし、デューティとして０％、１００％、又は、不定値のいずれかを出力する場合を例に説明する。このデューティが隠れマルコフモデルにおいて外部から観測可能な観測シンボルとなる。したがって、確率モデル実装部１６が観測シンボルを学習する際は、０％、１００％、又は、不定値を、観測シンボルO１、O２、O３にそれぞれ割り当てる。また、学習の際には、ハードウェア２２が実際に出力したデューティを時系列に記録し、観測シンボルに割り当てていく。
【００４４】
ハードウェア２２は、例えば、１００％のデューティの後は１００％のデューティを出力する確率が多く、不定値の後は０％のデューティを出力し、０％は2回連続して出力しないことが多いとする。確率モデル実装部１６は、このようなハードウェア２２が出力する入力値を観測系列から学習している。
【００４５】
図５は、学習結果を模式的に示す図の一例である。遷移確率の下の３つの数値は、観測シンボルO１、O２、O３が観測される確率を示す。
・観測系列が｛O2、O2｝の場合（１００％、１００％の場合）に、次に観測されうる観測シンボルはO１、O２、O３であるが、それぞれが観測される確率を算出すると次のようになる。π＝｛１，０，０｝として初期状態は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｝の場合（不定値、０％の場合）に、次に観測されうる観測シンボルは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２であることがわかる。    
このように、確率モデル実装部１６は、確率モデル実装部１６が正常である限り、ハードウェア２２が正常な状態で出力する予測入力値を算出できる。上記の例から以下のように予測できる。
【００４６】
１００％（ｔ−２）→１００％（ｔ−１）→１００％（ｔ：現在）
不定値（ｔ−２）→０％（ｔ−１）→１００％（ｔ：現在）
車両においてＰＷＭ信号はモータのトルクの制御によく使用されている。実際にはデューティは１％単位の値を取りうるが、全てのデューティを異なる観測シンボルへ割り当てる必要はなく、入力値の種類が多い場合には観測シンボルを量子化すればよい。
【００４７】
また、ＰＷＭ信号に限られず、入力値として電圧値や電流値が用いられている場合も確率モデルを生成することが可能である。例えば、電圧値が０〜１２Ｖの範囲を取る場合、０≦電圧値＜４を観測シンボル１に、４≦電圧値＜８を観測シンボル２に、８≦電圧値≦１２を観測シンボル３に、割り当て、確率モデルを決定する。
【００４８】
〔自己組織化マップ〕
確率モデルに自己組織化マップを用いた例を説明する。
図６は自己組織化マップで用いられる参照ベクトルを説明する図の一例である。入力層には分析対象となる入力値の特徴量x１〜xｎが配置され、出力層には特徴量の数以上のユニット（ニューロン）ｍ1,1〜ｍ5,5がある。出力層における任意の１つのユニットｍi,jは、入力層における特徴量ｘ１〜ｘｎと同次元の参照ベクトルを持っている。例えば、ユニットｍ5,1は｛ｍ5,11，ｍ5,12、ｍ5,13，…  ｍ5,1n｝という参照ベクトルを持っている。
【００４９】
このような構造の自己組織化マップは、入力ベクトルx(t)に最も近い参照ベクトルを有するユニットの座標（ｉ、ｊ）を出力する。すなわち、入力ベクトルx(t)に最も関連性がある座標が得られる。この座標に意味を与えておけば、入力ベクトルx(t)を意味のある値に変換できることになる。
【００５０】
自己組織化マップでは、複数の入力ベクトルx(t)が入力されることで、教師なし学習によりユニットの持つ参照ベクトルが入力ベクトルx(t)に類似したものに偏るよう参照ベクトルを更新していく。参照ベクトルのこの更新が自己組織化マップの学習である。なお、学習方法は公知なので間単に説明する。
【００５１】
（１）参照ベクトル｛ｍi,j1，ｍi,j2、mi,j3，…  ｍi,jn｝をランダムに決定する。
【００５２】
（２）学習用の入力ベクトルx(t)を用意して、x(t)に最も類似したユニットを決定する。類似の尺度は例えばユークリッド距離である。
【００５３】
（３）決定したユニットとその周辺のユニットの参照ベクトルを更新する。この更新により、参照ベクトルは徐々に入力ベクトルを学習していく（近くなっていく）。下式のhci(t)は近傍係数で、決定されたユニットと周辺のユニットの距離が大きいほど小さくなる。
【００５４】
mij(t+1)＝mij(t)＋hci(t)[x(t)-mij(t)]
（４）  （２）（３）を繰り返すことにより、入力ベクトルx(t)に類似したユニットが集まるようになる。
【００５５】
〔適用例〕
簡略化された例として、例えば、入力ベクトルx(t)をいずれかの座標に分類する例を説明する。入力ベクトルx(t)として｛前々回値、前回値｝を用いる。すなわち、特徴量は２つであり、各ユニットは｛前々回値、前回値｝を学習することで、｛前々回値、前回値｝に近い参照ベクトルを持つようになる。
【００５６】
ハードウェア２２が提供する入力値を入力ベクトルx(t)として、その特徴量を上記と同じくPWM信号のデューティとする。すなわち、入力ベクトルx(t)は前々回の入力値と、前回の入力値を特徴量として有する。また、取り扱いを簡単にするため、デューティ０％を“０”、１００％を“１”、不定値を“２”に置き換える。
【００５７】
図７は、自己組織化マップの学習例を模式的に示す図の一例である。自己組織化マップは、ハードウェア２２が実際に出力した入力値を前々回値から現在値までの３つの入力値を１セットに取り出す。
【００５８】
そして、自己組織化マップは、前々回値と前回値の組に最も近い参照ベクトルを持っているユニットを特定し、そのユニットの参照ベクトルを前々回値と前回値により学習する。また、前々回値と前回値の組に最も近い参照ベクトルに現在値を紐付ける。この処理を繰り返すことで、自己組織化マップの各座標の参照ベクトルは、前々回値と前回値に近いものが集まるようになり、各座標には現在値が紐付けられる。
【００５９】
なお、学習の過程では、時刻ｔでユニットmijに紐付けられたラベルａが、時刻ｔ＋１では同じユニットmijにラベルｂが紐付けられることもある。自己組織化マップは、現在値を正確に学習するため、学習過程のラベルを記憶しておき、学習過程のラベルの、例えば平均、中央値、最頻度値など統計処理した値をユニットのラベルとする。
【００６０】
図７では、学習によりユニットｍ2,2が（２，０）の参照ベクトルを有し、ユニットｍ4,2が（１，１）の参照ベクトルを有し、ユニットｍ2,4が（２，２）の参照ベクトルを有し、ユニットｍ4,4が（０，１）の参照ベクトルを有するようになった。また、ユニットｍ2,2にはラベル“１００％”が、ユニットｍ4,2にはラベル“１００％”が、ユニットｍ2,4にはラベル“０％”が、ユニットｍ4,4にはラベル“１００％”が、それぞれ紐付けられている。これらの代表的なユニットには、各ユニットの参照ベクトルに近い参照ベクトルを有するユニットが近接している。なお、ユニットの数は識別したい事象の数に応じて調整できる。
【００６１】
確率モデル実装部１６は、このようにして学習した結果を利用して、予測入力値を算出する。例えば、前々回値が１００％、前回値が１００％の場合、入力ベクトルx(t)は｛１，１｝となり、確率モデル実装部１６は入力ベクトルx(t)をユニットm4,2に分類する。そして、ラベルを参照し、“１００％”を予測入力値としてコアBに提供する。
【００６２】
同様に、前々回値が不定値、前回値が０％の場合、入力ベクトルx(t)は｛２，０｝となり、ユニットm2,2に分類される。よって、予測入力値は“１００％”となる。前々回値が０％、前回値が１００％の場合、入力ベクトルx(t)は｛０，１｝となり、ユニットm4,2に分類される。よって、予測入力値は“１００％”となる。前々回値が不定値、前回値が不定値の場合、入力ベクトルx(t)は｛２，２｝となり、ユニットm2,4に分類される。よって、予測入力値は“０％”となる。
このように、確率モデル実装部１６は、前々回値と前回の入力値から入力予測値を出力できる。
【００６３】
〔動作手順〕
図８は、ＥＣＵ１００の動作手順を示すフローチャート図の一例である。まず、ハードウェア２２からコアＡに今回入力値が入力される（Ｓ１０）。コアＡは、今回入力値がアナログ値の場合、今回入力値にＡ／Ｄ変換を施す（Ｓ２０）。また、コアＡは、今回入力値を比較装置１７に書き込む。
【００６４】
また、少なくとも一制御周期が経過する前に、確率モデル実装部１６は、比較装置１７から前回値の入力を受け付ける（Ｓ１０１）。そして、上述した方法で、確率モデル実装部１６は、予測入力値を算出する（Ｓ２０１）。また、確率モデル実装部１６は、予測入力値を比較装置１７に書き込む。
【００６５】
以降の処理は、コアＡとコアＢで同様である。コアＡは今回入力値を論理値に変換し（Ｓ３０）、コアＢは予測入力値を論理値に変換する（Ｓ３０１）。論理値は、入力値をアプリケーションＡ又はＢが取り扱う形に変換したものである。例えば、デューティであれば０〜１００％のパーセント値を所定の数値に変換する。
【００６６】
次に、コアＡは論理値を制御値に変換し（Ｓ４０）、コアＢは論理値を制御値に変換する（Ｓ４０１）。すなわち、論理値はアプリケーションＡ又はＢの処理内容に応じて制御値へ変換される。例えば、目標制御値との差分に応じたフィードバック制御のための演算や、論理値に応じた値をマップから読み出す処理により、制御値が得られる。
【００６７】
次に、コアＡは制御値を物理値に変換し（Ｓ５０）、コアＢは制御値を物理値に変換する（Ｓ５０１）。物理値は、アクチュエータ等を制御する際の電圧値や電流値とほぼ同義であり、これまでの説明ではデューティである。よって、コアＡの物理値は今回出力値となり比較装置１７に書き込まれ、コアＢの物理値は予測出力値となり比較装置１７に書き込まれる。
【００６８】
比較装置１７は、今回出力値と予測出力値が書き込まれると、両者が略一致するか否かを判定する（Ｓ６０）。予測出力値は、確率モデル実装部１６が算出した予測入力値が完全に今回入力値と一致しない場合、今回出力値と完全には一致しない可能性がある。このため、比較装置１７は、今回出力値と予測出力値の差の絶対値が予め定めた閾値未満の場合、両者が一致すると判定する。
【００６９】
今回出力値と予測出力値が略一致する場合（Ｓ７０のＹｅｓ）、予測入力値が正常であると検証されたことになるので、比較装置１７は予測入力値を前回値に上書きする（Ｓ８０）。そして、コアＡは、今回出力値をアクチュエータ等に出力する（Ｓ９０）。
【００７０】
今回出力値と予測出力値が略一致しない場合（Ｓ７０のＮｏ）、コアＡ又はコアＢに異常が生じている可能性があるので、比較装置１７は、今回入力値と予測入力値と比較する（Ｓ１００）。同様に、今回入力値と予測入力値は、完全には一致しない可能性があるので、比較装置１７は、今回入力値と予測入力値の差の絶対値が予め定めた閾値未満の場合、両者が一致すると判定する。
【００７１】
今回入力値と予測入力値が略一致する場合（Ｓ１００のＹｅｓ）、ハードウェア２２が適切な今回入力値を提供しているので、比較装置１７はマルチコアＣＰＵ１１に異常があることを検出する。このため、比較装置１７は、リセット回路１２に異常回避のためコアＡ及びコアＢをリセットするよう要求する（Ｓ１１０）。
【００７２】
今回入力値と予測入力値が略一致しない場合（Ｓ１００のＮｏ）、予測入力値は正常であるのでハードウェア２２に異常が生じた可能性が高くなる。このため、比較装置１７は、ハードウェア２２に異常からの異常回避行動を要求する（Ｓ１２０）。例えば、ハードウェア２２がセンサやアクチュエータの場合、代替性のあるセンサやアクチュエータに切り替えたり、センサやアクチュエータを再起動したり、そのセンサやアクチュエータを停止させる。
【００７３】
なお、ステップＳ１２０、Ｓ１３０で何らかの異常を検出した場合、比較装置１７はマルチコアＣＰＵ１１に通知する。これにより、マルチコアＣＰＵ１１は、異常が生じたことの記録を取ることができる。記録される内容は、例えば、推定される異常箇所（マルチコアＣＰＵ１１  or  ハードウェア２２）、異常検出日時、車両の位置情報、その他の車両情報（車速、アクセル開度、操舵角等）である。
【００７４】
以上説明したように、本実施形態のＥＣＵ１００は、正常な予測入力値を算出する確率モデルを有することで、ＥＣＵ１００に搭載されたマルチコアＣＰＵ１１と、入力系のハードウェア２２のどちらに異常が生じたのかを検出することができる。
【符号の説明】
【００７５】
１１      マルチコアＣＰＵ
１２      リセット回路
１３      Ｉ／Ｏブリッジ
１４      ＥＥＰＲＯＭ
１５      メモリ
１６      確率モデル実装部
１７      比較装置
２２      ハードウェア
１００    ＥＣＵ
【図１】
2012048405.tif 000008
【図２】
2012048405.tif 000009
【図３】
2012048405.tif 000010
【図４】
2012048405.tif 000011
【図５】
2012048405.tif 000012
【図６】
2012048405.tif 000013
【図７】
2012048405.tif 000014
【図８】
2012048405.tif 000015