(57)【特許請求の範囲】
【請求項１】
観測可能な入力変数ｕに関係して値が変化する状態変数ｘであって、同状態変数ｘの時間微分ｄｘ／ｄｔが、同状態変数ｘと、同状態変数ｘを独立変数とする内部関数ｇ（ｘ）と、前記入力変数ｕと、を独立変数とする関数ｆ（ｘ，ｇ（ｘ），ｕ）で表現される状態変数ｘを、複数のプロセッサコアを用いた計算によって取得するソフトセンサ装置であって、
１又は複数のプロセッサコアを用いて演算を行うように構成された演算装置であって、前記状態変数ｘ、前記内部関数ｇ（ｘ）で定義される仲介変数ｖ、及び前記入力変数ｕの各値を用いて関数ｆ（ｘ，ｖ，ｕ）を計算し、さらに、前記関数ｆ（ｘ，ｖ，ｕ）の値を時間積分することによって前記状態変数ｘの値を得るようにプログラムされた第１の演算装置と、
前記第１の演算装置で使用されるプロセッサコアとは別の１又は複数のプロセッサコアを用いて演算を行うように構成された演算装置であって、前記仲介変数ｖを計算するようにプログラムされた第２の演算装置と、を備え、
前記第１の演算装置は、前回の処理において前記第１の演算装置で計算された前記状態変数ｘの値と、前回の処理において前記第２の演算装置で計算された前記仲介変数ｖの値と、今回の処理において入力された前記入力変数ｕの値とを用いて前記関数ｆ（ｘ，ｖ，ｕ）を計算するようにプログラムされていることを特徴とするソフトセンサ装置。
【請求項２】
前記第２の演算装置は、
前回の処理において前記第１の演算装置で計算された前記状態変数ｘの値と、前回の処理において前記第２の演算装置で計算された前記仲介変数ｖの値と、今回の処理において入力された前記入力変数ｕの値とを用いて、前記内部関数ｇ（ｘ）の前記状態変数ｘについての偏微分∂ｇ（ｘ）／∂ｘと前記関数ｆ（ｘ，ｖ，ｕ）との積を計算し、その値を時間積分することによって前記仲介変数ｖの値を得る、ようにプログラムされていることを特徴とする請求項１に記載のソフトセンサ装置。
【請求項３】
前記第２の演算装置は、
前回の処理において前記第１の演算装置で計算された前記状態変数ｘの値を用いて前記内部関数ｇ（ｘ）の前記状態変数ｘについての偏微分∂ｇ（ｘ）／∂ｘを計算し、
前記偏微分∂ｇ（ｘ）／∂ｘの値と、今回の処理において前記第１の演算装置で計算された前記関数ｆ（ｘ，ｖ，ｕ）の値とを乗算して得られる値を時間積分することによって前記仲介変数ｖの値を得る、ようにプログラムされていることを特徴とする請求項１に記載のソフトセンサ装置。
【請求項４】
前記内部関数ｇ（ｘ）は、以下の式Ａで表される、２以上のｎ個の関数ｇｎ，・・・，ｇ２，ｇ１からなる逐次構造を有する合成関数であり、各関数ｇｎ，・・・，ｇ２，ｇ１に関して仲介変数ｖｉが以下の式Ｂ、Ｃ及びＤで定義される場合において、
前記第１の演算装置は、以下の式Ｅの右辺第１行の成分を演算し、得られた値を時間積分することによって前記状態変数ｘの値を得るようにプログラムされ、
前記第２の演算装置は、前記式Ｅの右辺第２行から第ｎ＋１行までの各成分の演算をそれぞれ異なるプロセッサコアを用いて行い、右辺第ｎ＋１行の成分の値を時間積分することによって、前記第１の演算装置において関数ｆ（ｘ，ｖｎ，ｕ）の計算に用いる仲介変数ｖｎの値を得る、ようにプログラムされていることを特徴とする請求項１に記載のソフトセンサ装置。
【数１】
0006458767.tif 000025
【数２】
0006458767.tif 000026
【数３】
0006458767.tif 000027
【数４】
0006458767.tif 000028
【数５】
0006458767.tif 000029
【請求項５】
前記式Ｅの右辺第ｉ＋１行の成分の演算を行うプロセッサコアは、
前回の処理において前記第１の演算装置で計算された前記状態変数ｘの値と、前回の処理において他のプロセッサコアで計算された仲介変数ｖ１から仲介変数ｖｉ−１までのｉ−１個の仲介変数の各値と、前回の処理において前記第２の演算装置で計算された前記仲介変数ｖｎの値と、今回の処理において入力された前記入力変数ｕの値とを用いて、偏微分∂ｇ１（ｘ（ｔ））／∂ｘから偏微分∂ｇｉ（ｖｉ−１（ｔ））／∂ｖｉ−１までのｉ個の偏微分と関数ｆ（ｘ，ｖｎ，ｕ）との積を計算し、その値を時間積分することによって仲介変数ｖｉの値を得る、ようにプログラムされていることを特徴とする請求項４に記載のソフトセンサ装置。
【請求項６】
前記式Ｅの右辺第ｉ＋１行の成分の演算を行うプロセッサコアは、
前回の処理において前記式Ｅの右辺第ｉ行の成分の演算を行う他のプロセッサコアで計算された仲介変数ｖｉ−１の値を用いて偏微分∂ｇｉ（ｖｉ−１（ｔ））／∂ｖｉ−１の値を計算し、
前記偏微分∂ｇｉ（ｖｉ−１（ｔ））／∂ｖｉ−１の値と、今回の処理において前記他のプロセッサコアで計算された前記式Ｅの右辺第ｉ行の成分の値とを乗算して得られる値を時間積分することによって仲介変数ｖｉの値を得る、ようにプログラムされていることを特徴とする請求項４に記載のソフトセンサ装置。
【請求項７】
前記状態変数ｘは、内燃機関の吸気管圧力であり、
前記入力変数ｕは、スロットル開度面積であり、
前記関数ｆ（ｘ，ｇ（ｘ），ｕ）は、スロットルを通過する空気の質量流量と前記スロットル開度面積と前記吸気管圧力との間に成り立つ物理則を規定した絞りの式に基づく関数であることを特徴とする請求項１乃至３の何れか１項に記載のソフトセンサ装置。
【請求項８】
前記状態変数ｘは、移動体の移動距離であり、
前記入力変数ｕは、前記移動体に加える推進力であり、
前記関数ｆ（ｘ，ｇ（ｘ），ｕ）は、前記移動距離と前記推進力との間において論理的に或いは経験的に得られた関係を表した関数であることを特徴とする請求項１乃至３の何れか１項に記載のソフトセンサ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、状態変数を計算により取得するソフトセンサ装置に関する。
【背景技術】
【０００２】
近年、温度、圧力、速度、加速度、角速度、電圧、電流、抵抗値等の各種の物理量を含む状態変数を、実際に測定するのではなく計算により推測するソフトセンサに関する研究が進められている。ソフトセンサは、推測したい状態変数と観測可能な入力変数との間に成り立つ関係を関数で記述したソフトウェアである。このソフトウェアがコンピュータに実装されることで、従来のセンサと同様の“装置”として機能する。本明細書では、ソフトウェアであるソフトセンサがハードウェアであるコンピュータに実装されてできた装置を“ソフトセンサ装置”と呼ぶ。
【０００３】
ソフトセンサ装置には、従来のセンサと同様に応答性が求められる。つまり、推測したい状態変数の取得までにかかる時間の短縮が求められる。ソフトセンサ装置を含む計算装置の演算能力は、コアの動作周波数を高めることによって向上させることができる。ただし、電力効率の観点から、動作周波数の高周波数化による高性能化には限界がある。このため、近年では、例えば特開２０１４−２１１１１３号公報に開示されているように、１つの半導体チップ上に複数のプロセッサコアを搭載したマルチコアプロセッサ、さらには、より多数のプロセッサコアを搭載したメニーコアプロセッサが注目されている。マルチコアプロセッサやメニーコアプロセッサによれば、同じ量の演算を処理するのであれば、シングルコアプロセッサに比較して動作周波数は低くてよい。さらに、処理すべきタスクを複数のコアに割り当てて並列計算することにより、単一のコアで計算を行う場合に比較して演算時間を短縮することができる。
【０００４】
ただし、マルチコアプロセッサやメニーコアプロセッサを用いる上では、ソフトセンサのアルゴリズムが有する逐次性について留意する必要がある。アムダールの法則によると、並列化可能な部分の実行時間の割合がaのプログラムをN個のプロセッサコアを用いて実行する場合、全体の性能向上率Ｓは、Ｓ＝１／（（１−ａ）＋ａ／Ｎ）で表される。これから分かるように、逐次性が高いアルゴリズムを有するプログラムの場合には、コア数を増やすことによる性能向上は難しい。また、コア数を増やすほど、コア間のデータの授受に伴う遅延も顕著になってくる。ゆえに、単にマルチコアプロセッサやメニーコアプロセッサをソフトセンサ装置に適用するだけでは、十分な性能の向上を図ることができない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−２１１１１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、上述のような課題に鑑みてなされたもので、推測対象である状態変数を、複数のプロセッサコアを用いた計算によって取得するソフトセンサ装置において、状態変数の取得に要する演算時間の短縮をはかることを目的とする。
【課題を解決するための手段】
【０００７】
推測対象である状態変数が観測可能な入力変数に関係して値が変化する場合、その状態変数を計算により推定するためのソフトセンサは、以下の式１で表される。本明細書では、推測対象である状態変数を“ｘ”で表し、観測可能な入力変数を“ｕ”で表す。ただし、“ｘ”は１又は複数の状態量を成分とするベクトルであり、“ｕ”は１又は複数の入力信号を成分とするベクトルである。
【数１】
0006458767.tif 000002
【０００８】
式１に示すように、ソフトセンサでは、状態変数ｘの時間微分ｄｘ／ｄｔが、状態変数ｘと、状態変数ｘを独立変数とする内部関数ｇ（ｘ）と、入力変数ｕと、を独立変数とする関数ｆ（ｘ，ｇ（ｘ），ｕ）で表現される。関数ｆ（ｘ，ｇ（ｘ），ｕ）の中に内部関数ｇ（ｘ）が存在していることから分かるように、ソフトセンサは逐次的構造を有している。ゆえに、式１をそのまま計算したのでは、まず、内部関数ｇ（ｘ）を計算し、その次に、関数ｆ（ｘ，ｇ（ｘ），ｕ）を計算することになるため、状態変数ｘの取得に時間を要してしまう。
【０００９】
そこで、本出願に係る発明者らは、以下に説明するように、式１の計算を並列化することを試みた。
【００１０】
まず、以下のように内部関数ｇ（ｘ）で定義される仲介変数ｖを用意する。
【数２】
0006458767.tif 000003
【００１１】
次に、式２の両辺を時間微分し、且つ、式１の関係を用いることで、次の式３が得られる。式３の右辺は、内部関数ｇ（ｘ）の状態変数ｘによる偏微分∂ｇ（ｘ）／∂ｘと関数ｆ（ｘ，ｖ，ｕ）との積で表される。
【数３】
0006458767.tif 000004
【００１２】
式１と式３を組み合わせることで、式４に示す等価方程式が得られる。
【数４】
0006458767.tif 000005
【００１３】
式４の右辺の第１行は関数ｆ（ｘ，ｖ，ｕ）であるが、その入力は状態変数ｘ（ｔ）、仲介変数ｖ（ｔ）、及び入力変数ｕ（ｔ）である。また、第２行は偏微分∂ｇ（ｘ）／∂ｘと関数ｆ（ｘ，ｖ，ｕ）との積であるが、こちらの入力も状態変数ｘ（ｔ）、仲介変数ｖ（ｔ）、及び入力変数ｕ（ｔ）である。状態変数ｘ（ｔ）、仲介変数ｖ（ｔ）、及び入力変数ｕ（ｔ）の何れもが時間により決まる変数であって、他の変数の関数とはなっていない。つまり、式４には、逐次的構造は含まれていない。
【００１４】
式４は、式１の計算を並列化して行うための一つの選択であるが、式１が有する逐次的構造を解消することができる特異的な選択である。アルゴリズムが有する逐次的構造をなくすことは、複数のプロセッサコアを用いた演算の高速化をはかる上では特に重要な事項である。本願に係る発明者らは、式４で表される並列計算が複数のプロセッサコアを用いて行われるようにソフトセンサ装置を構成することで、状態変数ｘの取得に要する演算時間の短縮をはかった。以下、本願のソフトセンサ装置の構成について説明する。
【００１５】
本願のソフトセンサ装置は、１つのプロセッサコア（複数のプロセッサコアでもよい）を用いて演算を行うように構成された第１の演算装置と、第１の演算装置で使用されるプロセッサコアとは別の１又は複数のプロセッサコアを用いて演算を行うように構成された第２の演算装置とを備える。ソフトセンサ装置がマルチコアプロセッサ或いはメニーコアプロセッサを備える場合、その単一のマルチコアプロセッサ或いは単一のメニーコアプロセッサの中に第１の演算装置と第２の演算装置とがともに含まれてもよい。
【００１６】
第１の演算装置は、状態変数ｘ、仲介変数ｖ、及び入力変数ｕの各値を用いて関数ｆ（ｘ，ｖ，ｕ）を計算し、さらに、関数ｆ（ｘ，ｖ，ｕ）の値を時間積分することによって状態変数ｘの値を得るようにプログラムされる。第２の演算装置は、第１の演算装置において入力として用いられる仲介変数ｖを計算するようにプログラムされる。第１の演算装置による関数ｆ（ｘ，ｖ，ｕ）の計算には、前回の処理において第１の演算装置で計算された状態変数ｘの値と、前回の処理において第２の演算装置で計算された仲介変数ｖの値と、今回の処理で入力された入力変数ｕの値とを用いる。
【００１７】
このように構成されるソフトセンサ装置によれば、第１の演算装置による関数ｆ（ｘ，ｖ，ｕ）の計算には、第２の演算装置において予め計算された仲介変数ｖの値が用いられるので、逐次的な処理がないことによる高速演算により、推測したい状態変数ｘを高い応答性をもって取得することができる。
【００１８】
詳しくは、第２の演算装置は、前回の処理において第１の演算装置で計算された状態変数ｘの値と、前回の処理において第２の演算装置で計算された仲介変数ｖの値と、今回の処理において入力された入力変数ｕの値とを用いて、偏微分∂ｇ（ｘ）／∂ｘと関数ｆ（ｘ，ｖ，ｕ）との積を計算するようにプログラムされてもよい。つまり、式４の右辺第２行の成分を一体的に計算するようにしてもよい。この場合、第２の演算装置は、その計算で得られた値を時間積分することによって仲介変数ｖの値を得るようにプログラムされる。
【００１９】
或いは、第２の演算装置は、前回の処理において第１の演算装置で計算された状態変数ｘの値を用いて偏微分∂ｇ（ｘ）／∂ｘを計算するとともに、今回の処理において第１の演算装置で計算された関数ｆ（ｘ，ｖ，ｕ）の値を取得するようにプログラムされてもよい。つまり、式４の右辺第２行の成分を偏微分∂ｇ（ｘ）／∂ｘと関数ｆ（ｘ，ｖ，ｕ）とに分け、偏微分∂ｇ（ｘ）／∂ｘのみを計算するようにしてもよい。この場合、第２の演算装置は、その計算で得られた偏微分∂ｇ（ｘ）／∂ｘの値と、第１の演算装置から取得した関数ｆ（ｘ，ｖ，ｕ）の値とを乗算して得られる値を時間積分することによって仲介変数ｖの値を得るようにプログラムされる。
【００２０】
ただし、内部関数ｇ（ｘ）が、以下の式５で表される２以上のｎ個の関数ｇｎ，・・・，ｇ２，ｇ１からなる逐次構造を有する合成関数である場合には、式４はさらなる並列化を行うことができる。
【数５】
0006458767.tif 000006
【００２１】
ここで、仲介変数ｖｉを次の式６及び式７のように定義する。ただし、ｉは１より大きいｎ以下の整数である。なお、式８に示すように、仲介変数ｖｎは前述の仲介変数ｖに対応する。
【数６】
0006458767.tif 000007
【数７】
0006458767.tif 000008
【数８】
0006458767.tif 000009
【００２２】
式６及び式７の両辺を時間微分することで、次の式９及び式１０が得られる。
【数９】
0006458767.tif 000010
【数１０】
0006458767.tif 000011
【００２３】
式５に示す関係に基づき式９及び式１０を用いて式４をさらに並列化することで、式１１に示す等価方程式が得られる。
【数１１】
0006458767.tif 000012
【００２４】
式１１で表される並列計算を複数のプロセッサコアを用いて行うのであれば、式１１の右辺第１行の成分の演算は、第１の演算装置で行い、右辺第２行から第ｎ＋１行までの各成分の演算は、第２の演算装置で行うようにしてもよい。詳しくは、第１の演算装置では、右辺第１行の成分の演算を行い、演算で得られた値を時間積分することによって状態変数ｘの値を得るようにしてよい。第２の演算装置では、演算で得られた第ｎ＋１行の成分の値を時間積分することによって、第１の演算装置において関数ｆ（ｘ，ｖｎ，ｕ）の演算に用いられる仲介変数ｖｎの値を得るようにしてよい。第２の演算装置が複数のプロセッサコアを有するのであれば、右辺第２行から第ｎ＋１行までの各成分の演算をそれぞれ異なるプロセッサコアで行うことによって、第１の演算装置だけでなく、第２の演算装置において仲介変数ｖｎの取得に要する演算時間の短縮をはかることもできる。
【００２５】
詳しくは、式１１の右辺第ｉ＋１行の成分の演算を行うプロセッサコアは、前回の処理において第１の演算装置で計算された状態変数ｘの値と、前回の処理において他のプロセッサコアで計算された仲介変数ｖ１から仲介変数ｖｉ−１までのｉ−１個の仲介変数の各値と、前回の処理において第２の演算装置で計算された仲介変数ｖの値と、今回の処理において入力された入力変数ｕの値とを用いて、偏微分∂ｇ１（ｘ（ｔ））／∂ｘから偏微分∂ｇｉ（ｖｉ−１（ｔ））／∂ｖｉ−１までのｉ個の偏微分と関数ｆ（ｘ，ｖ，ｕ）との積を計算し、その値を時間積分することによって仲介変数ｖｉの値を得るようにプログラムされてもよい。
【００２６】
或いは、式１１の右辺第ｉ＋１行の成分の演算を行うプロセッサコアは、前回の処理において式１１の右辺第ｉ行の成分の演算を行う他のプロセッサコアで計算された仲介変数ｖｉ−１の値を用いて偏微分∂ｇｉ（ｖｉ−１（ｔ））／∂ｖｉ−１の値を計算し、偏微分∂ｇｉ（ｖｉ−１（ｔ））／∂ｖｉ−１の値と、今回の処理において他のプロセッサコアで計算された前記式１１の右辺第ｉ行の成分の値とを乗算して得られる値を時間積分することによって仲介変数ｖｉの値を得るようにプログラムされてもよい。
【発明の効果】
【００２７】
以上述べた通り、本願に係るソフトセンサ装置によれば、第１の演算装置による関数ｆ（ｘ，ｖ，ｕ）の計算には、第２の演算装置において予め計算された仲介変数ｖの値が用いられるので、逐次的な処理がないことによる高速演算により、推測したい状態変数ｘを高い応答性をもって取得することができる。
【図面の簡単な説明】
【００２８】
【図１】ソフトセンサ装置を制御システムに適用した場合の構成例１を示す図である。
【図２】ソフトセンサ装置を制御システムに適用した場合の構成例２を示す図である。
【図３】ソフトセンサ装置を制御システムに適用した場合の構成例３を示す図である。
【図４】ソフトセンサ装置が備えるプロセッサのハードウェアアーキテクチャの例を示す概略図である。
【図５】ソフトセンサ装置が備えるプロセッサのソフトウェアアーキテクチャの例を示す概略図である。
【図６】実施の形態１のソフトセンサ装置のロジックを示すブロック線図である。
【図７】比較例のソフトセンサ装置のロジックを示すブロック線図である。
【図８】実施の形態１のソフトセンサ装置と比較例とで演算時間を比較して示す図である。
【図９】実施の形態２のソフトセンサ装置のロジックを示すブロック線図である。
【図１０】実施の形態２のソフトセンサ装置と比較例とで演算時間を比較して示す図である。
【図１１】実施の形態３のソフトセンサ装置のロジックを示すブロック線図である。
【図１２】実施の形態４のソフトセンサ装置のロジックを示すブロック線図である。
【図１３】実施例１の吸気圧力ソフトセンサ装置が適用される内燃機関の模式図である。
【図１４】実施例２の位置ソフトセンサ装置について説明するための図である。
【発明を実施するための形態】
【００２９】
１．ソフトセンサ装置を用いたシステムの構成例
本願のソフトセンサ装置は、状態変数ｘを監視するモニタリング装置に適用することができる。また、制御対象の状態変数ｘに基づいて制御対象に対する操作を行う制御システムにも適用することができる。ここでは、本願のソフトセンサ装置を制御システムに適用した場合の構成例をいくつか説明する。
【００３０】
図１乃至図３に示す各構成例では、コントローラ２、制御対象４、及びソフトセンサ装置１０によって制御システムが構成されている。制御対象４には限定はない。ただし、図示しないセンサ（ソフトセンサではない通常のセンサ）によって、制御対象４の状態変数（１又は複数の状態量を成分とするベクトル）が観測されている。この観測可能な状態変数は、ソフトセンサ装置１０で推測される状態変数ｘには含まれない。
【００３１】
コントローラ２の制御方式にも限定はない。ただし、コントローラ２では、観測された状態変数と、例えばオペレータや外部のセンサからの外部入力、そして、ソフトセンサ装置１０で推測された制御対象４の状態変数ｘに基づいて、制御対象４を制御するための操作信号が生成されている。
【００３２】
図１に示す構成例１では、コントローラ２から制御対象４に与えられる操作信号が、ソフトセンサ装置１０に対する入力変数ｕとして用いられている。状態変数ｘの変化と制御対象４に対する操作との間に関係性があるなら、操作信号を入力変数ｕとする関数ｆ（ｘ，ｇ（ｘ），ｕ）を作成することで、操作信号に基づいて状態変数ｘを推測することができる。
【００３３】
図２に示す構成例２では、コントローラ２に与えられる外部入力が、ソフトセンサ装置１０に対する入力変数ｕとして用いられている。制御対象４に与えられる操作信号は外部入力に基づき生成されるので、外部入力と状態変数ｘとの間にも関係性が見いだされる場合がある。状態変数ｘの変化と外部入力との間に関係性があるなら、外部入力を入力変数ｕとする関数ｆ（ｘ，ｇ（ｘ），ｕ）を作成することで、外部入力に基づいて状態変数ｘを推測することができる。
【００３４】
図３に示す構成例３では、観測可能な状態変数が、ソフトセンサ装置１０に対する入力変数ｕとして用いられている。例えば、圧力と温度との関係のように、２つの異なる状態量が相互に関係する場合がある。状態変数ｘの変化と観測可能な状態変数との間に関係性があるなら、観測可能な状態変数を入力変数ｕとする関数ｆ（ｘ，ｇ（ｘ），ｕ）を作成することで、観測可能な状態変数に基づいて状態変数ｘを推測することができる。
【００３５】
なお、上記の各構成例において、関数ｆ（ｘ，ｇ（ｘ），ｕ）は、制御対象４を物理法則に基づいてモデル化した関数であってもよいし、経験則に基づいて得られた関数でもよい。
【００３６】
また、上記の各構成例では、ソフトセンサ装置１０とコントローラ２とが別体となっているが、２つは一体的に構成されていてもよい。例えば、１つのコンピュータをソフトセンサ装置１０として機能させるとともに、コントローラ２としても機能させるようにしてもよい。
【００３７】
２．ソフトセンサ装置の構造
ソフトセンサ装置１０は、複数のプロセッサコア（以下、単にコアという）を有するマルチコアプロセッサ或いはメニーコアプロセッサを用いて構成される。図４は、ソフトセンサ装置１０のハードウェアアーキテクチャの例を示す概略図である。各コア１２はキャッシュ付きのＣＰＵ１４とローカルメモリ１６を備え、コア１２同士はバス１８で接続されている。ローカルメモリ１６には、ＣＰＵ１４で実行される各種のプログラムとそのプログラムの実行時に使用される各種のデータが記憶されている。また、図示は省略するが、バス１８にはコア間で共有される共有メモリも接続されている。
【００３８】
図５は、ソフトセンサ装置１０のソフトウェアアーキテクチャの例を示す概略図である。ソフトセンサ装置１０では、それぞれのコア１２上で異なるＯＳ２０が動作する。また、それぞれのＯＳ２０上で異なるアプリケーション２２が動作する。ソフトウェアとしてのソフトセンサは、そのようなアプリケーション２２の１つである。各コア１２に関連するＯＳ２０とアプリケーション２２は、コア１２ごとにローカルメモリ１６にインストールされている。このようなソフトウェアアーキテクチャを有するマルチコアプロセッサ（或いはメニーコアプロセッサ）では、各コア１２が独自にアプリケーション２２を実行することができる。アプリケーション２２の実行のために他のコア１２による演算結果や他のコア１２が有するデータが必要な場合には、バス１８を通したコア間通信（ＯＳ間通信）によってデータのやり取りが行われる。
【００３９】
３．ソフトセンサ装置の実施の形態
以下、ソフトセンサ装置の実施の形態について図を参照して説明する。
【００４０】
３−１．実施の形態１
図６は、実施の形態１のソフトセンサ装置のロジックを示すブロック線図である。実施の形態１では、式４で表される並列計算が２つのコア１００，１１０を用いて行われる。これらのコア１００，１１０は、図４及び図５に示す複数のコア１２のうちの一部である。第１コア１００は、第１の演算装置を構成するコアであり、式４の右辺第１行の計算と、その計算で得られた値の積分を行うようにプログラムされる。第２コア１１０は、第２の演算装置を構成するコアであり、式４の右辺第２行の計算と、その計算で得られた値の積分を行うようにプログラムされる。
【００４１】
第１コア１００は、演算器１０１と積分器１０２として機能するようにプログラムされる。演算器１０１には、前回の処理において第１コア１００が算出した状態変数ｘの値と、前回の処理において第２コア１１０が算出した仲介変数ｖの値と、今回の処理で入力された入力変数ｕの値とが入力される。演算器１０１は、状態変数ｘ、仲介変数ｖ、及び入力変数ｕの各値を用いて関数ｆ（ｘ，ｖ，ｕ）を計算するように構成されている。関数ｆ（ｘ，ｖ，ｕ）を計算することにより、状態変数ｘの時間微分ｄｘ／ｄｔが得られる。演算器１０１から出力される時間微分ｄｘ／ｄｔの値を積分器１０２で時間積分することにより、推測対象である状態変数ｘの値（今回の処理での値）が得られる。
【００４２】
第２コア１１０は、演算器１１１と積分器１１２として機能するようにプログラムされる。演算器１１１には、前回の処理において第１コア１００が算出した状態変数ｘの値と、前回の処理において第２コア１１０が算出した仲介変数ｖの値と、今回の処理で入力された入力変数ｕの値とが入力される。演算器１１１は、状態変数ｘ、仲介変数ｖ、及び入力変数ｕの各値を用いて、内部関数ｇ（ｘ）の状態変数ｘによる偏微分∂ｇ（ｘ）／∂ｘと関数ｆ（ｘ，ｖ，ｕ）との積、つまり、関数∂ｇ（ｘ）／∂ｘ＊ｆ（ｘ，ｖ，ｕ）を計算するように構成されている。関数∂ｇ（ｘ）／∂ｘ＊ｆ（ｘ，ｖ，ｕ）を計算することにより、仲介変数ｖの時間微分ｄｖ／ｄｔが得られる。演算器１１１から出力される時間微分ｄｖ／ｄｔの値を積分器１１２で時間積分することにより、仲介変数ｖの値（今回の処理での値）が得られる。今回の処理で得られた仲介変数ｖの値は、次回の処理において第１コア１００による関数ｆ（ｘ，ｖ，ｕ）の計算に使用される。
【００４３】
ここで、実施の形態１のソフトセンサ装置に対する比較例を挙げる。図７は、比較例のソフトセンサ装置のロジックを示すブロック線図である。比較例では、式１で表されるソフトセンサがシングルコアプロセッサに実装されている。
【００４４】
比較例のソフトセンサ装置では、コア９００は、第１演算器９０１と第２演算器９０２と積分器９０３として機能するようにプログラムされる。第１演算器９０１には、前回の処理においてコア９００が算出した状態変数ｘの値が入力される。第１演算器９０１は、状態変数ｘの値を用いて内部関数ｇ（ｘ）を計算するように構成されている。内部関数ｇ（ｘ）を計算することによって仲介変数ｖが得られる。
【００４５】
第２演算器９０２には、前回の処理においてコア９００が算出した状態変数ｘの値と、今回の処理において第１演算器９０１が算出した仲介変数ｖの値と、今回の処理で入力された入力変数ｕの値とが入力される。第２演算器９０２は、状態変数ｘ、仲介変数ｖ、及び入力変数ｕの各値を用いて関数ｆ（ｘ，ｖ，ｕ）を計算するように構成されている。関数ｆ（ｘ，ｖ，ｕ）を計算することにより、状態変数ｘの時間微分ｄｘ／ｄｔが得られる。第２演算器９０２から出力される時間微分ｄｘ／ｄｔの値を積分器９０３で時間積分することにより、推測対象である状態変数ｘの値（今回の処理での値）が得られる。
【００４６】
図８は、実施の形態１のソフトセンサ装置と比較例とで、状態変数ｘの値を得るまでに要する演算時間を比較して示す図である。比較例の場合、関数ｆ（ｘ，ｇ（ｘ），ｕ）と内部関数ｇ（ｘ）との間に逐次性があるため、内部関数ｇ（ｘ）の計算が終わってからその計算で得られた仲介変数ｖの値を利用して関数ｆ（ｘ，ｖ，ｕ）の計算が行われる。ゆえに、比較例の場合、状態変数ｘの値を得るまでに要する演算時間は、内部関数ｇ（ｘ）の演算時間、関数ｆ（ｘ，ｖ，ｕ）の演算時間、及び、時間積分の演算時間の合計時間となる。
【００４７】
一方、実施の形態１のソフトセンサ装置の場合、第１コア１００で行われる関数ｆ（ｘ，ｖ，ｕ）の計算には、前回の処理において第２コア１１０で計算された仲介変数ｖの値が用いられる。ゆえに、実施の形態１のソフトセンサ装置では、状態変数ｘの値を得るまでに要する演算時間は、関数ｆ（ｘ，ｖ，ｕ）の演算時間と時間積分の演算時間との合計時間まで短縮される。比較例との比較から分かるように、実施の形態１のソフトセンサ装置によれば、逐次的な処理がないことによる高速演算により、推測したい状態変数ｘを高い応答性をもって取得することができる。
【００４８】
なお、第２コア１１０では、仲介変数ｖの値を得るまでに、関数∂ｇ（ｘ）／∂ｘ＊ｆ（ｘ，ｖ，ｕ）の演算時間と時間積分の演算時間との合計時間を要する。関数∂ｇ（ｘ）／∂ｘ＊ｆ（ｘ，ｖ，ｕ）の演算量によっては、図８に示すように、第２コア１１０で要する演算時間が第１コア１００で要する演算時間よりも長くなる場合がある。しかし、サイクル内で演算が完了し、次回の処理までに第１コア１００に仲介変数ｖの値を渡すことができる限りにおいては、つまり、タイムアウトにならない限りにおいては、ソフトセンサ装置の応答性は第２コア１１０の演算時間には左右されない。
【００４９】
３−２．実施の形態２
図９は、実施の形態２のソフトセンサ装置のロジックを示すブロック線図である。実施の形態２では、式４で表される並列計算が２つのコア２００，２１０を用いて行われる。これらのコア２００，２１０は、図４及び図５に示す複数のコア１２のうちの一部である。第１コア２００は、第１の演算装置を構成するコアであり、式４の右辺第１行の計算と、その計算で得られた値の積分を行うようにプログラムされる。第２コア２１０は、第２の演算装置を構成するコアであり、式４の右辺第２行の計算と、その計算で得られた値の積分を行うようにプログラムされる。
【００５０】
第１コア２００は、演算器２０１と積分器２０２として機能するようにプログラムされる。演算器２０１には、前回の処理において第１コア２００が算出した状態変数ｘの値と、前回の処理において第２コア２１０が算出した仲介変数ｖの値と、今回の処理で入力された入力変数ｕの値とが入力される。演算器２０１は、状態変数ｘ、仲介変数ｖ、及び入力変数ｕの各値を用いて関数ｆ（ｘ，ｖ，ｕ）を計算するように構成されている。関数ｆ（ｘ，ｖ，ｕ）を計算することにより、状態変数ｘの時間微分ｄｘ／ｄｔが得られる。演算器２０１から出力される時間微分ｄｘ／ｄｔの値を積分器２０２で時間積分することにより、推測対象である状態変数ｘの値（今回の処理での値）が得られる。
【００５１】
第２コア２１０は、演算器２１１と乗算器２１２と積分器２１３として機能するようにプログラムされる。演算器２１１には、前回の処理において第１コア２００が算出した状態変数ｘの値が入力される。演算器２１１は、状態変数ｘの値を用いて、内部関数ｇ（ｘ）の状態変数ｘによる偏微分∂ｇ（ｘ）／∂ｘを計算するように構成されている。乗算器２１２には、演算器２１１が算出した偏微分∂ｇ（ｘ）／∂ｘの値と、今回の処理において第１コア２００が算出した関数ｆ（ｘ，ｖ，ｕ）の値とが入力される。乗算器２１２は、入力された偏微分∂ｇ（ｘ）／∂ｘの値と関数ｆ（ｘ，ｖ，ｕ）の値とを乗算するように構成されている。その計算で得られる値は、仲介変数ｖの時間微分ｄｖ／ｄｔの値と等価である。乗算器２１２から出力される時間微分ｄｖ／ｄｔの値を積分器２１３で時間積分することにより、仲介変数ｖの値（今回の処理での値）が得られる。今回の処理で得られた仲介変数ｖの値は、次回の処理において第１コア２００による関数ｆ（ｘ，ｖ，ｕ）の計算に使用される。
【００５２】
ここで、実施の形態１において例示した比較例と、実施の形態２のソフトセンサ装置とを演算時間に関して比較する。図１０は、実施の形態２のソフトセンサ装置と比較例とで、状態変数ｘの値を得るまでに要する演算時間を比較して示す図である。比較例の場合、先に述べたとおり、関数ｆ（ｘ，ｇ（ｘ），ｕ）と内部関数ｇ（ｘ）との間に逐次性があるため、状態変数ｘの値を得るまでに要する演算時間は、内部関数ｇ（ｘ）の演算時間、関数ｆ（ｘ，ｖ，ｕ）の演算時間、及び、時間積分の演算時間の合計時間となる。
【００５３】
一方、実施の形態２のソフトセンサ装置の場合、第１コア２００で行われる関数ｆ（ｘ，ｖ，ｕ）の計算には、前回の処理において第２コア２１０で計算された仲介変数ｖの値が用いられる。ゆえに、実施の形態２のソフトセンサ装置では、状態変数ｘの値を得るまでに要する演算時間は、関数ｆ（ｘ，ｖ，ｕ）の演算時間と時間積分の演算時間との合計時間まで短縮される。つまり、実施の形態２のソフトセンサ装置によれば、実施の形態１のソフトセンサ装置と同様に、逐次的な処理がないことによる高速演算により、推測したい状態変数ｘを高い応答性をもって取得することができる。
【００５４】
なお、第２コア２１０では、仲介変数ｖの値を得るまでに、偏微分∂ｇ（ｘ）／∂ｘの演算時間と、コア間通信によって第１コア２００から関数ｆ（ｘ，ｖ，ｕ）の値を受け取るのに要する通信時間と、乗算の演算時間と、時間積分の演算時間との合計時間を要する。実施の形態１における第２コア１１０の演算時間と比較した場合、偏微分∂ｇ（ｘ）／∂ｘの演算量と関数∂ｇ（ｘ）／∂ｘ＊ｆ（ｘ，ｖ，ｕ）の演算量との違いによって、実施の形態２における第２コア２１０の演算時間のほうが短いと考えられる。ただし、コア間通信に要する通信時間によって、第２コア２１０の演算時間のほうが長くなることも考えられる。ゆえに、メモリへのアクセス時間を含むコア間通信の通信時間が、演算量の大きさの割に短い対象であれば、ソフトセンサ装置のロジックとしては実施の形態２のロジックが適していると言える。逆に、コア間通信の通信時間が、演算量の大きさの割に長い対象であれば、実施の形態１のロジックが適していると言える。
【００５５】
３−３．実施の形態３
図１１は、実施の形態３のソフトセンサ装置のロジックを示すブロック線図である。実施の形態３では、式１１で表される並列計算がｎ＋１個のコア３００，３１０１〜３１０ｎを用いて行われる。これらのコア３００，３１０１〜３１０ｎは、図４及び図５に示す複数のコア１２のうちの一部である。第１コア３００は、第１の演算装置を構成するコアであり、式１１の右辺第１行の計算と、その計算で得られた値の積分を行うようにプログラムされる。第２コア３１０１から第ｎ＋１コア３１０ｎまでのｎ個のコアは、第２の演算装置を構成するコアである。第２の演算装置に含まれる第ｉ＋１コア３１０ｉは、式１１の右辺第ｉ＋１行の計算と、その計算で得られた値の積分を行うようにプログラムされる（なお、ｉは１からｎまでの整数である）。
【００５６】
第１コア３００は、演算器３０１と積分器３０２として機能するようにプログラムされる。演算器３０１には、前回の処理において第１コア３００が算出した状態変数ｘの値と、前回の処理において第ｎ＋１コア３１０ｎが算出した仲介変数ｖｎの値と、今回の処理で入力された入力変数ｕの値とが入力される。演算器３０１は、状態変数ｘ、仲介変数ｖｎ、及び入力変数ｕの各値を用いて関数ｆ（ｘ，ｖｎ，ｕ）を計算するように構成されている。関数ｆ（ｘ，ｖｎ，ｕ）を計算することにより、状態変数ｘの時間微分ｄｘ／ｄｔが得られる。演算器３０１から出力される時間微分ｄｘ／ｄｔの値を積分器３０２で時間積分することにより、推測対象である状態変数ｘの値（今回の処理での値）が得られる。
【００５７】
第２コア３１０１は、演算器３１１１と積分器３１２１として機能するようにプログラムされる。演算器３１１１には、前回の処理において第１コア３００が算出した状態変数ｘの値と、前回の処理において第ｎ＋１コア３１０ｎが算出した仲介変数ｖｎの値と、今回の処理で入力された入力変数ｕの値とが入力される。演算器３１１１は、状態変数ｘ、仲介変数ｖｎ、及び入力変数ｕの各値を用いて、内部関数ｇ１（ｘ）の状態変数ｘによる偏微分∂ｇ１（ｘ）／∂ｘと関数ｆ（ｘ，ｖｎ，ｕ）との積、つまり、関数∂ｇ１（ｘ）／∂ｘ＊ｆ（ｘ，ｖｎ，ｕ）を計算するように構成されている。これには、逐次的構造は含まれていないため、演算器３１１１による演算は高速で行われる。
【００５８】
関数∂ｇ１（ｘ）／∂ｘ＊ｆ（ｘ，ｖｎ，ｕ）を計算することにより、仲介変数ｖ１の時間微分ｄｖ１／ｄｔが得られる。演算器３１１１から出力される時間微分ｄｖ１／ｄｔの値を積分器３１２１で時間積分することにより、仲介変数ｖ１の値（今回の処理での値）が得られる。今回の処理で得られた仲介変数ｖ１の値は、次回の処理において第３コア３１０２から第ｎ＋１コア３１０ｎまでの各コアにおける演算で使用される。
【００５９】
次に、第３コア３１０２から第ｎ＋１コア３１０ｎまでの各コアについて説明する。ここで、ｉを２からｎまでの任意の整数としたとき、第ｉ＋１コア３１０ｉは、演算器３１１ｉと積分器３１２ｉとして機能するようにプログラムされる。演算器３１１ｉには、前回の処理において第１コア１００が算出した状態変数ｘの値と、前回の処理において第２コア１３１０１から第ｉコア３１０ｉ−１までのコアが算出した仲介変数ｖ１から仲介変数ｖｉ−１までのｉ−１個の仲介変数の各値と、前回の処理において第ｎ＋１コア３１０ｎが算出した仲介変数ｖｎの値と、今回の処理で入力された入力変数ｕの値とが入力される。
【００６０】
演算器３１１ｉは、状態変数ｘ、仲介変数ｖ１〜ｖｉ−１，ｖｎ、及び入力変数ｕの各値を用いて、偏微分∂ｇ１（ｘ（ｔ））／∂ｘから偏微分∂ｇｉ（ｖｉ−１（ｔ））／∂ｖｉ−１までのｉ個の偏微分と関数ｆ（ｘ，ｖｎ，ｕ）との積、つまり、関数∂ｇｉ（ｖｉ−１（ｔ））／∂ｖｉ−１＊・・・＊∂ｇ１（ｘ（ｔ））／∂ｘ＊ｆ（ｘ，ｖｎ，ｕ）を計算するように構成されている。これには、逐次的構造は含まれていないため、演算器３１１ｉによる演算は高速で行われる。
【００６１】
関数∂ｇｉ（ｖｉ−１（ｔ））／∂ｖｉ−１＊・・・＊∂ｇ１（ｘ（ｔ））／∂ｘ＊ｆ（ｘ，ｖｎ，ｕ）を計算することにより、仲介変数ｖｉの時間微分ｄｖｉ／ｄｔが得られる。演算器３１１ｉから出力される時間微分ｄｖｉ／ｄｔの値を積分器３１２ｉで時間積分することにより、仲介変数ｖｉの値（今回の処理での値）が得られる。今回の処理で得られた仲介変数ｖｉの値は、ｉが２からｎ−１までの任意の整数の場合、次回の処理において第ｉ＋２コア３１０ｉ＋１から第ｎ＋１コア３１０ｎまでの各コアにおける演算で使用される。ｉがｎの場合、つまり、第ｎ＋１コア３１０ｎでは、今回の処理で得られた仲介変数ｖｎの値は、次回の処理において第１コア３００を含むすべてのコアにおける演算で使用される。
【００６２】
ソフトセンサの推測精度を高めようとすると、それを表現する関数ｆ（ｘ，ｇ（ｘ），ｕ）は複雑なものとなり、内部関数ｇ（ｘ）には多段階の逐次的構造が含まれることになる。この点において、上記のロジックに従い演算を行うのであれば、関数ｆ（ｘ，ｇ（ｘ），ｕ）が有する逐次的構造だけでなく、内部関数ｇ（ｘ）が有する逐次的構造も解消される。これにより、状態変数ｘの取得に要する演算時間だけでなく、仲介変数ｖｎの取得に要する演算時間も短縮されるので、タイムアウトの発生は免れる。つまり、実施の形態３によれば、複雑な構造を有する関数ｆ（ｘ，ｇ（ｘ），ｕ）であっても高速演算が可能であるので、応答性に優れ且つ精度の高いソフトセンサ装置を得ることができる。
【００６３】
３−４．実施の形態４
図１２は、実施の形態４のソフトセンサ装置のロジックを示すブロック線図である。実施の形態４では、式１１で表される並列計算がｎ＋１個のコア４００，４１０１〜４１０ｎを用いて行われる。これらのコア４００，４１０１〜４１０ｎは、図４及び図５に示す複数のコア１２のうちの一部である。第１コア４００は、第１の演算装置を構成するコアであり、式１１の右辺第１行の計算と、その計算で得られた値の積分を行うようにプログラムされる。第２コア４１０１から第ｎ＋１コア４１０ｎまでのｎ個のコアは、第２の演算装置を構成するコアである。第２の演算装置に含まれる第ｉ＋１コア４１０ｉは、式１１の右辺第ｉ＋１行の計算と、その計算で得られた値の積分を行うようにプログラムされる（なお、ｉは１からｎまでの整数である）。
【００６４】
第１コア４００は、演算器４０１と積分器４０２として機能するようにプログラムされる。演算器４０１には、前回の処理において第１コア４００が算出した状態変数ｘの値と、前回の処理において第ｎ＋１コア４１０ｎが算出した仲介変数ｖｎの値と、今回の処理で入力された入力変数ｕの値とが入力される。演算器４０１は、状態変数ｘ、仲介変数ｖｎ、及び入力変数ｕの各値を用いて関数ｆ（ｘ，ｖｎ，ｕ）を計算するように構成されている。関数ｆ（ｘ，ｖｎ，ｕ）を計算することにより、状態変数ｘの時間微分ｄｘ／ｄｔが得られる。演算器４０１から出力される時間微分ｄｘ／ｄｔの値を積分器４０２で時間積分することにより、推測対象である状態変数ｘの値（今回の処理での値）が得られる。
【００６５】
第２コア４１０１は、演算器４１１１と乗算器４１２１と積分器４１３１として機能するようにプログラムされる。演算器４１１１には、前回の処理において第１コア４００が算出した状態変数ｘの値が入力される。演算器４１１１は、状態変数ｘの値を用いて、内部関数ｇ１（ｘ）の状態変数ｘによる偏微分∂ｇ１（ｘ）／∂ｘを計算するように構成されている。
【００６６】
乗算器４１２１には、演算器４１１１が算出した偏微分∂ｇ１（ｘ）／∂ｘの値と、今回の処理において第１コア４００が算出した関数ｆ（ｘ，ｖｎ，ｕ）の値とが入力される。乗算器４１２１は、入力された偏微分∂ｇ１（ｘ）／∂ｘの値と関数ｆ（ｘ，ｖｎ，ｕ）の値とを乗算するように構成されている。その計算で得られる値は、仲介変数ｖ１の時間微分ｄｖ１／ｄｔの値と等価である。乗算器４１２１から出力される時間微分ｄｖ１／ｄｔの値を積分器４１３１で時間積分することにより、仲介変数ｖ１の値（今回の処理での値）が得られる。今回の処理で得られた仲介変数ｖ１の値は、次回の処理において第３コア４１０２における演算で使用される。
【００６７】
次に、第３コア４１０２から第ｎ＋１コア４１０ｎまでの各コアについて説明する。ここで、ｉを２からｎまでの任意の整数としたとき、第ｉ＋１コア４１０ｉは、演算器４１１ｉと乗算器４１２ｉと積分器４１３ｉとして機能するようにプログラムされる。演算器４１１ｉには、前回の処理において第ｉコア４１０ｉ−１が算出した仲介変数ｖｉ−１の値が入力される。演算器４１１ｉは、仲介変数ｖｉ−１の値を用いて、内部関数ｇｉ（ｘ）の仲介変数ｖｉ−１による偏微分∂ｇｉ（ｘ）／∂ｖｉ−１を計算するように構成されている。
【００６８】
乗算器４１２ｉには、演算器４１１ｉが算出した偏微分∂ｇｉ（ｘ）／∂ｖｉ−１の値と、今回の処理において第ｉコア４１０ｉ−１が算出した時間微分ｄｖｉ−１／ｄｔの値とが入力される。乗算器４１２ｉは、入力された偏微分∂ｇｉ（ｘ）／∂ｖｉ−１の値と時間微分ｄｖｉ−１／ｄｔの値とを乗算するように構成されている。その計算で得られる値は、式１０に示される通り、仲介変数ｖｉの時間微分ｄｖｉ／ｄｔの値と等価である。乗算器４１２ｉから出力される時間微分ｄｖｉ／ｄｔの値を積分器４１３ｉで時間積分することにより、仲介変数ｖｉの値（今回の処理での値）が得られる。今回の処理で得られた仲介変数ｖｉの値は、ｉが２からｎ−１までの任意の整数の場合、次回の処理において第ｉ＋２コア４１０ｉ＋１における演算で使用される。ｉがｎの場合、つまり、第ｎ＋１コア４１０ｎでは、今回の処理で得られた仲介変数ｖｎの値は、次回の処理において第１コア４００における演算で使用される。
【００６９】
上記のロジックに従い演算を行うのであれば、関数ｆ（ｘ，ｇ（ｘ），ｕ）が有する逐次的構造だけでなく、内部関数ｇ（ｘ）が有する逐次的構造も解消される。ゆえに、実施の形態４によれば、実施の形態３と同様、複雑な構造を有する関数ｆ（ｘ，ｇ（ｘ），ｕ）であっても高速演算が可能であり、応答性に優れ且つ精度の高いソフトセンサ装置を得ることができる。なお、実施の形態４と実施の形態３とを比較した場合、メモリへのアクセス時間を含むコア間通信の通信時間が、演算量の大きさの割に短い対象であれば、ソフトセンサ装置のロジックとしては実施の形態４のロジックが適していると言える。逆に、コア間通信の通信時間が、演算量の大きさの割に長い対象であれば、実施の形態３のロジックが適していると言える。
【００７０】
４．ソフトセンサ装置の実施例
以下、ソフトセンサ装置の具体的な実施例を例示する。
【００７１】
４−１．実施例１
実施例１では、内燃機関の吸気圧力の推測にソフトセンサ装置を使用する。図１３は実施例１の吸気圧力ソフトセンサ装置が適用される内燃機関３０の模式図である。まず、気体定数をＲ、エアクリーナ３１の入り口における大気温度をＴａ、エアクリーナ３１の入り口における大気圧をＰａ、スロットル３２の開度面積をＡｔｈ、吸気マニホールド３３内の吸気圧力をＰｍとすると、スロットル３２を通過する空気の質量流量ｍｔｈは、公知の絞りの式に従い、次の式１２及び式１３で表すことができる。
【数１２】
0006458767.tif 000013
【数１３】
0006458767.tif 000014
【００７２】
また、吸気圧力をＰｍの時間変化ｄＰｍ／ｄｔは、吸気マニホールド３３の体積をＶｍ、吸気マニホールド３３内の温度をＴｍ、シリンダに吸入される空気の質量流量をｍｃｙｌとすると、以下の式１４で表すことができる。
【数１４】
0006458767.tif 000015
【００７３】
シリンダに吸入される空気の質量流量ｍｃｙｌは、以下の式１５で表すことができる。ただし、ηｖは体積効率、Ｎｅはエンジン回転速度、Ｖｄはシリンダ体積である。
【数１５】
0006458767.tif 000016
【００７４】
ここで、式１２〜式１５に示す関係においてＴｍ、Ｔａ、Ｐａ、Ｎｅを一定とすると、以下の式１６及び式１７で表される吸気圧力ソフトセンサが得られる。ただし、この吸気圧力ソフトセンサにおける状態変数ｘは吸気圧力Ｐｍであり、入力変数ｕはスロットル開度面積Ａｔｈである。
【数１６】
0006458767.tif 000017
【数１７】
0006458767.tif 000018
【００７５】
ただし、式１６において、係数Ｋ１、Ｋ２はそれぞれ以下の式１８及び式１９で定義される。
【数１８】
0006458767.tif 000019
【数１９】
0006458767.tif 000020
【００７６】
式１７に示す内部関数ｇ（ｘ）の状態変数ｘによる偏微分∂ｇ（ｘ）／∂ｘは、以下の式２０で表される。
【数２０】
0006458767.tif 000021
【００７７】
実施の形態１のソフトセンサ装置を吸気圧力ソフトセンサ装置として構成する場合には、図６に示す第１コア１００の演算器１０１に、式１６の関数ｆ（ｘ，ｖ，ｕ）を実装すればよい。また、第２コア１１０の演算器１１１に、式２０の偏微分∂ｇ（ｘ）／∂ｘと式１６の関数ｆ（ｘ，ｖ，ｕ）との積で表される関数∂ｇ（ｘ）／∂ｘ＊ｆ（ｘ，ｖ，ｕ）を実装すればよい。
【００７８】
実施の形態２のソフトセンサ装置を吸気圧力ソフトセンサ装置として構成する場合には、図９に示す第１コア２００の演算器２０１に、式１６の関数ｆ（ｘ，ｖ，ｕ）を実装すればよい。また、第２コア２１０の演算器２１１に、式２０の偏微分∂ｇ（ｘ）／∂ｘを実装すればよい。
【００７９】
４−２．実施例２
実施例２では、移動体の位置の推測にソフトセンサ装置を使用する。ここでは、移動体に加える推進力ｕと、移動体のｘ軸方向の移動距離ｘとの間に、以下の式２１及び式２２に示す関係が見つかったとする。この関係は、理論的に得られたものでもよいし、経験的に得られたものでもよい。なお、式２１におけるＫ１、Ｋ２は係数である。
【数２１】
0006458767.tif 000022
【数２２】
0006458767.tif 000023
【００８０】
上記の関係に基づいてソフトセンサを設計し、マルチコアプロセッサ或いはメニーコアプロセッサに実装することにより、入力変数である移動体に加える推進力ｕから、状態変数である移動体の移動距離ｘを推測する位置ソフトセンサ装置を作ることができる。
【００８１】
式２２に示す内部関数ｇ（ｘ）の状態変数ｘによる偏微分∂ｇ（ｘ）／∂ｘは、以下の式２３で表される。
【数２３】
0006458767.tif 000024
【００８２】
実施の形態１のソフトセンサ装置を位置圧力ソフトセンサ装置として構成する場合には、図６に示す第１コア１００の演算器１０１に、式２１の関数ｆ（ｘ，ｖ，ｕ）を実装すればよい。また、第２コア１１０の演算器１１１に、式２３の偏微分∂ｇ（ｘ）／∂ｘと式２１の関数ｆ（ｘ，ｖ，ｕ）との積で表される関数∂ｇ（ｘ）／∂ｘ＊ｆ（ｘ，ｖ，ｕ）を実装すればよい。
【００８３】
実施の形態２のソフトセンサ装置を位置圧力ソフトセンサ装置として構成する場合には、図９に示す第１コア２００の演算器２０１に、式２１の関数ｆ（ｘ，ｖ，ｕ）を実装すればよい。また、第２コア２１０の演算器２１１に、式２３の偏微分∂ｇ（ｘ）／∂ｘを実装すればよい。
【００８４】
５．その他
ところで、本発明は上述の実施の形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。例えば、各実施の形態において、第１の演算装置で行う演算を複数のコアに分散させてもよい。実施の形態１を例に挙げるならば、演算器１０１と積分器１０２とを別々のコアに実装してもよい。
【符号の説明】
【００８５】
２  コントローラ
４  制御対象
１０  ソフトセンサ装置
１００，１１０，２００，２１０，３００，３１０１〜３１０ｎ，４１０１〜４１０ｎ  コア
１０１，１１１，２０１，２１１，３０１，３１１１〜３１１ｎ，４１１１〜４１１ｎ  演算器
１０２，１１２，２０２，２１３，３０２，３１２１〜３１２ｎ，４０２，４１３１〜４１３ｎ  積分器
２１２，４１２１〜４１２ｎ  乗算器
【図１】
0006458767.tif 000030
【図２】
0006458767.tif 000031
【図３】
0006458767.tif 000032
【図４】
0006458767.tif 000033
【図５】
0006458767.tif 000034
【図６】
0006458767.tif 000035
【図７】
0006458767.tif 000036
【図８】
0006458767.tif 000037
【図９】
0006458767.tif 000038
【図１０】
0006458767.tif 000039
【図１１】
0006458767.tif 000040
【図１２】
0006458767.tif 000041
【図１３】
0006458767.tif 000042
【図１４】
0006458767.tif 000043