当サイトは広告が表示されます。

WRX OBD2で車両情報を取得する その18 OBD2の分岐ケーブルについて

2019年9月18日Ad,OBD2,社外部品・DIY,車両・機能

以前、ELM327を使用して車両OBD2からデータを取得し、FA用PLCでアクセル開度や車速、エンジン回転数を同時に取得する事が出来ました。実際に車両で確認してみてもそれなりに正しい値になっていそうですが、車両でデジタル表示される車速以外は確認する方法がありません。そこでOBD2の分岐ケーブルを購入し、通常車両で使用しているTRUSTのインフォメータータッチと比較してみようと思います。・・・が。

スポンサーリンク

注記(2023年11月追記)

ここ最近、OBD2の接続ポートへのアクセサリー製品の接続で、車両への重大なダメージが発生するとの情報があります。まず当然ですが、車両やメーカーによってはOBD2接続ポートへのアクセサリー製品の接続を禁止している場合(取説等に記載)があるので、安易な利用はお勧めしません。利用する場合は自己判断・自己責任の上でとなります。またこの記事はOBD2の分岐ケーブルを使用した場合で、読み込み(アクセサリー製品)側での問題点を記載する形になっています。

個人的に…

最近のナビ用テレビキャンセラーにはOBD2からECU自体にコーディングを掛ける製品がある様で、さすがにそれは問題が起きる可能性は大きいと思います。またダミーの車速信号を流したり、ハンドルスイッチから操作可能と謳う製品も問題発生の可能性があると考えます。最近の車両はナビを含めてECUが関与する場合が多く、そのECUに対して不正なデータを送れば(逆にデータが無い場合も)、当然不具合が発生する可能性は高まります。後付けの自動ドアロック等を行う製品で、OBD2に刺すだけといった製品も同様です。

テレビキャンセラーとしては車速信号のカットや、パーキングブレーキのダミー信号を「ナビ側」に対して制御する物が一般的で、ディーラーによってはその様な製品を販売していたり、取り付けも行っていたりもします。ただし先の通りECUが関与している車両もあるので、徐々にディーラーでの販売や取り付けもNGになるかもしれません。

これまでのOBD2に関しては単にデータの受信であれば問題が発生する可能性は低いと考えています。レーダー探知機でOBD2から車両情報を取得して表示する製品についても基本的には同様と思われますが、製品によってはデータを送信しているかもしれません。またCANインベーダーによる車両盗難問題もあり、最近のOBD2では車両以外からのアクセスがあった場合に何らかの対策が行われているかもしれません。ただし一概にOBD2に関連する機器全てが危険であるとすると、車両メーカーが開発あるいは推奨する「最新」のスキャンツール(故障診断機)以外のスキャンツール(汎用品)も危険と認識出来てしまいます。

…と、あくまで個人的に思っています。

購入した分岐ケーブル

購入した分岐ケーブルは2分岐タイプのケーブルです。購入時に注意したのは、OBD2の16ピンが全て結線されているかどうかです。製品によっては全て配線されていない物もあります。ただし用途(接続する機器)によっては必要の無い場合もある(CAN通信も16ピン全ての必要は無い)ので、一概に良し悪しを決める事は出来ません。

とりあえず今回は16ピン全てが配線されている物を購入しましたが、そもそもOBD2の分岐で2つの機器からの通信が同時に可能かも分からないので、比較的安いと思われる物にしました(楽天で商品番号「R1701-017」、2019年9月現在750円)。

分岐ケーブルは購入後、3日で届きました(メール便)。テスターを当てて結線を確認しましたが、しっかりと16ピン全てが分岐されていました。

車両に接続

早速車両に分岐ケーブルとELM327、PLCを持ち込んでインフォメータータッチと同時に接続してみました。答えを先に書いてしまえば、ELM327側で正しい通信が出来ませんでした。分岐ケーブルの購入時の段階で商品紹介ページにも

※OBD2の規格上双方向通信をするタイプの機器を2つ同時に使用することはできません。

と書いてあったので、ダメそうだなとは思っていましたが。という事で、その時の様子を以下に書いてみます。

TRUST「インテリジェントインフォメータータッチ」との併用

まず分岐ケーブルに対してインフォメータータッチのみ、あるいはELM327のみであれば当然問題無く動作します。

次にインフォメータータッチとELM327を接続してエンジンは始動せずにイグニッション電源を入れました。するとインフォメータータッチの立ち上がりから、表示が通常よりも少し遅くなっている事に気が付きました。この段階ではまだPLCからELM327に対してデータの要求等は行っていません。ただしその後はインフォメータータッチの表示は通常通りで、正しい値になっている様子でした。

PLCからELM327に対してデータを要求してPLCでもデータを表示させると、最初は正しい値が取得出来ましたが、しばらくすると全く異なる値が表示されたり値が変化しなくなったりもします。この時、PLCからELM327には1秒間隔でデータを要求していましたが、データ要求を0.2秒間隔と早くすると幾分PLCでの表示状態は改善する様子でした。ただし異なる値(アクセル開度が100%以上、エンジンを掛けていないのに回転数が16000rpm以上など)や値が変化しない現象は変わらずありました。

上記はその時にELM327から送信されている内容(アスキーコード)です。値が「0」であればアスキーコードは「30」なのですが、全く異なる値や「NUL」となってしまう「00」が来ています。根本的にデータが混在してしまっている様子です。

またELM327のLEDを見てみると、時々まったく点滅(通信)しない状態になる事も確認出来ました(上記・画像はgifアニメ)。繰り返しの再生になっていますが、実際の様子もこの様な感じです。

考察

車両での確認はとりあえずここまで。何かあっては怖いので当然走行はしていません。また以下はあくまで私の「間違っているかもしれない知識」と「想像」を含みます。

CAN通信

FA分野ではCCリンクやDeviceNetといったネットワークが数多くありますが、CAN通信も同様のネットワーク通信です。私はCCリンクやDeviceNetの利用経験があり、そのイメージが強いので今回のCAN通信には戸惑う点があります。

CCリンクやDeviceNetではマスタ局がスレーブ局を管理した上で、ネットワーク(バス)上を流れるデータに各局(ノード)がデータを書き込み、また必要なデータのみを読み込むと認識していますが、CAN通信はマルチマスター方式で、各局(各ECU、ノード)のIDによって優先順位が決まっていて、ID値の小さい局の通信が優先されてネットワーク上を流れます。また各局それぞれでデータが必要な場合は「リモートフレーム」を送信し、該当するデータを持った局が答えを付けて「データフレーム」を返信します。

ただし単発の場合はリモートフレーム、データフレームの送受信でも良いのですが、周期的にデータが必要な場合は逆にネットワークの占有率が上がってしまうので、リモートフレームの送信は行わずに各局が定期的にデータフレームのみをネットワーク上に送信しています。ということで、結局はCAN通信もCCリンクやDeviceNetと同様に、各局は自分のデータをネットワーク上に送信し、ネットワーク上のデータを全て受信しながら必要なデータのみを利用する形です(ただし各局のデータは同時には流れない)。

ELM327

と、CAN通信については理解したつもりですが、実際にCAN通信を行っているのは「ELM327」です。PLC(RS-232C)からはATコマンドで欲しいデータをELM327に要求していますが、この要求に対してELM327がどの様にCAN通信を行っているのかが現時点では分かりません。

ELM327のデータシート(リンク先はElm Electronics社でpdf)にはPLCからATコマンドでデータを要求した場合、ヘッダー(ID)等が添付されて車両に送信されるとあります(リモートフレーム)。その後はデータフレームを監視し、答えが得られた段階でPLCへ返信する形になります。ただしこれまでのELM327の利用でヘッダーに関するATコマンドを利用したり、その存在を意識した事がありません。ELM327のヘッダーのデフォルト値ってあるのでしょうか?それとも単に全てのデータを受信しているだけ??

問題点

インフォメータータッチと同時に接続して発生した問題点は、

  1. ELM327で受信したデータが明らかに異なる
  2. インフォメータータッチの表示が遅れる

の2点です。その他にも内部的には色々あるかもしれませんが。

ただしそもそも分岐ケーブルによる同時接続なので、ネットワーク(バスライン)上への接続方法(ライン型)としては間違っています。分岐ケーブルによる先の

※OBD2の規格上双方向通信をするタイプの機器を2つ同時に使用することはできません。

はこれに由来します。

インフォメータータッチではデータ自体は異なる値にはならなかったので、わざわざECUに対してデータ要求の為にリモートフレームの送信は行っておらず、ネットワーク上のデータを全て受信しながら必要なデータのみを利用していると思われます。通信プロコトルや速度はELM327でも自動で認識出来ますが、分岐ケーブルによって互いのデータ受信に影響が出てしまっている様です。

ELM327でもヘッダ(ID)の設定やネットワーク上の全てのデータを受信する事が可能です。必要なデータを得る方法としてPLCからELM327に対して個別にATコマンドで行うのではなく、ELM327で受信した全てのデータをPLC側で見つける方法に変えれば、インフォメータータッチとELM327ともにネットワーク上から受信するだけなので、もしかしたら分岐ケーブルでも同時に表示が可能かもしれません。ただしやはり接続方法としては間違っています。

これを試すにはELM327のデータシートをもっと理解する必要があり、PLC側での処理作業も面倒な物になりそうです。ELM327用のアプリで全データを受信する方式であれば試せるでしょうか?しかしそもそもインフォメータータッチとELM327との同時使用を行わなければ問題はないので、比較は諦めようかと思います。仮に上手くいったとしても実走行ではやはり使いたくはありません。でも全データを受信すれば、ATコマンドによる要求上限の6個以上の内容も取得出来る事になるのか?

分岐ケーブルの利用について

OBD2ポートの分岐ケーブルの利用については、あくまで通信を行う機器は1台のみ、もう一方は電源を取るだけの形が基本です。

上記はOBD2ポートに接続して使用する追加メーターや、スロコンなどを発売しているPivot社のOBD2への製品併用についてのページです。PivotからはOBD2配線キットという製品も発売されていますが、配線図を見ると分岐された一方のコネクターにはピン番号で4、9、16の3本しか配線されていません。4はアース(シャシーアース)、16はバッテリー電圧(常時電源)ですが、9は「Manufacturer Discretion(メーカー裁量)」として車両によってはエンジン回転数出力(信号)が来ています。従ってPivotでは追加メーターの内のエンジン回転数信号を利用する機器(タコメーター)も、通信を行う機器との併用が可能になっています。

これを見れば、やはり通信を行う機器の併用は出来ない(すべきでない)と分かります。

OBD2ポートの電源や「Manufacturer Discretion(メーカー裁量)」については下記記事を見て下さい。

その他

室内やエンジンルーム内のヒューズボックス、のれんわけハーネスからの電源取り出しについてはそれぞれ以下の記事を見て下さい。

参考にしたサイト

車載Networkの話(2)「CAN」:Impress CarWatch

CANとは?:株式会社キーエンス

車載ネットワーク“CANの仕組み”教えます:ITmedia MONOist

「OBD2」関連記事

以下は「OBD2」タグの記事一覧です(投稿順)。現在の記事とこれ以降に投稿した記事も含みます。

その他

ブロック形式でプログラミングが行える、教育用「micro:bit」も始めてみました。micro:bitでもELM327と接続して車両OBD2ポートからの情報取得を試しています。

micro:bit全体の記事は以下から始まります。

注記

  • OBD2の仕様は各メーカーや車両で異なる部分があります。メーカーや車両によってはアフターマーケット製品による利用を推奨していない場合や、利用した場合による不具合発生の可能性を示している事があります。
  • このブログ内で書いている内容はあくまで私の車両、私の利用する製品や機器での場合です。他メーカーや他の車両をはじめ、同じメーカーの車両または製品、機器であっても記事内容の保証、責任を負う事は出来ません。
  • 記事内で紹介している製品や、その他の類似製品を購入・利用する場合はそのメーカーや購入先で、利用する車両などへの適合を確認し、自己判断と自己責任の下で利用して下さい。
  • OBD2やELM327、その他記事内容について個別の問合せや依頼を頂いても回答する事は出来ませんので、予め御了承下さい。
  • ELM327はElm Electronics Inc.の登録商標です。その他のブランド名または製品名は各所有者の商標です。