Since there is a mistake on my first post regarding of the protocol, I've made some more research on that. Here is the result on how the ecu response to the command.
Based on Christia999 code, I found the OBD command code was setting at here (refer to picture 1 and picture 2 below)
Picture 1 (The OBD Command)
Picture 2
If we look further on the code comment, the OBD code were divided into few table ranges to store the variable value. Here are the table range comments by Christia999:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;****************************************************************** | |
;* | |
;* OBD interface queries, commands | |
;* | |
;* Codes from $00 to $3d: Regular queries, return the value of the | |
;* variables showed in obdTable located below, | |
;* see each variable definition... First value in table | |
;* correspond to obd query code $00, increases by 1 | |
;* for each table value | |
;* | |
;* Codes from $3e to $3f: Converted to $3d, see that obd code | |
;* | |
;* Codes from $40 to $c9: Returns what is stored in that ram address | |
;* | |
;* Codes from $ca to $ca:: Erase all fault codes and returns $00 if | |
;* engine not rotating. If engine is rotating, all | |
;* actuators/injector commands are reset and $ff | |
;* is returned. | |
;* | |
;* Codes from $cb to $f0: Returns what is stored in that ram address | |
;* | |
;* Codes from $f1 to $fc: Injector/actuators commands, returns $ff if | |
;* successfull | |
;* | |
;* $f1: Activate boost control solenoid | |
;* $f2: Unused in code | |
;* $f3: Activate egr solemoid | |
;* $f4: Activate fuel pressure solenoid | |
;* $f5: Activate purge solenoid | |
;* $f6: Turn on fuel pump | |
;* $f7: Disable injector #6 (inoperative in code) | |
;* $f8: Disable injector #5 (inoperative in code) | |
;* $f9: Disable injector #4 | |
;* $fa: Disable injector #3 | |
;* $fb: Disable injector #2 | |
;* $fc: Disable injector #1 | |
;* | |
;* Codes from $f1 to $ff: Special queries | |
;* | |
;* $fd: Serial link test, returns $b5 (E931) or $b7 (E932) | |
;* $fe: resistor strapping low word from t_strap3 | |
;* $ff: resistor strapping high word from t_strap3 | |
;* | |
;****************************************************************** |
So it is prove that the function for RPM is correct where RPM function is y=31.25*x and x is a value response by ECU.
Communication Signal
As I've wrote before, the communication with the ECU can describe as below:
Reference:
- Serial communications rate is 1953 baud, 8 bits, 1 stop bit, no parity, TTL.
- Communication signal is "Inverted"
- Communication referral as 1 byte sent and 1 bytes receive
Multiplexing communication between ECU
Reference:
- E931/E932 source files with comments and symbols.
- Multiplexing on Wikipedia
Boss, i really impress with your project. I tried to read my car,s ecu since 2010 and built my own device but failed. How can i contact you? My email is yusrijamal(a)gmail.com. Please send me your contact number and email. Thank you. I am desperate to know.
ReplyDeleteHi yusri, tak terperasan ada komen nie. Awak boleh e-mail saya di en.gosip(at)gmail.com
ReplyDeleteHellk bro.sy still xpaham la. Bole tunjuk cara nye dlm video tak??
ReplyDelete
ReplyDeletehi dear its very first-class and very helpful submit for those who are new and thinking to begin a weblog site.Your posts are very helpful and creative mitsubishi