# CI Controller

Compression-ignition controller that includes air mass flow, torque, and EGR estimation

**Libraries:**

Powertrain Blockset /
Propulsion /
Combustion Engine Controllers

## Description

The CI Controller block implements a compression-ignition (CI) controller with air mass flow, torque, exhaust gas recirculation (EGR) flow, exhaust back-pressure, and exhaust gas temperature estimation. You can use the CI Controller block in engine control design or performance, fuel economy, and emission tradeoff studies. The core engine block requires the commands that are output from the CI Controller block.

The block uses the commanded torque and measured engine speed to determine these open-loop actuator commands:

Injector pulse-width

Fuel injection timing

Variable geometry turbocharger (VGT) rack position

EGR valve area percent

The CI Controller block has two subsystems:

The

`Controller`

subsystem — Determines the commands based on tables that are functions of commanded torque and measured engine speed.Based On Determines Commands for Commanded torque

Measured engine speed

Injector pulse-width

Fuel injection timing

VGT rack position

EGR valve area percent

The

`Estimator`

subsystem — Determines estimates based on these engine attributes.Based On Estimates Measured engine speed

Fuel injection timing

Cycle average intake manifold pressure and temperature

Fuel injector pulse-width

Absolute ambient pressure

EGR valve area percent

VGT rack position

VGT speed

Air mass flow

Torque

Exhaust gas temperature

Exhaust gas back-pressure

EGR valve gas mass flow

The figure illustrates the signal flow.

The figure uses these variables.

N | Engine speed |

MAP | Cycle average intake manifold absolute pressure |

MAT | Cycle average intake manifold gas absolute temperature |

EGRap,
EGR_{cmd} | EGR valve area percent and EGR valve area percent command, respectively |

VGT_{pos} |
VGT rack position |

N_{vgt} |
Corrected turbocharger speed |

RP_{cmd} |
VGT rack position command |

$P{w}_{inj}$ |
Fuel injector pulse-width |

MAINSOI | Start of injection timing for main fuel injection pulse |

The Model-Based Calibration Toolbox™ was used to develop the tables that are available with the Powertrain Blockset™.

### Controller

The controller governs the combustion process by commanding VGT rack position, EGR valve area percent, fuel injection timing, and injector pulse-width. Feedforward lookup tables, which are functions of measured engine speed and commanded torque, determine the control commands.

**Air**

The controller commands the EGR valve area percent and VGT rack position. Changing the VGT rack position modifies the turbine flow characteristics. At low-requested torques, the rack position can reduce the exhaust back pressure, resulting in a low turbocharger speed and boost pressure. When the commanded fuel requires additional air mass flow, the rack position is set to close the turbocharger vanes, increasing the turbocharger speed and intake manifold boost pressure.

The variable geometry turbocharger (VGT) rack position lookup table is a function of commanded torque and engine speed

$R{P}_{cmd}={f}_{RPcmd}(Tr{q}_{cmd},N)$

where:

*RP*is VGT rack position command, in percent._{cmd}*Trq*is commanded engine torque, in N·m._{cmd}*N*is engine speed, in rpm.

The commanded exhaust gas recirculation (EGR) valve area percent lookup table is a function of commanded torque and engine speed

$EG{R}_{cmd}={f}_{EGRcmd}(Tr{q}_{cmd},N)$

where:

*EGR*is commanded EGR valve area percent, in percent._{cmd}*Trq*is commanded engine torque, in N·m._{cmd}*N*is engine speed, in rpm.

**Fuel**

To initiate combustion, a CI engine injects fuel directly into the combustion chamber. After the injection, the fuel spontaneously ignites, increasing cylinder pressure. The total mass of the injected fuel and main injection timing determines the torque production.

Assuming constant fuel rail pressure, the CI controller commands the injector pulse-width based on the total requested fuel mass:

$P{w}_{inj}=\frac{{F}_{cmd,tot}}{{S}_{inj}}$

The equation uses these variables.

$P{w}_{inj}$ | Fuel injector pulse-width |

S_{inj} | Fuel injector slope |

F_{cmd,tot} | Commanded total fuel mass per injection |

MAINSOI | Main start-of-injection timing |

N | Engine speed |

The commanded total fuel mass per injection table is a function of the torque command and engine speed

${F}_{cmd,tot}={f}_{Fcmd,tot}(Tr{q}_{cmd},N)$

where:

*F*=_{cmd,tot}*F*is commanded total fuel mass per injection, in mg per cylinder.*Trq*is commanded engine torque, in N·m._{cmd}*N*is engine speed, in rpm.

The main start-of-injection (SOI) timing lookup table is a function of commanded fuel mass and engine speed

$$MAINSOI=f({F}_{cmd,tot},N)$$

where:

*MAINSOI*is the main start-of-injection timing, in degrees crank angle after top dead center (degATDC).*F*=_{cmd,tot}*F*is commanded fuel mass, in mg per injection.*N*is engine speed, in rpm.

**Idle Speed**

When the commanded torque is below a threshold value, the idle speed controller regulates the engine speed.

If | Idle Speed Controller |
---|---|

Trq < _{cmd,input}Trq_{idlecmd,enable} | Enabled |

Trq ≤ _{idlecmd,enable}Trq_{cmd,input} | Not enabled |

The idle speed controller uses a discrete PI controller to regulate the target idle speed by commanding a torque.

The PI controller uses this transfer function:

${C}_{idle}\left(z\right)={K}_{p,idle}+{K}_{i,idle}\frac{{t}_{s}}{z-1}$

The idle speed commanded torque must be less than the maximum commanded torque:

0 ≤ *Trq _{idlecomd}* ≤

*Trq*

_{idlecmd,max}Idle speed control is active under these conditions. If the
commanded input torque drops below the threshold for enabling the
idle speed controller (*Trq _{cmd,input}* <

*Trq*), the commanded engine torque is given by:

_{idlecmd,enable}*Trq _{cmd}* = max(

*Trq*,

_{cmd,input}*Trq*).

_{idlecmd}The equations use these variables.

Trq_{cmd} | Commanded engine torque |

Trq_{cmd,input} | Input commanded engine torque |

Trq_{idlecmd,enable} | Threshold for enabling idle speed controller |

Trq_{idlecmd} | Idle speed controller commanded torque |

Trq_{idlecmd,max} | Maximum commanded torque |

N_{idle} | Base idle speed |

K_{p,idle} | Idle speed controller proportional gain |

K_{i,idle} | Idle speed controller integral gain |

**Speed Limiter**

To prevent over revving the engine, the block implements an engine speed limit controller that
limits the engine speed to the value specified by the **Rev-limiter speed
threshold** parameter on the **Controls** > **Idle
Speed** tab.

If the engine speed, *N*, exceeds the engine speed limit,
*N _{lim}*, the block sets the commanded engine
torque to 0.

To smoothly transition the torque command to 0 as the engine speed approaches the speed limit, the block implements a lookup table multiplier. The lookup table multiplies the torque command by a value that ranges from 0 (engine speed exceeds limit) to 1 (engine speed does not exceed the limit).

### Estimator

Using the CI Core Engine block, the CI
Controller block estimates the air mass flow rate, EGR valve
mass flow, exhaust back-pressure, engine torque, AFR, and exhaust
temperature from sensor feedback. The `Info`

port
provides the estimated values, but block does not use them to determine
the open-loop engine actuator commands.

**Air Mass Flow**

To calculate the air mass flow, the compression-ignition (CI) engine uses the CI Engine Speed-Density Air Mass Flow Model. The speed-density model uses the speed-density equation to calculate the engine air mass flow, relating the engine intake port mass flow to the intake manifold pressure, intake manifold temperature, and engine speed.

**EGR Valve Mass Flow**

To calculate the estimated exhaust gas recirculation (EGR) valve mass flow, the block calculates the EGR flow that would occur at standard temperature and pressure conditions, and then corrects the flow to actual temperature and pressure conditions. The block EGR calculation uses estimated exhaust back-pressure, estimated exhaust temperature, standard temperature, and standard pressure.

$${\dot{m}}_{egr,est}={\dot{m}}_{egr,std}\frac{{P}_{exh,est}}{{P}_{std}}\sqrt{\frac{{T}_{std}}{{T}_{exh,est}}}$$

The standard exhaust gas recirculation (EGR) mass flow is a lookup table that is a function of the standard flow pressure ratio and EGR valve flow area

$${\dot{m}}_{egr,std}=f(\frac{MAP}{{P}_{exh,est}},EGRap)$$

where:

$${\dot{m}}_{egr,std}$$ is the standard EGR valve mass flow, in g/s.

*P*is the estimated exhaust back-pressure, in Pa._{exh,est}*MAP*is the cycle average intake manifold absolute pressure, in Pa.*EGRap*is the measured EGR valve area, in percent.

The equations use these variables.

$${\dot{m}}_{egr,est}$$ | Estimated EGR valve mass flow |

$${\dot{m}}_{egr,std}$$ | Standard EGR valve mass flow |

${P}_{std}$ | Standard pressure |

${T}_{std}$ | Standard temperature |

| Estimated exhaust manifold gas temperature |

MAP | Measured cycle average intake manifold absolute pressure |

| Estimated exhaust back-pressure |

${P}_{Amb}$ | Absolute ambient pressure |

EGRap | Measured EGR valve area percent |

**Exhaust Back-Pressure**

To estimate the EGR valve mass flow, the block requires an estimate of the exhaust back-pressure. To estimate the exhaust back-pressure, the block uses the ambient pressure and the turbocharger pressure ratio.

$${P}_{exh,est}={P}_{Amb}P{r}_{turbo}$$

For the turbocharger pressure ration calculation, the block uses two lookup tables. The first lookup table determines the approximate turbocharger pressure ratio as a function of turbocharger mass flow and corrected turbocharger speed. Using a second lookup table, the block corrects the approximate turbocharger pressure ratio for VGT rack position.

$$\begin{array}{l}P{r}_{turbo}=f({\dot{m}}_{airstd},{N}_{vgtcorr})f(VG{T}_{pos})\\ \text{where:}\\ {N}_{vgtcorr}=\frac{{N}_{vgt}}{\sqrt{{T}_{exh,est}}}\end{array}$$

The equations use these variables.

$${\dot{m}}_{egr,est}$$ | Estimated EGR valve mass flow |

$${\dot{m}}_{egr,std}$$ | Standard EGR valve mass flow |

${\dot{m}}_{port,est}$ | Estimated intake port mass flow rate |

$${\dot{m}}_{airstd}$$ | Standard air mass flow |

EGRap | Measured EGR valve area |

MAP | Measured cycle average intake manifold absolute pressure |

MAT | Measured cycle average intake manifold gas absolute temperature |

${P}_{std}$ | Standard pressure |

${T}_{std}$ | Standard temperature |

| Estimated exhaust manifold gas temperature |

| Turbocharger pressure ratio correction for VGT rack position |

| Turbocharger pressure ratio |

| Estimated exhaust back-pressure |

${P}_{Amb}$ | Absolute ambient pressure |

N_{vgtcorr} | Corrected turbocharger speed |

VGT_{pos} | Measured VGT rack position |

The exhaust-back pressure calculation uses these lookup tables:

The turbocharger pressure ratio, corrected for variable geometry turbocharger (VGT) speed, is a lookup table that is a function of the standard air mass flow and corrected turbocharger speed, $$P{r}_{turbo}=f({\dot{m}}_{airstd},{N}_{vgtcorr})$$, where:

*Pr*is the turbocharger pressure ratio, corrected for VGT speed._{turbo}$${\dot{m}}_{airstd}$$ is the standard air mass flow, in g/s.

*N*is the corrected turbocharger speed, in rpm/K^(1/2)._{vgtcorr}

To calculate the standard air mass flow through the turbocharger, the block uses conservation of mass, the estimated intake port, and EGR mass flows (from the last estimated calculation). The calculation assumes negligible exhaust manifold filling dynamics.

$${\dot{m}}_{airstd}=({\dot{m}}_{port,est}-{\dot{m}}_{egr,est})\frac{{P}_{std}}{MAP}\sqrt{\frac{MAT}{{T}_{std}}}$$

The variable geometry turbocharger pressure ratio correction is a function of the rack position,

*Pr*= ƒ(_{vgtcorr}*VGT*), where:_{pos}*Pr*is the turbocharger pressure ratio correction._{vgtcorr}*VGT*is the variable geometry turbocharger (VGT) rack position._{pos}

**Engine Torque**

To calculate the engine torque, you can configure the block to use either of these torque models.

Brake Torque Model | Description |
---|---|

CI Engine Torque Structure Model |
The CI core engine torque structure model determines the engine torque by reducing the maximum engine torque potential as these engine conditions vary from nominal: Start of injection (SOI) timing Exhaust back-pressure Burned fuel mass Intake manifold gas pressure, temperature, and oxygen percentage Fuel rail pressure
To account for the effect of post-inject fuel on torque, the model uses a calibrated torque offset table. |

CI Engine Simple Torque Model | For the simple engine torque calculation, the CI engine uses a torque lookup table map that is a function of engine speed and injected fuel mass. |

**Exhaust Temperature**

The exhaust temperature calculation depends on the torque model. For both torque models, the block implements lookup tables.

Torque Model | Description | Equations |
---|---|---|

| Exhaust temperature lookup table is a function of the injected fuel mass and engine speed. |
${T}_{exh}={f}_{Texh}(F,N)$ |

`Torque Structure` |
The nominal exhaust temperature,
SOI timing Intake manifold gas pressure Intake manifold gas temperature Intake manifold gas oxygen percentage Fuel rail pressure Optimal temperature
The exhaust temperature, ΔT, that
accounts for post and late injections during the expansion and exhaust strokes._{post} |
$\begin{array}{l}{T}_{exhnom}=SO{I}_{exhteff}MA{P}_{exhteff}MA{T}_{exhteff}O2{p}_{exhteff}FUEL{P}_{exhteff}Tex{h}_{opt}\\ {T}_{exh}={T}_{exhnom}+\Delta {T}_{post}\\ \\ SO{I}_{exhteff}={f}_{SO{I}_{exhteff}}\left(\Delta SOI,N\right)\\ MA{P}_{exhteff}={f}_{MA{P}_{exhteff}}\left(MA{P}_{ratio},\lambda \right)\\ MA{T}_{exhteff}={f}_{MA{T}_{exhteff}}\left(\Delta MAT,N\right)\\ O2{p}_{exhteff}={f}_{O2{p}_{exhteff}}\left(\Delta O2p,N\right)\\ Tex{h}_{opt}={f}_{Texh}(F,N)\end{array}$ |

The equations use these variables.

| Compression stroke injected fuel mass |

| Engine speed |

| Exhaust manifold gas temperature |

| Optimal exhaust manifold gas temperature |

ΔT_{post} | Post injection temperature effect |

Texh_{nom} | Nominal exhaust temperature |

| Main SOI exhaust temperature efficiency multiplier |

| Main SOI timing relative to optimal timing |

| Intake manifold gas pressure exhaust temperature efficiency multiplier |

| Intake manifold gas pressure ratio relative to optimal pressure ratio |

| Intake manifold gas lambda |

| Intake manifold gas temperature exhaust temperature efficiency multiplier |

| Intake manifold gas temperature relative to optimal temperature |

| Intake manifold gas oxygen exhaust temperature efficiency multiplier |

| Intake gas oxygen percent relative to optimal |

| Fuel rail pressure exhaust temperature efficiency multiplier |

| Fuel rail pressure relative to optimal |

**Air-Fuel Ratio**

The measured engine speed and fuel injector pulse-width determine the commanded fuel mass flow rate:

${\dot{m}}_{fuel,cmd}=\frac{N{S}_{inj}P{w}_{inj}{N}_{cyl}}{Cps\left(\frac{60s}{min}\right)\left(\frac{1000mg}{g}\right)}$

The commanded total fuel mass flow and estimated port mass flow rates determine the estimated AFR:

$AF{R}_{est}=\frac{{\dot{m}}_{port,est}}{{\dot{m}}_{fuel,cmd}}$

The equations use these variables.

$P{w}_{inj}$ | Fuel injector pulse-width |

AFR_{est} | Estimated air-fuel ratio |

${\dot{m}}_{fuel,cmd}$ | Commanded fuel mass flow rate |

${S}_{inj}$ | Fuel injector slope |

N | Engine speed |

N_{cyl} | Number of engine cylinders |

Cps | Crankshaft revolutions per power stroke, rev/stroke |

${\dot{m}}_{port,est}$ | Total estimated engine air mass flow at intake ports |

## Examples

## Ports

### Input

### Output

## Parameters

## References

[1] Heywood, John B. *Internal Combustion Engine
Fundamentals*. New York: McGraw-Hill, 1988.

## Extended Capabilities

## Version History

**Introduced in R2017a**