Controller Area Network

Controller Area Network (CAN) は、ビークルバス規格の一種で、ホストコンピュータなしでマイクロコントローラやデバイスが相互に通信できるように設計されている。耐ノイズ性の強化が考慮された堅牢な規格である。メッセージベースのプロトコルであり、元々は、自動車内部の多重化電気配線用に設計されたものだが、機器の制御情報の転送用として普及しており、輸送用機械、工場、工作機械などのロボット分野においても利用されている。自動車においては、速度、エンジンの回転数、ブレーキの状態、故障診断の情報などの転送に使用されている。 データ転送速度は、40mの通信路においては最高で1Mbps程度、500mの通信路においては最高で125kbps程度。実際の運用においては、速いもので500kbps、遅いもので83.3kbpsとなっている。通信速度が上がるほど接続できる機器の数が減るので、高級車などでは速度の異なる複数の通信路をもつ。 なお、デジタルコンテンツなど大量データの転送には、MOSTまたはIDB-1394、車載Ethernetを用いる。パワーウィンドウなど転送速度をそれほど要求されないシステムにおいては、Local Interconnect Network (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と呼ばれる。これらの規格は、ボッシュ社から他の仕様やホワイトペーパーとともに自由に入手できる。 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は、自動車の自己診断機能の標準であるOBD2で使用される5つのプロトコルのうちの1つである。OBD2規格は、1996年以降、米国で販売される全て自動車・軽トラックに必須であり、OBD2と等価のEOBD規格は、2001年以降の欧州連合で販売される全てのガソリン車および2004年以降の全てのディーゼル車に対して義務付けられている。 現代の自動車には、様々なサブシステム用に約70個もの電子制御ユニット(ECU)が搭載されている。通常、最大のプロセッサはエンジンコントロールユニットである。 その他に、トランスミッション、エアバッグ、アンチロック・ブレーキ・システム(ABS)、クルーズコントロール、パワーステアリング、オーディオシステム、パワーウィンドウ、ドア、ミラー調整、ハイブリッドカー・電気自動車用のバッテリーおよび充電システムなどに使用される。これらのうちのいくつかは独立したサブシステムを形成するが、他のサブシステムとの通信は不可欠である。サブシステムは、アクチュエータを制御したり、センサからのフィードバックを受け取ったりする必要がある。この要求を満たすためにCANが考案された。 CANの重要な利点の1つは、異なる車両システム間の相互接続により、ソフトウェアだけで幅広い安全性・経済性・利便性を実現できることである。このような機能を従来の自動車電装によりハードの配線により実現しようとすると、コストと複雑さが増大する。例として、以下の事柄が挙げられる。 アイドリングストップ : CANバスを介して、車両周辺からの様々なセンサ入力（速度センサ、ステアリング角度、空調オン/オフ、エンジン温度）を照合し、エンジンを停止することで燃費と排気を改善できるかどうかを判断する。 電動パーキングブレーキ（英語版） : ヒルホールド機能は、車の傾斜センサ（盗難警報器でも使用される）と道路速度センサ（ABS、エンジン制御、トラクション制御でも使用される）をCANバス経由で入力し、車が坂道で停止しているかを判断する。同様に、CANバスから供給されるシートベルトセンサからの入力（エアバッグ制御の一部）により、シートベルトが締められているかどうかを判断し、車が動き出すとパーキングブレーキが自動的に解除される。 駐車支援システム : 運転者がギアを後退に入れると、トランスミッションコントロールユニットはCANバスを介して信号を送信し、駐車センサシステムとドア制御モジュールを作動させる。ドア制御モジュールは助手席ドアミラーを傾けて、縁石の位置が見えるようにする。また、CANバスは降雨センサからの入力を受けて、後退時にリアガラスのワイパーを動かす。 車線逸脱防止支援/衝突回避システム : 駐車センサからの入力はCANバスを通して車線逸脱警報などの運転支援システムに外部近接データを送る。最近では、これらの信号がCANバスを通して能動的衝突回避システムにおけるブレーキ・バイ・ワイヤを作動させる。 自動ブレーキ拭き取り：降雨センサ（主に自動フロントガラス用ワイパーで使用 ）からCANバスを介してABSモジュールに入力され、ブレーキロータの水分を取る。いくつかのアウディとBMWの高級モデルにはこの機能が組み込まれている。 近年、空調やインフォテインメント（英語版）などのデータ伝送速度や信頼性があまり重要ではないサブシステムに対してCANを補完するために、Local Interconnect Network（英語版）(LIN)バス規格が導入された。 2009年からロードバイク用のシマノDI2電子ギアシフトシステムでCANバスプロトコルが使用されている。また、直接駆動モーターのAnsmannおよびBionX（英語版）システムでも使用されている。 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は各ノードで抵抗を使用する。ISO 11783（英語版）に定義されている終端バイアス回路のような他のタイプの終端が使用される場合もある。 終端バイアス回路は、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つのゼロを送信する。 第7ビットでは、識別子が16のノードは1（リセッシブ）を送信し、識別子が15のノードは0（ドミナント）を送信する。これが起こると、識別子が16のノードは、1を送信したのに0が観測されたことから、衝突があり自身がアービトレーションを失ったことを認識する。識別子が16のノードは送信を停止し、識別子が15のノードはデータの損失なしに送信を継続できる。最も小さい識別子を持つノードは、常にアービトレーションに勝つため、最も高い優先度を持つ。 ネットワーク長が40m未満の場合、 最大1 Mbit/sのビットレートが可能である。ビットレートを下げれば、ネットワーク距離を長くすることができる（例えば、125 kbit/sで500m）。改良されたCAN FD規格では、アービトレーション後のビットレートを増加させることができ、アービトレーションビットレートの最大8倍の倍率でデータセクションの速度を上げることができる。 メッセージIDは、1つのCANバス上で一意でなければならない。そうしないと、2つのノードがアービトレーションフィールド（ID）の終わりを超えて送信を続け、エラーを引き起こす。 1990年代初めには、メッセージIDの選択は、データのタイプと送信ノードの識別に基づいて単純に行われていた。しかし、IDがメッセージ優先度としても使用されるため、リアルタイムのパフォーマンスが低下する。これらのシナリオでは、全てのメッセージが期限を過ぎないようにするために、CANバス使用率を通常30%と低くする必要があった。しかし、メッセージのデッドラインに基づいてIDが決定され、数値IDが低くメッセージの優先度が高い場合には、通常、メッセージのデッドラインを逃してしまう前に70〜80%のバス使用率を達成することができる。 CANネットワーク上の全てのノードは、同じ公称ビットレートで動作する必要があるが、ノイズ、位相シフト、オシレータ公差、オシレータドリフトなどにより、実際のビットレートが公称ビットレートと同じでない可能性がある。別のクロック信号が使用されないので、ノードを同期させる手段が必要である。アービトレーション中のノードは、自身の送信データと他のノードの送信データの両方を同時に観測することができなければならないため、アービトレーション中には同期が重要である。同期は、ノード間の発振器タイミングの変動によってエラーが発生しないようにするためにも重要である。 同期は、バスアイドル期間（開始ビット）の後、最初のリセッシブからドミナントへの遷移時のハード同期から開始される。再同期は、フレーム中の全てのリセッシブからドミナントへの遷移時に行われる。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）。 寄生容量に加えて、12Vと24Vのシステムは、伝送路の最大電圧に関して同じ要件を持っていない。事実、ジャンプスタートイベントの間、小型乗用車の伝送路は24Vまで上昇し、トラックでは36Vまで上昇する可能性がある。新しい解決法が市場に出ており、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である。しかし、正式な規格がないということは、システム設計者が電源レールの互換性の責を負うことを意味する。 ISO 11898-2には、バスの両端に抵抗終端を備えたマルチドロップシングルエンド平衡接続構成で形成された電気的実装が記載されている。この構成では、ドミナント状態にするには、1つ以上の送信機がCAN-に0Vを供給するように切り替え、同時に、CAN+に+5 Vのバス電圧を供給するように切り替えることで、バスを終端する抵抗を通る電流経路を形成する。このように、終端抵抗は、高周波での波反射を制限するためだけでなく、信号システムの必須構成要素を形成する。 リセッシブ状態の間、信号線と抵抗器は両方のレールに対して高インピーダンス状態のままである。CAN +とCAN-の両方の電圧は、レール間の中間電圧に向かう（弱い）傾向がある。リセッシブ状態は、バス上の送信機のどれもドミナント状態をアサートしていないときにのみ、バス上に存在する。 ドミナント状態の間、信号線および抵抗器は、レールに対して低インピーダンス状態に遷移し、電流が抵抗器を通って流れる。CAN+の電圧は+5 Vになり、CAN-は0 Vになる。 信号状態にかかわらず、信号線は、バスの終端にある終端抵抗により、常に互いに低インピーダンス状態にある。 この信号方式は、差動ラインドライバ/レシーバを使用するRS-422/3、RS-485などの他の平衡線伝送技術とは大きく異なり、概念的な0 Vと交差する差動モード電圧に基づく信号方式を使用する。このようなシステム上の多重アクセスは、通常、3つの状態（アクティブハイ、アクティブロー、非アクティブ）をサポートするメディアに依存し、時間領域で処理される。CANバス上の複数のアクセスは、概念的には「有線AND」ネットワークに類似した2つの状態のみをサポートするシステムの電気的論理によって達成される。 CANネットワークは、標準フレームフォーマット（CAN 2.0AとCAN 2.0Bで規定）と拡張フレームフォーマット（CAN 2.0Bでのみ規定）の2つの異なるメッセージ（または「フレーム」）フォーマットで動作するように設定できる。2つの形式の唯一の違いは、CAN標準フレームが識別子の長さが11ビットであるのに対し、CAN拡張フレームが識別子の長さが29ビットであり、11ビットの識別子（ベース識別子）と18ビットの拡張（識別子拡張）を含むことである。CAN標準フレームフォーマットとCAN拡張フレームフォーマットとの区別は、IDEビットを使用することによって行われる。これは、11ビットフレームの場合はドミナント、29ビットフレームの場合はリセッシブとして送信される。拡張フレームフォーマットのメッセージに対応するCANコントローラは、CAN標準フレームフォーマットでもメッセージを送受信できる。全てのフレームは、フレーム送信の開始を示すフレーム開始(SOF: start-of-frame)ビットで始まる。 CANには4つのフレームタイプがある。 データフレーム: 通常のデータを送信するためのフレーム リモートフレーム: データフレームの送信先にフレームの送信を要求するフレーム エラーフレーム: 各種のエラーを他ノードに通知するためのフレーム オーバーロードフレーム: コントローラーが信号の処理が間に合わないときに「バッファの処理が追いつかずデータを受け取れませんでした」などの信号を送信するフレーム データフレームは、実際のデータを伝送するために使われる唯一のフレームである。これには、2つの形式がある。 標準フレームフォーマット: 識別子が11ビット 拡張フレームフォーマット: 識別子が29ビット CAN標準では、標準フレームフォーマットは必ず受け入れなければならず、拡張フレームフォーマットは受け入れなくても良いが、それに耐えなければならない。 標準フレームフォーマットは以下の通りである。CAN-LO信号のビット値が記述されている。