車のCAN通信をロギングする方法

こんにちは。

今日はOBDカプラから読み取れるCAN通信データをAIMのロガー等でロギングする方法をご紹介します。

CAN通信とは?

まず最初にCANの説明を簡単にします。

詳しくは検索していただきたいのですが、簡単に言えば車両内部にある沢山のコンピューターが相互に通信してデータを送りあうシステムのことみたいです。

しかし通常そのデータをOBDカプラから取得することは出来ません。

CAN通信にはそれぞれIDが振り分けられていてそれを知らなければロギング出来ないのです。

ドラレコ等で取得できるデータとの違い

最近のドラレコにはOBDに繋ぐことで車速や水温などを取得できるモデルがあります。

このデータと車両内部を駆け巡っているCAN通信データは同じようなものですが、厳密にいえば違います。

ドラレコが取得しているデータというのはOBD-2 PIDsと呼ばれるルールに従いドラレコ側から水温のデータください、車速のデータくださいとリクエストをECUに送り、それに対してECUが返答したデータを取得しドラレコに表示しています。

なのでドラレコとECUは常にリクエストを送ったりデータを送り返したりしているわけです。

対して車内ネットワーク、CANは沢山あるECUが相互に通信し車両を制御するためにデータを送り続けています。

例えばメーターに表示される速度はエンジンECUが取得した車速データをCANに乗せ、メーターユニットがその情報を取得しメーターに表示しているという具合です。

このようにCANに流れているデータはECUが使うデータのため、特にリクエストなどを送らなくても常にデータが流れている所がドラレコで取得できるデータとの違いです。(水温などのCANに流れているデータとPIDsに基づいたリクエストによって取得したデータはタイムラグを除けば同じ数値になります)

そしてここからが一番の違いですが、上記のPIDsを見ていただくとわかりますが例えば輪速データやステアリングアングルなどは取得できません。

しかし実はCAN上にはそれらのデータが流れている事があります。

という事は輪速データ等のCAN IDを知る事が出来ればドラレコでは取得できなかったデータを見ることが出来るという事です。

これが一番の違いですね。

CAN IDの調べ方

今の時代は便利でネットで調べると実はCAN IDを有志が調べ公開しているサイトがいくつかあります。(特に海外)

しかしCAN IDとはメーカー毎に共通のものもあれば車種固有のものもあって、それらのサイトで判明するCAN IDだけでは満足できませんでした。

調べるとラズベリーパイと呼ばれるマイコンを使ってプログラムを組みCAN IDを調べている方もいましたが僕にはそんな知識はなくどうしようかと思っていたところ見つけてしまいました。

その名もCAN HACKER。

そのまんまですね。

しかも製造元はロシア。

怪しいです。

怪しいですが勇気を振り絞って一つ注文しました。(ちなみに日本からの注文は初めてと言われました。怪しいので購入は自己責任でお願いします。)

しばらくすると無事OBDカプラにUSBがくっついたモノが届きました。

専用のアプリをダウンロードしていざ接続、、、

おぉ!

沢山のCAN IDと共に流れる謎のデータ!(IDにはモザイクかけさせてください。ごめんなさい。)

あとはこのデータが表示されているパソコンと睨めっこしながらアクセル踏んだりブレーキ踏んだりステアリングを切ったりすると、どのCAN IDがどのデータを表示しているかわかります。

ちなみに僕もすべてのデータが何を意味しているのか解析は出来ません。

とりあえず車速、輪速、舵角、ブレーキ、アクセル、ブースト圧、吸気温度、水温、外気温等のサーキットを走るために有用なデータだけ見つけています。

データをロギングする

さて、これで各種データのIDがわかりました。

次に行うのはそのデータをロギングする方法です。

今回使うのはAIMのロガー、EVO5です。

データロガーのはなし

SOLO DLやDL2などOBDカプラに繋ぐことが出来るタイプなら何でも構いません。

まずはRaceStudio3を開きます。

左上のどこかにCAN Protocolsという所があるのでクリック。

するとこんな画面になるのでNewをクリック。

Select a Manufacturerという画面が出てくるので適当に選んで名前も付けます。

CAN Bus Speedという項目があるので各メーカー毎にあったボーレートを選びます。

ちなみにホンダは500です。

OKを選ぶとほぼ真っ白な画面が出てくるので左上のAdd New Can Streamをクリック。

するとStream Byte Orderというものを選択する画面が出てきます。

これは簡単に言えば数値を左から読むか右から読むかというモノなのでわからなければCAN HackerでCANデータを見るときにどちらか選んで数値と睨めっこしていればなんとなくわかります。

ちなみにホンダはBig Endian、モトローラになります。

そしてここでCAN IDを入力しなければいけません。

ここではネット上にも出回っているホンダ車共通?のCAN ID、17CからRPMをロギングしたいと思います。

CAN IDの所へ17Cと打ち込みOKをクリック。

わけのわからないページが出てきますが我慢してRPMのデータを入力していきます。

各種名前を適当につけてByte2と3を選びます。

周波数は17cの場合100㎐でデータを送っているので100㎐でもいいですし、10㎐でも大丈夫です。

Signed DataはRPMの場合Unsignedですがステアリングアングルなど数値がマイナスに行くものはSignedを選びます。

そしてOKを押すとRPMを取得できるプロトコルを作ることが出来たので左上のセーブをクリックします。

次に左上の歯車マークをクリックします。

そこでNEWをクリックするとAIMのデバイスを選ぶ画面が出てきます。

EVO5など選んでいくとECU Streamを選べる画面に行きます。

その中から先ほど選択したManufacturerを選ぶと、、、

ありました!

先ほど作ったS660_があるので選択してOKを押します。

セーブしてロガーと接続後トランスミットを選ぶと晴れてロガーがRPMのデータを記録することが出来るようになります。

以上のやり方でCAN通信データをロギングすることが出来ますし、ドラレコと同じようにリクエストをロガーから送ってデータを取得することもできます。

作成したプロトコルを使用しRPMだけを記録しながらサーキットを走ったデータ

なんのデータかわからない時はリクエストしたデータと比べてみるとわかる事もあるのでやってみてください。

またデータによってはその数値そのままでは正しい情報が得られない場合があります。

例えば温度計は大体マイナス40してやると正しい数値になります。

インマニの圧もS660はmmHgで数値が出てくるので変換します。

残念なお知らせ

ここまでいろいろと書いてきましたが、、、

実はここ最近の車はOBDカプラからCANデータを取得することが出来ないことが多いです。

特に自動運転系の装備がある車はほぼ無理です。

今あるスポーツカーは大体取れますが、これからの車は取れない事もあるでしょう。

AIMのホームページによると新型スープラはOBDからはCANデータを取得できないものの、内部のCAN配線に直接つなぐことでデータを取得できるようです。

しかし新型86/BRZなどはどうなっているのでしょうかね。

気になるところですが、今お持ちの車からもしCANデータを取得できるようであればロギングしてサーキットを走ってみるとまた新たな発見があって面白いと思います!

ただし!

これまで書いた内容を実行する場合はすべて自己責任でお願いします。

間違ったデータを送信すると当然エラーが出ることがあります。

それによって車両に不具合が出る場合も考えられます。

良く検証し安全を確保したうえで試してください。

よろしくお願いいたします。

3 件のコメント

  • 初めまして、自分もこの記事を参考に、CAN HACKERなるものを購入して、S660でSOLO2DLを使いたいと思い、調べてみると、どうも、CAN-Hacker 3.2と、CH-OBD.M02+Analyzerの二つが使えそうなのですが、使用されたのはどちらでしょうか?ブログ本文からは、CH-OBDの様な気がしますが?

  • 情報ありがとうございます
    本記事を参考に、ラズベリーパイでcan busモニタリング→can idとパラメータ解析→race chrono アプリでのcan busデータ取り込みとモニタまで漕ぎ着けました。
    本業のレース活動、応援してます!
    今年もご安全に。

  • takashi5884 へ返信する コメントをキャンセル

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です