2009年5月25日 星期一

Understanding OBD-II protocol

0.簡介

http://en.wikipedia.org/wiki/On_Board_Diagnostics

http://www.obddiagnostics.com/obdinfo/info.html

OBD-II (On-Board Diagnoistics II) 定義了與ECU(行車電腦)溝通的方式.
包括Hardware Connector的形式,腳位.電子訊號的protocol與溝通代碼等.

這裡我所關心的是protocol與溝通代碼的部份.目前已有IC廠商開發出解譯Chip.
最廣為使用的是ELM327這顆.它提供一個RS232 Terminal的介面與ECU溝通.

http://www.elmelectronics.com/DSheets/ELM327DS.pdf

連線的Baud rate 有兩種選擇 9600 8N1 及 38400 8N1.
正確連接之後將可於terminal上見到連線提示.

ELM327 v1.3a
>

以下皆以ELM327作為平台.

1.OBD-II Commands

OBD Command 是實際與ECU溝通的資料組成方式.實際傳送時ELM327會自動加上3 bytes header及資料尾端1 byte CRC checksum.
大部分的OBD Command都只有1~2 byte的長度,最大的長度為7 bytes.
OBD Command的第一個byte代表 mode.依據SAE standard J1979定義mode 十六進位值所代表的意義如下.

01 - show current data
02 - show freeze frame data
03 - show diagnostic trouble codes
04 - clear trouble codes and stored values
05 - test results, oxygen sensors
06 - test results, non-continuously monitored
07 - show ‘pending’ trouble codes
08 - special control mode
09 - request vehicle information

ISO 15765-4 (CAN) standard定義

0A-Used for permanent trouble code

注意 : OBD standard 並未要求ECU必須支援所有mode.

OBD Command的第二個byte代表PID (P-Codes),之後的 bytes 為資料

http://en.wikipedia.org/wiki/OBD-II_PIDs







沒有留言:

張貼留言