現段階においてCANは車載ネットワークの事実上の標準といえる。だからこそ、その特長と基礎をしっかり押えておきたい
――今回から、ベクター・ジャパン トレーニング部の増田浩史氏を筆者に迎え、連載「車載ネットワーク“CANの仕組み”教えます」の本編がスタートする。本編では、車載ネットワークで標準的に使用されている「CAN(Controller Area Network)」について、さらに詳しく解説していく予定だ。
前回の解説のとおり、車載ネットワークの適用範囲は幅広く、パワートレイン系、ボディ系、快適装備系など実にさまざまな用途に使用されているが、「安全性」「信頼性」「コスト」「外的要因への耐性」「開発工数」など多くの要求を満たさなければならない。こうした要求に対して、これまでいろいろな通信方式が考案され、実際に使用されてきたが、本連載の主役であるCANこそが現段階における車載ネットワークの事実上の“標準”といっても過言ではない。
さて、本編第1回となる今回は“CANプロトコルを理解するために必要な基礎知識”をテーマに解説する。そして、次回以降で“データ送信の仕組み”などについて説明する予定だ。
はじめに、CANの特長を以下に示す。
これらの項目について、どのような目的で採用されたのか? どのようなことを行っているのか? 早速解説していこう。
車載ネットワークに限らず、一般的にネットワークに接続される通信機器のことを“ノード”という。車載ネットワークでいうと「電子制御ユニット(ECU:Electronic Control Unit)」がそれに当たる。
そして、複数のノードを接続してネットワークを実現するわけだが、その方式にもいくつかの種類がある。例えばリング型、スター型、ライン型などだ。なお、CANでは「ライン型」が採用されている(図1)。
ライン型によるネットワーク方式は、通信線(注)に各ノードを接続していくことによりネットワークを構成できるため、ネットワークがシンプルで、その設計が容易に行えるというメリットがある。車載ネットワークには、もともと“複雑な配線の解消”という目的があり、その点からしてもライン型構造は目的に合致している。
CANではライン型構造で接続される各ノードに平等なバスアクセス(注)が可能な「マルチマスター方式」を採用している。
マルチマスター方式を使用するメリットとしては、
などが挙げられる。
つまり、開発時には各ノードを同一仕様で設計できることに加え、データ伝達を必要な場合に送信することができ、各ノードに優劣がないため自由度の高いネットワーク構成が可能となるのだ。車載ネットワークでは、さまざまな使われ方や設計変更などのケースが考えられるため、このような自由度の高いネットワーク構成は非常に重要といえる。
通常、複数のノードから自由にデータが送信されてしまうとデータが衝突してしまうため、“通信線が使用中であれば、データ送信をさせない”仕組みが使用されている。しかし、複数のノードから同時に通信線にデータが送信される場合には、これを防ぐことができない。
これに対して、CANは「CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)」を採用し、複数のノードから同時に通信線へデータが送信されても、その中の“優先順位が高いものを(衝突させることなく)送信する”ようになっている。これにより、複数ノードからの同時送信が起きた場合も、重要なデータに高い優先順位を設定しておけば、確実にデータ伝達が行われるのだ(図2)。
例えば、エンジンECUからのデータが重要であれば、エンジンECU側にあらかじめ高優先順位を設定しておく。そうすれば、仮にエンジンECUからのデータとエアコンECUからのデータが同時に送信されても、エンジンECUからのデータは破壊されることなく通信線に送信することができる。具体的な処理方法については、次回以降に解説を行う。
IDを使用したメッセージ・アドレッシングとは、データの中に“ID(識別子)を付加して送信する”方式で、各ノード間でデータをやりとりする際に使用される。データを受信する側は、このIDにより「どのようなデータなのか?」「自分が使用するデータなのか?」を判断できる。
また、この方式を使用することで、1つの送信ノードからのデータを複数の受信ノードが同時に受信できる。車載ネットワークで考えると、エンジンECUからのデータを、メーターECUとエアコンECUが同時に受信して、それを使用できる。つまり、複数のECUが同時に協調して制御を行うことが容易になるのだ。
パワートレイン系に使用される「High Speed CAN(CAN-C)」では、“2線式差動電圧方式”により通信を行っている。2線式差動電圧方式とは、2本線(ツイストペア)の各線に流れる電圧の差が“ある”か“ない”かによってデータを送信する方式だ。この方式を使用することにより、外部からノイズが混入した場合でも、各線に混入するノイズの電圧はほぼ同一となる(つまり、各線の差電圧は変化しない)ため、ノイズによる影響が受けにくい(図3)。
車載機器では外部ノイズによる影響は避けて通れないが、CANではそれらの影響を受けにくくする方式を採用しているため、信頼性の高いネットワークを構築することができるのだ。
安全面を重視する車載ネットワークにおいては、“各ノードで使用されるデータが何らかの異常によって間違ったまま届き、正常な制御が行えなくなる”といった状態に陥ることは確実に避けなければならない。
この対策として、CANではさまざまなエラー検出メカニズムを実装しており、これにより、ほぼ100%に近い確率で各種エラーを検出することが可能となっている。例えば、送信ノード自身が、送信するデータと通信線上に流れたデータが合っているかどうかを確認し、違いがある場合にはエラー検出を行うなどだ。なお、詳細なエラー検出メカニズムについては、次回以降で解説する。
車両制御において、あるタイミングで各ノードが協調し、同時に制御を行う場合がある。
例えば、現在のエンジン回転数を使用して複数のノードが制御を行う場合、エンジンECUから各ノードにエンジン回転数のデータが送信される。通常、すべての受信側で正常に受信できれば問題ないが、もし1台のノードがエラーとなりデータを受信できなかったらどうなるだろうか?
「受信に失敗したノードのみエンジンECUからデータを再送信してもらえばいいのでは」と思うかもしれないが、これではエンジン回転数の変化が起きた後のデータを受け取る可能性がある。つまり、各ノードで使用するエンジン回転数データが異なる恐れが出てくるわけだ。
これに対してCANは、“もし1台のノードが受信に失敗したら、データを受信できた全ノードはそのデータを破棄し、全ノードが受信に成功するまでこれを繰り返す”ようになっている。CANではこのように、データの一貫性を保っている。
そのほかのCANの特長としては、
などがある。
Copyright © ITmedia, Inc. All Rights Reserved.