はじめに
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) | Description | bytes | Formula |
---|---|---|---|
01 | Monitor status since DTCs cleared | 4 | |
03 | Fuel system status | 2 | |
04 | Calculated engine load | 1 | |
05 | Engine coolant temperature | 1 | A - 40 |
06 | Short term fuel trim (STFT)—Bank 1 | 1 | |
07 | Long term fuel trim (LTFT)—Bank 1 | 1 | |
0B | Intake manifold absolute pressure | 1 | |
0C | Engine speed | 2 | (256 * A + B) / 4 |
0D | Vehicle speed | 1 | A |
0E | Timing advance | 1 | |
0F | Intake air temperature | 1 | A - 40 |
10 | Mass air flow sensor (MAF) air flow rate | 2 | |
11 | Throttle position | 1 | (100 / 255) * A |
13 | Oxygen sensors present (in 2 banks) | 1 | |
15 | Oxygen Sensor 2 | 2 | |
1F | Run time since engine start | 2 | 256 * A + B |
21 | Distance traveled with malfunction indicator lamp (MIL) on | 2 | 256 * A + B |
2E | Commanded evaporative purge | 1 | |
30 | Warm-ups since codes cleared | 1 | |
31 | Distance traveled since codes cleared | 2 | 256 * A + B |
33 | Absolute Barometric Pressure | 1 | |
34 | Oxygen Sensor 1 | 4 | |
42 | Control module voltage | 2 | (256 * A + B) / 1000 |
43 | Absolute load value | 2 | |
45 | Relative throttle position | 1 | |
47 | Absolute throttle position B | 1 | |
49 | Accelerator pedal position D | 1 | |
4A | Accelerator pedal position E | 1 | |
4C | Commanded throttle actuator | 1 |
数式の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となる。(?)が表示されている場合は、矛盾した情報または不完全な情報が得られたことを示す。
おわり:)