1. Attachments are working again! Check out this thread for more details and to report any other bugs.

Scangauge or Torque App?

Discussion in 'Generation 1 Prius Discussion' started by FinsUp99, Dec 29, 2012.

  1. vincent1449p

    vincent1449p Active Member

    Joined:
    May 24, 2004
    894
    331
    0
    Location:
    Singapore
    Vehicle:
    2012 Prius c
    I think I got mixed up with the SGII. The SGII treats all received data in 2's complement format and can display it properly. However, it has problem when it comes to division of the received data.

    The MG1 and MG2 RPM do not have division so I thought there isn't a need to indicate to ELM327 that it is a signed number. I could be wrong...

    Vincent
     
  2. ChapmanF

    ChapmanF Senior Member

    Joined:
    Mar 30, 2008
    24,906
    16,213
    0
    Location:
    Indiana, USA
    Vehicle:
    2010 Prius
    Model:
    IV
    Interesting point - yes, I guess it does display values as negative if the MSB is set, so its display code apparently treats all values as twos-complement (and doesn't give you a way to indicate otherwise). At the same time, its arithmetic code treats everything as unsigned (and doesn't give you a way to indicate otherwise) - that's what the problem when it comes to division is. The beauty of twos-complement representation is that addition, subtraction, and even multiplication are the same operations whether something is twos-complement or unsigned, but that doesn't extend to division; there are two different operations, and which version of 'divide' is used reveals whether the data are being treated as twos-complement or unsigned. Division on a SGII always gives the result that would be correct for unsigned-divide, so in that sense it is treating received data as unsigned.

    So what Linear Logic would have to do if they wanted to fix that is: (a) they'd need to define an XGAUGE bit for signed/unsigned, and (b) they'd have to check that bit in two places: the display code (instead of always treating as twos-complement) and the division code (instead of always treating as unsigned).

    I don't think the ELM327 really cares - it just brings you the bits back. It's the app using the received data that needs to know the representation.

    -Chap
     
  3. ChapmanF

    ChapmanF Senior Member

    Joined:
    Mar 30, 2008
    24,906
    16,213
    0
    Location:
    Indiana, USA
    Vehicle:
    2010 Prius
    Model:
    IV
    I've checked in a new exporter on the sourceforge page that fills in all the Min and Max ... by calculating the absolute min and max possible given each item's bit width and representation. For some that will be close to the actual expected range and for others it'll be silly, but at least it won't be missing.

    Eventually it would make sense to define min/max attributes in the database for some items when we know what the real min and max are, and have the exporter use those if present, and only fall back to this default approach where they aren't. Later....

    I noticed not everything in the database has ucum units assigned (sometimes we don't know what the units are). The exporter now leaves Units blank in that case (it used to generate the wrong number of CSV columns for a row with no unit, oops). I hope Torque will load a file that has some blank units. If not, let me know....

    I also caught a wrong unit in NHW11.xml so please work from a fresh download.

    Cheers,
    -Chap
     
  4. Jeff F

    Jeff F Member

    Joined:
    Oct 10, 2012
    111
    37
    0
    Location:
    London, Ontario
    Vehicle:
    2001 Prius
    Model:
    N/A
    Sounds like we are having the same issue. If you use the test function from the 'Add Custom PIDs' screen you can see what the adaptor is returning. In my case it shows the response from two ECUs, with the second one the correct value, but I can't figure out how to either a) address only one ecu, or b) have the app select the appropriate response. Seems like a) would be preferable, and the header should support that, but I can't figure out exactly what the app is doing.

    It's about -17 here in Canada this morning. I usually bike to work, but this morning I opted for the fridge on wheels :) Less wind chill at least...
     
  5. ChapmanF

    ChapmanF Senior Member

    Joined:
    Mar 30, 2008
    24,906
    16,213
    0
    Location:
    Indiana, USA
    Vehicle:
    2010 Prius
    Model:
    IV
    Hi Florian,

    Well, now you do have an exporter :) available here, so it should save you the manual work getting the rest of the PIDs transcribed (and that way any errors we find we can fix one place on sourceforge and everyone benefits).

    I didn't mention before that it isn't even necessary to keep a downloaded copy of NHW11.xml to run the exporter on it, because Saxon's -s option can take a URL:

    Code:
    java -cp saxon9.jar net.sf.saxon.Query \
    -s:http://sourceforge.net/apps/trac/obdchat/export/HEAD/trunk/databases/Toyota/NHW11.xml \
    -o:NHW11.csv torque.xq
    will always use the most current NHW11.xml on sourceforge and create an NHW11.csv file for you.

    -Chap
     
    Florian_steiper likes this.
  6. ChapmanF

    ChapmanF Senior Member

    Joined:
    Mar 30, 2008
    24,906
    16,213
    0
    Location:
    Indiana, USA
    Vehicle:
    2010 Prius
    Model:
    IV
    aside: if you've downloaded Saxon, you can also do easy ad-hoc queries by just writing the query inside {}s in place of a script file name, for example:

    Code:
    java -cp saxon9.jar net.sf.saxon.Query \
    -s:http://sourceforge.net/apps/trac/obdchat/export/HEAD/trunk/databases/Toyota/NHW11.xml \
    '{for $e in //ecu return ($e/@address/string(), count($e//field))}'
    will tell you in the database are currently 24 fields defined for ecu 10, 43 for ecu 16, and 56 for ecu d5. The ones for ecu 10 might all be standard ones Torque already knows about, so it's ~99 specialized fields we've got in the database so far.

    -Chap
     
    Florian_steiper likes this.
  7. Florian_steiper

    Florian_steiper Junior Member

    Joined:
    Nov 12, 2007
    16
    14
    0
    Hello Chap,

    thanks for the converter. I downloaded it, but at this second don't know where I can getsaxon9.jar I got something which looks like the same, but it is asking for a license file.. I'll give it another look tomorrow.

    I also worked a bit on my spreadsheet (not quite as elegant as java) but it still produces a NHW11.csv the update rate inside the car is somewhat slow, but most of the things seem to work.

    Here is my current version:

    Code:
    "Name","ShortName","ModeAndPID","Equation","Min Value","Max Value","Units","Header"
    "Engine Coolant Temperature C","°CWT","0105","A*(1/100)*(1/1)-40",-40,216,"°C","16F1"
    "Engine Coolant Temperature F","°FWT","0105","A*(1/100)*(9/5)-40",-40,420,"°F","16F1"
    "Engine Speed","RPM","010C","(a*256+b)*(1/1)*(1/4)+0",0,5000,"rpm","16F1"
    "Vehicle Speed kmh","KPH","010D","a*(1/1)*(1/1)+0",0,170,"km/h","16F1"
    "Vehicle Speed mph","MPH","010D","A*(1/1)*(10/16)+0",0,110,"mph","16F1"
    "Intake Air Temperature C","°CIA","010F","a*(1/1)*(1/1)-40",-40,216,"°C","16F1"
    "Intake Air Temperature F","°FIA","010F","A*(1/1)*(9/5)-40",-20,420,"°F","16F1"
    "Distance traveled with MIL on km","DML","0121","(a*256+b)*(1/100)*(1/1)+0",0,600,"km","16F1"
    "Distance traveled with MIL on miles","DML","0121","(a*256+b)*(1/100)*(10/16)+0",0,600,"miles","16F1"
    "INFO. Code 1","ic1","01AA","(a*256+b)*(1/1)*(1/1)+0",0,256,"inf","16F1"
    "INFO. Code 2","ic2","01B1","(a*256+b)*(1/1)*(1/1)+0",0,256,"inf","16F1"
    "INFO. Code 3","ic3","01B7","(a*256+b)*(1/1)*(1/1)+0",0,256,"inf","16F1"
    "INFO. Code 4","ic4","01BD","(a*256+b)*(1/1)*(1/1)+0",0,256,"inf","16F1"
    "MG2 RPM","M2R","01C2","(signed(a*256)+b)*(1/1)*(1/1)+0",-10000,10000,"rpm","16F1"
    "MG2 Torque","M2T","01C2","(c*256+d)*(1/1)*(1/1)+0",-400,400,"Nm","16F1"
    "MG2 Torque (Graham)","M2T","01C2","(c*256+d)*(1/1)*(1/8)+0",-400,400,"Nm","16F1"
    "Regen Brake Execution Torque","reT","01C3","a*(1/1)*(10/16)+0",0,160,"Nm","16F1"
    "Regen Brake Request Torque","rrT","01C3","b*(1/1)*(10/16)+0",0,160,"Nm","16F1"
    "MG1 RPM","M1R","01C4","(signed(a*256)+b)*(1/1)*(1/1)+0",-10000,10000,"rpm","16F1"
    "MG1 RPM","M1R","01C4","(a*256+b)*(1/1)*(1/1)+0",-10000,10000,"rpm","16F1"
    "MG1 Torque","M1T","01C4","(c*256+d)*(1/1)*(1/1)+0",-400,400,"Nm","16F1"
    "MG1 Torque (Graham)","M1T","01C4","(c*256+d)*(1/1)*(1/8)+0",-400,400,"Nm","16F1"
    "Request Engine Power","Pe","01C5","(a*256+b)*(1/100)*(1/1)+0",0,75,"kW","16F1"
    "Target Engine Revolution","ter","01C6","(a*256+b)*(1/1)*(1/1)+0",0,5000,"rpm","16F1"
    "Engine Speed (similar to RPM)","rpm","01C7","(a*256+b)*(1/1)*(1/1)+0",0,5000,"rpm","16F1"
    "Master Cylinder Control Torque","mcT","01C8","(a*256+b)*(1/1)*(1/1)+0",0,400,"Nm","16F1"
    "State-of-Charge 2","soC","01C9","a*(1/10)*(200/51)+0",0,100,"%","16F1"
    "WIN Control Power","Pwi","01CA","b*(1/10)*(16/10)+0",0,40,"kW","16F1"
    "WOUT Control Power","Pwo","01CA","a*(1/10)*(16/10)+0",0,40,"kW","16F1"
    "Drive Situation ID","dID","01CC","a*(1/1)*(1/1)+0",0,6,"code","16F1"
    "MG1 Inverter Temperature C","Ti1","01CD","a*(1/1)*(1/1)-50",-40,216,"°C","16F1"
    "MG1 Inverter Temperature F","Ti1","01CD","a*(1/1)*(9/5)-58",-40,216,"°F","16F1"
    "MG2 Inverter Temperature C","Ti2","01CD","b*(1/1)*(1/1)-50",-40,216,"°C","16F1"
    "MG2 Inverter Temperature F","Ti2","01CD","b*(1/1)*(9/5)-58",-40,216,"°F","16F1"
    "MG1 Temperature C","TM1","01CE","a*(1/1)*(1/1)-50",-40,216,"°C","16F1"
    "MG1 Temperature F","TM1","01CE","a*(1/1)*(9/5)-58",-40,216,"°F","16F1"
    "MG2 Temperature C","TM2","01CE","b*(1/1)*(1/1)-50",-40,216,"°C","16F1"
    "MG2 Temperature F","TM2","01CE","b*(1/1)*(9/5)-58",-40,216,"°F","16F1"
    "Motor Current V","M2v","01CF","(a*256+b)*(1/1)*(1/1)+0",0,256,"A","16F1"
    "Motor Current W","M2w","01CF","(c*256+d)*(1/1)*(1/1)+0",0,256,"A","16F1"
    "Generator Current V","M1v","01D0","(a*256+b)*(1/1)*(1/1)+0",0,256,"A","16F1"
    "Generator Current W","M1w","01D0","(c*256+d)*(1/1)*(1/1)+0",0,256,"A","16F1"
    "HV Battery Voltage","btV","01D1","A*(1/1)*(2/1)+0",0,512,"V","16F1"
    "HV Battery Current 2","BTA","01D2","(a*256+b)*(1/1)*(2/1)+0",0,200,"A","16F1"
    "Shift Sensor 2","spS","01D3","(a*256+b)*(1/10)*(1/5)+0",0,5,"V","16F1"
    "Shift Sensor 1","spM","01D4","a*(1/1)*(1/1)+0",0,32,"bits","16F1"
    "Acceleration Sensor Main","acM","01D5","a*(1/10)*(1/5)+0",0,5,"V","16F1"
    "Acceleration Sensor Sub","acS","01D5","b*(1/10)*(1/5)+0",0,5,"V","16F1"
    "Battery Cell Temperature Max C","Thi","01D6","a*(1/1)*(1/1)+0",0,256,"°C","16F1"
    "Battery Cell Temperature Max F","Thi","01D6","a*(1/1)*(9/5)+32",0,490,"°F","16F1"
    "Battery Cell Temperature Min C","Tlo","01D6","b*(1/1)*(1/1)+0",0,256,"°C","16F1"
    "Battery Cell Temperature Min F","Tlo","01D6","b*(1/1)*(9/5)+32",0,490,"°F","16F1"
    "Vehicle Speed (Similar to KPH)","kph","01D7","a*(1/1)*(2/1)+0",0,170,"kmh","16F1"
    "Vehicle Speed (Similar to MPH)","mph","01D7","a*(1/1)*(5/4)+0",0,110,"mph","16F1"
    "INFO. Code 5","ic5","01DF","(a*256+b)*(1/1)*(1/1)+0",0,256,"inf","16F1"
    "State-of-Charge 1","soc","0191","A*(1/10)*(10/2)+0",0,100,"%","D5F1"
    "Main Battery low","nlo","0197","(a*256+b)*(1/1)*(1/1)+0",0,1000,"num","D5F1"
    "No. of Battery DTCs","#TC","019C","(a*256+b)*(1/1)*(1/1)+0",0,1000,"num","D5F1"
    "HV Battery Current (for <100A only)","bta","01A3","(a*256+b)*(1/10)*(1/10)-1280",-1280,1280,"A","D5F1"
    "HV Battery Current 1","btA","01A3","(a*256+b)*(1/1)*(1/100)-128",-128,128,"A","D5F1"
    "Battery Block 1 Voltage","V01","01A4","(a*256+b)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 2 Voltage","V02","01A4","(c*256+d)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 3 Voltage","V03","01A5","(a*256+b)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 4 Voltage","V04","01A5","(c*256+d)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 5 Voltage","V05","01A6","(a*256+b)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 6 Voltage","V06","01A6","(c*256+d)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 7 Voltage","V07","01A7","(a*256+b)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 8 Voltage","V08","01A7","(c*256+d)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 10 Voltage","V10","01A8","(c*256+d)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 9 Voltage","V09","01A8","(a*256+b)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 11 Voltage","V11","01A9","(a*256+b)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 12 Voltage","V12","01A9","(c*256+d)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 13 Voltage","V13","01AA","(a*256+b)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 14 Voltage","V14","01AA","(c*256+d)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 15 Voltage","V15","01AB","(a*256+b)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 16 Voltage","V16","01AB","(c*256+d)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 17 Voltage","V17","01AC","(a*256+b)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 18 Voltage","V18","01AC","(c*256+d)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Block 19 Voltage","V19","01AD","(a*256+b)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Lowest Battery Block Number","blo","01AE","c*(1/1)*(1/1)+0",1,19,"#","D5F1"
    "Lowest Battery Block Voltage","Vlo","01AE","(a*256+b)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Highest Battery Block Number","bhi","01AF","c*(1/1)*(1/1)+0",1,19,"#","D5F1"
    "Highest Battery Block Voltage","Vhi","01AF","(a*256+b)*(1/100)*(1/1)+0",0,20,"V","D5F1"
    "Battery Inhaling Air Temperature C","TBi","01B2","A*(1/1)*(1/1)-40",-40,216,"°C","D5F1"
    "Battery Inhaling Air Temperature F","TBi","01B2","A*(1/1)*(9/5)-40",-40,216,"°F","D5F1"
    "Main Battery high","nhi","01B4","(a*256+b)*(1/1)*(1/1)+0",0,1000,"xxx","D5F1"
    "Delta State-of-Charge","dSC","01BC","a*(1/10)*(10/2)+0",0,100,"%","D5F1"
    "Battery Block 1 Resistance","R01","01CA","a*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 2 Resistance","R02","01CA","b*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 3 Resistance","R03","01CA","c*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 4 Resistance","R04","01CA","d*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 5 Resistance","R05","01CB","a*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 6 Resistance","R06","01CB","b*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 7 Resistance","R07","01CB","c*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 8 Resistance","R08","01CB","d*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 10 Resistance","R10","01CC","b*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 11 Resistance","R11","01CC","c*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 12 Resistance","R12","01CC","d*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 9 Resistance","R09","01CC","a*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 13 Resistance","R13","01CD","a*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 14 Resistance","R14","01CD","b*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 15 Resistance","R15","01CD","c*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 16 Resistance","R16","01CD","d*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 17 Resistance","R17","01CE","a*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 18 Resistance","R18","01CE","b*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Block 19 Resistance","R19","01CE","c*(1/1)*(1/1)+0",0,256,"mOhm","D5F1"
    "Battery Temperature, Sensor 1 C","TS1","01D0","A*(1/1)*(1/1)-40",-40,216,"°C","D5F1"
    "Battery Temperature, Sensor 1 F","TS1","01D0","A*(1/1)*(9/5)-40",-40,400,"°F","D5F1"
    "Battery Temperature, Sensor 2 C","TS2","01D0","B*(1/1)*(1/1)-40",-40,216,"°C","D5F1"
    "Battery Temperature, Sensor 2 F","TS2","01D0","B*(1/1)*(9/5)-40",-40,400,"°F","D5F1"
    "Battery Temperature, Sensor 3 C","TS3","01D0","C*(1/1)*(1/1)-40",-40,216,"°C","D5F1"
    "Battery Temperature, Sensor 3 F","TS3","01D0","C*(1/1)*(9/5)-40",-40,400,"°F","D5F1"
    "Battery Temperature, Sensor 4 C","TS4","01D1","A*(1/1)*(1/1)-40",-40,216,"°C","D5F1"
    "Battery Temperature, Sensor 4 F","TS4","01D1","A*(1/1)*(9/5)-40",-40,216,"°F","D5F1"
    
    Sorry, its a bit on the long side. Now we need to go bug hunting and check which ones are working and which ones are buggy. as I already said, some temperatures are wrong.. also the HV battery current and voltage didn't work for me :(

    if I need to be a passenger on a longer drive I will check the list and see which values are actually working and which ones are on the crazy side.

    Also, I could make the scaling formula a little easier somehow and get both factors into one single number.. maybe later :) I also attached the odc file (openoffice calc) so feel free to explore.

    Best regards

    Florian
     

    Attached Files:

    GeorgeGarman likes this.
  8. ChapmanF

    ChapmanF Senior Member

    Joined:
    Mar 30, 2008
    24,906
    16,213
    0
    Location:
    Indiana, USA
    Vehicle:
    2010 Prius
    Model:
    IV
    Hi Florian,

    Sorry about that. My code will work with the free "available indefinitely" last version of Saxon-B, 9.1.0.8.

    If you look here and scroll down you will see the download links for Java or .NET. (I use the Java version for testing so I'm not sure the exporter would run in the .NET version but it might).

    Regards,
    -Chap
     
  9. Jeff F

    Jeff F Member

    Joined:
    Oct 10, 2012
    111
    37
    0
    Location:
    London, Ontario
    Vehicle:
    2001 Prius
    Model:
    N/A
    Vincent, thanks for your help. As is often the case, I was only 1/2 right!

    I was just reading this thread Master warning, no MIL | PriusChat as well as lots of stuff on the web the last few days. There is surprisingly little Toyota-specific information on this issue. Your discussion with jonbarril roughly matches some of what I've tried.

    I'm connected with protocol ISO 9141-2, and have been trying unsuccessfully to set the header to use physical or functional addressing. The header references above don't make any difference - we get responses from more than one ecu for a good number of these PIDs, and Torque uses the first valid response. Torque also allows three byte PID definitions, which I suspect may be relevent/useful, but documentation is scarce.

    My next step in the absence of any bright ideas from you guys is to open a command line session with the adaptor and start banging away. But I'm out of my depth here...

    If I just exclude the problem measurements I still have a fairly rich set of data now that I didn't have a couple of weeks ago, so it's not all bad. But I'd like to figure this one out.
     
  10. Florian_steiper

    Florian_steiper Junior Member

    Joined:
    Nov 12, 2007
    16
    14
    0
    Hello,

    got the correct version of Saxon and also tried your command line. Worked as much as I can tell at the moment :) I'll try in the car later on.

    Best regards

    Florian
     
  11. ChapmanF

    ChapmanF Senior Member

    Joined:
    Mar 30, 2008
    24,906
    16,213
    0
    Location:
    Indiana, USA
    Vehicle:
    2010 Prius
    Model:
    IV
    Hi Florian,

    Thanks! Have you already been able to load the file into Torque without complaint, waiting only to test it in the car? Or have you not loaded it in Torque yet?

    I am a little concerned by the other conversation I've seen here regarding multiple responding ECUs. I do generate the file with the target ECU address, but I do not think I am doing anything magically different from what Jeff is doing, so I suspect the multiple responses will still be a problem until we find a solution to that. I think the ELM chip is supposed to be capable of addressing one ECU only, but there is the complication of not knowing exactly what Torque is sending to the ELM chip.

    -Chap
     
  12. Florian_steiper

    Florian_steiper Junior Member

    Joined:
    Nov 12, 2007
    16
    14
    0
    Hello Chap,

    I generated the file and also loaded it into the phone and connected to the car (short trip only).

    As much as I can tell it is working.

    Most sensors deliver a useful value.

    What is not working is some temperature sensors (they always display -40°C) and the HV battery voltage sits at 2V for me. Also, the several HV battery current readings do not make a lot of sense to me at the moment.

    As I said, I'll probably print out the whole list and then go through all the values one by one and report if they make sense or not.

    Torque has a nice testing feature where you can see the received data from the ECU. For the sensors which have problems this might be a nice way of debugging.

    let's wait a little until it gets warmer (or bob gets an android device and bluetooth OBD dongle as well).

    Best regards

    Florian
     
  13. Jeff F

    Jeff F Member

    Joined:
    Oct 10, 2012
    111
    37
    0
    Location:
    London, Ontario
    Vehicle:
    2001 Prius
    Model:
    N/A
    We'll get there. One further thought - I'm now convinced that the challenge is forming the OBD headers correctly, and that if we can get the desired behaviour through the ELM adaptor getting the Torque app (or any other client software) to work will be easy. So if anyone else is interested in solving this, an inexpensive ELM adaptor connected to any bluetooth enabled computing device would allow testing/interaction with OBD.

    I will at some point publish an inventory of what I'm able to get. For instance I can get all block voltages except 5 and 6, where there are multiple responses to the A6 code.
     
    usnavystgc likes this.
  14. Jeff F

    Jeff F Member

    Joined:
    Oct 10, 2012
    111
    37
    0
    Location:
    London, Ontario
    Vehicle:
    2001 Prius
    Model:
    N/A
    I finally solved the header issue, and am now able to address the specific ECU. After searching and reading for a couple of weeks it came down to experimentation... Torque is just passing this through to ELM, so this header will work with any application connecting through ELM.

    The header should be 84xxF1, where xx is the ECU (16, D5 or 10).

    Jeff
     
  15. ChapmanF

    ChapmanF Senior Member

    Joined:
    Mar 30, 2008
    24,906
    16,213
    0
    Location:
    Indiana, USA
    Vehicle:
    2010 Prius
    Model:
    IV
    Hmm, and are you saying that works but the 82xxF1 that Vincent suggested earlier doesn't?

    There are things going on here I don't understand....

    Is this the iso14230 tricky business where the first byte includes two priority bits and a length but it doesn't matter because the ELM327 overwrites the low six bits with the correct length anyway? If so, I'd think 82 and 84 would work equally well.

    But anyway, I've updated the exporter on sourceforge to produce the 84xxF1 form for everything, so maybe that will get things working.

    -Chap
     
  16. Jeff F

    Jeff F Member

    Joined:
    Oct 10, 2012
    111
    37
    0
    Location:
    London, Ontario
    Vehicle:
    2001 Prius
    Model:
    N/A
    Your new export file loads fine and returns a single result for each pid, which addresses the problems I was having. Thanks. I'm not sure we've solved for the signed variables, but that seems to be the only outstanding issue. I will do more testing, and will report back.

    I don't understand why it works, and in fact am going to recant my claim that this will work outside of Torque. But it's working perfectly for me in Torque. I wish I understood more of what is going on, but the 82xxF1 definitely doesn't work. I think the ISO14230 standards are a distraction, because as far as I can tell the adaptor is always operating under ISO9141 which doesn't have the same standards for the header and wouldn't call for the same intervention of the adaptor in building the header. Does that make sense?
     
  17. PriusWI

    PriusWI New Member

    Joined:
    Jan 27, 2013
    26
    6
    0
    Vehicle:
    2001 Prius
    Model:
    I
    I used the latest csv file in torque and it worked great! Thanks for your hard work!
     
  18. bwilson4web

    bwilson4web BMW i3 and Model 3

    Joined:
    Nov 25, 2005
    27,665
    15,664
    0
    Location:
    Huntsville AL
    Vehicle:
    2018 Tesla Model 3
    Model:
    Prime Plus
    Sorry for interrupting but I wanted to make sure I'm following this correctly:

    84 - prefix needed for ELM (aka., mode)​
    16|D5|10 - destination ECU address, 16->HV ECU, D5->battery,10->engine(?)​
    F1 - ELM address​
    01 - mode includes count of PID bytes​
    xx - PID byte, depends on ECU​

    Now the one thing that still has me confused is the case of the returned bytes, "A" versus "a", used in the formula. Is the case significant other than the same case must be used within a formula?

    Thanks,
    Bob Wilson
     
  19. ChapmanF

    ChapmanF Senior Member

    Joined:
    Mar 30, 2008
    24,906
    16,213
    0
    Location:
    Indiana, USA
    Vehicle:
    2010 Prius
    Model:
    IV
    Bob,

    I think selective incuriosity is what helped me escape that confusion. Upper case is what I saw in other people's examples, so upper case is what I made the exporter spit out, and it reportedly works.

    To find out whether lower case works too, I guess one could either try it, or inquire on a Torque user forum....

    -Chap
     
  20. Jeff F

    Jeff F Member

    Joined:
    Oct 10, 2012
    111
    37
    0
    Location:
    London, Ontario
    Vehicle:
    2001 Prius
    Model:
    N/A
    It's not case sensitive. You can mix and match.