メモ 本コンテンツの日本語版は、便宜を図るために自動翻訳で提供されています。正確な最新情報については、英語版をご覧ください。

通信用にCANフレームを書き込みます。

CAN出力を使用してCANポートに書き込むには、以下の手順に従ってください。

  1. ターゲットとデバイスを追加ダイアログボックスを使用して、CANモジュールをCompactRIO構成に追加します。プロジェクトエクスプローラウィンドウでCANモジュールを右クリックし、プロパティを選択してモジュールの構成プロパティを指定します。
  2. CAN用にFPGA I/O項目を作成するには、プロジェクトエクスプローラウィンドウのマイ コンピュータの下のFPGAターゲットを右クリックし、新規»FPGA I/Oを選択し、CAN»NI 9852»CAN0(またはCAN»NI 9853»CAN0)および/またはCAN»NI 9852»CAN1(またはCAN»NI 9853»CAN1)をFPGA I/O一覧に追加します。新規FPGA I/Oダイアログボックス(FPGAモジュール)を参照して、FPGA I/Oを作成し、CompactRIOの構成に追加する方法について詳しく確認してください。
  3. FPGA I/OパレットからFPGA I/OノードをFPGA VIのブロックダイアグラムに配置します。
  4. FPGA I/Oノードを右クリックしてFPGA I/Oを選択»CAN»NI 9852»CAN0(またはFPGA I/Oを選択»CAN»NI 9853»CAN0)またはFPGA I/Oを選択»CAN»NI 9852»CAN1(またはFPGA I/Oを選択»CAN»NI 9853»CAN1)を選択します。
  5. FPGA I/Oノードを右クリックして書き込みに変更を選択し、CAN出力用のI/Oノードとして使用します。
  6. I/Oノードを右クリックしてプロパティを選択し、データタイプを選択します。

CAN出力を使用する前にCANポートの通信を開始してください。通信を開始するには、モジュール構成Auto Startを有効にするか、開始メソッドを呼び出します。

LabVIEW FPGAからモジュール上のCANポートへの通信パスはFIFOで実装されます。CAN出力ノードはFIFOの要素が利用可能になるまで待機し、その後FIFOにフレームを書き込みます。他のCANフレームがFIFO内に存在しない場合、CANフレームは即座に通信を開始します。

CAN出力は、要求された通信がネットワーク上で完了したことが確認されるまで待機しません。一度に1個のCANフレームを送信する場合は、CAN Outputの後にWait on Transmit Complete(I/Oメソッド)を呼び出してください。

できるだけ高速にCANフレームを通信する場合、出力FIFOに複数のフレームを書き込みます。CANモジュールは、できるだけ高速にこれらのフレームをSJA1000コントローラに送信するため、ほぼ100%のバス負荷が発生します。

出力FIFOが一杯の場合、CAN出力ノードは要素が利用可能になるまで待機し、その後FIFOにフレームを書き込みます。CAN Advanced Port Configurationダイアログボックスの出力タイムアウト(ms)は、新規要素が利用可能になるまで待機する時間を指定します。新規要素が利用可能になるのは、前のCAN出力からのフレームのネットワークへの通信が成功したときです。Output Timeout (ms) を0に指定した場合、新しい要素が利用できないと、CAN出力ノードはTRUEのエラーステータス(エラー)を返します(ブロックなし)。エラーが返された場合は、同じフレームのCAN出力を後で再試行してください。

出力タイムアウト (ms) は、CAN出力ノードだけでなくほとんどのメソッドとプロパティにも適用されます。たとえば、出力タイムアウト (ms) が0である場合、Abort Transmitメソッドは出力FIFOが一杯である場合にエラーを返します。LabVIEW FPGAからCANポートへの出力パスについての詳細はアービトレーショントピックを参照してください。
メモ FPGA I/Oノードに複数のCAN出力ポートを追加でき、FPGA I/Oノードを右クリックして要素を追加を選択することで、同じFPGA I/Oノードにアナログおよびデジタル出力も追加できます。作成したI/Oノードを右クリックしてFPGA I/Oを選択をクリックし、I/O名を指定します。1つのノードに複数の出力を使用する場合、一番上の出力から順次に実行されます。出力の待機中に1つの出力がブロックされると、次の出力が遅延します。

プロパティダイアログ

メモ 本コンテンツの日本語版は、便宜を図るために自動翻訳で提供されています。正確な最新情報については、英語版をご覧ください。

Data Typeは、CAN入力ノードに書き込まれるCANフレームのタイプを選択します。利用可能な値はCluster(デフォルト)およびArray of 6 U32です。

Clusterデータタイプを使用する利点は以下のとおりです。

  • 使いやすいシンプルなブロックダイアグラム
  • フロントパネルを使用せずブロックダイアグラムのみに使用を限定する場合、高速で効率的

Array of 6 U32データタイプの利点、およびホストVIに一度に整数をハンドシェイクする利点は以下のとおりです。

  • ホストVIへの通信が高速
  • 使用するFPGAゲートが少ない

クラスタと配列の使用の詳細については、LabVIEW FPGA アプリケーションにおけるクラスタと配列の使用に関するメモを参照してください。

ノード入力

メモ 本コンテンツの日本語版は、便宜を図るために自動翻訳で提供されています。正確な最新情報については、英語版をご覧ください。
  • エラー入力 —任意。デフォルトでは表示されません。ノードを右クリックしてエラー端子を表示を選択すると有効になります。
  • CANx データタイプクラスタ(デフォルト)に設定されている場合、CANフレームはクラスタとして表現されます。クラスタ要素については、以下のテーブルを参照してください。
  • 表 539. Canxクラスタ要素
    Data Type 要素 説明
    タイムスタンプ (High) 無視されます。通信要求はできるだけ早く発生します (タイミング情報は無視されます)。
    タイムスタンプ (Low) 無視されます。通信要求はできるだけ早く発生します (タイミング情報は無視されます)。
    識別子

    アービトレーションID。

    ビット29 (16進数形式で20000000) がクリアである場合、このIDは標準形式 (11ビット) を使用します。

    ビット29が設定されている場合、このIDは拡張形式 (29ビット) を使用します。

    CAN識別子のこの表記法はNI-CANと同じです。

    タイプ フレームのタイプ。
    • データフレーム: 0
    • リモートフレーム: 1
    インフォA 将来の使用のために予約済みです。
    インフォB 将来の使用のために予約済みです。
    データ長

    データフレームの場合、データ(0~8)内のバイト数を示します。

    リモートフレームの場合、要求されたバイト数を示します。

    データ

    データフレームの場合、データバイトを提供します。この配列は、8バイトの固定サイズを使用します。

    データタイプ6つのU32の配列に設定されている場合、CANフレームは下記のテーブルのように6つのU32値の配列として表現されます。

    表 540. 6つのU32値の配列
    最上位バイト ... ... 最下位バイト
    タイムスタンプ(上位U32)
    タイムスタンプ(下位U32)
    識別子
    タイプ インフォA インフォB データ長
    データ[0] Data[1] Data[2] Data[3]
    Data[4] Data[5] Data[6] Data[7]

    上記のテーブルにおける各要素の意味は、クラスタデータタイプの場合と同じです。

    ノード出力

    メモ 本コンテンツの日本語版は、便宜を図るために自動翻訳で提供されています。正確な最新情報については、英語版をご覧ください。
  • エラー出力 —任意。デフォルトでは表示されません。ノードを右クリックしてエラー端子を表示を選択すると有効になります。 出力タイムアウト (ms) を-1に設定して永久に待機するようにしていない限り、CAN出力が確実に通信用にCANフレームを送信したかどうかを、エラー端子を使用して判断する必要があります。