NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

USB-8506のプロパティを設定するには?

こんにちは。

 

最近USB-8506を入手し、とりあえずフレームを1往復させることを目標に勉強中です。環境はVS2017、言語はひとまずC(サンプルコードがCだったので)、

C/C++プログラミングは全く問題ありませんが、LINとUSB-8506に関しては今回が初めてです。

 

USB-8506をマスタとした1対1通信で、NI-XNET Hardware and Software Manual(PXI8517).pdfの4-157ページ、Interface:LIN:TerminationのプロパティをONにして使いたいのですが、この設定方法が判りません。

 

プロパティにアクセスするためのAPIやマクロがあるのだと思い、マニュアルやヘッダを漁っているのですが、見当たりません。

 

多分すごく簡単なことだと思うので申し訳ない感じですが、

よろしくお願いします。

0 件の賞賛
メッセージ1/7
2,383件の閲覧回数

平素よりNI製品をご愛顧頂きありがとうございます。
日本ナショナルインスツルメンツ技術部の上野です。

 

現在参照されているのは、4-157ページとのことですが、第4章はLabVIEW用の説明です。C言語用に関しては第5章に記載されています。

 

C言語の場合、Interface:LIN:TerminationのプロパティはnxPropSession_IntfLINTermとなります。詳しくは下記のページをご参照ください。

 

 

0 件の賞賛
メッセージ2/7
2,303件の閲覧回数

上野様、ありがとうございます。

 

教えていただいたnxPropSession_IntfLINTermがヒントになり、
nxSetProperty()とnxGetPropertySize()のAPIを見つけ、
↓の関数を作り、

 

|void setNxProperty(nxSessionRef_t sessionHandle, u32 propertyID, void* propertyValue) {
| nxStatus_t nxStatus = 0;
|
| //プロパティサイズを問い合わせる
| u32 propertySize = 0;
| nxStatus = nxGetPropertySize(sessionHandle, propertyID, &propertySize);
| if (nxStatus != nxSuccess) {
| DisplayErrorAndExit(nxStatus, "nxGetPropertySize");
| }
|
| //そのサイズでプロパティを設定する
| nxStatus = nxSetProperty(sessionHandle, propertyID, propertySize, propertyValue);
| if (nxStatus != nxSuccess) {
| DisplayErrorAndExit(nxStatus, "nxSetProperty");
| }
|}

 

↓の様に呼び出して、
| u32 intfLINTerm = nxLINTerm_On;
| setNxProperty(nxSessionHandle, nxPropSession_IntfLINTerm, &intfLINTerm);

 

設定が上手くいっていれば、データラインがプルアップされると思うので、D-SUBの3-7
ピン間の電圧を確認しましたが、0Vのままでしたので多分失敗していると思います。

 

コンパイルは通りますし、エラー表示もありません。
確認の方法が悪いのでしょうか?

 

0 件の賞賛
メッセージ3/7
2,284件の閲覧回数

D-SUBの3-7ピン間ということは、LIN - COM間でしょうか?

 

ご参照いただいているユーザマニュアルの3-16にあるとおり、そのプロパティでソフトウェア的に有効にできる終端抵抗は、LINバスおよびVBat間(7-9ピン間)です。

この間で仕様書にあるとおり1 KΩの抵抗が有効になるかをご確認ください。

 

0 件の賞賛
メッセージ4/7
2,273件の閲覧回数

>この間で仕様書にあるとおり1 KΩの抵抗が有効になるかをご確認ください。

 

その確認のためにLIN - COM間の電圧を見ています。

抵抗ONならLIN - COM間が0Vなのはおかしくないですか?

 

LINバスおよびVBat間(7-9ピン間)で仕様書にあるとおり1 KΩの抵抗が有効になるかを確認するためにはどうすれば良いですか。テスターで抵抗を見るのですか?、具体的にお願いします。

0 件の賞賛
メッセージ5/7
2,253件の閲覧回数

おっしゃるとおりですが、LIN-COM間で期待する電圧を確認するには、外部電源からVbatへの電圧印加、プログラム的にプルアップ抵抗を有効化、スレーブ機器を接続して通信回路を閉回路にしておく必要があるかと思います。

 

具体的には、テスタを用いてVbatでの電源電圧を電圧測定し、Terminationプロパティを有効にするプログラムの動作確認として、テスタを用いた抵抗測定をおこなってから、USB-8506とスレーブにおけるLIN-COM間での電圧をご確認ください。

0 件の賞賛
メッセージ6/7
2,233件の閲覧回数

テスタで測って17.7KΩでした。nxPropSession_IntfLINTermの設定が0でも、1でも同じです。やはり効いていません。時間が無いので抵抗外付けで対応します。ありがとうごございました。

0 件の賞賛
メッセージ7/7
2,223件の閲覧回数