CAN(Controller Area Network)とは
CANは、自動車や産業機器で広く使われる、信頼性の高い国際標準のシリアル通信プロトコルです。
CANとは
CANは、ISOにて国際的に標準化されたシリアル通信プロトコルです。 これまで自動車産業では、安全性、快適性、低公害、低コストを求め、自動車の電子制御システムを様々に開発してきました。これらの制御システムは、システムごとに複数のバスラインに構成される場合が多く、ワイヤーハーネスの増加、それに伴う重量及びコストの増大が問題となっていました。そこで、“ワイヤーハーネスを削減する”、“複数のLANを介して大容量のデータを高速に通信する”ことを目的に、ドイツの電装メーカBOSCH社が自動車の電子制御システム向け通信プロトコルとしてCANを開発しました。
CANはISO11898で規格化され、自動車LANの標準プロトコルに位置づけられています。また、現在ではCANの高い性能と信頼性が認められ、FA、産業機器等、多方面にわたり使われています。
ISO11898ではデータリンク層がISO11898-1で規定され、2015年には従来のCAN(Classic CAN)に加えてCAN FDの仕様が追加されました。CANの物理層はISO11898-2でHighSpeed CAN(高速CAN)、ISO11898-3でLowSpeed CAN(低速CAN)をそれぞれ規定しています。本ページではISO11898-2 HighSpeed CANについて主に記載します。
CANの特長
◆マルチマスタ(CSMA/CR方式) バスが空いている時はバスに接続される全てのノードが送信を始めることが可能。 CSMA/CR(Carrier Sense Multiple Access/Collision Resolution)方式によるメッセージ送信権の優先順位付けを実施。
◆外部からのノイズへの耐性 データの送信に差動電圧方式を採用することにより、外部からのノイズの影響を受けにくい。
◆エラーの検出・通知・リカバリー機能 全てのノードにエラーを検出・通知・リカバリー機能あり。
CANの応用例
高速CANと低速CANの簡易比較
| 高速CAN(HighSpeed CAN) ISO11898-2 | 低速CAN(LowSpeed CAN) ISO11898-3 | |
|---|---|---|
| バスの形状 | ループバス | オープンバス |
| 通信速度 | 最大1Mbps | 最大125Kbps |
| 最大バス長 | 40m/1Mbps | 1km/40kbps |
| バスへの接続数 | 最大30 | 最大20 |
| フォールトトレラント | なし | あり |
CANプロトコルについて
CANの概略仕様
ISO11898-2(HighSpeed CAN)
| 項目 | 内容 |
|---|---|
| ネットワーク構成 | マルチマスタ(CSMA/CR方式) |
| 通信速度 | MAX1Mbps |
| 伝送路 | 2線式 |
| 接続 | バス型 |
| 伝送方式 | 半二重通信 |
| 同期方式 | レセシブ→ドミナントの立下りエッジに対し、全てのノードが同期を合わせる |
| その他の特徴 | • システムの柔軟性(ノードの追加削除が容易) • エラーの検出・通知・リカバリー機能 • コントローラ内蔵汎用マイコン、トランシーバ数、開発ツールの豊富さ |
| 適応箇所 | 独立したシステム間結合向き、車両運動制御系など自動車の基幹ユニットのメインネットワークとして使用 |
配線長の目安
ビットレートと全体の配線長はトレードオフです。
- 1 Mbit/s:~40 m
- 500 kbit/s:~100 m
- 250 kbit/s:~250 m
- 125 kbit/s:~500 m
実際はスタブ(メインバスからノードへ伸びる枝線)の数・長さ、分散、コネクタ、トランシーバの遅延などで変わります。
CANの物理層
CANはCANH・CANLと呼ばれる通信線を使って送信、受信の両方を行っています。 CANの信号は、2本の通信線の電圧の差動によって送信されます。 電位差のない信号はレセシブといい論理値は1を指します。電位差のある信号はドミナントといい論理値は0を指します。 ドミナントとレセシブが通信バス上で衝突した場合には、ドミナントが優先されます。 また、双方の線にいくらかの電圧が加わってもCANH・CANLの両方に同じノイズが乗るため電圧の差には大きな変化がみられないことから、外部からのノイズに強いという性質があります。
| バスの状態 | レセシブ | ドミナント | ||||
|---|---|---|---|---|---|---|
| min | nom | max | min | nom | max | |
| CAN_H | 2.00 | 2.50 | 3.00 | 2.75 | 3.50 | 4.50 |
| CAN_L | 2.00 | 2.50 | 3.00 | 0.50 | 1.50 | 2.25 |
| 電位差(H-L) | -0.50 | 0 | 0.05 | 1.50 | 2.00 | 3.00 |
電気的特性の詳細
- 共通モード電圧範囲:-2V ~ +7V
- 差動入力電圧閾値:0.9V(レセシブ→ドミナント)、0.5V(ドミナント→レセシブ)
- 終端抵抗:バスの両端に120Ω(合成抵抗60Ω)
- バス容量:最大100pF/m
トポロジと終端
- ライン型(バス型)が原則。バス両端に 120 Ω を置き、合成で60 Ωにします。
- スプリット終端:60 Ω + 60 Ω の中点を数nFでGNDに落とす方法。コモンモードの揺れを抑え、EMI/EMCで効きます。
- スタブ長:分岐は短く。1 Mbit/sで 0.3 m以下が経験則。速いほど厳しくなります。
- ケーブル:特性インピーダンス 120 Ωのツイストペア。外来ノイズや放射が厳しい区間はシールドを検討します。
接続構成
[MCU]──CAN_TX/RX──[CAN Controller]──[CAN Transceiver]───CANH/L───[CAN Bus]
|
[120Ω](終端抵抗)
主要コンポーネント:
- CANコントローラ:プロトコル処理(多くのマイコンに内蔵)
- CANトランシーバ:物理層インターフェース(例:TJA1040、MCP2551、SN65HVD230)
- 終端抵抗:信号反射防止のため、バスの両端に配置
マルチマスタ方式
CANはバスが空いている時は、バスに接続される全てのノードがメッセージの送信を始めることが出来るマルチマスタ方式です。 バスに対して最初に送信を開始したノードが送信権を獲得し、同時に複数のノードが送信を始めた場合は、優先順位の高いIDのメッセージを送信しているノードが送信権を獲得することが可能なCSMA/CR方式を採用しています。
また、バスにつながるノードは、アドレスのような情報を所持していません。そのためバスにノードを追加または削除する場合、バスにつながる他のノードのソフトウェア、ハードウェアおよびアプリケーション層に変更を加える必要がなく、システムの設計に柔軟性があります。
CSMA/CA方式とCSMA/CR方式
従来、CANの通信方式はCSMA/CA(Carrier Sense Multiple Access/Collision Avoidance)方式と解説されていましたが、最近はCSMA/CRと解説されるようになってきました。 CSMA/CA方式は衝突を回避するために待ち時間を挿入するなどの方法を定義していますが、CSMA/CR(Carrier Sense Multiple Access/Collision Resolution)方式では、衝突した時の対応方法を定義しているという点が異なります。 CAN通信では、衝突を回避するためのものではなく、衝突した時の振る舞いを定義したものとなり、現在ではCSMA/CR方式と呼ぶ方が正しい定義ということになります。
アービトレーション(通信調停)
メッセージを送信するノードは通信バスの電圧を監視しており、送信したデータが本当にバスに流れているかを1bitずつ確認しています。2つのノードが同時に送信を行った場合、メッセージに含まれる識別子(ID)を使用し、送信優先権を付与することでメッセージの衝突を避ける仕組みがあります。このような仕組みをアービトレーション(通信調停)と呼び、このアービトレーションの仕組みによってCSMA/CR方式を実現しています。 通信調停負けした時点で、通信調停負けしたノードは送信を取りやめ、受信モードに移行します。通信調停を通過したノードがメッセージを送信し終えた後にメッセージを再送します。
ビットスタッフィング
CANは信号の立ち下がりを検出することで、他ノードとのタイミングを調整し同期を取ります。 そのため1または0の信号がずっと続くと微調整の機会が来ないまま長時間経過し、小さなずれが積み重なって、送り手と受け手でビットのずれが発生する可能性があります。 この同期ずれを防ぐためにCAN通信では5連続した0または5連続した1を送信したら、その反転ビットを挿入しなければならない仕様になっています。 この仕様をビットスタッフィングといい、挿入されるビットをスタッフビットといいます。 スタッフビットを挿入することで定期的な立ち下がりが検出され、受信側で同期をとることができます。
CANのフレーム構成
| フレーム | フレームの役割 |
|---|---|
| データフレーム | 送信ノードが受信ノードへメッセージを送る時に使用する |
| リモートフレーム | 受信ノードが特定の送信ノードへメッセージの送信を要求する時に使用する |
| エラーフレーム | エラーを検出した時に他ノードへ通知する時に使用する |
| オーバーロードフレーム | 受信ノードが受信準備未完了を通知する時に使用する |
| インターフレームスペース | データフレームおよびリモートフレームを前のフレームと分離させるために使用する |
データフレーム
データフレームには標準フォーマットと拡張フォーマットの2種類のフレームフォーマットがあります。 拡張フォーマットでは、Base ID11bitにID Extension18bitが追加され、合計29bit長のIDを表すことができます。 また、標準フォーマットと拡張フォーマットが同じIDを同時送信した場合は、標準フォーマットが優先されます。
標準フォーマット
-
SOF(Start Of Frame) : データフレームの開始を通知する領域で、1bitのドミナントです。
-
Arbitration Field(調停フィールド) : フレームの優先順位を判断する領域
- Base ID:標準ID11bit分を設定
- RTR:データフレームとリモートフレームの判別を行う
-
Control Field : IDE、FDF、DLCで構成される領域
- IDE:標準フォーマット、拡張フォーマットの区別を行う
- FDF:CANとCAN FDを区別するビット
- DLC:データ長を表す
-
Data Field : データを格納する領域
-
CRC Field : フレームの伝送誤りを判断する領域
-
ACK Field : 正常受信した確認の合図を表す領域
-
EOF(End Of Frame) : データフレームの終了通知する領域
拡張フォーマット
拡張フォーマットは、Arbitration FieldとControl Fieldが標準フォーマットと異なります。 拡張フォーマットは主にバスやトラックなどの大型車両のCAN通信で使用されることが多いフォーマットです。
-
Arbitration Field(調停フィールド) : フレームの優先順位を判断する領域
- Base ID:標準11bit分のIDを設定
- SRR:Substitute Remote Request Bitで1bitのレセシブ固定
- IDE:Identifier Extension Bitで1bitのレセシブ固定、標準フォーマット、拡張フォーマットの区別を行う
- ID Extension:18bit分の拡張IDを設定、Base IDと併せて計29bit分のIDを表すことが可能
- RTR:データフレームとリモートフレームの判別を行う
-
Control Field : FDF、r0、DLCで構成される領域
- FDF:CANとCAN FDを区別するビット
- r0 :予約領域
- DLC:データ長を表す
CANのエラー
各ノードはエラー状態というステータスを持っています。 エラー状態とはエラーアクティブ、エラーパッシブ、バスオフの3つの状態を指し、各ノードの持つ送信エラーカウンタ、受信エラーカウンタの値に応じて、いずれかのステータスに分類されます。 CANは多重通信のため、1つのバスを複数のノードが使用しています。そこに故障したノードがずっといるとエラーフレームを大量に送信することになり、他の正常なノードの通信を妨げることになります。 エラーを多発するノードは通信から隔離することで、他のノードの通信を妨げない(故障の封じ込め)仕組みになっています。
-
エラーアクティブ
エラーが起きていない正常な状態。エラーアクティブ状態のノードがエラーを検出したときはアクティブエラーフラグを出力します。 -
エラーパッシブ
エラーアクティブからエラーカウンタが一定の値を超えるとエラーパッシブに遷移します。
エラーパッシブ状態のノードがエラーを検出していても、他のエラーアクティブ状態のノードがエラーを検出していなければ、バス全体としてはエラーがなかったと判断されます。- エラーパッシブ状態のノードがエラーを検出したときはパッシブエラーフラグを出力します。
- エラーパッシブ状態のノードはデータの送信に一定の制限がかかる状態になります。
- エラーが少なくなれば、エラーアクティブに復帰できます。
-
バスオフ
エラーパッシブから更にエラーカウンタが増えていくとバスオフ状態になります。通信に参加出来ない状態を指します。
エラーフレーム
エラー条件を検出したノードは、エラーフラグを出力することでエラーを他のノードへ通知します。 エラーフラグはノードのエラー状態によりアクティブエラーフラグ、またはパッシブエラーフラグを出力します。 送信ノードは、エラーフレーム出力後にデータフレームまたはリモートフレームの再送を行います。
-
ビットエラー (検出ノード:送信/受信)
出力レベルとバス上のレベルを比較し、両者のレベルが不一致の場合に検出します。
ドミナント出力のスタッフビットは対象、送信時のアービトレーションフィールドおよびACKは対象外となります。 -
スタッフエラー (検出ノード:送信/受信)
ビットスタッフが行われているはずのフィールドの中で、同一レベルが6bit連続した時に検出するエラー -
CRCエラー (検出ノード:受信) 受信したメッセージから算出したCRCの結果と、受信されたCRCシーケンスの値が異なる場合に検出するエラー
-
フォームエラー (検出ノード:送信/受信)
固定フォーマットのビットフィールドに違反した場合に検出するエラー -
ACKエラー (検出ノード:送信)
送信ノードのACKスロットがレセシブレベルの場合に検出するエラー(ACKが返ってこなっかた場合に検出するエラー)
エラーフレームの出力タイミング
| エラーの種類 | 出力タイミング |
|---|---|
| ビットエラー スタッフエラー フォームエラー ACKエラー | エラーを検出した直後のビットからエラーフラグを出力 |
| CRCエラー | ACKデリミタの次のビットからエラーフラグを出力 |
CAN上位プロトコル
CANopen
- 産業用制御向け標準プロトコル
- オブジェクトディクショナリによる統一的なデータ管理
- 主に欧州のFA機器、ロボット、医療機器で採用
- Device Profile(DS301、DS402など)による機器標準化
SAE J1939
- 商用車・建設機械・農業機械向け標準
- 拡張ID(29bit)を使用したPGN(Parameter Group Number)体系
- 診断、エンジン制御、車体制御の標準化されたメッセージセット
- Transport Protocol(TP)による大容量データ転送対応
Classic CAN / CAN FD/ CAN XLの主な違い
Classic / CAN FD / CAN XL の主要な違いを俯瞰します。CANを拡張したCAN FD。次世代のCAN規格として、CAN XLが策定されています。
Classic CAN は制御主体の周期通信に向き、CAN FD は同じ配線でデータ相を高速化してログや更新を効率化します。CAN XL は更なる拡張ですが、現時点では Classic CAN と CAN FD が主に使用されています。
| 項目 | Classic CAN | CAN FD | CAN XL(参考) |
|---|---|---|---|
| 規格の中核 | ISO 11898-1(データリンク)/ -2(物理 HS) | ISO 11898-1/-2(FD拡張) | 進化系(XLフレーム定義、PHYはSIC XL等) |
| データ長 | 0~8 byte | 0~64 byte | ~2048 byte |
| ビットレート | ~1 Mbit/s | アービトレーション ~1 Mbit/s / ペイロード ~5~8 Mbit/s(実装依存) | ~10~20 Mbit/s級(実装・トポロジ依存) |
| リモートフレーム | あり | 非対応(RRS概念) | なし |
| 主な用途 | 制御・診断の基盤 | 大容量データ/診断の高速化 | 将来の高機能バス(検討・導入進行中) |
将来の展望
CAN XL
次世代のCAN規格として、CAN XLが策定されています。
- 最大データ長:2048バイト
- 転送速度:最大10Mbps
- Ethernetとの親和性向上
- 既存CANとの後方互換性
セキュリティ機能の統合
- SecOC(Secure Onboard Communication)の標準実装
- ハードウェアセキュリティモジュール(HSM)との連携
- メッセージ認証コード(MAC)の付加
CAN通信をさらに学ぶには
車載LAN入門講座 CAN通信編のご案内
オンライン学習プラットフォーム「Udemy」にて、CAN通信入門講座を開設しています。「1から学ぶCAN通信」として、CAN通信の成り立ちからISO11898-2を中心としたプロトコルを基礎から学習できます。
講座概要
- CANの成り立ちや通信の特徴
- ISO11898-2を中心としたCAN通信プロトコルについての解説
- CAN通信におけるルール、通信の処理方法
- CAN通信のメッセージ構成と使用方法
- CAN通信のエラーの仕組み
コースの内容
- はじめに
- 第1章 CAN(Controller Area Network)とは
- 第2章 CANフレームの構成
- 第3章 エラーの仕組み
車載LAN入門講座 CAN通信編の詳細は、以下のリンクからご覧ください。(Udemyサイトへリンクします)
車載LAN入門講座 CAN通信編サニー技研のCAN通信への取り組み
サニー技研のCANへの取り組みは1998年からスタートしており、自動車メーカー、サプライヤー向けに量産ECU用CAN通信ミドルウェア開発の他、CAN通信バスアナライザツールやCANコンフォーマンステスタ、CAN通信リプログソフトウェア等、CAN通信を使った様々な受託開発や製品開発を手がけています。
CAN通信の開発環境が揃うサニー技研のCAN製品はこちらからご覧ください。
CAN/CAN-FD通信開発実績はこちら関連情報
車載Ethernetは、高速通信や高信頼性を実現する自動車向けEthernet規格で、ADASや自動運転など次世代車載ネットワークを支えます。
CAN FDは、高速・大容量通信に対応したCANの拡張規格で、車載ネットワークの進化やセキュリティ強化に貢献しています。
CXPIは、日本発の車載通信規格で、低コストかつ高応答性を実現する次世代HMI向けネットワークです。
LINは、低コストで導入できる車載用シリアル通信規格で、主にCANのサブネットワークとして利用されています。