はじめに

OBDから取れるデータは何か、対応しているPIDを調べてみました。
Wikiに載ってるStandard PIDsは全て対応しているわけでは無いため、ソリオが対応しているPIDを調べてみます。

使ったもの

  • ELM327 v1.5

調べ方

Service 01 PID 00 - Show PIDs supported

上記wikiにあるように、ELM327からコマンド01 00(service 01 PID 00)を送信するとPID 01からPID 20までで、対応しているPIDのビットには1、未対応のPIDのビットには0がセットされます。
wikiの例だと、01 00の応答が0x BE 1F A8 13だった場合、これを2進数に変換すると 0b 1011 1110 0001 1111 1010 1000 0001 0011 となるため 対応してるPIDは1が立っているPID 01, 03, 04, 05, 06, 07, 0C, 0D, 0E, 0F, 10, 11, 13, 15, 1C, 1F ,20となります。
左端から見ていくため、例えば左端の0xB=0b1011では、PID 01は対応、02は未対応、03,04は対応ということになります。
PID 20が対応しているということは次の PIDs supported [$21 - $40] ということになるため、PID 21 から PID 40 が存在するということになります。
コマンド01 00と同様に考えて、01 20を送信するとPID 21 から PID 40 までの対応状況が分かります。

対応状況

では、ソリオがどうかと言いますと、以下の結果となりました。

0100
> 7E8 06 41 00 BE 3F A8 03

0120
> 7E8 06 41 20 80 05 B0 01

0140
> 7E8 06 41 40 6A D0 00 00

0160
> NO DATA

0180
> NO DATA

01A0
> NO DATA

データは下4byteなので2進数に変換し、対応しているPIDを記載します。

  • コマンド 0100

  • 応答(hex) BE 3F A8 03

  • 応答(bin) 1011 1110 0011 1111 1010 1000 0000 0011

  • → PID 01, 03, 04, 05, 06, 07, 0B, 0C, 0D, 0E, 0F, 10, 11, 13, 15, 1F, 20

  • 0120

  • 80 05 B0 01

  • 1000 0000 0000 0101 1011 0000 0000 0001

  • → PID 21, 2E, 30, 31, 33, 34, 40

  • 0140

  • 6A D0 00 00

  • 0110 1010 1101 0000 0000 0000 0000 0000

  • → PID 42, 43, 45, 47, 49, 4A, 4C

0140の応答の右端bitが0なので、それ以降は対応しているPIDはありません。

実際0160の回答はNO DATAになっています。

まとめ

まとめると、以下になります。

PID(hex)DescriptionbytesFormula
01Monitor status since DTCs cleared4
03Fuel system status2
04Calculated engine load1
05Engine coolant temperature1A - 40
06Short term fuel trim (STFT)—Bank 11
07Long term fuel trim (LTFT)—Bank 11
0BIntake manifold absolute pressure1
0CEngine speed2(256 * A + B) / 4
0DVehicle speed1A
0ETiming advance1
0FIntake air temperature1A - 40
10Mass air flow sensor (MAF) air flow rate2
11Throttle position1(100 / 255) * A
13Oxygen sensors present (in 2 banks)1
15Oxygen Sensor 22
1FRun time since engine start2256 * A + B
21Distance traveled with malfunction indicator lamp (MIL) on2256 * A + B
2ECommanded evaporative purge1
30Warm-ups since codes cleared1
31Distance traveled since codes cleared2256 * A + B
33Absolute Barometric Pressure1
34Oxygen Sensor 14
42Control module voltage2(256 * A + B) / 1000
43Absolute load value2
45Relative throttle position1
47Absolute throttle position B1
49Accelerator pedal position D1
4AAccelerator pedal position E1
4CCommanded throttle actuator1

数式のA,B,Cについて

In the formula column, letters A, B, C, etc. represent the first, second, third, etc. byte of the data. For example, for two data bytes 0F 19, A = 0F and B = 19. Where a (?) appears, contradictory or incomplete information was available

計算式の欄では、A、B、Cなどの文字はデータの1バイト目、2バイト目、3バイト目などを表す。例えば、2つのデータバイト0F 19の場合、A=0F、B=19となる。(?)が表示されている場合は、矛盾した情報または不完全な情報が得られたことを示す。

おわり:)