OBD-II PID

OBD-II PID是車上診斷系統（OBD）參數ID的簡稱，是在診斷工具上向車輛請求資料用的編碼。
國際汽車工程師學會（SAE）標準 J1979（電子診斷測試模式）中定義了許多OBD-II PID。所有北美的道路車輛及卡車都要支援一部份的OBD-II PID，主要是在有強制排氣的州。製造商也定義針對個別車輛的PID。目前沒有強制摩托車要支援OBD-II PID，不過也有許多的摩托車支援。
在1996年時，輕型商用車（重量小於disp=sqbr）首先強制要支援OBD-II PID，之後是中型商用車（重量在disp=sqbr之間）在2005年強制支援。輕型商用車及中型商用車都要可以透過由SAE J1962定義的標準數據鏈路連接器進行存取。
依加州空氣資源局（CARB）的加州法規（CCR） sections 1971.1 title 13，美國2010年之後生產的重型商用車（重量大於disp=sqbr）可以透過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，低位元組是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使用，目前沒有針對flexible-fuel vehicle的定義。

**非標準的PID**
大部份的在使用的OBD-II PID都是非標準的，針對大部份現今的車輛，OBD-II界面中支持的非標準PID功能比標準PID功能還多，各家的非標準PID只有少部份的重疊。
在公眾領域中非標準PID的資訊相當有限。有一個以美國為主的Equipment and Tool Institute（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介面上常見的微控制器

**參考資料**

**延伸閱讀**
doi=10.4271/J1979_201702
*doi=10.4271/J1979DA_201702
*archive-url=https://web.archive.org/web/20210611111349/https://www.kpit.com/insights/the-lifecycle-of-a-diagnostic-trouble-code-dtc/