コントローラエリアネットワーク (CAN) バスは、インテリジェントデバイスのネットワーク化を目的とした、高度な整合性を備えたシリアルバスシステムです。CANのバスおよびデバイスは、自動車システムや工業用システムで一般的に使用されているコンポーネントです。たとえば、CANプロトコルは、センサと電子制御ユニット (ECU) との間の効率的な通信を促進し、先進運転支援システムをサポートします。CANインタフェースデバイスを使用して、CANネットワークと通信できるLabVIEWアプリケーションを作成できます。
CANプロトコルは、車載ネットワークを簡素化するためにBoschによって1985年に開発されました。 それまで自動車メーカーは、ポイントツーポイント配線システムを使って車載電子デバイス間の接続を行っていました。しかし車両に使われる電子部品の数が増えるにつれ、重くて高価なワイヤハーネスが場所を取るようになりました。そこで、専用配線を車載ネットワークに置き換えることで、配線のコストの削減と、軽量化、簡素化を実現しました。CANとは、インテリジェントデバイスのネットワーク化に対応する、高い整合性を持つシリアルバスシステムであり、現在では車載ネットワークの標準となっています。自動車業界は積極的にCANを導入し、1993年にはISO 11898という国際規格として標準化されました。1994年以降、CANopen、DeviceNetなど、CANの上位プロトコルがいくつか標準化されています。このような派生プロトコルは自動車以外の市場でも広く導入され、現在では工業用通信の標準にもなっています。このホワイトペーパーでは、車載ネットワークとしてのCANについて説明します。
CANによって、複数のCANデバイスが相互に通信するための低コストで耐久性の高いネットワークが実現します。CANのメリットは、電子制御装置 (ECU) にCANインタフェースを1つ搭載するだけで済み、システム内の各デバイスに接続するアナログ配線やデジタル配線を用意する必要がなくなることです。これにより、車両全体のコストと重量が低減されます。
ネットワーク上の各デバイスがCANコントローラチップを搭載し、伝送されるすべてのメッセージを読み取ることができます。そのメッセージがそのデバイスに関連するものなのか、無視すべきものなのかを、各デバイスで判断できます。 このような構造から、CANネットワークに変更を加えても影響は最小限となります。 信号を送信しないノードは、ネットワークに変更を加えることなく追加できます。
また、すべてのメッセージに優先度が設定されるため、2つのノードが同時にメッセージを送信しようとした場合には、優先度の高いメッセージが送信され、優先度の低いメッセージの送信が延期されます。 このアービトレーションは非破壊的に実行され、優先度が最も高いメッセージが割り込みなしで伝送されます。 さらにこの仕組みによって、ネットワークで確定的タイミングの制約を達成することができます。
CANの仕様には、各フレームのコンテンツに対してエラーチェックを実行する巡回冗長コード (CRC) が含まれます。 エラーを含むフレームはすべてのノードで無視されます。エラーフレームを送信して、ネットワークにワラーを通知することができます。 グローバルエラーとローカルエラーはコントローラによって判別されます。非常に多くのエラーが検知された場合には、個別ノードからのエラーの送信を停止したり、ネットワークからノード自体を完全に切り離したりできます。
図1:CANネットワークでは配線が大幅に減る
CANは当初自動車用に開発されたことから、車載電子ネットワークの用途で最もよく使用されています。しかしこの20年ほどの間に、他の業界でもCANの信頼性やメリットが認識され、幅広い用途でCANバスが導入されるようになりました。路面電車、地下鉄、軽便鉄道、長距離列車など、あらゆる鉄道用途にCANが導入されています。そのような車両の中でも、ドアユニット、ブレーキコントローラ、乗客カウント装置など、複数のネットワークの様々なレベルでCANデバイスが利用されています。また航空業界でも、飛行中の状態監視センサや、ナビゲーションシステム、コックピット内の調査用PCといった用途にCANが使用されています。さらに、飛行中のデータ解析から、燃料系、ポンプ、線形アクチュエータなどの航空エンジン制御システムまで、航空宇宙用途にもCANバスが幅広く採用されています。
医療機器メーカーでは、医療デバイスの組込ネットワークとしてCANを利用しています。実際にCANを利用して複数の手術室を管理している病院の事例もあります。手術室の照明、手術台、カメラ、X線装置、患者用ベッドなどを、CANベースのシステムにより制御しています。エレベータやエスカレータには組込CANネットワークが使用されます。病院ではCANopenプロトコルを使用して、パネル、コントローラ、ドア、ライトバリアなどのリフトデバイスを相互に接続し、制御しています。CANopenは工業用途以外でも使用されており、実験装置、スポーツ用カメラ、望遠鏡、自動ドア、さらにはコーヒーメーカーにも導入されています。
CANでは、複数の物理層を使用できます。物理層は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ネットワークも2本のワイヤで実装され、最大125 kb/秒の転送速度でデバイスと通信します。さらに、トランシーバのフォールトトレラント機能も実現します。低速/フォールトトラレントCANは、CAN BやISO 11898-3とも呼ばれます。自動車では一般的に、ドライバーの快適性を高める装置などに低速/フォールトトラレントデバイスが導入されています。車両のドアヒンジを通る配線はドアの開閉によって負担がかかるため、低速/フォールトトラレントネットワークが採用されます。また、ブレーキランプなどの高度な安全性が求められる機器についても、低速/フォールトトラレントCANが適しています。
単線式CANインタフェースは、最大33.3 kb/秒 (高速モードでは88.3 kb/秒) でデバイスと通信することができます。単線式CANは、SAE-J2411、CAN A、GMLANとも呼ばれます。自動車に使用される一般的な単線式デバイスには、高い性能は求められません。一般的な用途としては、シートやミラーの調整装置などのドライバの快適性を高めるデバイスが挙げられます。
NIのCANハードウェア製品を使用すると、ソフトウェアで選択可能なCANインタフェースで任意のオンボードトランシーバ (高速、低速/フォールトトラレント、単線式CAN) を使用するように構成できます。複数のトランシーバを搭載したハードウェアは、複数の通信規格を組み合わせる必要がある用途に最適なソリューションです。また、ソフトウェアで選択可能なCANハードウェアを使用すれば、独自の外部CANトランシーバを選択することもできます。
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プラットフォームでは、一連の高性能な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.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には、以下のメリットがあります。
Channel APIを使用したプログラミングの詳細については、「The NI-CAN Channel API」を参照してください。
CANデバイスは、フレームと呼ばれるパケット単位でCANネットワーク上にデータを送信します。CANフレームは、以下のセクションで構成されます。
図2: 標準的なCANフレーム形式
図3: 信号は、CANフレーム内の特定数のビットとして定義できる
CANデータベースファイルとは、CANのフレームおよび信号を定義するスケーリング情報が含まれたテキストファイルです。NIのNI-XNETデータベースエディタソフトウェアでは、FIBEXデータベースファイル (.xml)、Vectorデータベースファイル (*.dbc)、およびNI CANデータベースファイル (*.ncd) が認識されます。
各信号について、CANデータベースで工学単位への変換規則が定義されています。以下のデータがデータベースに保存されます。
この情報を使用して、"未処理" フレームの情報 (通常バイト単位) を "実世界" の値に簡単に変換することができます。 下図は、この変換の例を示しています。
図4: フレームを信号に変換するために必要なスケーリングデータはすべてデータベースに格納されている
CANデータベースファイルに、車両全体のフレーム定義と信号定義を含めることができます。各ネットワークにはそれぞれ独自のデータベースファイルがあります。また、そのようなデータベースファイルはベンダ独自のもので、通常は機密扱いとなっています。
CANネットワーク上の多くのフレームにデータベースファイルを使用することで、多くのCAN API (NI-XNETなど) でフレーム情報を実世界値に直接自動的に変換できます。 この方法によって、未処理のフレーム値の扱いを考慮する必要がなくなり、アプリケーションの開発が簡素化されます。
既に説明した通り、CANはピアツーピアネットワークです。つまり、個々のノードがCANバス上のデータを読み取り/書き込みするタイミングを制御するマスタデバイスが存在しません。CANノードがデータ送信可能な状態になると、バスがビジーかどうかをチェックし、単純にCANフレームをネットワーク上に書き込みます。送信されるCANフレームには、送信ノードのアドレスも想定受信ノードのアドレスも含まれません。その代わりに、ネットワーク全体で一意のアービトレーションIDがフレームに付加されます。CANネットワーク上の全ノードがそのCANフレームを受信します。ネットワーク上の各CANノードはそのフレームのアービトレーションIDに基づいて、そのフレームを受け取るかどうかを判断します。
複数のノードが同時にCANバスにメッセージを送信しようとした場合、自動的に優先度が最も高い (アービトレーションIDが最も低い) ノードにバスへのアクセスが許可されます。優先度が低いノードは、バスが利用可能になるのを待ってから、再度送信を試みる必要があります。このようにCANネットワークを実装することで、CANノード間で確定的通信を確実に行うことができます。
図5: CANにはメッセージに優先度を設定することで競合を防ぐ仕組みがある
NIでは、CANアプリケーションを開発するためのさまざまなハードウェア/ソフトウェアツールを提供しています。また、PCI、PXI、USB、CompactRIO、CompactDAQ (Cシリーズ) など、幅広いプラットフォームに対応するCANインタフェースをご用意しています。PCI、PXI、Cシリーズについては、高速/FD、低速/フォールトトラレント、単線式の物理層を選択できます。PCIおよびPXIについては、業界初となるソフトウェアで選択可能なCANインタフェースを提供しており、高速/FD、低速/フォールトトラレント、単線式のトランシーバを1つのデバイス上の各ボードの各ポートで使用できます。つまり、使用するモードをソフトウェアで選択することができます。
さらに、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の米国およびその他の国における登録商標です。