Visual Basicを使用してDSA(NI4451/4452/4454/4472)用のプログラムを従来型NI-DAQ関数を用いて行う際の注意点



ハードウェア: Modular Instruments>>Digital Transmission Analyzers

問題: Visual Basicを使用してDSA(NI4451/4452/4454/4472)用のプログラムを従来型NI-DAQ関数を用いて行う際の注意点

解決策: Visual Basicを使用してDSA(NI4451/4452/4454/4472)用のプログラムを従来型NI-DAQ関数を用いて行う際にはいくつか注意する点があります。
以下にその注意点を列挙いたしますので、ご参照下さい。


  1. ゲインの設定
    DAQデバイスと異なり、DSAデバイスはゲインの設定がdBで定義されています。NI-DAQをインストールした際に同時にインストールされるVisual BasicのサンプルはDAQデバイス用に作成されているため、ゲインは線形で1と設定されており、そのままDSAデバイスに適用しようとすると、エラーが発生します。
    そこで、DSAデバイスに対してこのサンプルを使用する場合は、このゲインの設定をdB単位に変更してください。
    また、それぞれのデバイスに対するゲイン値の設定に関しましては、下記のリンクにあります「ダイナミック信号アナライザ(DSA)のゲインはどのようにして設定すればよいのでしょうか?」をご参照下さい。

  2. データタイプの扱い
    Visual BasicでのDSAに対するバイナリDAQバッファの振る舞いは独特で、バイナリのバッファは"Integer"(16ビット符号付き整数)で宣言されていますが、DSAデバイスは実際は32ビットメモリを使用してデータのサンプリングを行います。NI-DAQドライバはVisual Basicの配列に二倍のメモリ空間を使用してデータを格納します。Visual Basicの環境では直接集録したデータの半分のバイナリデータしか読み込めませんが、DAQ_VScaleの関数はバイナリコードの全てのデータをスケーリングしたデータに変換します。そのため、DAQ_Vscale関数を使用することによって生のバイナリデータより精度を失うことなく読み込むことが可能です。

  3. DAQ_RateとWFM_Rate
    MIOデバイスでは、アナログ入出力のsampInterval、Timebaseの設定には、以下のようにDAQ_RateやWFM_Rateが使用されます。

    iStatus% = DAQ_Rate(dSampRate#, iUnits%, iSampTB%, uSampInt%)

    しかし、DSAデバイスを使用する場合、DAQ_StartやScan_StartなどのsampInterval、Timebaseなどの設定は反映されません。
    そのため、DSAデバイスのサンプリングレートの設定の際には以下のようにDAQ_Rate関数をDAQ_Set_Clockに、WFM_RateをWFM_Set_Clockに置き換えてください。

    iStatus = DAQ_Set_Clock (iDevice, 0, dSampRate#, 0, actualRate%)

  4. sampleRateとscanRate
    従来型NI-DAQに含まれる関数"Scan_op"にはsampleRateとscanRateという引数を入力する必要があり、それぞれ集録のタイミングとチャンネルの切り換えのタイミングを決めるパラメータです。このScanRateはマルチプレクサを使用してチャンネルの切り替えを行うE-シリーズに対して設定するパラメータですが、マルチプレクサを使用しないDSAデバイスやS-シリーズのデバイスの場合はチャンネルの切り替えを行わないため、ScanRateに与えた値がそのままサンプリングレートとして反映され、この際sampleRateに与えた値は反映されません。

    SCANsingleBufSyncなどのScan_opを使用したサンプルでは、デフォルトでScanRateが0に設定(インターバルサンプリングの設定になっています)されていますが、DSAデバイスやS-シリーズのデバイスの場合はScanRateに対する引数として0を許容しないためエラーが発生します。
    そのため、DSAデバイスをご使用の場合は、ScanRate引数にに集録を行う際に設定したいサンプリングレートを設定してください。

  5. シングルポイントスキャン
    DSAデバイスはシングルポイントスキャンをサポートしておりません。そのため、AI_Vreadなどを使用してシングルポイントスキャンを行うとするとエラーが発生します。DSAデバイスをご使用の場合は有限もしくは連続でのデータ集録を行ってください。

  6. Scan_Demux関数について
    DSAデバイスを用いて複数チャンネルの集録を行った際に返された集録データに対しては、Scan_Demuxを使用してデータの並び替えを行うことができません。
    Scan_StartやScan_Opなどの関数を使用してサンプリングを行った場合
    Channel 1のSample 1, Channel 2のSample 1, Channel 3のSample 1, ... , Channel 1のSample 2, Channel 2のSample 2, Channel 3のSample 2, ...
    のような順序でデータが返されますので、複数チャンネルからデータを読み込んだ場合にはご自身でデータの並び替えを行っていただく必要があります。


関連リンク: ダイナミック信号アナライザ(DSA)のゲインはどのようにして設定すればよいのでしょうか?
なぜ、DSAボードでシングルポイントアナログ入力/出力VIを使用するとエラーがでるのですか?
AI Read VIのデータタイプをバイナリに設定すると信号が正しく読み込めていないように見えます


添付:





報告日時: 12/06/2004
最終更新日: 12/19/2004
ドキュメントID: 3G502LXR