USB-847x や NI 985x 使用時にフレームとチャンネルを変換する最善の方法



使用ソフトウェア:
使用ソフトウェア・バージョン: 2.7.3
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: Driver Software>>NI-XNET
ハードウェア: Industrial Communications>>CAN>>USB-8473, Industrial Communications>>CAN>>USB-8473s, Industrial Communications>>CAN>>USB-8472s, Industrial Communications>>CAN>>USB-8472, Industrial Communications>>CAN>>NI 9853

問題:

USB CAN デバイス USB-847x (USB-8473、USB-8473s、USB-8472、USB-8472s)や CompactRIO 用 CAN モジュール NI 985x (NI 9853、NI 9852)ではチャンネル API が使用できないため、フレームとチャンネルを変換するために

の 2 つの方法がありましたが、より良い方法はないでしょうか。



解決策:

NI-XNET とは、従来の NI-CAN デバイスに替わる次世代の CAN/LIN/FlexRay デバイスのドライバです。

詳細につきましては Developer Zone: Tutorial: NI-CANアプリケーションをNI-XNETに移行する をご参照ください。

NI-XNET は USB-847x や NI 985x のドライバではありませんが、NI-XNET 1.2 以降ではフレームとチャンネルを変換する機能がサポートされており、フレームとチャンネルの変換のために使用することができます。

2011年8月版以降の Device Drivers DVD  には NI-XNET 1.3.1 以降が含まれています。もしくは、 ドライバと更新: NI-XNET から無償で別途ダウンロードすることもできます。

NI-CAN で使用していたデータベースを NI-XNET で使用する手順につきましては、 KnowledgeBase 5P0III1C: NI-CAN で使用していたデータベースを NI-XNET で使用できますか。 をご参照ください。

NI-XNET にて CAN フレームとチャンネルを変換する方法としまして、下記の 2 種類がサポートされています。

NI-XNET の方法につきましては、メニューバーの ヘルプ » サンプルを検索 から開くサンプルファインダにて ハードウェア入力と出力 » CAN » NI-XNET » セッションの紹介 » 変換セッション » Convert CAN Frames to-from Signals.vi にございますサンプル VI をご参照ください。

NI-XNET Raw の方法は、通常 NI 985x CAN モジュールと共に使用します。サンプルファインダ »  ハードウェア入力と出力 » CompactRIO » モジュールに特定 » CAN » 985x (NI-XNETと使用) »
CAN Signals Receive.lvproj
及び CAN Signals Transmit.lvproj をご参照ください。(NI-XNET だけでなく、NI-RIO ドライバも必要です。Device Drivers DVD  には NI-XNET と NI-RIO の両方が含まれています。もしくは、ドライバと更新: NI-RIO から無償で別途ダウンロードすることもできます。)

メモ: NI-XNET Raw フレームは、フレーム内の情報をクラスタではなく、フレーム数 × 24バイト の数値配列形式で保持します。NI 985x CAN モジュールは、FPGA I/O ノードを右クリック » プロパティ からフレーム情報をクラスタではなく 4 バイトの数値 6個 を含む配列(24バイト)形式にすることができますので、NI-XNET Raw フレームを使用することによりチャンネル変換が容易となります。NI-XNET Raw フレームの構造の詳細につきましては、スタート » すべてのプログラム » National Instruments » NI-XNET » NI-XNET Hardware and Software Manual の ページ 1006 をご参照ください。

NI-CAN 仮想ポートの方法、NI-XNET の方法、NI-XNET Raw の 3 つの方法のいずれかを使用することにより、USB-847x や NI 985x ではサポートされていないチャンネル API と同様の動作を実装することができます。

この技術資料の最後に添付されている XNET_CAN_Conversion_Examples_LV2011.zip (LabVIEW 2011 以降用) には、サンプルファインダ » ハードウェア入力と出力 » CAN » NI-CAN » チャンネル API » 基本 »  Single Sample Event Output.vi 及び Single Sample Input の 2 つのチャンネル API のサンプル VI と同様の動作を実装したサンプル VI が含まれます。(LabVIEW 8.5 ~ 2010 の場合には XNET_CAN_Conversion_Examples_LV85.zip をご利用頂けます。)

また、XNET_CAN_Conversion_PerformanceTest_LV2011.zip (LabVIEW 2011 以降用)には、上記の サンプル VI のコードから実際に CAN デバイスを使用する部分を取り除き、変換処理のみを100000 回繰り返して要した時間を 100000 で割り、1 回当たりの変換処理時間を計算するパフォーマンステスト用の VI が含まれます。(LabVIEW 8.5 ~ 2010 の場合には XNET_CAN_Conversion_PerformanceTest_LV85.zip をご利用頂けます。) 

LabVIEW 2011, NI-CAN 2.7.3, NI-XNET 1.3.1, CAN Frame Channel Conversion Library 1.0.3, Windows 7 SP1 の環境で、NI-CAN 、NI-XNET 付属のサンプルデータベースにて定義されている TransmissionFluilds フレームのデータと、 TransmissionOilPressure、TransmissionFilterPressure の 2 つのチャンネルの変換を行ったテスト結果は下記のとおりです。

変換処理時間(1回当たり)
  Channel to Frame Frame to Channel
NI-CAN 仮想ポート 38.09 μs 72.77 μs
NI-XNET 3.82 μs 3.58 μs
NI-XNET Raw 5.11 μs 4.86 μs

NI-CAN 仮想ポートの方法と比べ、NI-XNET の方法は、チャンネルからフレームへの変換で 10 倍程度、フレームからチャンネルへの変換で 20 倍程度パフォーマンスに優れているという結果になりました。NI-XNET Raw の方法は、NI 985x CAN モジュールと使用する場合にはより効率的な方法ですが、Raw フレーム内のパラメータ( Arbitration ID 、データ長、データ)にアクセスする場合には NI-XNET の方法よりも時間がかかると考えられます。

上記の 3 つの方法では、複数のチャンネルは必ずしも単一の Arbitration ID のフレームに属している必要はなく、複数の Arbitration ID のフレームを扱うことができます。一方、Conversion Library の方法では 単一の Arbitration ID (message ID) を指定して変換するため、1 回の変換処理で扱う複数のチャンネルは単一の Arbitration ID のフレームに属している必要があります。



上記と同様の環境でのテスト結果は以下のとおりです。

変換処理時間(1回当たり)
  Channel to Frame Frame to Channel
Conversion Library 0.30 μs 0.66 μs

要した時間は前述の 3 つの方法よりも短い、つまり処理速度は速いという結果になりましたが、Conversion Library の方法では単一フレームのみの変換ですので単純比較はできません。

また、Conversion Library の方法では、

といった点に注意する必要があります。


結論としまして、

をお勧め致します。



関連リンク:

KnowledgeBase 45EE2VJL: どのようにしてUSB-CANデバイスでChannel APIを使用するのでしょう。
KnowledgeBase 5D0DHKBI: CAN Frame Channel Conversion Library 1.0.3 インストール後の LabVIEW のパレット
Developer Zone: Tutorial: NI-CANアプリケーションをNI-XNETに移行する
KnowledgeBase 5P0III1C: NI-CAN で使用していたデータベースを NI-XNET で使用できますか。



添付:

XNET_CAN_Conversion_Examples_LV2011.zip
XNET_CAN_Conversion_Examples_LV85.zip 
XNET_CAN_Conversion_PerformanceTest_LV2011.zip
XNET_CAN_Conversion_PerformanceTest_LV85.zip






報告日時: 08/29/2011
最終更新日: 09/06/2011
ドキュメントID: 5OSKD51C