之前的文章提到這台機器的程式中用到SubVI相當多,有參考光譜儀原廠附的範例改寫的的讀取資料用SubVI,有參考TSC標籤機Visual Basic程式碼改寫自製的SubVI,也有使用免費外掛的OpenG程式,更有大量自創的SubVI程式


其中光譜儀和TSC標籤機的程式在部落格內已有文章說明,用到的OpenG程式是別人的著作也不另外說明,這篇文章只針對前面文章沒有提到的SubVI做說明

 

 


首先要說的是LabVIEW中的特殊檔案格式TDMS,TDMS這個檔案格式幾乎沒有任何書籍提到如何使用,我是從大陸購買的書中才看到一本有大概簡介的資料。知道了大概使用方法後,還是試了多次才有辦法把我要的資料存入


TDMS這個檔案格式的好處大概就是每一筆資料可以對應一個頻道,而多個頻道則可以整合成一個群組。頻道和群組可以使用自定名稱,在有很多資料要分類個別讀寫處理時很好用


TDMS檔案還是可以靠程式來讀出內含的所有頻道和群組的數量名稱,以資料保密的觀點來看似乎不是好選擇

 


讀取TDMS檔案內頻道和群組的程式

手提式水果糖酸度檢測機__SubVI詳解001  

 

手提式水果糖酸度檢測機__SubVI詳解002  

 


程式中用到的TDMS檔是另外寫程式寫入資料建立的,從LabVIEW的Help檔中,可以知道有支援各類格式資料的寫入。我程式中寫入的資料當然不會那麼直接,我把布林、文字、數字這些資料,全部以一定方法轉成數字格式再寫入。就算有辦法讀到資料內容,沒有經過還原處理也只會看到數字資料,絕對猜不出原本是什麼內容


寫入程式其實不會很複雜,基本上是先創建或打開TDMS檔,再來就是按照頻道和群組一一寫入資料,最後再關閉檔案


寫入程式的程式面板

手提式水果糖酸度檢測機__SubVI詳解003  


寫入程式的程式碼

手提式水果糖酸度檢測機__SubVI詳解004  

 


檢測機內讀取TDMS檔案的地方有幾個;暗電流TDMS是單獨一個檔案,裡面只有一個群組和2個頻道。另一個TDMS檔案則包含了所有操作參數和檢量線資料,到停產前為止這個檔案內已有52個群組和348個頻道,總計有45種水果的檢測資料


以下是水果檢測資料部分的讀取程式,操作參數部分會牽扯到資料的解碼不在這裡揭露

手提式水果糖酸度檢測機__SubVI詳解005  

 

手提式水果糖酸度檢測機__SubVI詳解006  

 

 


再來說的是程式的核心部分,糖酸度量測SubVI,就是上一篇文章中連續取樣21次迴圈內靠右邊的那個

手提式水果糖酸度檢測機__程式畫面056  


這個SubVI實際上是很複雜的,從程式面板就可以看出有多少筆資料進出

手提式水果糖酸度檢測機__SubVI詳解007  

 


程式碼分成2個動作部分:


"白板校正"模式,在迴圈前20次時是累積光譜資料

手提式水果糖酸度檢測機__SubVI詳解008  


迴圈處理到第21次時,將累計的光譜資料處理後再輸出

手提式水果糖酸度檢測機__SubVI詳解009  


白板光譜資料的處理是只取出需要的部分,刪除多餘的資料,再平均化處理

手提式水果糖酸度檢測機__SubVI詳解010  

 


"糖度量測"模式是按照一定順序算出糖、酸度

手提式水果糖酸度檢測機__SubVI詳解011  


其中光譜資料的前處理"吸收光譜計算"、"平滑化處理"和"標準化處理"這3個SubVI的程式碼早已發佈在部落格內,不再重複說明


糖度和酸度計算的SubVI程式碼相同,分成2個順序執行是避免資料同時跑時會計算錯誤

手提式水果糖酸度檢測機__SubVI詳解012  

 


計算出的糖、酸度接下來是去除偏差較大的10筆資料,這部分交給迴圈自動處理

手提式水果糖酸度檢測機__SubVI詳解013  

 


去除資料後,在接著是對剩下的資料做溫度偏差修正

手提式水果糖酸度檢測機__SubVI詳解014  

 

手提式水果糖酸度檢測機__SubVI詳解015  


其中糖、酸度補償修正SubVI原本是像之前部落格內文章寫的,是使用Interpolate 1D Array這個元件加上取樣數據來處理。但這個方法是有缺點的,超出取樣數據外的最高、最低值時,還有不是剛好符合取樣數據時,較大的偏差是無法避免的

20131017-03  

 

20131017-04  


這缺點是經過北部XX農會和南部XX農會的洗禮,才發現問題嚴重;北部XX農會倉庫平均溫度在-5度到2度之間,南部XX農會則是相反在進倉庫前都在烈日下。於是一個是極端低溫,另一個是極端高溫,這2種狀態要回復到室溫通常約需1到2小時。農會當然不可能等水果回復到室溫再使用機器,所以這是很大的問題


要解決這個缺點是有可能做到的,但公司的設備無法完全模擬那樣極端的環境,沒有農會倉庫配合的話根本就無解;鑑於沒有學術單位輔助很難尋求農會幫忙,大量取樣需要更多成本,只好尋找其他解決方法


最後這修正用的SubVI改用的是函數式,程式不複雜,下的參數則是每種水果都不同,不過已可有效解決偏差問題。修正後的糖度平均偏差約誤差在0.2度上下,修正後的酸度平均偏差約誤差在0.02度上下

手提式水果糖酸度檢測機__SubVI詳解016  

 

手提式水果糖酸度檢測機__SubVI詳解017  

 


溫度偏差修正後再來是計算糖酸比;關於糖酸比的計算我有很多想抱怨的地方,向老闆提出要增加這一項的教授居然也不知道怎麼算?身為農學教授都不知道那我要問誰?最後在網路搜尋良久,找到2個公式。實際驗算結果,糖、酸度達到某一範圍時2個公式都會出現明顯不合理的結果。最後是選用容許範圍較大的公式來用

手提式水果糖酸度檢測機__SubVI詳解018  

 

手提式水果糖酸度檢測機__SubVI詳解019  

 


糖酸比計算完成後,再來是若有啟用"多點檢測"模式時,會再進行累計數值平均計算,輸出最後計算結果

手提式水果糖酸度檢測機__SubVI詳解020  

 

手提式水果糖酸度檢測機__SubVI詳解021  

 


收到最後計算結果後的SubVI是將結果判斷是否達到選別標轉,並輸出判斷結果,完成整個量測程序

手提式水果糖酸度檢測機__SubVI詳解022  

 

手提式水果糖酸度檢測機__SubVI詳解023  

 

 


最後一個較複雜的SubVI是把計算結果處理,按照列印設定合成列印參數輸出

手提式水果糖酸度檢測機__SubVI詳解024  


列印標籤的字串組合有6種

手提式水果糖酸度檢測機__SubVI詳解025  

 

手提式水果糖酸度檢測機__SubVI詳解026  

 

 


主要SubVI到此解說完畢,下一篇是解說手提式水果糖酸度檢測機的取樣和問題

arrow
arrow

    未出師的小工程師 發表在 痞客邦 留言(3) 人氣()