NI製品ディスカッション

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

whileループのループタイムのばらつき

いつもお世話になっております。

NI9223を用いて電圧データを保存するプログラムを作成したのですが、ループタイムを計測したところループタイムにばらつきがあることが分かりました。

原因を探っていたのですがよく分かりません。

添付のVIなのですが問題になり得る部分があるでしょうか。

ばらつきについてなのですがAI sample rateを500Hz、software loop timeを2msに設定したところ、測定されたループタイムが1~3msの間で変動していました。

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

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

すみません。

添付が上手くいっていなかったようなのでスクリーンショットを添付いたします。

すべてをダウンロード
0 件の賞賛
メッセージ2/7
2,180件の閲覧回数

使用されているティックカウントの関数は分解能1msecなので、

1msecのずれを論ずるのはあまり意味のないことと思います。

 

その上でまずは、RT Applicationの確定・非確定タスクの考え方を学ばれるべきです。

Creating Deterministic Applications with the Real-Time Module (Real-Time Module)

ループの中でTDMSへの書き込みを行ってますが、

Dividing Tasks to Create Deterministic Multithreaded Applications

の項を見ていただくと、これは非確定タスクなのでループを分けることが推奨されます。

 

他にも強制ドットをなくす、そもそもグラフを置かないなど、改善できるところは複数あるかと思います。

Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

GCentral
メッセージ3/7
2,165件の閲覧回数

お世話になっております。

Emboar様のアドバイスに従い、データの読み出しと保存でループを分け、シェア変数を用いてループ間のデータのやり取りをしようとしているのですが上手くいきません。

保存側で一度読み取られたデータを複数回読み取って保存してしまいます。

これはどのように解決すべきでしょうか。

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

すべてをダウンロード
0 件の賞賛
メッセージ4/7
1,969件の閲覧回数

HIKO様

 

平素よりNI製品をご愛顧頂きありがとうございます。

日本ナショナルインスツルメンツ技術部の伴です。

 

画像を拝見させていただきました。

確認させていただきたい内容が複数ございますので、

以下についてご回答いただけますと幸いです。

 

1.一度集録されたデータが複数回保存ループで呼び出されているという認識でよろしいでしょうか。

2.FPGAターゲット上でデータを集録しているという認識で合っていますでしょうか。

3.FIFOでのデータ転送は既にお試しいただいておりますでしょうか。

 

もしFIFOでのデータ転送はまだお試し頂いていなければ、お試し頂く事は可能でしょうか。

シェア変数は一般的にはネットワーク上、複数ループ間などで最新値のみの受け渡しをする際に使用されます。

尚、FIFOでのデータ転送では確実に書き込まれたデータを漏れなく転送できますので、

今回お試し頂ければと存じます。

 

FIFOについての概要は以下のリンクにてご確認いただけます。

 

FIFOを使用してデバイスまたはストラクチャ間でデータを転送する (FPGAモジュール) - LabVIEW 2018 FPGAモジュールヘルプ - National Instruments

http://zone.ni.com/reference/ja-XX/help/371599P-0112/lvfpgaconcepts/fpga_transfer_data/

 

また、FIFOの作成方法についての資料もございますので、

ご参考にして頂けると幸いです。

 

FPGA VIでFIFOを作成する (FPGAモジュール) - LabVIEW 2018 FPGAモジュールヘルプ - National Instruments

http://zone.ni.com/reference/ja-XX/help/371599P-0112/lvfpgahelp/fpga_creating_fifos/

 

ご確認の程よろしくお願い申し上げます。

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

日本ナショナルインスツルメンツ技術部 伴様

ご回答ありがとうございます。

説明が不足しており申し訳ありません。以下に御質問の回答をさせて頂きます。

1. 仰る通り、一度集録されたデータが複数回保存ループで呼び出されているようです。

2. 仰る通りです。

3. FIFOではまだ試していないので試してみます。

 

リンクの添付等ご親切にありがとうございます。

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

「同じ値を読んでいる」のは、RT側で制御器読み取り・書き込みによって値を読み込んでいるからですね。

これでは、FPGA側が制御器・表示器の値を更新するまで、同じ値を読み込んでしまいます。

ご指摘のようにFPGA FIFOを使用することで解決するかと思います。

 

一方FPGA FIFOを使用するのであれば、タイミングループは不要になると思います。

なぜなら、FPGA FIFOへのデータ書き込み速度によって読み取りに必要な時間は決まるからです。

 

1msec毎に10個データをFPGAから書き込む、RT上の読み取りで毎回10個読み取りたいのであれば、

ループレートは必然的に1msecとなります。

Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

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