NI產品與技術 討論區

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

在LABVIEW中從儀器讀取的資料經後處理後會消失

問題是這樣的
我用LABVIEW寫了 一個讀取儀器數據並接著後處理(取平均值)的程式
在執行程式的時候
常常會發生從儀器讀取的數值是正確的
但是接下來取平均值的時候
有些數值會不見
可是這個情形
只要多執行幾次
就不會發生了
麻煩請大家幫我想個 解決的辦法
謝謝
如果有興趣討論的
可以跟我要SOURCE CODE
謝謝
MSN: u8341776@tknet.tku.edu.tw
0 積分
1 條訊息(共 7 條)
8,367 檢視
Hi FATWEBBER
 
1. 你的意思是,如果只從儀器讀取值回來就沒問題。
可是如果讀取回來後,LabVIEW 有再做平均值的計算時就會有值遺失?
2. 你跟儀器的介面是什麼? GPIB, RS232, Ethernet?
 
如果是 RS232 的話,可能是速度的限制,在 write 跟 read 之間加一個 delay 試試看。
也可以提供您的程式,我們在研究看看。
 
Super Steve
2 條訊息(共 7 條)
8,343 檢視

冷淡表情hi super steve

很抱歉沒把問題描述的很清楚

我是用labview透過gpib控制兩台儀器(光譜儀triax 320 和 stanford reserch system 的鎖相放大器sr830)

舉例來說:控制的步驟大概如下

設定光譜儀要走的範圍(ex:300nm~500nm)和步進值1nm, 然後光譜儀就會從300nm出發,以每秒增加1nm的速度前進到500nm

每到一個新位置的時候,電腦從鎖相放大器sr830那裡讀取數值然後繪圖(waveform chart)

也就是執行後我會讀到五百筆的數據(包含光譜儀位置和讀回的值)

由於我的實驗需要的是平均的數據(老師說可以用來消除雜訊)

所以我在原來用來讀取的程式外面加了一個迴圈(for loop)

這個迴圈執行的次數代表的意義就是我要在這個 範圍走幾次(300nm~500nm走兩次)

光譜儀走完第一次以後的,鎖相放大器讀到數值會先以陣列的形式暫存在這個for loop的 shift register供下一次取平均用

第一次讀到的值除以現在的 loop iteration就是第一次的平均

然後在光譜儀走第二次 , 將第二次鎖相放大器讀到的值和暫存的值相加再以陣列的形式儲存到shift register 供下一次取平均用

相加的值除以現在的loop iteration就得到兩次的平均

現在進入我的問題

1. 我發現剛開始執行這個程式的時候,程式從鎖相放大器讀點的部份沒問題,可是在最後取平均的部份,常常有部份平均後的數據消失了,

   ,500筆數據平均後只剩10組,可是奇妙的是,當我重新執行幾次這個程式以後,這個問題就不會再出現了生氣表情

2.我很想把程式碼放上來,可是我不會把它放在網路上讓人家抓,所以要討論的人,可不可以把你們 的email給我阿,我在把程式和程式需要的  instrument driver弄成壓縮檔寄給你們

我的信箱: superfatweber@yahoo.com.tw

 

 

 

 

 

0 積分
3 條訊息(共 7 條)
8,330 檢視
Dear FATWEBER:
既然儀器傳回的數據沒問題,那問題應該就出在For Loop跟你取平均的計算方式,Check一下你在使用shift-register的時候有沒有確實做initilization?還有數值格式的設定是否長度不夠而被強制削除?,你可以將儀器傳回的function先用For Loop產生500個隨機變數來取代,先驗証你取平均的程式有沒有問題,你改好後也可以mail給我,我幫你一起看看!! Good Luck....
 
Eddy
 
4 條訊息(共 7 條)
8,326 檢視

Dear Eddy;

很感激你給我的idea;

拿來驗證我的取平均方法很好用

經過驗證以後;

取平均的方法是正確的

至於initialize array

在原本的程式我就有做了

我是用funtion palette>>array>>initialize array 的函式

煩請幫我檢查一下有沒有錯

數值的格式

這個 問題我就不是很清楚了

anyway,

很感激你

新年快樂

5 條訊息(共 7 條)
8,319 檢視

Dear FATWEBER:

你只是犯了使用local variable的小毛病,當你修改"step"跟"from"的參數時,第一次執行程式時,像"# of Data PT",還有for 迴圈的第一次"Step"與"From"都會用到上一次的值,所以有時若你更改"step",跟"from"後,執行的第一次會怪怪的,但多跑幾次就好了,因為這些local variable又都統一了,所以當變數使用有先後順序時,要特別小心喔! 建議把主程式前接一個sequence,裏面都放"本尊",然後主程式裏都有"分身",這樣應該就ok了!! Good Luck...

 

Eddy

6 條訊息(共 7 條)
8,316 檢視

Dear Eddy;

我照著你的說法改了我的程式碼

然後測試了幾次

資料消失的情形就不在出現了

真的很感謝你

謝謝

新年快樂

 

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