NI製品ディスカッション

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

FPGAプログラミングで作ったVIをサブVI化し別のVI上でインスタンスするとエラー

解決済み
解決策を見る

以下のようなことをLabVIEW Roboticsスタータキットを用いて行いたいのですが、
プログラム作成においていくつかエラーが発生してしまいました。
対処方法もしくはもっとよい方法があればご教授ください。

 

【最終的に行いたいこと】
LabVIEW Roboticsスタータキット2.0の各種制御器生データ(両車輪のエンコーダのパルス数、前回のループとのパルス数の差違等)を
リアルタイムで取得し、取得した値をシリアルピン(ASRL1?)へ出力する。

 

【実施方法】
RT上で使用できるStarterkit2.0用のエンコーダの制御器がなかったので、そこはFPGAの生のピンデータからもってくることとしました。
参考にしたVIはサンプルプログラムのStarter Kit 2.0 Custom FPGA Main.viで、
それのエンコーダ周りに表示器をつけたプログラムを作成、コンパイルし単独(FPGA)では動作することは確認済みです。

シリアル通信が可能な簡単なプログラム(UI上で打ったデータを送信)を作成し、ターゲット側のPCとシリアル通信ができることを確認し、
それに対して先ほどコンパイルしたencoder_motor_sample.viを「FPGA VIリファレンスを開く」に割り当てた。(状態①)
①の状態ではrunできる状況でした。

①に対して先ほどコンパイルしたencoder_motor_sample.viをサブVIとしてインスタンスするとエラーが発生しました。(状態②)

エラーリストを見ると、I/Oまわりの結線関係のエラーが発生していました。(状態0のFPGA上ではこのようなエラーはなかった)

 

【ききたいこと】
1.FPGAでコンパイルしたサブVIの使い方が間違っているのでしょうか?
2.対処方法はありますでしょうか?

以上皆様お忙しいところすいませんがよろしくお願いいたします。

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

FPGA InterfaceのRead/Write Controlを使うことで値の取得は実現できました。

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

問題が解決したとのことですので、なによりです。

 

ちなみに、FPGAをターゲットとしたVI (プロジェクトマネージャーでFPGAターゲットを右クリックして作成したVI)は、

RTOSやWindowsをターゲットとしたVI として使えません。

 

ですので、FPGA VI のデータとRT のVI のデータのやり取りには、

既に使われているFPGA Interface Read/Write Control やDMA FIFO を使用します

メッセージ3/5
5,481件の閲覧回数

ご返信ありがとうございます。

 

エラーが発生した理由がよくわかりました。

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

 

FPGAターゲットを右クリックして作成したVIもWindows/RT/Mac/Linuxなどで使うことができます。VI自体はプラットフォーム依存がないと理解しています。プラットフォーム依存があるのはVIの中に含まれる関数やノードです。今回の場合、問題があったのはI/Oノードですね。I/OノードはFPGAターゲットのみ対応で、かつそのFPGAターゲットにそのI/Oが定義されている必要があります。

TailOfGon
Certified LabVIEW Architect 2013
メッセージ5/5
5,300件の閲覧回数