アウトランダーPHEVと対話する

何と!ELM327のWi-Fiバージョンにはtelnetで接続できるらしい。さっそく接続してみる。

Wi-Fi接続

telnet接続

  • ターミナル.appを起動して、以下のtelnetコマンドを実行してみた。
    • 192.168.0.10 = ELM327のIPアドレス
    • 35000 = ELM327の接続ポート
$ 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)が出力されるようだ。
  • OSXUNIXでは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)

対話の終了

>^]
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の使い方

マニュアルは揃っているのだけど例によって英語。
読むだけでは、なかなかすべてを理解できない...。


数少ない日本語の情報に感謝です!