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/