OBD-II_PID

**OBD-II PID** 是車上診斷系統（OBD）參數 ID 的簡稱，是在診斷工具上向車輛請求資料用的編碼。

國際汽車工程師學會（SAE）標準 J1979（電子診斷測試模式）中定義了許多 OBD-II PID。所有北美的道路車輛及卡車都要支援一部份的 OBD-II PID，主要是在有強制排氣檢測的州。製造商也定義針對個別車輛的 PID。目前沒有強制摩托車要支援 OBD-II PID，不過也有許多的摩托車支援。

在 1996 年時，輕型商用車（重量小於 8,500 磅 [3,900 公斤]）首先強制要支援 OBD-II PID，之後是中型商用車（重量在 8,500－14,000 磅 [3,900－6,400 公斤] 之間）在 2005 年強制支援。輕型商用車及中型商用車都要可以透過由 SAE J1962 定義的標準數據鏈路連接器進行存取。

依加州空氣資源局（CARB）的加州法規（CCR） sections 1971.1 title 13，美國 2010 年之後生產的重型商用車（重量大於 14,000 磅 [6,400 公斤]）可以透過 SAE standard J1939-13（圓型的診斷用連接頭）支援 OBD-II 的診斷機能。有些北美的重型卡車使用 SAE J1962 OBD-II 診斷連接器，這也是一般轎車常用的連接器，知名的有麥克貨車及富豪卡車，不過 CAN 識別符是 29 位元，不是一般轎車的 11 位元。

## 模式

在最新的 OBD-II 標準 SAE J1979 中，有列出十種診斷服務。2002 年以前的 J1979，將這些服務稱為模式（modes）。其說明如下：

汽車製造商不一定要實現所有的服務，製造商可以在 #9 以上增加製造商定義的服務（例如服務 22 是由 Ford/GM 的 SAE J2190 所定義，而服務 21 是因 Toyota 而定義) ，這些服務可以提供其他的資料，例如混合動力電動汽車（HEV）中牽引電池的電壓。

非 OBD 的統一診斷服務從 0x10 開始，避免和 ID 範圍重疊。

## 標準 PID

下表中所列的是依 SAE J1979 定義的標準 OBD-II PID。也列出每個 PID 的預期回應，以及回應和實際物理量之間的關係。不是所有車輛都會支援每一個 PID，也有一些 PID 是廠商定義的，不在 OBD-II 標準中。

服務 01 和 02 基本上是相同的，不過服務 01 會提供目前的資訊，而服務 02 會提供上一次出現診斷錯誤碼時的資訊。但 PID 01 和 PID 02 是例外，PID 01 隻出現在服務 01，而 PID 02 隻出現在服務 02，若服務 02 的 PID 02 為零，表示沒有凍結的頁框資料，其他服務 02 的資料都沒有意義。

若用位元編碼表示（Bit-Encoded-Notation）時，像 C4 表示是資料位元組 C 的第 4 位元。每一個位元都有 0 到 7 的編號，7 是最高位元，而 0 是最低位元。

### 服務 01

### 服務 02

服務 02 的 PID 和服務 01 相同，意義也相同，不過資訊是在產生凍結頁框時的資料。

需要在訊息的資料區中傳送頁框號碼。

### 服務 03

### 服務 04

### 服務 05

### 服務 09

### 位元編碼 PID

上表中有部份的 PID 無法用簡單的公式來說明。以下是這些 PID 的細部說明。

#### 服務 01 PID 00

這個 PID 的請求會回傳 4 位元組的資料（Big-endian。每一個位元的排序順序是由 MSB 到 LSB。表示接下來的 32 個 PID，並且說明支援哪些 PID。

例如，若汽車的回覆是 BE1FA813，可以解碼如下

因此，支援的 PID 有：01、03、04、05、06、07、0C、0D、0E、0F、10、11、13、15、1C、1F 及 20

#### 服務 01 PID 01

這個 PID 的請求會回傳 4 位元組的資料，分別標示 A B C、D。

第一個位元組（A）包括二部份的資訊。位元 A7（位元組 A 的 MSB）表示 MIL（檢查發動機警示燈）是否點亮。位元 A6 到 A0 表示發動機控制器顯示的診斷故障碼。

第二至第四位元組（B, C 和 D）表示特定在線測試的可進行程度（availability）及完整性（completeness）。可用程度會用設定位元 1 來表示，而完整性會用清除位元 0 來表示。

以下是常見的 B 位元組定義，是以測試為基礎的內容。

第三位元組及第四位元組的定義會依發動機是火星塞點火（奧托發動機或汪克爾發動機）或柴油發動機而不同。第二位元組的 bit 3 會說明如何定義位元組 C 和 D，0 表示是火星塞點火（奧托發動機或汪克爾發動機），1 表示是壓縮點火（柴油發動機）

火星塞點火監控時的位元組 C 和 D （奧托發動機或汪克爾發動機）：

柴油發動機監控時的位元組 C 和 D：

#### 服務 01 PID 41

這個 PID 的請求會回傳 4 位元組的資料。 
第一個位元組會是 0，第二個到第四個位元組會提供特定在線測試（on-board test）可進行程度（availability）及完整性（completeness）。和 PID 01 相同，第三和第四個位元組的定義會依發動機類型（B3）而不同，B3 為 0 表示是火星塞，為 1 表示是壓縮點火。可進行程度（availability）是用位元 1 表示，而完整性（completeness）是用位元 0 表示。

以下是共用的位元組 B 的定義，以測試為基礎。

針對火星塞點火監控的位元組 C 和 D（奧托發動機或汪克爾發動機）：

柴油發動機監控時的位元組 C 和 D：

#### 服務 01 PID 78

這個 PID 的請求會回傳 9 位元組的資料。 
第一個位元組是位元編碼，表示支援的尾氣溫度感測器：

第一個位元組的位元編碼如下：

剩下的位元組是 16 位元的整數，表示攝氏下的溫度，範圍從 - 40 到 6513.5（比例 0.1），其轉換公式為 $(A\times 256+B)/10-40$ （高位元組為 A，低位元組是 B）。只有有支援的感測器對應的值是有意義的。

PID 79 的結構相同，但是是針對 bank 2 的感測器。

#### 服務 03（不需 PID）

此服務的請求會回傳一串已設定的 DTC。會用 ISO 15765-2 的協定進行封裝。

若 DTC 不超過二個（4 位元組），會用 ISO-TP 單一頁框格式（SF）回覆。若三個或三個以上的 DTC，會分為多個頁框傳送，實際的頁框數會依通訊格式以及定址方式而定。

每個診斷錯誤碼為二個位元組。診斷錯誤碼的文字敘述如下。診斷錯誤碼的第一個字會由第一個位元組的前二個位元決定：

DTC 碼的第二個字由會由第一個位元組的下二個位元決定：

DTC 碼的第三個字是一個數字，定義如下：

DTC 碼的第四個字及第五個字定義方式類似，不過是用 B7-B4 和 B3-B0 位元。所產生的五個字元需類似 U0158 之類的字元，而且可以在 OBD-II DTC 表上找到。最後三個字允許使用十六進制的數字（0-9, A-F），不過常見的還是使用十進制的數字（0-9）。

#### 服務 09 PID 08

會提供有關催化劑 bank、氧氣偵測器 bank、蒸發泄漏偵測系統、排氣再循環及第二側空氣系統的使用追蹤資訊。

每一個元件或是系統的分子針對偵測特定誤動作的監控，追蹤該監控所有條件成立的次數
每一個元件或是系統的分母針對該特定條件，車輛運作的次數

資料的個數需在訊息的一開始就說明（第一個位元組）

所有使用中性能追蹤的資料會包括二個位元組，依次數送出（每個訊息有二個資料，因此長度為 4）

#### 服務 09 PID 0B

此服務提供有關 NMHC 催化劑監控、NOx 催化劑監控、NOx 吸收器監控、PM 過濾器監控、排氣感測器監控、GR（排氣再循環）及／或 VVT（可變氣門正時）監控，提昇壓力監控及燃料系統監控的使用性能資訊。

所有的資料都有 2 個位元，以以下的順序排列（每一個訊息有二個資料，因為是 4 個位元）：

### 枚舉 PID

有些 PID 的解讀方式比較特殊，是有枚舉的型式，這類 PID 沒有位元定義，也沒有單位。

#### 服務 01 PID 03

這種 PID 的請求會回覆二個位元組的資料。
第一個位元組表示燃料系統 #1。

其他的值無效。

第二個位元組表示燃料系統 #1，定義完全相同。

#### 服務 01 PID 12

這種 PID 的請求會回覆一個位元組的資料，表示第二側空氣狀態。

其他的值無效。

#### 服務 01 PID 1C

此種 PID 請求會回覆一個位元組的資料，說明電子控制器使用的 OBD 標準。以下是數值以及其對應的標準。

#### 燃料碼

服務 01 PID 51 會回傳數值，對應車輛的燃料型態。燃料型態一個位元組，數值和燃料對應如下：

其他的值保留供 ISO/SAE 使用，目前沒有針對彈性燃料車的定義。

## 非標準的 PID

大部份的在使用的 OBD-II PID 都是非標準的，針對大部份現今的車輛，OBD-II 界面中支持的非標準 PID 功能比標準 PID 功能還多，各家的非標準 PID 只有少部份的重疊。

在公眾領域中非標準 PID 的資訊相當有限。有一個以美國為主的設備工具研究所（ETI）有維護一些廠商的非標準 PID，只提供給其會員。ETI 的年費和公司在北美車輛工具及設備的營業額有關：

就算是 ETI，也沒有所有非標準 PID 的文件。ETI 表示

> 
> 有些車廠拒絕用 ETI 來提供資訊給相關工具廠商。他們比較想和每一家工具廠商個別作生意。這些公司會要求你和他們簽合約。其費用是變動的，以下是 2015 年 4 月 13 日的年費：
> 
> 

## CAN（11 位元）通訊格式

在車內的 CAN 網路中會有查詢 PID 以及 PID 回覆的訊息。標準 OBD 查詢以及回覆會用機能式的地址。診斷讀取器會用 CAN ID 7DFh 送出查詢訊息，此位址是廣播位置，並且會接受從 7E8h 到 7EFh 的回覆。回覆 OBD 查詢的電子控制器也會接收 7DFh 廣播位置的訊息，並且接收 7E0h 到 7E7h 範圍內指定 ID 的訊息。其回應的 ID 是指定 ID 值加 8，範圍從 7E8h 到 7EFh。

此作法可以允許最多 8 個電子控制器，每一個都可以回覆 OBD 的查詢。診斷讀取器可以用 ECU 回覆的 ID 繼續和特定的電子控制器通訊。特別是多頁框的通訊需要特定 ID 電子控制器的回覆。

CAN 也可以傳送標準 OBD 訊息以外的資訊，實體位址會用這些特殊模組的 CAN 訊息（例如 720h 是福特汽車的組合儀表），也會有專屬的頁框以及傳送資料。

### 查詢

機能性的 PID 查詢會用 ID 7DFh 的 CAN 訊息送出，其資料為：

### 回應

車輛會用訊息 ID 來回應 PID 查詢，其 ID 編輯和回應的模組有關。一般而言發動機及主發動機控制器會用 ID 7E8h 回應，其他設備，像是混合控制器或是 Prius 裡的電池控制器，會用 07E9h、07EAh、07EBh 等 ID 回應。設備回應的訊息 ID 會比其設備接收的訊息 ID 多 8。回應值的長度會變動，但回應訊息固定都是 8 個位元。
各位元組的定義為：

## 相關條目

* 發動機控制器
* ELM327：OBD-II 介面上常見的微控制器

## 參考資料

## 延伸閱讀

* E/E Diagnostic Test Modes. Vehicle E E System Diagnostic Standards Committee. J1979 (SAE International). 2017-02-16. doi:10.4271/J1979\_201702.
* Digital Annex of E/E Diagnostic Test Modes. Vehicle E E System Diagnostic Standards Committee. J1979-DA (SAE International). 2017-02-16. doi:10.4271/J1979DA\_201702.
* Wagner, Bernhard. The Lifecycle of a Diagnostic Trouble Code (DTC). KPIT. Germany. [2020-08-29]. （原始內容存檔於 2021-06-11）.