NI製品ディスカッション

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

USB-8506を利用したLIN通信(フレーム送信毎にカウントアップしたデータを送りたい)

解決済み
解決策を見る

USB-8506を利用して、下記の様な通信を繰り返し実施したいと考えています。

ID

送信間隔

データ例(フレーム内の一部を抜粋)

0x01

10㎳

AA1

0x02

10㎳

BB1

0x10

10㎳

(テスト機器からの読み込み)

0x01

10㎳

AA2

0x02

10㎳

BB2

0x11

10㎳

(テスト機器からの読み込み)

0x01

10㎳

AA3

0x02

10㎳

BB3

0x20

10㎳

(テスト機器からの読み込み)

0x01

10㎳

AA4

0x02

10㎳

BB4

0x21

10㎳

(テスト機器からの読み込み)

0x01

10㎳

AA5

0x02

10㎳

BB5

0x22

10㎳

(テスト機器からの読み込み)

0x01

10㎳

AA6

0x02

10㎳

BB6

0x23

10㎳

(テスト機器からの読み込み)

機器側の制約で、ID毎の連番がずれてしまうとエラーとして受け付けてくれない状態となっており、
また、依頼元からは、タイムスケジュールの変更は不可との連絡があり、困っています。(送信間隔を広げられれば何とかなりそうなのですが・・・。)

パソコンからある程度のデータセットを準備して一括送信しておく方法はないのでしょうか?

なお、プログラム言語は、C++を利用しています。

0 件の賞賛
メッセージ1/5
2,437件の閲覧回数
解決策
トピック作成者t2255が受理

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

 

実施されたい内容について記載して頂いておりますが、現状としてはどういった点が問題になっているでしょうか?

(例えば、ID側の連番がずれてしまうことが起きている、送信間隔がまちまちになってしまっている、何かエラーが発生している、等々)

 

プログラムの組み方が不明、ということでしたら、サンプルの提供は行なっていないものの、X-NETドライバを使用している場合下記にサンプルがインストールされていると思います。

C:\Users\Public\Documents\National Instruments\NI-XNET\Examples\MS Visual C\LIN

こちらのサンプルはご確認いただいている状態でしょうか?

 

内容をお伺いしている限りでは、Streamモードが参考になるかもしれません。

解決済み: Re: LIN communication C API example - NI Community
https://forums.ni.com/t5/Automotive-and-Embedded-Networks/LIN-communication-C-API-example/m-p/321781...

 

以上宜しくお願い致します。

 

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

ご連絡ありがとうございます。 また、現状と、試したことを記載していなかった点については申し訳ありませんでした。

 

まず、現状ですが、データの送信は出来ているのですが、パソコンの処理能力の問題か指示間隔送信データの連番がずれてしまう状態です。(1つのフレームに対し同じデータを連続で送ってしまったり、番号が飛んでしまったりする。)

なお、通信確認は、物理的に2ポートを接続し、片方から出力、もう片方からNI-XNETバスモニタにて信号の内容を確認するという方法で確認しています。

 

セッションモードに関しては、サンプルにて提供されているものを試してはいるのですが、理解が足りないのか思った動作をしてくれない状態で、「NI-XNET Hardware and Software Help」を確認した中で可能性が高そうなFrame Output Queued Modeに関して、LIN通信向けのサンプルが無い様で自分なりに組み立てようよしているのですがうまく動作させれていない状態です。(値を出力させる事ができていない状態です。nxWriteFrameへ渡す値の理解が不足しているのだと考えています。)

ご提案いただいたStreamモードに関してもLIN通信向けサンプルが無いようではありますが、確認してみようかと思います。

0 件の賞賛
メッセージ3/5
2,408件の閲覧回数
解決策
トピック作成者t2255が受理

t2255様

 

横から失礼します。

やりたいことについて教えていただきありがとうございます。

ただ、現在の問題について詳細が明確ではないので、以下を確認してください。

 

1)”指示間隔送信データの連番がずれてしまう状態” というのは送信すべき2つのフレームが0x01、0x02の順番が0x02、0x01になってしまうとのことでしょうか。バスモニター上のスクリンショットやデータのログなどがあれば参考になるかと思います。

送信順番が問題であれば、繰り返し送信するフレームリストを定義したLIN通信用のスケジュールを作って、お試しください。(01, 02, 10, 01, 02, 11, 01, 02, 20, ,,, の順番で繰り返し送信するフレームを全部定義してください)

sample xnet database.PNG

 

2)LINのプログラムを1から作成するにはかなりの工夫がいると思います。(どのセッション(Single Point, Queue, Stream)を使い、どの周期でプログラムを回すかなど。)

現在のテスト機器の制約でタイムスケジュールの変更が難しいのであれば、USB-8506でループバックテスト(Port 1がマスタ、Port 2がスレーブ)をして、正常に動作する簡単なプログラムから確認して、修正していただければと思います。

 

また、スケジュールもかなり長いので、一部だけ定義してお試しすることも推奨します。

 

よろしくお願いいたします。

 

日本NI ヨン

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

アドバイスありがとうございます。

 

解決できました(ただの確認不足でした・・・。)

セッションモードに関して、前任者のプログラムが「SignalOutXY」を利用しており、前任者が残したソースコード上の説明からこのモードでは思った動作を行うことができないと思い込んでいたのですが、改めてヘルプファイルの確認およびサンプルコードにて動作確認をしたところ、思っていた動作をすることが確認できました。(まだコーディングが終わっていませんが。)

 

お騒がせいたしました。また、貴重なお時間をいただき、ありがとうございました。

 

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