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

コンテンツ

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​フレーム​および​信号​の​定義​の​ため​の​スケーリング​情報​が​含​まれ​た​テキストファイル​です。​ナショナル​イン​ス​ツル​メンツ​の​NI-​XNET​データベース​エディタ​ソフトウェア​は、​FIBEX​データベース​ファイル​(.xml)、​Vector​データベース​ファイル​(*.dbc)、​および​NI CAN​データベース​ファイル​(*.ncd)​を​認識​し​ます。

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

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

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

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

CAN​ネットワーク​上の​多く​の​フレーム​に​データベース​ファイル​を​使用​する​こと​で、​多く​の​CAN API(NI-​XNET)​は​フレーム​情報​を​実​世界​値​に​直接​自動​で​変換​する​こと​が​可能​となり​ます。​この​方法​なら​生​の​フレーム​値​を​気​に​する​必要​が​ない​ため、​アプリケーション​の​開発​が​簡素​化​さ​れ​ます。

トップ​へ​戻る

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-8513(XS)​CAN​デバイス


​さらに、​NI​では​それらの​デバイス​に​ドライ​バ​ソフトウェア​を​同​梱​し​てい​ます。​NI 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-​XNET​ソフトウェアドライバ

NI-​XNET​ソフトウェア​は、​PCI/​PXI-851x​シリーズ​の​ハードウェア​に​付属​さ​れ​て​いる​ほか、​NI​の​Web​サイト​で​無料​で​ダウンロード​でき​ます。​この​新しい​ドライバ​は、​NI LabVIEW、​NI LabWindows/​CVI、​C/​C​+​+ on Windows、​LabVIEW Real-​Time OS​で​CAN/​FlexRay​アプリケーション​を​開発​する​の​に​使用​でき​ます。​PCI/​PXI-851x​シリーズ​は、​NI-​XNET​プラットフォーム​の​一部​として、​HIL(hardware-​in-​the-​loop)​シミュレーション、​ラピッドコントロールプロトタイピング、​バス​監視、​自動​制御​など、​多数​の​フレーム​や​信号​の​高速​リアルタイム​操作​が​必要​な​アプリケーション​に​適​し​てい​ます。

NI-​XNET: 1​つ​の​API​で​多く​の​組​込​ネットワーク
​NI-​XNET​プラットフォーム​は、​高性能​の​CAN/​FlexRay​インタフェース​と、​CAN/​FlexRay​フレーム​および​信号​の​読み取り​と​書き込み​用​の​使い​やすい​関数​を​集め​た​NI-​XNET API​を​統合​した​もの​です。

簡単​な​プログラミング​で​最高​性能​を​実現
​NI-​XNET​インタフェース​は、​低​レベル​の​マイクロ​コントローラ​プログラミング​による​性能​と、​Windows​と​LabVIEW Real-​Time OS​で​の​開発​の​スピード​と​処理​能力​を​兼​ね​備え​てい​ます。​NI-​XNET​デバイス​駆動​の​DMA​エンジン​を​使用​すると、​PC​ベース​の​CAN​インタフェース​における​頭痛​の​種​で​ある​システム​の​遅延​時間​を​数​ミリ​秒​から​数​マイクロ​秒​に​短縮​する​こと​が​でき​ます。​この​エンジン​により、​オン​ボード​プロセッサ​が​CAN​フレーム/​信号​を​インタフェース​間​や​ユーザ​プログラム​間​で​CPU​の​割り込み​なし​に​移動​させる​こと​が​できる​ので、​ホスト​プロセッサ​の​時間​を​複雑​な​モデル​や​アプリケーション​の​処理​に​回す​こと​が​でき​ます。

トップ​へ​戻る

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

ナショナル​イン​ス​ツル​メンツ​では、​NI​の​全て​の​レ​ガ​シー​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/​データ​集録​を​簡単​に​同期
  • Vector​社​の​データベース​ファイル​を​利用​可能

Channel API​を​使​っ​た​プログラミング​に関する​詳細​について​は、​NI-​CAN Channel API​の​資料​を​参照​し​て​くだ​さい。

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

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

トップ​へ​戻る