PR
スポンサーリンク

【入門】CAN通信とは?仕組みや終端抵抗についてわかりやすく解説!

サムネ:【入門】CAN通信とは?仕組みや終端抵抗についてわかりやすく解説!

皆さんこんにちは!メカ旦那です。

車関係のお仕事や、車いじりが趣味の方は一度は聞いたことのある「CAN(キャン)通信」。
自動車では標準となっている通信方式です。

入門者の方向けにわかりやすく解説します!

伝送方式

種類

通信方式は多種多様に存在し、色々な区分けがありますが、データの伝送方式に着目すると、以下に分ける事ができます。

通信の種類:CANはデジタル、シリアル、非同期、半二重、差動、主従関係なし、マルチマスターの特徴をもつ

CANは

  • デジタル
  • シリアル
  • 非同期
  • 半二重
  • 差動
  • 主従関係なし
  • マルチマスター

の特徴をもつ通信です。
よくわかりませんね、、、一つずつ解説します!

アナログ / デジタル

アナログとデジタルの違い:アナログは連続的な値を取りますが、デジタルは0と1の2値を用います。CANはデジタル。

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

パラレル / シリアル

パラレルとシリアルの違い:パラレルは複数の信号線でまとめて通信します。対して、シリアルは1本の信号線を用いて通信します。CANはシリアル。

デジタルは0か1を多数のbitで送受信しますが、パラレルは複数の信号線でまとめて通信します。対して、シリアルは1本の信号線を用いて通信します。その為、配線数が少なくて済むのが特長です。例としてパラレルはプリンター、シリアルはマウスやキーボードで利用されています。

一見、パラレル通信の方が一度に多くのデータを送信でき効率的に思えますが、配線が長くなると、各信号の時間ズレが発生し、上手く送受信できないことがあります。その為、最近の高速通信ではシリアルが主流になっています。CANもシリアル通信です。

クロック同期 / 非同期

クロック同期と非同期の違い:クロックが共有されている状態はクロック同期と呼ばれています。対して共有はされていませんが、各々独自のクロックを持って通信することを非同期(調歩同期)と言います。CANは非同期。

デバイス間で送受信する際、いつ送るのか、いつ受け取るのか、といったタイミング(クロック)を両者で認識する必要があります。クロックが共有されている状態はクロック同期と呼ばれています。対して共有はされていませんが、各々独自のクロックを持って通信することを非同期(調歩同期)と言います。イメージは、クロック同期が同じ壁掛け時計を見ながら通信、非同期はそれぞれの腕時計を見ながら通信、ですかね。

同期通信はクロックが共有されているため、送受信にズレが生じないです。一方、非同期はクロック専用の信号線が不要なため配線数を少なくできるのが特長です。CANは非同期通信になります。

全二重 / 半二重

全二重と半二重の違い:データを送受信する際、2本の伝送路で別々に行う方式を全二重通信(フルデュプレックス)と呼びます。対して、1本でまとめて行う方式を半二重通信(ハーフデュプレックス)と言います。CANは半二重。

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

シングルエンド / 差動

シングルエンドと差動の違い:信号電圧がある基準電圧より低い状態を0、高い状態を1とする方式をシングルエンド(不平衡) と呼びます。対して、信号が2つあり、電圧の差分から0,1を判別する方式を差動(平衡)と言います。CANは差動。

先ほどデジタル通信で「0と1の2値を用いる」と説明しましたが、何を0とするのか、1とするのかの基準があります。信号電圧がある基準電圧より低い状態を0、高い状態を1とする方式をシングルエンド(不平衡) と呼びます。対して、信号が2つあり、電圧の差分から0,1を判別する方式を差動(平衡)と言います。

シングルエンドは信号線が1本で済むメリットがありますが、ノイズが入った時に0を1(もしくはその逆)と誤認識してしまう恐れがあります。対して差動信号は信号線は2本いるものの、電圧差を見ている関係上、ノイズによる影響が少ないメリットがあります。CANは差動になります。 

主従関係

主従関係:優先権を持つデバイス(主)をマスター、それに応じるデバイス(従)をスレーブと呼ぶ。CANは主従関係なし。

シリアル通信は半二重のように1本の伝送路を複数の機器で共有することがあり、「どこがいつ何のデータを送るのか」を決めないとデータ衝突(同時送信)が発生します。このルールは主従関係と呼ばれており、優先権を持つデバイス(主)をマスター、それに応じるデバイス(従)をスレーブと呼びます。具体的には、

  • マスターが通信の開始・クロック・アドレス指定を実施
  • スレーブは命令を受けて応答

します。

CANは主従関係がありませんので、マスター/スレーブはありません。
各デバイスはノードと呼ばれており、関係性は平等です。

リレーション

リレーション:ユニキャスト(1対1)、マルチキャスト(1対多、複数)、ブロードキャスト(1対多、全数)、マルチマスター(マルチドロップ、多対多)がある。CANはマルチマスター。

通信方式によって送受信できるデバイス数をリレーションと言います。

  • ユニキャスト:1対1
  • マルチキャスト:1対多(複数)
  • ブロードキャスト:1対多(全数)
  • マルチマスター(マルチドロップ):多対多

CANマルチマスター(マルチドロップ)になります。
各ノードの関係性が平等で、自由にデータ送信する事が可能です。

配線

メカ坊や
メカ坊や

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

メカ旦那
メカ旦那

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

CANの配線図:ポイントは「信号端子はHIGH、LOW、GNDの3種類」、「バス接続」、「終端抵抗が必要」、「ツイストペアケーブルを使用する」、「GNDを合わせる」です。

配線図はこちらです。 ポイントは

  • 信号端子は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以下が必須)
ドミナント/レセシブは後ほど解説
CANの信号電圧とロジック:信号端子はHIGH、LOW、GNDの3種類を使います。

ちなみにGNDは0VでHIGH/LOWの基準電圧になります。

バス接続

CANはマルチマスターの為バス接続が可能です。先ほどの配線図の通り信号線が木の幹から枝のように出ており、そこに各ノードが接続されています。  

終端抵抗(ターミネータ)

配線図にもありましたが、HIGH/LOWのバス両端に抵抗120Ω×2個並列に接続する必要があります。これは終端抵抗(ターミネータ)と呼ばれています。

役割は、

  • bit0の時にHIGH → LOWへの電流経路を作り、電圧差2Vを生み出す
  • 信号反射を防ぐ

になります。

例えば、2つのノードで送受信を行っている時、終端抵抗が無いと、受信側レシーバーの入力インピーダンスが非常に高いため、電流が小さくなりHIGHとLOWの電圧差2Vが生まれません。また配線とレシーバーのインピーダンス差によりCANのような高周波信号だと反射が生じて元の電圧波形がおかしくなり、受信側の誤検知に繋がります。

一方、終端抵抗のインピーダンスは配線とほぼ同じの為、電流はほぼ抵抗に流れ、HIGHとLOWの電圧差2Vを生み出します。またレシーバーに流れる電流が小さくなり、反射を防ぐ事ができます。

終端抵抗:HIGH/LOWのバス両端に抵抗120Ω×2個を並列に接続する必要があります。これは終端抵抗(ターミネータ)と呼ばれています。役割は「電圧差2Vを生み出す」「反射を防ぐ」です。

ツイストペアケーブル

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

ツイストペアケーブル:HIGH/LOWはツイストペアケーブル(2本の電線をより合わせたもの)にした方が良い

GNDを合わせる

どのシリアル通信もそうですが、信号電圧によって0、1が決まります。ここで各ノードで電位が合ってないと、例えば送信側から出力した電圧が、受信側では高くなってしまい認識できないという現象が発生します。HIGH/LOW共に多少広い範囲となっているため、問題は起こりづらいですが、配線図の通りGND間は繋げるようにしてください。 

CANコントローラ、トランシーバ

各ノード内にはCANコントローラ、トランシーバがあり、 HIGH/LOWの入出力を行っています。終端抵抗の必要性とも関係するので解説します。

市販品

コントローラもトランシーバも部品単体はICで、初めから実装しているマイコンも多いです。実装されていない場合は外付けする必要がありますが、ICと周辺部品が一緒になったモジュールで売られているものも多いので接続はそこまで難しくないです。以下は市販されているモジュールですが、トランシーバのICに周辺部品を実装したものと、更にコントローラがセットになったものになります。

回路図

CANの回路図:CANコントローラとCANトランシーバが必要

こちらが一般化した回路図で、それぞれの役割は以下になります。

  • CANコントローラ
    • CPUの指示を元にフレーム生成し、デジタル信号でTx端子からトランシーバへ送信します。またトランシーバからRx端子を通じてデータを受領し、優先順位判定やエラーチェックなども行います。
    • 「何を送るか」「受け取ったものをどう処理するか」を決める、いわば頭脳のような役割です。
  • CANトランシーバ
    • コントローラから得たデジタル信号を元にHIGH/LOW電圧を作り、バスへ送り出します。逆にバスから入力された電圧をデジタル信号に変換しコントローラへ送ります。
    • いわば手足のような役割です。

CANトランシーバ

更に詳しくトランシーバの出力回路についても解説します。

一般的なマイコンのIO出力ですと、プッシュプルやオープンドレインが有名です。CANトランシーバはプッシュプルに近いですが、色々違いがあります。

CANトランシーバ出力回路:内部のMOSFETを操作し0,1を出力。
トランシーバの0/1出力回路
  • 0出力 
    • 内部のMOSFETを両方ONし、Vcc → High → 終端抵抗 → Low → GND の順で電流を流します。
    • 25kΩの経路にも微弱な電流が流れます。これにより、Highは2.5Vから1V上がった電位(3.5V)、Lowは2.5Vより1V下がった電位(1.5V)となり、3.5 – 1.5 = 2.0 Vの電位差が生まれます。
    • この電圧差により受信側(レシーバー)は0を検知します。
  • 1出力 
    • 内部のMOSFETを両方OFFし、電流を止めます。
    • High、Lowは2.5Vとなり、受信側(レシーバー)は1を検知します。

通信方式

今まで配線などのハードを中心に解説したので、次はソフトを解説します。

フレームの種類

CANはフレームというデータのまとまりで通信を行います。フレームは4種類あります。

  • データフレーム
    • データを送信する際のフォーマットです。
    • 2048種類ある標準フォーマットと、約540万種類ある拡張フォーマットがあります。標準は乗用車で、拡張はトラック等の大型車で用いられます。
  • リモートフレーム
    • あるノードからデータを要求する際に使うフレームです。このフレームを受け取ったノードがデータを持っていれば、データフレームを返します。
    • 近年はこのフレームを使う事はほぼなく、各ノードへ定期的にデータフレームを送信するのが一般的です。
  • オーバーロードフレーム
    • 受信側のデータ処理が間に合わない場合に送信する、時間稼ぎのためのフレームです。
    • データフレームまたはリモートフレーム後に送信する事で、次のフレーム送信を遅らせます。
  • エラーフレーム
    • 通信エラー発生時に送信されるフレームです。
フレームの種類:データフレーム(j標準/拡張)、リモートフレーム、オーバーロードフレーム、エラーフレームがある。

アービトレーション

フレームの中身を説明する前にアービトレーションについて理解しておきましょう!

CANは高速かつマルチマスターのため、複数のノードがCANバス上へデータを同時送信し、衝突してしまう事があります。これをデータの冒頭にあるIDを使って防止します。例えば複数のノードからデータ送信した場合、IDの各ビットを比較し、0と1があった場合0を優先させます。結果IDが小さいデータフレームが優先的に送受信されます。

この仕組みをアービトレーション(通信調停)といい、0ドミナント(優性)1レセシブ(劣性)と言います。ドミナント/レセシブは後述のACKフィールドでも使われます。

アービトレーション:データ衝突を防ぐ仕組みで、0はドミナント(優性)、1はレセシブ(劣性)と言います。

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

データフレームの構造(標準):SOF、ID、RTR、コントロールフィールド、データフィールド、CRCフィールド、ACKフィールド、EOFで構成。

代表的なデータフレーム(標準フォーマット)の中身について解説します。

  • SOF 1 bit
    • Start Of Frameの略称で、データフレームの開始位置を示すビットです。ドミナント固定です。ノード間での同期にも利用されます。
  • ID 11bit
    • データを識別する番号です。
    • IDが小さいフレームが優先的に送受信されます(アービトレーション
  • RTR 1bit
    • データとリモートフレームを識別するビットです。
    • データフレームはドミナント、リモートフレームはレセシブです。
  • コントロールフィールド 6bit
    • IDE(1bit)、予約ビット(1bit)、DLC(データレングスコード、4bit)で構成されます。
    • IDE:標準/拡張フォーマットを識別するビットです。標準がドミナント、拡張がレセシブになります。
    • 予約ビット:用途は特になく、値が0に固定されているビットです。
    • DLC:データサイズをバイト単位で指定するビットです。0~8バイトまで指定でき、例えば4バイトにしたい時は、ビットを0100にします。
  • データフィールド 0~64bit
    • 実際に送信するデータです。
  • CRCフィールド 16bit
    • CRCシーケンス(15bit)、CRCデリミタ(1bit)で構成されます。
    • シーケンス:今まで送信したbitに誤りが無いかチェックするためのビットです。他で言うパリティビットと似た機能になります。
    • デリミタ:シーケンスの終わりを示すビットで、レセシブ固定になります。
  • ACKフィールド 2bit
    • ACKスロット(1bit)、ACKデリミタ(1bit)で構成されます。
    • ACKスロット:受信確認のためのビットです。送信側はレセシブにしますが、受信側はドミナントにする事で、結果バス上ではドミナントとなります。これが正常な受信の合図になります。逆にレセシブのままだった場合は、受信側からの応答が無いとして、通信異常として扱い、送信側はデータフレームを再送します。
    • ACKデリミタ:ACKスロットの終わりを示すビットで、レセシブ固定になります。
  • EOF 7bit
    • End of Frameの略称で、データフレームの終わりを示すビットです。全てレセシブになります。

車での配線

CANは生産ラインや医療機器など様々な所で使われていますが、何と言ってもがメインです。車の中でCANはどこに使われているのか、また他にはどんな通信があるのか図と表にまとめてみました。

CANの車内配線:CANは車の中でも高速、高信頼性、耐ノイズ性、リアルタイム性が求められるパワートレイン系、シャーシ系、安全系で使われており、統括制御するセントラルゲートウェイ(CGW)と繋がれています。またボディ系はCGW⇔中間ECUはCANですが、中間ECU⇔各ユニットはLINが使われています。
区分部品主な通信方式特徴
パワートレイン系エンジン、トランスミッション、スロットル等CANCAN FD高速、耐ノイズ、
リアルタイム性
シャーシ系パワステ、ブレーキ、サスペンション 等CAN高速、耐ノイズ、
リアルタイム性
ボディ系ウインドウ、サイドミラー、シート 等LIN
(ただし中間ECUでCANに変換され上位と通信)
低コスト、低速、
単純制御
安全系ABS、エアバッグ、
車載カメラ 等
CAN、FlexRay高信頼性、
リアルタイム性
情報系ナビ、メーター、オーディオ 等100BASE-T1、MOST高速大容量通信

CANは車の中でも高速、高信頼性、耐ノイズ性、リアルタイム性が求められるパワートレイン系シャーシ系安全系で使われており、統括制御するセントラルゲートウェイ(CGW)と繋がれています。またボディ系はCGW⇔中間ECUはCANですが、中間ECU⇔各ユニットはLINが使われています。

ちなみにCAN FDはCANより高速、大容量データを送受信できる規格になります。

まとめ

CAN通信の特徴をまとめると、以下になります。

  • データの伝送方式
    • デジタル、シリアル、非同期、半二重、差動、主従関係なし、マルチマスター
  • 配線
    • 信号端子はHIGH、LOW、GNDの3種類
    • バス接続
    • 終端抵抗が必要
    • ツイストペアケーブルを使用する
    • GNDを合わせる
  • 通信方式
    • 4種類のフレームがある
    • アービトレーション(通信調停)の仕組みがあり、0をドミナント、1をレセシブとする
  • 車内配線
    • 高速、高信頼性、耐ノイズ性、リアルタイム性が求められるパワートレイン系、シャーシ系、安全系で使われている

CAN通信を理解する事で、車いじりや車関係のお仕事に役立ちますので、ぜひ参考にしていただけれたら嬉しいです!

また他のシリアル通信についても解説しているのでぜひご覧ください!

メカ旦那

旧帝大工学部を卒業後、電気制御設計職をしています。生産設備や産業用ロボット等、様々な開発に取り組んでいます。電験三種も保持しています。イラストや画像を用いて電気・電子・制御をわかりやすく解説します!

メカ旦那をフォローする
基礎知識
スポンサーリンク

コメント