Controller Area Network(コントローラー・エリア・ネットワーク、CAN)は、ビークルバス規格の一種で、ホストコンピュータなしでマイクロコントローラやデバイスが相互に通信できるように設計されている。耐ノイズ性の強化が考慮された堅牢な規格である。メッセージベースのプロトコルであり、元々は、自動車内部の多重化電気配線用に設計されたものだが、機器の制御情報の転送用として普及しており、輸送用機械、工場、工作機械などのロボット分野においても利用されている。自動車においては、速度、エンジンの回転数、ブレーキの状態、故障診断の情報などの転送に使用されている。

データ転送速度は、40 mの通信路においては最高で1 Mbps程度、500 mの通信路においては最高で125 kbps程度。実際の運用においては、速いもので500 kbps、遅いもので83.3 kbpsとなっている。通信速度が上がるほど接続できる機器の数が減るので、高級車などでは速度の異なる複数の通信路をもつ。

なお、デジタルコンテンツなど大量データの転送には、MOSTまたはIDB-1394、車載Ethernetを用いる。パワーウィンドウなど転送速度をそれほど要求されないシステムにおいては、(LIN)と呼ばれるネットワーク通信を用いるのが一般的となっている。また、エアバッグやシートベルトなどの乗員保護装置(Supplemental Restraint System)には、低速で信頼性を高めたSafe-by-Wireという規格が策定されている。しかし、CANを使用しているシステムもあり、はっきりとした使い分けは定着していない。

歴史 CANの開発は、1983年にドイツのボッシュ社で開始された。このプロトコルは、1986年にデトロイトで開催されたSociety of Automotive Engineers(SAE)の会議で公式に発表された。インテルとフィリップスが製造した最初のCANコントローラチップは、1987年に発売された

ボッシュ社はCAN仕様のバージョンをいくつか発行し、1991年にCAN 2.0を発行した。この仕様には2つの部分がある。パートAは11ビットの識別子を持つ標準フォーマット用であり、パートBは29ビットの識別子を持つ拡張フォーマット用である。11ビットの識別子を使用するCANデバイスはCAN 2.0Aと呼ばれ、29ビットの識別子を使用するCANデバイスはCAN 2.0Bと呼ばれる。これらの規格は、ボッシュ社から他の仕様やホワイトペーパーとともに自由に入手できるBosch Semiconductor CAN Literature。

1993年、国際標準化機構(ISO)はCAN規格ISO 11898を発表した。この規格は後に、データリンク層を規定するISO 11898-1と、高速CAN用のCAN物理層を規定するISO 11898-2の2部に再構成された。後に、低速フォールトトレラントCAN物理層を規定するISO 11898-3が発表された。物理層規格であるISO 11898-2とISO 11898-3はボッシュ社によるCAN 2.0仕様の一部ではない。これらの規格はISOから購入することができる。

ボッシュ社はCAN規格の拡張に積極的に取り組んでいる。2012年、ボッシュ社はCAN FD(CAN with Flexible Data-Rate) 1.0を発表した。この仕様では、アービトレーションが決定された後、より高速のビットレートに切り替えるだけでなく、異なるデータ長を可能にする異なるフレームフォーマットを使用する。CAN FDは既存のCAN 2.0ネットワークと互換性があり、新しいCAN FDデバイスは既存のCANデバイスと同じネットワーク上に共存できる。ただし、既存CANコントローラに接続するCANトランシーバを全てCAN FDパッシブ用のものに変更する必要があるCAN FDパッシブ用のCANトランシーバは、CAN FDフレーム受信時に通信を遮断することによりCAN FDの通信を邪魔しない動作をする。

CANは、自動車の自己診断機能の標準であるOBD2で使用される5つのプロトコルのうちの1つである。OBD2規格は、1996年以降、米国で販売される全て自動車・軽トラックに必須であり、OBD2と等価のEOBD規格は、2001年以降の欧州連合で販売される全てのガソリン車および2004年以降の全てのディーゼル車に対して義務付けられているBuilding Adapter for Vehicle On-board Diagnostic, obddiag.net, accessed 2009-09-09。

応用

自動車 現代の自動車には、様々なサブシステム用に約70個もの電子制御ユニット(ECU)が搭載されているComparison of Event-Triggered and Time-Triggered Concepts with Regard to Distributed Control Systems A. Albert, Robert Bosch GmbH Embedded World, 2004, Nürnberg。通常、最大のプロセッサはエンジンコントロールユニットである。その他に、トランスミッション、エアバッグ、アンチロック・ブレーキ・システム(ABS)、クルーズコントロール、パワーステアリング、オーディオシステム、パワーウィンドウ、ドア、ミラー調整、ハイブリッドカー・電気自動車用のバッテリーおよび充電システムなどに使用される。これらのうちのいくつかは独立したサブシステムを形成するが、他のサブシステムとの通信は不可欠である。サブシステムは、アクチュエータを制御したり、センサからのフィードバックを受け取ったりする必要がある。この要求を満たすためにCANが考案された。

CANの重要な利点の1つは、異なる車両システム間の相互接続により、ソフトウェアだけで幅広い安全性・経済性・利便性を実現できることである。このような機能を従来の自動車電装によりハードの配線により実現しようとすると、コストと複雑さが増大する。例として、以下の事柄が挙げられる。

アイドリングストップ : CANバスを介して、車両周辺からの様々なセンサ入力(速度センサ、ステアリング角度、空調オン/オフ、エンジン温度)を照合し、エンジンを停止することで燃費と排気を改善できるかどうかを判断する。 : ヒルホールド機能は、車の傾斜センサ(盗難警報器でも使用される)と道路速度センサ(ABS、エンジン制御、トラクション制御でも使用される)をCANバス経由で入力し、車が坂道で停止しているかを判断する。同様に、CANバスから供給されるシートベルトセンサからの入力(エアバッグ制御の一部)により、シートベルトが締められているかどうかを判断し、車が動き出すとパーキングブレーキが自動的に解除される。 駐車支援システム : 運転者がギアを後退に入れると、トランスミッションコントロールユニットはCANバスを介して信号を送信し、駐車センサシステムとドア制御モジュールを作動させる。ドア制御モジュールは助手席ドアミラーを傾けて、縁石の位置が見えるようにする。また、CANバスは降雨センサからの入力を受けて、後退時にリアガラスのワイパーを動かす。 車線逸脱防止支援/衝突回避システム : 駐車センサからの入力はCANバスを通して車線逸脱警報などの運転支援システムに外部近接データを送る。最近では、これらの信号がCANバスを通して能動的衝突回避システムにおけるブレーキ・バイ・ワイヤを作動させる。 自動ブレーキ拭き取り:降雨センサ(主に自動フロントガラス用ワイパーで使用 )からCANバスを介してABSモジュールに入力され、ブレーキロータの水分を取る。いくつかのアウディとBMWの高級モデルにはこの機能が組み込まれている。

近年、空調やなどのデータ伝送速度や信頼性があまり重要ではないサブシステムに対してCANを補完するために、(LIN)バス規格が導入された。

その他 2009年からロードバイク用のシマノDI2電子ギアシフトシステムでCANバスプロトコルが使用されている。また、直接駆動モーターのAnsmannおよびシステムでも使用されている。 CANバスは、一部のCANコントローラやプロセッサのコストが低いため、一般的な自動化環境でとしても使用される。 NISMOなどのメーカーは、ゲームのGPSデータロガー機能を使用してビデオゲームグランツーリスモ6で実際のレーシングラップを再現するためにCANバスデータを使用することを目指している。 ジョンズ・ホプキンズ大学のModular Prosthetic Limb(MPL)は、ローカルCANバスを使用して、人工腕のサーボとマイクロコントローラ間の通信を容易にしようとしている。

アーキテクチャ CANは、ノードとも呼ばれる電子制御ユニット(ECU)を接続するためのマルチマスタシリアルバス規格である。通信するには、CANネットワーク上に2つ以上のノードが必要となる。ノードの複雑さは、単純なI/Oデバイスから、CANインターフェースとソフトウェアを備えた組み込みコンピュータまでさまざまである。ノードは、標準的なコンピュータがUSBやイーサネットポートを介してCANネットワーク上のデバイスに通信することを可能にするゲートウェイであっても良い。

全てのノードは、2線式バスを介して互いに接続されている。通信線は、公称120 Ωのツイストペアケーブルである。信号は、2本の通信線の電圧の差動によって送信される(平衡接続)。双方の線にいくらかの電圧が加わっても電圧の差には大きな変化がないので、ノイズに強いという性質がある。また低速CANの場合、仮に通信線2本の内の1本が途切れた場合でも、耐ノイズ性は下がるが通信は可能である。

ISO 11898-2は高速CANとも呼ばれ、両端が120 Ωの抵抗で終端されたリニアバスを使用する。

ドミナント(dominant, 0)を送信するときには、CANハイワイヤを5 Vの方に、ローワイヤを0 Vの方に駆動し、リセッシブ(recessive, 1)を送信するときはどちらの通信線も駆動しない。ドミナントの差動電圧は公称2 Vである。終端抵抗は2本の通信線を受動的に0 Vの公称差動電圧に戻す。ドミナントのコモンモード電圧はコモンの1.5-3.5 Vの間でなければならず、リセッシブのコモンモード電圧はコモンの+/- 12である。

ISO 11898-3は低速CANまたはフォールトトレラントCANとも呼ばれ、リニアバス、スターバス、またはリニアバスで接続された複数のスターバスを使用し、各ノードが全体終端抵抗の一部で終端される。全体終端抵抗は100 Ω程度(ただし100 Ω以上)でなければならない。

ISO 11898-3のシグナリングは、ドミナント(0)を送信するときにCANハイワイヤを5 Vの方に、CANローワイヤを0 Vの方に駆動し、リセッシブ(1)を送信するときはどちらの通信線も駆動しない。ドミナントの差動電圧は2.3 V(5 V Vcc)より大きくなければならず、リセッシブの差動電圧は0.6 V未満でなければならない。終端抵抗は、CANのローワイヤをRTH(最小4.7 V(Vcc - 0.3 V(Vccは公称5 V))に、CANハイワイヤをRTL(最大0.3 V)に受動的に戻す。どちらのワイヤも-27-40 Vを損傷することなく処理できなければならない。

高速・低速両方のCANで、CANワイヤが能動的に駆動されているため、リセッシブからドミナントへの遷移が発生すると、遷移の速度が速くなる。ドミナントからリセッシブへの遷移の速度は、主にCANネットワークの長さと使用する通信線の容量に依存する。

高速CANは、1つのバスが使用環境の端から端まで走る自動車や産業用アプリケーションでよく使用される。低速CANは、ノードのグループを一緒に接続する必要がある場合によく使用される。

ISO仕様では、バスを最小コモンモードバス電圧内に維持する必要があるが、この範囲内でバスを保持する方法は定義していない。

CANバスは終端される必要がある。終端抵抗は、反射を抑制し、バスをレセッシブまたはアイドル状態に戻すために必要である。

高速CANはリニアバスの両端で120 Ωの抵抗を使用する。低速CANは各ノードで抵抗を使用する。ISO11783 a Standardized Tractor – Implement Interfaceに定義されている終端バイアス回路のような他のタイプの終端が使用される場合もある。

終端バイアス回路は、4線式ケーブル上のCANシグナリングに加えて、電力と接地を提供する。これにより、各バスセグメントの両端で自動バイアスと終端が自動的に行われる。ISO 11783ネットワークは、ホットプラグインとバスセグメントとECUの取り外し用に設計されている。

各ノードには以下のものが必要である。 CPU、マイクロプロセッサ、またはホストプロセッサ ホストプロセッサは、受信したメッセージが何を意味し、どのメッセージを送信するかを決定する。 センサ、アクチュエータ、制御デバイスをホストプロセッサに接続することができる。 CANコントローラ(通常はマイクロコントローラの一部) 受信: CANコントローラは、メッセージ全体が利用可能になるまで、バスから受け取ったシリアルビットを格納する。これは、ホストプロセッサによって(通常は割り込みをトリガするCANコントローラによって)フェッチされる。 送信: ホストプロセッサは送信メッセージをCANコントローラに送信し、CANコントローラはバスが空いているときにシリアルにビットを送信する。 トランシーバー(ISO 11898-2/3 媒体アクセスユニット(MAU)規格で定義される) 受信: ワイヤーハーネスから受け取った差動電圧を、CANコントローラが使用するデジタル信号に変換する。通常、CANコントローラを保護する保護回路を備えている。 送信: CANコントローラから送られたデジタル信号を差動電圧に変換し、ワイヤーハーネスに流す。

各ノードはメッセージを送受信できるが、複数のノードが同時に送信することはできない。メッセージまたはフレームは、主に、メッセージの優先度を表すID(識別子)と最大8バイトのデータセクションで構成される。CRC、確認応答スロット(ACK)その他のオーバーヘッドもメッセージの一部である。改良されたCAN FDでは、データセクションの長さをフレームあたり最大64バイトまで拡張している。このメッセージは、NRZ(non-return-to-zero)フォーマットを使用してシリアルにバスに送信され、すべてのノードによって受信される。

CANネットワークに接続されるデバイスは、センサ、アクチュエータ、その他の制御デバイスである。これらのデバイスは、ホストプロセッサ、CANコントローラ、CANトランシーバを介してバスに接続されている。

データ転送 CANデータ伝送では、競合解消に無損失ビット単位アービトレーション方式が採用されている。この方式では、CANネットワーク上の全てのビットを同時にサンプリングするために、CANネットワーク上の全てのノードを同期させる必要がある。これがCAN同期と呼ばれる理由である。ただし、「同期」という用語は、データが非同期フォーマットによってクロック信号なしで伝送されるため、不正確である。

CAN仕様では、「ドミナント」(優性)ビットと「リセッシブ」(劣性)ビットという用語が使用されている。これは、ドミナントが論理0(トランスミッタによって能動的に駆動される)、リセッシブが論理1(抵抗によって受動的に戻される)であるためである。アイドル状態はリセッシブレベル(論理1)で表される。1つのノードがドミナントビットを送信し、別のノードがリセッシブビットを送信した場合、衝突が起こり、ドミナントビットの方が「勝つ」。これは、より高い優先順位のメッセージに遅延がないことを意味し、より低い優先順位のメッセージを送信するノードは、ドミナントメッセージの終了後のビットクロック後に自動的に再送信しようと試みる。これにより、CANはリアルタイムの優先順位付けされた通信システムとして非常に適している。

論理0と論理1の正確な電圧は使用する物理層に依存するが、CANの基本原理では、各ノードが送信ノード自体を含むCANネットワーク上の全てのデータを受信する必要がある。論理1が全ての送信ノードによって同時に送信される場合、論理1は、送信ノードおよび受信ノードの両方を含む全てのノードによって観測される。論理0が全ての送信ノードによって同時に送信される場合、全てのノードで論理0が観測される。論理0が1つ以上のノードによって送信され、論理1が1つ以上のノードによって送信されている場合、論理1を送信するノードを含む全てのノードで論理0が観測される。論理1を送信したノードは、論理0を観測することで、競合が存在し、自身の送信を終了すべきであることを認識する。このプロセスを使用することによって、別のノードが論理0を送信するときに、論理1を送信するノードは、中断するか、またはアービトレーション(調停)を失う。アービトレーションを失ったノードは、後で送信するためにそのメッセージを再キューに入れ、CANフレームビットストリームは、1つのノードのみが送信されるまでエラーなしで継続する。これは、最初に1を送信したノードがアービトレーションを失うことを意味する。CANフレームの開始時に11ビット(CAN 2.0Bでは29ビット)の識別子が送信されるため、識別子の最も小さいノードがフレームの先頭に0を送信し、それがアービトレーションまたは最優先権を有することになる。

例えば、ノード識別子が11ビットのCANネットワークに、ノード識別子が15(二進数表現 00000001111)、16(二進数表現 00000010000)の2つのノードが接続されているとする。これらの2つのノードが同時に送信した場合、それぞれは最初に開始ビットを送信し、次にアービトレーションの決定が行わないままノード識別子の最初の6つのゼロを送信する。

開始ビット 識別子ビット フレームの残り109876543210 ノード 15 0 0 0 0 0 0 0 0 1 1 1 1 ノード 16 0 0 0 0 0 0 0 1 送信停止 CANデータ 0 0 0 0 0 0 0 0 1 1 1 1

第7ビットでは、識別子が16のノードは1(リセッシブ)を送信し、識別子が15のノードは0(ドミナント)を送信する。これが起こると、識別子が16のノードは、1を送信したのに0が観測されたことから、衝突があり自身がアービトレーションを失ったことを認識する。識別子が16のノードは送信を停止し、識別子が15のノードはデータの損失なしに送信を継続できる。最も小さい識別子を持つノードは、常にアービトレーションに勝つため、最も高い優先度を持つ。

ネットワーク長が40 m未満の場合、最大1 Mbit/sのビットレートが可能である。ビットレートを下げれば、ネットワーク距離を長くすることができる(例えば、125 kbit/sで500 m)。改良されたCAN FD規格では、アービトレーション後のビットレートを増加させることができ、アービトレーションビットレートの最大8倍の倍率でデータセクションの速度を上げることができる。

ID割り当て メッセージIDは、1つのCANバス上で一意でなければならない。そうしないと、2つのノードがアービトレーションフィールド(ID)の終わりを超えて送信を続け、エラーを引き起こす。

1990年代初めには、メッセージIDの選択は、データのタイプと送信ノードの識別に基づいて単純に行われていた。しかし、IDがメッセージ優先度としても使用されるため、リアルタイムのパフォーマンスが低下する。これらのシナリオでは、全てのメッセージが期限を過ぎないようにするために、CANバス使用率を通常30%と低くする必要があった。しかし、メッセージのデッドラインに基づいてIDが決定され、数値IDが低くメッセージの優先度が高い場合には、通常、メッセージのデッドラインを逃してしまう前に70-80%のバス使用率を達成することができる。

ビットタイミング CANネットワーク上の全てのノードは、同じ公称ビットレートで動作する必要があるが、ノイズ、位相シフト、オシレータ公差、オシレータドリフトなどにより、実際のビットレートが公称ビットレートと同じでない可能性があるUnderstanding Microchip’s CAN Module Bit Timing 。別のクロック信号が使用されないので、ノードを同期させる手段が必要である。アービトレーション中のノードは、自身の送信データと他のノードの送信データの両方を同時に観測することができなければならないため、アービトレーション中には同期が重要である。同期は、ノード間の発振器タイミングの変動によってエラーが発生しないようにするためにも重要である。

同期は、バスアイドル期間(開始ビット)の後、最初のリセッシブからドミナントへの遷移時のハード同期から開始される。再同期は、フレーム中の全てのリセッシブからドミナントへの遷移時に行われる。CANコントローラは、公称ビット時間の倍数で遷移が発生することを期待している。コントローラが期待する正確な時間に遷移が発生しない場合、コントローラはそれに応じて公称ビット時間を調整する。

調整は、各ビットをクアンタ(quanta、量子)と呼ばれる複数のタイムスライスに分割し、ビット内の4つのセグメント(同期、伝播、位相セグメント1、位相セグメント2)のそれぞれにいくつかのクアンタを割り当てることによって達成される。

ビットによって分けられるクアンタの数は、コントローラによって変えることができ、各セグメントに割り当てられるクアンタの数は、ビットレートおよびネットワーク状態に応じて変えることができる。

コントローラが期待するよりも前後に遷移が起こった場合、コントローラが時間差を計算し、この時間までに位相セグメント1を長くするか、位相セグメント2を短くする。これにより、受信機と送信機のタイミングを効果的に調整して同期させることができる。この再同期プロセスは、送信機と受信機が同期していることを確実にするために、全てのリセッシブからドミナントへの遷移において連続的に行われる。継続的な再同期化は、ノイズによって引き起こされるエラーを低減し、アービトレーションを失ったノードに同期された受信ノードが、アービトレーションを獲得したノードと再同期することを可能にする。

レイヤ CANプロトコルは、多くのネットワークプロトコルと同様に、以下の抽象化レイヤに分解できる。

アプリケーション層

オブジェクト層 メッセージフィルタリング メッセージと状態のハンドリング

トランスファー層 CAN規格のほとんどはトランスファー層に適用される。トランスファー層は、物理層からメッセージを受信し、それらのメッセージをオブジェクト層に送信する。トランスファー層は、ビットタイミングと同期、メッセージフレーミング、アービトレーション、肯定応答、エラー検出とシグナリング、障害隔離を担当する。 障害隔離 エラー検出 メッセージの検証 肯定応答 アービトレーション メッセージフレーミング 転送レートとタイミング 情報ルーティング

物理層 CANバス(ISO 11898-1:2003)は、元々、物理層の抽象的な要件のみを持つリンク層プロトコルを指定していた。例えば、ドミナント状態とリセッシブ状態を使用してビットレベルでマルチアクセスの媒体を使用すると宣言した。物理層の電気的側面(電圧、電流、導体の数)は、現在広く受け入れられているISO 11898-2:2003に規定されている。しかし、物理層の機械的な側面(コネクタのタイプと数、色、ラベル、ピン配列)はまだ形式的に特定されていない。結果として、自動車用ECUは通常、さまざまな種類のケーブルを備えたカスタムコネクタを備えており、そのうち2つはCANバスラインである。それにもかかわらず、機械的実装のためのいくつかの事実上の標準が出現しており、最も一般的なものは、以下のピン配置を有する9ピンDサブタイプのオスコネクタである。 ピン2: CAN-Low(CAN−) ピン3: GND(Ground) ピン7: CAN-High(CAN+) ピン9: CAN V+(Power)

この事実上の機械的規格は、オスとメスの両方の9ピンDサブコネクタをノード内で並列に相互に電気的に配線したノードで実施することができる。バス電源はノードのオスコネクタに供給され、バスはノードのメスコネクタから電力を引き出す。これは、電源がメスコネクタで終端されるという電気工学的取り決めに従っている。この規格の採用により、2つのバスワイヤセットを各ノードの1つのDコネクタに接続するカスタムスプリッタを製作する必要がなくなる。ノード外の導体を接合する非標準(カスタム)ワイヤーハーネス(スプリッター)は、バスの信頼性を低下させ、ケーブルの互換性をなくし、配線ハーネスの互換性を低下させ、コストを増加させる。

完全な物理層仕様(電気的・機械的)がないため、CANバス仕様は物理的な実装の制約と複雑さから解放された。しかし、CANバスの実装は、機械的な非互換性のために相互運用性の問題にさらされていた。相互運用性を向上させるために、自動車メーカーの多くは、伝送路上の寄生容量の要件と組み合わせて許容されるCANトランシーバのセットを記述する仕様を作成している。許容される寄生容量には、ESD保護だけでなく、コンデンサも含まれる(ISO 7637-3に対するESD)。寄生容量に加えて、12 Vと24 Vのシステムは、伝送路の最大電圧に関して同じ要件を持っていない。事実、ジャンプスタートイベントの間、小型乗用車の伝送路は24Vまで上昇し、トラックでは36 Vまで上昇する可能性がある。新しい解決法が市場に出ており、CANとCAN FD(を参照)に同じ部品を使用できるようになった。

ISO 11898-2:2003の耐ノイズ性は、バスの両端の低値抵抗(120 Ω)でバスの差動インピーダンスを低レベルに維持することによって達成される。しかし、休止状態になると、CANなどの低インピーダンスバスは、他の電圧ベースの信号バスより多くの電流および電力を消費する。CANバスシステムでは、一方の信号ラインの電流が他方の信号の反対方向の電流によって正確に平衡される平衡接続により、受信機に対して独立した安定した0 Vの参照を提供する。ベストプラクティスでは、自動車内部のノイズの多いRF環境でRF放射を最小限に抑え、干渉感受性を低減するために、CANバスの平衡接続信号をシールドケーブルのツイストペアケーブルで伝送することが決定されている。

ISO 11898-2は、ノード間の高い電圧結合を維持するために、バスに沿って0 Vレールを走らせることにより、送信機と受信機の間のコモンモード電圧に対する耐性を提供する。また、上述の事実上の機械的構成では、各トランシーバノードに電力を分配するための電源レールが設けられている。この設計は、全てのトランシーバに共通の電源を提供する。バスによって印加される実際の電圧およびそれに適用されるノードは、アプリケーション固有であり、正式には指定されていない。一般的な実際のノード設計は、各ノードに、ノードホストから光学的に絶縁されたトランシーバを提供し、バスによって提供されるユニバーサル電源レールからのトランシーバに対して5 Vの線形に調整された電源電圧を導出する。これにより、通常、多くのノードタイプ間の相互運用を可能にするのに十分な電源レールの動作マージンが可能になる。このようなネットワーク上の電源電圧の標準値は7-30 Vである。しかし、正式な規格がないということは、システム設計者が電源レールの互換性の責を負うことを意味する。