アウトランダーPHEVと対話する
何と!ELM327のWi-Fiバージョンにはtelnetで接続できるらしい。さっそく接続してみる。
telnet接続
$ telnet 192.168.0.10 35000
Trying 192.168.0.10...
Connected to 192.168.0.10.
Escape character is '^]'.
- Connected to 192.168.0.10. と表示されているので、接続できたみたい。
- Escape character is '^]'. なので、control-]で接続状態を終了するようだ。
改行モードの選択
- 接続しているはずなのに、コマンドプロンプトの>が表示されない...。
- atzコマンドを実行(ELM327を初期化する)してみると、結果出力がすべて同じ行に出力されている模様。
- 調べてみると、ELM327のデフォルトは改行コードにCR(キャリッジリターン=0x0D)が出力されるようだ。
- OSXやUNIXではLF(ラインフィード=0x0A)を改行コードと認識するので、どおりで改行されない訳だ...。
- こうゆう時はLF(ラインフィード=0x0A)をオンにするatl1(AT L1)コマンドを実行しておくのだ。
- ATコマンドは大文字・小文字どちらで入力してもOK。
- ATに続けてスペースを入力しても、省略してもOK。
atl1
OKl1
>
- 出力が改行されるようになり、コマンドプロンプトの>も表示されるようになった!
はじめての対話
- ELM327のバージョンを確認してみた。
>ati ati ELM327 v1.5
- 現在の通信プロトコルを確認してみた。
>atdp
atdp
ISO 15765-4 (CAN 11/500)
対話の終了
- control-]でELM327接続がキャンセルされ、telnet対話モードになる。
- telnet対話モードでquitすれば、終了してbashの対話モードに戻る。
- 参考:ネットワーク・コマンド道場 - telnetコマンド:ITpro(感謝です!)
>^] telnet> quit Connection closed. $
以上は、ELM327とATコマンドで対話しただけ。まだ車と対話していない。
- ATコマンドはELM327の設定をしたり、その状態を確認するコマンドである。
車とお話し
- 車とお話しするにはOBD2のモードとパラメーター(OBD-II PIDs)を使うのだ。
- 例えば、以下のように0105を実行してみる。
- 01=モード(現在のデータを取得する)
- 05=パラメーター(エンジン冷却水温を指定)
$ telnet 192.168.0.10 35000 Trying 192.168.0.10... Connected to 192.168.0.10. Escape character is '^]'. atl1 OKl1 >0105 0105 41 05 39
- 0105に対して、41 05 39が出力されている。
- 41=返答であることを明示するため、モード01に0x40が加算された値が返される。
- 05=指定したパラメーターがそのまま返される。
- 39=16進数なので、10進数に変換すると57(=16×3+9)となる。
- ここで、エンジン冷却水温は(摂氏)57度なのか!と早合点してはいけない。
- エンジン冷却水温については取得データから40を減算することになっている。
- OBD-II PIDs - Wikipedia
- おそらく16進数にはマイナス表現がないので、0x00を(摂氏)-40度と見なしているのだ。
よって、57-40=(摂氏)17度がエンジン冷却水温となる。
- この日の外気温は17度。PHEVは昨夜からエンジン停止中なので、冷却水温も外気温とほぼ同じ17度になっている。
- 以上の要領で、01に続けて好みのパラメーターを指定すれば、いろいろなデータが取得できるのだ!ワクワクする。
パラメーターのサポート状況
- 但し、車種によって、OBD2で規定されるパラメーターのサポート状況は異なる。
- その車のOBD2パラメーターのサポート状況は、0100、0120、0140、0160...を実行してみると確認できる。
>0100
0100
41 00 BE 3F A8 13
- 例によって、01 00は41 00として返ってくる。
- 続くBE 3F A8 13がパラメーターのサポート状況である。
- BE 3F A8 13を二進数に変換すると...
B E 3 F A 8 1 3 サポートビット 1011 1110 0011 1111 1010 1000 0001 0011
- パラメーターIDと対応させてみると...
- ビットが1であれば、そのパラメーターはサポートされている。
サポートビット 1 = サポート |
パラメーターID |
内容 |
---|---|---|
1 | 01 | Monitor status since DTCs cleared. |
0 | 02 | Freeze DTC |
1 | 03 | Fuel system status |
1 | 04 | Calculated engine load |
1 | 05 | Engine coolant temperature(エンジン冷却水温) |
1 | 06 | Short term fuel trim―Bank 1 |
1 | 07 | Long term fuel trim―Bank 1 |
0 | 08 | Short term fuel trim―Bank 2 |
0 | 09 | Long term fuel trim―Bank 2 |
0 | 0A | Fuel pressure |
1 | 0B | Intake manifold absolute pressure |
1 | 0C | Engine RPM(エンジン回転数) |
1 | 0D | Vehicle speed(車速) |
1 | 0E | Timing advance |
1 | 0F | Intake air temperature |
1 | 10 | MAF air flow rate |
1 | 11 | Throttle position |
0 | 12 | Commanded secondary air status |
1 | 13 | Oxygen sensors present (in 2 banks) |
0 | 14 | Oxygen Sensor 1 |
1 | 15 | Oxygen Sensor 2 |
0 | 16 | Oxygen Sensor 2 |
0 | 17 | Oxygen Sensor 2 |
0 | 18 | Oxygen Sensor 2 |
0 | 19 | Oxygen Sensor 2 |
0 | 1A | Oxygen Sensor 2 |
0 | 1B | Oxygen Sensor 2 |
1 | 1C | OBD standards this vehicle conforms to |
0 | 1D | Oxygen sensors present (in 4 banks) |
0 | 1E | Auxiliary input status |
1 | 1F | Run time since engine start(エンジン稼働時間) |
1 | 20 | PIDs supported [21 - 40](PIDサポート状況) |
- 同じ要領で、アウトランダーPHEVがサポートするモード01のパラメーターを調べてみる。
>0120 0120 41 20 90 17 A0 01 >0140 0140 41 40 FE 10 80 40 >0160 0160 NO DATA >0180 0180 NO DATA
- アウトランダーPHEVがサポートするモード01のパラメーターは、以下のようになった。
いろいろなお話し
- サポートされているパラメーターをいろいろ試してみた。
# Ambient air temperature(周囲の気温) >0146 0146 41 46 3D # 0x3D = 61; 61 - 40 = 21℃ # Control module voltage(コントロールモジュールの電圧) >0142 0142 41 42 38 A5 # 0x38A5 = 14501; 14501 / 1000 = 14.501V # Absolute Barometric Pressure(気圧) >0133 0133 41 33 65 # 0x65 = 101kPa = 1010hPa # Distance traveled since codes cleared(区間距離) >0131 0131 41 31 2B 3B # 0x2B3B = 11067km # Fuel Tank Level Input(燃料タンクの残量レベル) >012f 012f 41 2F FC # 0xFC = 172; 172 / 255 × 100 = 67% # OBD standards this vehicle conforms to(この車が対応しているOBDの種類) >011c 011c 41 1C 0A # 0x0A = 10 = JOBD (Japan) # Engine RPM(エンジン回転数) >010c 010c 41 0C 00 00 # 0x0000 / 4 = 0.00rpm # Vehicle speed(車速) >010d 010d 41 0D 00 # 0x00 = 0km/h # Fuel system status(燃料系統の警告) >0103 0103 41 03 00 00 # 0x0000 = 警告なし
ELM327の使い方
マニュアルは揃っているのだけど例によって英語。
読むだけでは、なかなかすべてを理解できない...。
- Elm Electronics - OBD ICs
- ELM327 v2.1 data sheet(本家の英語マニュアル)
数少ない日本語の情報に感謝です!
- 創活こんぺさん支部 - 【OBDで車とお話】ELM327データシート(英語マニュアルの一部翻訳あり、P39 OBD Message Formatsまで)
- PICでOBDii情報を見てみよう 燃費とか馬力はアイデアしだい(実践的な使い方)