(57)【要約】【課題】入力データを含めた全てのデータを一から並び替える処理を不要とし、計算量を削減した効率の良い処理が実行できる制御装置、車輌制御装置、処理方法、及び制御プログラムを提供する。【解決手段】ＣＰＵ１１は、入力された新たな温度データを、リングバッファに記憶された複数の温度データの配列であって、昇順或は降順に並べた場合の中央データから順に大小比較を行い、新たな温度データが比較対象の温度データより大きい場合は、比較対象の温度データの直近の大きいデータと大小比較を行い、新たな温度データが比較対象の温度データより小さい場合は、比較対象の温度データの直近の小さいデータと大小比較を行い、新たな温度データと複数の温度データの配列を昇順或は降順に並べた場合に新たな温度データが配列におけるどの位置になるのかを特定する。【選択図】図３
2009053873.tif 000002
【特許請求の範囲】
【請求項１】
入力手段により入力された複数のデータの配列と、各データに関連付けられた直近の大きいデータ情報と直近の小さいデータ情報からなる直近大小データ情報と、配列を昇順或は降順に並べた場合に中央に位置するデータに関連付けられた中央値情報とを記憶する記憶手段と、
入力手段により新たに入力された入力データがある場合に、入力データと中央値情報が関連づけられているデータから順に大小比較し、入力データが比較対象データより大きい場合は、比較対象データに関連づけられている直近大小データ情報に含まれる直近の大きいデータと大小比較を行い、入力データが比較対象データより小さい場合は、比較対象データに関連付けられている直近大小データ情報に含まれる直近の小さいデータと大小比較を行い、入力データと複数のデータの配列を昇順或は降順に並べた場合の入力データの直近大小データを特定し、これらからなる直近大小データ情報を入力データに関連づけて前記記憶手段に記憶する制御手段を備えていることを特徴とする制御装置。
【請求項２】
入力手段により入力された入力データを、記憶手段に記憶された複数のデータの配列であって、昇順或は降順に並べた場合の中央データから順に大小比較を行い、入力データが比較対象データより大きい場合は、比較対象データの直近の大きいデータと大小比較を行い、入力データが比較対象データより小さい場合は、比較対象データの直近の小さいデータと大小比較を行い、入力データと複数のデータの配列を昇順或は降順に並べた場合に入力データが配列におけるどの位置になるのかを特定する制御手段を備えていることを特徴とする制御装置。
【請求項３】
前記制御手段は、前記配列のうち最も新しく入力された最新データと前記入力データとの大小比較を行い、前記入データの直近大小データを特定するまでの平均大小比較回数が前記配列における総データ数の１／２未満の場合に、前記入力手段により新たなデータが入力されてから、大小比較する対象を前記最新データとすることを特徴とする請求項１又は２に記載の制御装置。
【請求項４】
前記制御手段は、前記最新データと前記入力データとの大小比較を行い、前記入力データの前記直近大小データを特定するまでの平均大小比較回数が前記配列における総データ数の１／２以上の場合に、前記入力手段により新たなデータが入力されてから、大小比較する対象を前記中央データとすることを特徴とする請求項１から請求項３のいずれかに記載の制御装置。
【請求項５】
前記制御手段は、前記配列におけるデータ又は前記入力データを含んだ前記配列におけるデータの分散が所定データ以下の場合に、請求項１から請求項４のいずれかにおける制御を行うことを特徴とする請求項１から請求項４のいずれかに記載の制御装置。
【請求項６】
水温センサ、車速センサ、空燃比センサ、吸気温センサ、排気温センサ、スロットルポジションセンサ又はバキュームセンサのうち少なくとも１つからのデータを入力する入力手段により入力された入力データを、記憶手段に記憶された複数のデータの配列であって、昇順或は降順に並べた場合の中央データから順に大小比較を行い、入力データが比較対象データより大きい場合は、比較対象データの直近の大きいデータと大小比較を行い、入力データが比較対象データより小さい場合は、比較対象データの直近の小さいデータと大小比較を行い、入力データと複数のデータの配列を昇順或は降順に並べた場合に入力データが配列におけるどの位置になるのかを特定し、入力データと中央データとの差分が所定データ以上の場合、中央データを車輌制御における制御データとする制御手段を備えたことを特徴とする車輌制御装置。
【請求項７】
水温センサ、車速センサ、空燃比センサ、吸気温センサ、排気温センサ、スロットルポジションセンサ又はバキュームセンサのうち少なくとも１つからのデータを入力する入力手段により入力された入力データを、記憶手段に記憶された複数のデータの配列であって、昇順或は降順に並べた場合の中央データから順に大小比較を行い、入力データが比較対象データより大きい場合は、比較対象データの直近の大きいデータと大小比較を行い、入力データが比較対象データより小さい場合は、比較対象データの直近の小さいデータと大小比較を行い、入力データと複数のデータの配列を昇順或は降順に並べた場合に入力データが配列におけるどの位置になるのかを特定し、入力データと中央データとの差分が所定データ以下の場合、入力データを車輌制御における制御データとする制御手段を備えたことを特徴とする車輌制御装置。
【請求項８】
入力手段により入力された入力データを、記憶手段に記憶された複数のデータの配列であって、昇順或は降順に並べた場合の中央データから順に大小比較を行う工程と、
入力データが比較対象データより大きい場合は、比較対象データの直近の大きいデータと大小比較を行い、入力データが比較対象データより小さい場合は、比較対象データの直近の小さいデータと大小比較を行う工程と、
入力データと複数のデータの配列を昇順或は降順に並べた場合に入力データが配列におけるどの位置になるのかを特定する工程を含むことを特徴とする制御方法。
【請求項９】
コンピュータを
入力手段により入力された入力データを、記憶手段に記憶された複数のデータの配列であって、昇順或は降順に並べた場合の中央データから順に大小比較を行い、
入力データが比較対象データより大きい場合は、比較対象データの直近の大きいデータと大小比較を行い、入力データが比較対象データより小さい場合は、比較対象データの直近の小さいデータと大小比較を行い、
入力データと複数のデータの配列を昇順或は降順に並べた場合に入力データが配列におけるどの位置になるのかを特定する制御手段
として機能させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータにおける中央値の検出を行う制御装置、車輌制御装置、処理方法、及び制御プログラムに関する。
【背景技術】
【０００２】
従来より、筒内圧検出手段の検出値からノイズを良好に除去して内燃機関の筒内圧力の高精度な測定を可能とする筒内圧力測定装置が知られている（例えば、特許文献１参照）。
【０００３】
この筒内圧力測定装置は、ある時刻ｋにおいて取得した筒内圧センサの検出値と、その前後の数点（前後同数）の検出値とを含むデータ列を昇べき順に並べ替えた上で、その中間値を、時刻ｋにおいて取得した筒内圧センサの検出値とするメディアン処理を実行する。
【０００４】
また、従来より、クランク角信号の周期を計算して、エンジン回転情報を各種のアクチュエータに提供するに際し、ノイズや信号抜けにより間違って計測された周期を排除するクランク角センサ信号周期計測装置が知られている（例えば、特許文献２参照）。
【０００５】
このクランク角センサ信号周期計測装置は、周期記憶手段と、中央値算出手段とを備えている。周期記憶手段は、タイマにより計測された周期を最新のものから過去ｎ個分記憶する。中央値算出手段は、ｎ個分の周期記憶値を大小順に並べたときの中央値を算出し、これをエンジン回転情報として各種のアクチュエータに提供する。
【０００６】
このように、複数のサンプリング値（即ち、上記筒内圧センサの検出値、上記周期記憶値）を昇順又は降順にソートして、中央値をサンプリング範囲の制御値とする処理をメディアンフィルタ処理という。
【０００７】
このメディアンフィルタ処理では、（１）サンプリング値の取得、（２）全てのサンプリング値のソート（並び替え）、（３）中央値の取り出し、の工程を（１）〜（３）の順番に従って繰り返し実行する。
【特許文献１】特開２００５−１８０２５６号公報
【特許文献２】特開平９−２１７６４６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記メディアンフィルタ処理では、サンプリング値を取得するたびに、全てのサンプリング値のソート（並び替え）を実行しているため、効率の良い処理が実行できない。即ち、サンプリングのたびに最古のサンプリング値の破棄と最新のサンプリング値の取得を行う場合、最新のサンプリング値以外のサンプリング値は前回のソート処理で正しく整列されているが、上記メディアンフィルタ処理では、この点を考慮せずに、全てのサンプリング値をソートするため、無駄な処理を行っていた。
【０００９】
本発明の目的は、入力データを含めた全てのデータを一から並び替える処理を不要とし、計算量を削減した効率の良い処理が実行できる制御装置、車輌制御装置、処理方法、及び制御プログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明では、記憶手段が入力手段により入力された複数のデータの配列と、各データに関連付けられた直近の大きいデータ情報と直近の小さいデータ情報からなる直近大小データ情報と、配列を昇順或は降順に並べた場合に中央に位置するデータに関連付けられた中央値情報とを記憶する。そして、制御手段が、入力手段により新たに入力された入力データがある場合に、入力データと中央値情報が関連づけられているデータから順に大小比較し、入力データが比較対象データより大きい場合は、比較対象データに関連づけられている直近大小データ情報に含まれる直近の大きいデータと大小比較を行い、入力データが比較対象データより小さい場合は、比較対象データに関連付けられている直近大小データ情報に含まれる直近の小さいデータと大小比較を行い、入力データと複数のデータの配列を昇順或は降順に並べた場合の入力データの直近大小データを特定し、これらからなる直近大小データ情報を入力データに関連づけて前記記憶手段に記憶する。
【発明の効果】
【００１１】
本発明によれば、入力データを含めた全てのデータを一から並び替える処理を不要とし、計算量を削減した効率の良い処理が実行できる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照しながら本発明の実施の形態を説明する。
【００１３】
図１は、本発明の実施の形態に係るデータ処理装置を含む車輌制御装置の構成を示すブロック図である。
【００１４】
同図において、車輌制御装置２０は、エンジン１、エンジン１への燃料噴射の制御を行うインジェクタ２、装置全体を制御するＥＣＵ３（データ処理装置）、空燃比の検出を行うＡ／Ｆセンサ４、不図示の吸入口から吸入された空気の吸入量を検出するエアフロメータ５、車両速度を測定する車速センサ６、冷却水の温度を測定する冷却水温センサ７、イグニッション（ＩＧ）スイッチ８、吸気温センサ９、排気温センサ１０、不図示の燃料噴射装置に使用されるスロットルポジションセンサ１５及びエンジン１の吸入空気量を圧力によって測定するバキュームセンサ１６を備えている。
【００１５】
ＥＣＵ３は、ＥＣＵ全体を制御するＣＰＵ１１（入力手段、組替手段、上書き手段、更新手段、算出手段、変更手段、除去手段、分散算出手段）、データ処理用のＲＡＭ１２（記憶手段）、書き換え可能なデータを保持するＥＥＰＲＯＭ（不揮発性ＲＯＭ）１３（記憶手段）、及び制御プログラムが格納されたＲＯＭ１４を備えている。ＣＰＵ１１は、ＲＯＭ１４に格納された制御プログラムに基づいて、ＥＣＵ１３に接続されたセンサやメータ等を制御する。
【００１６】
また、ＲＡＭ１２は、リングバッファとして機能し、冷却水温センサ７で測定された冷却水の温度データを１００ｍｓ毎に記憶する。例えば、ＲＡＭ１２は、冷却水温センサ７で測定された冷却水の温度データを５つ記憶し、最古の温度データを新たに測定された温度データで上書きすることにより、常に、冷却水の温度データを５つ記憶する。
【００１７】
以下、ＣＰＵ１１の制御によるＲＡＭ１２のリングバッファへのデータ格納方法を説明する。
【００１８】
図２（Ａ）は、温度データを格納する配列を温度データの大きさに従って昇順に並べた模式図である。
【００１９】
図２（Ａ）において、複数の矢印で囲まれた５つの矩形は、温度データを格納する配列を示す。図中の丸印内の数値は、配列に付された配列番号を示す。各配列に含まれる矩形内の数値は、配列に格納された温度データ（数値）を示す。
【００２０】
発明の構成上、配列は中央データ（即ち「中央値」ポインタが関連付けされる配列に格納される温度データ）が１つとなる奇数に設計することが好ましいが、偶数の場合の中央データは配列の適当な箇所に設計する。たとえば、偶数の場合の中央データは、「配列の数×１／２−１」番目とするか、「配列の数×１／２＋１」番目とする。
【００２１】
図２（Ａ）の矢印Ａは、直近の小データを抽象的に表現したものであり、図２（Ａ）の矢印Ｂは、直近の大データを抽象的に表現したものである。矢印Ａの先端の温度データは、矢印Ａの後端の温度データに最も近く、当該温      度データよりも小さなデータを示し、矢印Ｂの先端の温度データは、矢印Ｂの後端の温度データに最も近く、当該温度データよりも大きなデータを示す。
【００２２】
さらに、図中の「中央値」ポインタは、５つの配列に格納される温度データの中央値を示す。ＣＰＵ１１は、５つの配列に格納される温度データを参照して、中央値を格納している配列に「中央値」ポインタを関連付けする。
【００２３】
また、図中の「前回値」ポインタは、前回の温度データ（即ち、最後に配列に格納された温度データ）を示す。「最古値」ポインタは、５つの温度データのなかで最も古い温度データ（即ち、最初に配列に格納された温度データ）を示す。ＣＰＵ１１は、温度データが各配列に格納された順番に基づいて、最も新しい温度データを格納した配列に「前回値」ポインタを、最も古い温度データを格納した配列に「最古値」ポインタを関連付けする。
【００２４】
図２（Ｂ）は、温度データを格納する配列を昇順に並べた模式図である。
【００２５】
リングバッファでは、温度データは、配列「１」→配列「２」→配列「３」→配列「４」→配列「５」→配列「１」（上書き）→…のように、配列番号の順番に従って、対応する配列に格納されるため、図２（Ｂ）に示すように、「前回値」ポインタの関連付けされた配列「４」の次の配列「５」に「最古値」ポインタが関連付けされる。また、図２（Ｂ）では、次に入力される温度データは、配列「５」の温度データ［１８］に上書きされる。
【００２６】
尚、リングバッファでは、温度データが各配列に格納される際に、配列「１」〜「５」の並び替えや位置が変更されることはない。各配列に格納される温度データの大小関係は、図２（Ｂ）に示すように、各温度データに関連付けられた直近の大きいデータ情報（直近の大データ）と直近の小さいデータ情報（直近の小データ）からなる直近大小データ情報により規定されている。
【００２７】
例えば、図２（Ｂ）において、配列「１」〜「５」に含まれる温度データは、［６］、［９］、［１０］、［１２］、［１８］なので、配列「１」の温度データ［９］の直近の大データは、温度データ［１０］となり、直近の小データは、温度データ［６］となる。また、配列「３」の温度データ［６］の直近の大データは、温度データ［９］となるが、直近の小データは、温度データ［６］より低い値がないため、［なし］となる。
【００２８】
図２（Ｃ）は、図２（Ｂ）の状態で新たな温度データ［７］が入力された場合の配列を示す模式図である。
【００２９】
図２（Ｂ）に示すリングバッファに、例えば、温度データ［７］が入力されると、「最古値」ポインタが関連付けされた配列「５」に温度データ［７］が上書きされる。
【００３０】
ＣＰＵ１１は、入力された温度データ［７］が、「中央値」ポインタが関連付けされている配列に格納されている温度データ［１０］よりも大きいか否かを判定する。この場合、入力された温度データ［７］は、「中央値」ポインタが関連付けされている配列に格納されている温度データ［１０］よりも小さいので、温度データ［１０］に関連付けられている直近の小データ（ここでは、温度データ［９］）よりも大きいか否かを判定する。
【００３１】
この場合、入力された温度データ［７］は、温度データ［１０］に関連付けられている直近の小データ（ここでは、温度データ［９］）よりもさらに小さいので、温度データ［９］に関連付けられている直近の小データ（ここでは、温度データ［６］）よりも大きいか否かを判定する。
【００３２】
この場合、入力された温度データ［７］は、温度データ［９］に関連づけられている直近の小データ（ここでは、温度データ［６］）よりも大きいので、ＣＰＵ１１は、温度データ［９］に関連付けられている直近の小データ（ここでは、温度データ［６］）を温度データ［７］と特定し、温度データ［６］に関連付けられている直近の大データ（ここでは、温度データ［９］）を温度データ［７］と特定する。また、ＣＰＵ１１は、温度データ［７］に関連付けられる直近の大データを温度データ［９］と特定し、温度データ［７］に関連付けられる直近の小データを温度データ［６］と特定する。さらに、ＣＰＵ１１は、温度データ［１２］に関連づけられる直近の大データ（ここでは、温度データ［１８］）はなくなったので、当該直近の大データを「なし」と特定する。
【００３３】
次いで、ＣＰＵ１１は、「前回値」ポインタ及び「最古値」ポインタの関連付け先を更新する、即ち、配列「５」に「前回値」ポインタを関連付けし、配列「１」に「最古値」ポインタを関連付けする（図２（Ｃ））。さらに、ＣＰＵ１１は、「中央値」ポインタの関連付け先を更新する。具体的には、ＣＰＵ１１は、５つの温度データの大小関係に基づいて、中央値の温度データを格納する配列に「中央値」ポインタを関連付けする。
【００３４】
最後に、ＣＰＵ１１は、特定された直近の大データと特定された直近の小データからなる直近大小データ情報を各温度データに関連づけてＲＡＭ１２に記憶する。
【００３５】
図２（Ｄ）は、図２（Ｂ）の状態で新たな温度データ［１１］が入力された場合の配列を示す模式図である。
【００３６】
図２（Ｂ）に示すリングバッファに、例えば、温度データ［１１］が入力されると、「最古値」ポインタが関連付けされた配列「５」に温度データ［１１］が上書きされる。
【００３７】
ＣＰＵ１１は、入力された温度データ［１１］が、「中央値」ポインタが関連付けされている配列に格納されている温度データ［１０］よりも大きいか否かを判定する。
【００３８】
この場合、入力された温度データ［７］は、「中央値」ポインタが関連付けされている配列に格納されている温度データ［１０］よりも大きいので、温度データ［１０］に関連付けられている直近の大データ（ここでは、温度データ［１２］）よりも大きいか否かを判定する。
【００３９】
この場合、入力された温度データ［１１］は、温度データ［１０］に関連付けられている直近の大データ（ここでは、温度データ［１２］）よりも小さいので、ＣＰＵ１１は、温度データ［１２］に関連付けられている直近の小データ（ここでは、温度データ［１０］）を温度データ［１１］と特定し、温度データ［１０］に関連付けられている直近の大データ（ここでは、温度データ［１２］）を温度データ［１１］と特定する。
【００４０】
また、ＣＰＵ１１は、温度データ［１１］に関連付けられる直近の大データを温度データ［１２］と特定し、温度データ［１１］に関連付けられる直近の小データを温度データ［１０］と特定する。さらに、ＣＰＵ１１は、温度データ［１２］に関連づけられる直近の大データ（ここでは、温度データ［１８］）はなくなったので、当該直近の大データを「なし」と特定する。
【００４１】
次いで、ＣＰＵ１１は、「前回値」ポインタ及び「最古値」ポインタの関連付け先を更新する、即ち、配列「５」に「前回値」ポインタを関連付けし、配列「１」に「最古値」ポインタを関連付けする（図２（Ｃ））。さらに、ＣＰＵ１１は、「中央値」ポインタの関連付け先を更新する。具体的には、ＣＰＵ１１は、５つの温度データの大小関係に基づいて、中央値の温度データを格納する配列に「中央値」ポインタを関連付けする。
【００４２】
最後に、ＣＰＵ１１は、特定された直近の大データと特定された直近の小データからなる直近大小データ情報を各温度データに関連づけてＲＡＭ１２に記憶する。
【００４３】
図３は、ＲＡＭ１２のリングバッファへのデータ格納方法を示すフローチャートである。尚、工場出荷時やシステムリセット時のようにデータが５つなく、かつシステム起動時にデータを５つ入力された場合は、従来のように５つのデータをソートした後、「中央値」ポインタと「前回値」ポインタ、「最古値」ポインタを対応する配列に関連付けする。
【００４４】
まず、ＣＰＵ１１は、リングバッファに、新たな温度データ（Ｔ１）が入力されると、「最古値」ポインタが関連付けされた配列に当該新たな温度データを上書きする（ステップＳ１）。
【００４５】
次いで、ＣＰＵ１１は、入力された新たな温度データを、「中央値」ポインタが関連付けされている配列に格納されている温度データ（以下、「中央値」ポインタの温度データ（Ｔ２）という）と大小比較する（ステップＳ２）。
【００４６】
ＣＰＵ１１は、ステップＳ２で、入力された新たな温度データ（Ｔ１）が「中央値」ポインタの温度データ（Ｔ２）よりも小さい場合には、入力された新たな温度データ（Ｔ１）を、直近大小データ情報に含まれる直近の小データ（Ｔ３）と大小比較する（ステップＳ３）。このとき、入力された新たな温度データは、最初に「中央値」ポインタの温度データに関連付けされている直近の大データと大小比較され、以降、入力された新たな温度データは、より小さな直近の小データと大小比較される。入力された新たな温度データ（Ｔ１）よりも小さな直近の小データ（Ｔ３）が有る場合には、ＣＰＵ１１は、当該直近の小データ（Ｔ３）を、入力された新たな温度データ（Ｔ１）に関連付けされる直近の小データとして特定し、当該直近の小データ（Ｔ３）の関連付け元の温度データを入力された新たな温度データ（Ｔ１）に関連付けされる直近の大データとして特定する（ステップＳ４）。
【００４７】
ステップＳ３で、入力された新たな温度データ（Ｔ１）よりも小さな直近の小データ（Ｔ３）がない場合には、ＣＰＵ１１は、入力された新たな温度データ（Ｔ１）に関連付けされる直近の小データを「なし」として特定し、最後に大小比較された直近の小データの関連付け元の温度データを入力された新たな温度データ（Ｔ１）に関連付けされる直近の大データとして特定する（ステップＳ５）。
【００４８】
ＣＰＵ１１は、ステップＳ２で、入力された新たな温度データ（Ｔ１）が「中央値」ポインタの温度データ（Ｔ２）以上の場合には、入力された新たな温度データ（Ｔ１）を、直近大小データ情報に含まれる直近の大データ（Ｔ４）と大小比較する（ステップＳ６）。このとき、入力された新たな温度データは、最初に「中央値」ポインタの温度データに関連付けされている直近の大データと大小比較され、以降、入力された新たな温度データは、より大きな直近の大データと大小比較される。入力された新たな温度データ（Ｔ１）よりも大きな直近の大データ（Ｔ４）が有る場合には、ＣＰＵ１１は、当該直近の大データ（Ｔ４）を、入力された新たな温度データ（Ｔ１）に関連付けされる直近の大データとして特定し、当該直近の大データ（Ｔ４）の関連付け元の温度データを入力された新たな温度データ（Ｔ１）に関連付けされる直近の小データとして特定する（ステップＳ７）。
【００４９】
ステップＳ３で、入力された新たな温度データ（Ｔ１）よりも大きな直近の大データ（Ｔ４）がない場合には、ＣＰＵ１１は、入力された新たな温度データ（Ｔ１）に関連付けされる直近の大データを「なし」として特定し、最後に大小比較された直近の大データの関連付け元の温度データを入力された新たな温度データ（Ｔ１）に関連付けされる直近の小データとして特定する（ステップＳ８）。
【００５０】
ＣＰＵ１１は、「中央値」ポインタ、「前回値」ポインタ及び「最古値」ポインタの関連付け先を更新し（ステップＳ９）、特定された直近の大データと特定された直近の小データからなる直近大小データ情報を入力された新たな温度データ（Ｔ１）に関連づけてＲＡＭ１２に記憶して（ステップＳ１０）、本処理を終了する。
【００５１】
このように、本処理では、入力された新たな温度データがある場合に、ＣＰＵ１１は、新たな温度データを「中央値」ポインタが関連づけられている温度データから順に大小比較し、新たな温度データが比較対象の温度データより大きい場合は、比較対象の温度データに関連づけられている直近大小データ情報に含まれる直近の大きいデータと大小比較を行い、新たな温度データが比較対象の温度データより小さい場合は、比較対象の温度データに関連付けられている直近大小データ情報に含まれる直近の小さいデータと大小比較を行い、新たな温度データと複数の温度データの配列を昇順或は降順に並べた場合の新たな温度データの直近大小データを特定し、これらからなる直近大小データ情報を新たな温度データに関連づけてＲＡＭ１２に記憶する。よって、入力された新たな温度データを含めた全ての温度データを一から並び替える処理は不要となり、計算量を削減した効率の良い処理が実行できると共に全ての温度データを並び替える処理と同様の効果が得られる。
【００５２】
また、ＣＰＵ１１は、入力された新たな温度データを、リングバッファに記憶された複数の温度データの配列であって、昇順或は降順に並べた場合の中央データから順に大小比較を行い、新たな温度データが比較対象の温度データより大きい場合は、比較対象の温度データの直近の大きいデータと大小比較を行い、新たな温度データが比較対象の温度データより小さい場合は、比較対象の温度データの直近の小さいデータと大小比較を行い、新たな温度データと複数の温度データの配列を昇順或は降順に並べた場合に新たな温度データが配列におけるどの位置になるのかを特定する。よって、入力された新たな温度データを含めた全ての温度データを一から並び替える処理は不要となり、計算量を削減した効率の良い処理が実行できると共に全ての温度データを並び替える処理と同様の効果が得られる。
【００５３】
次に、上記ＲＡＭ１２のリングバッファへのデータ格納方法を利用したメディアンフィルタ処理を用いてノイズの検出と除去を行う方法を説明する。
【００５４】
上記ＲＡＭ１２のリングバッファへのデータ格納方法を利用したメディアンフィルタ処理では、ＣＰＵ１１は、上記図３のステップＳ１〜Ｓ１０の実行後に、更新された「中央値」ポインタが付加された配列に含まれる温度データをサンプリング範囲の制御値とする。
【００５５】
図１の冷却水温センサ７は、不図示のサーミスタ等を利用して、水温を電気抵抗に対応させて計測を行う。この計測結果の一例を図４に示す。尚、冷却水温センサ７の経年劣化やその他の環境要因等により、測定値にノイズが混入することがある。
【００５６】
図４のように、現在時刻ｔをＴｘとすると、ＣＰＵ１１は矢印Ｃの範囲（ここでは過去５回分）の冷却水温センサ７の測定値に対してメディアンフィルタ処理を実行する。また、現在時刻ｔをＴｘ−１とすると、ＣＰＵ１１は矢印Ｄの範囲（ここでは過去５回分）の冷却水温センサ７の測定値に対してメディアンフィルタ処理を実行する。
【００５７】
メディアンフィルタ処理では、上記ＲＡＭ１２のリングバッファへのデータ格納方法を利用する。
【００５８】
メディアンフィルタ処理で測定値の大小関係を判定する際の、判定開始位置を決定する方法を以下に説明する。
【００５９】
図５は、測定値の大小関係を判定する際の、判定開始位置を決定する処理を示すフローチャートである。この処理は、例えば、イグニッション（ＩＧ）スイッチ８がオンになり、エンジン１の始動が開始されてから、所定時間経過後（例えば、１０秒後）に実行される。
【００６０】
まず、ＣＰＵ１１は、中央値（即ち、更新された「中央値」ポインタが付加された配列に含まれる温度データ）と各測定値（例えば５つ分の測定値）の差分の２乗の総和を算出し、さらにその算出値の一定期間（当該５つ分の測定値を測定できる期間）の総和を算出する（ステップＳ１１）。ここでは、いわゆる測定値の分散を算出している。
【００６１】
次いで、ＣＰＵ１１は、当該一定期間の総和が規定値以下であるか否かを判別する（ステップＳ１２）。ステップＳ１２でＹＥＳの場合には、ＣＰＵ１１は、メディアンフィルタ処理を開始し（ステップＳ１３）、一定期間内の測定値と新たに入力される測定値（今回の測定値）との比較を開始して、今回の測定値の挿入位置を見つけるまでのステップ数、即ち、今回の測定値の直近大小データ情報を特定するまでの平均大小比較回数を算出する（ステップＳ１４）。尚、ステップＳ１４では、ＣＰＵ１１は、前回の測定値と新たに入力される測定値（今回の測定値）との比較から開始する。
【００６２】
次に、ＣＰＵ１１は、算出した平均大小比較回数が規定値未満であるか否かを判別する（ステップＳ１５）。規定値は、一定期間内の測定値数（サンプル数）の半分の値であり、例えば、一定期間内の測定値数（サンプル数）が５つの場合には、２．５である。
【００６３】
ステップＳ１５でＹＥＳの場合には、ＣＰＵ１１は、判定開始位置を前回の測定値が格納されている配列として（ステップＳ１６）、本処理を終了する。一方、ステップＳ１５でＮＯの場合には、ＣＰＵ１１は、判定開始位置を中央値が格納されている配列として（ステップＳ１７）、本処理を終了する。
【００６４】
上記ステップＳ１２でＮＯの場合には、ＣＰＵ１１は、メディアンフィルタ処理を無効にして（ステップＳ１８）、本処理を終了する。
【００６５】
たとえば、水温冷却センサ７から１６ｍｓ周期でサンプリングするデータが、３０℃、３８℃、４０℃、４８℃、及び５０℃の場合の分散データは１３６である。１６ｍｓ周期でサンプリングする冷却水温のデータがこのように分散することは殆どなく、この場合、冷却水温センサ７などが故障している可能性が高い。従って、該総和（分散データ）が１００以上の場合は冷却水温センサ７などが故障していると判断して、メディアンフィルタ処理をすることなく他の冷却水温センサ７の異常検出処理を行うか、警告ランプを点灯させる、或は異常の記録をする、または所定のフェールセーフ制御（走行待避制御）を行う。つまり、冷却水温などのように数ｍｓの短いタイミングでそのデータをサンプリングすると、その変化はリニアになるはずのものにおいて、このような分散データが検出されると何らかの異常があるものと推測することができる。従って、上記分散データとは、その推定対象と測定する期間から考えて正常データでもなくノイズの影響でもない場合、つまり何らかの異常があるものと推測することができるデータである。
【００６６】
本処理では、予め今回の測定値を格納する配列の位置を見つけるまでの平均ステップ数、即ち今回の測定値の直近大小データ情報を特定するまでの平均大小比較回数が算出され、その算出結果に基づいて今回の測定値との大小関係を判定するための最初の比較対象先の測定値が前回の測定値又は中央値のいずれかに変更されるので、計算量を削減した効率の良い処理が実行できる。
【００６７】
また、測定値のばらつき（分散）が規定値以下の場合に、メディアンフィルタ処理を実行するので、高速に測定値の並び替えを実現できる。
【００６８】
さらに、ステップＳ１６では、今回の測定値を格納する配列の位置を決定する際に、最初に、今回の測定値と、前回の測定値との大小関係が判定されるため、前回の測定値と今回の測定値との大小の差違が少ないときに、高速に測定値の並び替えを実現できる。
【００６９】
さらにまた、ステップＳ１７では、今回の測定値を格納する配列の位置を決定する際に、最初に、今回の測定値と、中央値との大小関係が判定されるため、ノイズを含むような測定値が入力される場合にも、高速に測定値の並び替えを実現できる。
【００７０】
次に、メディアンフィルタ処理を利用して、冷却水温センサ７のノイズを含む測定値を除去する処理について説明する。
【００７１】
図６は、メディアンフィルタ処理を利用して、冷却水温センサ７のノイズを含む測定値を除去する処理を示すフローチャートである。この処理は、例えば、イグニッション（ＩＧ）スイッチ８がオンになり、エンジン１の始動が開始されてから、所定時間経過後（例えば、１５秒後）に実行される。
【００７２】
まず、ＣＰＵ１１は、所定のサンプリング周期が経過したか否かを判別する（ステップＳ２１）。ここでは、所定数の測定値（サンプル）が取得されたか否かを判別している。
【００７３】
ステップＳ２１でＮＯの場合には、本処理を終了する。一方、ステップＳ２１でＹＥＳの場合には、ＣＰＵ１１は、ノイズカウンタをクリアする（ステップＳ２２）。ノイズカウンタは、ノイズを含む測定値をカウントするカウンタであり、ＣＰＵ１１は制御プログラムに従って、ＲＡＭ１２又はＥＥＰＲＯＭ１３の領域でノイズカウンタを実現する。
【００７４】
その後、ＣＰＵ１１は、新たに入力される今回の測定値を取得し（ステップＳ２３）、メディアンフィルタ処理が有効であるか否かを判別する（ステップＳ２４）。ここでは、図５のステップＳ１１，Ｓ１２で示したように、中央値と各測定値の差分の２乗の総和を算出し、さらにその算出値の一定期間の総和が規定値以下である場合、即ち、測定値のばらつきが規定値以下である場合に、ＣＰＵ１１は、メディアンフィルタ処理が有効であると判別する。
【００７５】
ステップＳ２４でＮＯの場合には、本処理を終了する。一方、ステップＳ２４でＹＥＳの場合には、前回値又は中央値と今回の測定値の比較を行い、今回の測定値を格納すべき配列の位置の決定を行い、当該配列に今回の測定値を格納し、中央値を更新する（ステップＳ２５）。
【００７６】
その後、ＣＰＵ１１は、今回の測定値と中央値との差分が規定値以下であるか否かを判別する（ステップＳ２６）。ここでは、今回の測定値がノイズを含むか否かを判別している。規定値は、ノイズであることを判断するためのデータであり、測定対象や制御状態などから予め定められているものである。つまり、ある測定対象がある制御状態においては発生しないデータ（ノイズ）を判定する閾値データである。
【００７７】
ステップＳ２６でＹＥＳの場合には、ＣＰＵ１１は、今回の測定値をサンプリング範囲の制御値として取得し（ステップＳ２７）、本処理を終了する。
【００７８】
一方、ステップＳ２６でＮＯの場合には、ＣＰＵ１１は、中央値をサンプリング範囲の制御値として取得し（ステップＳ２８）、ノイズカウンタの値を１つ加算する（ステップＳ２９）。
【００７９】
次いで、ＣＰＵ１１は、ノイズカウンタの合計が所定値（例えば５）以上であるか否かを判別する（ステップＳ３０）。ステップＳ３０でＮＯの場合には、本処理を終了する。一方、ステップＳ３０でＹＥＳの場合には、ＣＰＵ１１は、メディアンフィルタ処理を無効にし（ステップＳ３１）、ノイズカウンタをクリアして（ステップＳ３２）、本処理を終了する。
【００８０】
このように、本処理では、今回の測定値と中央値との差分が規定値を超えている場合（ステップＳ２６でＮＯ）、即ち、今回の測定値がノイズを含む場合、ＣＰＵ１１は、今回の測定値をサンプリング範囲の制御値として取得せず（即ち、今回の測定値を除去する）、中央値をサンプリング範囲の制御値として取得する（ステップＳ２８）、ノイズを含む測定値を除去することができる。
【００８１】
本実施の形態では、リングバッファへのデータ格納方法やこれを利用したメディアンフィルタ処理を用いてノイズの検出と除去を行う方法を、冷却水温センサ７で測定された温度データ（測定値）を用いて説明したが、これらの方法は、Ａ／Ｆセンサ４、エアフロメータ５、車速センサ６、吸気温センサ９、排気温センサ１０、スロットルポジションセンサ１５及びバキュームセンサ１６等で測定されたデータに対しても適用できる。
【００８２】
さらに、これらの方法は、車輌制御装置の技術分野に限定されるものではなく、コンピュータ、テレビ／ビデオ、携帯電話、冷蔵庫、洗濯機などのいわゆる家電全般の技術にも適用できる。この場合、データは大小関係を持つデータ（例えば数値、記号、又はこれらの組合わせ等）であればどのようなものでもよい。
【００８３】
尚、車輌制御装置の機能を実現するためのソフトウェアのプログラムが記録されている記録媒体を、車輌制御装置に供給し、車輌制御装置のコンピュータ（即ち、ＥＣＵ３）が記憶媒体に格納されたプログラムを読み出し実行することによっても、上記実施の形態と同様の効果を奏する。プログラムを供給するための記憶媒体としては、例えば、ＣＤ−ＲＯＭ、ＤＶＤ、又はＳＤカードなどがある。
【００８４】
また、車輌制御装置のコンピュータ（即ち、ＥＣＵ３）が、車輌制御装置の機能を実現するためのソフトウェアのプログラムを実行することによっても、上記実施の形態と同様の効果を奏する。
【００８５】
なお、本発明は、上述した実施の形態に限定されるものではなく、その要旨を逸脱しない範囲内で種々変形して実施することが可能である。
【図面の簡単な説明】
【００８６】
【図１】本発明の実施の形態に係るデータ処理装置を含む車輌制御装置の構成を示すブロック図である。
【図２】（Ａ）は、温度データを格納する配列を温度データの大きさに従って昇順に並べた模式図であり、（Ｂ）は、温度データを格納する配列を昇順に並べた模式図であり、（Ｃ）は、（Ｂ）の状態で新たな温度データ［７］が入力された場合の配列を示す模式図であり、（Ｄ）は、（Ｂ）の状態で新たな温度データ［１１］が入力された場合の配列を示す模式図である。
【図３】ＲＡＭ１２のリングバッファへのデータ格納方法を示すフローチャートである。
【図４】冷却水温センサ７の測定結果の一例を示す図である。
【図５】測定値の大小関係を判定する際の、判定開始位置の配列を決定する処理を示すフローチャートである。
【図６】メディアンフィルタ処理を利用して、冷却水温センサ７のノイズを含む測定値を除去する処理を示すフローチャートである。
【符号の説明】
【００８７】
１  エンジン
２  インジェクタ
３  ＥＣＵ
４  Ａ／Ｆセンサ
５  エアフロメータ
６  車速センサ
７  冷却水温センサ
８  イグニッション（ＩＧ）スイッチ
９  吸気温センサ
１０  排気温センサ
１１  ＣＰＵ
１２  ＲＡＭ
１３  ＥＥＰＲＯＭ（不揮発性ＲＯＭ）
１４  ＲＯＭ
１５  スロットルポジションセンサ
１６  バキュームセンサ
２０  車輌制御装置
【図１】
2009053873.tif 000003
【図２】
2009053873.tif 000004
【図３】
2009053873.tif 000005
【図４】
2009053873.tif 000006
【図５】
2009053873.tif 000007
【図６】
2009053873.tif 000008