Boost Control
Here we talk generally about how the B58 controls the turbo and more specifically about the maps you might need to recalibrate when changing from the stock turbo.
Boost control is a three step process
- Convert the boost target and error into power at the turbine wheel (i.e. how hard and fast the turbo should be spinning).
- The turbine power is converted to a wastegate position, which will provide this turbine power
- The DME applies some corrections to this position, the I component of the PID error and an adaptation offset to get the final wastegate position.
We note that we are controlling a single variable, the boost, but we have two parameters: the turbine power and the wastegate position with which to affect it. In effect, the turbine power is arbitrary. This makes the problem underconstrained. We will gain an understanding of the turbo control then look at ways to pin this down.
Power calculation (TchCtr_Pwr)
The first job of the boost controller is to work out how fast and hard is should be spinning the turbo to meet the required boost pressure. As such, (required) boost pressure quantities are converted into (required) power at the turbine wheel (in kW). Likewise boost errors are converted into power errors.
We can understand turbine power in terms of torque x rpm just as we can for engine power. As the boost pressure goes up, the air resistance on the compressor wheel also goes up so it needs more torque to keep turning at the same speed. As the engine speed rises and the airflow picks up, we can picture the compressor chasing the air and so it will have to rotate faster to create the same boost. For this reason, the compressor characteristic (BMWtchctr_pwr_Pctl_M) will tend to rise with pressure and with RPM:
Note that the boost axis does not have any units because the boost pressure in the chargepipe is divided by the pressure before the turbo. This value is often called boost presure ratio.
The pressure before the turbo is ambient pressure minus any pressure drop across the air filter. The more air pulled through the filter, the more that filter gets in the way and hence this pressure drop becomes higher as airflow increases.
Feed-forward compressor map
Initially, the DME creates a good guess at the required turbine power through a feed-forward map, called the compressor characteristic (BMWtchctr_pwr_Pctl_M). This outputs a feed-forward compressor power.
This is fairly straightforward to understand: the map represents the turbo's power at various airflow and pressure-ratio values. The DME reads these off, corrects for temperature and we're done.
Note that with different and possibly bigger turbos than stock
- They will flow more air so the MAF axis might require scaling up. A Pure800 would max out at about 500g/s for example.
- The power values might be lower not higher. In other words, if the turbo is operating more efficiently, it will generate the same MAF at lower power.
P error term
The DME then calculates a proportional error term:
This is a more subtle scenario.
Firstly we have the P-Factor (MHD's name) which is based on airflow and pressure-ratio (same as the compressor characteristic). Note that this does not depend on the boost error. It is more a property of the turbo as a system in the sense of how agressively it responds. Note in particular
- When there is airflow through the turbo (i.e. it is spooled up), the turbo is responsive and P-Factor will be higher.
- When boost rises, the turbo has to work harder (to cut through the air, so to speak), it becomes less responsive and P-Factor will be lower.
The degree to which these effects occur depend on the turbo.
Then we have the P correction. Note that the inputs here are turbine massflow and boost error.
We note the following:
- This is where the error is factored in. When the error is zero, the value will be zero so as to cancel the P term in the PID control.
- boost error = (target - actual) so underboost is a +ve error (which is confusing because we intuively think of under as meaning less, but it is the other way around here).
- the correction provides a weighting to the boost error according to how far out of step it is with what's required in the exhaust.
- If we need a lot of exhaust flow and we are underboosting, the correction table will increase the p factor to hurry the turbo into meeting the demand.
- If we need not so much exhaust flow and are underboosting, the correction table will slow down the p factor.
- There is an additional spool mode table, however, this is often unused. The DME has a notion of spooling and an associated spooling factor which it determines from the boost error in the sense that, if we require a lot of boost but the actual boost is low, then the turbo must be spooling and so the spool factor that will be close to 1. Then, the DME can interpolate between the normal p-correction table and the spool table according to a second blending factor which it gets from a table (BMWtchctr_fac_FadeDyn_M). In practice this blending factor is zero, meaning only the normal table is used. To our mind, this is too much complexity but we mention it for anyone wanting to introduce a few more variables.
We can see this process in action in the following log:
Note that the names in the log are confusing. The 'p-factor' here is the final p term (and not the turbo gain property from the P-factor table).
D error term
Required turbine power
Once the feed forward and error terms have been calculated, the DME adds them up to arrive at a final value for the turbine power. This will be fed into the wastegate position control (see next section).