アーカイブ済:NI-CANを使用してCANフレームで拡張IDを使用する方法

更新しました Jul 20, 2019

ナショナルインスツルメンツは、現在このドキュメントを更新していません。

この内容は旧製品や技術に対応しているため、リンクが切れていたり、OSや関連製品などの情報が最新ではない可能性があります。

使用製品

Hardware

  • USB-8473

Software

  • LabVIEW

Driver

  • NI-CAN

問題

USB-CANデバイスへの書き込み時に29ビットの拡張アービトレーションIDが正しくないのはなぜですか?バスモニタを使用してアービトレーションIDを確認しても、この問題が発生していることを確認しました。

解決策

書き込みおよび読み取りを行う前に、拡張アービトレーションIDに対して変換を実行する必要があります。ncWriteNet.viまたはncWriteNetMult.viを使用してアービトレーションIDを書き込む前に、拡張アービトレーションIDと16進表現0x20000000との論理和(OR)を計算する必要があります。IDがncReadNet.viまたはncReadNetMult.viで読み取られている場合、拡張アービトレーションIDは同じ16進数0x20000000と排他的論理和(XOR)されなければなりません。これにより正しいアービトレーションIDが生成されます。
 

これは、30番目のビットが拡張または標準のアービトレーションIDを識別するために使用されるためです。アービトレーションIDは32ビットで表されますが、30番目のビットがHighの場合、拡張アービトレーションIDが使用されます。この場合、29ビットがアービトレーションIDとして割り当てられます。30番目のビットがLowの場合、標準アービトレーションIDが使用されます。この場合、11ビットがアービトレーションIDとして割り当てられます。
 

メモ: ドライバに付属するほとんどのサンプルプログラムは、標準アービトレーションIDを使用するように作成されています。拡張アービトレーションIDを使用しているサンプルプログラムは、「Transmit Receive same Port.vi」です。NIサンプルファインダからこのサンプルプログラムを参照可能です。


このサンプルプログラムのフロントパネルは、下図のように作成されており、拡張アービトレーションIDを使用するかどうかを手動で設定できます。


 

この記事はお役に立ちましたか?

いいえ