気筒内に燃料を直接噴射する燃料噴射弁を備えた内燃機関に適用され、前記気筒内への燃料噴射として、主噴射と、前記主噴射の後に行われるアフター噴射とが1サイクル中に実行されるように前記燃料噴射弁の動作を制御可能な燃料噴射制御装置において、前記主噴射で噴射された燃料の火炎の位置を取得する火炎位置取得手段と、前記アフター噴射で噴射される燃料が前記火炎位置取得手段により取得された火炎の位置に到達しないように前記アフター噴射時における前記燃料噴射弁の噴射率及び前記アフター噴射の開始時期の少なくともいずれか一方を変更するアフター噴射制御手段と、を備えている燃料噴射制御装置。前記主噴射で噴射された燃料のうち最初に噴射された部分の位置を推定する先端位置推定手段と、前記主噴射で噴射された燃料のうち最後に噴射された部分の位置を推定する後端位置推定手段と、をさらに備え、前記火炎位置取得手段は、前記先端位置推定手段が推定した最初に噴射された部分の位置及び前記後端位置推定手段が推定した最後に噴射された部分の位置に基づいて火炎の位置を推定する請求項1に記載の燃料噴射制御装置。前記火炎位置取得手段として、前記気筒内における火炎の位置を検出する火炎位置検出手段が前記気筒に設けられている請求項1に記載の燃料噴射制御装置。主噴射の終了後に副噴射以下、アフター噴射と呼ぶこともある。を実行する場合、内燃機関の運転状態によってはアフター噴射の開始時期を主噴射に近付けることで等容度を増加させ、これにより燃費の悪化を低減できることが知られている。その一方で、アフター噴射による噴射された燃料が主噴射の燃料の火炎に突入するとスモークが発生することも知られている。特許文献1の装置では、アフター噴射の開始時期を主噴射の燃料の熱発生量だけで判断しており、主噴射の燃料の火炎の位置が考慮されていない。そのため、アフター噴射の燃料が主噴射の燃料の火炎に突入してスモークが発生するおそれがある。そこで、本発明は、スモークの発生を抑制可能な内燃機関の燃料噴射制御装置を提供することを目的とする。本発明の内燃機関の燃料噴射制御装置は、気筒内に燃料を直接噴射する燃料噴射弁を備えた内燃機関に適用され、前記気筒内への燃料噴射として、主噴射と、前記主噴射の後に行われるアフター噴射とが1サイクル中に実行されるように前記燃料噴射弁の動作を制御可能な燃料噴射制御装置において、前記主噴射で噴射された燃料の火炎の位置を取得する火炎位置取得手段と、前記アフター噴射で噴射される燃料が前記火炎位置取得手段により取得された火炎の位置に到達しないように前記アフター噴射時における前記燃料噴射弁の噴射率及び前記アフター噴射の開始時期の少なくともいずれか一方を変更するアフター噴射制御手段と、を備えている請求項1。本発明の燃料噴射制御装置では、アフター噴射で噴射される燃料以下、アフター噴射燃料と呼ぶことがある。が主噴射で噴射された燃料以下、主噴射燃料と呼ぶことがある。の火炎に突入することを抑制できるので、アフター噴射燃料の不完全燃焼を抑制できる。そのため、スモークの発生を抑制できる。本発明の燃料噴射制御装置の一形態においては、前記主噴射で噴射された燃料のうち最初に噴射された部分の位置を推定する先端位置推定手段と、前記主噴射で噴射された燃料のうち最後に噴射された部分の位置を推定する後端位置推定手段と、をさらに備え、前記火炎位置取得手段は、前記先端位置推定手段が推定した最初に噴射された部分の位置及び前記後端位置推定手段が推定した最後に噴射された部分の位置に基づいて火炎の位置を推定してもよい請求項2。主噴射燃料が燃焼した場合、火炎は主噴射燃料の形状に発生する。そのため、主噴射燃料が燃料噴射弁から直進している場合には、主噴射燃料のうち最後に噴射された部分の火炎がアフター噴射燃料に最も近い。一方、主噴射燃料が気筒の内面やピストン等に衝突し、進行方向が反転した場合には、主噴射燃料のうち最初に噴射された部分の火炎がアフター噴射燃料に最も近い。この形態では、主噴射燃料のうち最初に噴射された部分及び最後に噴射された部分に基づいて主噴射燃料の火炎の位置を推定する。そのため、主噴射燃料が移動している方向に拘わらず主噴射燃料の火炎のうちアフター噴射燃料に最も近い部分の位置を適切に推定できる。従って、アフター噴射燃料が主噴射燃料の火炎に突入することを抑制できる。本発明の燃料噴射制御装置の一形態においては、前記火炎位置取得手段として、前記気筒内における火炎の位置を検出する火炎位置検出手段が前記気筒に設けられていてもよい請求項3。この場合、気筒内の火炎の位置を実際に検出できるので、アフター噴射燃料が主噴射燃料の火炎に突入することをより確実に抑制できる。以上に説明したように、本発明の燃料噴射制御装置によれば、アフター噴射で噴射された燃料が主噴射で噴射された燃料の火炎に突入することを抑制できるので、スモークの発生を抑制できる。第1の形態図1は、本発明の第1の形態に係る燃料噴射制御装置が組み込まれた内燃機関を模式的に示している。内燃機関以下、エンジンと呼ぶこともある。1は、車両に走行用動力源として搭載されるディーゼルエンジンであり、複数図1では4つの気筒2が形成された機関本体3を備えている。各気筒2には吸気通路4が接続されている。吸気通路4には、吸入空気量を調整するためのスロットル弁5が設けられている。また、各気筒2には、ピストン6図1では不図示がそれぞれ往復動自在に挿入されている。各ピストン6は、コンロッド7にてクランクシャフト8とそれぞれ接続されている。各気筒2には、燃料噴射弁9がそれぞれ設けられている。燃料噴射弁9は、内部に設けられているノズルニードルを電磁石及びスプリング等で駆動することにより燃料の噴射及びその停止を行う。また、燃料噴射弁9は、ノズルニードルのリフト速度を変更可能なように構成され、これにより単位時間当たりの噴射量すなわち噴射率を変更可能なように構成されている。図2は、気筒2の断面の一部を示している。この図に示すように燃料噴射弁9は、気筒2の中心線CL上に先端部9aを気筒2内に臨ませるように設けられている。先端部9aには、燃料を噴射するための複数の噴孔不図示が設けられている。これらの噴孔は、先端部9aの周囲に周方向に等間隔に設けられている。ピストン6の頂面6aの中央部には、頂面6aから窪むピストンキャビティ10が設けられている。ピストンキャビティ10は、内周壁面10a及び底面10bを有している。底面10bは、中央部分が浅く、そこから外周側にいくほど深さが深くなるように形成されている。底面10bの外周部分と内周壁面10aとの間には環状の凹壁面10cが設けられている。この凹壁面10cは、底面10bの外周部分よりもさらに深く窪んでいる。また、この図に示すように凹壁面10cは、断面が円弧状になるように形成され、底面10bと内周壁面10aとを滑らかに接続している。これによりピストンキャビティ10の外周部分には環状溝部11が形成される。燃料噴射弁9の先端部9aからは、矢印Aで示したように環状溝部11に向かうように気筒2の半径方向かつピストン6に向けて斜めに燃料が噴射される。図1に示すようにエンジン1には、燃料タンク12と、燃料タンク12の燃料を昇圧してコモンレール13に送る昇圧ポンプ14とが設けられている。そして、コモンレール13には各燃料噴射弁9が接続されている。そのため、燃料噴射弁9には、昇圧ポンプ14で昇圧された燃料がコモンレール13を介して供給される。各燃料噴射弁9の動作は、エンジンコントロールユニットECU20にて制御される。ECU20は、マイクロプロセッサ21と、その動作に必要な種々の周辺機器を含んだ周知のコンピュータユニットである。周辺機器としては、例えばRAM、ROM等のメモリ22、及び外部との信号の入出力を制御する入出力部23等が含まれる。ECU20は、所定の制御プログラムに従ってスロットル弁5及び昇圧ポンプ14等の動作を制御することによってエンジン1を目標とする運転状態に制御する。例えば、ECU20は、コモンレール13内の燃料の圧力がエンジン1の運転状態に応じて設定された圧力に調整されるように昇圧ポンプ14の動作を制御する。ECU20には、エンジン1の運転状態を判別するために種々のセンサが接続されている。例えば、エンジン1のクランクシャフト8の角度クランク角に対応した信号を出力するクランク角センサ24、エンジン1の冷却水の温度に対応した信号を出力する水温センサ25、コモンレール13内の圧力に対応した信号を出力する燃圧センサ26、及びアクセル開度に対応した信号を出力するアクセル開度センサ27等が接続されている。その他にもECU20には種々のセンサが接続されているが、それらの図示は省略した。次にECU20による燃料噴射弁9の制御について説明する。ECU20は、エンジン1の運転状態に応じて1サイクル中に気筒2内に供給すべき燃料量を算出し、算出した量の燃料が噴射されるように電気駆動ユニットEDU28を介して燃料噴射弁9の動作を制御する。また、エンジン1では複数の燃料噴射モードが設定されており、ECU20はエンジン1の運転状態に応じて燃料噴射モードを切り替える。燃料噴射モードとしては、例えば燃料が1サイクル中に1回噴射される通常噴射モード、及び燃料が1サイクル中に主噴射と主噴射の終了後に行われるアフター噴射とで噴射されるアフター噴射モード等が設定されている。なお、主噴射とアフター噴射との間の間隔は、燃料噴射弁9を閉じてから再度開けるまでに要する最小の時間、すなわち最小インターバルが設定される。このような噴射すべき燃料量の算出方法や燃料噴射モードの切替制御は周知の方法で行えばよいため、説明を省略する。ECU20は、アフター噴射モードにおいてアフター噴射が適切に実行されるようにエンジン1の運転状態に応じてアフター噴射の噴射条件を補正する。図3は、このようにアフター噴射の噴射条件を補正するためにECU20が実行するアフター噴射補正ルーチンを示している。このルーチンは、エンジン1の運転中に所定の周期で繰り返し実行される。ECU20は、このルーチンの他に気筒2内に噴射すべき燃料量を算出するためのルーチン及び燃料噴射モードの切り替えを制御するためのルーチンをエンジン1の運転中に所定の周期で繰り返し実行している。この図に示したルーチンは、これらのルーチンと並行に実行される。図3のルーチンにおいてECU20は、まずステップS11で噴射モードがアフター噴射モードか否か判定する。アフター噴射モード以外の噴射モードの場合には今回のルーチンを終了する。一方、アフター噴射モードの場合にはステップS12に進み、ECU20はエンジン1の運転状態を取得する。エンジン1の運転状態としては、例えばクランク角度、アクセル開度、エンジン1の冷却水温、及びコモンレール13内の燃料の圧力Pinj等が取得される。続くステップS13においてECU20は、気筒2内のガス密度を算出する。気筒2内のガスはほぼ空気と考えることができる。そして、周知のように気筒2内のガス密度はピストン6が上死点に近付くほど大きくなる。また、冷却水温が高いほどガス密度が小さくなる。そこで、気筒2内のガス密度は、クランク角度及び冷却水温に基づいて算出すればよい。次のステップS14においてECU20は、噴射条件の初期値を取得する。初期値としては、主噴射の燃料噴射量Qmain、主噴射の開始時期tmain、及びアフター噴射の燃料噴射量Qafter等が取得される。なお、各燃料噴射量は、ECU20が実行する他のルーチンにて算出され、メモリ22に記憶されている。そのため、これらはメモリ22から取得すればよい。続くステップS15においてECU20は、主噴射の噴射率を算出する。主噴射の燃料噴射量Qmainが多い場合には、噴射率を大きくしないと適切な期間内に燃料の噴射が完了しない。また、燃料の圧力Pinjが高いほど噴射率が大きくなる。そこで、噴射率は、燃料噴射量Qmain及び燃料の圧力Pinjに基づいて算出すればよい。次のステップS16においてECU20は、算出した噴射率に基づいて主噴射の燃料の先端位置Ltop及び後端位置Lbackを算出する。図4に示したようにアフター噴射モードでは、燃料噴射弁9から主噴射の燃料以下、主噴射燃料と呼ぶことがある。Fmainが噴射され、その終了後にアフター噴射の燃料以下、アフター噴射燃料と呼ぶことがある。Fafterが噴射される。そして、この図に示すように主噴射燃料Fmainの先端位置Ltopは、燃料噴射弁9の先端部9aから主噴射燃料Fmainのうち最初に噴射された部分までの距離で示される。また、主噴射燃料Fmainの後端位置Lbackは、燃料噴射弁9の先端部9aから主噴射燃料Fmainのうち最後に噴射された部分までの距離で示される。そのため、この処理を実行することによりECU20が本発明の先端位置推定手段及び後端位置推定手段として機能する。図5は、主噴射燃料Fmainの形状の時間変化の一例を示している。上述したように燃料噴射弁9からはピストン6の環状溝部11に向けて燃料が噴射される。この図に示したように主噴射燃料Fmainは、環状溝部11に到達して凹壁面10cに衝突すると矢印Bで示したように凹壁面10cに沿って下方に曲がる。これにより主噴射燃料Fmainの進行方向が逆になる。その後、主噴射燃料Fmainは、この図の右側の図に示したように燃料噴射弁9に近付くように移動する。そのため、主噴射燃料Fmainのうち最初に噴射された部分は、まず燃料噴射弁9の先端部9aから凹壁面10cに向かって移動する。そして、凹壁面10cに到達すると凹壁面10cに沿って曲がり、その後凹壁面10cの中心線CL側の端から燃料噴射弁9に近付くように移動する。そのため、先端位置Ltopは、主噴射燃料Fmainが凹壁面10cに到達するまでは大きくなり、到達して反転した後は小さくなる。次に先端位置Ltopの具体的な算出方法について説明する。先端位置Ltopを算出する場合、まず主噴射燃料Fmainが凹壁面10cに衝突せずに直進した場合の到達距離を算出する。燃料の到達距離は、例えば以下に示す広安の式を用いる等公知の算出方法で算出すればよい。なお、広安の式においてSは到達距離ペネトレーションを、ρlは燃料の密度を、ρaは雰囲気密度を、tは噴射開始後の時間をそれぞれ示している。また、Dは燃料噴射弁9の噴孔径を、Lは燃料噴射弁9の噴孔長をそれぞれ示している。そして、ΔPは噴射圧―雰囲気圧を示し、αはC’×L/D0.13を示している。なお、ΔPは噴射率に基づいて求められる。Cn、C、C’はいずれも定数である。広安の式では、まず3式を用いて分裂時間tbを求める。そして、tが0≦t<tbの場合には1式を用いて、tがtb≦tの場合には2を用いて到達距離を算出する。なお、1式の代わりに1’式を、2式の代わりに2’式を用いて到達距離を算出してもよい。次に算出した到達距離が、燃料噴射弁9の先端部9aから凹壁面10cまでの距離以下、直進距離と呼ぶことがある。以下か否か判定する。到達距離が直進距離以下であれば、到達距離が先端位置Ltopになる。一方、到達距離が直進距離より大きい場合には、上述した主噴射燃料Fmainのうち最初に噴射された部分の動きに応じて算出される。この場合、まず算出された到達距離から直進距離を減じ、残余の距離を求める。そして、この残余の距離が、まず凹壁面10cに沿って延び、続いて凹壁面10cの中心線CL側の端から燃料噴射弁9に近付くように延びるとして先端位置Ltopを算出する。そのため、先端位置Ltopは図6に示したような時間変化を示す。図6は主噴射燃料Fmainの先端位置Ltop及び後端位置Lbackの時間変化の一例を示している。なお、この図に示した噴射信号は、ECU20が燃料噴射弁9に出力する信号である。噴射信号がONの場合には燃料噴射弁9が開弁され、OFFの場合には燃料噴射弁9が閉弁される。そのため、この図に示した例では主噴射が時刻T1から時刻T2まで実行され、アフター噴射が時刻T3から実行されている。時刻T2から時刻T3までの間には、上述したように燃料噴射弁9の最小インターバルが設定されている。この図の破線Ltop’は、主噴射燃料Fmainが凹壁面10cに衝突せずに直進した場合の到達距離を示している。主噴射燃料Fmainは、後端位置Lbackが凹壁面10cに到達する前に燃焼し始める。そのため、後端位置Lbackを算出する場合には凹壁面10cによる反転を考慮する必要がない。従って、後端位置Lbackは上述した燃料の到達距離を算出する方法で算出できる。なお、後端位置Lbackは、先端位置Ltop及び主噴射において燃料が噴射された時間に基づいて算出してもよい。先端位置Ltop及び後端位置Lbackを算出した後はステップS17に進み、ECU20は主噴射燃料Fmainの火炎後端位置δfireを算出する。なお、火炎後端位置δfireは、主噴射燃料Fmainの火炎のうち燃料噴射弁9に最も近い部分の位置である。上述したように主噴射燃料Fmainは、凹壁面10cに沿って曲がり反転する。そのため、先端位置Ltopが後端位置Lbackよりも燃料噴射弁9から遠い場合には図7に示すように後端位置Lbackが火炎後端位置δfireになる。一方、図8に示すように先端位置Ltopが後端位置Lbackよりも燃料噴射弁9に近い場合には先端位置Ltopが火炎後端位置δfireになる。図6に示した例では、時刻T2~T4までは後端位置Lbackが火炎後端位置δfireになり、時刻T4以降は先端位置Ltopが火炎後端位置δfireになる。そのため、火炎後端位置δfireは、この図に実線F1で示したように変化する。なお、この処理を実行することによりECU20が本発明の火炎位置取得手段として機能する。次のステップS18においてECU20は、アフター噴射の噴射率の初期値以下、初期噴射率と呼ぶ。を算出する。この初期噴射率も主噴射の噴射率と同様に噴射条件の初期値として取得した燃料噴射量Qafter及び燃料の圧力Pinjに基づいて算出すればよい。続くステップS19においてECU20は、アフター噴射の開始時期tafterを算出する。この開始時期tafterには、主噴射の終了時期に燃料噴射弁9の最小インターバルを加えた値が設定される。次のステップS20においてECU20は、算出したアフター噴射の初期噴射率及び開始時期tafterに基づいてアフター噴射の先端位置Lafterを算出する。この先端位置Lafterは、図4に示すように燃料噴射弁9の先端部9aからアフター噴射燃料Fafterのうち最初に噴射された部分までの距離で示される。そのため、先端位置Lafterは、上述した主噴射燃料Fmainの先端位置Ltop及び後端位置Lbackと同様に広安の式を用いて算出する等公知の算出方法で算出すればよい。ただし、アフター噴射は時刻T3から開始されるので、図6に示したように先端位置Lafterは時刻T3まで0である。続くステップS21においてECU20は、主噴射の火炎後端位置δfireからアフター噴射の先端位置Lafterを減じた値以下、燃料間距離と呼ぶことがある。が予め設定した所定のしきい値TH以上か否か判定する。しきい値THには、例えば図6に示したようにアフター噴射燃料Fafterが主噴射燃料Fmainの火炎に突入しない距離の最小値が設定される。燃料間距離がしきい値TH未満の場合にはステップS22に進み、ECU20はアフター噴射の噴射率を変更する。図9~図11を参照してアフター噴射の噴射率とアフター噴射の先端位置Lafterとの関係について説明する。図9は、燃料噴射弁9のノズルニードルのリフト速度と燃料の到達距離の時間変化との関係の一例を示している。この図に示すようにリフト速度が遅いほど到達距離が大きくなり難くなる。すなわち、リフト速度が遅いほど到達距離の変化量が小さくなる。また、この図に示すように噴射から時間が経過するほど到達距離の変化量が小さくなる。図10は、主噴射とアフター噴射とを同じリフト速度で行った場合の主噴射燃料Fmainの先端位置Ltop、後端位置Lback、及びアフター噴射燃料Fafterの先端位置Lafterの時間変化の一例を示している。上述したように到達距離の変化量は、噴射から時間が経過するほど小さくなる。そのため、アフター噴射が実行されたときはアフター噴射の先端位置Lafterの変化量は大きいが、主噴射の先端位置Ltop及び後端位置Lbackの変化量は小さくなっている。従って、主噴射のリフト速度とアフター噴射のリフト速度とが同じ場合には、この図に示したように時刻T5においてアフター噴射燃料Fafterが主噴射燃料Fmainの火炎に突入する。そこで、図11に示すようにアフター噴射のリフト速度を遅くして噴射率を小さくし、先端位置Lafterの変化量を小さくする。これによりアフター噴射燃料Fafterが主噴射燃料Fmainの火炎に突入することが回避される。なお、図11中には比較例としてアフター噴射を主噴射と同じリフト速度で行った場合の噴射率の時間変化を破線で示した。このようにアフター噴射のリフト速度を遅くして噴射率を小さくすることにより、燃料間距離を大きくできる。そこで、図3のステップS22では、アフター噴射の噴射率を初期噴射率より小さい値に変更する。具体的には、例えば予め低下量を設定しておき、初期噴射量のときのリフト速度からその低下量を減じればよい。これにより噴射率を低減できる。なお、低下量は、噴射率が急に変化しないように適宜に設定すればよい。このように噴射率を変更することにより、ECU20が本発明のアフター噴射制御手段として機能する。アフター噴射の噴射率を変更した後はステップS20に戻り、ECU20は燃料間距離がしきい値TH以上になるまでステップS20~S22の処理を繰り返し実行する。一方、燃料間距離がしきい値TH以上の場合にはステップS23に進み、ECU20は補正後のアフター噴射のリフト速度を補正後のアフター噴射の噴射条件としてメモリ22に出力する。なお、この補正後の噴射条件は、ECU20が燃料噴射弁9の動作を制御するために実行する他の制御ルーチンにて使用される。その後、今回のルーチンを終了する。以上に説明したように、第1の形態によれば、アフター噴射燃料Fafterが主噴射燃料Fmainの火炎に突入しないようにアフター噴射の噴射率を変更するので、アフター噴射燃料Fafterの不完全燃焼を抑制できる。そのため、スモークの発生を抑制できる。また、図11に示したようにアフター噴射の開始時期は変更しないので、等容度を増加させることができる。そのため、エンジン1の燃費を改善できる。なお、上述した説明では、燃料噴射弁9のリフト速度を変更してアフター噴射の噴射率を変更したが、噴射率を変更する方法はこれに限定されない。例えば、噴射する燃料量を変化させて噴射率を変更してもよいし、噴射する燃料の圧力を変更して噴射率を変更してもよい。また、上述した説明ではアフター噴射の噴射率を変更したが、その噴射率の代わりにアフター噴射の開始時期を変更し、これによりアフター噴射燃料Fafterが主噴射燃料Fmainの火炎に突入することを抑制してもよい。具体的には、図12に示すようにアフター噴射の開始時期を遅角させ、主噴射とアフター噴射との間の間隔を拡げる。これによりこの図に示したようにアフター噴射燃料Fafterが主噴射燃料Fmainの火炎に突入することを抑制できるので、スモークの発生を抑制できる。なお、この場合には図3のステップS22において噴射率の代わりに開始時期を変更し、ステップS23では補正後の開始時期が補正後のアフター噴射の噴射条件として出力すればよい。さらに、アフター噴射の噴射率と開始時期の両方を変更してアフター噴射燃料Fafterが主噴射燃料Fmainの火炎に突入することを抑制してもよい。第1の形態では、ECU20が図3のルーチンを実行することにより図1に示すようにマイクロプロセッサ21は、主噴射燃料Fmainの噴霧先端位置算出部21a、主噴射燃料Fmainの噴霧後端位置算出部21b、主噴射燃料Fmainの火炎後端位置算出部21c、噴射率算出部21d、アフター噴射開始時期算出部21e、アフター噴射噴射率補正部21f、及び噴射条件補正部21gを有する。第2の形態次に図13~図19を参照して本発明の第2の形態に係る燃料噴射制御装置について説明する。図13は、この形態に係る燃料噴射制御装置が組み込まれた内燃機関を模式的に示している。この図に示したようにこの形態では、気筒2に火炎位置検出手段としての火炎位置センサ30が設けられている点が異なる。それ以外は第1の形態と同じであるため、第1の形態と共通の部分には同一の符号を付して説明を省略する。図14は、火炎位置センサ30が設けられている気筒2の断面の一部を拡大して示している。この図に示したように火炎位置センサ30は、第1~第5センサ30a~30eを備えている。これらのセンサ30a~30bは、第1センサ30a、第2センサ30b、...、第5センサ30eの順番で気筒2の半径方向に一列に並ぶように等間隔で配置されている。また、この図に示すように第1センサ30aが最も中心に近い位置に配置され、第5センサ30eが最も外周に配置されている。各センサ30a~30eは、火炎の光を検出すると信号を出力し、その光が消えると信号の出力を停止する。図13に示したように火炎位置センサ30はECU20に接続されており、各センサ30a~30eの信号はECU20に入力される。図15は、この形態でECU20が実行するアフター噴射補正ルーチンを示している。なお、図15において図3と共通の処理には同一の符号を付して説明を省略する。このルーチンは、エンジン1の運転中の所定の周期で繰り返し実行される。この形態においてもECU20は、このルーチンの他に気筒2内に噴射すべき燃料量を算出するためのルーチン及び燃料噴射モードの切り替えを制御するためのルーチンを所定の周期で繰り返し実行している。そして、この図に示したルーチンはこれらのルーチンと並行に実行される。このルーチンにおいてECU20は、ステップS12まで図3と同様に処理を進める。続くステップS14においてECU20は、噴射条件の初期値を取得する。次のステップS31においてECU20は、燃料が噴射される前の気筒2内の状態を火炎位置センサ30で検出する。この噴射前状態の検出値は、次に火炎を検出する際の基準値として使用される。次のステップS32においてECU20は、主噴射の開始時期か否か判定する。主噴射の開始時期では無い場合には今回のルーチンを終了する。一方、主噴射の開始時期である場合にはステップS33に進み、ECU20は火炎位置センサ30で主噴射及びアフター噴射で噴射された燃料の火炎を検出する。なお、既に火炎の検出を実施していた場合にはその検出を継続する。続くステップS34においてECU20は、主噴射及びアフター噴射で噴射された燃料の燃焼が終了したか否か判定する。燃焼の終了は、例えば火炎位置センサ30の検出値が上述した基準値程度になったか否かに基づいて判定すればよい。燃焼中と判定した場合にはステップS33に戻り、ECU20は燃焼が終了するまでステップS33、S34の処理を繰り返し実行する。図16は、このように火炎を検出したときに火炎位置センサ30の各センサ30a~30eから出力される信号の時間変化と、各燃料Fmain、Fafterの火炎の位置の時間変化とを示している。この図の実線F11は、主噴射燃料Fmainの火炎のうち最も燃料噴射弁9から遠い部分の位置の時間変化を示している。また、実線F12は、主噴射燃料Fmainの火炎後端位置Lfire-mainの時間変化を示している。実線F13は、アフター噴射燃料Fafterの火炎のうち最も燃料噴射弁9から遠い部分の位置以下、火炎先端位置と呼ぶことがある。Lfire-afterの時間変化を示している。この図に示した例では、主噴射が時刻T11から時刻T12まで実行され、アフター噴射が時刻T13から時刻T14まで実行されている。時刻T12から時刻T13までの間には、燃料噴射弁9の最小インターバルが設定されている。図17A~図17Dは、図16の期間a~dにおける主噴射燃料Fmain及びアフター噴射燃料Fafterの火炎の形状の時間変化の一例を示している。図16の時刻T11において主噴射燃料Fmainの噴射が開始されるので、期間aでは図17Aに示すようにその燃料Fmainの火炎が先端部9aから凹壁面10cに向かって延びる。なお、燃料は燃料噴射弁9から噴射された後暫くしてから燃焼し始めるので、火炎は時刻T11よりも後に発生する。そして、各センサ30a~30eがその火炎を検出すると図16に示すように各センサ30a~30eから信号が出力される。図17Aに示すように火炎は先端部9aから気筒2の半径方向に延びるので、第1センサ30a、第2センサ30b、...、第5センサ30eの順番で各センサ30a~30eから信号が出力される。図16の時刻T12で主噴射の実行が終了すると主噴射燃料Fmainの火炎後端が発生する。そして、この図に示すようにこの火炎後端が第1センサ30a、第2センサ30b、及び第3センサ30cの前を通過するとこれらのセンサ30a~30cからの信号の出力が停止する。そして、時刻T12~時刻T13までの期間bにおいては、図17Bに示すように主噴射燃料Fmainの火炎が凹壁面10cに衝突し、その後凹壁面10cに沿って下方に曲がる。図16の時刻T13においてアフター噴射が実行されると図17Cに示すようにアフター噴射燃料Fafterの火炎が発生する。そして、このアフター噴射燃料Fafterの火炎は、アフター噴射燃料Fafterの火炎先端位置Lfire-afterが主噴射燃料Fmainの火炎後端位置Lfire-mainに到達する時刻T15図16参照まで、すなわち期間cの間、主噴射燃料Fmainを追いかけるように先端部9aから凹壁面10cに向かって延びる。そして、図16に示すように第1センサ30a~第3センサ30cがこのアフター噴射燃料Fafterの火炎を検出するとこれらのセンサ30a~30cから再度信号が出力される。時刻T15以降の期間dでは、図17Dに示したようにアフター噴射燃料Fafterの火炎と主噴射燃料Fmainの火炎とが混じり合う。この際、各センサ30a~30eはこの火炎を検出するので、各センサ30a~30eから信号が出力される。図15に戻ってルーチンの説明を続ける。燃焼が終了したと判定した場合にはステップS35に進み、ECU20は主噴射燃料Fmainの火炎後端位置Lfire-mainを算出する。この火炎後端位置Lfire-mainは図16に実線F12で示したように、主噴射の開始後に各センサ30a~30eから出力された信号が最初に停止した時期を結ぶことにより求めることができる。これにより火炎後端位置Lfire-mainの時間変化が算出される。続くステップS36においてECU20は、アフター噴射燃料Fafterの火炎先端位置Lfire-afterを算出する。この火炎先端位置Lfire-afterは、図16に実線F13で示したように各センサ30a~30eの信号の出力が一度停止し、その後再度信号が出力された時期を結ぶことにより求めることができる。これにより火炎先端位置Lfire-afterの時間変化が算出される。次のステップS37においてECU20は、主噴射燃料Fmainの火炎後端位置Lfire-mainからアフター噴射燃料Fafterの火炎先端位置Lfire-afterを減じた値が0より大きいか否か判定する。この判定は、アフター噴射が実行されてから主噴射及びアフター噴射で噴射された燃料の燃焼が終了するまでの期間について行われる。そのため、例えば図16に示した例では時刻T15において火炎後端位置Lfire-mainから火炎先端位置Lfire-afterを減じた値が0になるので、この処理が否定判定される。火炎後端位置Lfire-mainから火炎先端位置Lfire-afterを減じた値が0より大きい場合には今回のルーチンを終了する。一方、火炎後端位置Lfire-mainから火炎先端位置Lfire-afterを減じた値が0以下の場合にはステップS38に進み、ECU20はアフター噴射の噴射率を変更する。図18、図19を参照してアフター噴射の噴射率の変更方法について説明する。図18は、主噴射とアフター噴射とを同じリフト速度で行った場合の主噴射燃料Fmainの火炎後端位置Lfire-main及びアフター噴射燃料Fafterの火炎先端位置Lfire-afterの時間変化の一例を示している。図9に示したように燃料噴射弁9のリフト速度が遅いほど燃料の到達距離の変化量が小さくなる。また、噴射から時間が経過するほど到達距離の変化量が小さくなる。そのため、主噴射とアフター噴射とを同じリフト速度で行うとアフター噴射燃料Fafterが主噴射燃料Fmainの火炎に突入する。図19は、アフター噴射のリフト速度を主噴射のリフト速度よりも遅くし、これによりアフター噴射の噴射率を小さくした場合の主噴射燃料Fmainの火炎後端位置Lfire-main及びアフター噴射燃料Fafterの火炎先端位置Lfire-afterの時間変化の一例を示している。なお、この図中には比較例としてアフター噴射を主噴射と同じリフト速度で行った場合の噴射率の時間変化を破線で示した。第1の形態でも説明したようにアフター噴射のリフト速度を遅くして噴射率を小さくすることにより燃料間距離を大きくできる。これによりアフター噴射燃料Fafterが主噴射燃料Fmainの火炎に突入することを回避できる。そこで、図15のステップS38では図3のステップS22と同様にアフター噴射の噴射率を低下させる。この際には、噴射率が急に変化してエンジン1の運転状態が不安定にならないように適宜に低下させればよい。次のステップS23においてECU20は補正後のアフター噴射のリフト速度を補正後のアフター噴射の噴射条件としてメモリ22に出力する。その後、今回のルーチンを終了する。以上に説明したように、この形態でも第1の形態と同様にアフター噴射燃料Fafterが主噴射燃料Fmainの火炎に突入することを抑制できる。これによりアフター噴射燃料Fafterの不完全燃焼を抑制できるので、スモークの発生を抑制できる。また、アフター噴射の開始時期は変更しないので、等容度を増加させ、これによりエンジン1の燃費を改善できる。第2の形態では、火炎位置センサ30で主噴射燃料Fmainの火炎及びアフター噴射燃料Fafterの火炎のそれぞれを検出し、その検出結果に基づいてアフター噴射の噴射率を変更する。この場合、実際に発生した火炎に基づいて噴射率を変更するので、アフター噴射燃料Fafterの不完全燃焼をより確実に抑制できる。なお、この形態でも燃料噴射弁9のリフト速度の他にアフター噴射で噴射する燃料量やアフター噴射の実行時の燃料の圧力を変更してアフター噴射の噴射率を変更してもよい。また、アフター噴射の噴射率の代わりにアフター噴射の開始時期を変更してアフター噴射燃料Fafterが主噴射燃料Fmainの火炎に突入することを抑制してもよい。例えば、図20に示したようにアフター噴射の開始時期を遅角させ、主噴射とアフター噴射との間の間隔を拡げる。これによりアフター噴射燃料Fafterが主噴射燃料Fmainの火炎に突入することを抑制できるので、スモークの発生を抑制できる。この場合には、図15のステップS38においてアフター噴射の噴射率の代わりに開始時期が変更される。そして、ステップS23では、補正後の開始時期が補正後のアフター噴射の噴射条件として出力される。さらに、この形態においてもアフター噴射の噴射率と開始時期の両方を変更してアフター噴射燃料Fafterが主噴射燃料Fmainの火炎に突入することを抑制してもよい。第2の形態では、ECU20が図15のルーチンを実行することにより図13に示すようにマイクロプロセッサ21は、主噴射燃料Fmainの火炎後端位置算出部21c、アフター噴射燃料Fafterの火炎先端位置算出部21h、火炎位置比較部21i、及びアフター噴射条件補正部21jを有する。本発明は、上述した各形態に限定されることなく、種々の形態にて実施することができる。例えば、本発明が適用される内燃機関はディーゼルエンジンに限定されない。気筒内に燃料を直接噴射し、かつ主噴射の後にアフター噴射を実行する種々の内燃機関に本発明を適用してよい。気筒に設ける火炎位置センサは、火炎の光を検出するセンサに限定されない。例えば、複数のセンサ部の温度の変化に基づいて火炎の位置を検出するセンサでもよい。