From Saturday, Nov 23rd 7:00 PM CST - Sunday, Nov 24th 7:45 AM CST, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

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

内容

CANとは

コントローラエリアネットワーク (CAN) バスは、インテリジェントデバイスのネットワーク化を目的とした、高度な整合性を備えたシリアルバスシステムです。CANのバスおよびデバイスは、自動車システムや工業用システムで一般的に使用されているコンポーネントです。CANインタフェースデバイスを使用して、CANネットワークと通信できるLabVIEWアプリケーションを作成できます。

CAN歴史

CANは、Bosch社が1985年に車載ネットワーク用に開発したものです。それまで自動車メーカーは、ポイントツーポイント配線システムを使って車載電子デバイス間の接続を行っていました。しかし車両に使われる電子部品の数が増えるにつれ、重くて高価なワイヤハーネスが場所を取るようになりました。そこで、専用配線を車載ネットワークに置き換えることで、配線のコストの削減と、軽量化、簡素化を実現しました。CANとは、インテリジェントデバイスのネットワーク化に対応する、高い整合性を持つシリアルバスシステムであり、現在では車載ネットワークの標準となっています。自動車業界は積極的にCANを導入し、1993年にはISO 11898という国際規格として標準化されました。1994年以降、CANopen、DeviceNetなど、CANの上位プロトコルがいくつか標準化されています。このような派生プロトコルは自動車以外の市場でも広く導入され、現在では工業用通信の標準にもなっています。このホワイトペーパーでは、車載ネットワークとしてのCANについて説明します。

CANメリット

軽量コストネットワーク

CANによって、複数のCANデバイスが相互に通信するための低コストで耐久性の高いネットワークが実現します。CANのメリットは、電子制御装置 (ECU) にCANインタフェースを1つ搭載するだけで済み、システム内の各デバイスに接続するアナログ配線やデジタル配線を用意する必要がなくなることです。これにより、車両全体のコストと重量が低減されます。 

ブロードキャスト通信

ネットワーク上の各デバイスがCANコントローラチップを搭載し、伝送されるすべてのメッセージを読み取ることができます。そのメッセージがそのデバイスに関連するものなのか、無視すべきものなのかを、各デバイスで判断できます。 このような構造から、CANネットワークに変更を加えても影響は最小限となります。 信号を送信しないノードは、ネットワークに変更を加えることなく追加できます。

優先度

また、すべてのメッセージに優先度が設定されるため、2つのノードが同時にメッセージを送信しようとした場合には、優先度の高いメッセージが送信され、優先度の低いメッセージの送信が延期されます。 このアービトレーションは非破壊的に実行され、優先度が最も高いメッセージが割り込みなしで伝送されます。 さらにこの仕組みによって、ネットワークで確定的タイミングの制約を達成することができます。

エラー機能

CANの仕様には、各フレームのコンテンツに対してエラーチェックを実行する巡回冗長コード (CRC) が含まれます。 エラーを含むフレームはすべてのノードで無視されます。エラーフレームを送信して、ネットワークにワラーを通知することができます。 グローバルエラーとローカルエラーはコントローラによって判別されます。非常に多くのエラーが検知された場合には、個別ノードからのエラーの送信を停止したり、ネットワークからノード自体を完全に切り離したりできます。

図1: CANネットワークでは配線が大幅に減る

 

CAN用途使用例

CANは当初自動車用に開発されたことから、車載電子ネットワークの用途で最もよく使用されています。しかしこの20年ほどの間に、他の業界でもCANの信頼性やメリットが認識され、幅広い用途でCANバスが導入されるようになりました。路面電車、トラム、地下鉄、ライトレール、長距離列車などの鉄道用途にCANが導入されています。ドアユニット、ブレーキコントローラ、乗客数計測ユニットなど、鉄道車両に搭載された複数のネットワークのさまざまなレベルで、CANデバイスが通信を担っている事例が見られます。また航空業界でも、飛行中の状態監視センサーや、コックピット内の調査用PCといった用途にCANが使用されています。さらに、飛行中のデータ解析から、燃料系、ポンプ、線形アクチュエータなどの航空エンジン制御システムまで、航空宇宙用途にもCANバスが幅広く採用されています。 

医療機器メーカーでは、医療デバイスの組込ネットワークとしてCANを利用しています。実際にCANを利用して複数の手術室を管理している病院の事例もあります。手術室の照明、手術台、カメラ、X線装置、患者用ベッドなどを、CANベースのシステムにより制御しています。エレベータやエスカレータには組込CANネットワークが使用されます。病院ではCANopenプロトコルを使用して、パネル、コントローラ、ドア、ライトバリアなどのリフトデバイスを相互に接続し、制御しています。CANopenは工業用途以外でも使用されており、実験装置、スポーツ用カメラ、望遠鏡、自動ドア、さらにはコーヒーメーカーにも導入されています。

CAN物理層

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

高速/FD CAN 

高速CANは、従来から最もよく使用される物理層です。高速CANネットワークは2本の配線で実装され、最大1 Mb/秒の転送レートでの通信に対応します。高速CANは、CAN CやISO 11898-2とも呼ばれています。一般的な高速CANデバイスとしては、アンチロックブレーキシステム、エンジン制御モジュール、排ガスシステムなどが挙げられます。 可変データレートCAN (CAN FD) は、さらに高いデータレートを実現する新しい規格に基づく、次世代型の高速CAN通信です。  NIでは、TJA1041トランシーバやTJA1043トランシーバをNI-XNETドライバと組み合わせることで、最大8 Mb/秒の速度を実現しました。  トランシーバのベンダがCAN FDへの対応を完了すれば、NIも必要に応じてドキュメントを更新する予定です。

低速/フォールトトレラント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ハードウェア

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

LabVIEWおよび他の言語によるCANプログラミング

NI-XNETソフトウェアドライバ

NI-XNETソフトウェアはPCI/PXI-851xデバイスとNI 986xデバイスに付属しており、ni.comから無料でダウンロードできます。この新しいドライバをNI LabVIEW、NI LabWindows/CVI、WindowsのC/C++、LabVIEW Real-Time OSで使用することで、CAN、LIN (Local Interconnect Network)、FlexRayのアプリケーションを開発できます。NI 851xデバイスとNI 986xデバイスは、NI-XNETプラットフォームで使用する場合、HIL (hardware-in-the-loop) シミュレーション、ラピッドコントロールプロトタイピング、バス監視、オートメーション制御など、大量のフレームや信号をリアルタイムで高速に操作する必要がある用途に適しています。

NI-XNET:1API多数ネットワーク

NI-XNETプラットフォームでは、一連の高性能なCAN、LIN、FlexRayインタフェースがNI-XNET APIと組み合わされています。NI-XNET APIはCAN、LIN、FlexRayの各フレームおよび信号の読み取りと書き込みを実行する、使いやすい一般的な機能のセットです。

より少ないプログラミング高性能実現

NI-XNETインタフェースは、低レベルのマイクロコントローラプログラミングにより実現するパフォーマンスと、WindowsとLabVIEW Real-Time OSによる開発の容易さ、機能性を両立しています。NI-XNETデバイス駆動型DMAエンジン (特許出願中) は、PCベースCANインタフェースに共通するデメリットであるシステムレイテンシをミリ秒単位からマイクロ秒単位に軽減します。このエンジンによって、オンボードプロセッサではCPUを介在させずにインタフェースとユーザプログラム間でCANフレームと信号を転送できるため、ホストプロセッサの負担を減らして複雑なモデルやアプリケーションの処理に利用することができます。

NI-XNETのメリットと用途の詳細については、「CAN/​LIN/​FlexRay​プラットフォーム​NI-​XNET​の​概要」を参照してください。

NI-CANソフトウェアドライバ

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

NI-CANドライバソフトウェアでは2つのAPIを利用できます。Frame APIは、CANプログラミング用のNI独自APIです。Frame APIでは、未処理データを含むCANフレームの送受信が可能です。そのようなデータはプログラムで解析、スケールして、適切なスケールの工学単位に変換する必要があります。Frame APIを使用するプログラミングの詳細については、『NI CAN Hardware and Software Manual』の「Using the Frame API」のセクションを参照してください。


NIがChannel APIを初めて導入したのが、NI-CAN 2.0ドライバソフトウェアでした。データベースファイル (.dbcまたは.ncd) で指定されたチャンネル名を使って、CANチャンネルの読み取りや書き込みが可能です。Channel APIには、以下のメリットがあります。

  • 上位レベルのプログラミング
  • 扱いやすい物理単位
  • 主にCAN/データ収集同期を簡易化するために使用
  • ベクトルデータベースファイルを利用可能

Channel APIを使用したプログラミングの詳細については、「The NI-CAN Channel API」を参照してください。

CANプロトコルに関する用語

CANデバイスは、フレームと呼ばれるパケット単位でCANネットワーク上にデータを送信します。CANフレームは、以下のセクションで構成されます。

  • CANフレーム - CANで伝達されるもの全体を表し、アービトレーションID、データバイト、肯定応答ビットなどが含まれます。フレームは、「メッセージ」と呼ばれることもあります。

図2:  標準的な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が検出されなかった場合は再度送信を試みます。NI Series 2 CANインタフェースには、リスンオンリーモードの機能があります。このモードではモニタリングハードウェアからのACKビットの送信が抑制され、バスの動作に影響を及ぼさなくなります。
  • CAN信号 - CANフレームデータフィールドに含まれる個々のデータ。CAN信号は、「チャンネル」とも呼ばれます。データフィールドには最大8バイトのデータを含めることができるため、1つのCANフレームに0~64個の個別信号を格納できます (64チャンネルの場合、すべてバイナリとなります)。 
下図では、1つのCANフレームのデータフィールドに6個のチャンネルが含まれています。各信号に8ビットのデータが含まれます。


図3:  信号は、CANフレーム内の特定数のビットとして定義できる

 

CANデータベースファイル

CANデータベースファイルとは、CANのフレームおよび信号を定義するスケーリング情報が含まれたテキストファイルです。NIのNI-XNETデータベースエディタソフトウェアでは、FIBEXデータベースファイル (.xml)、Vectorデータベースファイル (*.dbc)、およびNI CANデータベースファイル (*.ncd) が認識されます。

各信号について、CANデータベースで工学単位への変換規則が定義されています。以下のデータがデータベースに保存されます。

  • チャンネル名
  • 特定のメッセージ内のチャンネルの位置 (開始ビット) とサイズ (ビット数)
  • バイトオーダー (Intel/Motorola)
  • データタイプ (符号付き、符号なし、IEEE浮動少数)
  • スケーリングと単位文字列
  • レンジ
  • デフォルト値
  • コメント

この情報を使用して、"未処理" フレームの情報 (通常バイト単位) を "実世界" の値に簡単に変換することができます。 下図は、この変換の例を示しています。

図4:  フレームを信号に変換するために必要なスケーリングデータはすべてデータベースに格納されている

CANデータベースファイルに、車両全体のフレーム定義と信号定義を含めることができます。各ネットワークにはそれぞれ独自のデータベースファイルがあります。また、そのようなデータベースファイルはベンダ独自のもので、通常は機密扱いとなっています。

CANネットワーク上の多くのフレームにデータベースファイルを使用することで、多くのCAN API (NI-XNETなど) でフレーム情報を実世界値に直接自動的に変換できます。 この方法によって、未処理のフレーム値の扱いを考慮する必要がなくなり、アプリケーションの開発が簡素化されます。

CAN通信仕組み

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

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

図5:  CANにはメッセージに優先度を設定することで競合を防ぐ仕組みがある

NI各種CANツール

NIでは、CANアプリケーションを開発するためのさまざまなハードウェア/ソフトウェアツールを提供しています。また、PCIPXIUSBCompactRIO、CompactDAQ (Cシリーズ) など、幅広いプラットフォームに対応するCANインタフェースをご用意しています。PCI、PXI、Cシリーズについては、高速/FD、低速/フォールトトラレント、単線式の物理層を選択できます。PCIおよびPXIについては、業界初となるソフトウェアで選択可能なCANインタフェースを提供しており、高速/FD、低速/フォールトトラレント、単線式のトランシーバを1つのデバイス上の各ボードの各ポートで使用できます。つまり、使用するモードをソフトウェアで選択することができます。

図6: ソフトウェアでの設定に対応するNI PCI-8513 (XS) CANデバイス


さらに、NIでは各デバイスに適切なドライバソフトウェアを同梱しています。NI CANインタフェースドライバソフトウェアの詳細については、以下で説明しています。 

NIのECU Measurement and Calibration Toolkitを使用すると、NI LabVIEW、NI LabWindows™/CVI、C/C++の開発環境を拡張して、電子制御装置 (ECU) の設計と検証を行うための計測/校正アプリケーションをサポートできます。ECU Measurement and Calibration ToolkitではCAN校正プロトコル (CCP) に基づいた使いやすい高レベル関数を使用でき、ECUの開発やテストに携わる技術者はそのような関数を使用して独自のカスタム計測/校正アプリケーションを作成できます。

 

LabWindowsマークは、Microsoft Corporationの使用許諾を得て使用しています。Windowsは、Microsoft Corporationの米国およびその他の国における登録商標です。