NI製品ディスカッション

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

PCI-6250での内部クロックによるサンプリング

 VisualStudio 2005のC#で、PCI-6250を利用して、内部クロックで、ア
ナログ入力するプログラムを作成しています。内部クロックが16Hz、サン
プリング点数が96点なので、サンプリングには、約6秒かかるはずですが、
以下のプログラムだと、瞬時にサンプリングが終了して、結果も返ってき
ます。(値の検証はまだしていません)何処が悪いのでしょうか?
 なお、対象のフレームワークは、.NET Framework 2.0です。
 
--- プログラム ----
   // AIタスクを作成する。
   Task aiTask = new Task();
   try {
    string sch = "Dev1/ai0:7";
    // AIチャネルを作成する。
    aiTask.AIChannels.CreateVoltageChannel(sch, "", AITerminalConfiguration.Differential,
                 -5.0, 5.0, AIVoltageUnits.Volts);
    // サンプリング点数
    int SampleCount = 96;
    // 内部クロック
    string sClockSource = string.Empty;
    double SampleRate = 16.0;
    // AIサンプリングクロックを設定する
    aiTask.Timing.ConfigureSampleClock(sClockSource, SampleRate, SampleClockActiveEdge.Rising, SampleQuantityMode.FiniteSamples, SampleCount);
    aiTask.Stream.ReadAutoStart = false;
    aiTask.Control(TaskAction.Verify);
    AnalogMultiChannelReader aiReader = new AnalogMultiChannelReader(aiTask.Stream);
    aiTask.Start();
    while (! aiTask.IsDone) {
    }
    double[,] aiData = aiReader.ReadMultiSample(SampleCount);
    aiTask.Stop();
    aiTask.Dispose();
    FAiData = aiData;
    return 0;
   } catch (Exception ex) {
    // AIタスクが残っていれば、リセットする。
    if (aiTask != null) {
     aiTask.Dispose();
    }
    throw ex;
   }
  }
 
0 件の賞賛
メッセージ1/3
3,677件の閲覧回数
DaqQ様

平素よりNI製品をご利用いただき誠にありがとうございます。
日本ナショナルインスツルメンツ技術部の木村と申します。

上記のコードを拝見しましたところ特に問題の原因になりそうな項目は
ございませんので、問題の現象についてもう少し詳しくご説明ください。
以下の2つの質問にお答えいただければと思います。

1. 「瞬時にサンプリングが終了して」と仰いますが瞬時というのはどのようなことでしょうか?
    例えば
   aiTask.Start();
  と
   double[,] aiData = aiReader.ReadMultiSample(SampleCount);
  の間のWhileループで6秒かかっていないということでしょうか?
     それともデータがいっぺんに全部表示されるということでしょうか?
  プログラムの実行開始から6秒かかっていないうちにタスクが終了しているのでしょうか?
2. 読み取られるデータは実際に予想しているデータですか?

ご利用いただいている有限サンプルの集録方法ですと96サンプルのデータが16Hzで
一度デバイスのバッファに蓄積されます。96サンプルすべてがバッファにたまった後に
PCへこのデータが転送され、プログラムから読めるようになります。
よって、この方法ですとデータは一度に96サンプル全部出力されますが
実際に集録には6秒かかっているはずです。

動作確認がされているサンプル等はこちらのリンクで紹介されていますので
ご参照ください。
  Visual C# .NET を使った DAQ プログラミング
  http://digital.ni.com/public.nsf/websearchj/A20418336F02A21586256EC1003FCC88?OpenDocument

以上の内容でご不明な点等ございましたらご連絡願います。
また、まだ問題が回避されていないようであれば上記の質問に
お答えいただけますようお願いします。
よろしくお願いいたします。

日本ナショナルインスツルメンツ技術部
木村
0 件の賞賛
メッセージ2/3
3,641件の閲覧回数

日本ナショナルインスツルメンツ

 技術部 木村様

 

 返信有難う御座います。ご質問の件ですが、以下の通りです。お手数ですが宜しくお願いします。

1. 「瞬時にサンプリングが終了して」とはどういう事か?

   aiTask.Start();

  と

   double[,] aiData = aiReader.ReadMultiSample(SampleCount);

  の間のWhileループが6秒かかっていません。感覚的に1秒以下です。また、aiReader.ReadMultiSample(SampleCount);

 も感覚的に瞬時(1秒以下)に終了します。

2. 読み取られるデータは実際に予想しているデータか?

 正常に内部クロックで動作してから検証しようと思い、検証していませんが、値はともかくとして、

double[,] aiData = aiReader.ReadMultiSample(SampleCount);で読み込むデータの個数は合っています。

 


 

 

 

0 件の賞賛
メッセージ3/3
3,630件の閲覧回数