以下、本発明の好適な実施形態について、図面を参照して詳細に説明する。なお、各図において同一又は相当部分には同一符号を付し、重複する説明を省略する。
図1に示されるように、本実施形態に係る内燃機関制御装置1は、車両の内燃機関の制御を行うものである。本実施形態では、内燃機関として4気筒のレシプロエンジンを制御する場合について説明する。内燃機関制御装置1は、装置全体を統括的に制御するECU[Electronic Control Unit]2を備えている。
ECU2は、クランクセンサ3、第1の筒内圧センサ4、第2の筒内圧センサ5、第3の筒内圧センサ6,及び第4の筒内圧センサ7と接続されている。クランクセンサ3は、内燃機関のクランク軸の回転角を検出するセンサである。クランクセンサ3が出力するクランク角信号は、例えば角度10CAで一周期のパルス信号として出力され、ECU2に入力される。
第1の筒内圧センサ4、第2の筒内圧センサ5、第3の筒内圧センサ6,及び第4の筒内圧センサ7は、内燃機関の4つの気筒にそれぞれ設けられ、気筒の筒内圧を検出するセンサである。筒内圧センサ4〜7の出力する筒内圧信号は、ECU2に入力され、所定の検出タイミングでサンプリングされる。筒内圧センサ4〜7は、特許請求の範囲に記載の状態量検出手段として機能し、気筒の筒内圧は特許請求の範囲に記載の内燃機関状態量に相当する。
また、ECU2は、内燃機関の制御に関する演算処理を行うCPU[Central Processing Unit]10を有している。CPU10は、2つのCPUコア11,12を有するデュアルコアプロセッサである。このCPU10には、LPF[Low Pass Filter]によってフィルタリングされた筒内圧センサ4〜7の筒内圧信号とクランクセンサ3のクランク角信号とが入力される。
また、CPU10は、第1のCPUコア11、第2のCPUコア12、第1のRAM[Random Access Memory]13、第2のRAM14、及びROM[Read Only Memory]15を有している。さらに、CPU10は、第1のADC[Analog to Digital Converter]16、第2のADC17、タイマ18、クランクタイマ19、DMAC[Direct Memory Access Controller]20、及び設定切り替え回路21を有している。CPU10内の各構成要素は内部バスを介して互いに接続されている。
第1のCPUコア11は、筒内圧センサ4〜7から入力された筒内圧信号に基づいて、内燃機関の筒内圧制御量を演算するCPS[Cylinder Pressure Sensor]コアである。このような筒内圧制御量には、例えば点火制御に用いられる点火タイミング制御量等が含まれる。第1のCPUコア11は、演算した内燃機関の制御量を第1のCPUコア11自身に付随する第1のRAM13に書き込む。ここで、第1のRAM13が第1のCPUコア11に付随するとは、第1のCPUコア11と第1のRAM13とが専用バスで接続されている状態をいう他、第1のCPUコア11と共通バスのみで接続されている場合であっても第1のCPUコア11が第1のRAM13に対して優先的なアクセスが可能になっている状態等も含む。
第2のCPUコア12は、内燃機関の制御を行う内燃機関制御コアである。第2のCPUコア12は、設定切り替え回路21の設定に応じて、筒内圧センサ4〜7から入力された筒内圧信号に基づき筒内圧制御量を演算する。第2のCPUコア12は、演算した筒内圧制御量を第2のCPUコア12に付随する第2のRAM14に書き込む。第2のCPUコア12は、第1のRAM13又は第2のRAM14に書き込まれた筒内圧制御量に基づいて内燃機関の制御を実行する。第2のCPUコア12及び第1のCPUコア11は、主記憶装置として機能するROM15から各種アプリケーションプログラムをロードすることで各種演算処理や制御を実行する。
また、第2のCPUコア12は、設定切り替え回路21の設定に応じて、筒内圧センサ4〜7から入力された筒内圧信号に基づき筒内圧制御量の簡略演算を実行する。簡略演算とは、通常の演算より演算行程の一部が簡略化された演算時間の短い演算である。簡略演算の実行後、第2のCPUコア12は、第1のRAM13及び第2のRAM14にそれぞれ書き込まれた筒内圧制御量、すなわち第1のCPUコア11の演算した筒内圧制御量と第2のCPUコア12の演算した筒内圧制御量との差分が所定の閾値以下であるか否かを判定する。
第2のCPUコア12は、第1のCPUコア11の演算した筒内圧制御量と第2のCPUコア12の演算した筒内圧制御量との差分が所定の閾値以下であると判定した場合、CPU10に異常はないと判断して内燃機関の制御を続ける。第2のCPUコア12は、第1のCPUコア11の演算した筒内圧制御量と第2のCPUコア12の演算した筒内圧制御量との差分が所定の閾値を超えていると判定した場合、CPU10に異常があると判断して内燃機関の制御を中止する。
第1のADC16は、筒内圧センサ4〜7の各々に対応した4つの筒内圧用入力チャンネルを有している。第1のADC16は、筒内圧センサ4〜7の各々から入力された筒内圧信号のAD[Analog to Digital]変換を行う。第1のADC16は、タイマ18の時間同期又はクランクタイマ19のクランク角同期によりAD変換を行う。クランクタイマ19は、クランクセンサ3のクランク角信号に応じてクランク角同期の処理を行う。第1のADC16は、特許請求の範囲に記載の第1の変換手段として機能する。
第2のADC17は、筒内圧センサ4〜7から出力された筒内圧信号が足し合わされて入力される1つの筒内圧用入力チャンネルを有している。第2のADC17は、タイマ18の時間同期により筒内圧センサ4〜7を足し合わせた筒内圧信号のAD変換を行う。第2のADC17は、特許請求の範囲に記載の第2の変換手段として機能する。
DMAC20は、第1のCPUコア11及び第2のCPUコア12を介さないデータ転送方式であるDMA[Direct Memory Access]を実現する制御ユニットである。DMAC20は、第1のADC16のAD変換した筒内圧信号を第1のADC16から第1のRAM13又は第2のRAM14に直接書き込ませる。また、DMAC20は、第2のADC17のAD変換した筒内圧信号を第2のADC17から第1のRAM13に直接書き込ませる。DMAC20は、特許請求の範囲に記載の書き込み手段として機能する。
設定切り替え回路21は、クランクセンサ3のクランク角信号に基づいて、内燃機関が始動制御、通常制御、及び高回転制御のいずれの制御状態であるかを判定する。設定切り替え回路21は、内燃機関が始動制御時であると判定した場合、始動制御設定処理を行う。設定切り替え回路21は、始動制御設定処理において、第1のADC16がタイマ18の時間同期により筒内圧信号のAD変換を開始すると共に、DMAC20が第1のADC16のAD変換した筒内圧信号を第2のRAM14に書き込ませるように設定を切り替える。
また、設定切り替え回路21は、内燃機関が通常制御時であると判定した場合、通常制御設定処理を行う。設定切り替え回路21は、通常制御設定処理において、第1のADC16がクランクタイマ19のクランク角同期により筒内圧信号のAD変換を開始すると共に、DMAC20が第1のADC16のAD変換した筒内圧信号を第1のRAM13に書き込ませるように設定を切り替える。同時に、設定切り替え回路21は、第2のADC17がタイマ18の時間同期により筒内圧信号のAD変換を開始すると共に、DMAC20が第2のADC17のAD変換した筒内圧信号を第1のRAM13に書き込ませるように設定を切り替える。
また、設定切り替え回路21は、内燃機関が高回転制御時であると判定した場合、高回転制御を行う。設定切り替え回路21は、高回転制御設定処理において、内燃機関の回転数から第1のCPUコア11及び第2のCPUコア12に対する演算処理の分担割合を決定する。分担割合の決定には、例えば回転数に応じた第1のCPUコア11及び第2のCPUコア12の処理負荷状況を考慮して、最適な処理状況となるように回転数と分担割合とを関連付けた分担割合マップデータが用いられる。設定切り替え回路21は、第1のADC16がクランクタイマ19のクランク角同期により筒内圧信号のAD変換を開始すると共に、決定した分担割合に応じて、DMAC20が第1のADC16のAD変換した筒内圧信号を第1のRAM13又は第2のRAM14に書き込ませるように設定を切り替える。この設定切り替え回路21では、ソフトウェア的な設定の切り替えではなく、より信頼性の高いハード的な設定の切り替えが実現される。
次に、上述した内燃機関制御装置1のCPU10における処理の流れについて図面を参照して説明する。
図2に示されるように、内燃機関制御装置1のCPU10には、まずクランクセンサ3のクランク角信号が入力される(S1)。なお、筒内圧センサ4〜7の筒内圧信号は、所定の検出タイミングで継続的にCPU10に入力されている。CPU10の設定切り替え回路21は、入力されたクランクセンサ3のクランク角信号に基づいて、内燃機関が始動制御時であるか否かを判定する(S2)。
図3に示されるように、設定切り替え回路21は、内燃機関が始動制御時であると判定した場合、始動制御設定処理を行う(S3)。始動制御設定処理の後、タイマ18の時間と同期した第1のADC16による筒内圧信号のAD変換処理が行われる(S4)。第1のADC16のAD変換した筒内圧信号はDMAC20により第2のRAM14に直接書き込まれる。
その後、第2のCPUコア12は、第2のRAM14に書き込まれた筒内圧信号に基づき内燃機関の筒内圧制御量を演算する(S5)。第2のCPUコア12は、演算した筒内圧制御量を第2のCPUコア12に付随する第2のRAM14に書き込む。第2のCPUコア12は、第2のRAM14に書き込まれた筒内圧制御量に基づいて内燃機関の始動制御を実行する(S6)。始動制御の実行後、S1に戻る。
一方、図2に示されるように、設定切り替え回路21は、S2において内燃機関が始動制御時ではないと判定した場合、クランクセンサ3のクランク角信号に基づいて内燃機関が通常制御時であるか否かを判定する(S7)。
図4に示されるように、設定切り替え回路21は、内燃機関が通常制御時であると判定した場合、通常制御設定処理を行う(S8)。通常制御設定処理の後、クランクタイマ19のクランク角と同期した第1のADC16による筒内圧信号のAD変換処理が行われる(S9)。第1のADC16のAD変換した筒内圧信号はDMAC20により第1のRAM13に直接書き込まれる。その後、第1のCPUコア11は、第1のRAM13に書き込まれた筒内圧信号に基づき内燃機関の筒内圧制御量を演算する(S10)。第1のCPUコア11は、演算した筒内圧制御量を第1のRAM13に書き込む。
同様に、S8の通常制御設定処理の後、タイマ18の時間と同期した第2のADC17による筒内圧信号(各気筒分の信号を足し合わせた信号)のAD変換処理が行われる(S11)。第2のADC17のAD変換した筒内圧信号はDMAC20により第2のRAM14に直接書き込まれる。その後、第2のCPUコア12は、第2のRAM14に書き込まれた筒内圧信号に基づき内燃機関の筒内圧制御量の簡略演算を行う(S12)。第2のCPUコア12は、演算した筒内圧制御量を第2のRAM14に書き込む。
その後、第2のCPUコア12は、第1のRAM13及び第2のRAM14にそれぞれ書き込まれた筒内圧制御量、すなわち第1のCPUコア11の演算した筒内圧制御量と第2のCPUコア12の演算した筒内圧制御量との差分が所定の閾値以下であるか否かを判定する(S13)。
第2のCPUコア12は、第1のCPUコア11の演算した筒内圧制御量と第2のCPUコア12の演算した筒内圧制御量との差分が所定の閾値以下であると判定した場合、CPU10に異常はないと判断して内燃機関の通常制御を実行する(S14)。通常制御の実行後、S1に戻る。また、第2のCPUコア12は、第1のCPUコア11の演算した筒内圧制御量と第2のCPUコア12の演算した筒内圧制御量との差分が所定の閾値を超えていると判定した場合、CPU10に異常があると判断して内燃機関の制御を中止する(S15)。
図5に示されるように、設定切り替え回路21は、S7において内燃機関が通常制御時ではないと判定した場合、内燃機関は高回転制御時であると判定して、高回転制御設定処理を行う(S16)。高回転制御設定処理では、第1のCPUコア11及び第2のCPUコア12に対する演算処理の分配割合が内燃機関の回転数に応じて決定される。
高回転制御設定処理の後、クランクタイマ19のクランク角と同期した第1のADC16による筒内圧信号のAD変換処理が行われる(S17)。その後、設定切り替え回路21の決定した演算処理の分配割合に応じて、第1のADC16のAD変換した筒内圧信号をDMAC20が第1のRAM13又は第2のRAM14に書き込ませる。
第1のCPUコア11及び第2のCPUコア12は、それぞれ第1のRAM13及び第2のRAM14に分配して書き込まれた筒内圧信号に基づいて筒内圧制御量の演算を行う(S18)。第1のCPUコア11は、演算した筒内圧制御量を第1のRAM13に書き込む。第2のCPUコア12は、演算した筒内圧制御量を第2のRAM14に書き込む。その後、第2のCPUコア12は、第2のRAM14に書き込まれた筒内圧制御量に基づいて内燃機関の高回転制御を実行する(S19)。高回転制御の実行後、S1に戻る。
次に、上述した内燃機関制御装置1の作用効果について説明する。
本実施形態に係る内燃機関制御装置1によれば、2つのCPUコア11,12に演算処理を分担させるマルチコアプロセッサとして機能するCPU10において、内燃機関の通常制御時には第1のCPUコア11が気筒の圧力に基づいて内燃機関の筒内圧制御量の演算を行い、第2のCPUコア12が筒内圧制御量に基づいて内燃機関の制御を行うことで演算処理が分担され、処理能力の向上を図ることができる。さらに、内燃機関の始動制御時には第2のCPUコア12が筒内圧制御量の演算と内燃機関の始動制御との両方の処理を行うので、筒内圧信号が第1のCPUコア11及び第1のRAMを経由することによる通信時間の遅れがなくなり、内燃機関の始動時間の短縮を図ることができる。その結果、例えばアイドリングストップ機能を有する車両においては、内燃機関の再起動のスムーズさを向上させることができる。また、本発明によれば、スタータ動作用の電池容量を削減することが可能になり、車両の低コスト化が図られる。
また、この内燃機関制御装置1によれば、内燃機関の始動制御時において第1のADC16がAD変換した筒内圧信号を第2のRAM14に書き込ませるので、第2のCPUコア12は自身に付随する第2のRAM17から筒内圧信号を読み込んで筒内圧制御量の演算を行うことができる。従って、この内燃機関制御装置1によれば、第2のCPUコア12に付随しない第1のRAM13等に筒内圧信号が書き込まれる場合と比べて、第2のCPUコア12は筒内圧信号を高速で読み込むことができるので、第2のCPUコア12による筒内圧制御量の演算速度を向上させることができる。このことは内燃機関の始動時間の短縮に寄与する。
さらに、この内燃機関制御装置1によれば、内燃機関の通常制御時において第1のCPUコア11で内燃機関の制御量を演算する際に、第2のCPUコア12でも内燃機関の制御量の演算を行うことにより、第1のCPUコア11で演算された内燃機関の筒内圧制御量と第2のCPUコア12で演算された内燃機関の筒内圧制御量との比較に基づいて装置の異常を判定することが可能になる。しかも、第1のADC16及び第1のRAM13を介して第1のCPUコア11で演算された内燃機関の筒内圧制御量と第2のADC17及び第2のRAM14を介して第2のCPUコア12で演算された内燃機関の筒内圧制御量との比較に基づいて異常を判定するので、CPUコア11,12、RAM13,14、ADC16,17の全要素の異常の有無について効率的に判定することができる。従って、この内燃機関制御装置1によれば、異常を判定して対処することが可能になるので、装置に対する信頼性の向上を図ることができる。
また、この内燃機関制御装置1によれば、4つの気筒の燃焼タイミングがそれぞれ異なり筒内圧の変化も気筒ごとに相違するため4つの気筒の筒内圧信号を足し合わせた信号から内燃機関の筒内圧制御量を演算可能であることに基づき、第2のADC17に入力される信号を一つにまとめることで、第2のADC17の入力チャンネル数を少なくすることができる。従って、この内燃機関制御装置1によれば、第2のADC17の入力チャンネル数を少なくすることができるので、装置の構成の簡素化及び低コスト化を図ることができる。
さらに、この内燃機関制御装置1によれば、内燃機関の高回転制御において、第1のCPUコア11及び第2のCPUコア12に筒内圧制御量の演算処理を処理負荷状況に応じて適切に分担させることで、処理負荷を低減させ、高回転制御における信頼性の高い筒内圧制御を実現することができる。
本発明は、上述した実施形態に限定されるものではない。例えば、上述した実施形態では、内燃機関として4気筒のレシプロエンジンを制御する場合について説明したが、気筒数は4つのものに限られず、また駆動源としてのモータを備えたハイブリッドエンジン等に対しても好適に適用可能である。
また、CPUコアの数は二個に限られず、三個以上であっても良い。さらに、特許請求の範囲に記載の内燃機関状態量は、気筒の筒内圧に限られない。
また、第1のCPUコア11及び第2のCPUコア12がADCやRAMを共通する構成であっても良い。このように、ADCやRAMが共通であっても、第1のCPUコア11及び第2のCPUコア12がそれぞれ筒内圧制御量を演算し、各CPUコア11,12の演算した筒内圧制御量を比較して異常を検出することで、第1のCPUコア11及び第2のCPUコア12並びに共通しない構成要素について異常があるか否かを適切に判定できる。