
皆さんこんにちは!メカ旦那です。
車関係のお仕事や、車いじりが趣味の方は一度は聞いたことのある「CAN(キャン)通信」。
自動車では標準となっている通信方式です。
入門者の方向けにわかりやすく解説します!
伝送方式
種類
通信方式は多種多様に存在し、色々な区分けがありますが、データの伝送方式に着目すると、以下に分ける事ができます。

CANは
- デジタル
- シリアル
- 非同期
- 半二重
- 差動
- 主従関係なし
- マルチマスター
の特徴をもつ通信です。
よくわかりませんね、、、一つずつ解説します!
アナログ / デジタル

アナログは連続的な値を取りますが、デジタルは0と1の2値を用います。電話やラジオはアナログ通信が多いですが、PC、マイコン通信だとデジタルが主流となり、CANもデジタルになります。
パラレル / シリアル

デジタルは0か1を多数のbitで送受信しますが、パラレルは複数の信号線でまとめて通信します。対して、シリアルは1本の信号線を用いて通信します。その為、配線数が少なくて済むのが特長です。例としてパラレルはプリンター、シリアルはマウスやキーボードで利用されています。
一見、パラレル通信の方が一度に多くのデータを送信でき効率的に思えますが、配線が長くなると、各信号の時間ズレが発生し、上手く送受信できないことがあります。その為、最近の高速通信ではシリアルが主流になっています。CANもシリアル通信です。
クロック同期 / 非同期

デバイス間で送受信する際、いつ送るのか、いつ受け取るのか、といったタイミング(クロック)を両者で認識する必要があります。クロックが共有されている状態はクロック同期と呼ばれています。対して共有はされていませんが、各々独自のクロックを持って通信することを非同期(調歩同期)と言います。イメージは、クロック同期が同じ壁掛け時計を見ながら通信、非同期はそれぞれの腕時計を見ながら通信、ですかね。
同期通信はクロックが共有されているため、送受信にズレが生じないです。一方、非同期はクロック専用の信号線が不要なため配線数を少なくできるのが特長です。CANは非同期通信になります。
全二重 / 半二重

データを送受信する際、2本の伝送路で別々に行う方式を全二重通信(フルデュプレックス)と呼びます。対して、1本でまとめて行う方式を半二重通信(ハーフデュプレックス)と言います。全二重は送受信を同時に行うことができるのに対し、半二重は同時に行えません。ただし信号線が1本で済むのがメリットです。CANは半二重になります。
シングルエンド / 差動

先ほどデジタル通信で「0と1の2値を用いる」と説明しましたが、何を0とするのか、1とするのかの基準があります。信号電圧がある基準電圧より低い状態を0、高い状態を1とする方式をシングルエンド(不平衡) と呼びます。対して、信号が2つあり、電圧の差分から0,1を判別する方式を差動(平衡)と言います。
シングルエンドは信号線が1本で済むメリットがありますが、ノイズが入った時に0を1(もしくはその逆)と誤認識してしまう恐れがあります。対して差動信号は信号線は2本いるものの、電圧差を見ている関係上、ノイズによる影響が少ないメリットがあります。CANは差動になります。
主従関係

シリアル通信は半二重のように1本の伝送路を複数の機器で共有することがあり、「どこがいつ何のデータを送るのか」を決めないとデータ衝突(同時送信)が発生します。このルールは主従関係と呼ばれており、優先権を持つデバイス(主)をマスター、それに応じるデバイス(従)をスレーブと呼びます。具体的には、
- マスターが通信の開始・クロック・アドレス指定を実施
- スレーブは命令を受けて応答
します。
CANは主従関係がありませんので、マスター/スレーブはありません。
各デバイスはノードと呼ばれており、関係性は平等です。
リレーション

通信方式によって送受信できるデバイス数をリレーションと言います。
- ユニキャスト:1対1
- マルチキャスト:1対多(複数)
- ブロードキャスト:1対多(全数)
- マルチマスター(マルチドロップ):多対多
CANはマルチマスター(マルチドロップ)になります。
各ノードの関係性が平等で、自由にデータ送信する事が可能です。
配線

なるほど、伝送方式の特徴はなんとなくわかったよ。で、使うにはどうやって配線すればいいの?

そうですね、実際の配線イメージと注意点について解説します。

配線図はこちらです。 ポイントは
- 信号端子はHIGH、LOW、GNDの3種類
- バス接続
- 終端抵抗が必要
- ツイストペアケーブルを使用する
- GNDを合わせる
です。
HIGH / LOW / GND
信号端子はHIGH、LOW、GNDの3種類を使います。0,1を表す時に、HIGH/LOWは以下の電圧差を満たす必要があります。シングルエンドは電圧が閾値を超えるかが大事でしたが、CANは差動信号の為、電圧そのものより電圧差がより重要になります。
| 論理値 | 状態 | HIGH電圧 [V] | LOW電圧 [V] | HIGH/LOWの電圧差 |
|---|---|---|---|---|
| 0 | ドミナント (優性) | 約3.5 (2.75〜4.5) | 約1.5 (0.5~2.25) | 約2V (0.9V以上が必須) |
| 1 | レセシブ (劣性) | 約2.5 (2.0~3.0) | 約2.5 (2.0~3.0) | 約0V (0.5V以下が必須) |

ちなみにGNDは0VでHIGH/LOWの基準電圧になります。
バス接続
CANはマルチマスターの為バス接続が可能です。先ほどの配線図の通り信号線が木の幹から枝のように出ており、そこに各ノードが接続されています。
終端抵抗(ターミネータ)
配線図にもありましたが、HIGH/LOWのバス両端に抵抗120Ω×2個を並列に接続する必要があります。これは終端抵抗(ターミネータ)と呼ばれています。
役割は、
- bit0の時にHIGH → LOWへの電流経路を作り、電圧差2Vを生み出す
- 信号反射を防ぐ
になります。
例えば、2つのノードで送受信を行っている時、終端抵抗が無いと、受信側レシーバーの入力インピーダンスが非常に高いため、電流が小さくなりHIGHとLOWの電圧差2Vが生まれません。また配線とレシーバーのインピーダンス差によりCANのような高周波信号だと反射が生じて元の電圧波形がおかしくなり、受信側の誤検知に繋がります。
一方、終端抵抗のインピーダンスは配線とほぼ同じの為、電流はほぼ抵抗に流れ、HIGHとLOWの電圧差2Vを生み出します。またレシーバーに流れる電流が小さくなり、反射を防ぐ事ができます。

ツイストペアケーブル
HIGH/LOWはツイストペアケーブル(2本の電線をより合わせたもの)にした方が良いです。CANは差動信号の為ノイズには強いのですが、HIGH/LOWが離れていると、一方は強くノイズが出て、もう一方は出ない事があります。そうすると、受信側で意図しない電圧差を検知してしまい誤動作に繋がります。ツイストペアにする事でHIGH/LOWの配線距離が近いため、ノイズが表れても同程度となり、電圧差への影響は少なくなります。

GNDを合わせる
どのシリアル通信もそうですが、信号電圧によって0、1が決まります。ここで各ノードで電位が合ってないと、例えば送信側から出力した電圧が、受信側では高くなってしまい認識できないという現象が発生します。HIGH/LOW共に多少広い範囲となっているため、問題は起こりづらいですが、配線図の通りGND間は繋げるようにしてください。
CANコントローラ、トランシーバ
各ノード内にはCANコントローラ、トランシーバがあり、 HIGH/LOWの入出力を行っています。終端抵抗の必要性とも関係するので解説します。
市販品
コントローラもトランシーバも部品単体はICで、初めから実装しているマイコンも多いです。実装されていない場合は外付けする必要がありますが、ICと周辺部品が一緒になったモジュールで売られているものも多いので接続はそこまで難しくないです。以下は市販されているモジュールですが、トランシーバのICに周辺部品を実装したものと、更にコントローラがセットになったものになります。
回路図

こちらが一般化した回路図で、それぞれの役割は以下になります。
CANトランシーバ
更に詳しくトランシーバの出力回路についても解説します。
一般的なマイコンのIO出力ですと、プッシュプルやオープンドレインが有名です。CANトランシーバはプッシュプルに近いですが、色々違いがあります。

通信方式
今まで配線などのハードを中心に解説したので、次はソフトを解説します。
フレームの種類
CANはフレームというデータのまとまりで通信を行います。フレームは4種類あります。

アービトレーション
フレームの中身を説明する前にアービトレーションについて理解しておきましょう!
CANは高速かつマルチマスターのため、複数のノードがCANバス上へデータを同時送信し、衝突してしまう事があります。これをデータの冒頭にあるIDを使って防止します。例えば複数のノードからデータ送信した場合、IDの各ビットを比較し、0と1があった場合0を優先させます。結果IDが小さいデータフレームが優先的に送受信されます。
この仕組みをアービトレーション(通信調停)といい、0はドミナント(優性)、1はレセシブ(劣性)と言います。ドミナント/レセシブは後述のACKフィールドでも使われます。

データフレーム(標準フォーマット)

代表的なデータフレーム(標準フォーマット)の中身について解説します。
車での配線
CANは生産ラインや医療機器など様々な所で使われていますが、何と言っても車がメインです。車の中でCANはどこに使われているのか、また他にはどんな通信があるのか図と表にまとめてみました。

| 区分 | 部品 | 主な通信方式 | 特徴 |
|---|---|---|---|
| パワートレイン系 | エンジン、トランスミッション、スロットル等 | CAN、CAN FD | 高速、耐ノイズ、 リアルタイム性 |
| シャーシ系 | パワステ、ブレーキ、サスペンション 等 | CAN | 高速、耐ノイズ、 リアルタイム性 |
| ボディ系 | ウインドウ、サイドミラー、シート 等 | LIN (ただし中間ECUでCANに変換され上位と通信) | 低コスト、低速、 単純制御 |
| 安全系 | ABS、エアバッグ、 車載カメラ 等 | CAN、FlexRay | 高信頼性、 リアルタイム性 |
| 情報系 | ナビ、メーター、オーディオ 等 | 100BASE-T1、MOST | 高速大容量通信 |
CANは車の中でも高速、高信頼性、耐ノイズ性、リアルタイム性が求められるパワートレイン系、シャーシ系、安全系で使われており、統括制御するセントラルゲートウェイ(CGW)と繋がれています。またボディ系はCGW⇔中間ECUはCANですが、中間ECU⇔各ユニットはLINが使われています。
ちなみにCAN FDはCANより高速、大容量データを送受信できる規格になります。
まとめ
CAN通信の特徴をまとめると、以下になります。
CAN通信を理解する事で、車いじりや車関係のお仕事に役立ちますので、ぜひ参考にしていただけれたら嬉しいです!
また他のシリアル通信についても解説しているのでぜひご覧ください!




コメント