最近拿到了新玩具→
研華的USB-4718,很興奮的把上網找了他的驅動跟相關程式。
1.似乎是硬體驅動forwin7
Bionic 64/32-bit driver for USB-4718 (Win7/WinXP/Vista)
2.應該是他門公司的DAQ驅動,沒裝就不能用他們的軟體Wavescan 2.0
A-DAQ Pro (Advantech's OCX Control Driver)
3.WaveScan 2.0 看起來像是VB寫出來的,拿來比對自己的程式量測的數據對不對。
4.重頭戲,他們提供的Labview量測模組
http://support.advantech.com.tw/support/DownloadSRDetail.aspx?SR_ID=1-29WTFD&Doc_Source=Download
5.他們儀器的管理員
後來才發現的好工具,不知道什麼在時候安裝的,連結熊熊找不到稍後補上。
這邊出現很詭異的情況,一個使用量測類比輸入一個使用熱電偶量測
把量測到的電壓(inputeRange是0~2.5V)拿去跟K型熱電偶的電壓/溫度比,0.9xx mV換算出來竟然只有20度!!
可是明明都把四顆電偶都黏到同一塊杯子上(魔鬼氈,倒冰塊&放熱水可以觀察溫度變化),其他都是30度左右,如果用量測到的電壓去換算都只剩2X度。
labview程式↓
灌好它提供的範例程式以後可以在下面位址找到程式
LabVIEW\examples\Advantech\THERMO.llb.
溫度量測主要是看迴圈裡面的子VI去讀資料到電腦端,點他的BD
看到都傻了~竟然是Code Interface Node,我看不懂他,他看不懂我。
OS:蝦咪~這不是Labview Code~ Labview不是應該有滿滿的義大利麵+框框嗎?
我嘗試使用這個模組去量測溫度訊號,量測出來數值真的滿準的!(誤差約1~2度C而已。
問題來了:
1.
這樣的量測,進來的數據不是連續的!
(不是連續的,間隔1秒去讀一次的資料畫成圖型還可以顫抖...
所以想把它濾波都不行。難道用移動平均?用移動平均效果也不明顯,想試試權重式的移動平均,不過那個權重的公式.....依然是看不懂,用研華的waveScan程式去觀察訊號,真的滿奇怪的,一個固定溫度卻不會顯示直線,而是往上或往下+0.05度C,這表示我的熱電偶受到外界雜訊影響了??...嗯....兩根細細的金屬線還併排...感覺是雜訊...
後來回頭去看到它使用手冊,他的取量率竟然只有10Hz~純使用這個量測模組去量測,
這表示我迴圈比須高於100 ms 才不會取到重複的值?疑惑(是殘留在FIFO的數據嗎?
2.
我嘗試想要同時量測多個Channel,也是用它給的labview模組.....
VISA...嗯....還不熟...這個儀器的韌體接受指令有哪些..封包格式....還沒查到..沒有方向...
P.S.我試過他的labview類比輸入量測範例,出來的電壓值...換算成溫度...真的異常的不准,
不知道哪個環節出了問題。我是按照K型熱電偶的datasheet去換算的。
它的類比輸入訊號量測模組可以同時讀取多個channel的資料,讀出來是各Channel個別1筆資料,
輸出堆疊成一個Arry!所以讀出來的訊號也不是連續的。
而且讀出來數字都是0.0009XX(單位是V).... 數字非常小,換算出的溫度也很奇怪
(少了8.9度。不知道是不是因為研華這塊儀器InputeRange最高只有0~2.5的關係。
回到正題,多個channel,可是都用同一個量測模組(SubVI?),
那個Labview量測模組(subvi)叫做TCMuxRead.vi,有灌它的範例程式就可以在User.Lib找到,
另外就是一定要灌研華的Driver,才能執行,不然它的模組點開都會顯示斷掉的箭頭(有Error!)
所以多Channe溫度擷取l程式初步規劃如下:
假設有三個channel→
1.三個迴圈+個delay
(發現有兩種Delay~一種像手錶、一種像鐘擺,兩個放上去感覺效果差不多?後來發現鐘擺那個Delay可以讓迴圈延遲得很準!但最後還是改用TimeLoop了)
2.TCMuxRead.vi設定改成可以重入(Reentrant),可以同時送出讀取溫度的訊息給儀器,達到同時讀取的目的!
...不知道通訊會不會塞車?或讀到錯誤的值?
3.收集三個數據,BuildArry、位移暫存器等累積資料,看要怎麼處理那顫抖的溫度(約上/下0.05度C)
其實對於它通訊的部份實在沒有概念,如果他的範例程式是用VISA寫的還可以研究一下他送了什麼指令,
一次在BUFF存了多少資料,有沒有設定同位元等等....
程式部分不知道還有沒有更好的寫法?感覺用迴圈設個Delay當作取樣的間隔時間似乎不是好事情,而且間隔時間會隨著電腦處理速度而變化!
希望可以把這部份轉交給儀器處理,讓儀器可能先用較高的取樣率去讀資料,讀到固定筆資料就通知我去BUFF拿資料,或者是我一直去讀取BUFF,等到資料量夠了,就抓下來。
不知道這個想法能不能實踐,目前概念薄弱,不知道如何下手!
對於儀器通訊還不熟析,我該如何寫程式跟他通訊?請問有甚麼推薦的資料嗎?
想請各位大大多多提點小弟,分享一些經驗!
Labview是個很有趣的程式,我希望有一天大家都用Labview,不然一直找不到人討論。
平均run1次 119 ms for 3 chhannel~取了1分鐘左右,Y軸是溫度
請問這樣的曲線,是被雜訊入侵了嗎?