04-15-2019 07:05 AM
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++を利用しています。
解決済! 解決策の投稿を見る。
04-16-2019 07:10 PM
平素より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...
以上宜しくお願い致します。
04-16-2019 08:28 PM
ご連絡ありがとうございます。 また、現状と、試したことを記載していなかった点については申し訳ありませんでした。
まず、現状ですが、データの送信は出来ているのですが、パソコンの処理能力の問題か指示間隔送信データの連番がずれてしまう状態です。(1つのフレームに対し同じデータを連続で送ってしまったり、番号が飛んでしまったりする。)
なお、通信確認は、物理的に2ポートを接続し、片方から出力、もう片方からNI-XNETバスモニタにて信号の内容を確認するという方法で確認しています。
セッションモードに関しては、サンプルにて提供されているものを試してはいるのですが、理解が足りないのか思った動作をしてくれない状態で、「NI-XNET Hardware and Software Help」を確認した中で可能性が高そうなFrame Output Queued Modeに関して、LIN通信向けのサンプルが無い様で自分なりに組み立てようよしているのですがうまく動作させれていない状態です。(値を出力させる事ができていない状態です。nxWriteFrameへ渡す値の理解が不足しているのだと考えています。)
ご提案いただいたStreamモードに関してもLIN通信向けサンプルが無いようではありますが、確認してみようかと思います。
04-17-2019 04:15 AM
t2255様
横から失礼します。
やりたいことについて教えていただきありがとうございます。
ただ、現在の問題について詳細が明確ではないので、以下を確認してください。
1)”指示間隔送信データの連番がずれてしまう状態” というのは送信すべき2つのフレームが0x01、0x02の順番が0x02、0x01になってしまうとのことでしょうか。バスモニター上のスクリンショットやデータのログなどがあれば参考になるかと思います。
送信順番が問題であれば、繰り返し送信するフレームリストを定義したLIN通信用のスケジュールを作って、お試しください。(01, 02, 10, 01, 02, 11, 01, 02, 20, ,,, の順番で繰り返し送信するフレームを全部定義してください)
2)LINのプログラムを1から作成するにはかなりの工夫がいると思います。(どのセッション(Single Point, Queue, Stream)を使い、どの周期でプログラムを回すかなど。)
現在のテスト機器の制約でタイムスケジュールの変更が難しいのであれば、USB-8506でループバックテスト(Port 1がマスタ、Port 2がスレーブ)をして、正常に動作する簡単なプログラムから確認して、修正していただければと思います。
また、スケジュールもかなり長いので、一部だけ定義してお試しすることも推奨します。
よろしくお願いいたします。
日本NI ヨン
04-18-2019 12:49 AM
アドバイスありがとうございます。
解決できました(ただの確認不足でした・・・。)
セッションモードに関して、前任者のプログラムが「SignalOutXY」を利用しており、前任者が残したソースコード上の説明からこのモードでは思った動作を行うことができないと思い込んでいたのですが、改めてヘルプファイルの確認およびサンプルコードにて動作確認をしたところ、思っていた動作をすることが確認できました。(まだコーディングが終わっていませんが。)
お騒がせいたしました。また、貴重なお時間をいただき、ありがとうございました。