車[走るコンピューター]を支える車載ネットワークとは?
はじめに
現代の自動車は、単なる移動手段ではありません。多くの電子制御ユニット(ECU: Electronic Control Unit)が搭載され、それらが連携して様々な機能を実現する、まさに「走るコンピューター」と言えます。特に最近の車なんかは約60~100台のECUを積んでおり、高級車になってくると100台以上も搭載している事もあるそうです。
これらのECUがスムーズに情報をやり取りするために不可欠なのが「車載ネットワーク」です。
なぜ車載ネットワークが必要なのか?
かつての自動車は、各機能が独立して動作していました。しかし、安全性や快適性の向上、そして自動運転技術の進化に伴い、多くの情報がリアルタイムに共有される必要が出てきました。
例えば、以下のような連携が車載ネットワークによって実現されています。
- ブレーキ制御: タイヤの回転速度センサーからの情報を基に、ABS(アンチロック・ブレーキング・システム)が瞬時に各車輪のブレーキを制御します。
- 運転支援: カメラやセンサーからの情報を解析し、危険をドライバーに知らせたり、自動で車線維持を行ったりします。
- インフォテインメント: ナビゲーション、オーディオ、コネクティビティ機能などが、連携して快適な車内環境を提供します。
もし車載ネットワークがなければ、これらのECUはバラバラに動作し、高度な機能を実現することはできません。
ソフトウェアエンジニアにとっての車載ネットワーク
ソフトウェアエンジニアの皆さんは、普段Webやモバイルアプリケーションの開発に携わることが多いと思いますが、自動車の世界でも多くのソフトウェアが動いています。これらのソフトウェアが他のECUと連携する際に、車載ネットワークが重要な役割を果たします。
例えば、
- あるECUで処理されたセンサーのデータが、別のECUの制御ロジックで利用される。
- スマートフォンアプリから車両の状態を監視したり、操作したりする際に、車載ネットワークを介してECUと通信する。
といったケースが考えられます。
代表的な車載ネットワーク規格
車載ネットワークには、様々な規格が存在しますが、ここではソフトウェアエンジニアが知っておくと役立つ代表的なものをいくつか紹介します。
-
CAN (Controller Area Network)
- リアルタイム性と信頼性が高く、主にエンジン制御やブレーキ制御など、安全に関わる重要な情報のやり取りに使われます。
- メッセージIDによって通信が行われるため、ソフトウェアは特定のアドレスではなく、意味のあるデータ(例えば「車速」「エンジン回転数」など)として情報を受け取ることができます。
- 物理的な伝送経路としてはツイストペアケーブル(2本の線を対で撚り合わせたもの)を使用
- シングルボードコンピューターでも利用可能なI/F変換が入手しやすく、情報量が多いため開発しやすいです。
-
LIN (Local Interconnect Network)
- CANに比べて低速で安価な規格で、ウィンドウリフトやドアロックなど、それほど高いリアルタイム性を求められない機能に使われます。
- マスタースレーブ方式で通信が行われ、ソフトウェアはマスタECUからの指示に基づいて動作することが多いです。
- 他の通信規格と違い、物理的な伝送経路には一本の線(シングルワイヤ)のみを使用しています。
- シングルボードコンピューターなどで利用可能なI/F変換の入手が難しく、トランシーバー回路を作成する必要があるなど、ハードウェアのスキルが求められる場面があります。
-
車載Ethernet
- 近年、自動車の高機能化に伴い、より高速なデータ通信のニーズが高まり、導入が進んでいます。インフォテインメントシステムやADAS(先進運転支援システム)などで、大量のデータを扱う際に利用されます。
- TCP/IPなどのインターネット技術をベースとしているため、Web系の知識を持つソフトウェアエンジニアには馴染みやすいかもしれません。
- 車載EthernetはCAN同様にツイストペアケーブルを使用しているため、一般的なEhternetのRJ-45端子に変換するには変換I/Fが必要になりますが、多少値が張るものになっています。
-
FlexRay
- 高いリアルタイム性と耐故障性を持ち、ステアリングバイワイヤやブレーキバイワイヤなど、極めて高い信頼性が要求されるシステムに使われることがあります。
- 時間分割多重アクセス(TDMA)方式を採用しており、ソフトウェアは決められたタイミングでデータの送受信を行う必要があります。
- こちらもCANや車載Ehternetと同じくツイストペアケーブルを使用しています。
まとめ
車載ネットワークは、現代の自動車を「走るコンピューター」たらしめるための重要な基盤技術です。ソフトウェアエンジニアが自動車業界で活躍する上で、その基本的な概念を理解しておくことは非常に有益です。今後、より多くのソフトウェアが自動車に搭載されるにつれて、車載ネットワークの知識はますます重要になっていくと思います。
Discussion