最近我在使用NI-fpga~ cRIO9014 主要在取得類比輸入, 然後打算把得到的訊號給存起來. 但是不知道該如何做. 雖然前面有人有po過類似的問題
但是上面給他的回應是labview 8.6 而我只有使用8.5所以無法開啟! 我目前是在嘗試 write to measurment file 來做這樣的動作, 我的程式可以跑但是
資料卻不會存進檔案裡面, 希望有人可以幫幫我, 不一定要用這樣的方法只要是可以在 FPGA 或是RT 下把訊號給存起來就好了!!謝謝
在 04-09-2009 11:03 PM
你有透過 FIFO 來做存檔的動作嗎?由於 Windows, RT, 還有 FPGA loop rates 之不同,若是直接存檔會發生 data loss 的情形。
這邊你可以參考一下這個範例程式的寫法,它使用了 DMA FIFO,版本是 LabVIEW 8.0,你應該可以開啟來看。
High Speed 32-Channel Binary Data Logging with DMA Data Transfers
在 05-27-2009 09:00 AM
請問一下 是否有較簡單的範例,
這個範例太過複雜
謝謝
在 05-29-2009 07:25 AM
請問您要儲存的信號頻率如何?
使用何種模組?
上述範例是高速儲存。
在 05-31-2009 10:01 AM
我是使用CompactRIO-9014
AI NI-9215
AO NI-9263
老實說我之前有至此論譠問過,但沒確切得到解決
我目前我最快取樣時間為100HZ,真的太慢了
之後並得知有FIFO可以讓訊號值不會流失,並緩慢傳至RT作存檔
是否能告知FIFO到底如何使用,是否能給我一個簡單的範例,
於FPGA含FIFO,並傳入RT作存檔。
個人是儲存A/D訊號,取樣時間想要10k以上,對於CompactRIO 10kHZ應該算是簡單,
但我查過很多技術文但還是無法理解
所以此時剛好又遇到此存儲問題,故
想請教一下NI工程師。
此外不知貴公司是否有工程師能當面請教目前技術上的障礙。
謝謝
在 06-01-2009 02:54 AM
您好:
關於使用 DMA FIFO,我想您的需求直接使用範例程式來改即可。
整個系統架構是這樣:
FPGA 中以 10kHz 取得資料點,丟進 DMA FIFO。
RT 中則是透過 DMA FIFO 讀取出資料(假如讀的速度是 100Hz,那麼就一次讀100點),並丟給 Write File。
其中最大影響速度的問題是存檔。
因為存檔的速度通常比較慢,也就拖慢了迴圈的速度,當然也就拖慢了從 DMA FIFO 中讀出的速度,然後就造成 FIFO full 的情形,我猜您的原因就是這樣。
給你幾個建議:
1. 可以先 benchmark 迴圈速度,確定迴圈速度是否跑得如想像一樣快,並非設定以 100Hz 去跑就一定能跑到 100Hz,如果迴圈中的事情做的太慢,那麼速度當然並非想像。
試著在迴圈中增加時間的估算,看是否因為存檔的時間而 delay 了迴圈的速度。
2. 使用較快的存檔方法。通常比較正確的方式是在進入迴圈的前面先做好 Open File,迴圈中的資料是不斷地丟入 Write File,迴圈的最外面結束的地方再做 Close File。
如果是用如 Write to Measurement File 等 ExpressVI,並不是使用這種架構,那麼迴圈中每次呼叫到這個 function 就同時做"開檔"."寫檔"及"關檔"的動作,當然回很容易地拖慢了整體迴圈速度。
3. 根據估算出來的速度,決定 RT 的迴圈速度,同時也決定了一次從 DMA FIFO 中讀出的點數,當然也要設定對應正確的 FIFO buffer size。
4. 請參考這個教學網頁的內容:http://zone.ni.com/devzone/cda/tut/p/id/4534
5. 也可以參考範例程式:Toolkits and Modules >> FPGA >> CompactRIO >> FPGA Fundamentals >> DMA >> Basic DMA - cRIO.lvproj。
6. 在 RT 的存檔部分程式,請參考範例程式搜尋 Write to Text File,當然也可以改成使用其他種類的 file,如 Binary File。
7. 建議您可以參加免付費的實機操作課程:http://sine.ni.com/apps/utf8/nievn.ni?action=display_offerings_by_event&event_id=1130&country=TW&sit...
也可以把你的問題直接帶來趁下課時間跟講師討論。
以上資訊提供您參考,謝謝。
在 06-10-2009 09:35 PM
工程師你好:
想請問一下 Timeout和Timed out?是指??
在我認知FIFO的Timeout是取樣時間,也就是FIFO在讀取DATA的速度(如果是的話,那前方Loop Timer所設不就和FIFO的Timeout一樣),
此外Timed out是什麼情況下會true。
你所說的 FIFO buffer size
請問是於何處調
謝謝
在 06-12-2009 04:08 AM
您好:
在DMA FIFO函數上的 "Timeout" 輸入是指一個等待時間. 當FIFO滿的時候, 程式會依您所設定的等待時間來等待FIFO出現空間. 此輸入的預設值是 0, 代表不等待. 如此一來, 一但FIFO滿時, 這筆資料就會遺失. 您也可以設定 -1, 代表永久的等待, 程式會一直等到FIFO有空間時才會把這筆資料寫入FIFO.
至於"Time Out?" 的輸出, 它是Boolean的型態. 當此輸出為 True 時, 就代表您所設定的等待時間已到而FIFO還是滿的. 等於是說此輸出是警告使用者有Data Overflow的現象. 在FIFO動用做正常, 沒有滿出來時, 此輸出都會是False.
FIFO的 Buffer Size 在製造 DMA FIFO時就可設定. 此設定的欄位叫做 "Number of Elements". 如果您的 DMA FIFO已經存在, 您可以回到它的設定畫面來做設定.
謝謝.
Jason Wang
Applications Engineer
NI Taiwan
可以幫忙寫個簡單的應用嗎??這樣會比較容易了解?就簡單得FPGA運用在FIFO上再用RT端讀取!我在原本labview裡面的範例拿出來使用時一直跑出問題!謝謝