ecuExplorerを使用してトラブルコードを取得すると複数誤検出されるのって私だけでしょうか?
まぁ、友達のマルチメータやディーラーの専用機器を使用してもトラブルコードは検出されないので、ホントに車両自体には問題ないんでしょうけど。
<画面1>トラブルコード
マルチメータやパーソナル診断機などを持たない私にとっては、トラブルコードがパソコンで取得できるのは、この上ない極上ツール。
なので、誤検出されてしまうのはちょっと困り物なのである。
という事でいろんな観点で調べてみたトコロ、100%断言できる訳ではないがecuExplorerの処理上の問題と言うのが分かった。
まず、最近復活したばかりのtariのサイトを見ていると、「storage? whats dat?」から以下の事が分かった。
- ecuExplorerでは、トラブルコードに関する情報は「obd.dtc.dat」と「subaru.dtc.dat」の2つのファイルに収められている
- obd.dtc.datにはOBDで定義されたトラブルコード
- subaru.dtc.datには、スバルが定義したトラブルコード
- まだ僅かなバグがあるらしい
そこで、「obd.dtc.dat」と「subaru.dtc.dat」の内容が正しく記録されているのか確認してみた。
tariのサイトで公開されているファイルフォーマットに従ってテキストに展開するperlスクリプトを作成。
その展開したデータはこちら 。
このデータを見た感じでは、バイト単位でのズレもなく正しく格納されている様子。
と、ここで気付いた点が。
私のGGA(G)で誤検出しているように見えていたトラブルコードは、一見するとバラバラな順で列挙しているように見えていたが、実際には「Current Trouble Code」で0x0160以降が、「Historic Trouble Code」は0x0165以降を全て列挙している事が分かった。
これはecuExplorerのソースで言う所の、ちょうど
ADDRESS_DTC_CURRENT_04_05_START_3 ~ ADDRESS_DTC_CURRENT_04_05_END_3
ADDRESS_DTC_HISTORIC_04_05_START_3 ~ ADDRESS_DTC_HISTORIC_04_05_END_3
の範囲。
そこでecuExplorerのデバッグログを確認してみると、上記アドレスに対する応答は全て0xFFで返って来ている事も分かった。
そしてこれは後で気づいた事だが、ecuFlashやEnginuityで自分のGGA(G)のROMデータを開くと表示される「Diagnostic Trouble Codes」の欄には、上記アドレスに対するトラブルコードは一覧にはなかった。
つまりGGA(G)は、上記範囲のトラブルコードには対応していないのに取得しようとしていた事が原因のようだ。
という事で、修正するにはecuExplorerのソースに手を加えた方が賢い方法なんだろうけど、まだそこまでソースを理解できていないので、obd.dtc.dat内の該当する部分のデータを削除する事で対応した。
オリジナルのobd.dtc.datをリネームしておけば、必要に応じて使い分けられるし。
そして実車確認。
<画面2>実車確認
さりげなくecuExplorerが日本語化されているが、気にしない気にしない(^_^;)ゞ
(ご要望があれば紹介します)
当然だが、これで誤検出はなくなった。
なんだか随分遠回りした気もするが、なんの根拠もなく「大丈夫だろう」と思っているよりは納得行く結果になって良かった。
それにecuExplorerのソースの内容も、ちょっぴりだけど理解できたし。
ところで、ecuExplorerのソースを見ていて思ったのだが…。
MY06以降のモデルの場合、仮にトラブルコードを抱えてたとしても、MY04~05で追加された分のトラブルコードは正しく検出されない気がするのだが…、大丈夫?
(ちゃっかり自分のecuExplorerには修正しておきましたが(^_^;)ゞ)
最近のコメント