NI產品與技術 討論區

取消
顯示結果 
搜尋替代 
您的意思是: 

資料擷取的問題

已解決!
前往解決方案
您好,我使用shared variable來傳送CompactRIO底下的RT VI裡的資料到My computer底下的HOST VI。我在HOST 用一個while loop,RT VI則是用Timed loop。Timed loop中的dt我設1000us。然後我用示波器給一個sin波,我在HOST利用Write measurement file來收shared variable的資料。可是收到的資料卻怪怪的,有些數據重複出現好幾次有些則不會,如附件。這是什麼問題呢?謝謝
0 積分
1 條訊息(共 11 條)
8,082 檢視

不建議使用write measurement file,

原因:訊號的 資料量大,透過網路存檔,可能導致頻寬不足。

可否提供您的應用資訊?

0 積分
2 條訊息(共 11 條)
8,059 檢視

目前只是想收一個訊號的資料(例如sine或方波)但是抓到的點畫出來的圖形不像sine或方波,以下是我的程式碼

下載全部
0 積分
3 條訊息(共 11 條)
8,051 檢視
會造成資料重複的原因會不會是shared variable 的設定有問題? 例如buffer之類的?
0 積分
4 條訊息(共 11 條)
8,041 檢視

您好

因為在RT端您的讀取是以1000ms為速率 每秒更新一次

所以您的share variable會每秒才由RT端寫入一個新的值

在Host上您以while loop在做讀取  若時間上的配合有出入

則share variable可能被重複讀取幾次相同的值

您必須在share variable 上設定Real Time FIFO

讓FIFO的功能啟動應該就沒問題了

 

 

0 積分
5 條訊息(共 11 條)
8,033 檢視
不好意思,我RT端是1000us,我的需求是在RT的運算速度要快,PC端的HOST只單純要把RT運算的數據存起來而已。這樣的話在PC端的HOST不就會受限於RT端的VI?那是否可以在RT端存一個陣列的data,HOST再存這些陣列?
0 積分
6 條訊息(共 11 條)
8,031 檢視

當然可以在RT先做成一個陣列然後再傳給HOST

您可以決定陣列大小 以決定RT與HOST間的速度關係

 

甚至您可以把資料先存在RT的記憶體中存檔

再透過FTP讓HOST將檔案傳出來

要視您的應用以及實際狀況而定

另外若HOST端不想速度被RT影響 HOST端您可以放一個獨立迴圈去承接RT來的資料

其他工作在另一個迴圈執行

 

在此也順便建議您可以參加NI的專業教育訓練課程

我們的RT及實作業系統課程有完整的教學歐

謝謝

0 積分
7 條訊息(共 11 條)
8,029 檢視

不好意思....再請教一個問題。我已經在RT端存成一個陣列了,可是我利用shared variable將此陣列傳到PC端的HOST要存檔,可是存完檔卻都是零。這是什麼問題呢?是因為RT的陣列太大而無法用shared variable傳嗎?如果是,是否有其他方法? 我是用write to measurement file存檔。謝謝

0 積分
8 條訊息(共 11 條)
8,003 檢視
解決方案
由主題作者所接受 wwc

您好

請您先在HOST端將傳回來的share variable連接到indicator檢查看看是否有資料傳回

確定有資料後再做存檔

若無資料請調整您的share variable 設定值(在property中)

0 積分
9 條訊息(共 11 條)
7,993 檢視
NI 工程師您好:之前您說把資料先存在RT的記憶體中存檔再透過FTP讓HOST將檔案傳出來,請問一下這該怎麼做,是否有範例可看?另外,我是否可以把資料先存在RT的記憶體中存檔,但是不透過FTP,而是利用隨身碟或者是其他工具將其檔案傳出 ?  謝謝您的回答
0 積分
10 條訊息(共 11 條)
7,650 檢視