迴圈造成的delay

各位大大:

     小弟在寫一個有關訊號處理的程式,是使用訊號產生器接收訊號,再使用DAQ輸出,很陽春的方塊.

     這個訊號處理的方式是,偵測訊號一次,就輸出訊號一次,訊號產生器產生的是完整波形,但DAQ輸出訊號的sample點卻差了大約25ms左右,所以弦波變成很醜的梯狀弦波,請問跑一次迴圈最快的處理速度都是ms等級的嗎?或是有辦法使迴圈執行速度變快呢?我看到的timing的vi都是以ms為單位,或是有其他辦法可以使輸出變成較漂亮的弦波呢?

     我DAQ的型號是NI PCI-6229,類比輸入的取樣速率為250kS/s,類比輸出的更新速率為833kS/s,所以硬體方面應該是沒有問題才對

     而且當程式執行約一分鐘後,會跑出下列訊息:An exception occurred within the external code called by a Call Libary Function Node.This might have corrupted LabVIEW's memory.然後就停止執行了.我想請問各位大大,這個是node設定上的問題嗎?

     小弟不才,煩請各位大大解答,感謝

     順便附上程式 http://0rz.tw/812Hx

    

    

你的問題絕對不是出在迴圈上,迴圈計算靠的是電腦的cpu跟記憶體速度。
看樣子你的問題應該是出在其他地方。
第一、PCI6229每一個channel是非同步輸出入。
第二、由跑了一分鐘會出現那些訊息看來,你應該在迴圈程式的撰寫上在sample rate或samples的數量設定上出了問題。
這同時也會讓你的波形變得很醜。

另外你的描述不是很清楚,感覺你應該是先將波型產生器接到DAQ的類比輸入上,
然後將讀取到的值再由DAQ的類比輸出端輸出。
然後將波型產生器的訊號跟DAQ輸出的訊後接到示波器上來看吧?

如果是這樣,你可能還要進行觸發(trigger)的設定才行。
總而言之,Labview的迴圈處裡速度不大可能是造成你問題的原因。

非常感謝Bridge大大的回覆

我的確是先將波型產生器接到DAQ的類比輸入上,
然後將讀取到的值再由DAQ的類比輸出端輸出。
然後將波型產生器的訊號跟DAQ輸出的訊號接到示波器上來看

我想再請問大大,如果我的電腦硬體設備都很好,那處理訊號的速度有可能到達ms以下嗎?

在labview的Example裡有一個簡單的方法可以測試回圈的速度。

Timing Template (data dep).vi

非常感謝bridge大大的回答

我已經將狀態改為"已解決"

後來在詢問一些高手後

得知在windows下跑迴圈的時間只能在ms左右

如果要到達us需要把程式編輯好寫入硬體中在DOS下直接執行

非常感謝~