以下、添付図面を参照して、本発明の実施形態によるエンジンの試験方法及び試験装置について説明する。
<エンジンの構成>
まず、図1及び図2を参照して、本発明の実施形態によるエンジンの試験方法及び試験装置が適用されるエンジンの具体例について説明する。なお、図1及び図2に示すエンジンは、あくまで本発明が適用されるエンジンの一例であり、図1及び図2に示すエンジンに本発明を適用することに限定はされない。
図1は、本発明の実施形態によるエンジンの構成を例示する図である。図2は、本発明の実施形態によるエンジンの制御系統を示すブロック図である。
図1に示すエンジン1は、走行用の動力源として車両に搭載され、ディーゼル燃焼(圧縮自着火)を行うディーゼルエンジンである。具体的には、このエンジン1は、複数の気筒2を有し、軽油を主成分とする燃料の供給を受けて駆動されるエンジン本体11と、エンジン本体11に燃焼用の空気を導入するための吸気通路30と、エンジン本体11で生成された排気ガスを排出するための排気通路40と、排気通路40を通過する排気ガスの一部を吸気通路30に還流するためのEGR装置50と、排気通路40を通過する排気ガスにより駆動されるターボ過給機60と、を有する。
吸気通路30には、上流側から順に、エアクリーナ31と、ターボ過給機60のコンプレッサ61a、62aと、スロットル弁36と、インタークーラ35と、サージタンク37とが設けられている。サージタンク37よりも下流側には、各気筒2とそれぞれ個別に連通する独立通路が設けられており、サージタンク37内のガスはこれら独立通路を通ってそれぞれ気筒2に分配される。
排気通路40には、上流側から順に、ターボ過給機60のタービン62b、61b、排気浄化装置41が設けられている。
ターボ過給機60は、排気エネルギーが低い低回転域から高回転域まで全域で効率よく高過給を得られる2段過給システムとして構成されている。即ち、ターボ過給機60は、高回転域において多量の空気を過給するための大型ターボチャージャー61と、低い排気エネルギーでも効率よく過給を行える小型ターボチャージャー62とを備えており、エンジン1の運転状態(エンジン回転数及び負荷)に応じて大型ターボチャージャー61と小型ターボチャージャー62による過給を切り替える。このターボ過給機60のタービン61b、62bが、排気通路40を流れる排気ガスのエネルギーを受けて回転し、これに連動してコンプレッサ61a、62aが回転することにより、吸気通路30を流通する空気を圧縮(過給)する。
インタークーラ35は、コンプレッサ61a、62aにより圧縮された空気を冷却するためのものである。
スロットル弁36は、吸気通路30を開閉するものである。ただし、本実施形態では、エンジン1の運転中は基本的には全開若しくはこれに近い高開度に維持されており、エンジン1の停止時等の必要時にのみ閉弁されて吸気通路30を遮断する。
排気浄化装置41は、排気ガス中の有害成分を浄化するためのものである。本実施形態では、この排気浄化装置41には、排気ガス中のCO及びHCを酸化する酸化触媒41aと、排気ガス中のスート(煤)を捕集するDPF41bとが含まれる。
EGR装置50は、排気ガスを吸気側に還流するためのものである。EGR装置50は、排気通路40におけるタービン62bよりも上流側の部分と、吸気通路30のうちインタークーラ35よりも下流側の部分とを接続するEGR通路50aと、このEGR通路50aを開閉するEGR弁50bとを備えており、排気通路40に排出された比較的高圧の排気ガス(高圧EGRガス)を吸気側に還流させる。
エンジン本体11は、上下方向に延びるシリンダ(気筒)2が内部に形成されたシリンダブロック3と、シリンダに往復運動(上下動)可能に収容されたピストン4と、ピストン4の冠面と対向する側からシリンダの端面(上面)を覆うように設けられたシリンダヘッド5と、潤滑油を貯留するためにシリンダブロック3の下側に配設されたオイルパン6と、を有している。
ピストン4は、エンジン本体11の出力軸であるクランクシャフト7とコンロッド(コネクティングロッド)8を介して連結されている。また、ピストン4の上方には燃焼室9が形成されており、この燃焼室9では、燃料供給装置としてのインジェクタ20から噴射された燃料が空気と混合されつつ拡散燃焼する。そして、当該燃焼に伴う膨張エネルギーにより、ピストン4が往復運動して、クランクシャフト7が中心軸回りに回転するようになっている。また、ピストン4には、コンロッド8の伸縮共振を抑制する動吸振器が設けられている。この動吸振器については後述する。
ここで、エンジン本体11の幾何学的圧縮比、つまり、ピストン4が下死点にあるときの燃焼室容積とピストン4が上死点にあるときの燃焼室容積との比は、12以上15以下(例えば14)に設定されている。この12以上15以下という幾何学的圧縮比は、ディーゼルエンジンとしてはかなり低い値である。これは、燃焼温度の抑制によるエミッション性能や熱効率の向上を狙ってのことである。
シリンダヘッド5には、吸気通路30から供給される空気を燃焼室9に導入するための吸気ポート16と、燃焼室9で生成された排気ガスを排気通路40に導入するための排気ポート17と、吸気ポート16の燃焼室9側の開口を開閉する吸気弁18と、排気ポート17の燃焼室9側の開口を開閉する排気弁19とが設けられている。吸気弁18は、可変動弁機構である吸気S-VT(Sequential Valve Timing)23(図2)によって、所定のタイミングで開閉し、排気弁19は、可変動弁機構である排気S-VT24(図2)によって、所定のタイミングで開閉する。吸気S-VT23及び排気S-VT24は、それぞれ、吸気弁18及び排気弁19の開弁時期及び閉弁時期を連続的に変化させることができる。
また、シリンダヘッド5には、燃焼室9に燃料を噴射するインジェクタ20が取り付けられている。このインジェクタ20は、そのピストン4側の先端部が、ピストン4の冠面に設けられた凹部としてのキャビティ(不図示)の中心部を臨むような姿勢で取り付けられている。インジェクタ20は、燃料流路を介してコモンレール側の蓄圧室(不図示)と接続されている。蓄圧室内には、燃料ポンプ(不図示)により加圧された高圧の燃料が貯蔵されており、インジェクタ20は、この蓄圧室から燃料の供給を受けて、燃焼室9内に燃焼を噴射する。燃料ポンプと蓄圧室との間には、蓄圧室内の圧力すなわちインジェクタ20から噴射される燃料の圧力である噴射圧を調整するための燃圧レギュレータ(不図示)が設けられている。
次に、図2に示すように、本実施形態によるエンジン1は、PCM(Power-train Control Module)10によって総括的に制御される。PCM10は、周知のマイクロコンピュータをベースとするコントローラであって、プログラムを実行する中央演算処理装置(Central Processing Unit:CPU)としてのマイクロプロセッサと、例えばRAM(Random Access Memory)やROM(Read Only Memory)により構成されてプログラム及びデータを格納するメモリと、電気信号の入出力をする入出力バス等を備えている。
PCM10には、図1及び図2に示すような各種センサSN1~SN10が電気的に接続されている。センサSN1~SN10は、検知信号をPCM10に出力する。センサSN1~SN10は以下の通りです。
シリンダブロック3には、クランクシャフト7の回転角度(クランク角)及び回転速度を検出するクランク角センサSN1が設けられている。このクランク角センサSN1は、クランクシャフト7と一体に回転するクランクプレート(不図示)の回転に応じてパルス信号を出力するものであり、このパルス信号に基づいて、クランクシャフト7の回転角度及び回転速度(つまりエンジン回転数)が特定されるようになっている。
吸気通路30のうちエアクリーナ31付近(エアクリーナ31とコンプレッサ61aとの間の部分)には、エアクリーナ31を通過して各気筒2に吸入される空気量(新気量)を検出するエアフロセンサSN2が設けられている。
サージタンク37には、当該サージタンク37内のガス、つまり各気筒2に吸入されるガスの温度を検出するインマニ温度センサSN3が設けられている。
吸気通路30のうちインタークーラ35よりも下流側の部分には、この部分を通過する空気ひいては気筒2に吸入される吸気の圧力を検出するインマニ圧力センサSN4が設けられている。
エンジン本体11には、当該エンジン本体11を冷却する冷却水の温度を検出する水温センサSN5が設けられている。また、大気圧を検出する大気圧センサSN6が設けられている。
排気系においては、ターボ過給機60のタービン61b、62bの上流側の排気通路40上には、排気温度を検出する排気温度センサSN7が設けられ、排気浄化装置41の直下流側の排気通路40上には、酸素濃度を検出するリニアO2センサSN8が設けられている。
更に、アクセルペダル(不図示)の操作量に対応したアクセル開度を検知するアクセル開度センサSN9、及び車両の速度(車速)を検知する車速センサSN10が設けられている。
PCM10は、上記した各種センサからの入力信号に基づいて種々の判定や演算等を実行しつつ、エンジン1の各部を制御する。具体的には、PCM10は、主に、インジェクタ20、吸気S-VT23、排気S-VT24、EGR弁50bを制御する。例えば、PCM10は、ディーゼル燃焼(圧縮自着火)を実現すべく、圧縮行程中に多段噴射(複数回に分割して燃料を噴射すること)を実行するようにインジェクタ20を制御する。また、例えば、PCM10は、吸気弁18及び排気弁19のバルブタイミングが内部EGRを行うためのタイミングになるように、つまり吸気弁18及び排気弁19の双方が排気上死点を跨いで開弁されるバルブオーバーラップ期間が十分に形成されるようなタイミングになるように、吸気S-VT23及び排気S-VT24を制御する。また、例えば、PCM10は、燃焼室9内の全体の空燃比が目標空燃比となるように、EGR弁50bの開度を制御する。
<エンジンの試験方法及び試験装置>
次に、本発明の実施形態によるエンジンの試験方法及び試験装置について具体的に説明する。エンジン1の試験においては、多数の制御対象の制御量における膨大な組み合わせを用いて、適切な燃焼を実現するためのエンジン1のキャリブレーション(適合)を行う必要があり、エンジン1の試験に要する時間が莫大になる傾向にある。したがって、本発明の実施形態によるエンジンの試験方法及び試験装置では、このような制御対象が非常に多く且つ適切な燃焼を実現可能な範囲が非常に狭いエンジン1であっても、試験の精度を確保しつつ、試験に要する時間を適切に短縮することを図っている。
特に、本実施形態によるエンジン1の試験方法では、試験用プログラムをコンピュータ(詳細は後述する)において実行して、エンジン1を種々の条件にて運転させて、このときに各種センサから取得されたデータ(例えば筒内圧や筒内温度など)を入力として用いる。そして、この入力データを信号処理して、エンジン1の所定量以上のNOx発生に関する境界判定などを行って、所望のEGR量や、吸気弁18の所望の開閉タイミングや、排気弁19の所望の開閉タイミングなどを決定する。そして、本実施形態によるエンジン1の試験方法では、こうして決定されたEGR量や吸排気弁18、19の開閉タイミングなどに基づき、ディーゼル(圧縮自着火)燃焼を実現する上で最適なパラメータ、例えば燃料噴射時期や燃料噴射間隔などを出力する。このような出力は、コンピュータからPCM10に提供されて、エンジン1にディーゼル燃焼を行わせるときのキャリブレーションデータ(言い換えるとマップデータ)としてPCM10に記憶される。
ここで、キャリブレーション(適合)とは、制約を満足しながら、目標を最適にする自由度の組み合わせを求めること、つまり最適設計に相当する。特に、エンジン1のキャリブレーションとは、制御対象と制御の構造(アルゴリズム)が決まった状態で、最適な制御パラメータを決定することである。上述したように、エンジン1においてディーゼル(圧縮自着火)燃焼を行うに当たっては、適切な燃焼を実現可能なエンジン1の運転領域が非常に狭く、また、制御対象が非常に多い、つまり制御パラメータの次元数が大きい。制御パラメータの次元数が大きいと、制御パラメータが所定の境界内となる確率が非常に低くなる。例えば、1辺4のn次元超立方体と半径1の超球との体積比は、n=2の場合(平面)には約「0.2:1」となり、n=3の場合(立体)には約「0.065:1」となり、n=10の場合には約「0.0000024:1」となる。この場合、100個のデータを超球内から取得するために必要な全体測定点数は、n=2の場合には500個で済むが、n=10の場合には4000万個となる。つまり、制御パラメータの次元数が大きいと多くのデータが必要となるのである。
このように制御パラメータの次元数が大きいと多くのデータが必要となるので、限られた時間内でできるだけ多くの試験をすることが望ましい。したがって、本実施形態では、数燃焼サイクルごと(例えば1~3サイクルごと)に試験を行うことを考えた。従来では、数百燃焼サイクルごと(例えば300サイクルごと)に各種制御パラメータを変更して試験が行われるが、本実施形態では、数燃焼サイクルごとに各種制御パラメータを変更して試験を行うようにするので、約1000倍程度の効率化を図ることができる、つまり同じ時間で約1000倍のポイントの計測を行うことができる。従来の試験では、数百燃焼サイクルにおいて各種制御パラメータを変更せずに、安定状態になるまで待機して、この数百の燃焼サイクルにおいて得られたデータを平均化処理していた。これに対して、本実施形態では、安定状態になるまで待たずして、数燃焼サイクルごとに各種制御パラメータを変更して、データの平均化処理を行わずに、全ての燃焼サイクルにおいて得られたデータを個別に処理するようにする。
なお、従来では、数百燃焼サイクル(例えば300サイクル)において得られたデータを平均化処理していたが、これはデータのばらつきを考慮するためである。一方で、本実施形態では、数燃焼サイクルごと(例えば1~3サイクルごと)のデータを用い、平均化処理を行わないため、ばらついたデータを用いることとなるが、エンジン1の燃焼の傾向については適切に把握することができる。本実施形態によれば、数燃焼サイクルごとにデータを収集するので、データを細かい計測点にて収集でき、広範囲を細かい計測点にて把握することができる。そのため、各計測点でばらつきがあったとしても、全体で見ると傾向を適切に把握できるのである。本実施形態では、このようにして把握された全体的な傾向に基づき、より詳細にデータを計測すべき範囲を特定して、その範囲をピンポイントで長いサイクルにてデータを得ることができる。その結果、より正確なデータを得ることができる。
次に、本実施形態では、上述したような数燃焼サイクルごとの計測を実現するために、図3に示すようなモデル構造を採用する。図3は、本発明の実施形態によるエンジン1の試験において用いるモデル構造の説明図である。
図3に示すように、本実施形態では、第1パラメータ群及び当該第1のパラメータ群よりもエンジン1における応答が速い第2パラメータ群を、それぞれ第1モデル及び第2モデルにおいて分けて処理するようになった2段のモデル構造を採用する。第1パラメータ群は、エンジン1の充填効率や、外部EGRガスのEGR率や、吸気弁18の開閉タイミングや、排気弁19の開閉タイミングや、燃料の圧力(燃圧)や、エンジン回転数であり、これらは応答が比較的遅いパラメータ(つまりエンジン1においてパラメータの値の変更指示を出してから実際の値が変化するまでの時間が長いパラメータ)である。一方、第2パラメータ群は、燃料噴射量や燃料噴射時期などであり、これらは応答が比較的速いパラメータ(つまりエンジン1においてパラメータの値の変更指示を出してから実際の値が変化するまでの時間が短いパラメータ)である。なお、燃料噴射を2分割して行う場合、つまり2分割噴射を行う場合には、2分割噴射のそれぞれについて燃料噴射量及び燃料噴射時期が規定され、また、燃料噴射を3分割して行う場合、つまり3分割噴射を行う場合には、3分割噴射のそれぞれについて燃料噴射量及び燃料噴射時期が規定される。
第1モデルは、広い範囲を表すグローバルモデルであり、第2モデルは、第1モデルよりも狭い範囲を表すローカルモデルである。具体的には、まず、第1モデルでは、燃料噴射量や燃料噴射時期などを固定した状態で、充填効率、EGR率、吸排気弁18、19の開閉タイミング、燃圧、エンジン回転数などをコンピュータにより制御して、エンジン1を運転したときの結果に基づき、エンジン1の運転条件(ガス空燃比G/Fや空気量など)が決められる。そして、第2モデルでは、そのように決められた運転条件の下で、燃料噴射量、燃料噴射時期などをコンピュータにより制御して、エンジン1を運転したときの結果を得る。これにより、エンジン1の排気ガスに含まれるNOx量や、エンジン1の燃費率などが得られる。このような2段のモデル構造を用いることで、数燃焼サイクルごとの計測を適切に実現できるようになる。
次に、図4及び図5を参照して、本発明の実施形態によるエンジンの試験方法を実行する具体的な試験装置について説明する。図4は、本発明の実施形態によるエンジンの試験装置の概略構成を概念的に示すブロック図であり、図5は、本発明の実施形態によるエンジンの試験装置のハード構成を概略的に示すブロック図である。
図4に示すように、エンジンの試験装置300は、主に、高速処理が可能なHPC(High Performance Computer)100と、PCM10からのデータ(センサSN1~SN10からのデータも含む)や、センサSN1~SN10以外のエンジン1に設けられた各種センサ80からのデータ(つまりPCM10を介さないセンサからのアナログ信号やパルス信号であり、例えば燃焼圧など)を取得し、取得したデータをHPC100が処理可能なデータに変換するDAQ(Data AcQuistion unit)200と、を有する。DAQ200は、入力された信号をAD変換してHPC100に出力したり、HPC100及び当該DAQ200で処理されたデータをPCM10に出力したりする。なお、HPC100は、本発明における「コンピュータ」の一例に相当し、DAQ200は、本発明における「データ取得装置」の一例に相当する。
図5に示すように、HPC100は、ハード構成的には、主に、互いに相互接続された複数のCPU(Central Processing Unit)100a(1つの例では10コアのCPU4つと61コアのコプロセッサ2つを含む)、及び、これら複数のCPU100aに接続され、DAQ200と通信するための通信モジュール100cを有する。また、DAQ200は、ハード構成的には、主に、少なくとも1つのCPU200aと、このCPU200aに接続されたアクセラレータFPGA(Field Programmable Gate Array)200bと、HPC100と通信するための通信モジュール200cと、PCM10及び各種センサ80との間でデータの入出力を行う入出力モジュール200dと、を有する。
図4に戻ると、HPC100は、スクリプト形式により規定され、スクリプト言語(換言するとインタープリンタで、第1プログラミング言語に相当する)を用いて処理を行う第1処理部110と、DLL(Dynamic Link Library)実行形式により規定され、C言語をコンパイルしたマシン語(第1プログラミング言語よりも処理速度が速い第2プログラミング言語に相当する)を用いて処理を行う第2処理部120と、これら第1処理部110及び第2処理部120がデータを共有するための共有メモリ130と、を有する。
具体的には、第1処理部110は、スクリプト言語により記述された試験用プログラム、典型的にはMATLAB(登録商標)などの数値解析ソフトウェアにより作成された試験用プログラムを実行するためのモデル111と、モデル111の実行のために確保されたメモリであるワークスペース112と、第1処理部110と共有メモリ130との間において、及び第1処理部110内において、データの読み書きを管理するR/Wスケジューラ113と、を有する。
また、第2処理部120は、C言語により記述された試験用プログラム、典型的にはLabVIEW(登録商標)などにより作成された試験用プログラムを実行するためのモデル121と、第2処理部120とDAQ200との間において、及び第2処理部120内において、データの入出力を管理するI/Oスケジューラ122と、I/Oスケジューラ122及び共有メモリ130からのデータを一時的に記憶するデータバッファ123と、データバッファ123のデータを記憶するハードディスク124と、を有する。
一方、DAQ200は、HDL(hardware description language)形式により規定され、上記したアクセラレータFPGA200bにより実行されるモデル201と、DLL実行形式により規定され、上記したCPU200aにより実行されるモデル202と、PCM10及び各種センサ80とDAQ200との間において、及びDAQ200内において、データの入出力を行うI/O203と、モデル201、202、I/O203及びHPC100(具体的には第2処理部120のI/Oスケジューラ122)からのデータを一時的に記憶するI/Oバッファ204と、を有する。DAQ200のモデル201は、アクセラレータFPGA200bにより、例えばPCM10及び各種センサ80からのデータに対してフィルタリング処理(ローパスフィルタ、ハイパスフィルタ、バンドパスフィルタの少なくともいずれか)を行う。一方、DAQ200のモデル202は、HPC100の第2処理部120のモデル121と同様に、C言語により記述された試験用プログラム、典型的にはLabVIEW(登録商標)などにより作成された試験用プログラムを実行する。
次に、図4に示すエンジンの試験装置300によるエンジンの試験方法について具体的に説明する。まず、本実施形態では、HPC100の第1処理部110が、当該第1処理部110において設定された、エンジン1を種々の条件にて試験するための試験用プログラムを実行して、エンジン1を運転させて、このときに得られた試験結果を取得する。こうして取得された試験結果は、HPC100のハードディスク124に記憶される。ここで、試験用プログラムは、図3に示したように、エンジン1の各種制御パラメータを制御して、エンジン1を運転させることで、所望の結果を得るためのプログラムである。また、第1処理部110で実行される試験用プログラムは、第1プログラミング言語としてのスクリプト言語(換言するとインタープリンタ)により記述されたプログラムであり、例えばMATLAB(登録商標)などのソフトウェアにより作成される。特に、この試験用プログラムは、エンジン1の燃焼制御に関する技術者によって作成されるものである。エンジン1の技術者は、基本的には、特殊なプログラミング技術を有しないので、C言語を用いた試験用プログラムではなく、特殊なプログラミング技術を有しなくても容易に利用できるMATLAB(登録商標)などのソフトウェアを用いて、試験用プログラムを作成する。例えば、エンジン1の技術者は、MATLAB(登録商標)を用いて、エンジン1の各種制御パラメータの動かし方(各種制御パラメータを変化させる量や方向など)を規定した試験用プログラムを作成する。こうしてエンジン1の技術者により作成された試験用プログラムは、HPC100の第1処理部110において実行される。
そして、本実施形態では、HPC100の第1処理部110が、試験用プログラムを繰り返し実行して、エンジン1を運転させたときに取得されたデータに基づき、試験用プログラムを更新する。例えば、第1処理部110は、エンジン1の制御パラメータを変化させながら、エンジン1のデータを取得することで、取得されたデータの内容に基づき、試験用プログラムにおいて或る制御パラメータの動かし方を規定した部分(数式など)を更新する。1つの例では、第1処理部110は、取得されたエンジン1のデータに応じて、或る制御パラメータの動かし方を規定した数式中の係数を変更したり、1次式で表された数式を2次式に変更したりする。
そして、本実施形態では、第1処理部110は、このように試験用プログラムを更新していったときに、試験用プログラムにおいて更新が不要となった更新不要部分を抽出する。例えば、第1処理部110は、エンジン1の或る制御パラメータを変化させていったときに、エンジン1において所定量以上のNOxが発生した場合に当該制御パラメータの変化を停止して、当該制御パラメータに関する試験用プログラムの更新が不要であると判断する。1つの例では、当該制御パラメータの動かし方を規定した数式の更新が不要であると判断する。このときに、第1処理部110は、所定量以上のNOxが発生したときに用いていた制御パラメータにより、当該制御パラメータの変化を止める条件(適用可能な限界値)を決め、つまり当該制御パラメータの適用可能な範囲を決め、そのような制御パラメータの適用可能な範囲や当該制御パラメータの動かし方を規定した数式などを、試験用プログラムの更新不要部分として用いる。このような処理により、第1処理部110において、試験用プログラムの内容が固まる、換言すると精度が高まった試験用プログラムが完成する。なお、本実施形態では、上述したように数燃焼サイクルごとにエンジン1の計測を行うため、エンジン1の所定量以上のNOxが発生してから数燃焼サイクル経過時に制御パラメータの異常側への変化を速やかに止めることができるので、エンジン1から排出されるガス中に含まれるNOxが所定量以上となってしまう期間を最小限にとどめながら、NOx低減に必要な制御パラメータを正確に取得することができる。
そして、本実施形態では、上記のようにして得られた試験用プログラムの更新不要部分を、HPC100の第2処理部120により実行させるべく、この試験用プログラムの更新不要部分を第1処理部110から第2処理部120に移行させる。この場合、第1処理部110が、試験用プログラムの更新不要部分のプログラミング言語を、第1プログラミング言語としてのスクリプト言語(換言するとインタープリンタ)から、第2プログラミング言語としてのC言語(マシン語)に変換する。例えば、第1処理部110は、MATLAB(登録商標)などのソフトウェアが有する機能を利用して、スクリプト形式にて規定された試験用プログラムの更新不要部分をDLL形式に変換し、つまりDLLファイルを作成し、このDLLファイルを第2処理部120に移行させる。そして、上記の第1処理部110と同様に、第2処理部120は、DLLファイルの試験用プログラムを実行して、エンジン1を運転させて、このときに得られた試験結果を取得する。
上述したように、試験用プログラムを作成するエンジン1の技術者は、特殊なプログラミング技術を有しないので、最初にMATLAB(登録商標)などの比較的処理が遅いスクリプト言語を用いて試験用プログラムを作成することとなる、つまり基本的には比較的処理が速いC言語を用いて試験用プログラムを作成しない。しかしながら、本実施形態では、このようにスクリプト言語を用いて作成された当初の試験用プログラムが更新により固まると、その固まった部分(更新不要部分)をC言語(マシン語)により規定された第2処理部120へと適宜移行させる。これにより、本実施形態によれば、試験用プログラム全体をスクリプト言語のみにより記述して第1処理部110においてのみ実行させる場合よりも、試験用プログラムの更新不要部分についてはマシン語により記述して第2処理部120において適宜実行させることで、試験用プログラムの処理速度を効果的に向上させることができる。具体的には、エンジン1の技術者がMATLAB(登録商標)などのスクリプト言語を用いて試験用プログラムを最初に作成するという現場の状況を変えることなく、試験用プログラムの処理速度を効果的に向上させることができる。
また、本実施形態では、第2処理部120は、試験用プログラムを実行する場合に、この試験用プログラムを複数のCPU100a(図5参照)において並列処理(並列計算)させるようにする。具体的には、第1処理部110から第2処理部120への試験用プログラムの更新不要部分の移行に当たって、第1処理部110(第2処理部120でもよい)は、複数のCPU100aにおいて並列処理が実行されるように当該更新不要部分のプログラムを作成し直し(C言語によるプログラム言語では、複数のCPU100aにおいて並列処理が実行されるようにプログラムを構築することができる)、第2処理部120は、そのように作成されたプログラムを実行することで、複数のCPU100aにおいて並列処理を実行させる。具体的には、第2処理部120は、エンジン1の各気筒ごとにおける演算を、複数のCPU100aに含まれる複数のコアそれぞれに分配して、これらの演算を並列計算させる。これにより、試験用プログラムの処理速度を更に向上させることができる。
なお、上記した試験用プログラムの更新不要部分に対する第1処理部110による処理速度が所定条件を満たす場合には、例えば第1処理部110による処理が数燃焼サイクル(1~3サイクル)以内に終わる場合には、当該更新不要部分を第2処理部120に移行させずに第1処理部110に残しておくのがよい。これにより、第2処理部120に移行させても効果が小さいプログラムの移行を抑制して、プログラムの移行時におけるプログラム言語の変換に伴う不具合やこの不具合を解消するための処理(手間)などの発生を適切に抑制することができる。また、応答が遅い制御パラメータ(例えば図3に示した第1パラメータ群のいずれか)に関する試験用プログラムの部分も、当該部分が更新不要部分になったとしても、第2処理部120に移行させずに第1処理部110に残しておくのがよい。応答が遅い制御パラメータに関する試験用プログラムについては第2処理部120で処理を行ったとしても、処理速度をほとんど改善できないからである、つまり第2処理部120に移行させても効果が小さいからである。
また、本実施形態では、上記のように試験用プログラムの一部をHPC100の第2処理部120に移行させた後も、試験用プログラムの更なる高速化が必要な場合には、試験用プログラムの一部をHPC100の第2処理部120からDAQ200に移行させてもよい、特にDLL実行形式により規定されたDAQ200のCPU200aに移行させてもよい。この場合、HPC100の第1処理部110が、例えばMATLAB(登録商標)などのソフトウェアが有する機能を利用して、試験用プログラムの一部をDLL形式に変換し、つまりDLLファイルを作成し、このDLLファイルをDAQ200のCPU200aに移行させる。そして、DAQ200のCPU200aは、DLLファイルの試験用プログラムを実行して、エンジン1を運転させて、このときに得られた試験結果を取得する。DAQ200は、エンジン1(具体的にはPCM10や各種センサ80)から直接データを取得するので、つまりエンジン1に物理的に近いので、通信に要する時間がHPC100よりも短くなる。したがって、試験用プログラムの一部をDAQ200に移行させて実行させることで、試験用プログラムの処理速度を更に効果的に向上させることができる。
また、本実施形態では、上記のように試験用プログラムの一部をDAQ200のCPU200aに移行させた後も、試験用プログラムの更なる高速化が必要な場合には、試験用プログラムの一部を、DAQ200のCPU200aから、HDL形式により規定されたDAQ200のアクセラレータFPGA200bに移行させてもよい。この場合、DAQ200のアクセラレータFPGA200bが、試験用プログラムの一部をHDL形式に変換する、つまりHDLファイルを作成する。そして、アクセラレータFPGA200bは、HDLファイルの試験用プログラムを実行して、エンジン1を運転させて、このときに得られた試験結果を取得する。このように試験用プログラムの一部をDAQ200においてCPU200aからアクセラレータFPGA200bに移行させて実行させることで、試験用プログラムの処理速度を更に効果的に向上させることができる。
なお、試験用プログラムの一部をHPC100の第2処理部120からDAQ200のCPU200aに移行させる必要がない場合、及び試験用プログラムの一部をDAQ200のCPU200aからDAQ200のアクセラレータFPGA200bに移行させる必要がない場合には、つまり試験用プログラムの一部を移行させてもほとんど効果がない場合には、このような試験用プログラムの一部の移行を行わないようにすることが望ましい。特に、試験用プログラムをHPC100からDAQ200に移行させるに当たっては、演算速度よりも応答性が求められるプログラムをDAQ200に移行させるのが良く、応答性よりも演算速度が求められるプログラムについてはDAQ200に移行させずにHPC100に残しておくのが良い。これは、DAQ200は、HPC100よりもエンジン1側との通信に要する時間が短くなるので、応答性を改善できる一方で、HPC100は、複数のCPU100aなどを有しているので、DAQ200よりも演算能力が高いからである。1つの例では、複雑な異常判断を行うプログラムなどについては、DAQ200に移行させずにHPC100に残しておき、データをフィルタリングしてピークを求めるプログラムなどについては、DAQ200に移行させるのがよい。
次に、図6を参照して、本発明の実施形態によるエンジンの試験方法に関する具体的な処理について説明する。図6は、本発明の実施形態によるエンジンの試験方法を示すフローチャートである。このフローチャートは、エンジンの試験装置300(図4参照)により所定の周期で繰り返し実行される。
まず、ステップS1では、HPC100の第1処理部110が、試験用プログラムを実行する。具体的には、第1処理部110は、エンジン1の技術者により作成された、MATLAB(登録商標)などのスクリプト言語により規定された試験用プログラムを実行する。
次いで、ステップS2では、HPC100の第1処理部110は、試験用プログラムを実行してエンジン1を運転させたときのデータを取得する。具体的には、第1処理部110は、DAQ200を介して、PCM10からのデータ(センサSN1~SN10からのデータも含む)や、センサSN1~SN10以外のエンジン1に設けられた各種センサ80からのデータ(例えば燃焼圧など)を取得する。
次いで、ステップS3では、HPC100の第1処理部110は、ステップS2で取得されたデータに基づき、試験用プログラムを更新する。例えば、第1処理部110は、取得されたデータの内容に基づき、試験用プログラムにおいて或る制御パラメータの動かし方を規定した部分(数式など)を更新する。
次いで、ステップS4では、HPC100の第1処理部110は、試験用プログラムの更新が不要であるか否かを判定する。具体的には、第1処理部110は、エンジン1の制御パラメータを変化させていったときに、例えばエンジン1において所定量以上のNOxが発生した場合に、試験用プログラムの更新が不要であると判定し(ステップS4:Yes)、ステップS5に進む。この場合、第1処理部110は、所定量以上のNOxが発生したときに用いていた制御パラメータにより、制御パラメータの適用可能な範囲を決定し、そのような制御パラメータの適用可能な範囲や当該制御パラメータの動かし方を規定した数式などを、試験用プログラムの更新不要部分として用いる。一方で、第1処理部110は、ステップS4において、試験用プログラムの更新が必要と判定した場合(ステップS4:No)、ステップS3に戻る。
次いで、ステップS5では、HPC100の第1処理部110は、試験用プログラムの高速化が必要か否かを判定する。具体的には、第1処理部110は、上記した試験用プログラムの更新不要部分に対する当該第1処理部110による処理速度が所定条件を満たさない場合、例えば第1処理部110による処理が数燃焼サイクル(1~3サイクル)以内に終わらない場合には、試験用プログラムの高速化が必要であると判定し(ステップS5:Yes)、ステップS6に進む。これに対して、第1処理部110は、試験用プログラムの更新不要部分に対する当該第1処理部110による処理速度が所定条件を満たす場合、例えば第1処理部110による処理が数燃焼サイクル以内に終わる場合には、試験用プログラムの高速化が不要であると判定し(ステップS5:No)、本フローチャートに示す一連のルーチンを抜ける。
次いで、ステップS6では、HPC100の第1処理部110は、試験用プログラムの更新不要部分のプログラミング言語を、第1プログラミング言語としてのスクリプト言語(換言するとインタープリンタ)から、第2プログラミング言語としてのC言語(マシン語)に変換する。例えば、第1処理部110は、MATLAB(登録商標)などのソフトウェアが有する機能を利用して、スクリプト形式にて規定された試験用プログラムの更新不要部分をDLL形式に変換し、つまりDLLファイルを作成し、このDLLファイルを第2処理部120に移行させる。
次いで、ステップS7では、HPC100の第2処理部120は、ステップS6で作成及び移行されたDLLファイルの試験用プログラムを実行する。そして、ステップS8では、第2処理部120は、試験用プログラムを実行してエンジン1を運転させたときのデータを取得する。具体的には、第2処理部120は、DAQ200を介して、PCM10からのデータや各種センサ80からのデータを取得する。
次いで、ステップS9では、HPC100の第2処理部120は、上記のステップS5と同様の手順にて、試験用プログラムの更なる高速化が必要か否かを判定する。その結果、第2処理部120は、試験用プログラムの高速化が必要であると判定した場合(ステップS9:Yes)、ステップS10に進む。これに対して、第2処理部120は、試験用プログラムの高速化が必要でないと判定した場合(ステップS9:No)、本フローチャートに示す一連のルーチンを抜ける。
次いで、ステップS10では、HPC100の第2処理部120は、試験用プログラムを高速化させることによる効果があるか否か、具体的には試験用プログラムを高速化するためにDAQ200に移行させると効果があるか否かを判定する。例えば、第2処理部120は、演算速度よりも応答性が求められる試験用プログラムの部分については、DAQ200に移行させると効果があると判定し、応答性よりも演算速度が求められる試験用プログラムの部分については、DAQ200に移行させても効果がほとんどないと判定する。第2処理部120は、試験用プログラムを高速化させることによる効果があると判定した場合(ステップS10:Yes)、ステップS11に進み、試験用プログラムを高速化させることによる効果がないと判定した場合(ステップS10:No)、本フローチャートに示す一連のルーチンを抜ける。
次いで、ステップS11では、HPC100の第1処理部110は、例えばMATLAB(登録商標)などのソフトウェアが有する機能を利用して、試験用プログラムの一部をDLL形式に変換し、つまりDLLファイルを作成し、このDLLファイルをDAQ200のCPU200aに移行させる。
次いで、ステップS12では、DAQ200のCPU200aは、ステップS11で作成及び移行されたDLLファイルの試験用プログラムを実行する。そして、ステップS13では、DAQ200のCPU200aは、試験用プログラムを実行してエンジン1を運転させたときのデータを取得する。具体的には、CPU200aは、PCM10からのデータや各種センサ80からのデータを取得する。
次いで、ステップS14では、DAQ200のCPU200aは、上記のステップS5、S9と同様の手順にて、試験用プログラムの更なる高速化が必要か否かを判定する。その結果、CPU200aは、試験用プログラムの高速化が必要であると判定した場合(ステップS14:Yes)、ステップS15に進み、試験用プログラムの高速化が必要でないと判定した場合(ステップS14:No)、本フローチャートに示す一連のルーチンを抜ける。
次いで、ステップS15では、DAQ200のCPU200aは、試験用プログラムを高速化させることによる効果があるか否か、具体的には試験用プログラムを高速化するためにアクセラレータFPGA200bに移行させる効果があるか否かを判定する。例えば、CPU200aは、演算速度よりも応答性が求められる試験用プログラムの部分については、アクセラレータFPGA200bに移行させると効果があると判定し、応答性よりも演算速度が求められる試験用プログラムの部分については、アクセラレータFPGA200bに移行させても効果がほとんどないと判定する。CPU200aは、試験用プログラムを高速化させることによる効果があると判定した場合(ステップS15:Yes)、ステップS16に進み、試験用プログラムを高速化させることによる効果がないと判定した場合(ステップS15:No)、本フローチャートに示す一連のルーチンを抜ける。
次いで、ステップS16では、DAQ200のアクセラレータFPGA200bは、試験用プログラムの一部をCPU200aからアクセラレータFPGA200bに移行させるべく、当該試験用プログラムの一部をHDL形式に変換する、つまりHDLファイルを作成する。
次いで、ステップS17では、DAQ200のアクセラレータFPGA200bは、ステップS16で作成及び移行されたHDLファイルの試験用プログラムを実行する。そして、ステップS18では、DAQ200のアクセラレータFPGA200bは、試験用プログラムを実行してエンジン1を運転させたときのデータを取得する。具体的には、アクセラレータFPGA200bは、PCM10からのデータや各種センサ80からのデータを取得する。
<作用及び効果>
次に、本発明の実施形態によるエンジンの試験方法及び試験装置による作用及び効果について説明する。
本実施形態によるエンジンの試験方法は、第1プログラミング言語にて動作する第1処理部110において設定された、エンジン1を種々の条件にて試験するための試験用プログラムを実行して、エンジン1を運転させて、このときに得られた試験結果を取得するステップと、試験用プログラムを第1処理部110により繰り返し実行して、エンジン1を運転させたときに取得された試験結果に基づき、試験用プログラムを更新するステップと、試験用プログラムの更新が不要となった更新不要部分を抽出するステップと、試験用プログラムの更新不要部分を、第1プログラミング言語よりも処理速度が速い第2プログラミング言語にて動作する第2処理部120により実行させるべく、当該更新不要部分を第2処理部120に移行させるステップと、を有する。
このような本実施形態によれば、試験用プログラム全体を処理速度が比較的遅い第1プログラミング言語のみにより記述して第1処理部110においてのみ実行させる場合よりも、試験用プログラムの更新不要部分については処理速度が比較的速い第2プログラミング言語により記述して第2処理部120において実行させることで、試験用プログラムの処理速度を効果的に向上させることができる。具体的には、エンジン1の技術者が比較的扱い易い第1プログラミング言語を用いて試験用プログラムを最初に作成するという現場の状況を変えることなく、試験用プログラムの処理速度を効果的に向上させることができる。
したがって、本実施形態によれば、数燃焼サイクル(例えば1~3サイクル)ごとに各種制御パラメータを変更して試験を行うことができ、エンジン1を種々の条件にて試験するための時間を効果的に短縮することができる。その結果、本実施形態によれば、SPCCI燃焼を行うエンジン1のように、制御対象が非常に多く且つ適切な燃焼を実現可能な範囲が非常に狭いエンジン1であっても、試験の精度を確保しつつ、試験に要する時間を適切に短縮することができる。
また、本実施形態によれば、試験用プログラムの更新不要部分に対する第1処理部110による処理速度が所定条件を満たす場合には、当該更新不要部分を第2処理部120に移行させずに第1処理部110に残す。これにより、第2処理部120に移行させても効果が小さいプログラムの移行を抑制して、プログラムの移行に伴う不具合やこの不具合を解消するための処理(手間)などの発生を適切に抑制することができる。
また、本実施形態によれば、第2処理部120に移行された試験用プログラムの更新不要部分を、DAQ200により実行させるべく、当該更新不要部分をDAQ200に更に移行させる。DAQ200は、エンジン1(具体的にはPCM10や各種センサ80)から直接データを取得するので、つまりエンジン1に物理的に近いので、通信に要する時間がHPC100よりも短くなる。したがって、試験用プログラムの一部をDAQ200に移行させて実行させることで、試験用プログラムの処理速度を更に効果的に向上させることができる。
また、本実施形態によれば、試験用プログラムの更新不要部分を第2処理部120に移行させた後に、当該更新不要部分を第2処理部120により実行させるときに、複数のCPU100aにおいて並列処理させる。これにより、試験用プログラムの処理速度を更に効果的に向上させることができる。
また、本実施形態によれば、試験用プログラムの更新不要部分を第2処理部120に移行させるときに、当該更新不要部分のプログラミング言語を、第1プログラミング言語から第2プログラミング言語に変換するので、この試験用プログラムの更新不要部分を第2処理部120において適切に実行させることができる。