CAN通信とは?仕組み・プロトコル・フレーム構成をわかりやすく解説(電圧・波形・バス・データ伝送・優先制御・ドミナント・ACK・ID・回路・種類・特徴・メリット・メッセージ形式・フォーマット・DLC・エンディアン・仕様)
CAN通信は、自動車をはじめとする機器内で、複数の電子制御ユニットが効率よく情報を共有するための通信方式です。
車載ネットワークの基礎として知られていますが、産業機械、医療機器、ロボット、建設機械などにも広く使われています。
配線を減らしながら高い信頼性を確保できること、重要なメッセージを優先して送信できることが大きな特徴です。
ここではCANの仕組み、電圧波形、フレーム構成、ID、ACK、DLC、エンディアン、規格上の種類まで、実務で混乱しやすいポイントを順に整理します。
CAN通信の意味と全体像

それではまずCAN通信の意味と全体像について解説していきます。
CANの基本的な意味
CANはController Area Networkの略称であり、複数の制御装置が共通の通信線を利用してデータをやり取りするための通信プロトコルです。
自動車では、エンジン制御、ブレーキ制御、メーター、エアバッグ、ドア制御、空調制御など、多数のECUが搭載されています。
これらのECUを一対一で接続すると配線が複雑になり、重量やコスト、故障箇所も増えやすくなります。
そこで共通のバスに各ECUを接続し、必要な情報をメッセージとして送る考え方が採用されました。
CAN通信は機器同士を個別に結ぶのではなく、共通の通信路で情報を共有する方式と捉えると理解しやすいでしょう。
送信側は宛先を指定するよりも、どのような意味を持つデータかをIDで示します。
受信側は必要なIDのメッセージだけを受け取り、自分の制御に利用する仕組みです。
バス型ネットワークの構成
CANネットワークは、一般にCAN_HとCAN_Lという2本の信号線を用いるバス型の回路構成です。
各ノードはこのバスに並列で接続され、終端抵抗をバスの両端に配置します。
代表的な終端抵抗の値は120オームであり、両端に2個設けることで反射を抑え、波形の乱れを小さくします。
途中のノードごとに終端抵抗を入れるわけではないため、設計時には配線位置と終端位置の確認が必要です。
通信線から枝分かれするスタブ線が長すぎると、信号反射や電磁ノイズの影響を受けやすくなります。
特に高速CANでは、バス長、スタブ長、ビットレートの関係を意識することが重要です。
| 項目 | 内容 |
|---|---|
| 通信形態 | 複数ノードが共通バスへ接続するマルチマスタ方式 |
| 主な信号線 | CAN_HとCAN_Lの差動信号 |
| 終端処理 | バス両端に原則として120オームの終端抵抗を配置 |
| 代表的な用途 | 車載ECU、産業装置、ロボット、計測装置 |
| 通信の考え方 | 宛先ではなくメッセージIDを中心に情報を配信 |
採用される理由とメリット
CAN通信が多くの制御システムで採用される理由は、信頼性と実装効率のバランスにあります。
差動伝送を使うため、外部ノイズが両方の信号線に同じように乗った場合でも、その差分によって信号を判定しやすくなります。
また、複数のノードが同時に送信を開始しても、優先制御によって衝突を解決できます。
重要度の高い制御メッセージを優先しやすいため、リアルタイム性が求められる場面に向いています。
配線削減、ノイズ耐性、異常検出、優先送信をまとめて実現できる点がCANの強みです。
CAN通信は単なるデータ伝送手段ではありません。
複数の制御装置が同じバスを共有しながら、重要な情報を優先的かつ安全に届けるための仕組みです。
差動電圧と波形の仕組み
続いては差動電圧と波形の仕組みを確認していきます。
CAN_HとCAN_Lの電圧差
一般的な高速CANでは、CAN_HとCAN_Lの電圧差を利用してビット値を判定します。
論理状態にはドミナントとリセッシブがあり、ドミナントは強い状態、リセッシブは弱い状態として扱われます。
リセッシブ時にはCAN_HとCAN_Lがどちらもおおむね2.5V付近となり、差動電圧はほぼ0Vです。
ドミナント時にはCAN_Hが約3.5V、CAN_Lが約1.5Vとなり、両者の差はおおむね2Vになります。
実際の電圧値はトランシーバや電源条件、測定位置によって多少変動します。
そのため、オシロスコープで確認する際は単線の値だけでなく、CAN_HとCAN_Lの差分、波形の対称性、立ち上がり時間も見る必要があります。
差動電圧の基本的な見方です。
リセッシブはCAN_HとCAN_Lの差がほぼ0Vです。
ドミナントはCAN_HからCAN_Lを引いた差動電圧が約2Vとなります。
ドミナントとリセッシブの優先関係
CANではドミナントがリセッシブより優先されます。
これは通信バス上で、ドミナントのビットが送信されると、リセッシブを送ろうとしたノードの状態を上書きできることを意味します。
複数ノードが送信を開始した場合、各ノードは送信しながらバスの状態を監視します。
自分がリセッシブを送ったのにバス上ではドミナントが観測された場合、そのノードは優先制御で負けたと判断します。
負けたノードは直ちに送信を中止し、優先度の高いメッセージの送信完了後に再送を試みます。
優先制御は送信データを壊す衝突ではなく、IDの比較によって送信権を決める仕組みです。
波形測定時の確認項目
CANの異常解析では、オシロスコープやCANアナライザを用いて電圧と通信内容を確認します。
波形が大きく崩れている場合、終端抵抗の不足、終端抵抗の過剰、配線断線、短絡、スタブ長の過大、ノイズ混入などが候補になります。
CAN_HまたはCAN_Lの片側だけが不自然な電圧に固定されている場合は、トランシーバ故障や電源系統の異常も疑います。
通信速度が高いほど、配線のインピーダンスや分岐の影響が現れやすくなります。
測定時はプローブの接続方法でも波形が変わるため、基準点や帯域、差動測定の設定を揃えることが大切です。
| 観測状態 | 考えられる原因 |
|---|---|
| 差動電圧が小さい | 終端抵抗不良、トランシーバ異常、配線抵抗増加 |
| 反射波が目立つ | 終端不足、スタブ線が長い、配線インピーダンス不整合 |
| 片側の電圧が固定 | CAN_HまたはCAN_Lの短絡、断線、トランシーバ故障 |
| 通信が断続的に停止 | ノイズ、接触不良、電源変動、エラーフレーム増加 |
プロトコルと優先制御の流れ
続いてはプロトコルと優先制御の流れを確認していきます。
マルチマスタ方式の特徴
CANはマルチマスタ方式であり、特定の親機だけが送信する構成ではありません。
接続されている各ノードは、必要なタイミングで送信を開始できます。
ただし、複数ノードが同時に送信を始める可能性があるため、送信権を公平かつ高速に決める仕組みが必要です。
この役割を担うのがアービトレーションと呼ばれる優先制御です。
CANではIDの値が小さいメッセージほど優先度が高くなります。
重要な安全制御や周期が短い制御データには、一般に小さなIDを割り当てる考え方が使われます。
IDによるアービトレーション
アービトレーションはフレームの先頭にあるID領域で実行されます。
各ノードは上位ビットから順番にIDを送信しつつ、同時にバス上の実際の状態を監視します。
CANではドミナントが論理値0、リセッシブが論理値1として扱われるのが一般的です。
あるノードが1を送信した時点でバスに0が現れた場合、そのノードはより小さなIDを持つ別ノードに送信権を譲ります。
この処理はビット単位で行われるため、メッセージ全体が壊れる前に優先順位を決定できます。
優先制御の例です。
IDが二進数で00010010のメッセージと、00100000のメッセージが同時に送信された場合、より早い位置でドミナントを出す前者が優先されます。
数値として小さいIDが優先されるため、ID設計は通信設計そのものに影響します。
エラー検出と再送処理
CANは通信中の異常を検出する機能を複数備えています。
代表例として、ビット監視、ビットスタッフィング確認、CRC確認、フレーム形式確認、ACK確認があります。
送信ノードは自分が出した信号とバス上の信号を比較し、想定と異なる場合に異常を検出できます。
受信ノードもCRCなどを確認し、正しく受信できた場合だけACKを返します。
エラーが検出されると、エラーフレームによって他のノードにも異常が通知されます。
送信側は状況に応じて再送を行い、通信信頼性を高めます。
ACKが返らない状態は、受信ノードが存在しない、配線が切れている、設定が合っていない可能性を示す重要な手掛かりです。
フレーム構成とメッセージ形式
続いてはフレーム構成とメッセージ形式を確認していきます。
データフレームの主要フィールド
CAN通信で最もよく使われるのはデータフレームです。
データフレームには、開始を示すSOF、識別子となるID、制御情報、データ領域、CRC、ACK、終了を示すEOFなどが含まれます。
SOFはStart Of Frameの略であり、通信フレームの開始位置を示します。
IDはメッセージの内容や優先度を表す重要なフィールドです。
データ領域にはセンサー値、制御指令、状態フラグなどが格納されます。
CRCは通信中にデータが壊れていないかを確認するための検査値です。
ACKは受信側が正常受信を示す応答であり、フレームの正当性確認に利用されます。
| フィールド | 役割 |
|---|---|
| SOF | フレーム開始を示すビット |
| Arbitration Field | IDや送信要求に関する情報を格納する領域 |
| Control Field | DLCなどデータ長に関する制御情報 |
| Data Field | 実際のデータを格納する領域 |
| CRC Field | 誤り検出用のチェック情報 |
| ACK Field | 正常に受信したノードからの応答確認 |
| EOF | フレーム終了を示す領域 |
標準IDと拡張IDの違い
CANのIDには、11ビットの標準フォーマットと29ビットの拡張フォーマットがあります。
標準IDは扱いやすく、従来から多くの車載ネットワークで使われてきました。
拡張IDはより多くの識別子を必要とするシステムで便利ですが、ID領域が長くなる分だけ通信負荷への影響を考慮する必要があります。
標準IDと拡張IDが混在するネットワークでは、受信フィルタ設定やアプリケーション側の解析処理も重要になります。
IDは単なる番号ではなく、優先度、データの意味、受信対象の設計に関わる情報です。
DLCとデータ長の関係
DLCはData Length Codeの略であり、データフィールドに含まれるデータ長を示す情報です。
従来のCANでは、データフィールドは最大8バイトです。
DLCの値と実際のバイト数を対応付けて、受信側はどこまでを有効なデータとして扱うかを判断します。
一方でCAN FDでは、より大きなデータ長を扱えるようになり、最大64バイトまでのペイロードに対応します。
通信ログを読む際には、IDだけでなくDLCと実データの桁数を確認しなければなりません。
DLCはデータの意味そのものを表す値ではありません。
何バイトのデータがフレーム内に入っているかを示す情報であり、各バイトの意味は別途定義された通信仕様書で確認します。
データ解析とエンディアンの考え方
続いてはデータ解析とエンディアンの考え方を確認していきます。
CANデータの読み取り手順
CANアナライザで受信したデータは、通常はID、DLC、データ列、受信時刻などの形で表示されます。
しかし、16進数の並びだけを見ても、すぐに温度や回転数、状態値を判断できるとは限りません。
まず対象メッセージのIDを特定し、通信仕様書に記載されたバイト位置、ビット位置、スケーリング値、オフセットを確認します。
次に、符号付きか符号なしか、整数値か浮動小数点か、単位は何かを整理します。
複数の信号が1つのデータバイトに詰め込まれている場合もあるため、ビットマスクを用いた抽出が必要です。
解析の簡単な例です。
2バイトの生データが16進数で0C80、スケーリングが0.1、オフセットが0の場合、物理値は320.0となります。
一般的な計算は、生データにスケーリングを掛けてからオフセットを加える形です。
ビッグエンディアンとリトルエンディアン
エンディアンは、複数バイトで構成される数値をどの順番で並べるかという考え方です。
ビッグエンディアンでは、上位バイトを先に配置します。
リトルエンディアンでは、下位バイトを先に配置します。
たとえば16ビット値が16進数で1234の場合、ビッグエンディアンでは12、34の順に並びます。
リトルエンディアンでは34、12の順です。
CANのデータ仕様では、バイト順だけでなくビット番号の数え方もツールや規格によって表現が異なる場合があります。
同じ8バイトのデータでも、エンディアンの解釈を誤ると値が大きく変わるため、仕様書と解析ツールの設定を必ず照合しましょう。
| 項目 | ビッグエンディアン | リトルエンディアン |
|---|---|---|
| 上位バイトの位置 | 先頭側 | 後方側 |
| 16進数1234の並び | 12 34 | 34 12 |
| 確認すべき内容 | バイト順とビット開始位置 | バイト順とビット開始位置 |
| 注意点 | 仕様書の表記方式によって解釈が異なる場合がある | ツール側の信号定義と一致させる必要がある |
通信仕様書とDBCの役割
CAN通信の解析では、通信仕様書やDBCファイルが重要な役割を持ちます。
DBCは、メッセージID、信号名、開始ビット、ビット長、スケーリング、オフセット、単位、受信ノードなどを定義するためのデータベース形式です。
アナライザへDBCを読み込ませると、16進数の生データを人が読みやすい物理値として表示できる場合があります。
ただし、DBCが正しくても実機側のソフトウェア仕様が変更されていれば、表示値は期待どおりになりません。
バージョン管理、IDの重複確認、未使用ビットの扱い、予約領域の定義まで含めて管理することが求められます。
CAN解析の精度は測定器の性能だけでなく、通信仕様の正確さにも左右されます。
CANの種類と設計上の注意点
続いてはCANの種類と設計上の注意点を確認していきます。
クラシックCANとCAN FD
クラシックCANは長年にわたり利用されてきた基本的なCAN方式です。
最大8バイトのデータフィールドを持ち、多くの車載制御や産業用制御で現在も活用されています。
CAN FDはCAN Flexible Data Rateの略であり、データフィールドを最大64バイトまで拡張できる方式です。
また、アービトレーション後のデータ領域をより高速なビットレートで送信できる構成も選べます。
ソフトウェア更新、センサー情報の増加、高度な制御データの送信などでCAN FDの利点が生かされます。
| 項目 | クラシックCAN | CAN FD |
|---|---|---|
| 最大データ長 | 8バイト | 64バイト |
| 通信速度の考え方 | 基本的に同一ビットレート | データ区間を高速化できる構成が可能 |
| 主な利点 | 普及実績が多く構成が比較的シンプル | 大容量データを効率よく転送しやすい |
| 注意点 | 帯域不足が課題になる場合がある | 対応コントローラ、トランシーバ、配線条件の確認が必要 |
CAN XLと関連する通信方式
CANの発展形として、さらに大きなデータ転送能力を目指すCAN XLもあります。
用途によってはCANだけでなく、LIN、FlexRay、車載Ethernetなどと組み合わせてネットワークを構成します。
LINは低コストで比較的低速な制御向けであり、ドアミラーやシートなどの用途で使われることがあります。
車載Ethernetは高速なデータ伝送が求められるカメラ、ディスプレイ、高度運転支援システムなどで重要性が高まっています。
どの通信方式が適しているかは、必要な通信速度、データ量、リアルタイム性、コスト、冗長性、既存設備との互換性で決まります。
通信方式の選定では速度だけでなく、故障時の影響範囲や診断性も評価対象となります。
配線と回路設計の注意事項
CAN回路の設計では、適切なトランシーバの選定、終端抵抗の配置、コモンモードノイズ対策、保護回路の設計が重要です。
車載環境では、電源変動、静電気、サージ、逆接続などへの耐性も求められます。
コネクタの接触不良やアース不良は、通信不良の原因になりやすい箇所です。
バス配線を長くするほど通信速度を下げる必要がある場合があるため、設計初期に配線長とビットレートを見積もることが欠かせません。
ノードを追加する際は、通信負荷率、ID競合、終端構成、スタブ線長、電流容量まで確認しましょう。
CANのトラブル対策では、通信ログだけを確認して終わりにしないことが大切です。
ID、ビットレート、終端抵抗、電圧波形、接地、電源、配線長を順番に確認すると、原因を切り分けやすくなります。
CAN通信の理解ポイント
CAN通信は、複数のECUや制御装置が共通のバスを通じてデータを共有するための通信方式です。
CAN_HとCAN_Lによる差動伝送を使い、ドミナントとリセッシブの優先関係によって、複数ノードの送信競合を解決します。
小さいIDを持つメッセージほど優先されるため、ID設計はリアルタイム性と安全性に直接関係します。
フレームはSOF、ID、DLC、データ、CRC、ACK、EOFなどで構成され、各フィールドには通信の信頼性を支える役割があります。
CANを正しく扱うには、電圧波形、終端抵抗、フレーム形式、ID、DLC、エンディアン、通信仕様書を一体で理解することが重要です。
クラシックCAN、CAN FD、CAN XLなどの特徴も踏まえ、必要なデータ量と通信速度に合った方式を選定しましょう。
不具合解析では、アナライザのログ、オシロスコープの波形、配線状態、設定値を照らし合わせることで、より確実な原因調査につながります。