NI產品與技術 討論區

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

程式執行中出現錯誤

我用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還是會出現上述兩種錯誤!!

 

請問該如何解決??

 

感謝!!

0 積分
1 條訊息(共 5 條)
7,010 檢視

請貼上您的VI

 

Thanks

0 積分
2 條訊息(共 5 條)
7,006 檢視

感謝!!  先簡單解說一下程式碼!!

 

附件的程式碼是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的方式一步一步執行,出錯的機率較為減少

 

但還是會出現錯誤。

 

之前尚未對硬體負載進行即時的微調時,程式正常執行,未發生錯誤

 

但即時微調後,卻很容易就發生異常錯誤

 

現在搞不清楚到底是程式問題還是硬體問題..

 

煩請前輩指點,再次感謝!!

 

 

0 積分
3 條訊息(共 5 條)
7,002 檢視

可能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. 

 

 

0 積分
4 條訊息(共 5 條)
6,985 檢視

可能USB轉RS-232有問題, 也有可能是機器的問題.

 

程式我做了修改跟手邊機器Goodwill PEL-2004 命令還滿接近的. 

 

MEAS:CURR?{;|NL}\r\n

MEAS:VOLT?{;|NL}\r\n

MEAS:smileytongue:OW?{;|NL}\r\n

 

變成

 

MEAS:CURR?<ENTER>

MEAS:VOLT?<ENTER>

MEAS:smileytongue:OW?<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>

MEAS:smileytongue:OW?<ENTER>

 

也可以表示成 

MEAS:CURR?;MEAS:VOLT?;MEAS:smileytongue:OW?;

 

嗯嗯,實際上 "MEAS:CURR?"跟"MEASure:CURR?{;|NL}\r\n"出來的結果是一樣的!!

 

FYI. 

 

今天測試的結果,是傳輸命令出錯的機率不大

 

之前是用LV8.5版(桌機)測試,今天用LV 2009(筆電)測試,在定電阻模式下未曾發生錯誤

 

換到定電流模式馬上又掛了,所以,或許是USB與機器的問題..

 

明天再繼續試看看,謝謝指教!!

 

 

 

0 積分
5 條訊息(共 5 條)
6,967 檢視