From 9cada89d04676397f89923efebf04232e54eff52 Mon Sep 17 00:00:00 2001 From: DenisMitchell <46486778+DenisMitchell@users.noreply.github.com> Date: Wed, 14 Aug 2024 20:25:26 -0400 Subject: [PATCH 1/8] Update Idle-Settings.md Begin fleshing out this section. --- .../06-Basic-Features/Idle-Control/Idle-Settings.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/06-Basic-Features/Idle-Control/Idle-Settings.md b/docs/06-Basic-Features/Idle-Control/Idle-Settings.md index 6f6a192..c900233 100644 --- a/docs/06-Basic-Features/Idle-Control/Idle-Settings.md +++ b/docs/06-Basic-Features/Idle-Control/Idle-Settings.md @@ -1,6 +1,17 @@ # Idle settings - The idle settings menu can look daunting at first but this guide will help to decode the mystery of all the various idle settings. +## Idle Detection Thresholds +### TPS Threshold +The TPS value must be below this % before closed loop idle can be entered. When using an Electronic Throttle Body (ETB) this references the Accelerator Pedal Position sensor instead. + +### RPM upper limit(RPM) +The engine speed must be at or below the target RPM plus this value before closed loop idle can be entered. For example if the Idle Target RPM is 750 RPM and this value is set to 200, the engine speed must be at or below 950 RPM before closed loop idle can be entered. + +### RPM deadzone +When the engine speed is within this many RPM of the target idle RPM, the closed loop idle algorithm is disabled. This is to prevent unwanted oscillation around the target. + +### Max vehicle speed +The VSS must be at or below this speed before closed loop idle can be entered. Setting this to 0 disables this check. ## Idle target RPM From 719c369db9a12535d2780c9fc14b88f3e4702199 Mon Sep 17 00:00:00 2001 From: DenisMitchell <46486778+DenisMitchell@users.noreply.github.com> Date: Thu, 15 Aug 2024 00:33:43 -0400 Subject: [PATCH 2/8] Update Idle-Settings.md Added descriptions for most of the menus and their settings under the Idle heading. --- .../Idle-Control/Idle-Settings.md | 87 +++++++++++++++++-- 1 file changed, 79 insertions(+), 8 deletions(-) diff --git a/docs/06-Basic-Features/Idle-Control/Idle-Settings.md b/docs/06-Basic-Features/Idle-Control/Idle-Settings.md index c900233..69d395a 100644 --- a/docs/06-Basic-Features/Idle-Control/Idle-Settings.md +++ b/docs/06-Basic-Features/Idle-Control/Idle-Settings.md @@ -1,24 +1,95 @@ # Idle settings +## Idle Control mode +_Open Loop_ disables the Closed Loop Idle strategy for the IACV/ETB. _Open Loop + Closed Loop_ enables the Closed Loop Idle Strategy for the IACV/ETB. _Closed Loop Idle Ignition Timing_ can be enabled separately. ## Idle Detection Thresholds ### TPS Threshold -The TPS value must be below this % before closed loop idle can be entered. When using an Electronic Throttle Body (ETB) this references the Accelerator Pedal Position sensor instead. +The TPS value must be below this % before the idle state can be entered. When using an Electronic Throttle Body (ETB) this references the Accelerator Pedal Position sensor instead. ### RPM upper limit(RPM) -The engine speed must be at or below the target RPM plus this value before closed loop idle can be entered. For example if the Idle Target RPM is 750 RPM and this value is set to 200, the engine speed must be at or below 950 RPM before closed loop idle can be entered. +The engine speed must be at or below the target RPM plus this value before the idle state can be entered. For example, if the Idle Target RPM is 750 RPM and this value is set to 200, the engine speed must be at or below 950 RPM before closed loop idle can be entered. ### RPM deadzone When the engine speed is within this many RPM of the target idle RPM, the closed loop idle algorithm is disabled. This is to prevent unwanted oscillation around the target. ### Max vehicle speed -The VSS must be at or below this speed before closed loop idle can be entered. Setting this to 0 disables this check. +The VSS must be at or below this speed before the idle state can be entered. Setting this to 0 disables this check. -## Idle target RPM +## Open Loop Idle -## TPS threshold +### Open loop base position +Used to set the base value for idle control. Typically set to provide an idle slightly above the target RPM when the engine is fully warmed up. Log variable is _Idle: Open loop_. -## RPM upper limit +### A/C adder +This percentage is added to the _open loop base position_ when the A/C is active, used to compensate for the additional load the A/C compressor puts on the engine. -## RPM deadzone +### A/C target adder +Added to the closed loop _Idle Target RPM_ when the A/C is active, can be used to ensure the compressor is spinning quickly enough for desired cooling. -## Max Vehicle speed for idle +### Fan #1 adder + +### Fan #2 adder + +### Extra idle air if throttle pressed + +## Closed Loop Idle +### P-factor +Sets the Proportional gain of the closed loop idle air strategy + +### I-factor +Sets the Integral gain of the closed loop idle air strategy + +### derivativeFilterLoss +### antiwindupFreq +### D-factor +### Min, Max +Sets the minimum and maximum duty cycle modifier that can be commanded by the closed loop idle air strategy. The P, I and D-factors are added up then limited based on the Min and Max values to give the _Idle: Closed loop_ output. This is then added to the _open loop base position_ to result in the final output, _Idle: Position_. + +### iTerm Min, iTerm Max +Sets the minimum and maximum duty cycle modifier for the _I-factor_ specifically. + +### PID Extra for low RPM +### Use IAC PID Multiplier Table + +## Extra Idle Features +### Use idle ignition table +Setting this to _true_ activates a separate ignition timing table (2D) for idle conditions; this can help idle stability by using ignition retard and advance either side of the desired idle speed. _False_ disables the timing table. + +### Use idle VE table +Setting this to _true_ activates a separate fuel table (3D) for idle, which allows fine tuning of the idle fuelling. _False_ disables the VE table. + +### Override idle VE table load axis +Override the Y axis (load) value used for only the Idle VE table. Setting this to _none_ disables the override. + +### Use idle tables for cranking taper +This enables the separate ignition timing and VE tables not only for idle conditions, also during the postcranking-to-idle taper transition. See _Cranking_ > _Cranking settings_ > _Idle air valve_ > _After cranking IAC taper duration_. + +### Use coasting idle table +Override the IAC position during overrun conditions. This can be used to help reduce engine braking, for large engines in light weight cars or for engines that have trouble returning to idle. + +# Idle target RPM +Defines the target idle RPM used by the main Closed Loop Idle air strategy as well as _Closed Loop Idle Ignition Timing_. Log variable is _Idle: Target RPM_. + +# Warmup idle multiplier/CLT multiplier +The _open loop base position_ value is multiplied by the value in this table. For example, if the _open loop base position_ value was 30% and the multiplier was 1.50 at 0 degC, the commanded base position at 0 degC would be 45%. A multiplier of 1 would simply output the open loop base position value. + +# Closed-loop idle timing +## Enable closed loop idle ignition timing +_True_ enables the closed loop idle ignition timing loop strategy, _False_ disables it. + +### Proportional gain +Unity gain results in 1 deg CKA for every 1 RPM of error between actual engine speed and target engine speed. For example, a gain of 0.1 results in 1 deg CKA for every 10 RPM of error. If the engine speed were 100 RPM below the Idle target RPM the resulting output would be +10 deg CKA (advance). + +### Derivative gain +### Min Adjustment, Max Adjustment +Limits the minimum and maximum amount of timing adjustment output by the _closed loop idle ignition timing_ strategy. Keep these values to the minimum required to avoid excessive spark advance or retard at idle speeds. + +# IAC PID Multiplier + +# Coasting IAC Position + +# Idle VE +Only enabled when _Use idle VE table_ is set to _true_. 3D table. + +# Idle Ignition Advance +Only enabled when _Use idle ignition table_ is set to _true_. 2D table (curve). From a8f1353b080c307dda17c7f743959f481069afc2 Mon Sep 17 00:00:00 2001 From: DenisMitchell <46486778+DenisMitchell@users.noreply.github.com> Date: Thu, 15 Aug 2024 15:29:45 -0400 Subject: [PATCH 3/8] Update Idle-Settings.md --- docs/06-Basic-Features/Idle-Control/Idle-Settings.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/06-Basic-Features/Idle-Control/Idle-Settings.md b/docs/06-Basic-Features/Idle-Control/Idle-Settings.md index 69d395a..2d912aa 100644 --- a/docs/06-Basic-Features/Idle-Control/Idle-Settings.md +++ b/docs/06-Basic-Features/Idle-Control/Idle-Settings.md @@ -34,14 +34,22 @@ Added to the closed loop _Idle Target RPM_ when the A/C is active, can be used t ## Closed Loop Idle ### P-factor -Sets the Proportional gain of the closed loop idle air strategy +Sets the Proportional gain of the closed loop idle air strategy. ### I-factor -Sets the Integral gain of the closed loop idle air strategy +Sets the Integral gain of the closed loop idle air strategy. ### derivativeFilterLoss ### antiwindupFreq +Used to limit the Integral term (iTerm) windup when the closed loop idle air strategy output is being limited by the min/max duty cycle limit. Once the Integral term has been calculated and limited if appropriate (_iTerm Min_, _iTerm Max_), if the output of the closed loop idle air PID controller exceeds the overall PID _Min_ or _Max_ settings, the Integral term is further limited to prevent integral windup. As long as the output of the closed loop idle air strategy exceeds the limits set by _Min_ or _Max_, the I term is continuously modified. + +`iTerm += time(sec) * antiwindupFreq * (ClosedLoopLimitedOutput - ClosedLoopOutput)` + +Keep in mind that the Integral term is updated every time the closed loop idle air PID control strategy runs and will continue to be modified based on the error and _I-factor_ gain. Additionally, if _ClosedLoopLimitedOutput_ equals _ClosedLoopOutput_, antiwindupFreq has no effect. + ### D-factor +Sets the Derivative gain of the closed loop idle air strategy. + ### Min, Max Sets the minimum and maximum duty cycle modifier that can be commanded by the closed loop idle air strategy. The P, I and D-factors are added up then limited based on the Min and Max values to give the _Idle: Closed loop_ output. This is then added to the _open loop base position_ to result in the final output, _Idle: Position_. From 5c57e4dd6d296d385596cd429cdfd8c59f596e7e Mon Sep 17 00:00:00 2001 From: DenisMitchell <46486778+DenisMitchell@users.noreply.github.com> Date: Thu, 15 Aug 2024 15:52:45 -0400 Subject: [PATCH 4/8] Update Idle-Settings.md Added an extra description on the antiwindupFreq. Probably best to also clarify the units on the P, I and D-factors, but not in this commit. --- docs/06-Basic-Features/Idle-Control/Idle-Settings.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/06-Basic-Features/Idle-Control/Idle-Settings.md b/docs/06-Basic-Features/Idle-Control/Idle-Settings.md index 2d912aa..5824a1a 100644 --- a/docs/06-Basic-Features/Idle-Control/Idle-Settings.md +++ b/docs/06-Basic-Features/Idle-Control/Idle-Settings.md @@ -43,7 +43,9 @@ Sets the Integral gain of the closed loop idle air strategy. ### antiwindupFreq Used to limit the Integral term (iTerm) windup when the closed loop idle air strategy output is being limited by the min/max duty cycle limit. Once the Integral term has been calculated and limited if appropriate (_iTerm Min_, _iTerm Max_), if the output of the closed loop idle air PID controller exceeds the overall PID _Min_ or _Max_ settings, the Integral term is further limited to prevent integral windup. As long as the output of the closed loop idle air strategy exceeds the limits set by _Min_ or _Max_, the I term is continuously modified. -`iTerm += time(sec) * antiwindupFreq * (ClosedLoopLimitedOutput - ClosedLoopOutput)` +`iTerm += dTime(sec) * antiwindupFreq * (ClosedLoopLimitedOutput - ClosedLoopOutput)` + +_note: dTime is the delta time since the closed loop idle air PID controller last ran._ Keep in mind that the Integral term is updated every time the closed loop idle air PID control strategy runs and will continue to be modified based on the error and _I-factor_ gain. Additionally, if _ClosedLoopLimitedOutput_ equals _ClosedLoopOutput_, antiwindupFreq has no effect. From d1f92581f01ba128630810e8e55142a67151bbd0 Mon Sep 17 00:00:00 2001 From: DenisMitchell <46486778+DenisMitchell@users.noreply.github.com> Date: Thu, 15 Aug 2024 17:01:00 -0400 Subject: [PATCH 5/8] Update Idle-Settings.md Added additional detail to the P-factor and I-factor with examples of how different gains work. --- .../Idle-Control/Idle-Settings.md | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/docs/06-Basic-Features/Idle-Control/Idle-Settings.md b/docs/06-Basic-Features/Idle-Control/Idle-Settings.md index 5824a1a..ed92251 100644 --- a/docs/06-Basic-Features/Idle-Control/Idle-Settings.md +++ b/docs/06-Basic-Features/Idle-Control/Idle-Settings.md @@ -3,6 +3,8 @@ _Open Loop_ disables the Closed Loop Idle strategy for the IACV/ETB. _Open Loop + Closed Loop_ enables the Closed Loop Idle Strategy for the IACV/ETB. _Closed Loop Idle Ignition Timing_ can be enabled separately. ## Idle Detection Thresholds +The below settings are utilized to prevent the closed loop idle air strategy from engaging when it is not desired. + ### TPS Threshold The TPS value must be below this % before the idle state can be entered. When using an Electronic Throttle Body (ETB) this references the Accelerator Pedal Position sensor instead. @@ -13,7 +15,7 @@ The engine speed must be at or below the target RPM plus this value before the i When the engine speed is within this many RPM of the target idle RPM, the closed loop idle algorithm is disabled. This is to prevent unwanted oscillation around the target. ### Max vehicle speed -The VSS must be at or below this speed before the idle state can be entered. Setting this to 0 disables this check. +The VSS must be at or below this speed before the idle state can be entered. Setting this to 0 disables this check and enables closed loop idle air control at any speed. ## Open Loop Idle @@ -26,18 +28,23 @@ This percentage is added to the _open loop base position_ when the A/C is active ### A/C target adder Added to the closed loop _Idle Target RPM_ when the A/C is active, can be used to ensure the compressor is spinning quickly enough for desired cooling. -### Fan #1 adder - -### Fan #2 adder +### Fan #1 adder, Fan #2 adder +Added to the _open loop base position_ when the fans are activated. May compensate for the additional electrical load on the alternator. ### Extra idle air if throttle pressed ## Closed Loop Idle +The closed loop idle air strategy can utilize all three terms (Proportional, Integral, Derivative) to provide accurate control of the IACV or ETB position and achieve a stable target idle. The 3 terms are calculated, added up and then limited by the _Min_ or _Max_ values to arrive at the final _Idle: Closed Loop_ output. The error (difference between the _Idle Target RPM_ and actual RPM) is written on the variable _idleStatus_Error_. + ### P-factor -Sets the Proportional gain of the closed loop idle air strategy. +Sets the Proportional gain of the closed loop idle air strategy, used to generate the P Term. Unity gain results in a P term output equal to the error, (_Idle Target RPM_ - actual RPM). Log variable is _idleStatus_pTerm_. + +For example, an instantaneous error of 100 RPM with a P-factor gain of 0.5 would result in a P term output of 50%. ### I-factor -Sets the Integral gain of the closed loop idle air strategy. +Sets the Integral gain of the closed loop idle air strategy, used to generate the I Term. Unity gain results in an I term output equal to the error/second (_Idle Target RPM_ - actual RPM)/sec. Log variable is _idleStatus_iTerm_. + +For example, a consistent error of 100 RPM with an I-factor gain of 0.01 would result in an I term output that increases by 1% every second. ### derivativeFilterLoss ### antiwindupFreq @@ -50,10 +57,10 @@ _note: dTime is the delta time since the closed loop idle air PID controller las Keep in mind that the Integral term is updated every time the closed loop idle air PID control strategy runs and will continue to be modified based on the error and _I-factor_ gain. Additionally, if _ClosedLoopLimitedOutput_ equals _ClosedLoopOutput_, antiwindupFreq has no effect. ### D-factor -Sets the Derivative gain of the closed loop idle air strategy. +Sets the Derivative gain of the closed loop idle air strategy, used to generate the D Term. Log variable is _idleStatus_dTerm_. ### Min, Max -Sets the minimum and maximum duty cycle modifier that can be commanded by the closed loop idle air strategy. The P, I and D-factors are added up then limited based on the Min and Max values to give the _Idle: Closed loop_ output. This is then added to the _open loop base position_ to result in the final output, _Idle: Position_. +Sets the minimum and maximum duty cycle modifier that can be commanded by the closed loop idle air strategy. The P, I and D terms are added up then limited based on the _Min_ and _Max_ values to give the _Idle: Closed loop_ output. This is then added to the _open loop base position_ to result in the final output, _Idle: Position_. ### iTerm Min, iTerm Max Sets the minimum and maximum duty cycle modifier for the _I-factor_ specifically. From 88e23a47c6a8833312a6aeb25f77f35571b7fe88 Mon Sep 17 00:00:00 2001 From: DenisMitchell <46486778+DenisMitchell@users.noreply.github.com> Date: Mon, 19 Aug 2024 23:45:05 -0400 Subject: [PATCH 6/8] Update Idle-Settings.md --- docs/06-Basic-Features/Idle-Control/Idle-Settings.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/06-Basic-Features/Idle-Control/Idle-Settings.md b/docs/06-Basic-Features/Idle-Control/Idle-Settings.md index ed92251..ec9afaa 100644 --- a/docs/06-Basic-Features/Idle-Control/Idle-Settings.md +++ b/docs/06-Basic-Features/Idle-Control/Idle-Settings.md @@ -70,10 +70,10 @@ Sets the minimum and maximum duty cycle modifier for the _I-factor_ specifically ## Extra Idle Features ### Use idle ignition table -Setting this to _true_ activates a separate ignition timing table (2D) for idle conditions; this can help idle stability by using ignition retard and advance either side of the desired idle speed. _False_ disables the timing table. +Setting this to __true__ activates a separate ignition timing table (2D) for idle conditions; this can help idle stability by using ignition retard and advance either side of the desired idle speed. __false__ disables the timing table. ### Use idle VE table -Setting this to _true_ activates a separate fuel table (3D) for idle, which allows fine tuning of the idle fuelling. _False_ disables the VE table. +Setting this to __true__ activates a separate fuel table (3D) for idle, which allows fine tuning of the idle fuelling. __false__ disables the VE table. ### Override idle VE table load axis Override the Y axis (load) value used for only the Idle VE table. Setting this to _none_ disables the override. @@ -92,7 +92,7 @@ The _open loop base position_ value is multiplied by the value in this table. Fo # Closed-loop idle timing ## Enable closed loop idle ignition timing -_True_ enables the closed loop idle ignition timing loop strategy, _False_ disables it. +_True_ enables the closed loop idle ignition timing loop strategy, __false__ disables it. ### Proportional gain Unity gain results in 1 deg CKA for every 1 RPM of error between actual engine speed and target engine speed. For example, a gain of 0.1 results in 1 deg CKA for every 10 RPM of error. If the engine speed were 100 RPM below the Idle target RPM the resulting output would be +10 deg CKA (advance). @@ -102,11 +102,13 @@ Unity gain results in 1 deg CKA for every 1 RPM of error between actual engine s Limits the minimum and maximum amount of timing adjustment output by the _closed loop idle ignition timing_ strategy. Keep these values to the minimum required to avoid excessive spark advance or retard at idle speeds. # IAC PID Multiplier +Only enabled when _Use IAC PID Multiplier Table_ is set to __true__. # Coasting IAC Position +Only enabled when _Use coasting Idle Table_ is set to __true__. 2D Table. When the engine is in the _coasting_ phase, the IAC base position is set to the value defined by this table. This table is not used if the engine is not in the _coasting_ phase and the _open loop base position_ will be used instead. _Note: despite the "multiplier" label, this table sets the IAC position in % duty cycle just like _open loop base position_ - this is not a multiplier applied to the base position_. # Idle VE -Only enabled when _Use idle VE table_ is set to _true_. 3D table. +Only enabled when _Use idle VE table_ is set to __true__. 3D table. Used in place of the regular VE table when idle is active, or during the cranking taper if _Use idle tables for cranking taper_ is set to __true__. # Idle Ignition Advance -Only enabled when _Use idle ignition table_ is set to _true_. 2D table (curve). +Only enabled when _Use idle ignition table_ is set to __true__. 2D table (curve). The values in this table are used in place of the regular ignition curve when idle is active, or during the cranking taper if _Use idle tables for cranking taper_ is set to __true__. Unlike _Closed-loop Idle Timing_, this table does not react to _Idle target RPM_ and is open loop only. From e524ce5be741a30aafdda04777c5c0734a0d7890 Mon Sep 17 00:00:00 2001 From: Nathan Schulte Date: Sat, 31 Aug 2024 01:22:16 -0500 Subject: [PATCH 7/8] satisfy markdown linter --- .../Idle-Control/Idle-Settings.md | 113 ++++++++++++------ 1 file changed, 76 insertions(+), 37 deletions(-) diff --git a/docs/06-Basic-Features/Idle-Control/Idle-Settings.md b/docs/06-Basic-Features/Idle-Control/Idle-Settings.md index ec9afaa..3f42b59 100644 --- a/docs/06-Basic-Features/Idle-Control/Idle-Settings.md +++ b/docs/06-Basic-Features/Idle-Control/Idle-Settings.md @@ -1,53 +1,71 @@ -# Idle settings -## Idle Control mode +# Idle Settings + +## Idle settings + +### Idle Control mode + _Open Loop_ disables the Closed Loop Idle strategy for the IACV/ETB. _Open Loop + Closed Loop_ enables the Closed Loop Idle Strategy for the IACV/ETB. _Closed Loop Idle Ignition Timing_ can be enabled separately. -## Idle Detection Thresholds +### Idle Detection Thresholds + The below settings are utilized to prevent the closed loop idle air strategy from engaging when it is not desired. -### TPS Threshold +#### TPS Threshold + The TPS value must be below this % before the idle state can be entered. When using an Electronic Throttle Body (ETB) this references the Accelerator Pedal Position sensor instead. -### RPM upper limit(RPM) +#### RPM upper limit(RPM) + The engine speed must be at or below the target RPM plus this value before the idle state can be entered. For example, if the Idle Target RPM is 750 RPM and this value is set to 200, the engine speed must be at or below 950 RPM before closed loop idle can be entered. -### RPM deadzone +#### RPM deadzone + When the engine speed is within this many RPM of the target idle RPM, the closed loop idle algorithm is disabled. This is to prevent unwanted oscillation around the target. -### Max vehicle speed +#### Max vehicle speed + The VSS must be at or below this speed before the idle state can be entered. Setting this to 0 disables this check and enables closed loop idle air control at any speed. -## Open Loop Idle +### Open Loop Idle + +#### Open loop base position -### Open loop base position Used to set the base value for idle control. Typically set to provide an idle slightly above the target RPM when the engine is fully warmed up. Log variable is _Idle: Open loop_. -### A/C adder +#### A/C adder + This percentage is added to the _open loop base position_ when the A/C is active, used to compensate for the additional load the A/C compressor puts on the engine. -### A/C target adder +#### A/C target adder + Added to the closed loop _Idle Target RPM_ when the A/C is active, can be used to ensure the compressor is spinning quickly enough for desired cooling. -### Fan #1 adder, Fan #2 adder +#### Fan #1 adder, Fan #2 adder + Added to the _open loop base position_ when the fans are activated. May compensate for the additional electrical load on the alternator. -### Extra idle air if throttle pressed +#### Extra idle air if throttle pressed + +### Closed Loop Idle -## Closed Loop Idle The closed loop idle air strategy can utilize all three terms (Proportional, Integral, Derivative) to provide accurate control of the IACV or ETB position and achieve a stable target idle. The 3 terms are calculated, added up and then limited by the _Min_ or _Max_ values to arrive at the final _Idle: Closed Loop_ output. The error (difference between the _Idle Target RPM_ and actual RPM) is written on the variable _idleStatus_Error_. -### P-factor +#### P-factor + Sets the Proportional gain of the closed loop idle air strategy, used to generate the P Term. Unity gain results in a P term output equal to the error, (_Idle Target RPM_ - actual RPM). Log variable is _idleStatus_pTerm_. For example, an instantaneous error of 100 RPM with a P-factor gain of 0.5 would result in a P term output of 50%. -### I-factor +#### I-factor + Sets the Integral gain of the closed loop idle air strategy, used to generate the I Term. Unity gain results in an I term output equal to the error/second (_Idle Target RPM_ - actual RPM)/sec. Log variable is _idleStatus_iTerm_. For example, a consistent error of 100 RPM with an I-factor gain of 0.01 would result in an I term output that increases by 1% every second. -### derivativeFilterLoss -### antiwindupFreq +#### derivativeFilterLoss + +#### antiwindupFreq + Used to limit the Integral term (iTerm) windup when the closed loop idle air strategy output is being limited by the min/max duty cycle limit. Once the Integral term has been calculated and limited if appropriate (_iTerm Min_, _iTerm Max_), if the output of the closed loop idle air PID controller exceeds the overall PID _Min_ or _Max_ settings, the Integral term is further limited to prevent integral windup. As long as the output of the closed loop idle air strategy exceeds the limits set by _Min_ or _Max_, the I term is continuously modified. `iTerm += dTime(sec) * antiwindupFreq * (ClosedLoopLimitedOutput - ClosedLoopOutput)` @@ -56,59 +74,80 @@ _note: dTime is the delta time since the closed loop idle air PID controller las Keep in mind that the Integral term is updated every time the closed loop idle air PID control strategy runs and will continue to be modified based on the error and _I-factor_ gain. Additionally, if _ClosedLoopLimitedOutput_ equals _ClosedLoopOutput_, antiwindupFreq has no effect. -### D-factor +#### D-factor + Sets the Derivative gain of the closed loop idle air strategy, used to generate the D Term. Log variable is _idleStatus_dTerm_. -### Min, Max +#### Min, Max + Sets the minimum and maximum duty cycle modifier that can be commanded by the closed loop idle air strategy. The P, I and D terms are added up then limited based on the _Min_ and _Max_ values to give the _Idle: Closed loop_ output. This is then added to the _open loop base position_ to result in the final output, _Idle: Position_. -### iTerm Min, iTerm Max +#### iTerm Min, iTerm Max + Sets the minimum and maximum duty cycle modifier for the _I-factor_ specifically. -### PID Extra for low RPM -### Use IAC PID Multiplier Table +#### PID Extra for low RPM + +#### Use IAC PID Multiplier Table + +### Extra Idle Features + +#### Use idle ignition table -## Extra Idle Features -### Use idle ignition table Setting this to __true__ activates a separate ignition timing table (2D) for idle conditions; this can help idle stability by using ignition retard and advance either side of the desired idle speed. __false__ disables the timing table. -### Use idle VE table +#### Use idle VE table + Setting this to __true__ activates a separate fuel table (3D) for idle, which allows fine tuning of the idle fuelling. __false__ disables the VE table. -### Override idle VE table load axis +#### Override idle VE table load axis + Override the Y axis (load) value used for only the Idle VE table. Setting this to _none_ disables the override. -### Use idle tables for cranking taper +#### Use idle tables for cranking taper + This enables the separate ignition timing and VE tables not only for idle conditions, also during the postcranking-to-idle taper transition. See _Cranking_ > _Cranking settings_ > _Idle air valve_ > _After cranking IAC taper duration_. -### Use coasting idle table +#### Use coasting idle table + Override the IAC position during overrun conditions. This can be used to help reduce engine braking, for large engines in light weight cars or for engines that have trouble returning to idle. -# Idle target RPM +## Idle Target RPM + Defines the target idle RPM used by the main Closed Loop Idle air strategy as well as _Closed Loop Idle Ignition Timing_. Log variable is _Idle: Target RPM_. -# Warmup idle multiplier/CLT multiplier +## Warmup idle multiplier/CLT multiplier + The _open loop base position_ value is multiplied by the value in this table. For example, if the _open loop base position_ value was 30% and the multiplier was 1.50 at 0 degC, the commanded base position at 0 degC would be 45%. A multiplier of 1 would simply output the open loop base position value. -# Closed-loop idle timing -## Enable closed loop idle ignition timing +## Closed-loop idle timing + +### Enable closed loop idle ignition timing + _True_ enables the closed loop idle ignition timing loop strategy, __false__ disables it. ### Proportional gain + Unity gain results in 1 deg CKA for every 1 RPM of error between actual engine speed and target engine speed. For example, a gain of 0.1 results in 1 deg CKA for every 10 RPM of error. If the engine speed were 100 RPM below the Idle target RPM the resulting output would be +10 deg CKA (advance). ### Derivative gain + ### Min Adjustment, Max Adjustment + Limits the minimum and maximum amount of timing adjustment output by the _closed loop idle ignition timing_ strategy. Keep these values to the minimum required to avoid excessive spark advance or retard at idle speeds. -# IAC PID Multiplier +## IAC PID Multiplier + Only enabled when _Use IAC PID Multiplier Table_ is set to __true__. -# Coasting IAC Position +## Coasting IAC Position + Only enabled when _Use coasting Idle Table_ is set to __true__. 2D Table. When the engine is in the _coasting_ phase, the IAC base position is set to the value defined by this table. This table is not used if the engine is not in the _coasting_ phase and the _open loop base position_ will be used instead. _Note: despite the "multiplier" label, this table sets the IAC position in % duty cycle just like _open loop base position_ - this is not a multiplier applied to the base position_. -# Idle VE +## Idle VE + Only enabled when _Use idle VE table_ is set to __true__. 3D table. Used in place of the regular VE table when idle is active, or during the cranking taper if _Use idle tables for cranking taper_ is set to __true__. -# Idle Ignition Advance +## Idle Ignition Advance + Only enabled when _Use idle ignition table_ is set to __true__. 2D table (curve). The values in this table are used in place of the regular ignition curve when idle is active, or during the cranking taper if _Use idle tables for cranking taper_ is set to __true__. Unlike _Closed-loop Idle Timing_, this table does not react to _Idle target RPM_ and is open loop only. From be71f83538e3fdaa8d3f5be8fb919c88cf72129d Mon Sep 17 00:00:00 2001 From: Nathan Schulte Date: Sat, 31 Aug 2024 01:34:31 -0500 Subject: [PATCH 8/8] add links to Idle VE Table page to link to existing content about the topic. the separate doc page organization will likely re-shake in the future --- docs/06-Basic-Features/Idle-Control/Idle-Settings.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/06-Basic-Features/Idle-Control/Idle-Settings.md b/docs/06-Basic-Features/Idle-Control/Idle-Settings.md index 3f42b59..6f25892 100644 --- a/docs/06-Basic-Features/Idle-Control/Idle-Settings.md +++ b/docs/06-Basic-Features/Idle-Control/Idle-Settings.md @@ -100,6 +100,8 @@ Setting this to __true__ activates a separate ignition timing table (2D) for idl Setting this to __true__ activates a separate fuel table (3D) for idle, which allows fine tuning of the idle fuelling. __false__ disables the VE table. +See [here](../Idle-VE-Table) for more detail about idle-specific VE settings. + #### Override idle VE table load axis Override the Y axis (load) value used for only the Idle VE table. Setting this to _none_ disables the override. @@ -148,6 +150,8 @@ Only enabled when _Use coasting Idle Table_ is set to __true__. 2D Table. When t Only enabled when _Use idle VE table_ is set to __true__. 3D table. Used in place of the regular VE table when idle is active, or during the cranking taper if _Use idle tables for cranking taper_ is set to __true__. +See [here](../Idle-VE-Table) for more detail about idle-specific VE settings. + ## Idle Ignition Advance Only enabled when _Use idle ignition table_ is set to __true__. 2D table (curve). The values in this table are used in place of the regular ignition curve when idle is active, or during the cranking taper if _Use idle tables for cranking taper_ is set to __true__. Unlike _Closed-loop Idle Timing_, this table does not react to _Idle target RPM_ and is open loop only.