Hatena::ブログ(Diary)

ザリガニが見ていた...。 このページをアンテナに追加 RSSフィード

2016-04-29

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

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

Wi-Fi接続

  • まずはELM327をOBD2ポートに接続して、アウトランダーPHEVのスイッチをオンにする。
  • MacBookのWi-Fiから「WiFi_OBDII」に接続する。

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)が出力されるようだ。
  • 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)

対話の終了

>^]
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
 
内容
 
101Monitor status since DTCs cleared.
002Freeze DTC
103Fuel system status
104Calculated engine load
105Engine coolant temperature(エンジン冷却水温)
106Short term fuel trim―Bank 1
107Long term fuel trim―Bank 1
008Short term fuel trim―Bank 2
009Long term fuel trim―Bank 2
00AFuel pressure
10BIntake manifold absolute pressure
10CEngine RPM(エンジン回転数)
10DVehicle speed(車速)
10ETiming advance
10FIntake air temperature
110MAF air flow rate
111Throttle position
012Commanded secondary air status
113Oxygen sensors present (in 2 banks)
014Oxygen Sensor 1
115Oxygen Sensor 2
016Oxygen Sensor 2
017Oxygen Sensor 2
018Oxygen Sensor 2
019Oxygen Sensor 2
01AOxygen Sensor 2
01BOxygen Sensor 2
11COBD standards this vehicle conforms to
01DOxygen sensors present (in 4 banks)
01EAuxiliary input status
11FRun time since engine start(エンジン稼働時間)
120PIDs 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のパラメーターは、以下のようになった。

f:id:zariganitosh:20160428155809p:image:w750

いろいろなお話し

  • サポートされているパラメーターをいろいろ試してみた。
# 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の使い方

マニュアルは揃っているのだけど例によって英語。

読むだけでは、なかなかすべてを理解できない...。


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

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/zariganitosh/20160429/talking_to_phev_in_terminal