• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

haniliitoのブログ一覧

2018年06月06日 イイね!

CANバス解析のハマりどころ

CANバス解析のハマりどころ

整備手帳にも多少書いているように、CANバスの解析を行っています。CANバス解析の情報は少ないので、私がハマったところをまとめておきます。TCP/IPのパケットキャプチャぐらいは当たり前にやったことがある、という人が想定読者です。

◆解析に用いる環境

まず環境ですが、大いに参考にしているCar Hacker's Handbookの解説がLinux上のツールを中心にしていることと、自分自身、20世紀からUNIXおよびLinuxを使っていて(カーネルがバージョン1になる前です)慣れていることから、Ubuntu系の環境を使っています。

CANバスアダプタは、パーツ紹介に書いたusb2canを使っています。安価なのにSocketCAN対応していて便利です。

https://minkara.carview.co.jp/userid/2898510/car/2508605/8995638/parts.aspx

車両からのCANバス取り出しケーブルは、下記パーツを購入して、反対側にDSUB 9ピンコネクタを接続しただけです。

http://www.to-fit.co.jp/obd2.html

Kayak, can-utils(canplayer, cansniffer等)は自分でビルドしています。cantoolsは、pip3でインストールしただけです。kcdファイルの編集には、適当なテキストエディタを使っています。

◆ハマった点

自分がハマったのは、以下の点です。

1. VirtualBoxのUSBの不安定さ

当初、WindowsをホストOSとしたVirtualBox内の仮想マシンに、Ubuntuをインストールして、そこにusb2canをVirtualBox経由で接続していました。この構成で、実車に流れるCANパケットのログをところまで特に問題なく動作していたのですが、そのログをICテストベンチに対して流そうとしたところ、途中で止まったり、ドライバが謎のエラーを吐いたりして困りました。

ドライバのソースなども追いかけたのですが原因が分からず、あまり使っていないパソコンに直接Ubuntuをインストールして、ハード的に直接usb2canを接続するようにしたら、特に問題が発生しなくなったので、VirtualBoxのUSB機能が高負荷時には不安定になるようです。

2. SocketCANのデフォルトの送信バッファの小ささ

実車のCANログをcanplayerでテストベンチに流していると、結構な頻度で、sendto: No buffer space available というエラーが出ます。送信バッファのサイズが小さすぎるようです。下記のコマンドで、送信バッファを大きくすれば解消します。

$ sudo ifconfig can0 txqueuelen 1000

3. bit numberingの不統一

CANの生パケットは8バイトです(これより短くても良いが、説明を簡単にするため、以下8バイトで統一。マツダ車はすべて8バイト)。この8バイトに、色々な情報を詰め込む都合上、CANのデータはほとんどビット単位で語られます。たとえば、「第19ビットが左ウィンカー、第13ビットからの12ビットが回転数」のような感じです。

しかしながら、ビット番号の付け方が、統一されていません。

最終的に自分が使っているcantoolsでは、下記のようになっています(cantoolsのドキュメントより)。思わず「どうしてこうなった…」とつぶやきたくなる規約ですね。



しかし、当初使っていたKayakというツールでは、ビット番号はcantoolsと同じであることは実車のログとICテストベンチで確認できたのですが、長さを数える方向がよく分かりません(kcdファイルを色々書き換えて試したのですが)。Kayakを自分でビルドする際に、何かミスしている可能性もありますが…。

さらに、マツダのSkyActiv世代のCANバスのメッセージを解析した情報を見付けたのですが、これはビット番号が左から0から順に63まで増えて行き、長さは右から左に数えられています。気が向いたら、この方に何のツールで使ったkcdなのか聞いてみたいと思っていますが、とりあえず、自分が扱いたいメッセージについてoffsetを手で変換して使っています。

https://github.com/majbthrd/MazdaCANbus/blob/master/skyactiv.kcd

◆最終的な解析の流れ

最終的には、以下のような流れで解析しています。

- 実車に対してcandumpを実行して採集したログを、canplayerでICテストベンチに対して流してみる
- cansnifferで16進表示したり2進表示したりしながら、ICの表示と見比べて、欲しい情報がどのあたりにあるかを予想する
- その情報だけをcangenで、ICテストベンチに対して流してみて、動作を比較する
- KCDファイルを更新して、実車のログをcantools decodeでデコードしながらICに流して、ICの表示と一致することを確認する。

なお、cantoolsはPythonで書かれているのですが、decodeの処理をちょっと改造して、kcdファイルに記述されているIDのみを表示するようにしています。
Posted at 2018/06/08 01:07:23 | コメント(0) | トラックバック(0) | 日記
2018年05月05日 イイね!

NDロードスター用、海外純正クルーズコントロール有効化のまとめ

NDロードスター用の海外純正クルーズコントロール(以下クルコン)有効化の大まかな手順と、関連する先人のレポートは以下の通りです。みなさまの情報に深く感謝します。

1. クルコンスイッチの入手
https://minkara.carview.co.jp/userid/2644764/car/2212680/4230969/note.aspx

他に、花澤パーツで購入、個人輸入なども検討しました。

2. クルコンスイッチの取付
https://minkara.carview.co.jp/userid/754766/car/2373258/4302069/note.aspx
https://minkara.carview.co.jp/userid/2713877/car/2297098/4234913/note.aspx
http://mihiro.sakura.ne.jp/shimoken/nd_roadster-037-2.htm

3. 配線の追加
https://minkara.carview.co.jp/userid/907309/car/1983337/4612550/note.aspx

4. クルコン機能の有効化
https://minkara.carview.co.jp/userid/907309/car/1983337/4299040/note.aspx
https://www.drive2.com/l/452381415938458374/

5. クルコン動作ステータス表示機能の追加
https://minkara.carview.co.jp/userid/907309/car/1983337/4338672/note.aspx

なお、私はIC(Instrument Cluster)を分解することに抵抗があったため(テストベンチのICを分解して戻すときに、針が途中までしか動かなくなったり、ゼロ点あわせに非常に苦労して、懲りた)、CANバス情報を拾う装置を自作する予定です。

(2018/6/9追記)
自作のデジタルメーターに、クルコン状態表示機能を追加しました。

https://minkara.carview.co.jp/userid/2898510/car/2508605/4830828/note.aspx
Posted at 2018/05/05 12:55:56 | コメント(0) | トラックバック(0) | クルマ
2018年01月28日 イイね!

最近の自動車の電装系アーキテクチャ概要

最近の自動車の電装系アーキテクチャ概要

NDロードスターのクルコン有効化に関連して情報収集しているうちに、最近の自動車の電装系アーキテクチャが、コンピュータシステムとしてなかなか興味深いと感じたので概要を紹介します。概要なので、細かいところには目をつぶってください。

最近の自動車は、IC(Instrument Cluster)、BCM(Body Control Module)、PCM(Powertrain Control Module)などの、それぞれ独立して動作するコンピュータが、相互にCAN通信しながら連係動作するようになっています。

たとえば、運転席のヘッドライトのスイッチはICにつながっていて、スイッチがonになると、ICからBCMに「ヘッドライトon」というCAN通信が行われて、BCMが実際のヘッドライトをonしたりします。

PCMやICなどは、それぞれがCPU、ROM、RAMなどを一式揃えたコンピュータで、別々のプログラムが動いています。PCMのプログラムは、各種センサーの値とアクセルの踏まれ具合などから、適切な燃料噴射量を計算しています。ICのプログラムは、他のモジュールから送られてくるCAN通信の内容を、適切に解釈してメーターやモニターなどに表示しています。

CAN通信は、OSI 7階層モデルでいうと、レイヤー2のプロトコルです。CANパケットには宛先とかコネクションの概念はありません。すべての通信がブロードキャストで、受取側のアプリケーションで取捨選択します。ISO15031-5(OBDの仕様)のIntroにある表に、あまたある車載プロトコルのレイヤーの関係がよくまとまっているので、興味があれば参照を。ちなみにOBDはレイヤー7のプロトコルです。

なお、PCMという名前は、従来ECU(Engine Control Unit)と呼ばれていたものが、TCM(Transmission Control Module)と統合されるようになって、この呼び名になったようです(英語版のWikipedia記事参照)。

以上が概要ですが、より詳しく知りたい方は、"The Car Hacker's Handbook"(日本語版は「カーハッカーズ・ハンドブック」)が参考になります。英語版を出版社のサイトで買うと、PDF版が無料で付いてきて便利です。

あと、"CAN"という検索に極めて不向きな単語は、"CAN bus"と変えると情報が拾いやすくなります。

(2018/3/4追記)
その後、NDロードスターのCANバスを軸としたブロック図を書いたので、実例の1つとしてどうぞ。

https://minkara.carview.co.jp/userid/2898510/car/2508605/4621567/note.aspx
Posted at 2018/01/28 21:06:32 | コメント(0) | トラックバック(0) | クルマ
2018年01月26日 イイね!

NDロードスター純正クルコンの100km/hリミッターについて

さらに色々調べてみると、日本のNDロードスターの純正クルコンをなんとか有効化しても、100km/h以上に設定できないことが分かりました。新東名の制限速度が110km/hになり、他でも制限速度が上がる可能性がウワサされる中、これはとても不便です。

クルコンに関する投稿を色々読んでいると、NDのリミッターについて以下のようなことが分かります。

- 日本で購入した車体に、英国や米国のICを取り付けても、クルコンにリミッターがかかることに違いはない(現地では、そもそもクルコンにリミッターがない)。
- 今のところ、AsBuiltの設定項目で解除できる方法は見つかっていない。

このことから、以下の2つのことを推測しています。

- クルコンのリミッター情報は、IC以外のモジュールに保持されている。
- 180km/hのリミッターと同様に、PCM内のフラッシュ(一般にECUと言われるところ)に設定されている可能性がある。

さらに調べてみると、NDロードスターベースで作られているアバルト124スパイダーには、クルコンが標準装備されていて、日本では95km/h程度のリミッターがあることと、ディーラーに持ち込めば解除可能であることが分かりました。

- https://minkara.carview.co.jp/userid/123140/car/2298094/4121479/note.aspx
- https://minkara.carview.co.jp/userid/110729/car/2314509/4062557/note.aspx

納車時に最初から解除してくれるディーラーもあるようです。

いずれにしても、アバルトのディーラーで、どこを変更して解除しているか分かると良いのですが、なんとかならないかな…。

(2018/1/30追記)
その後の調査で、124スパイダーのPCMはフィアットのものでFORScanが使えないことが判明したため、アバルトの解除方法を調べても意味は無さそうです。
Posted at 2018/01/26 22:42:17 | コメント(0) | トラックバック(0) | クルマ
2018年01月13日 イイね!

NDロードスター用クルコンの検討

というわけで、NDロードスター用に取り付けられるクルーズコントロール(以下クルコン)を探したのですが、そもそも日本では需要が無いようで、市販されているのは以下の2つだけみたいです。

- ピボットのもの。https://pivotjp.com/product/tha/tha.htm
- シリアスのもの。http://www.seriouswave.com/item/P003292/

ピボットのものは、設定後の速度上下ができない点が不便です。
シリアスのものは、一般的なクルコンの機能がそろっているのですが、詳しい取り付けレポートを見たところ、かなりの難物のようです。

https://minkara.carview.co.jp/userid/2644764/car/2212680/4230969/note.aspx

その後、さらに色々調べていたら、海外向けのNDロードスターにはクルコンがあり、しかも国内向けのNDロードスターでも、その機能をonにできたという報告がありました。

https://minkara.carview.co.jp/userid/907309/car/1983337/4299040/note.aspx

なるほど、マツダとフォードの各電装部品は、AsBuiltという、Windowsでいうレジストリのようなものを参照して動作しているようですね…。

あとは国内用のIC(instrument cluster)に、不足しているLEDを追加してやれば良さそうです。

ちょっと見た感じ、色々な色が出る4ピンLEDということで、NeoPixelとか言われているLEDと思われるので、電子部品として単品入手できそうな気がします。この部品、仕様にいくつかバリエーションがあるようなので、NDのICに使われているものの仕様を調べる必要がありますが…。ジャンクのICを買って、外してみるかなと思いつつ、さすがにこれだけのためにIC丸ごと買うのは気が引けるな、などと迷ってます。

(2018/1/14追記)
同じ方のその後の記事を漁っていて、NeoPixelではなく、単にチップLEDであったことが判明。
https://minkara.carview.co.jp/userid/907309/car/1983337/4338672/note.aspx
Posted at 2018/01/13 16:13:15 | コメント(0) | トラックバック(0) | クルマ

プロフィール

「[整備] #ロードスター マツコネUSBメモリ用プレイリストの作成 https://minkara.carview.co.jp/userid/2898510/car/2508605/4830835/note.aspx
何シテル?   06/12 00:51
haniliitoです。漢字表記は羽仁理糸。MT車でドライブすることが好きです。ノーマル状態を基本に、ドライブが快適になる方向で少し手を加えるぐらいですが、よろ...
みんカラ新規会員登録

ユーザー内検索

<< 2018/6 >>

     12
3456789
10111213141516
17181920212223
24252627282930

リンク・クリップ

【解説】マツダのi-DM、青ランプ点灯パターン色々 
カテゴリ:その他(カテゴリ未設定)
2018/06/15 00:12:58
メーカー・ブランド不明 純正ステアリング対応スペーサー 
カテゴリ:その他(カテゴリ未設定)
2018/06/11 01:42:03
不明 クールエアーカーシート 
カテゴリ:その他(カテゴリ未設定)
2018/06/08 03:14:27

お友達

2 人のお友達がいます
kyojpkyojp * uehiro6uehiro6

ファン

6 人のファンがいます

愛車一覧

マツダ ロードスター NDロードスター(2017.12モデル) (マツダ ロードスター)
NDロド(6MT)。色はエターナルブルー。 一般道をのんびり走っていてもワクワクして来 ...
フォード マスタング クーペ Mustang 2005 (USモデル) (フォード マスタング クーペ)
アメリカに住んでいたときに、「この機会にアメリカらしい車に乗ろう!」と思って買った車です ...

過去のブログ

2018年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ
©2018 Carview Corporation All Rights Reserved.