NI製品ディスカッション

cancel
Showing results for 
Search instead for 
Did you mean: 

DAQ経由で複数ch.出力しようとしたときに「メモリが不足しています」と表示される

Solved!
Go to solution

WAVファイルをDAQ経由でスピーカーから出力することはできましたが、それを複数ch.出力しようとしたときに「メモリが不足しています」と表示されました。

 

具体的には1ch.出力で再生できたので、同様のブロックダイアグラムを4つ作成し、動作させたところ上記のエラーが表示されました。

0 Kudos
Message 1 of 9
(346 Views)

LabVIEWが使用できるメモリは、OSのビットネスによって異なります。

 

 

日本語版のLabVIEWは32ビット版ですので、デフォルトで2 GBまでメモリを使用できます。ただし、データを配列に格納する場合、連続したメモリアドレスに保存されるため、上限値に達しなくても連続したメモリアドレスが確保できないとメモリがいっぱいであるエラーが発生します。一般的な対処法は下記に記載されています。

 

 

 

次に同じデバイスに対するタスクをコピーしたようなコードでは、エラー-50103が発生すると思います。これは、デバイスが1つのタスクとして使用されている状態で他のタスクを実行しようとする際に発生します。

 

 

1つのタスクでは、複数チャンネルを含めることが可能ですので、以下のページを参考に1つのタスクで複数チャンネルから出力するようにする必要があります。

 

 

Message 2 of 9
(250 Views)

Y.Ueno 様

 

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

メモリ不足に関しては、仮想メモリの設定を変えることで解消いたしました。

 

エラー50103に関してなのですが、DAQmx Write(Analog 2D DBL Nchan Nsamp) .viにするとソース(波形 DBL)とシンク(ダイナミックデータ)のタイプが異なるので配線ができないのですが何かソースとシンクを合わせる手法はないのでしょうか。

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

0 Kudos
Message 3 of 9
(215 Views)

横から失礼いたします。

 

ひとまず以下の様にすることでワイヤーは繋がります。ご確認いただけますか?

 

DAQ Read Selection.jpg

0 Kudos
Message 4 of 9
(196 Views)

TAKASU 様

 

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

返信いただいたとおりに配線をするとチャンネル数の違いからエラーが発生するようです。

0 Kudos
Message 5 of 9
(136 Views)

複数チャンネルの指定については、まずフロントパネルにある物理チャンネルを指定する制御器で指定します。たとえば、以下のとおりです。0 :(コロン)3で、チャンネル0からチャンネル3までという意味になります。

 

cDAQ1Mod1/ao0:3

 

ダイアグラムでは、DAQmx書き込みVIの多態性セレクタでアナログ>>複数チャンネル>>複数サンプル>>1D波形を選択します。これで波形データタイプの1次元配列を入力できるようになります。

この配列で、要素0にチャンネル0のデータ、要素1にチャンネル1のデータ・・・といった形でデータを渡す必要があります。

 

たとえば、下記のように音声ファイルのステレオ(2チャンネル分)音声を指標配列関数で抽出して、分岐してから4チャンネルのデータを配列連結追加関数で波形データタイプの1次元配列にすることが可能です。

 

SS1.png

 

以前お送りしたSound File to Analog Output.viという名前のサンプルプログラムでも複数チャンネルでの書き込みをおこなうように設定しておりましたので、再度ご確認ください。

 

0 Kudos
Message 6 of 9
(126 Views)

Y.Ueno 様

 

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

返信遅れて申し訳ございません。

 

記載していただいたとおりに配線したところ以下のエラーが発生しました。

 

エラーコード-200293がDAQmx Write (Analog 1D Wfm NChan NSamp).vi:6390001で発生

 

考えられる理由:

生成はまだ開始されておらず、バッファ内に利用できるスペースが十分にありません。

より大きなバッファを構成するか、バッファに合うデータ以上のデータを書き込む前に生成を開始します。

プロパティ: RelativeTo
相当する値: 現在の書き込み位置
プロパティ: Offset
相当する値: 0
プロパティ: Output.BufSize
相当する値: 3924900

タスク名: _unnamedTask<9>

0 Kudos
Message 7 of 9
(97 Views)
Solution
Accepted by topic author yukinoshita

バッファサイズを232にされていますが、データ数も232サンプルであっていますか?

 

信号シミュレーションで232サンプルのデータを作成し、シミュレーションデバイスで実行してみると添付VIはエラーなく動作しています。

0 Kudos
Message 8 of 9
(60 Views)

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

無事解決いたしました。

ありがとうございました。

0 Kudos
Message 9 of 9
(57 Views)