NI產品與技術 討論區

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

Labview:轉檔遇到Memory Full

已解決!
前往解決方案

各位先進好,

目前遇到的問題非常棘手,此軟體已寫了十年,內容包含近千顆VI。

最近出現轉檔失敗,原因為Memory Full,我試過很多方法,但都失敗了。

(需要有點運氣才能轉檔成功,10次大概1次左右,由於程式過於龐大,轉檔需花費1小時)

近期又須轉檔出貨給客戶,卻發生這樣的問題,想請教各位先進有無解決方案。

(已確認過沒有斷箭或是相關錯誤訊息)

 

再麻煩幫忙解惑一下!

Labview : 8.2版本

0 積分
1 條訊息(共 8 條)
5,159 檢視

請問轉檔是想把Labview 8.2版本轉成其他版本嗎?

以下為解決memory full的方法供參考:
https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000P9mtSAC&l=en-US

https://labview360.com/forum/forum_posts.asp?TC=GCOW00HFS4BI&KW=Memory+is+full

0 積分
2 條訊息(共 8 條)
5,128 檢視

Dear AlysaOng,

轉檔是轉成執行檔,如附件所產生的錯誤。

由於軟體太過龐大了,我也看過您所提供的方法,該修補的部分也都盡力。

但還是出現此問題。

 

有時候是Memory Full,有時候則是如附件所示,請詢問NI。

Daniel

0 積分
3 條訊息(共 8 條)
5,123 檢視
0 積分
4 條訊息(共 8 條)
5,115 檢視

Dear AlysaOng,

 

情況似乎還是一樣!

 

Daniel

0 積分
5 條訊息(共 8 條)
5,101 檢視
解決方案
由主題作者所接受 08886449

Dear Daniel,

 

可以試看通過創建小一點的應用程式來解決這個問題。將獨立的子VI以及動態VI綁成LLB文件,創建一個小的應用程式來

1.將所有的動態VI和第一層的子VI加入到project中。“add subVIs to project.vi”將第一層的靜態子VI添加到project中,但是你必須手動的加入動態VI。
2. 將這些加入到project的第一層的子VI和動態VI分別放置到第一層子VI文件夾和動態VI文件夾。創建好的project如圖1所示。如果使用附件中的 "add subVIs to project.vi" ,那麼你需要移除可能自動添加到project中的自定義的控件和類型。

image.png

圖1:Project Structure

3.將所有的第一層子VI和動態VI添加到project後,創建或者編輯你的生成應用程式規格。
4.在創建應用程式的Source Files頁,將頂層VI移動到Startup VIs 欄中,並且將第一層的子VI和動態VI移動到 Dynamic and Support Files 欄中。
5.在Desinations 頁中,創建一個新的目標名字叫做supportfiles. 通過勾選 Destination is LLB 複選框使得supportfiles 目標為一個LLB文件。
6.在Source File Settings 頁中,選擇第一層子VI和動態VI文件,然後勾選 Set destination for all contained items複選框。在Set destination for all contained items複選框下選擇supportfiles.

image.png

7.根據需要可以進一步設置生成應用程式規格,例如創建自定義應用程式名字,圖標,版本。
8.關閉應用程式生成規格(build specification)。
9.Save project.
10.編譯應用程式生成規格。
11.應用程式編譯成功。


另外一種方法生成可執行程式可以比傳統的方法小很多。可以通過將所有的獨立可執行程式移動到一個外部的LLB文件中來實現。因為這樣應用程式生成器(Application Builder)就不會將所有的子VI和動態VI放到生成的應用程式中,LabVIEW就不會出現內存溢出了。

應用程式生成器會將LLB文件中的可執行程式到獨立的子VI自動的更新所有的靜態VI路徑。但必須確保動態VI仍然能夠被正確的調用,因為他們將不包含在生成的應用程式中。使用relative paths來從主VI中指定被調用的動態VI在“supportfiles.llb”文件中的新位置。

 

如果還不行,這裏再提供另一種方法參考:

https://forums.ni.com/t5/LabVIEW/memory-leak/td-p/551251

6 條訊息(共 8 條)
5,097 檢視

Dear Alysa,

謝謝您提供的建議,目前我也是透過創建小一點的應用程式來增加成功轉成執行檔的機率。

並減少主執行檔的檔案大小,似乎成功機率提高,轉檔5次會有1次成功,我再來試試看是否可行。

 

謝謝您的協助。

 

Daniel

7 條訊息(共 8 條)
5,084 檢視

Dear Alysa,

 

您好,最近發現使用 "使用relative paths來從主VI中指定被調用的動態VI在“supportfiles.llb”文件中的新位置" 無法成功。

如下所示,建立一個TestFunction.lib放置動態VI。

08886449_0-1637222724762.png

編譯成功後,透過Exe取得路徑如下。

08886449_1-1637222906719.png

資料夾資訊如下。

08886449_2-1637223002127.png

但執行時還是發生錯誤,如下所示。

08886449_3-1637223115812.png

 

想請教一下,是哪個環節錯誤了呢? 我是使用 Strip Path 跟 Current VI Path 取得。

再麻煩幫忙解惑一下,感謝。

 

Daniel

 

 

0 積分
8 條訊息(共 8 條)
3,059 檢視