(57)【要約】【課題】  この発明は、クランク角同期処理と時間同期処理の双方を実行する内燃機関制御装置に関し、内燃機関の高回転領域においても両者の干渉を避けて高い制御精度を維持することを目的とする。【解決手段】  ECU５０が実行するべきクランク角同期処理の大半を実行するクランク角同期処理部５２と、ECU５０が実行するべき時間同期処理の大半を実行する時間同期処理部５４とを設ける。クランク角同期処理部５２により生成されるデータのうち時間同期処理部５４が必要とするもの、および時間同期処理部５４により生成されるデータのうちクランク角同期処理部５２が必要とするものを、DPRAM６６に格納する。DPRAM６６に格納されたデータをも利用しつつ、２つの処理部５２，５４に別個独立に処理を実行させる。【選択図】      図２
2006017054.tif 000002
【特許請求の範囲】
【請求項１】
各種の入力信号に基づいて、内燃機関の運転に関わる各種アクチュエータの状態を制御するための内燃機関制御装置であって、
クランク角との同期をとって実行するべきクランク角同期処理の大半を実行するクランク角同期処理部と、
時間との同期をとって実行するべき時間同期処理の大半を実行する時間同期処理部と、
前記クランク角同期処理部により生成されるデータのうち前記時間同期処理部が必要とするものを記憶し、かつ、前記時間同期処理部によるデータの読み出しを許容する第１記憶部と、
前記時間同期処理部により生成されるデータのうち前記クランク角同期処理部が必要とするものを記憶し、かつ、前記クランク角同期処理部によるデータの読み出しを許容する第２記憶部とを備え、
前記クランク角同期処理部と、前記時間同期処理部とは、互いに干渉することのない別個の演算器により構成されていることを特徴とする内燃機関制御装置。
【請求項２】
前記時間同期処理部は、前記時間同期処理のみを実行するものであり、
前記クランク角同期処理部は、内燃機関の運転に伴って実行するべきクランク角同期処理の全てを実行するものであることを特徴とする請求項１記載の内燃機関制御装置。
【請求項３】
前記クランク角同期処理部は、ソフトウェアを必要としないハードウェア回路で構成されており、
前記時間同期処理は、ハードウェア回路とソフトウェアとの組み合わせにより構成されていることを特徴とする請求項１または２記載の内燃機関制御装置。
【請求項４】
前記クランク角同期処理部は、複数の機能モジュールを並列処理するための複数の演算器を備えていることを特徴とする請求項１乃至３の何れか１項記載の内燃機関制御装置。
【請求項５】
前記第１記憶部および前記第２記憶部は、前記クランク角同期処理部と前記時間同期処理部の双方からアクセス可能なデュアルポートRAMにより構成されることを特徴とする請求項１乃至４の何れか１項記載の内燃機関制御装置。
【請求項６】
前記クランク角同期処理部と前記時間同期処理部とは、ダイレクトメモリアクセス通信の手法でデータを授受する機能を有し、
前記第１記憶部は、前記時間同期処理部によるアクセスが可能であり、かつ、前記クランク角同期処理部がダイレクトメモリアクセス通信の手法でデータを書き込むことができる第１DMA受信バッファであり、
前記第２記憶部は、前記クランク角同期処理部によるアクセスが可能であり、かつ、前記時間同期処理部がダイレクトメモリアクセス通信の手法でデータを書き込むことができる第２DMA受信バッファであることを特徴とする請求項１乃至５の何れか１項記載の内燃機関制御装置。
【請求項７】
前記クランク角同期処理部は、
前記第１記憶部のデータを書き換える際にクランク角同期データ更新フラグをオンとする手段と、
時間同期データ更新フラグがオンである場合にのみ前記第２記憶部のデータを読み出す手段と、
前記第２記憶部のデータを読み出す際に前記時間同期データ更新フラグをオフとする手段とを含み、
前記時間同期処理部は、
前記第２記憶部のデータを書き換える際に前記時間同期データ更新フラグをオンとする手段と、
前記クランク角同期データ更新フラグがオンである場合にのみ前記第１記憶部のデータを読み出す手段と、
前記第１記憶部のデータを読み出す際に前記クランク角同期データ更新フラグをオフとする手段とを含むことを特徴とする請求項１乃至６の何れか１項記載の内燃機関制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、内燃機関制御装置に係り、特に、クランク角との同期をとって行うべき処理と、時間との同期をとって実行するべき処理の双方を、精度良く制御するうえで好適な内燃機関制御装置に関する。
【背景技術】
【０００２】
従来、例えば特開平１１−６４６１号公報に開示されているように、内燃機関に搭載されている各種のアクチュエータを制御するためのエンジン制御装置が知られている。内燃機関に搭載されるアクチュエータには、内燃機関のクランク角との同期をとって作動させるべきものと、時間との同期をとって作動させるべきものとが混在している。
【０００３】
例えば、内燃機関の吸気行程に合わせて燃料を噴射するための燃料噴射弁や、圧縮上死点付近で点火火花を発生させるための点火プラグは前者のグループに属する。一方、アクセル開度に応じたスロットル開度を実現するための電子制御式スロットルバルブなどは後者のグループに属する。
【０００４】
【特許文献１】特開平７−１９６２７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、時間との同期をとるべき処理（以下、「時間同期処理」と称す）の実行周期は、機関回転数の高低に関わらず一定である。これに対して、クランク角に同期させるべき処理（以下、「クランク角同期処理」と称す）の実行周期は、機関回転数が高まるに連れて短くなる。このため、それら双方の処理を単一の制御装置で実行しようとすると、高回転領域において、クランク角同期処理と時間同期処理とが干渉し易い状態となる。そして、このような干渉が生ずると、所望のタイミングで所望の処理を実行することができなくなり、内燃機関の制御精度が低下する事態が生ずる。
【０００６】
この発明は、上述のような課題を解決するためになされたもので、内燃機関の高回転領域においても、クランク角同期処理と時間同期処理との干渉を避けて、高い制御精度を維持することのできる内燃機関制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
第１の発明は、上記の目的を達成するため、各種の入力信号に基づいて、内燃機関の運転に関わる各種アクチュエータの状態を制御するための内燃機関制御装置であって、
クランク角との同期をとって実行するべきクランク角同期処理の大半を実行するクランク角同期処理部と、
時間との同期をとって実行するべき時間同期処理の大半を実行する時間同期処理部と、
前記クランク角同期処理部により生成されるデータのうち前記時間同期処理部が必要とするものを記憶し、かつ、前記時間同期処理部によるデータの読み出しを許容する第１記憶部と、
前記時間同期処理部により生成されるデータのうち前記クランク角同期処理部が必要とするものを記憶し、かつ、前記クランク角同期処理部によるデータの読み出しを許容する第２記憶部とを備え、
前記クランク角同期処理部と、前記時間同期処理部とは、互いに干渉することのない別個の演算器により構成されていることを特徴とする。
【０００８】
また、第２の発明は、第１の発明において、
前記時間同期処理部は、前記時間同期処理のみを実行するものであり、
前記クランク角同期処理部は、内燃機関の運転に伴って実行するべきクランク角同期処理の全てを実行するものであることを特徴とする。
【０００９】
また、第３の発明は、第１または第２の発明において、
前記クランク角同期処理部は、ソフトウェアを必要としないハードウェア回路で構成されており、
前記時間同期処理は、ハードウェア回路とソフトウェアとの組み合わせにより構成されていることを特徴とする。
【００１０】
また、第４の発明は、第１乃至第３の発明の何れかにおいて、前記クランク角同期処理部は、複数の機能モジュールを並列処理するための複数の演算器を備えていることを特徴とする。
【００１１】
また、第５の発明は、第１乃至第４の発明の何れかにおいて、前記第１記憶部および前記第２記憶部は、前記クランク角同期処理部と前記時間同期処理部の双方からアクセス可能なデュアルポートRAMにより構成されることを特徴とする。
【００１２】
また、第６の発明は、第１乃至第５の発明の何れかにおいて、
前記クランク角同期処理部と前記時間同期処理部とは、ダイレクトメモリアクセス通信の手法でデータを授受する機能を有し、
前記第１記憶部は、前記時間同期処理部によるアクセスが可能であり、かつ、前記クランク角同期処理部がダイレクトメモリアクセス通信の手法でデータを書き込むことができる第１DMA受信バッファであり、
前記第２記憶部は、前記クランク角同期処理部によるアクセスが可能であり、かつ、前記時間同期処理部がダイレクトメモリアクセス通信の手法でデータを書き込むことができる第２DMA受信バッファであることを特徴とする。
【００１３】
また、第７の発明は、第１乃至第６の発明の何れかにおいて、
前記クランク角同期処理部は、
前記第１記憶部のデータを書き換える際にクランク角同期データ更新フラグをオンとする手段と、
時間同期データ更新フラグがオンである場合にのみ前記第２記憶部のデータを読み出す手段と、
前記第２記憶部のデータを読み出す際に前記時間同期データ更新フラグをオフとする手段とを含み、
前記時間同期処理部は、
前記第２記憶部のデータを書き換える際に前記時間同期データ更新フラグをオンとする手段と、
前記クランク角同期データ更新フラグがオンである場合にのみ前記第１記憶部のデータを読み出す手段と、
前記第１記憶部のデータを読み出す際に前記クランク角同期データ更新フラグをオフとする手段とを含むことを特徴とする。
【発明の効果】
【００１４】
第１の発明によれば、クランク角同期処理の大半をクランク角同期処理部に実行させ、時間同期処理の大半を時間同期処理部に実行させることができる。クランク角同期処理部は、第２記憶部のデータを見ることで、時間同期処理の結果を利用して処理を進めることができる。一方、時間同期処理部は、第１記憶部のデータを見ることで、クランク角同期処理の結果を利用して処理を進めることができる。また、クランク角同期処理部と時間同期処理部とは、互いに干渉することなく処理を進めることができる。このため、本発明によれば、クランク角同期処理の実行周期が短くなる高回転領域でも、クランク角同期処理と時間同期処理との干渉を生じさせることなく、高い制御精度を維持することができる。
【００１５】
第２の発明によれば、時間同期処理部に時間同期処理のみを実行させ、全てのクランク角同期処理をクランク角同期処理部に実行させることができる。このため、本発明によれば、クランク角同期処理と時間同期処理の干渉を、有効に防ぐことができる。
【００１６】
第３の発明によれば、クランク角同期処理部は、ハードウェア回路のみで構成される。クランク角同期処理は、その内容が比較的簡単であるため、クランク角同期処理部については、ソフトウェアを用いずにハードウェア回路のみで構成することが実用上可能である。また、クランク角同期処理は高速で繰り返されるため、クランク角同期処理部には高速処理能力が要求される。本発明では、クランク角同期処理部をハードウェア回路のみで構成することとして、上記の要求を満たすこととしている。一方、時間同期処理は、その内容が複雑であり、かつ、単純な繰り返しでないことが多い。このため、時間同期処理には、フレキシビリティが要求される。本発明では、ソフトウェアを利用して時間同期処理部を構成することにより、上記の要求を満たすこととしている。
【００１７】
第４の発明によれば、クランク角同期処理部は、複数の演算器を用いて複数の機能モジュールを並列処理することができる。このため、本発明によれば、クランク角同期処理部に対して、十分に高い処理能力を与えることができる。
【００１８】
第５の発明によれば、第１記憶部および第２記憶部を、デュアルポートRAMにより構成することができる。デュアルポートRAMは、クランク角同期処理部からも時間同期処理部からもアクセスすることができるため、第１記憶部および第２記憶部としての機能を実現することができる。
【００１９】
第６の発明によれば、ダイレクトメモリアクセス通信の手法を用いることにより、第１DMAバッファおよび第２DMAバッファを第１記憶部および第２記憶部として機能させることができる。
【００２０】
第７の発明によれば、クランク角同期処理部には、時間同期データ更新フラグがオンとされている場合に限り、つまり、時間同期処理部がデータの書き換えを行った直後に限り、そのデータを読み出すための処理を実行させることができる。また、時間同期処理部には、クランク角同期データ更新フラグがオンとされている場合に限り、つまり、クランク角同期処理部がデータの書き換えを行った直後に限り、そのデータを読み出すための処理を実行させることができる。このため、本発明によれば、クランク角同期処理部および時間同期処理部に、無駄なデータ読み出し処理を実行させるのを避けることができる。
【発明を実施するための最良の形態】
【００２１】
実施の形態１．
［システム構成の説明］
図１は、本発明の実施の形態１の構成を説明するための図を示す。図１に示すように、本実施形態のシステムは、内燃機関１０を備えている。内燃機関１０には、吸気通路１２および排気通路１４が連通している。
【００２２】
吸気通路１２には、その内部を流れる空気量、すなわち、内燃機関１０に流入する吸入空気量Gaを検知するエアフロメータ１６が配置されている。エアフロメータ１６の下流には、スロットルバルブ１８が配置されている。スロットルバルブ１８は、アクセル開度などに基づいてスロットルモータ２０により駆動される電子制御式のバルブである。スロットルバルブ１８の近傍には、スロットル開度を検出するためのスロットルポジションセンサ２２、およびアクセル開度を検出するためのアクセルポジションセンサ２４が配置されている。
【００２３】
内燃機関１０は、複数の気筒を有する多気筒式の機関であり、図１は、そのうちの一気筒の断面を示している。内燃機関１０が備える個々の気筒には、吸気通路１２に通じる吸気ポート、および排気通路１４に通じる排気ポートが設けられている。吸気ポートには、その内部に燃料を噴射するための燃料噴射弁２６が配置されている。また、吸気ポートおよび排気ポートには、それぞれ、吸気通路１２と筒内、或いは排気通路１４と筒内を導通状態または遮断状態とするための吸気弁２８および排気弁３０が設けられている。
【００２４】
吸気弁２８および排気弁３０は、それぞれ可変動弁(VVT)機構３２，３４により駆動される。可変動弁機構３２，３４は、それぞれ、クランク軸の回転と同期して吸気弁２８および排気弁３０を開閉させると共に、それらの開弁特性（開弁時期、作用角、リフト量など）を変更することができる。
【００２５】
内燃機関１０の各気筒には、それぞれの気筒のピストンが圧縮上死点の近傍に到達した際に点火火花を発生するための点火プラグ３６が配置されている。点火プラグ３６には、イグナイタ３８が接続されている。イグナイタ３８は、各気筒の点火プラグに対して、火花生成用の高電圧を配給することができる。
【００２６】
内燃機関１０は、冷却水温THWを検出するための水温センサ３９を備えている。更に、内燃機関１０は、クランク軸の近傍にクランク角センサ４０を備えている。クランク角センサ４０は、クランク軸が所定回転角だけ回転する毎に、Hi出力とLo出力を反転させるセンサである。クランク角センサ４０の出力によれば、クランク軸の回転位置や回転速度、更には、機関回転数Neなどを検知することができる。
【００２７】
内燃機関１０の排気通路１４には、排気ガスを浄化するための触媒４２が配置されている。また、触媒４２の上流および下流には、それぞれの位置で排気空燃比を検知するための上流側空燃比センサ４４、および下流側空燃比センサ４４が配置されている。
【００２８】
図１に示すシステムは、ECU(Electronic Control Unit)５０を備えている。ECU５０には、上述した各種センサやアクチュエータに加えて、エアコンスイッチ（図示せず）など、内燃機関１０の運転に関わる様々な機器の出力が供給されている。ECU５０は、内燃機関１０の運転状態を制御するユニットであり、それらの出力に基づいて、ECU５０に搭載されている種々のアクチュエータを適当に駆動することができる。
【００２９】
［時間同期処理とクランク角同期処理］
ECU５０は、例えば、スロットル開度を制御するための電子スロットル制御を実行する。ここでは、具体的には、アクセルポジションセンサ２４の出力を読み取り、その出力等に基づいてスロットルバルブ１８の目標開度を算出し、スロットルポジションセンサ２２の出力がその目標開度に対応する値となるようにスロットルモータ２０を駆動する処理が実行される。
【００３０】
ECU５０は、また、VVT機構３２，３４の状態を制御するためのVVT制御を実行する。ここでは、クランク角センサ４０の出力に基づいて機関回転数を算出する処理、機関回転数等に基づいてVVT機構の目標状態を決定する処理、その目標状態が実現されるようにVVT機構３２，３４をフィードバック制御する処理、などが実行される。
【００３１】
ECU５０では、更に、燃料噴射時間TAUを算出する処理や点火時期を算出する処理が実行される。燃料噴射時間TAUを算出する処理としては、具体的には、エアフロメータ吸入空気量Gaを等に基づいて燃料噴射時間のベース値を算出する処理、上流側および下流側空燃比センサ４４の出力に基づいてそのベース値を補正する処理等が実行される。また、点火時期を算出する処理としては、機関回転数や機関負荷に基づいて点火時期のベース値を算出する処理や、点火の直前の状態に適合するように、そのベース値を補正する処理等が実行される。
【００３２】
上述した電子スロットル制御、VVT制御、および燃料噴射時間や点火時期の算出処理は、何れも、本実施形態では、所定時間毎に繰り返して実行される。つまり、本実施形態では、それらの処理は、時間との同期をとって進められる。以下、このようなタイミングで実行される処理を「時間同期処理」と称する。
【００３３】
ECU５０は、また、燃料噴射弁２６に対して燃料噴射指令を発する処理や、イグナイタ３８に対して点火指令を発する処理を実行する。燃料噴射は、吸気行程中の適当な時期に行う必要があることから、クランク角との同期をとって実行される。また、点火プラグ３６による点火も、ピストンが圧縮上死点近傍に存在する適当なタイミングにおいて実行する必要がある。このため、イグナイタ３８に対する点火指令も、クランク角との同期をとって実行される。以下、これらの処理のように、ECU５０が、クランク角との同期をとって実行する処理を「クランク角同期処理」と称する。
【００３４】
［ECU５０の詳細］
以上説明した通り、ECU５０では、時間同期処理と、クランク角同期処理とを共に実行する必要がある。クランク角同期処理の実行周期は、機関回転数Neが高くなり、その結果クランク角速度が高くなるほど短時間となる。このため、時間同期処理とクランク角同期処理が単一の演算器により処理されるとすれば、高回転領域において、時間同期処理とクランク角同期処理との干渉が生じ、その結果、それらの処理が所望のタイミングにおいて正確に実行されない事態が生ずる。
【００３５】
そこで、本実施形態では、ECU５０の内部を、主としてクランク角同期処理を実行するブロックと、主として時間同期処理を実行するブロックとに分離し、クランク角同期処理と、時間同期処理とを、それらのブロックにおいて、実質的に別個独立に実行させることとした。
【００３６】
図２は、上記の機能を実現するために構成されたECU５０の内部構造を説明するためのブロック図である。図２に示すように、ECU５０の内部には、クランク角同期処理部５２と、時間同期処理部５４とが設けられている。クランク角同期処理部５２は、ECU５０が実行するべきクランク角同期処理の大半、より具体的には、その全てを実行させるためのブロックであり、FPGA(Field Programmable Gate Array)により構成されている。FPGAは、書き換え可能な大規模集積回路であり、機能の書き込みが終わると、ソフトウェアを必要とせず、ハードウェア回路のみで構成された回路を実現することができる。
【００３７】
クランク角同期処理部５２には、入力回路５６と出力回路５８が接続されている。入力回路５６には、クランク角センサ４０の出力を含めて、その内部で進めるべき処理の実行に必要な複数のセンサ出力が供給されている。また、出力回路５８には、燃料噴射弁２６やイグナイタ３６など、クランク角同期処理により制御するべきアクチュエータの大半、より具体的には、そのようなアクチュエータの全てが接続されている。
【００３８】
時間同期処理部５４は、ECU５０が実行するべき時間同期処理の大半を実行させるためのブロックであり、マイクロコンピュータを中心として構成されている。つまり、時間同期処理部５４は、マイクロコンピュータに適当なソフトウェアを読み込ませることにより実現されている。
【００３９】
時間同期処理部５２入力回路６０と出力回路６２が接続されている。入力回路６０には、ECU５０が実行するべき主たる時間同期処理に必要な各種信号が供給されている。具体的には、アクセルポジションセンサ２４の出力、水温センサの出力、およびエアコンスイッチの出力信号などが入力回路６０に供給されている。また、出力回路６２には、スロットルモータ２０や、VVT機構３２，３４の駆動アクチュエータなど、時間同期処理により制御するべきアクチュエータの大半が接続されている。
【００４０】
ECU５０は、更に、電源IC６４とDPRAM(Dual Port RAM)６６とを備えている。電源IC６４は、バッテリー６８から供給される電圧を所望の電源電圧に減圧してクランク角同期処理部５２および時間同期処理部５４に供給するためのICである。DPRAM６６には、クランク角同期処理部５２と時間同期処理部５４の双方が接続されている。DPRAM６６は、個々のアドレスにアクセスするためのポートを２組有するRAMである。本実施形態では、それらの一方がクランク角同期処理部５２に接続されており、それらの他方が時間同期処理部５４に接続されている。
【００４１】
クランク角同期処理部５２における処理の結果は、時間同期処理部５４において必要となることがある。同様に、時間同期処理部５４における処理の結果は、クランク角同期処理部５２において必要となることがある。クランク角同期処理部５２および時間同期処理部５４は、それぞれ、他方で必要となるデータをDPRAM６６に格納すると共に、自らが必要とする他方のデータを、そのDPRAM６６から読み出す。クランク角同期処理部５２および時間同期処理部５４は、それぞれ上記の如く動作することにより、互いに他方の動作に影響を与えることなく、必要なデータを取得して、所望の処理を実行することができる。
【００４２】
［クランク角同期処理部で行うべき処理と時間同期処理部で行うべき処理の区分］
（処理区分の原則）
ECU５０が実行する処理は、上述した通り、クランク角同期処理と、時間同期処理とに区分して考えることができる。クランク角同期処理と時間同期処理との干渉を避けるためには、全てのクランク角同期処理をクランク角同期処理部５２に実行させ、また、全ての時間同期処理を時間同期処理部５４に実行させるという分離の手法が考えられる。しかしながら、クランク角同期処理および時間同期処理の中には、互いに他方の処理と密接な関係を有するものが存在している。
【００４３】
例えば、点火時期を補正するための時間同期処理は、時々刻々点火時期データに修正を加える処理であり、イグナイタ３８に対して点火指令信号を発するクランク角同期処理と密接に関連している。同様に、燃料噴射時間に補正を加えるための時間同期処理は、時々刻々燃料噴射時間に修正を加える処理であり、燃料噴射弁２６に対して燃料噴射指令信号を発するクランク角同期処理と密接に関連している。
【００４４】
特定のクランク角同期処理と特定の時間同期処理とが互いに密接に関連している場合は、それらの処理を進めるにあたって、高速で、かつ頻繁に相互にデータを授受する必要が生ずることが多い。このため、そのような関連を有する処理を、クランク角同期処理部５２と時間同期処理部５４とで分けて実行することとすると、DPRAM６６を介して行うべきデータ通信の負荷が過大となり易い。
【００４５】
そこで、本実施形態では、クランク角同期処理部５２および時間同期処理部５４のそれぞれにおいて実行する処理を区分するにあたって、先ず、密接な関係を有する一群の処理を機能モジュールとして分類する。そして、同一の機能モジュールに属する処理が２つの処理部５２，５４に跨って実行されることがないように、ECU５０が実行するべき処理を、機能モジュールを単位としてクランク角同期処理部５２および時間同期処理部５４の双方に分配することとした。
【００４６】
図３は、上記の規則に従う分配の手法を具体的に説明するための図である。ここには、互いに密接な関係を有する一群の処理の例として、点火機能モジュール、噴射機能モジュール、および電スロ機能モジュールが示されている。これらのモジュールを表す３つの長方形は、それぞれ縦方向がROM容量を意味している。また、それらの長方形を構成する部分のうち、ハッチングを施した部分はクランク角同期処理が占める領域であり、他方、白抜きの部分は時間同期処理が占める領域である。
【００４７】
点火機能モジュールには、具体的には、クランク角との同期をとってイグナイタ３８に対して点火信号を供給するための処理（クランク角同期処理）、および、点火時期に対して時々刻々補正を施すための補正処理（時間同期処理）が含まれている。点火機能モジュールに含まれる処理は図３に示すように大半がクランク角同期処理である。そして、本実施形態では、そのような機能モジュールはクランク角同期処理部５２で実行するべきモジュール（以下、「クランク角系機能モジュール」と称す）に分類することとしている。このため、点火機能モジュールは、クランク角系機能モジュールに分類される。
【００４８】
噴射機能モジュールには、具体的には、クランク角との同期をとって燃料噴射弁２６に対して噴射信号を供給するための処理（クランク角同期処理）、および、燃料噴射時間に対して時々刻々補正を施すための補正処理（時間同期処理）が含まれている。噴射機能モジュールも、点火機能モジュールと同じ理由により、クランク角系機能モジュールに分類される。
【００４９】
電スロ機能モジュールは、アクセル開度の検出、スロットル開度の検出、およびスロットルモータ２０の駆動など、時間との同期をとって実行するべき時間同期処理のみで構成されている。本実施形態では、大半が時間同期処理である機能モジュールは、時間同期処理部５４で実行するべきモジュール（以下、「時間角系機能モジュール」と称す）に分類することとしている。このため、電スロ機能モジュールは、時間系機能モジュールに分類される。
【００５０】
上述した分類によれば、クランク角同期処理部５２において実行される処理は、その大半がクランク角同期処理となる。そして、この場合は、ECU５０が実行するべきクランク角同期処理の大半は、クランク角同期処理部５２において実行されることになる。また、上述した分類によれば、時間同期処理部５４において実行される処理は、その大半が時間同期処理となり、同時に、ECU５０が実行するべき時間同期処理の大半は、時間同期処理部５４において実行されることになる。
【００５１】
ECU５０が実行するべきクランク角同期処理の大半をクランク角同期処理部５２に実行させ、かつ、ECU５０が実行するべき時間同期処理の大半を時間同期処理部５４に実行させることとすれば、大半のクランク角同期処理と、大半の時間同期処理との干渉を避けることができる。このため、本実施形態のシステムによれば、クランク角同期処理の実行周期が短時間となる高回転領域においても、ECU５０に、所望の処理を所望のタイミングで正確に実行させることができる。
【００５２】
ところで、本実施形態では、クランク角同期処理を含む全ての機能モジュールは、大半がクランク角同期処理を含むものである（図３における「点火機能モジュール」および「噴射機能モジュール」参照）。このため、大半がクランク同期処理である機能モジュールをクランク角系機能モジュールに分類すると、必然的に、クランク角同期処理を含む全ての機能モジュールがクランク角系機能モジュールに分類されることになる。
【００５３】
（本実施形態において実現される処理区分）
クランク角同期処理を含む全ての機能モジュールがクランク角系機能モジュールに分類されれば、時間系機能モジュールに分類される機能モジュールは、時間同期処理のみを含む機能モジュールに限られる。その結果、クランク角同期処理部５２では、大多数のクランク角同期処理と少数の時間同期処理とが実行されることになり、また、時間同期処理部５４では時間同期処理のみが実行されることになる。
【００５４】
このような分類によれば、大半の時間同期処理を時間同期処理部５４に配分しつつ、時間同期処理部５４に配分された時間同期処理の全てを、クランク角同期処理との干渉を全く問題とせずに進行させることができる。このため、本実施形態のシステムによれば、クランク角同期処理の繰り返し周期が短くなる高回転領域においても、クランク角同期処理、および時間同期処理の双方を、所望のタイミングで正確に進行させることができ、その結果、優れた制御精度を維持することができる。
【００５５】
（処理区分の変形例１）
上述した通り、本実施形態では、大半がクランク角同期処理である機能モジュールをクランク角系機能モジュールに分類し、大半が時間同期処理である機能モジュールを時間系機能モジュールに分類するのを処理区分の原則としている。本実施形態では、小数のクランク角同期処理と大多数の時間同期処理とを含む機能モジュールが存在していないため、クランク角同期処理を含む機能モジュールが時間系機能モジュールに分類されることがなかった。
【００５６】
しかしながら、上記の原則によれば、このような機能モジュールは、時間系機能モジュールに分類されることになる。この場合、時間同期処理部５４では、大半の時間同期処理と共に少数のクランク角同期処理を実行することが必要となるが、そのような状況下であっても、ECU５０が実行するべきクランク角同期処理の大半（クランク角同期処理部５２で実行される）と、ECU５０が実行するべき時間同期処理の大半（時間同期処理部５４で実行される）とを相互に干渉させることなく進行させ得るという効果は維持することができる。このため、本実施形態のシステムは、小数のクランク角同期処理と大多数の時間同期処理とを含む機能モジュールが存在する場合においても有効である。
【００５７】
（処理区分の変形例２）
特定の機能モジュールをクランク角系機能モジュールに分類するか、或いは時間系機能モジュールに分類するかの基準は、上記の原則に代えて、以下のように設定してもよい。すなわち、ECU５０が実行するべきクランク角同期処理の大半がクランク角同期処理部５２で実行され、かつ、ECU５０が実行するべき時間同期処理の大半が時間同期処理部５４で実行される限り、クランク角同期処理を含む全ての機能モジュールをクランク角系機能モジュールに分類し、時間同期処理のみを含む機能モジュールだけを時間系機能モジュールに分類することとしてもよい。
【００５８】
このような分類によれば、小数のクランク角同期処理と大多数の時間同期処理とを含む機能モジュールが、クランク角系機能モジュールに分類されることとなり、そのような機能モジュールが存在する場合にも、時間同期処理部５４で実行される処理を時間同期処理だけに限定することが可能となる。この場合、どのような機能モジュールが存在していたとしても、時間同期処理部５４では、クランク角同期処理と時間同期処理との干渉を常に完全に防ぐことができる。このため、上記の分類は、高い制御精度を常に確保するうえで有効である。
【００５９】
［クランク角同期処理部５２の特性］
上述した通り、本実施形態では、クランク角同期処理部５２をFPGAにより実現することとしている。FPGAによれば、回路を書き込むことにより、ソフトウェアを必要とせずに所望の演算処理を実行し得るハードウェア回路を実現することができる。また、FPGAの内部には、複数の演算器を形成することが可能である。
【００６０】
本実施形態では、FPGAの内部に、クランク角同期処理部５２において実行するべき個々の機能モジュールを処理するための演算器を形成することとしている。このため、本実施形態におけるクランク角同期処理部５２は、実質的には、特定の機能モジュールを実行する機能を有する複数のハードウェア回路で構成されている。
【００６１】
ソフトウェアを必要としないハードウェア回路は、ソフトウェアを必要とする回路、つまり、マイクロコンピュータを含む回路に比して高い処理速度を発揮することができる。そして、このようなハードウェア回路が機能モジュール毎に複数存在すれば、それら複数の機能モジュールを高速で並列処理することが可能となる。このため、本実施形態のシステムによれば、クランク角同期処理部５２に対して、極めて優れた高速処理能力を与えることができる。
【００６２】
クランク角同期処理部５２において主として実行されるクランク角同期処理は、比較的単純であると共に、クランク軸の回転に合わせて繰り返し実行されるという特性を有している。ハードウェア回路は、リソースの有効利用や設計の難易度等の観点より、単純処理を繰り返し実行する回路に適している。このため、クランク角同期処理部５２をハードウェア回路で構成することは、ハードウェア回路の適性にも合致している。
【００６３】
ところで、上述した説明においては、クランク角同期処理部５２をハードウェア回路のみで構成するためにFPGAを用いることとしているが、その目的を達成するための手法はこれに限定されるものではない。すなわち、クランク角同期処理部５２は、ASICを用いてハードウェア回路のみで実現することとしてもよい。
【００６４】
［時間同期処理部５４の特性］
上述した通り、本実施形態では、時間同期処理部５４をマイクロコンピュータを用いて実現することとしている。時間同期処理部５４において主として実行される時間同期処理は、クランク角同期処理と異なり一般に複雑である。ソフトウェアを利用するマイクロコンピュータによれば、複雑な処理を実行する回路を比較的安価に実現することができる。このため、マイクロコンピュータを用いることは、時間同期処理部５４を実現するための要求に合致するものである。
【００６５】
［時間同期処理部５４における具体的処理］
図４は、時間同期処理部５４が時間同期処理を進めるために実行するルーチンのフローチャートである。図４に示すルーチンは、時間同期処理部５４の構成要素であるマイクロコンピュータが、そこに記憶されているソフトウェアに沿って処理を実行することにより実現される。
【００６６】
本実施形態では、時間同期処理部５４が実行するべき処理は時間同期処理のみであるから、時間同期処理部５４は、図４に示すルーチンを実行することにより、実行するべき全ての処理を進行させることができる。尚、時間同期処理部５４において実行するべき時間系機能モジュールにクランク角同期処理が含まれている場合は、図４に示すルーチンに示す一連の処理に加えて、クランク角同期処理を進めるための割り込み処理が実行されることになる。
【００６７】
図４に示すルーチンでは、先ず、時間同期処理の実行タイミングが到来したか否かが判別される（ステップ１００）。本ステップ１００の処理は、その実行タイミングの到来が判別されるまで繰り返し実行される。そして、その判別が肯定されると、時間同期処理の実行に必要なセンサ出力が取り込まれる（ステップ１０２）。
【００６８】
次に、クランク角同期データ更新フラグがONとされているか否かが判別される（ステップ１０４）。クランク角同期データ更新フラグ（以下、「C更新フラグ」と称す）は、DPRAM６６の特定アドレスに書き込まれるフラグである。C更新フラグをONとする処理は、他方の処理部、つまり、クランク角同期処理部５２により行われる。より具体的には、クランク角同期処理部５２は、クランク角系機能モジュールの実行に伴ってDPRAM６６に新たなデータ（以下、「C更新データ」と称す）を書き込む際にC更新フラグをONとする。
【００６９】
上記ステップ１０４の処理によりC更新フラグがONであると判別された場合は、DPRAM６６に新たなC更新データが書き込まれていると判断することができる。この場合、時間同期処理部５４は、次に、DPRAM６６に書き込まれているC更新データを取得し（ステップ１０６）、その後、C更新フラグをOFFとする（ステップ１０８）。
【００７０】
一方、上記ステップ１０４において、C更新フラグがONでないと判別された場合は、DPRAM６６に新たなC更新データは書き込まれていない、つまり、DPRAM６６内のデータは、改めて読み込む必要がないと判断することができる。この場合、図４に示すルーチンでは、ステップ１０６および１０８の処理がジャンプされる。
【００７１】
図４に示すルーチンによれば、次に、時間同期処理が実行される（ステップ１１０）。ここでは、具体的には、スロットル開度を制御するための電スロ機能モジュール、燃料噴射量のベース値や点火時期のベース値を計算するための機能モジュールなどが実行される。
【００７２】
次に、時間同期処理により駆動するべきアクチュエータ等に向けて駆動信号等が出力される（ステップ１１２）。次いで、時間同期処理の実行に伴って生成されたデータのうち、クランク角同期処理の実行に必要なデータ（以下、「T更新データ」と称す）がDPRAM６６に送信される（ステップ１１４）。
【００７３】
最後に、T更新データが書き換えられたことを表すべく、時間同期データ更新フラグ（以下、「T更新フラグ」と称す）がONとされる（ステップ１１６）。T更新フラグは、C更新フラグと同様に、DPRAM６６の特定アドレスに書き込まれるフラグである。このため、T更新フラグの状態は、クランク角同期処理部５２からも見ることができる。
【００７４】
［クランク角同期処理部５２における具体的処理］
図５は、クランク角同期処理部５２が、特定のクランク角同期処理（以下、「特定クランク角同期処理」と称す）を進めるために実行するルーチンのフローチャートである。既述した通り、本実施形態において、クランク角同期処理部５２は、ハードウェア回路のみで構成されており、かつ、実行するべき機能モジュール毎に演算器を有している。図５に示すルーチンは、単一の機能モジュールに対応して構成されたハードウェア回路（演算器）が既定の処理を行うことにより実現される。
【００７５】
ここでは、説明の便宜上、上記単一の機能モジュールは、クランク角同期処理のみを含むものとし、図５に示すルーチンに従って特定クランク角同期処理が実行されると、当該単一の機能モジュールに含まれる全ての処理が実行されるものとする。尚、クランク角同期処理の他に時間同期処理をも含む機能モジュールを実行するためのハードウェア回路（演算器）においては、図５に示すルーチンに示す一連の処理に加えて、時間同期処理を進めるための定時割り込み処理が実行されることになる。
【００７６】
図５に示すルーチンでは、先ず、クランク角センサ４０の出力に基づいて、特定クランク角同期処理の実行タイミングが到来したか否かが判別される（ステップ１２０）。その結果、その実行タイミングの到来が認められると、次に、特定クランク角同期処理の実行に必要なセンサ出力が取り込まれる（ステップ１２２）。
【００７７】
次に、T更新フラグがONとされているか否かが判別される（ステップ１２４）。その結果、C更新フラグがONであると判別された場合は、他方の処理部により、つまり、時間同期処理部５４により、T更新データがDPRAM６６に新たに書き込まれていると判断できる。この場合、クランク角同期処理部５２は、次に、DPRAM６６に書き込まれているT更新データを取得し（ステップ１２６）、その後、T更新フラグをOFFとする（ステップ１２８）。
【００７８】
一方、上記ステップ１２４において、T更新フラグがONでないと判別された場合、時間同期処理部５４は、DPRAM６６に新たなT更新データは書き込まれていない、つまり、DPRAM６６内のデータは、改めて読み込む必要がないと判断することができる。この場合、図５に示すルーチンでは、ステップ１２６および１２８の処理がジャンプされる。
【００７９】
図５に示すルーチンでは、次に、特定クランク角同期処理が実行される（ステップ１３０）。ここでは、具体的には、イグナイタ３８に対して点火信号を供給する処理、或いは、燃料噴射弁２６に対して燃料噴射信号を供給する処理などが実行される。
【００８０】
次に、特定クランク角同期処理により駆動するべきアクチュエータ等に向けて駆動信号等が出力される（ステップ１３２）。次いで、特定クランク角同期処理の実行に伴って生成されたデータのうち、時間同期処理の実行に必要なC更新データがDPRAM６６に送信される（ステップ１３４）。最後に、C更新データが書き換えられたことを表すべく、C更新フラグがONとされる（ステップ１３６）。以上の処理が終わると、再びステップ１２０以降の処理が開始される。
【００８１】
以上説明した通り、本実施形態では、クランク角同期信号の大半をクランク角同期処理部５２において実行させ、また、時間同期処理の大半を、時間同期処理部５４において実行させることができる。このため、本実施形態のシステムによれば、高回転域においても、クランク角同期処理の大半と時間同期処理の大半とを、互いの干渉を問題とすることなく精度良く所望のタイミングで実行させることができる。このため、このシステムによれば、高回転領域においても、内燃機関１０を精度良く制御することが可能である。
【００８２】
また、本実施形態のシステムは、クランク角同期処理部５２と時間同期処理部５４との間に、両者間で共有するべきデータを記憶するためのDPRAM６６を備えている。そして、クランク角同期処理部５２および時間同期処理部５４の双方がDPRAM６６にアクセスすることにより、所望のデータの共有を可能としている。
【００８３】
更に、本実施形態では、DPRAM６６の特定アドレスをC更新フラグおよびT更新フラグに割り当てることとしている。そして、クランク角同期処理部５２にはT更新フラグがONである場合に限り、また、時間同期処理部５４にはC更新フラグがONである場合に限り、それぞれ他方の処理部のデータを取得させることとしている。このような処理によれば、未更新のデータの再度の読み込みを防ぐことができ、データの授受に伴う負荷を必要最小限に抑えることができる。このため、本実施形態のシステムによれば、データ通信の負荷が不必要に高まるのを有効に防ぎつつ、内燃機関１０の制御に必要な処理を、クランク角同期処理部５２と時間同期処理部５４とに適切に分担させることができる。
【００８４】
尚、上述した実施の形態１においては、DPRAM６６のメモリ領域のうち、クランク角同期処理部５２によりデータが書き込まれる領域が前記第１の発明における「第１記憶部」に、また、時間同期処理部５４によりデータが書き込まれる領域が前記第１の発明における「第２記憶部」に、それぞれ相当している。また、ここでは、クランク角同期処理部５２の内部に形成される個々の演算器、および時間同期処理部５４が備えるマイクロコンピュータが、それぞれ前記第１の発明における「別個の演算器」に相当している。
【００８５】
実施の形態２．
［実施の形態２の構成］
次に、図６乃至図８を参照して、本発明の実施の形態２について説明する。本実施形態のシステムは、クランク角同期処理部と時間同期処理部とで必要なデータを共有させるための手法が異なっている点を除き、実施の形態１の場合と同様である。本実施形態のシステムは、図１に示すハードウェア構成において、ECU５０を、図２に示す構成から図６に示す構成に変更することにより実現することができる。
【００８６】
図６は、本実施形態において用いられるECU５０の構成を説明するためのブロック図である。尚、図６において、上記図２に示す構成要素については、同一の符号を付してその説明を省略または簡略する。
【００８７】
図６に示すように、本実施形態におけるECU５０は、クランク角同期処理部７０および時間同期処理部７２を備えている。クランク角同期処理部７０および時間同期処理部７２は、それぞれ、DMA(Direct Memory Access)の手法で相互にデータ通信が行える点を除き、実施の形態１におけるクランク角同期処理部５２および時間同期処理部５４と同様である。
【００８８】
［DMA通信によるデータの共有］
図７は、クランク角同期処理部７０および時間同期処理部７２のうち、DMA通信に関わる部分を拡大して表したブロック図である。図７に示すように、クランク角同期処理部７０の内部には、当該処理部７０の中でクランク角系機能モジュールを実行する際に使用される通常のRAM領域７４が準備されている。更に、クランク角同期処理部７０の内部には、DMA受信バッファ７６と共にDMA送信インターフェース７８が設けられている。同様に、時間同期処理部７２の中にも、通常のRAM領域８０と共に、DMA受信バッファ８２、およびDMA送信インターフェース８４が設けられている。
【００８９】
DMAバッファ７６，８２は、それぞれ、他方の処理部に配置されているDMA送信インターフェース７８が直接的にデータの書き込むことができるメモリである。また、DMA受信バッファ７６，８２に書き込まれたデータは、必要に応じて通常のRAM領域７４，８０に書き写すことができる。そして、DMA送信インターフェース７８，８４は、それぞれ、通常のRAM領域７４，８０に保管されたデータを、直接的に他方の処理部のRAM領域７４，８０に向けて送信することができる。
【００９０】
クランク角同期処理部７０は、その内部でクランク角系機能モジュールを実行すると、その結果として生成されたデータを通常のRAM領域７４に格納する。そして、RAM領域７４に格納されるデータのうち、時間同期処理部７２で使用する必要があるもの（C更新データ）は、DMA送信インターフェース７８により時間同期処理部７２のDMA受信バッファ８２に送信される。
【００９１】
時間同期処理部７２は、DMA受信バッファ８２が受信したC更新データを必要に応じて通常のRAM領域８０にコピーする。そして、このようにして取得したC更新データを利用して時間系機能モジュールを実行する。本実施形態のシステムでは、上述した一連の処理が、クランク角同期処理部７０と時間同期処理部７２の双方で繰り返し実行される。その結果、クランク角同期処理部７０と時間同期処理部７２とで、必要なデータを共有する機能が実現されている。
【００９２】
［実施の形態２における具体的処理］
図８は、本実施形態において、時間同期処理部７２が時間同期処理を進めるために実行するルーチンのフローチャートである。尚、図８に示すルーチンは、図４に示すルーチンと同様に、時間同期処理部７２の構成要素であるマイクロコンピュータが、そこに記憶されているソフトウェアに沿って処理を実行することにより実現される。
【００９３】
図８に示すルーチンでは、先ず、時間同期処理の実行タイミングが到来したか否かが判別される（ステップ１４０）。その結果、実行タイミングの到来が認められると、時間同期処理の実行に必要なセンサ出力が取り込まれる（ステップ１４２）。
【００９４】
次に、C更新フラグがONとされているか否かが判別される（ステップ１４４）。本実施形態において、C更新フラグは、DMA受信バッファ８２内の特定ビットに割り振られており、DMA受信バッファ８２に新たなC更新データが書き込まれる際に、クランク角同期処理部７０によってONとされる。
【００９５】
上記ステップ１４４の処理によりC更新フラグがONであると判別された場合は、DMAバッファ８２に新たなC更新データが書き込まれていると判断することができる。この場合、時間同期処理部７２は、次に、DMAバッファ８２に格納されているC更新データを通常のRAM領域８０にコピーし（ステップ１４６）、その後、DMAバッファ８２内のC更新フラグに対応するビットをOFFとする（ステップ１４８）。
【００９６】
一方、上記ステップ１４４において、C更新フラグがONでないと判別された場合は、DMAバッファ８２に新たなC更新データは書き込まれていない、つまり、DMAバッファ８２内のデータは、改めて読み込む必要がないと判断することができる。この場合、図８に示すルーチンでは、ステップ１４６および１４８の処理がジャンプされる。
【００９７】
図８に示すルーチンによれば、次に、時間同期処理が実行される（ステップ１５０）。次いで、時間同期処理により駆動するべきアクチュエータ等に向けて駆動信号等が出力される（ステップ１５２）。また、時間同期処理の実行に伴って生成されたデータのうち、クランク角同期処理の実行に必要なデータ、つまり、T更新データがDMA通信の手法でクランク角同期処理部７０のDMA受信バッファ７６に送信される（ステップ１５４）。最後に、T更新データが書き換えられたことを表すべく、DMA受信バッファ７６の特定ビット、すなわち、T更新フラグが割り振られたビットがONとされる（ステップ１５６）。
【００９８】
本実施形態において、クランク角同期処理部７０は、実施の形態１の場合と同様に、ハードウェア回路のみで構成されている。また、実施の形態１の場合と同様に、クランク角同期処理部７０は、実行するべき機能モジュール毎に演算器を有するように構成される。個々の演算器では、図８に示す一連の処理に対応する処理が実行され、その結果、最新のT更新データに基づいた特定クランク角同期制御が実現される。尚、ここで実行される一連の処理は、実質的に図８に示す処理と同じであるため、その詳細な説明は省略する。
【００９９】
以上説明した通り、本実施形態のシステムでは、DMA通信の手法を用いることにより、クランク角同期処理部７０と時間同期処理部７２との間でのデータの共有を可能とすることができる。また、本実施形態においても、C更新フラグおよびT更新フラグを用いることにより、クランク角同期処理部７０および時間同期処理部７２における無駄なデータ処理の実行を避けることができる。このため、本実施形態のシステムによっても、実施の形態１のシステムと同様の効果を達成することができる。
【０１００】
尚、上述した実施の形態２においては、時間同期処理部７２に内蔵されるDMA受信バッファ８２が前記第６の発明における「第１DMA受信バッファ」に、クランク角同期処理部７０に内蔵されるDMA受信バッファ７６が前記第６の発明における「第２DMA受信バッファ」に、それぞれ相当している。
【０１０１】
また、上述した実施の形態２においては、時間同期処理部７２が、ステップ１５６の処理を実行することにより前記第７の発明における「前記時間同期データ更新フラグをオンとする手段」が、ステップ１４６の処理を実行することにより前記第７の発明における「前記第１記憶部のデータを読み出す手段」が、ステップ１４８の処理を実行することにより前記第７の発明における「前記クランク角同期データ更新フラグをオフとする手段」が、それぞれ実現されている。また、ここでは、クランク角同期処理部７０が、ステップ１５６に対応する処理を実行することにより前記第７の発明における「クランク角同期データ更新フラグをオンとする手段」が、ステップ１４６に対応する処理を実行することにより前記第７の発明における「前記第２記憶部のデータを読み出す手段」が、ステップ１４８に対応する処理を実行することにより前記第７の発明における「前記時間同期データ更新フラグをオフとする手段」が、それぞれ実現されている。
【図面の簡単な説明】
【０１０２】
【図１】本発明の実施の形態１の構成を説明するための図を示す。
【図２】本発明の実施の形態１において用いられるECUの内部構造を説明するためのブロック図である。
【図３】本発明の実施の形態１における処理分配の手法を説明するための図である。
【図４】本発明の実施の形態１において時間同期処理部が実行する一連の処理のフローチャートである。
【図５】本発明の実施の形態１においてクランク角同期処理部が実行する一連の処理のフローチャートである。
【図６】本発明の実施の形態２において用いられるECUの内部構造を説明するためのブロック図である。
【図７】図６に示すECUの内部を更に詳細に説明するためのブロック図である。
【図８】本発明の実施の形態２において時間同期処理部が実行する一連の処理のフローチャートである。
【符号の説明】
【０１０３】
１０  内燃機関
１８  スロットルバルブ
２０  スロットルモータ
２２  スロットルポジションセンサ
２４  アクセルポジションセンサ
２６  燃料噴射弁
３２，３４  VVT機構
３６  点火プラグ
３８  イグナイタ
４０  クランク角センサ
５０  ECU (Electronic Control Unit)
５２；７０  クランク角同期処理部
５４；７２  時間同期処理部
６６  DPRAM (Dual Port RAM)
【図１】
2006017054.tif 000003
【図２】
2006017054.tif 000004
【図３】
2006017054.tif 000005
【図４】
2006017054.tif 000006
【図５】
2006017054.tif 000007
【図６】
2006017054.tif 000008
【図７】
2006017054.tif 000009
【図８】
2006017054.tif 000010