Announcement

Collapse
No announcement yet.

CSL '0401' Program Binary Disassembly Notes

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Originally posted by Bry5on View Post

    I'm so stoked too! Looks like it's outputting:
    Intake Air Temp and Radiator temp: subtract 48, just like DS2 message
    EGT: basically leave as-is, unlike DS2 message (multiply DS2 by 16)
    Relative Opening: not sure yet, some scalar that looks the same as DS2. DS2 multiply by .0030518
    Lambda Integrator: Subtract 2^15 then multiply by some factor that I'm not sure yet



    Click image for larger version

Name:	Karterdatazaptest.png
Views:	65
Size:	158.5 KB
ID:	309366
    Awesome! I've got the config from TestO with the conversion factors so will dig those out shortly


    Sent from my iPhone using Tapatalk
    2005 ///M3 SMG Coupe Silbergrau Metallic/CSL bucket seats/CSL airbox/CSL console/6 point RACP brace
    Build Thread:
    https://nam3forum.com/forums/forum/m...e46-m3-journal

    Comment


      Okay - so all are served as per DS2 with the exception of TABG as you note.

      TAN (Intake Air Temp): correct - subtract 48
      TKA (Radiator Outlet Temp): correct - subtract 48
      TABG (Exhaust Gas Temp): correct - leave as is, DS2 divides by 16 to fit this into a byte instead of a word.
      AQ_REL (Relative Opening): multiply by 0.003051757
      LA_F_REGLER1 (Lambda Integrator 1): multiply by 0.000030517

      Let me know if this works :-)
      2005 ///M3 SMG Coupe Silbergrau Metallic/CSL bucket seats/CSL airbox/CSL console/6 point RACP brace
      Build Thread:
      https://nam3forum.com/forums/forum/m...e46-m3-journal

      Comment


        Originally posted by karter16 View Post
        Okay - so all are served as per DS2 with the exception of TABG as you note.

        TAN (Intake Air Temp): correct - subtract 48
        TKA (Radiator Outlet Temp): correct - subtract 48
        TABG (Exhaust Gas Temp): correct - leave as is, DS2 divides by 16 to fit this into a byte instead of a word.
        AQ_REL (Relative Opening): multiply by 0.003051757
        LA_F_REGLER1 (Lambda Integrator 1): multiply by 0.000030517

        Let me know if this works :-)
        Beautiful. Thank you again my friend. Will test lambda integrator in the morning as it looks like I got the others sorted .. well, close on relative opening
        ‘02 332iT / 6 | ‘70 Jaguar XJ6 electric conversion

        Comment


          awesome! let me know tomorrow if there's anything else I can do to help figure those out :-)
          2005 ///M3 SMG Coupe Silbergrau Metallic/CSL bucket seats/CSL airbox/CSL console/6 point RACP brace
          Build Thread:
          https://nam3forum.com/forums/forum/m...e46-m3-journal

          Comment


            Originally posted by Bry5on View Post

            well, close on relative opening
            Oh sorry! I completely missed that you already had that one - I wasn't meaning to be pedantic about the 7th decimal place lol
            2005 ///M3 SMG Coupe Silbergrau Metallic/CSL bucket seats/CSL airbox/CSL console/6 point RACP brace
            Build Thread:
            https://nam3forum.com/forums/forum/m...e46-m3-journal

            Comment


              Originally posted by karter16 View Post

              Oh sorry! I completely missed that you already had that one - I wasn't meaning to be pedantic about the 7th decimal place lol
              Hahaha no stress. And I’m going to be taking this to 7 decimal places now. Because why not
              ‘02 332iT / 6 | ‘70 Jaguar XJ6 electric conversion

              Comment


                Looks like a lot of work and knowledge developed here since I became less active. Very cool! I guess I know what my reading will be tonight

                Comment


                  Okay here's one for those who are concerned about heat-soak and the location of the IAT sensor.

                  The CSL software has additional code in the function that calculates TAN (intake air temperature):

                  Click image for larger version

Name:	Screenshot 2025-06-28 at 7.44.01 AM.png
Views:	6
Size:	127.9 KB
ID:	310119

                  Lines 16 to 26 are not found in the standard euro software. These lines are calculating a version of TAN specifically for the purpose of being used in the CSL's calculation of air mass, which in turn is used in the calculation of final RF as we've seen previously.

                  k_tan_m_cfg is set to 1 in the 0401 partial:

                  Click image for larger version

Name:	Screenshot 2025-06-28 at 7.45.30 AM.png
Views:	7
Size:	4.3 KB
ID:	310120

                  which means that tan_m is set from what I've tentatively named tan_m_adj.

                  How is tan_m_adj calculated? Like this:

                  Click image for larger version

Name:	Screenshot 2025-06-28 at 7.54.17 AM.png
Views:	6
Size:	169.8 KB
ID:	310121
                  Click image for larger version

Name:	Screenshot 2025-06-28 at 7.54.49 AM.png
Views:	6
Size:	194.4 KB
ID:	310122
                  Click image for larger version

Name:	Screenshot 2025-06-28 at 7.55.12 AM.png
Views:	6
Size:	206.0 KB
ID:	310123

                  The key thing to understand about this function is that it is iterative. It runs every 100ms and the previous result is used to calculate the next.

                  So what are the key behaviors?

                  To simplify it down a lot, the function basically:

                  1: Starts with IAT (measured intake temp)
                  2: Compares it with TMOT (motor temp) and blends it to some degree based on:
                  3: ML - load

                  At high load tan_m_adj is pretty just TAN, at low load conditions where the engine is idling the tan_m_adj function is distrustful of what the IAT is telling it and calculates tan_m_adj more and more heavily based on tmot the longer the conditions continue.

                  Why is this model needed? It is specifically to deal with heat-soak at idle and at stop conditions. The model prevents situations where the DME trusts the IAT in heat-soak scenarios. This would be bad as it would result in lean running conditions. The tan_m_adj model gives the DME a more realistic understanding of the actual intake temperature to ensure that lean conditions don't occur.

                  It's a bit hard to graph, but this kind of shows the response of the model at various levels of load:


                  Click image for larger version

Name:	Screenshot 2025-06-28 at 7.38.46 AM.png
Views:	6
Size:	182.5 KB
ID:	310124
                  This isn't completely representative of how it works in reality as it is based on a fixed TAN reading, when in reality TAN will rise quickly due to heat soak, but what this graph does show is that at higher load levels the model heavily favors actual TAN (higher airflow = more accurate reading) at lower load levels it skews towards TMOT over time.

                  I can't come up with a good way to graph or visually represent an actual scenario of a car coming to stop at the lights and the behavior of TAN and tan_m_adj, so you have to just work it through in your mind.

                  Essentially this a fairly complex model which is tuned to handle IAT heat soak scenarios and give the air mass calculations a more accurate IAT value in those scenarios. The model is iterative and adjusts the tan_m_adj value further towards TMOT the longer the heat soak conditions continue.

                  What's the lesson? Don't mess with your IAT sensor - the software is specifically calibrated to deal with heat soak conditions.
                  2005 ///M3 SMG Coupe Silbergrau Metallic/CSL bucket seats/CSL airbox/CSL console/6 point RACP brace
                  Build Thread:
                  https://nam3forum.com/forums/forum/m...e46-m3-journal

                  Comment

                  Working...
                  X