Jump to content

Roland@pcmtec

PCMTec Staff
  • Posts

    2,341
  • Joined

  • Last visited

  • Days Won

    468

Posts posted by Roland@pcmtec

  1. 30 minutes ago, Yortt said:

     I don't know but the conclusion I have come to with VCM Suite is they have been very reluctant to apply resources for  Australian Ford development in the past and given the falcon has now finished,  any  resources they have will be put into other more potentially profitable areas.

    This is where we can shine, with our Australia first attitude it should help fill this hole over time as this will be our only focus until we are confident is is the best piece of software available to tune the Falcon platform.

  2. Mick when you say bricked PCMs do you have any information on which strategies will cause them to brick? If you still have the PCMs I'm curious if we can recover them, this is mainly so we can make a list of transitions and block people from doing it in the editor if it is not reversible.

  3. Hi Loki,

    Afaik these cells are not used at idle, only when transitioning from idle to throttle. Firstly the idle should be stable with the stock settings, if you have to modify them it suggests an issue elsewhere.

    Places to look at your idle airflow, dashpot, injector scaling, injector offset and even physical idle air control issues.

    If you find the problem is still there the idle spark is controlled via the following items:

    auF2429 Idle Spark Proportional term (the P in the PID Controller)

    auF0215 Spark Idle Minimum (PID controller will clip at this value)

    auF16507 Spark Max (not just at idle but all the time)

    auF0015 Adaptive Idle Control range (typically 30rpm) if the rpm error goes outside of this range it will go to the normal open loop spark tables. This may be why you see the spark value flicker at idle if the error becomes too large.

    auF0020/auF0021 Idle RPM in Gear/Neutral - If you have a mechanical problem meaning the idle is quite a distance from this value you will also have issues.

    auF1920 Max spark for low load - Afaik this will limit idle spark, personally I've not tested it though.

    auF0213 - Max spark for idle in gear- I've not tested this either

    auF0214 - Similar to the above but in neutral

    If you aren't aware of what a PID controller is, have a read on wiki. It is effectively a mathematical equation that looks at error terms. Eg:

    Error = Desired Idle Spark - Actual Idle Spark

    Spark Adjustment = error * P

    Then there the integral term as well but this is fairly complicated so I won't get into it.

    Another way to think of a PID controller is imagine you are in the shower.

    The shower is cold so you turn on the tap (the spark adjustment). Eg 40 - 0 = error. Error * P = adjustment. You turn the tap too much so shower becomes too hot (now a negative error) which means error * P means you will now turn the tap the opposite direction. In this example your brain is the PID controller, the setpoint is the perfect temperature, the actual temperature is the water temp and the controller output is your arm turning the tap. A PID controller constantly makes adjustments based upon error in the same fashion.

    Closed loop boost control uses the same type of PID controller. Eg it measures boost pressure vs what is in the map and calculates an error term and adjusts the bleed gain based on this error.

    https://en.wikipedia.org/wiki/PID_controller

    https://www.csimn.com/CSI_pages/PIDforDummies.html

  4. No problem, it is a bit daunting at first but you will see that you can simplify things quite a bit.

    A lot of people start by zeroing the lambda correction table and setting BLK and MBT to be equal. They also zero the positive numbers in the IAT and ECT tables, this way what you see in BLK is what you get and only once the motor gets hot do the IAT and ECT tables kick in and start pulling timing.

  5. Hi Loki the spark algorithms are far more complex than simply Load vs Rpm.

    The final commanded spark is a combination of multiple tables. This is not an exhaustive list however this is the ones you need to look at.

    Borderline Knock - auF16593 (this is the maximum spark before the engine will knock)

    MBT Spark - auF16630 (this is the maximum spark before you stop increasing torque)

    Coolant temp MBT adjustment - auF2433

    Spark ECT Correction - auF0222 This retards timing when your coolant temp gets too hot

    ECT Correction Multiplier - auF0223 This is a multiplier for the above table.

    Spark IAT Correction - auF0220 This retards timing when your intake air temp gets too hot

    IAT Correction Multiplier - auF0221 This is a multiplier for the above table.

    Spark BLK table adder (lambda correction) - auF0218 - This adds or subtracts timing based on the commanded lambda.

    This one will catch you out, it makes quite large adjustments based on your commanded lambda, a lot of people zero out the positive numbers in this table.

    image.png.a5d9d6773139eb0db50ec806cc77f43a.png

    Steady state/cruise
    This is an approximation of the calculation for when driving under normal circumstances without cold start or deacceleration active. It is an esimation, at some stage we want to make a proper write up on this from exactly what is in the assembly code. This is possibly incorrect or has omissions, so please take this into account. If anyone knows more detail than this please post up any corrections.

    Final Spark = Math.Min(auF16593, auF16630-auF2433) + auF0218 + auF0223 * auF0222 + auF0220 * auF0221

    Or

    Final Spark = Minimum(BLK, MBT-MBT adjustment) + lambda correction + IAT Correction + ECT Correction.

    IDLE

    Now if you are at idle it uses a PID loop to control spark.

    Deacceleration

    If you are deaccelerating (eg closed throttle) it uses auF0228 (Decel Spark Angle)

    Cold Start

    If you are on cold start it uses the following:

    Maximum Cold Start auF0210

    Maximum Cold Start Adder auF0212

    Maximum Cold Start Adder #2 auF0211

    Cold Start Spark = auF0210 + auF0212 + auF0211

    Final Cold Start Spark = Math.Min(Cold Start Spark, BLK, MBT-MBT Adjustment) (eg whichever is smaller of the 3 numbers)

    Transient conditions

    This is when changing the rate of acceleration, eg a change in the rate of load (the derivative of load). For example accelerating slowly, then flattening the throttle.

    Spark Retard for Tip-In auF0233

    Tip in detonation control auF1705

    Final Spark Transient = Final Spark (from the above calculation) + auF0233 * auF1705

    Torque Control

    There are various times the PCM will command torque reduction which is achieved by ignition retard and in some conditions ETC (throttle feathering/closing). This is under traction control, changing gears in an automatic etc.

    Spark Retard (torque ratio) auF0263

     

    Going forward we would like to build a spark simulator. Eg you enter in RPM, Load, IAT and ECT with sliders and you can see what the final spark will likely be, for now you would need to fill out these equations in excel by hand. If you do build anything feel free to post it up, it will be very helpful for others.

  6. FYI being able to copy over differences yourself from the Compare viewer is not far off. ZF flashing is likely to be the new year, we can get you an editable (but not flashable) copy of your ZF trans into the editor in the mean time if you are curious what kind of parameters you will be able to view.

    "The VCM license will only work with the original calibration assuming it is already licensed"

    Whilst this is true there will be nothing stopping you from flashing the old non boost by gear file back into the car should you wish to use HPTuners again, you just won't be able to edit the Sprint OS with HPTuners unless you license it again.

  7. Press and hold the left mouse button to select the cells you want to copy. Or press and hold shift and use the keyboard arrow keys to select multiple cells.

    image.png.408ecfd17cfc46507808bb7cce4093fb.png

    Press Ctrl+C to copy to the clipboard OR right click and press copy.

    image.png.7bdb9b42d86e0d15105380806638743d.png

    To paste select the cell where you want the paste to begin. Eg it will paste from left to right and up to down.

    image.png.ee3e874478dd3cdfefdd99fc7271a038.png

     

    • Like 1
  8. To disable LTFT when you have no O2 sensor or require it disabled due to large camshafts etc set the following 3 parameters.

     Set auF0165 LTFT Learning Max to 1.0 

    Set auF0166 LTFT Learning Min to 0.0

    Set auF0170 LTFT Learning TPS Max to 0 counts

     

    Old method (does not work for all vehicles).

    auF0164 LTFT Enable should be all that is required to disable closed loop permanently.

    Set auF0163 to 4096 degrees. This will mean the O2 sensor is never "up to temp" and hence the O2 logic remains disabled.

    image.png.ded9a52967d8dce7a04f041f5eda8d62.png

    Or set the delay time to 1000000000 (this is actually clock ticks and not seconds)

    image.png.99a755a17ab7fe976ee6c477b03bf5fd.png

    Or set auF0162 to 1000000000 for all temperatures.

    image.png.cc971dc2d1524691981f3778533b507f.png

    UPDATE:

    on FGs the best way is to just set the A/D Count to 0.0 on the Open Loop TPS Transition table auF0153 as the above tables have been reported to not work on FGs

    image.png.80c9b12f8a561350f7b0bd9452bfa1df.png

     

    image.png

    • Like 1
  9. Hi Yortt, retrofitting boost by gear will be a challenge. Though don't rule it out yet as it is something we might look at adding down the track, it will just be a matter of where it sits priority wise with our other list of items to add.

    Any other questions or feedback please post away as it is feedback from people like yourself that will drive the direction of the software.

×
×
  • Create New...