CAN/LINの概要

NI-CAN Measurement & Automation Explorer

CAN/LINの概要

このトピックでは、CANおよびLINの概要について説明します。

CANの概要

過去20〜30年、自動車技術向上の必要性に応じて、エンジンタイミング、アンチロックブレーキシステム、ディストリビュータレスイグニッションなどに電子制御システムが使用されることが多くなりました。従来型の配線では、これらのシステムのデータは専用の信号線で交換されていました。複雑性やデバイス数が増加するにつれて、専用の信号線を使用する方法が難しくなり、費用もかかるようになってきました。こうした従来型の自動車内部の配線の限界を克服するため、1980年代中頃にBosch社によってCAN(Controller Area Network)が開発されました。CANを使用すると、デバイス(コントローラ、センサ、アクチュエータ)を共通のシリアルバスで接続できるようになります。

CANの実装が自動車業界で増加したことに伴い、CANはISO 11898として国際標準化されました。

CANデータフレーム

データフレームはCANネットワークでのデータ転送の基本単位です。以下の図はCANデータフレームの略図を示します。

複数のCANデバイスが同時にフレームを送信する場合は、ID(識別子)がデータの衝突を解決します。最も優先度の高いIDが継続され、優先度の低いIDはその後すぐに再試行されます。ISO 11898 CAN標準では、11ビットの標準形式と29ビットの拡張形式の2つのID形式が規定されています。

このIDの後には、フレームのデータバイト数を指定するデータ長コードが続きます。データ長の範囲は0〜8データバイトです。IDの値でデータバイトの意味を判断します。

CANリモートフレーム

データフレームに加えて、CAN規格はリモートフレームを指定します。リモートフレームはIDを含みますが、データバイトは含みません。CANデバイスはリモートフレームを送信して、別のデバイスにIDに関連付けられたデータフレームを送信するように要求します。つまり、リモートフレームはデータのポーリングを行う機構を提供します。

以上がCANフレームの簡単な説明です。CANフレーム形式には、エラーチェックおよび受信通知などの多くの他のフィールドが含まれています。ISO 11898 CAN規格の詳細については、NI-CAN Helpの「Summary of the CAN Standard」を参照してください。

LINの概要

LINネットワークは、1つのLINマスターと1つまたは複数のLINスレーブで構成されます。以下の図はLINメッセージフレームを示しています。

LINメッセージフレーム

メッセージヘッダはフレームの開始を示す改行、スレーブノードがクロック同期化に使用する同期フィールド、識別子で構成されます。識別子(ID)は、6ビットのメッセージIDと2ビットのパリティフィールドで構成されます。IDは、特定のメッセージアドレスを表しますが、送信先は示しません。IDが受信、解釈されると、スレーブの1つがメッセージ応答を開始します。メッセージ応答は1〜8データバイトのデータと8ビットのチェックサムで構成されます。

メッセージフレームのシーケンスはマスターによって制御され、スケジュールに設定されます。スケジュールは必要に応じて変更できます。

その後に、LINメッセージフレームの簡単な説明が続きます。LIN仕様のLINメッセージフレームの詳細については、NI-CAN Helpの「Summary of the LIN Standard」を参照してください。

NI-CANソフトウェア概要

NI-CANソフトウェアには、フル装備のアプリケーションプログラミングインタフェース(API)、およびナショナルインスツルメンツMeasurement & Automation Explorer(MAX)での構成と解析用ツールが備わっています。NI-CAN APIを使用すると、CAN/LINハードウェアのテストやシミュレーションの要件に応じてカスタマイズされたアプリケーションを開発することができます。

CAN/LIN用フレームAPI

フレームはCAN/LINネットワークでのデータ転送の基本単位です。NI-CANフレームAPIには、CAN/LINフレームに読み書きを行うための一連の機能が備わっています。フレームAPIでは、各フレームのデータバイトは解釈されず、未処理の形式でデータバイトが転送されます。たとえば、ID、データ長、およびデータバイトの配列とともに書き込みの関数を呼び出すことにより、CANデータフレームを送信することができます。詳細については、ヘルプ→ヘルプトピック→NI-CAN→ハードウェアおよびソフトウェアマニュアルのNI-CAN Helpを参照してください。

CAN用チャンネルAPI

通常のCANデータフレームには、未処理フィールドとして暗号化された複数の値が含まれています。以下の図は、6バイトデータフレームのフィールドのサンプルセットを示します。

1〜2バイトは、時速(km/h)で自動車の速度を表すクルーズコントロール・セットスピードフィールドを含みます。ほとんどのCANデバイスは、115.6 km/hなどの浮動小数点単位では値を送信しません。したがって、このフィールドは、各増分が0.0039 km/hを表す16ビット符号なし整数で構成されます。たとえば、フィールドは(25000 * 0.0039) = 97.5 km/hを表す値25000を含みます。

3〜4バイトは、時速(km/h)で表す別の符号なし整数の自動車速度を含みます。0バイトおよび5バイトは、1が「ON」を0が「OFF」を示すさまざまなブールフィールドを含みます。

NI-CANフレームAPIを使用してCANデータフレームを読み取る場合、アプリケーションにコードを書いて、各未処理フィールドを時速(km/h)などの物理単位に変換する必要があります。NI-CANチャンネルAPIは、アプリケーション内ではなく、構成の段階でこの変換情報を指定することができます。この構成情報は、Vector社のCANdbファイルからインポート、またはMAXで直接指定することができます。

CANネットワークで読み書きを行う各IDについては、フィールド数を指定します。各フィールドについては、フレームでの位置、ビットのサイズ、および浮動小数点単位と双方向に変換する演算式を指定します。つまり、各CANデータフレームでさまざまなフィールドの意味を指定します。NI-CANの用語では、個別のフィールドが説明されているデータフレームは「メッセージ」と呼ばれます。

NI-DAQおよびFieldPointなど、ナショナルインスツルメンツの他のソフトウェア製品では、アプリケーションは浮動小数点の値をチャンネルを使用して読み書きを行います。このチャンネルは、通常、計測ハードウェアの未処理の値と双方向に変換されます。NI-CANチャンネルAPIでも、メッセージで未処理フィールドと双方向に変換された浮動小数点値に対して、「チャンネル」の用語を使用します。他の業者のCAN製品では、このコンセプトはしばしば「信号」と呼ばれています。CANメッセージが受信されると、チャンネルAPI Read関数を使用して取得する際に、NI-CANは未処理フィールドを物理単位に変換します。チャンネルAPI Write関数を呼び出す際は浮動小数点値を物理単位を引渡し、NI-CANは未処理データへ変換してCANメッセージとして送信します。

詳細については、ヘルプ→ヘルプトピック→NI-CAN→ハードウェアおよびソフトウェアマニュアルのNI-CAN Helpを参照してください。