CAN(キャン)とは | 意味や読み方など丁寧でわかりやすい用語解説
CAN(キャン)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
キャン (キャン)
英語表記
CAN (キャン)
用語解説
CANとは、Control Area Networkの略で、主に自動車や産業機器において、複数の電子制御ユニット(ECU)間で効率的かつ信頼性の高いデータ通信を行うためのシリアル通信プロトコルである。この技術は、ドイツのBosch社が1980年代に開発し、自動車の電子化の進展とともに広く普及した。システムエンジニアを目指す初心者にとって、組み込みシステムやIoTの分野で頻繁に遭遇する重要な技術の一つと言える。
CANが開発された背景には、自動車の電子制御システムの複雑化があった。1970年代から80年代にかけて、エンジン制御、アンチロックブレーキシステム(ABS)、エアバッグなどの電子システムが個別に開発され、それぞれが独立したセンサーやアクチュエーターを持ち、多数のケーブルで接続されていた。この従来のポイントツーポイント配線方式は、システムが追加されるたびに配線量が増大し、重量増加、コスト上昇、故障箇所の特定困難といった問題を引き起こした。また、異なるシステム間で情報共有が必要な場合も、個別に配線を引く必要があり、効率が悪かった。このような課題を解決するために、共通の通信バスを介して複数のECUが協調動作できるCANのようなネットワーク技術が求められたのである。
CANの基本的な仕組みは、バス型のトポロジーを採用している点にある。これは、一本の共通の通信線(CANバス)に複数のECUが並列に接続される方式である。各ECUは独立してメッセージを送受信できるノードとして機能し、特定のマスターを持たないマルチマスタ通信が可能である。CANバスは、差動信号を用いる2本のツイストペア線(CAN_HとCAN_L)で構成されており、これによりノイズ耐性が高く、電磁ノイズが多い自動車内のような環境でも安定した通信を実現する。通信速度は、自動車用では一般的に125kbpsから1Mbpsの範囲で設定されることが多い。
CAN通信は、メッセージ指向のプロトコルであり、各メッセージは「識別子(ID)」と呼ばれる一意の番号を持つ。このIDは、メッセージの内容を示すだけでなく、バス上でのメッセージの優先度も決定する重要な役割を果たす。IDの値が小さいメッセージほど、高い優先度を持つ。データフレームの構造は、スタートオブフレーム(SOF)、識別子フィールド、データ長コード(DLC)、データフィールド、巡回冗長検査(CRC)、アクノリッジ(ACK)、エンドオブフレーム(EOF)などの要素で構成される。データフィールドには最大8バイトのデータを格納できる。
複数のECUが同時にバスへメッセージを送信しようとした場合、CANプロトコルは「非破壊的ビット調停」という優れたメカニズムによってバスの競合を解決する。これは、各ECUが同時にIDのビットをバスに出力し、バスの論理状態を監視しながら送信を続ける方式である。CANバスは論理的に優勢な状態と劣勢な状態を持つ。各ECUは、自分が送信したビットとバス上のビットが一致しない場合、すなわち自分が優勢ビット(論理0)を送ったのにバス上が劣勢ビット(論理1)になった場合、より優先度の高いメッセージが送信されていると判断し、自身の送信を一時停止する。これにより、最も優先度の高いIDを持つメッセージがバスアクセス権を獲得し、他のECUはメッセージ送信完了後に再試行する。この方法の利点は、優先度の高いメッセージが遅延なく送信されると同時に、優先度の低いメッセージも破棄されずに待機することで、バスの効率が損なわれないことにある。
CANは、高い信頼性が求められるアプリケーションのために、強力なエラー検出および故障分離機能を備えている。ビットエラー、スタッフィングエラー、CRCエラー、フォームエラー、アクノリッジエラーなど、様々な種類のエラーを検出できる。たとえば、送信ECUは自身の送信ビットとバス上のビットを比較してビットエラーを検出したり、受信ECUはCRCを用いてデータ内容の誤りをチェックしたりする。さらに、エラーが発生した場合、エラーフレームを送信して他のECUにエラーの発生を通知する。各ECUは、自身の送受信エラーの回数を内部のエラーカウンタで管理しており、エラーが頻繁に発生すると、警告状態(Error Passive)、最終的にはバスから完全に切り離されるバスオフ状態へと移行する。これにより、故障したECUがネットワーク全体に悪影響を及ぼすのを防ぎ、システム全体の信頼性を維持できる。
CANの主な利点としては、まず省配線が挙げられる。多数のECUを2本の線で接続できるため、ケーブルの重量とコストを削減できる。次に、メッセージIDによる優先度制御と非破壊的ビット調停により、リアルタイム性が高く、重要なメッセージがタイムリーに伝送される。また、前述の強力なエラー検出と故障分離機能によって、高い信頼性と耐障害性を持つ。さらに、新しいECUの追加や削除が比較的容易であるため、システムの拡張性にも優れている。
CANは、その信頼性とリアルタイム性から、自動車産業においてデファクトスタンダード(事実上の標準)となった。エンジン制御、トランスミッション制御、シャシー制御(ABS、ESC)、エアバッグ、パワーステアリング、車体電装(ドア、窓)、インストルメントパネル、カーナビゲーションシステムなど、自動車のほぼすべての電子システムで利用されている。自動車以外の分野でも、FA(ファクトリーオートメーション)における産業用ロボットや工作機械、医療機器、鉄道、航空機、ビルディングオートメーションなど、幅広い組み込みシステムで利用されている。
近年では、データ量の増加や通信速度への要求の高まりから、CANプロトコルの拡張版である「CAN FD(CAN Flexible Data-rate)」が登場した。CAN FDは、データレートを可変にし、データフィールド長を最大64バイトまで拡張することで、従来のCANよりも高速かつ大容量のデータ通信を可能にする。また、CANプロトコル自体はデータリンク層以下の仕様を定義するが、その上位には特定のアプリケーション要件に合わせた「CANopen」や「J1939」といったプロトコルが存在する。これらは、CANバス上でのデータの表現方法やネットワーク管理機能などを定義し、異なるメーカーの機器間での相互運用性を実現している。システムエンジニアにとって、CANは組み込みシステムの基盤技術として理解しておくべき非常に重要なプロトコルである。