大家好,我有一機台是用VISA跟我硬體做溝通,
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
方框表示我的機械平台STAGE,數字解釋我平台移動的順序
RUN LABVIEW程式執行開始會從1到2到3到4到5到6到7到8……..
當我硬體平台移動”6到7時”(因平台從右上6移動左中7時間會比較長約3秒),則程式出現ALRAM如下畫面所是,
VISA:(Hex 0XBFFF0015)Timeout expired before
operation completed.
不管我把labview
function Timming的Wait(ms)把時間加大都還是會發生alarm,只要stage移動到”6到7”或”12到13”就會發生,其餘移動
1->2->3->4->5->不會發生,請問各位大大與鄉民我怎麼解決此問題,謝謝
我的LABVIEW程式如下圖:
試著增加下圖的timeout的數值,單位是ms,所以如果timeout想要設定10秒,請設為10000。
將VISA Close放到迴圈外,理論上第二次就會出現錯誤訊息了
建議Albertchen直接放檔案上來,大家直接幫你改,比較快。
因為已經有出現兩個需要修改的地方了。
附上我的程式2014板
try test next die GPIB.vi
先感謝Benjamin與ancle的回覆!
Benjamin您說的改timeout時間修改長短,還是會出現Alarm~
而ancle您說的把Error物件拉到迴圈外,方法可行(不會出現Alarm),
但我機台就停住在7位置(1->2->3->4->5->6->7->一直停住在7),
目前程式遇到問題:
我可把error物件刪掉就不會出現alarm code,但不是我要的目的,
我的機台移動希望藉由labview的->controls的"RUN"按鈕從1移動到6接續7到12,
如果把上述Alarm解決,
但我程式執行從1到7位置就停住不會往下繼續走8->9->10->最後->18
怎麼再讓程式執行讓機台stage繼續走?
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
首先 把 VISA Close 放出迴圈外
再者 這訊息可能發生原因是在 你設定的Timeout 時間內 VISA Read 沒有讀到 1024個Byte
所以就像Benjamin 所說的 延長Timeout
但是因該要知道機器回傳的字串長度,要不然你VISA Read設太大程式因該會依據你的Timeout時間又或者Wait(看哪個比較大)一個Cycle…
提供給妳另一種方式 這總方式適合在不知道獲取BYTE長度時使用
於 VISA Read 與VISA Write 間 加個 DELAY(時間長短看設備) 並用 Byte at Port 的方式提取資料長度 可以找找相關範例
先看看有沒有接收到資訊