之前的文章提到这台机器的程式中用到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到此解说完毕,下一篇是解说手提式水果糖酸度检测机的取样和问题

查看原文 >>
相关文章