我的研发成果(34)手提式水果糖酸度检测机__操作程式详解
这个程式是我离职前的最后一件LabVIEW大作,除了机器没用到摄影镜头外,能用上去的几乎都用到了;现在依照程式的执行顺序来说明程式结构,简单的SubVI会直接说明程式内容,用途较复杂的后续会另开文章说明
如同上一篇文章说的,这程式是可跳著执行的循序结构,以错误讯息为控制导向
程式是包在一个回圈之内,回圈外是绝对不会更动的档案路径设定和控制选项
回圈上半是16条资料通道
回圈下半是5条控制讯息相关通道
进入程式架构前,是操作介面显示初始化
所有程式是包在一个选择框架(Case Structure)之内,框架已设定好主要控制程序名称
程式执行后第1个跑的是"光谱仪侦测"程序,主要是侦测光谱仪驱动程式是否正常启动,还有就是程式内跑的资料流格式化
光谱仪侦测是使用修改光谱仪原厂附的SubVI写的程式,主要是利用打开光谱仪通讯埠的方式侦测光谱仪驱动程式是否正常;会有这段程式的原因是因为光谱仪驱动程式有很大的机率启动失败,约40到50次就会有一次失败,原因不明,通常电脑重开机就会正常
若是成功启动光谱仪,程序控制项就会切换进入"初始化"页面
若是启动光谱仪失败,会进入错误处理程序,呼叫副程式跳出警告视窗
按下副程式视窗的"确定"钮后,会关闭警告视窗,同时控制程序切换进入"关机"页面
资料流格式化是针对程式要跑的资料设定格式,阵列很难混搭不同格式资料,所以主要资料全部以丛集(Cluster)方式编成,这样做可以以一条线传递最多具名资料,方便之后程式编写。这一阶段格式化的重要资料流有:
操作参数
操作数据
堆叠资料
光谱资料
列印和RS-232输出的文字资料
若在"光谱仪侦测"程序时,光谱仪启动失败,接著就会进入"关机"页面
在"关机"页面会先关闭光谱仪程式,再停止回圈动作,跳到关机程式关闭电脑,关机程式是叫用Windows来关机
若在"光谱仪侦测"程序时,光谱仪启动成功,接著就会进入"初始化"页面
初始化基本上是一连串的叫档动作,由上到下分别为:
暗电流档案
暗电流的档案资料和水果检量线的档案资料都是使用TDMS格式储存,LabVIEW这个独有的档案格式具备了不易解读(除非知道资料编成格式)、资料格式可混搭(和丛集差不多)、资料可具名储存这几大优点。要说缺点的话就是写入和读取都要依照一定的格式,所以资料在写入时要确认好,不然在之后要增删修改资料很麻烦
水果名称档案
档案格式是INI格式,里面是包含2组阵列的丛集资料,一项是水果名称,另一项是品项名称,最多可传递144个资料。会有这个差别是因为同一名称水果,在不同地区可能是不同品种或是有不同称呼,所以在建立档案时便以这2项的组合来确定水果种类和产地
这其中的差别没有实际处理过大量水果的人不会明白!例如丰水梨这一项,到了各地农会就有可能变成X统梨或上X梨这些别名,本质上还是丰水梨这个品种,但测得的光谱有些微差异,这应该是产地的水土所造成。所以当时我是劝老板有些种类水果要用当地产的来建立资料,不然这差异就等于是自砸招牌
上次设定档案资料
档案格式也是INI格式,里面是包含2组阵列和2组丛集的混合资料,最多可传递170个资料
那2组校正用的资料原始版本是没有的,会增设的原因有2项:一项是老板没有接受用当地产的水果建立资料的建议,想以一条资料走天下。可惜遇到上X梨时没用,还是乖乖采用我的建议重新建立资料;另一项是光谱仪的问题?就算是指定同一规格的型号,制造商送来的还是有极微的差异,同一波长的光谱资料会落在输出阵列的不同位置,连带会使测出的结果偏差。幸好这不会影响检测结果的重现性,加上这修正参数就可以处理
若上次设定有用到RS-232输出,就会自动进行开启RS-232通讯埠,若开启失败就会自动关闭RS-232输出这一选项
以上读档若失败出现错误,同样会叫用副程式跳出警告视窗
若"初始化"叫档成功没有错误,接著就会进入"暖机"页面
暖机时会先侦测DAQ介面
若DAQ介面侦测失败会跳出警告视窗
若DAQ介面侦测成功会叫用暖机副程式
并跳出暖机画面倒数计时
上方则同时倒数灯泡的使用寿命
关于IR灯泡暖机时间和使用寿命,在原始版本时,暖机只需约15分钟,号称使用寿命约5000小时。后来制造厂商因应欧盟的环保罚则修改产品规格,结果变成有段时间的产品极不稳定。虽然后来稳定下来,但暖机若不超过25分钟以上就很难达到稳定状态,号称使用寿命也只剩约3000多小时
暖机完成后会进入"读取资料"页面
这里只有读取已灌好的检量线资料档案,使用TDMS格式储存。再依照上次设定只取出要用的资料合成检测用参数
检量线档案读取完成就会进入"待机"页面
在待机页面,所有操作会用到的"页面切换"、"参数更改"全部使用事件处理有20项。加上轮询侦测检测按钮讯号的Timeout事件共有20项
在Timeout事件上方是灯泡使用寿命的倒数计时
在Timeout事件中央是检测DAQ讯号,若检测按钮有讯号则会跳到量测页面,若没有讯号则停在待机页面
"存档归零"事件触发后,会清除已检测的点数和数量,再切换到"资料存档"页面。("资料存档"页面再底下另外说明)
"关机"事件触发后,会先切换到"资料存档"页面,存档完毕会再跳到"关通讯埠"页面,通讯埠关闭后再跳到"设定存档"页面。当程式画面的设定都存档后,才跳到"关机"页面关机
"灯泡归零"事件是在更换IR灯泡后以人工触发执行,把灯泡的使用寿命从头计算
"主画面"事件和"参数画面"事件是切换操作程式的Tab Control元件页面
"操作模式"事件是切换为白板校正模式或糖度量测模式
"检测模式切换"事件是切换为单点模式或多点模式
"声音报知"事件是切换是否要开启音乐铃
"列印功能"事件是切换是否要列印标签
"温度补偿"事件是切换是否要打开温度补偿功能,内定是打开的状态。关闭状态是针对该项水果的温度变化取样时才会用到
"通讯功能"事件在通讯埠打开时触发会关闭通讯埠,反之则会打开通讯埠。在初始化过程中若通讯埠开启失败,则可在"待机"模式时切换到"参数画面",尝试重新开启通讯埠
"酸度切换"事件是切换酸度是PH值显示或百分比显示,内定是百分比显示,程式内的运算则是PH值,和显示模式无关
"水果温度"事件设定温度补偿计算时的修正温度,事件执行时会叫用自制的数字键盘程式
"检测标准"事件设定水果达到多少糖度时会发出声音,要搭配"声音报知"功能使用。事件执行时会同样叫用自制的数字键盘程式
"检测点数设定"事件必需搭配多点模式才有作用,可以设定一颗水果要测几次才计算平均糖度,执行时会同样叫用自制的数字键盘程式
"检测项目"事件触发时会跳出"品项选择"清单视窗,选择后会根据选择水果,跳回"读取资料"页面,自动调用检量线资料和校正参数
"糖度校正画面"事件和"酸度校正画面"事件触发时,会跳出糖酸度的校正设定画面。原本是不开放给客户使用,但因有少数客户有需求才开放此功能
"系统设定画面"事件触发时会跳出系统设定画面,这是禁止客户使用的项目。但有些客户是越禁止就越喜欢玩,针对那些少数客户用的是有密码的版本
"列印设定画面"事件触发时会跳出列印设定画面,可以设定列印标签的字样大小位置...等参数
在"待机"的状态下,按下实体检测按钮,Timeout事件侦测到按钮动作,就会自动切换到"量测"页面
"量测"页面上方若"操作模式"选择为白板校正时,会储存更换白板光谱资料
"量测"页面中间一开始是以回圈连续光谱取样21次,同时进行糖度和酸度计算。计算后的结果输出成糖度和酸度的2组阵列
接著是把2组阵列资料分别除去偏差较大共10笔数据,剩下的11笔数据加上温度修正算出糖、酸度,再算出糖酸比;接下来若是多点检测模式,则会再累积设定数量的数据时计算糖酸度的平均值,再判断糖度是否达到设定标准;最后依照设定和检测结果判断是跳回"待机"页面,或是跳到"检测输出"页面
完成量测后会进入"检测输出"页面,在这里会把算出的数据加上日期时间,再加上水果名称和合格标准,合成通讯用文字字串(格式是XX超市客户要求的格式)
字串合成后会进入"通讯"页面,若有打开通讯功能,则会把字串加上"起始码"和"结束码"透过通讯埠输出
跳过"通讯"页面会进入"列印"页面,若有打开列印功能,则会依照设定把资料送到标签机副程式列印标签。列印完成后会回到"待机"状态
最后,在"待机"状态下按画面下方的关机钮,会先跳到"资料存档"页面。在"资料存档"页面会以当时的日期时间建立新文字档案,然后把检测结果写入档案内
资料存档后会再跳到"关通讯埠"页面关闭通讯埠
最后会跳到"设定存档"页面,把当时操作画面上所有设定参数写回INI档案内
设定存档完成后就会跳到"关机"页面,执行关机动作
以上是手提式水果糖酸度检测机的操作程式解说;其中读写INI档案用的是免费外挂OpenG的程式。光谱仪驱动程式是按照原厂资料重新改写,详细内容可参考我部落格内文章。数字键盘程式码同样可参考我部落格内文章。其他用到的自制SubVI待后续文章再一一说明