RS232傳輸資料遺失

小弟還是新手,花了一個多月還是找不出問題

想請問各位高手



小弟寫的程式是,藉由adam-4018+ 擷取卡 透過rs485,把2筆溫度資料傳到電腦裡,加以顯示結束後並存成txt檔

有使用VISA Set I/O Buffer size 、 VISA Flush I/O Buffer 等元件,避免buffer過載

但,程式執行一小段時間後,資料會自動歸零或是 變成個位數的,如下圖

使用,adam-4018+ 公司提供的程式,資料不會有突然歸零或變小的問題

想請各位高手指點  謝謝~






程式

TEST_ADAM4018_Thermocouple_single_temp_input.vi

請問你的需求是什麼?例如:你要幾秒擷取一次資料,要多久儲存一次資料?..

每秒十點
擷取時間,十分鐘

你可以使用while loop就可以,每秒取十點你可以使用副程式來做這件事,取到的資料可以即時寫入檔案,不用程式結束再來儲存,另外也可以再加一個按鈕是用來控制時間計數的當時間到達十分鐘後可以選擇要離開程式或是繼續儲存新的資料

我想問題應該是出在擷取資料上

第1.雖然希望每100ms擷取一次,但光看你擷取中間delay就超過300ms(加上程式運作時間,估計大概20~30ms左右)。

第2.下指令(2330 3100)給儀器後,確定儀器都能在100ms以內回覆嗎?是否會有超過的情形,每次截取回來的字串是否完整(是否都有">")?

給你建議先將資料擷取的部份獨立寫成一個vi,先測試儀器與程式之間最佳擷取時間,delay部分應該可以改良,再來是紀錄的部份另外寫成一個vi ,每次擷取的時間不可超過佳擷取時間(例每200ms 才能擷取到一次資料,那每100ms紀錄ㄧ次就沒有意義),在每次擷取後在紀錄一次或者是先收集成array最後在紀錄也可以,確保紀錄與擷取資料之間不互相干涉(按你目前的程式來看每次紀錄完,程式才會做下次的擷取)。

Ding0040782.5074305556

謝謝~ 我再試試看~

請問各位高手,我透過RS232傳送資量為500Hz/s的資料,為什麼接收時有時候會LOSS DATA 造成畫波形時會有幾筆資料LOSS掉造成波形異常Serial Write and Read-3.vi

tallahassee 你好

為什麼你的程式當中 string to write 的部份,是write三次呢?該設備的通訊規範是這樣定的嗎?此外write完之後到該設備回覆之間應該有一點時間差(這可能要測試一下),如果該設備不能馬上回覆,那回傳的Data Bytes 很有可能就是0或者不完整,造成你後續判別資料不正確,就當成NO DATA 處理。