Announcement

Collapse
No announcement yet.

Multiple ECU responses

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

  • Multiple ECU responses

    Hi guys,

    As some of us know, there are some cars which have more than one ECUs, usually the auto transmission cars which have the ECU for the tranny..

    The problem is, that I want to parse an OBD response but the response contains the response of the tranny ECU as well and this messes up things a little bit.

    I know how to determine which ECU is who but still this doesn't solve the problem..

    So I would like to ask if you know any way that we can tell the tranny ECU to shut up or any way to ask ONLY the engine ECU..

    If this is not possible it's a pain in the *** to remove the engine ECU's response from the whole package as its length is not standard but depends on the PID requested and this whole process will also make the application slower..

    Any ideas?

    Thanks!

  • #2
    Hi,

    I don't know what you're using for your experiment but each ECU has its own ID (identifier). For a CAN bus based vehicle, 0x7E8 is engine and 0x7E9 transmission

    Solution 1 : You can filter what you're looking for
    or
    Solution 2 : Just talk to the engine ECU

    If you give more information, maybe I will be enable to answer for precisely
    www.outilsobdfacile.com

    Comment


    • #3
      Hi,

      Thank you for your answer! The car is a 2002 BM2 745Li auto transmission and I think it is KWP2000.. As for the software I just used hyper terminal and a bluetooth ELM 1.2a..

      So, for your suggestion No2, is there any way I can just ask the engine ECU? Is this what you mean? How should the request be formated?

      Thanks again!

      Comment


      • #4
        I'm not totaly sure it's something like

        Set the header like this before connecting to your vehicle
        AT SH 80xxF1

        with xx the address of the Engine Control Unit..
        In Europe BMW's Engine address use to be @ 0x12
        www.outilsobdfacile.com

        Comment


        • #5
          Yes you are absolutely right my friend! I made some more testing in the car today as it is not mine and I can only spend some minutes with it and for example the results for available PIDs are:

          >0100
          86 F1 18 41 00 80 00 00 00 50
          86 F1 12 41 00 BF 9F E8 91 A1

          The BAD thing is that the ECUs don't answer always in the same order ie the above may be:

          >0100
          86 F1 12 41 00 BF 9F E8 91 A1
          86 F1 18 41 00 80 00 00 00 50

          Oh crap! That means that filtering is a pain in the ***.. I will try the command you suggested when I 'll have the car again but still the problem is that I want to make it "universal" so the app can run on ANY vehicle.. So if BMW uses 12 and Audi for example uses 10 then I'm screwed..

          The only way I can think of making it happen is to first try to find the engine ECU, for example by searching for a lamda sensor and then keep its ECU address and use your command.. If this is not possible then after locating the correct ECU to find the address in the OBD response each time, trim the response for the known length (depending on sensor) and then parse..

          Could there be any other way? It is really frustrating.. :/

          Comment


          • #6
            The problem is normally solved like this:

            1. Send 0100 using functional addressing.
            2. Determine which ECU supports more PIDs.
            3. Switch to physical addressing.
            OBDLink MX: world's smallest, fastest, most advanced OBD/Bluetooth adapter with SW and MS CAN support. Read the review to learn more.
            Need to look up a diagnostic trouble code? Try the most up-to-date, free DTCsearch.com!

            You cannot send me a private message using this forum. Use my email instead: vitaliy[@]scantool.net.

            Comment


            • #7
              Thanks Vitaliy.. By physical addressing you mean the AT SH command using the header of the correct ECU right?

              So for the bimmer, would it be AT SH 80 12 F1?

              ps: I think I got it, the message I get from the ECU has a header of 86 F1 12 that means message type 86, target F1 (scantool), source 12 (Engine ECU)

              So according to remus08 If I set the scantool header to 80 (message type) 12 (target engine ECU) F1 (source) once then if I just send 0100 I would get the PIDS from only the engine ECU.. Am I right?

              Also, what is 80 and 86 message types? Is there any list of those?

              Comment


              • #8
                Right, you would use ATSH to set up headers for physical addressing.

                Message type byte has the following structure:

                A1 A0 L5 L4 L2 L1 L0

                A1 and A0 bits are the type:

                00 no address information
                01 exception mode (CARB)
                10 with address information, physical addressing
                11 with address information, functional addressing

                The rest are length bits.

                Note that for ELM327 (and by extension, OBDLink) setting all length bytes to zero has a special meaning: it means that you want the scan tool to insert a fourth header byte (length byte). If you put anything else for length, it will get ignored and ELM327 will automatically fill in the length bits. So, for example, if you send 0100:

                Using default headers, ELM327 will send:

                C2 33 F1 01 00 E7

                ..using ATSH 80 12 F1 headers:

                80 12 F1 02 01 00 86

                ..using ATSH 8x 12 F1 headers (where x is anything besides zero):

                82 12 F1 01 00 86

                Here is another example with the same headers, but sending five bytes:

                85 12 F1 11 22 33 44 55 87

                Best regards,

                Vitaliy
                OBDLink MX: world's smallest, fastest, most advanced OBD/Bluetooth adapter with SW and MS CAN support. Read the review to learn more.
                Need to look up a diagnostic trouble code? Try the most up-to-date, free DTCsearch.com!

                You cannot send me a private message using this forum. Use my email instead: vitaliy[@]scantool.net.

                Comment


                • #9
                  Thank you for your answer Vitaliy..

                  I did some testing in the bimmer tonight.. ATSH 8012F1 was not working at all.. It says OK but then for any pid it says NO DATA.. Note that the bimmer responds 86 F1 12 bla bla..

                  So I tried AT SH 8612F1 and it worked! Only the engine ECU was responding which is what I need.. But.. after some time, especially if I don't send anything for lets say 20secs it will reply NO DATA again.. The version of my ELM is 1.2a and I also tested it with a 1.4 and the result was the same.. After ATZ it responds and then after the AT SH 8612F1 it does the same as described above.. Then sometimes it doesn't answer at all after the AT SH 8612F1 command..

                  If I unplug and plug again the interface it works OK the very first time and then the same..

                  Do you have any idea why it's doing that? It seems like it suddenly sleeps or something, I can't understand.. However the interface every 5secs or sth like that, it sends data to keep it alive and I have tested it in a lot of cars and it never sleeps..

                  Is there any special command I could send to make it respond for ever and not stopping after a while? And it is frustrating that I cannot understand when it stops responding, it just suddenly does it..

                  I'll try to reach a 2009 VW Tiguan 2.0T auto tranny to check if it does the same but it is a pity that the BMW does this..

                  Comment


                  • #10
                    Use the ATWM message to set up periodic keep-alives. It doesn't matter what you actually send, as long as it's a supported PID (like 01 0C).
                    OBDLink MX: world's smallest, fastest, most advanced OBD/Bluetooth adapter with SW and MS CAN support. Read the review to learn more.
                    Need to look up a diagnostic trouble code? Try the most up-to-date, free DTCsearch.com!

                    You cannot send me a private message using this forum. Use my email instead: vitaliy[@]scantool.net.

                    Comment


                    • #11
                      Just as an aside, I found reading through this thread interesting. It applies specifically to Aussie Fords, but some of the insights made make it worth going through.

                      Again, my apologies for sidetracking.

                      Comment


                      • #12
                        Originally posted by Vitaliy View Post
                        Use the ATWM message to set up periodic keep-alives. It doesn't matter what you actually send, as long as it's a supported PID (like 01 0C).
                        So the command would be ATWM 010C?

                        But regarding the problem, do you have any idea what is causing it? I think that before I set the headers there is no problem.. And as said before, the scanner sends something every 5 secs or so and I haven't seen it going to sleep on any other vehicle..

                        Comment


                        • #13
                          Originally posted by Nitroking View Post
                          So the command would be ATWM 010C?

                          But regarding the problem, do you have any idea what is causing it? I think that before I set the headers there is no problem.. And as said before, the scanner sends something every 5 secs or so and I haven't seen it going to sleep on any other vehicle..
                          C'mon man, you've got the ELM327 datasheet -- look it up. When you set up the wakeup message, you need to provide the headers along with the data.

                          I don't know why the ECU times out. If you can connect a second scan tool in parallel, monitor the transmissions, and post the session here, we can try to decipher it together. If you can do it with timestamps (using a free serial port monitor or similar), so much the better.

                          Best regards,

                          Vitaliy
                          OBDLink MX: world's smallest, fastest, most advanced OBD/Bluetooth adapter with SW and MS CAN support. Read the review to learn more.
                          Need to look up a diagnostic trouble code? Try the most up-to-date, free DTCsearch.com!

                          You cannot send me a private message using this forum. Use my email instead: vitaliy[@]scantool.net.

                          Comment


                          • #14
                            Thanks Vitaliy, well my knowledge about electronics is not very good so sometimes I read things in the datasheet that I can't understand.. That's why I asked..

                            I have a second scan tool and I can find a Y cable but I don't have a clue about how to monitor the transmission.. :P

                            Comment


                            • #15
                              OK I did some testing on the Tiguan 2.0T Auto transmission and this makes things even more complicated..

                              The first weird thing I noticed is that the tranny ECU supports a lot of PIDs such as rpm, vss, absolute throttle position(?), even engine coolant temp.. And I'm asking, why ON EARTH would a tranny ECU respond on engine coolant? Since when do trannies have coolant? Or is this information that they share with the engine ecu?

                              Second and most annoying is that the Engine ECU id is 7E8 and the tranny ECU id is 7E9.. The format of the messages is like 7E8 06 41 00 <data> blah blah.. The Bimmer is 86 F1 12 41 00 <data> blah blah.. So this makes the searching for the engine ECU even worse as in the bimmer case you just need to find the 86 and the 12 but in the VW case you need a 3 letter byte (7E8) which makes filtering a bit more complicated..

                              The worst thing is that the AT SH command doesn't accept 3 letter bytes so I was not able to make queries only to the engine ECU.. Something interesting to note is that in case a PID is supported by the Engine ECU and not the tranny ECU, the tranny ECU shuts up and only the engine ECU is responding, for example, for 0110 (MAF) responds only the engine ECU, same for 0114 (narrowband oxygen sensor)..

                              The 3 letter byte is probably because the VW is a CAN one as it is a 2009 model.. But how should I use the ATSH command in order to get responses only by the engine ECU?

                              Comment

                              Working...
                              X