这个程式是我离职前的最后一件LabVIEW大作,除了机器没用到摄影镜头外,能用上去的几乎都用到了;现在依照程式的执行顺序来说明程式结构,简单的SubVI会直接说明程式内容,用途较复杂的后续会另开文章说明

 


如同上一篇文章说的,这程式是可跳著执行的循序结构,以错误讯息为控制导向


程式是包在一个回圈之内,回圈外是绝对不会更动的档案路径设定和控制选项

手提式水果糖酸度检测机__程式画面001  


回圈上半是16条资料通道

手提式水果糖酸度检测机__程式画面002  


回圈下半是5条控制讯息相关通道

手提式水果糖酸度检测机__程式画面003  


进入程式架构前,是操作介面显示初始化

手提式水果糖酸度检测机__程式画面004  

 

手提式水果糖酸度检测机__程式画面005  

 


所有程式是包在一个选择框架(Case Structure)之内,框架已设定好主要控制程序名称

手提式水果糖酸度检测机__程式画面006  

 

程式执行后第1个跑的是"光谱仪侦测"程序,主要是侦测光谱仪驱动程式是否正常启动,还有就是程式内跑的资料流格式化

手提式水果糖酸度检测机__程式画面007  


光谱仪侦测是使用修改光谱仪原厂附的SubVI写的程式,主要是利用打开光谱仪通讯埠的方式侦测光谱仪驱动程式是否正常;会有这段程式的原因是因为光谱仪驱动程式有很大的机率启动失败,约40到50次就会有一次失败,原因不明,通常电脑重开机就会正常


若是成功启动光谱仪,程序控制项就会切换进入"初始化"页面

手提式水果糖酸度检测机__程式画面008  


若是启动光谱仪失败,会进入错误处理程序,呼叫副程式跳出警告视窗

手提式水果糖酸度检测机__操作程式画面01  


按下副程式视窗的"确定"钮后,会关闭警告视窗,同时控制程序切换进入"关机"页面

手提式水果糖酸度检测机__程式画面009  


资料流格式化是针对程式要跑的资料设定格式,阵列很难混搭不同格式资料,所以主要资料全部以丛集(Cluster)方式编成,这样做可以以一条线传递最多具名资料,方便之后程式编写。这一阶段格式化的重要资料流有:


操作参数

手提式水果糖酸度检测机__程式画面010  


操作数据

手提式水果糖酸度检测机__程式画面011  


堆叠资料

手提式水果糖酸度检测机__程式画面012  


光谱资料

手提式水果糖酸度检测机__程式画面013  


列印和RS-232输出的文字资料

手提式水果糖酸度检测机__程式画面014  

 

 


若在"光谱仪侦测"程序时,光谱仪启动失败,接著就会进入"关机"页面

手提式水果糖酸度检测机__程式画面015  


在"关机"页面会先关闭光谱仪程式,再停止回圈动作,跳到关机程式关闭电脑,关机程式是叫用Windows来关机

手提式水果糖酸度检测机__程式画面016  

 

 


若在"光谱仪侦测"程序时,光谱仪启动成功,接著就会进入"初始化"页面

手提式水果糖酸度检测机__程式画面017  


初始化基本上是一连串的叫档动作,由上到下分别为:


暗电流档案

手提式水果糖酸度检测机__程式画面018  


暗电流的档案资料和水果检量线的档案资料都是使用TDMS格式储存,LabVIEW这个独有的档案格式具备了不易解读(除非知道资料编成格式)、资料格式可混搭(和丛集差不多)、资料可具名储存这几大优点。要说缺点的话就是写入和读取都要依照一定的格式,所以资料在写入时要确认好,不然在之后要增删修改资料很麻烦


水果名称档案

手提式水果糖酸度检测机__程式画面019  


档案格式是INI格式,里面是包含2组阵列的丛集资料,一项是水果名称,另一项是品项名称,最多可传递144个资料。会有这个差别是因为同一名称水果,在不同地区可能是不同品种或是有不同称呼,所以在建立档案时便以这2项的组合来确定水果种类和产地

手提式水果糖酸度检测机__程式画面020  


这其中的差别没有实际处理过大量水果的人不会明白!例如丰水梨这一项,到了各地农会就有可能变成X统梨或上X梨这些别名,本质上还是丰水梨这个品种,但测得的光谱有些微差异,这应该是产地的水土所造成。所以当时我是劝老板有些种类水果要用当地产的来建立资料,不然这差异就等于是自砸招牌


上次设定档案资料

手提式水果糖酸度检测机__程式画面021  


档案格式也是INI格式,里面是包含2组阵列和2组丛集的混合资料,最多可传递170个资料

手提式水果糖酸度检测机__程式画面022  


那2组校正用的资料原始版本是没有的,会增设的原因有2项:一项是老板没有接受用当地产的水果建立资料的建议,想以一条资料走天下。可惜遇到上X梨时没用,还是乖乖采用我的建议重新建立资料;另一项是光谱仪的问题?就算是指定同一规格的型号,制造商送来的还是有极微的差异,同一波长的光谱资料会落在输出阵列的不同位置,连带会使测出的结果偏差。幸好这不会影响检测结果的重现性,加上这修正参数就可以处理


若上次设定有用到RS-232输出,就会自动进行开启RS-232通讯埠,若开启失败就会自动关闭RS-232输出这一选项

手提式水果糖酸度检测机__程式画面023  


以上读档若失败出现错误,同样会叫用副程式跳出警告视窗

手提式水果糖酸度检测机__操作程式画面03  

 

手提式水果糖酸度检测机__操作程式画面05  

 

 


若"初始化"叫档成功没有错误,接著就会进入"暖机"页面

手提式水果糖酸度检测机__程式画面024  


暖机时会先侦测DAQ介面

手提式水果糖酸度检测机__程式画面025  


若DAQ介面侦测失败会跳出警告视窗

手提式水果糖酸度检测机__操作程式画面07  


若DAQ介面侦测成功会叫用暖机副程式

手提式水果糖酸度检测机__程式画面026  


并跳出暖机画面倒数计时

手提式水果糖酸度检测机__操作程式画面09  


上方则同时倒数灯泡的使用寿命

手提式水果糖酸度检测机__程式画面027  


关于IR灯泡暖机时间和使用寿命,在原始版本时,暖机只需约15分钟,号称使用寿命约5000小时。后来制造厂商因应欧盟的环保罚则修改产品规格,结果变成有段时间的产品极不稳定。虽然后来稳定下来,但暖机若不超过25分钟以上就很难达到稳定状态,号称使用寿命也只剩约3000多小时

 

 


暖机完成后会进入"读取资料"页面

手提式水果糖酸度检测机__程式画面028  


这里只有读取已灌好的检量线资料档案,使用TDMS格式储存。再依照上次设定只取出要用的资料合成检测用参数

手提式水果糖酸度检测机__程式画面029  

 

 


检量线档案读取完成就会进入"待机"页面

手提式水果糖酸度检测机__程式画面030  


在待机页面,所有操作会用到的"页面切换"、"参数更改"全部使用事件处理有20项。加上轮询侦测检测按钮讯号的Timeout事件共有20项

手提式水果糖酸度检测机__程式画面031  


在Timeout事件上方是灯泡使用寿命的倒数计时

手提式水果糖酸度检测机__程式画面032  


在Timeout事件中央是检测DAQ讯号,若检测按钮有讯号则会跳到量测页面,若没有讯号则停在待机页面

手提式水果糖酸度检测机__程式画面033  


"存档归零"事件触发后,会清除已检测的点数和数量,再切换到"资料存档"页面。("资料存档"页面再底下另外说明)

手提式水果糖酸度检测机__程式画面034  


"关机"事件触发后,会先切换到"资料存档"页面,存档完毕会再跳到"关通讯埠"页面,通讯埠关闭后再跳到"设定存档"页面。当程式画面的设定都存档后,才跳到"关机"页面关机

手提式水果糖酸度检测机__程式画面035  


"灯泡归零"事件是在更换IR灯泡后以人工触发执行,把灯泡的使用寿命从头计算

手提式水果糖酸度检测机__程式画面036  


"主画面"事件和"参数画面"事件是切换操作程式的Tab Control元件页面

手提式水果糖酸度检测机__程式画面037  

 

手提式水果糖酸度检测机__程式画面038  

 

手提式水果糖酸度检测机__操作程式画面15  

 

手提式水果糖酸度检测机__操作程式画面23  


"操作模式"事件是切换为白板校正模式或糖度量测模式

手提式水果糖酸度检测机__程式画面039  


"检测模式切换"事件是切换为单点模式或多点模式

手提式水果糖酸度检测机__程式画面040  


"声音报知"事件是切换是否要开启音乐铃

手提式水果糖酸度检测机__程式画面041  


"列印功能"事件是切换是否要列印标签

手提式水果糖酸度检测机__程式画面042  


"温度补偿"事件是切换是否要打开温度补偿功能,内定是打开的状态。关闭状态是针对该项水果的温度变化取样时才会用到

手提式水果糖酸度检测机__程式画面043  


"通讯功能"事件在通讯埠打开时触发会关闭通讯埠,反之则会打开通讯埠。在初始化过程中若通讯埠开启失败,则可在"待机"模式时切换到"参数画面",尝试重新开启通讯埠

手提式水果糖酸度检测机__程式画面044  


"酸度切换"事件是切换酸度是PH值显示或百分比显示,内定是百分比显示,程式内的运算则是PH值,和显示模式无关

手提式水果糖酸度检测机__程式画面045  


"水果温度"事件设定温度补偿计算时的修正温度,事件执行时会叫用自制的数字键盘程式

手提式水果糖酸度检测机__程式画面046  

 

手提式水果糖酸度检测机__操作程式画面18  


"检测标准"事件设定水果达到多少糖度时会发出声音,要搭配"声音报知"功能使用。事件执行时会同样叫用自制的数字键盘程式

手提式水果糖酸度检测机__程式画面047  

 

手提式水果糖酸度检测机__操作程式画面16  


"检测点数设定"事件必需搭配多点模式才有作用,可以设定一颗水果要测几次才计算平均糖度,执行时会同样叫用自制的数字键盘程式

手提式水果糖酸度检测机__程式画面048  


"检测项目"事件触发时会跳出"品项选择"清单视窗,选择后会根据选择水果,跳回"读取资料"页面,自动调用检量线资料和校正参数

手提式水果糖酸度检测机__程式画面049  

 

手提式水果糖酸度检测机__操作程式画面21  


"糖度校正画面"事件和"酸度校正画面"事件触发时,会跳出糖酸度的校正设定画面。原本是不开放给客户使用,但因有少数客户有需求才开放此功能

手提式水果糖酸度检测机__程式画面050  

 

手提式水果糖酸度检测机__程式画面051  

 

手提式水果糖酸度检测机__操作程式画面29  


"系统设定画面"事件触发时会跳出系统设定画面,这是禁止客户使用的项目。但有些客户是越禁止就越喜欢玩,针对那些少数客户用的是有密码的版本

手提式水果糖酸度检测机__程式画面052  

 

手提式水果糖酸度检测机__操作程式画面27  


"列印设定画面"事件触发时会跳出列印设定画面,可以设定列印标签的字样大小位置...等参数

手提式水果糖酸度检测机__程式画面053  

 

手提式水果糖酸度检测机__操作程式画面24  

 

 


在"待机"的状态下,按下实体检测按钮,Timeout事件侦测到按钮动作,就会自动切换到"量测"页面

手提式水果糖酸度检测机__程式画面054  


"量测"页面上方若"操作模式"选择为白板校正时,会储存更换白板光谱资料

手提式水果糖酸度检测机__程式画面055  


"量测"页面中间一开始是以回圈连续光谱取样21次,同时进行糖度和酸度计算。计算后的结果输出成糖度和酸度的2组阵列

手提式水果糖酸度检测机__程式画面056  


接著是把2组阵列资料分别除去偏差较大共10笔数据,剩下的11笔数据加上温度修正算出糖、酸度,再算出糖酸比;接下来若是多点检测模式,则会再累积设定数量的数据时计算糖酸度的平均值,再判断糖度是否达到设定标准;最后依照设定和检测结果判断是跳回"待机"页面,或是跳到"检测输出"页面

手提式水果糖酸度检测机__程式画面057  

 

 


完成量测后会进入"检测输出"页面,在这里会把算出的数据加上日期时间,再加上水果名称和合格标准,合成通讯用文字字串(格式是XX超市客户要求的格式)

手提式水果糖酸度检测机__程式画面058  

 

 


字串合成后会进入"通讯"页面,若有打开通讯功能,则会把字串加上"起始码"和"结束码"透过通讯埠输出

手提式水果糖酸度检测机__程式画面059  

 

 


跳过"通讯"页面会进入"列印"页面,若有打开列印功能,则会依照设定把资料送到标签机副程式列印标签。列印完成后会回到"待机"状态

手提式水果糖酸度检测机__程式画面060  

 

 


最后,在"待机"状态下按画面下方的关机钮,会先跳到"资料存档"页面。在"资料存档"页面会以当时的日期时间建立新文字档案,然后把检测结果写入档案内

手提式水果糖酸度检测机__程式画面061  

 

 


资料存档后会再跳到"关通讯埠"页面关闭通讯埠

手提式水果糖酸度检测机__程式画面062  

 

 


最后会跳到"设定存档"页面,把当时操作画面上所有设定参数写回INI档案内

手提式水果糖酸度检测机__程式画面063  

 

 


设定存档完成后就会跳到"关机"页面,执行关机动作

手提式水果糖酸度检测机__程式画面015  

 

手提式水果糖酸度检测机__程式画面016  

 

 


以上是手提式水果糖酸度检测机的操作程式解说;其中读写INI档案用的是免费外挂OpenG的程式。光谱仪驱动程式是按照原厂资料重新改写,详细内容可参考我部落格内文章。数字键盘程式码同样可参考我部落格内文章。其他用到的自制SubVI待后续文章再一一说明

查看原文 >>
相关文章