我用LV8.5透過RS232去抓取電子式負載的資料
之前RUN的時候都很順利,EX:我要擷取20筆資料,但今天程式執行擷取到第11筆時出現
第一個錯誤:VISA: (Hex 0xBFFF0000) Unknown system error (miscellaneous error).
之後就出現
第二個錯誤:VISA: (Hex 0xBFFF0072) The resource is valid, but VISA cannot currently access it
關於第二個錯誤有找過解決的方法,傳輸的PORT是COM5,執行close serial driver.vi 卻發生錯誤
而在PORT COM0 執行close serial driver.vi 時,程式才會正確地執行,但是依然無法解決第二個錯誤
必須進入裝置管理員將PORT COM5 關閉,電腦重新開機後,再把PORT COM5 打開,才可以重新執行程式
重新開機後,試了不一樣的PORT還是會出現上述兩種錯誤!!
請問該如何解決??
感謝!!
在 04-19-2010 09:50 AM
請貼上您的VI
Thanks
感謝!! 先簡單解說一下程式碼!!
附件的程式碼是LV 8.5的版本,我從EXAMPLES裡面改寫,RS232連接3310D的電子式負載
讀取即時的電壓,電流與功率,最後由兩個for迴圈取20筆資料(功率)儲存成.txt檔後,隨及輸出到Waveform Graph
3310D電子式負載的command delay time是20ms ,因為在量測擷取數據的同時,必須對3310D電子式負載
進行電阻的微調,所以程式的delay time一開始設為1秒,但是容易出現上述錯誤,以及考慮到硬體電路震盪的時間
所以調到5秒,但仍然容易出錯。最後以Do Not Highlight Execution的方式一步一步執行,出錯的機率較為減少
但還是會出現錯誤。
之前尚未對硬體負載進行即時的微調時,程式正常執行,未發生錯誤
但即時微調後,卻很容易就發生異常錯誤
現在搞不清楚到底是程式問題還是硬體問題..
煩請前輩指點,再次感謝!!
可能USB轉RS-232有問題, 也有可能是機器的問題.
程式我做了修改跟手邊機器Goodwill PEL-2004 命令還滿接近的.
MEAS:CURR?{;|NL}\r\n
MEAS:VOLT?{;|NL}\r\n
MEAS:POW?{;|NL}\r\n
變成
MEAS:CURR?<ENTER>
MEAS:VOLT?<ENTER>
MEAS:POW?<ENTER>
實際測試, 就算把延遲改更快也ok
也沒出現上述狀況.
另外, 我不懂的是... {;|NL}\r\n 這是很奇怪的命令
1. LabVIEW String 不是 C 是無法接受 \r\n 這種C Style的溢位字元表示字. LabVIEW 他有自己的表示方式. 請參考廠商提供的儀器 LabVIEW Driver 或者LabVIEW Sting Palette
2. {;|NL} 又是什? 實在是看不懂. 一般我會猜測是您沒把使用手冊前提看懂. 這應該是指要接續命令 可以用 ; 或者 NL (New Line, 0x0a) 來標記.
也就是說
MEAS:CURR?<ENTER>
MEAS:VOLT?<ENTER>
MEAS:POW?<ENTER>
也可以表示成
MEAS:CURR?;MEAS:VOLT?;MEAS:POW?;
FYI.
可能USB轉RS-232有問題, 也有可能是機器的問題.
程式我做了修改跟手邊機器Goodwill PEL-2004 命令還滿接近的.
MEAS:CURR?{;|NL}\r\n
MEAS:VOLT?{;|NL}\r\n
MEASOW?{;|NL}\r\n
變成
MEAS:CURR?<ENTER>
MEAS:VOLT?<ENTER>
MEASOW?<ENTER>
實際測試, 就算把延遲改更快也ok
電子式負載還有外接自己焊的電路,所以要考慮電路震盪的時間
也沒出現上述狀況.
另外, 我不懂的是... {;|NL}\r\n 這是很奇怪的命令
每個"硬體"RS232傳輸指令不盡相同{;|NL}是表示結束換行的意思,\r\n是結束,換行
所以這個命令應該是算重複了!!
1. LabVIEW String 不是 C 是無法接受 \r\n 這種C Style的溢位字元表示字. LabVIEW 他有自己的表示方式. 請參考廠商提供的儀器 LabVIEW Driver 或者LabVIEW Sting Palette
2. {;|NL} 又是什? 實在是看不懂. 一般我會猜測是您沒把使用手冊前提看懂. 這應該是指要接續命令 可以用 ; 或者 NL (New Line, 0x0a) 來標記.
是使用手冊的範例
也就是說
MEAS:CURR?<ENTER>
MEAS:VOLT?<ENTER>
MEASOW?<ENTER>
也可以表示成
MEAS:CURR?;MEAS:VOLT?;MEASOW?;
嗯嗯,實際上 "MEAS:CURR?"跟"MEASure:CURR?{;|NL}\r\n"出來的結果是一樣的!!
FYI.
今天測試的結果,是傳輸命令出錯的機率不大
之前是用LV8.5版(桌機)測試,今天用LV 2009(筆電)測試,在定電阻模式下未曾發生錯誤
換到定電流模式馬上又掛了,所以,或許是USB與機器的問題..
明天再繼續試看看,謝謝指教!!