12-11-2006 09:13 PM
12-14-2006 06:10 AM
12-15-2006 02:49 AM
早速のご返信ありがとうございました。
説明不足で申し訳ございません。
>周波数を変更する場合ですが、いったんタスクを停止し、再度設定を行い、そしてタスクを再度スタートさせる方法になる。
上記の方法で、確認いたしましたが、周波数の不自然な変動が起こってしまいます。(具体的には、60.00Hz→60.01Hzと連続的に変動させたいのですが、60.00Hz→59.0Hz(一瞬)→60.01Hzとなってしまい、連続的に変動しない。)
これは、タスクを停止し、再設定を行っている間、微小な時間ですが、信号が出力されないため起こるのではないでしょうか?
以下、御社のサンプルに押しボタンのGUIを追加し、以下のコードを追加しました。不連続な周波数の変更が確認できると思います。
Private Sub Command1_Click()
‘再設定
samplesPerBufferTextBox.Text = samplesPerBufferTextBox.Text + 10
desiredSampleClockRate = ((frequencyTextBox.Text) * (samplesPerBufferTextBox.Text)) / (cyclesPerBufferTextBox.Text)
sampsPerCycle = samplesPerBufferTextBox.Text / cyclesPerBufferTextBox.Text
resultingFrequency = (desiredSampleClockRate) / (sampsPerCycle)
GenerateSineWave resultingFrequency, amplitude, desiredSampleClockRate, numSampsPerChannel
‘タスク停止
DAQmxErrChk DAQmxStopTask(taskHandle)
‘再スタート
DAQmxErrChk DAQmxWriteAnalogF64(taskHandle, numSampsPerChannel, True, 10#, _
DAQmx_Val_GroupByScanNumber, data(0), sampsPerChanWritten, ByVal 0&)
End Sub
上記の不連続な変動を防ぐために、常に同じ形の波形を出力し、
DAQmxCfgSampClkTimingで、rate(更新タイミング)を変更し、
DAQmxWriteAnalogF64で出力タイミングのみの変更を行って、出力波形の周波数変更を行っています。
そこで、
4チャンネルそれぞれを独立して(非同期)に、更新タイミングを変更させることはできませんでしょうか?
また、なるべく周波数が不連続に変動しない出力方法はありませんでしょうか?
以上よろしくお願いします。
12-22-2006 01:24 AM
12-22-2006 01:36 AM