NI製品ディスカッション

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

NI9263を用いた電磁アクチュエーターの駆動制御

解決済み
解決策を見る

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

現在c-RIOとNI 9263を用いて電磁アクチュエーターの駆動制御を行うプログラムを作成したいと考えています。

csvファイルに保存された電圧情報を9263を通して電磁アクチュエータに出力したいのですが、どのようなコードを書けばよいのでしょうか。

また、今回作成するプログラムをFPGAモードで作成した別のVIに組み込む予定なので、今回もFPGAモードで作成したいと考えております。

拙い質問で大変恐縮ですが、どうかお力添えお願いいたします。

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

平素よりNI製品をご利用頂きまして誠に有難うございます。

日本ナショナルインスツルメンツ技術部の岡﨑です。いつもお世話になっております。

 

まずプログラムの流れとしてはWindowsVIでファイルを読み込む必要があります。

ファイルがエクセルとのことでしたら、LabVIEWからの読み込みは可能となります。

下記資料のサンプルが参考になると思われます。

 

http://www.ni.com/example/28409/en/

 

WindowsVIでエクセルファイルを読み込んだ後、

DMA FIFOを使用してFPGAモードのVIへデータ転送する方法を推奨いたします。

DMA FIFOの使用につきましては下記の様な資料もございます。

(英文資料となっておりますが、ご参考になれば幸いです)

 

http://zone.ni.com/reference/ja-XX/help/371599H-0112/lvfpgaconcepts/fpga_dma_how_it_works/

 

http://zone.ni.com/reference/en-XX/help/371599M-01/lvfpgaconcepts/fpga_transfer_data/

 

上記内容をご確認頂き、ご不明な点等あればご連絡くださいますようお願いいたします。

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

メッセージ2/13
2,512件の閲覧回数

まずCSVファイルについては下記の資料のように一つの関数を使えば読み取りは可能です。

.csv形式のスプレッドシートファイルをLabVIEWに取り込む方法

 

読み取ったデータを、下記のようにDMA FIFOを用いてWindowsからFPGAへ転送すればよいです。

Use DMA FIFOs to send data to and from an FPGA target (bidirectional data transfer)

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

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

皆様、非常に丁寧なご回答ありがとうございます。

参考にさせて頂きます。

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

プログラムを試作してみたのですが、FPGAの方でFIFOから電圧データを取り出す際に、データが一部抜け落ちているようです。

添付はFPGAのプログラムとホストのプログラムなのですが、どこを直せばよいのでしょうか。

自分では書き込みの速度のほうが読み取りの速度よりも遅いことが原因ではないかと考えているのですが、書き込みの速度はどのように設定すればよいのでしょうか。

電圧データはlvmファイルに直して取り込むことにしました。

未熟な質問で大変恐縮なのですが、よろしくお願いいたします。

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

抜け落ちはどのように確認しています?

もしFPGA側の波形チャートを見てそうおっしゃっているのであれば、FPGAの処理速度は25nsecにもなりますので、チャートの描画速度が高速すぎて、抜け落ちの確認は不可能です。

 

もしAOの出力電圧を見てそうおっしゃて散るのであれば、あえてFPGA側のWhileループを遅くし、読み取り速度を遅くしてデバッグしてみるのはいかがでしょう。

 

蛇足ですが、Whileループの中にエラーポップアップの関数が入っていると、エラーが発生するたびにポップアップが出て煩わしいのでお勧めしません。あと、FPGA上で扱うデータはSGL、書き込んでいるデータはDBLですが、このデータ型が不一致なのは問題ありませんか?

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

GCentral
0 件の賞賛
メッセージ6/13
2,372件の閲覧回数

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

抜け落ちの確認についてですが、オシロスコープで確認しようとしたところ、正常な波形が得られなかったため、おっしゃる通り、ひとまずFPGA側に波形チャートを設置して確認しようとしておりました。

オシロスコープで正常な波形が得られなかったことに関しては、プログラム上で何か問題になり得る部分がありますでしょうか。

 

その他ご指摘いただいた点に関しましても修正させていただきます。

ありがとうございます。

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

ファイルからの読み取り値ではなく、たとえば定数を1,2,3,....10と配列の形で書き込んだ場合はいかがですか?

 

デープログラム上で問題となりうる点として、SGLデータを <+/- 20, 5>のFXPに強制変換されている点が気になっています。

本来書き込むデータはFXPに変換した上でFPGAに書き込むほうがベターです。

 

まずは自明の値を書き込んでみて、データ型の問題か、それとも処理速度の問題か切り分けるとよいと思います。

 

 

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

GCentral
0 件の賞賛
メッセージ8/13
2,356件の閲覧回数

Emboar様のアドバイスに従い、定数を送ってオシロスコープで確認したところ、やはり正常な波形が得られませんでした(データの抜け落ち以前に送っている数値が変わってしまっているようです)。

そのため、データ型を修正しようとしているのですが、浮動小数点から固定小数点への変換がうまくいきません。

添付はホストのプログラムとハイライトモードで実行した際のスクリーンキャプチャなのですが、原因が分かりません。

FXPに変換関数の使い方が間違っているのか、FXPに変換関数の構成が間違っているのでしょうか。

大変恐縮ですが、ご回答いただければ幸いです。

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

すみません。

変換に関しては解決いたしました。

やはりデータの抜け落ちがあるようなので引き続き原因を調査していきたいと思います。

0 件の賞賛
メッセージ10/13
2,307件の閲覧回数