TL

CANバス

1本の車内配線に何十ものECUを共存させ、ノイズの海でも通信が壊れない理由が分かる。差動信号とビットアービトレーションという2つの原理から、CANが40年生き残った堅牢さを腑に落とす。

応用CAN車載ネットワーク組み込みフィールドバス差動信号最終更新: 2026-06-21
TL;DR要点だけ先に
  • 1.CANは2線(CANH/CANL)の差動信号で通信する。ノイズが両線に同じだけ乗る(コモンモード)ため受信側が差を取れば打ち消され、電気的に極めて堅牢になる。
  • 2.アドレスではなくメッセージIDで通信し、複数ノードが同時送信してもビットごとのアービトレーションで衝突を非破壊に解決する。IDが小さいフレームが常に勝ち、優先度がそのまま決まる。
  • 3.CRC・ACK・ビットスタッフィング・フォーム/ビットエラーの多重チェックと、故障ノードを自動的に黙らせるエラー状態機械(active→passive→bus-off)で、単一障害がバス全体を止めない。

1本のバスに全部ぶら下げる

現代の自動車には数十から百を超えるECU(電子制御ユニット)が載ります。これを1対1の専用配線で結べば線束は膨大になります。CAN(Controller Area Network、1986年 Bosch)はこれを、全ノードが同じ2本の線を共有するマルチマスタ型のブロードキャストバスで解きました。送信されたフレームは全ノードが同時に受け取り、各ノードが「自分に必要か」をアドレスではなく内容(ID)で判断します。

ここで効くのが2つの原理です。電気的な堅牢さを生む差動信号と、配線1本で衝突を捌くビットアービトレーション。以下この2点を軸に、フレーム構成・エラー検出・用途まで内部から見ていきます。

差動信号:なぜノイズに強いのか

CANの物理層は CANH と CANL の2線で、両者の電圧差で1ビットを表します。値は論理レベルではなく「ドミナント(優性)」「レセシブ(劣性)」という言葉で定義されます。

状態論理CANH / CANL の概略差(CANH−CANL)
レセシブ1両線とも約2.5V約0V
ドミナント0CANH≈3.5V / CANL≈1.5V約2V

堅牢さの源泉は「差を取る」ことにあります。外来ノイズや電磁妨害は近接する2本の線にほぼ同じ大きさで重畳します(コモンモードノイズ)。受信側は CANH - CANL の差だけを見るので、両線に等しく乗ったノイズは引き算で相殺されます。さらに2線を撚る(ツイストペア)と拾う磁束が反転して打ち消し合い、放射・被妨害の双方に強くなります。この物理は /semiconductor/ や信号処理を扱う /dsp-control/ の領域とも地続きです。

もうひとつの鍵が非対称性です。ドミナントはレセシブに常に打ち勝ちます。バスは通常レセシブへ戻ろうとし、どこか1ノードがドミナントを出せば全体がドミナントになります。電気的にはワイヤードAND(誰か1人が0を出せば全体が0)として振る舞い、後述のアービトレーションとエラー通知の土台になります。バス両端には反射を抑える120Ωの終端抵抗を入れます。

ドミナントが「勝つ」ことが全ての設計原理

CANの巧妙さは、物理層の非対称性(ドミナント優先=ワイヤードAND)を論理設計にそのまま流用した点にあります。アービトレーション・ACK・エラーフラグはいずれも「誰か1ノードがドミナントを出せば、その意思がバス全体を上書きする」という同じ仕掛けで実現されています。1つの物理特性から複数の機能が導かれる、という視点で読むと全体が繋がります。

ビットアービトレーション:衝突を壊さず解決する

配線を共有する以上、2つ以上のノードが同時に送信を始める瞬間があります。Ethernet の CSMA/CD が「衝突したら壊れたので破棄して再送」なのに対し、CANは CSMA/CR(Collision Resolution) で、衝突を非破壊に解決します。勝者のフレームは1ビットも欠けずにそのまま送り切られます。

仕組みは単純です。各ノードは送信中、自分が出したビットとバス上に実際に現れたビットを毎ビット読み比べます。アービトレーションフィールド(=メッセージID)を送っている間、あるノードがレセシブ(1)を出したのにバスがドミナント(0)なら——他の誰かが同時にドミナントを出したという意味です。レセシブを出したノードは「自分より優先度の高い送信者がいる」と判断し、即座に送信をやめて受信に回ります

    bit:      SOF  ID10 ID9 ID8 ID7 ...
  NodeA →      0    0    0    1 (レセシブを出したが…)
  NodeB →      0    0    0    0  (ドミナント)
  ------------------------------------------------
  Bus  =       0    0    0    0  ← ワイヤードANDでドミナント
                              ↑
             ここで NodeA は Bus=0 と自分=1 の不一致を検出し降参。
             NodeB は自分の送信がそのまま通るので、そのまま送信継続。

この結果、数値が小さいIDほど(ドミナントビットが多いほど)優先されるという性質が自動的に得られます。IDはアドレスであると同時に優先度そのものです。緊急のブレーキ制御に小さいID、頻度の低い診断に大きいIDを割り当てれば、混雑時も重要フレームが先に通ります。しかも敗者はIDを送り切る前に静かに降りるだけなので、帯域も無駄になりません。

優先度設計はレイテンシと表裏一体

IDが優先度を兼ねるため、低優先度フレームは高負荷時に長く待たされ、最悪応答時間が伸びます。安全関連の周期メッセージには十分小さいIDを割り当て、ワーストケースのバス負荷を見積もる必要があります。また同一IDを複数ノードが送るとアービトレーションで決着がつかず衝突が壊れるため、送信IDはネットワーク全体で一意に管理するのが鉄則です。

フレーム構成とビットスタッフィング

データを運ぶデータフレーム(標準フォーマット、11ビットID)の主要フィールドは次の通りです。ビットは MSB から送られます。

[SOF][   11bit Identifier   ][RTR][IDE][r0][DLC 4bit][ Data 0..8 byte ][ CRC 15bit ][CRCdel][ACK][ACKdel][ EOF 7bit ]
  1   └ アービトレーション ┘                 └ データ長 ┘                └ 巡回冗長 ┘   1     1    1       7
  • SOF:ドミナント1ビットでフレーム開始を告げ、全受信ノードのタイミングを同期させます。
  • Identifier / RTR / IDE:IDはアービトレーションと優先度を担います。拡張フォーマットではIDを29ビットへ拡張します(IDEで区別)。RTR=レセシブはリモート要求(データ要求)です。
  • DLC / Data:データバイト数(0〜8)と本体。ペイロードが最大8バイトと小さい点が「制御情報を小刻みに撒く」設計思想を映します。
  • CRC 15bit:フレーム内容から計算する巡回冗長検査。受信側が独立に再計算し照合します。
  • ACK スロット:送信側はレセシブで送り、正しく受信できたノードがドミナントで上書きします。1つでも受信成功ノードがあればACKが立ちます(ワイヤードANDの応用)。

ここで重要な下地がビットスタッフィングです。CANはクロック線を持たず、受信側は信号の遷移(エッジ)でタイミングを再同期します。同じ値が続くとエッジが消えて同期がずれるため、送信側は同一ビットが5個連続したら反対の1ビットを強制挿入します(受信側は自動で除去)。これで最長6ビットごとにエッジが保証され、非同期でもビット境界を追従できます。この規則違反は後述のエラー検出にも使われます。

CAN FD が緩めた制約

古典CANのペイロードは8バイト・ビットレートは最大1Mbps 程度に留まります。CAN FD(Flexible Data-rate)は、アービトレーション後のデータ部だけビットレートを上げ(勝者が確定しているので高速化してよい)、ペイロードを最大64バイトへ拡張します。「アービトレーション区間は全ノードが足並みを揃える必要があるが、データ区間は勝者だけの独壇場」という原理を突いた拡張で、物理層の互換性を保ちつつスループットを底上げしました。

多重のエラー検出とフォールトコンテインメント

CANが車載・産業で信頼される最大の理由は、エラーを5つの独立した仕組みで捕まえ、さらに壊れたノードを自動隔離することにあります。

検出方式内容検出する主な異常
CRC15ビットの巡回冗長を送受で照合データ化けの大半
ACKチェック受信者ゼロならACKが立たない全受信不能・断線
フォームエラー固定値のはずのビット(CRCデリミタ等)違反フレーム構造の破損
ビットエラー送信ビットとバス実測値の不一致(アービトレーション/ACK区間を除く)ドライバ故障・ノイズ
スタッフエラー同一ビット6連続(スタッフ規則違反)同期外れ・化け

いずれかのエラーを検出したノードは直ちにエラーフレーム(連続するドミナントビット)を送出します。ワイヤードANDにより進行中フレームを意図的に破壊し、全ノードにエラーを即時伝播させます。壊れたフレームは全員が破棄し、送信元が自動再送します。「誰か1人が気づけば全員でやり直す」という潔い設計です。

問題は、故障ノードが誤検出を繰り返し正常な通信まで壊し続ける事態です。これを防ぐのがエラー状態機械です。各ノードは送信エラーカウンタ(TEC)と受信エラーカウンタ(REC)を持ち、値に応じて3状態を遷移します。

  Error Active   ──(TEC or REC > 127)──▶  Error Passive  ──(TEC > 255)──▶  Bus-Off
   (通常。         正常時はエラーごとに        (エラー通知を控えめに        (送信停止・バスから
    ドミナントで     +8、成功で−1 する         する劣性エラーフラグ。       離脱。自身を黙らせる)
    強くエラー通知)  カウンタで健全性を評価)     暴走を抑制)
故障ノードは自分でバスを降りる

CANの真価はこのフォールトコンテインメントにあります。エラーを頻発させるノードはカウンタが上昇し、まず自己主張の弱い Error Passive へ、それでも改善しなければ Bus-Off となって送信を完全停止し、自らバスから退場します。これにより「1つの故障ECUがネットワーク全体を巻き添えにする」ことを構造的に防ぎます。逆に言えば、あるECUが突然無言になったら、そのノードが Bus-Off へ落ちた可能性をまず疑うべきで、TEC/RECの監視が実務の勘所になります。

車載から産業まで:適材適所

CANはペイロードが小さく、決定的(デターミニスティック)で堅牢という特性から制御系のバックボーンとして広く使われます。自動車ではパワートレインや車体制御に古典CAN/CAN FDが、高帯域が要る映像・ADASには車載Ethernetが、単純なセンサ配線には LIN が併用されます。産業分野では CANopen や DeviceNet といった上位プロトコルがCANのデータリンク層の上に載り、工場の分散I/O やモーション制御を担います。

重要なのは、CANが「速さ」ではなく「確実に・壊れず・優先度通りに小さな制御メッセージを配る」ことに最適化された設計だという理解です。フレームを処理するのは組み込みマイコンとCANコントローラであり、割り込みやリアルタイム制御の作法は /os/ のリアルタイムOS、コントローラを載せる回路や電源は /hardware-components//power/ と結びつきます。

資格・面接で問われる勘どころ

「なぜノイズに強いか」には『差動信号でコモンモードノイズを差し引きで相殺するから』、「衝突をどう解決するか」には『CSMA/CR。ビットごとに自分の送信とバスを比較し、ドミナント優先のワイヤードANDで非破壊にアービトレーションする。IDが小さいほど優先』と答えます。さらに『IDはアドレスではなく優先度を兼ねる』『CRC・ACK・フォーム・ビット・スタッフの多重検出と、TEC/RECによる active→passive→bus-off の故障隔離』を押さえれば、CANの堅牢性の核心を説明できます。

組込み・IoT Article

CANバスを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

CAN

比較で見る軸

難易度: advanced / カテゴリ: 組込み・IoT / タグ数: 5

導入後に効く点

アドレスではなくメッセージIDで通信し、複数ノードが同時送信してもビットごとのアービトレーションで衝突を非破壊に解決する。IDが小さいフレームが常に勝ち、優先度がそのまま決まる。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
組込み・IoT
タグ数
5

判断チェックリスト

  • 自社の用途が「CAN / 車載ネットワーク」に近いか確認する。
  • 強みである「CANは2線(CANH/CANL)の差動信号で通信する。ノイズが両線に同じだけ乗る(コモンモード)ため受信側が差を取れば打ち消され、電気的に極めて堅牢になる。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

CAN車載ネットワーク組み込みフィールドバス差動信号CAN車載ネットワーク組み込み