アカデミック 会社 イベント NI Developer Zone サポート ソリューション 製品とサービス お問い合わせ MyNI

コントローラエリアネットワーク(CAN)の概要


質問はこちら  0120-527196

CAN の歴史
コントローラエリアネットワーク(CAN)は、Bosch 社が1985年に車載ネットワーク用に開発したものです。それまで自動車メーカーは、ポイントツーポイント配線システムを使って車載電子装置間の接続を行っていました。しかし車両に使われる電子部品の数が増えるにつれ、重くて高価なワイヤハーネスがかさばるようになりました。そこで、専用の配線を車載ネットワークに変更することで、配線のコストの削減と、軽量化、簡素化が可能となったのです。CAN とは、ネットワークデバイス用のシリアルバスのことで、現在では車載ネットワークの標準となっています。自動車業界は積極的に CAN を採用し、1993年には ISO 11898 という国際規格として標準化されました。1994年以降、CANopen、DeviceNet など、CAN の上位プロトコルがいくつか標準化されています。自動車以外の市場でもそのようなプロトコルは幅広く採用され、現在では工業用通信の標準にもなっています。この技術資料では、車載ネットワークとしての CAN について説明します。

CAN のメリット
CAN は、複数の CAN デバイスが互いに通信するための低コストで耐久性の高いネットワークプロトコルです。CAN を使用すると、電子制御装置(ECU)に CAN インタフェースを1つ搭載するだけで、システム内の各デバイスのアナログ/デジタル入力が不要になります。それにより、車両本体のコストと重量が低減されます。ネットワーク上の各デバイスは、CAN コントローラチップを搭載しているため、伝送される全てのメッセージを見ることができます。メッセージが重要なものか、あるいはフィルタリングすべきものかは、各デバイスで判断できます。また、各メッセージには優先順位があるため、2つのノードが同時にメッセージを送信しようとした場合、優先順位の高い方が送信され、もう一方は送信が延期されます。


CAN アプリケーション
CAN は当初自動車用に開発されたものですので、車載電子ネットワークアプリケーションに最もよく使用されています。ただし、この15年ほどの間に、他の業界も CAN の信頼性やメリットを認識し、様々なアプリケーションに利用してきました。路面電車、地下鉄、軽便鉄道、長距離列車など、あらゆる鉄道アプリケーションに CAN が導入されています。そのような車両の中でも、ドアユニットの連結やブレーキコントローラ、乗客カウント装置など、複数のネットワークの様々なレベルで CAN が利用されています。また、飛行中の状態監視装置や、コックピット内の調査用 PC といった航空機アプリケーションにも CAN が使用されています。さらに、飛行中のデータ解析から燃料系、ポンプ、線形アクチュエータなどのエンジン制御システムまで、航空宇宙アプリケーションでも幅広く採用されています。

医療機器メーカーは、医療装置の組込みネットワークとして CAN を利用しています。病院によっては、CAN を使って手術室全体を管理しているところもあります。照明や手術台、カメラ、X線装置、患者用ベッドなどのコンポーネントを、CAN 通信により制御しています。エレベータやエスカレータには組込式 CAN ネットワークを使用し、病院では CANopen プロトコルを使ってパネル、コントローラ、ドア、ライトバリアなどの持ち上げ装置を互いに連結し、制御しています。CANopen は工業用アプリケーション以外にも使われており、その範囲は研究用装置、スポーツカメラ、望遠鏡、自動ドア、コーヒーメーカーにまで及びます。

CAN 物理層
CAN では、複数の物理層を使用できます。それらの物理層は、CAN ネットワークの電気レベル、信号スキーム、ケーブルインピーダンス、最大ボーレートなどにより分類した層です。最も一般的に広く使用されている物理層について、以下に説明します。

高速 CAN
高速 CAN は、最もよく使用される物理層です。高速 CAN ネットワークは2本のワイヤで実装され、最大 1 Mb/秒の転送レートでの通信が可能です。高速 CAN は、CAN C や ISO 11898-2 とも呼ばれています。一般的な高速 CAN デバイスには、アンチロックブレーキシステム、エンジン制御モジュール、排ガスシステムなどがあります。

低速/フォールトトレラント(故障診断)CAN ハードウェア
低速/フォールトトレラントCANインタフェースも2本のワイヤで実装され、最大125 kb/秒の転送速度でデバイスとの通信を行い、フォールトトレラント機能を備えたトランシーバが付いています。低速/フォールトトレラント CAN は、CAN B や ISO 11898-3 とも呼ばれています。自動車では、一般的に快適性を求めるための装置に低速/フォールトトレラントデバイスが用いられます。車両のドアを通るワイヤは、ドアの開閉による圧力にも耐えうるよう、低速/フォールトトレラントとなっています。また、ブレーキ灯などのように高度な安全性が求められる場合は、低速/フォールトトレラント CAN が適しています。

単線式 CAN ハードウェア
単線式 CAN インタフェースは、最大33.3 kb/秒(高速モードでは88.3 kb/秒)でデバイスと通信することができます。単線式 CAN は、SAE-J2411、CAN A、GMLAN とも呼ばれています。自動車に使用される一般的な単線式デバイスには、高い性能は求められません。一般的なアプリケーションとして、シートやミラー調整といった快適運転のための装置があります。

ソフトウェアで選択可能な CAN ハードウェア
ナショナルインスツルメンツの CAN ハードウェア製品を使用すると、CAN インタフェースをソフトウェアで選択/構成して、任意のオンボードトランシーバ(高速、低速/フォールトトレラント、単線式 CAN)を使用することができます。複数のトランシーバを搭載したハードウェアは、いくつかの通信規格を組み合わせて使う必要のあるアプリケーションに最適な製品です。また、ソフトウェアで構成可能な CAN ハードウェアを使用すれば、独自の外部 CAN トランシーバを選択することもできます。

CAN 用語集
CAN デバイスは、フレームと呼ばれるパケット単位で CAN ネットワーク上にデータを送信します。CAN フレームは、以下のセクションからなっています。
  • CAN フレーム ― アービトレーション ID、データバイト、ACK ビットなどを含む CAN 通信全体のこと。フレームは、メッセージとも呼ばれます。
  • SOF(Start Of Frame)ビット ― メッセージの始めをドミナント(論理0)ビットで示します。
  • アービトレーション ID ― メッセージを識別し、メッセージの優先順位を示します。フレームには、11ビットのアービトレーション ID を使用する「標準フレーム」と、29ビットアービトレーション ID を使用する「拡張フレーム」の2つのフォーマットがあります。
  • IDE(identifier extension)ビット ― 標準フレームと拡張フレームを区別します。
  • RTR(Remote Transmission Request)ビット ― リモートフレームとデータフレームを区別するのに使用します。ドミナント(論理0)RTR ビットは、データフレームを示します。リセッシブ(論理1)RTR ビットは、リモートフレームを示します。
  • DLC(データ長コード) ― データフィールドに含まれるバイト数を示します。
  • データフィールド ― 0~8バイトのデータが含まれます。
  • CRC(巡回冗長検査) ― 15ビットの巡回冗長検査コードとリセッシブデリミタビットが含まれます。CRC フィールドは、エラー検出に使用されます。
  • ACK(アクノレッジ)スロット ― メッセージを正しく受信した CAN コントローラは、メッセージの最後に ACK ビットを送信します。送信側のノードはバス上で ACK ビットの有無をチェックし、ACK が検出されなかった場合は再度送信を試みます。ナショナルインスツルメンツの Series 2 CAN インタフェースには、リスンオンリーモードの機能があります。そこで ACK ビットの送信が抑制されるため、バスの動作には影響を及ぼしません。
  • CAN チャンネル ― CAN フレームのデータフィールドに含まれる個々のデータ。CAN チャンネルは、信号とも呼ぶことができます。データフィールドには最大8バイトのデータを含めることができるため、1つの CAN フレームに0~64の個別のチャンネルを入れることが可能です(64チャンネルは全てバイナリ)。

下図では、1つの CAN フレームのデータフィールドに6つのチャンネルが含まれています。各チャンネルには、8ビットのデータが含まれています。

6バイトのデータフィールド


CAN データベースファイル
CAN データベースファイルとは、CAN チャンネルの定義のためのスケーリング情報が含まれたテキストファイルです。ナショナルインスツルメンツの CAN ソフトウェアは、ベクター社とナショナルインスツルメンツの両方の CAN データベースファイルを読み込むことができます。ベクターのファイルは、CANdb ファイルという名前で拡張子は *.dbc となっています。NI が作成する CAN データベースファイルは、ナショナルインスツルメンツ CAN データベースファイルという名前で、拡張子は *.ncd です。

CAN データベースでは、各チャンネルについて、工学単位への変換の定義をしています。以下のデータがデータベースに保存されます。
  • チャンネル名
  • 特定のメッセージ内のチャンネルの位置(開始ビット)とサイズ(ビット数)
  • バイトオーダー
  • データタイプ(符号付き、符号なし、IEEE 浮動少数)
  • スケーリングと単位文字列
  • 範囲
  • デフォルト値
  • コメント
CAN データベースファイルには、車両全体のチャンネルの定義を入力することもできます。各ネットワークには、それぞれ独自のデータベースファイルがあります。また、それらのデータベースファイルはベンダにより定義され、通常は機密扱いとなっています。

CAN 通信の仕組み
既に説明した通り、CAN はピアツーピアネットワークです。つまり、個々のノードによる CAN バス上のデータの読み取り/書き込みのタイミングを制御するマスタデバイスが存在しないということです。CAN ノードがデータ送信可能な状態になると、バスがビジーかどうかをチェックし、CAN フレームをネットワーク上に書き込みます。送信された CAN フレームには、送信側のノードあるいは受信側のノードのいずれかのアドレスが含まれていません。その代わりに、ネットワーク全体に固有のアービトレーション ID がフレームに付けられています。CAN ネットワーク上の全ノードが CAN フレームを受信し、そのフレームのアービトレーション ID によって、ネットワーク上の各 CAN ノードはそのフレームを受け取るかどうかを判断します。

複数のノードが CAN バスに同時にメッセージを送信しようとした場合、優先順位の最も高い(アービトレーション ID が最も低い)ノードが自動的にバスにアクセス可能となります。優先順位の低いノードは、バスが利用可能になるのを待ってから、再度送信を試みる必要があります。このようにして、CAN ネットワークを実装し、CAN ノード間の確度の高い通信を確実に行うことができます。

ナショナルインスツルメンツの各種 CAN ツール
ナショナルインスツルメンツでは、CAN アプリケーションを開発するための様々なハードウェア/ソフトウェアツールを提供しています。また、PCI、PXI、PCMCIA、NI CompactRIO など、多様なプラットフォームに対応した CAN インタフェースをご用意しています。PCI、PXI、PCMCIA 対応インタフェースでは、高速、低速/フォールトトレラント、単線式の物理層が利用できます。PCI/PXI 向けには、1つのデバイス上の各ポートで、各ボードに対し高速、低速/フォールトトレラント、単線式のトランシーバを搭載し、ソフトウェアで選択可能な CAN インタフェースをご用意しています。そのため、使用するモードをソフトウェアで選択することができます。

NI PCI-CAN/XS2
ソフトウェア選択可能な2ポート式 CAN インタフェース


さらに、各デバイスには NI-CAN ドライバソフトウェアが付属されています。このソフトウェアについては、以降で説明します。Measurement & Automation Explorer(NI-CAN ドライバとともにインストールされます)にも、CAN チャンネルテストパネル、CAN バスモニタ、CAN データベースエディタなど、さらに別の CAN ツールが搭載されています。

ナショナルインスツルメンツの ECU 計測/校正ツールキットを使用すると、LabVIEW、LabWindows/CVI、Microsoft C/C++ 開発環境を拡張して、電子制御装置(ECU)の設計/検証を行うための計測/校正アプリケーションの構築が可能となります。ECU 計測/校正ツールキットは、CAN 校正プロトコル(CCP)に基づいた使いやすい高レベル関数を各種搭載しており、ECU の開発やテストに携わる技術者はそれらの関数を使用して独自のカスタム計測/校正アプリケーションを作成することができます。詳しくは、下記リンクの ECU 計測/校正ツールキットに関する資料をご覧ください。

参考資料:
NI コントローラエリアネットワーク(CAN)インタフェース(PCI)
NI コントローラエリアネットワーク(CAN)インタフェース(PXI)
NI コントローラエリアネットワーク(CAN)インタフェース(PCMCIA)
NI ECU 計測/キャリブレーションツールキット

NI-CAN ソフトウェアドライバ
ナショナルインスツルメンツでは、全ての CAN インタフェースに NI-CAN ドライバソフトウェアを同梱し、弊社 Web サイトでも無料でダウンロード可能となっています。他の CAN インタフェースでは、ターンキーソフトウェアツールを購入しなければ、ボードの機能のほんの一部しか使用することができません。ただし、弊社のドライバを用いることで、ナショナルインスツルメンツの CAN ボードの機能は全て利用可能になりますので、お好きなプログラミング言語で独自のカスタムアプリケーションを開発することができます。NI-CAN ドライバには使いやすい高レベル関数が搭載されており、CAN アプリケーション全体を短時間で開発できるため、貴重な時間とコストを節約することができます。

NI-CAN ドライバソフトウェアでは、2つの API(アプリケーションプログラミングインタフェース)を利用できます。Frame API は、CAN プログラミング独自の API です。Frame API では、ローデータバイトを含む CAN フレームの送受信が可能です。それらのローデータのバイトを解析、スケールして、工学単位に変換する必要があります。Frame API を使用したプログラミングに関する詳細については、NI CAN ハードウェア/ソフトウェアマニュアル(英語)の「Using the Frame API」のセクションを参照してください(下記リンク)。

ナショナルインスツルメンツは、NI-CAN 2.0 ドライバソフトウェアで初めて Channel API をリリースしました。データベース(.dbc または .ncd)で指定されたチャンネル名を使って、CAN チャンネルの読み取りや書き込みが可能です。Channel API には、以下のようなメリットがあります。
  • 上位プログラミング
  • 使いやすい物理単位
  • CAN/データ集録を簡単に同期
  • ベクター社のデータベースファイルを利用可能
Channel API を使ったプログラミングに関する詳細については、NI-CAN Channel API の資料を参照してください。

参考資料:
ナショナルインスツルメンツの最新 CAN ソフトウェアをダウンロード
NI CAN Channel API
NI CAN ハードウェア/ソフトウェアマニュアル(英語)

関連リンク
コントローラエリアネットワーク(CAN) トップページ
CAN とアナログ信号を同期してデバイスを検証

お問い合わせ

E-mail: salesjapan@ni.com Tel: 0120-527196 Fax: 03-5472-2977