发明内容
本申请提供了一种AOI检测设备中检测数据的处理方法,以解决现有技术中存在的对检测数据进行存储时,随着需要存储的检测数据越来越多,申请的缓存空间,即队列也越来越多,导致内存占用的空间增大,内存的使用效率较低的问题。
第一方面,本申请提供一种AOI检测设备中检测数据的处理方法,包括以下步骤:
接收至少一张产品图像,至少一张所述产品图像分别通过至少一个采集设备采集得到;
将至少一张所述产品图像存储至循环队列中,所述循环队列为预设长度的队列,所述循环队列包括数据存储位置和检测位置;
判断所述循环队列中存储的至少一张产品图像是否属于不同检测点采集的同一个产品的产品图像,并将不同检测点采集到的同一个产品的检测数据进行同步;
对所述循环队列中满足预设检测条件产品的产品图像进行检测,得到对应的检测结果数据;
将所述检测结果数据划分为多个类型,并分别以文件形式存储到对应的文件缓存区中;
将所述文件缓存区的至少一个文件存储到硬盘中。
在本申请的较佳实施例中,将至少一张所述产品图像存储至循环队列中,包括:
构建一个预设长度的循环队列,所述循环队列中设置有两个位置指针,所述位置指针包括数据存储位置和检测位置,所述数据存储位置和所述检测位置之间存在预设间距;
将产品的产品图像存储到循环队列中,并更新所述数据存储位置;
对所述产品进行检测,并更新所述检测位置。
在本申请的较佳实施例中,所述数据存储位置的更新公式为D=(D+1)%N;
所述检测位置的更新公式为C=(C+1)%N;
所述数据存储位置和所述检测位置之间的预设间距计算公式为(D+N-C)%N;
其中,D为数据存储位置,C为检测位置,N为预设长度。
在本申请的较佳实施例中,判断所述循环队列中存储的至少一张产品图像是否属于不同检测点采集的同一个产品的产品图像,并将不同检测点采集到的同一个产品的检测数据进行同步,包括:
计算产品通过第一检测点的第一编码盘值;
计算所述产品通过第二检测点的第二编码盘值;
根据所述第一编码盘值和所述第二编码盘值,判断不同检测点采集的产品图像是否属于同一个产品;
若所述第一编码盘值与第二编码盘值、数据存储位置差值的绝对值小于预设编码盘值,则可将第二检测点采集到的产品图像绑定到循环队列中同一个产品上,同步检测数据。
在本申请的较佳实施例中,判断不同检测点采集的图像数据是否属于同一个产品的公式如下:
|A-(B-L)|<t;
其中,A表示第一编码盘值,B表示第二编码盘值,L为第一检测点和第二检测点之间的距离,t表示预设编码盘值。
在本申请的较佳实施例中,通过内部索引和相对值结合的方式对不同检测点采集到的同一个产品的检测数据进行同步,所述相对值包括二维码编号值、码盘距离以及外部PLC提供的虚拟编号。
在本申请的较佳实施例中,将所述产品的检测结果数据划分为多个类型,并分别以文件形式存储到对应的文件缓存区中,包括:
判断所述检测结果数据是否需要保存以及存储的文件格式类型;
构建新文件,所述新文件的格式类型和需要保存的所述检测结果数据存储的格式类型相同;
将所述检测结果数据拷贝复制到对应的所述新文件中;
判断所述新文件是否需要添加附加文件数据;
将需要添加的附加文件数据添加到与所述附加文件数据格式类型相同的新文件中;
将至少一个所述新文件添加至对应的所述文件缓存区中。
在本申请的较佳实施例中,将所述文件缓存区的至少一个文件存储到硬盘中,包括:
获取至少一个所述文件在所述文件缓存区对应的缓存编号,至少一个文件缓存区的缓存编号组成文件列表,每个缓存编号均对应有一个新文件;
读取与所述缓存编号对应的新文件,并写入硬盘,所述新文件包括含附加文件数据的新文件和不含附加文件数据的新文件。
第二方面,本申请提供一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现一种AOI检测设备中检测数据的处理方法的步骤。
第三方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现一种AOI检测设备中检测数据的处理方法的步骤。
本申请提供的一种AOI检测设备中检测数据的处理方法,相较于现有技术而言,具有以下有益效果:
(1)本申请通过采用固定长度的循环队列对检测数据进行缓存,并且在循环队列中设置了数据存储位置和检测位置两个位置指针,数据存储位置可以对不同产品的产品图像进行实时更新存储,检测位置可以对不同产品的检测结果数据等检测数据进行实时更新存储,减少了内存的占用空间;并且,数据存储位置和检测位置之间的间距需要满足一定的规则,从而保证循环队列中的缓存不会出现拥塞的情况,检测效率更高。
(2)本申请通过异步存储的形式对文件进行统一管理,首先将检测数据按照对应的格式类型存储到相应的文件缓存区中,然后再从文件缓存区将检测数据存储至硬盘,可以大大缩短直接将检测数据存储至硬盘中所消耗的时间,存储效率更高。
(3)本申请中在对产品进行检测时,需要将不同检测点采集到的同一个产品的产品图像进行数据同步,数据同步采用码盘距离定位产品,可以满足在产品不具有二维码编号的情况下的数据同步,并且数据同步不存在累计误差。
(4)本申请通过设计统一的数据缓存结构,即循环队列,内存占用空间固定,但是内存的使用效率高;以及设计统一的文件存储方式,对文件的管理和调用更方便,提高了对产品的检测数据进行存储和处理的效率。
具体实施方式
为使本申请的目的、实施方式和优点更加清楚,下面将结合本申请示例性实施例中的附图,对本申请示例性实施方式进行清楚、完整地描述,显然,所描述的示例性实施例仅是本申请一部分实施例,而不是全部的实施例。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
基于本申请描述的示例性实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请所附权利要求保护的范围。此外,虽然本申请中公开内容按照示范性一个或几个实例来介绍,但应理解,可以就这些公开内容的各个方面也可以单独构成一个完整实施方式。
需要说明的是,本申请中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本申请的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
为便于对申请的技术方案进行,以下首先在对本申请所涉及到的一些概念进行说明。
在本申请中,诸如“第一”、“第二”等术语仅仅是用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或顺序。另外,术语“包括”、“包含”、“还包括”、“还包含”、“用于”或者任何其他变体意在涵盖非排他性的包含,从而使得其不仅包括明确列出的要素,还包括没有明确列出的其他要素。而且,本申请中的描述方位的词语“上”、“前”、“后”等均是根据本申请的附图位置或者该产品在实际使用时的方位进行描述,因此,不会造成本申请的方案不清楚。
不同的AOI检测设备由于个体差异,其中的检测程序也不同,对每个AOI检测设备中的检测程序进行同时开发和维护会带来额外的升本开销以及延长产品交付的周期。因此,检测程序需要具有良好的架构、足够的灵活性,包括模块化、可配置、分布式、可视化等支持,使得通过配置、调度各功能,检测程序即可完成各种复杂的硬件适配和检测需求,从而使得检测程序对检测数据的处理具有一定的通用性。
在对产品进行外观检测时,产品的检测区域可能包含产品全部、产品的边角或产品的某局部区域,检测中间数据或结果甚至图像也可能会在多个检测点,即多个AOI检测设备之间相互依赖、来回传递,采集的图像数目不定,或流程动作依赖一些前置检测结果,多个产品可能要求同时采集和检测,且检测过程中也可能附加一些擦拭、复判、高频采集检测等。
现有的AOI检测设备中的检测程序中的队列缺乏统一的接口设计,在不同的项目中,适配性不强,需要定制化开发。
其次,检测程序中的对检测完成的产品的相关数据采用文件实时存储到硬盘中以及资源调度时,没有统一的调度形式。并且,实时存储产品的相关数据到硬盘中,则无法同时接收其他产品的相关数据,占用了检测资源,存储到硬盘的效率较低,还会造成产品检测的拥塞状态。
另外,在具有多个采集输入时,产品定位采用条码、计数等形式对同一产品在不同检测点的检测数据进行同步时,现有的检测程序中使用内部索引和二维码编号定位。当AOI检测设备收集到新检测数据时,根据新检测数据中的二维码编号把相同产品的检测数据进行绑定。此种数据同步方式,在目前使用的情境下虽然可以满足检测需求,但是若检测中遇到没有二维码编号的产品,则现有的数据同步方式无法满足产品外观检测需求。内部操作繁琐,同时在一些情况下会导致误差累积。
实施例1
如图1所示,本申请实施例1提供了一种AOI检测设备中检测数据的处理方法,所述处理方法包括以下步骤:
S101,接收至少一张产品图像,至少一张所述产品图像分别通过至少一个采集设备采集得到;
S102,将至少一张所述产品图像存储至循环队列中,所述循环队列为预设长度的队列,所述循环队列包括数据存储位置和检测位置;
S103,判断所述循环队列中存储的至少一张产品图像是否属于不同检测点采集的同一个产品的产品图像,并将不同检测点采集到的同一个产品的检测数据进行同步;
S104,对所述循环队列中满足预设检测条件产品的产品图像进行检测,得到对应的检测结果数据;
S105,将所述检测结果数据划分为多个类型,并分别以文件形式存储到对应的文件缓存区中;
S106,将所述文件缓存区的至少一个文件存储到硬盘中。
需要特别说明的是,步骤S101中的多个所述采集设备在每个AOI检测设备,即检测点中的安装位置不同,采集图像的角度也不同,因此,采集到的产品图像也不同。采集设备可以采用线阵相机。
进一步地,在本实施例1的一种具体实施方式中,如图2所示,步骤S102包括:
S1020,构建一个预设长度的循环队列,所述循环队列中设置有两个位置指针,所述位置指针包括数据存储位置和检测位置,所述数据存储位置和所述检测位置之间存在预设间距;
S1021,将产品的产品图像存储到循环队列中,并更新所述数据存储位置;
S1022,对所述产品进行检测,并更新所述检测位置。
具体地,如图3所示,循环队列是把顺序队列的首尾相连,把存储队列元素的表从逻辑上看成一个环,成为循环队列。所述数据存储位置D的更新策略为D=(D+1)%N;所述检测位置C的更新策略为C=(C+1)%N,所述数据存储位置D和所述检测位置C之间的预设间距计算公式为(D+N-C)%N,其中,图3循环队列的预设长度为N,即循环队列包括N个内存块,包括第一个内存块、...、第N个内存块,每个内存块中包括若干子内存块(图3中仅示出三个),每一个内存块分别用于存储不同产品的检测数据,包括产品图像数据、检测中间数据、检测结果数据和检测日志数据等,但是产品图像数据、检测结果数据和检测日志数据等检测数据被分别存储于每一个内存块中不同的子内存块中。如图3所示,D为数据存储位置,C为检测位置,并且需要说明的是,D和C的位置均是从循环队列的第一个内存块到最后一个内存块循环存储,并且D和C每次更新之前,需要根据上述公式判断两者之间的间距是否合适,即判断当前产品检测运行是否会造成拥塞的情况,以保证较高的检测的效率。若检测位置C和数据存储位置D之间的间距过大,例如数据存储位置D已经更新到第五个内存块了,检测位置C才更新到第一个内存块,表示已经接收了五个产品的产品图像数据,但是只完成了一个产品的检测,由于检测位置C和数据存储位置D之间的间距过大,说明产品图像数据一直在接收,但是检测进度跟不上,导致产品图像数据出现拥塞的情况,即发生检测超时或者检测太慢的情况;上述情况较为频繁,则需要提高检测效率,加速产品的检测,使得检测位置C和数据存储位置D之间的间距保持在满足上述间距公式的合理间距内。
当采集设备采集的至少一张产品图像到达AOI检测设备时,将产品图像添加至如图3所示的循环队列中,并将数据存储位置D向下一个内存块移动;当完成对一个产品的检测时,将检测位置C向下一个内存块移动。通过上述数据存储位置D和检测位置C之间的间距计算公式,可以判断当前产品在检测线上检测运行的拥塞状态。
另外,通过将循环队列设置为预设长度的队列,在后期进行检测时,不涉及到新内存块的申请和释放,减少了内存块的占用空间,极大地优化了循环队列中内存块的使用效率,可以满足产品高速检测的需求。
特别地,在本实施例1中,循环队列通过不同的数据接口(图中未示出)与上层模块(图中未示出)连接,上层模块可以从循环队列中调取产品的检测数据,上层模块包括采集设备、算法调度模块、检测数据同步模块等。但是由于上层模块向循环队列中输入检测数据,检测数据包括产品图像数据、检测中间数据、检测结果数据和检测日志数据等,会存在多个上层模块同时输入检测数据的情况。因此,需要在数据接口中层架互斥体等同步对象,以确保输入检测数据的统一和完整。
示例性的,在本实施例1中,通过采用循环队列的存储方式对产品图像数据和检测结果数据等检测数据进行存储、更新及调用,如果在检测工位和判定工位之间存在一定距离时,还能确保在某一个产品出现超时的情况下,在后续算法计算较为快速的情况下,弥补该产品的超时时间。因为在产品到达判定工位时,只需要产品结果完成即可,所以可以使用平均时间来衡量。例如产品检测时间分别为50ms、55ms、100ms、57ms、60ms和65ms,产品检测超时时间为80ms,现有技术中采用的缓存方式中,检测时间为100的产品会被判定为超时产品,当做废品处理。但是按照本实施例1中循环队列的缓存方式,如果循环队列的预设长度为6,对应需要缓存的产品数量为6,检测工位和判定工位之间的距离可以存放6个产品,则只需要计算每个产品的平均检测时间,该平均时间为64.5ms。所以检测时间100的产品可以正常检测。通过举例可说明本实施例1的循环队列的缓存方式在检测时间容易抖动的平台上的有益效果更显著。
进一步地,在本实施例1的一种具体实施方式中,如图4所示,步骤S103,包括:
S1030,计算产品通过第一检测点的第一编码盘值;
S1031,计算所述产品通过第二检测点的第二编码盘值;
S1032,根据所述第一编码盘值和所述第二编码盘值,判断不同检测点采集的产品图像是否属于同一个产品;
S1033,若所述第一编码盘值与第二编码盘值、数据存储位置差值的绝对值小于预设编码盘值,则可将第二检测点采集到的产品图像绑定到循环队列中同一个产品上,同步检测数据。
需要说明的是,由于第一检测点设置有如图7所示的N个采集设备,包括采集设备1、采集设备2和采集设备N等,并且不同的采集设备在第一检测点上的安装位置也不同,拍摄角度不同,采集到的产品图像也不同,因此,上述检测数据同步还包括对同一个检测点中不同采集设备采集的同一个产品不同角度的产品图像进行同步。检测数据包括图7中所示的第一AOI检测设备连接的N个采集设备采集到的产品图像和第二AOI检测设备连接的N个采集设备传输至第一AOI检测设备中的检测中间数据以及完成对同一个产品的检测结果数据等。
更进一步地,在本实施例1的一种具体实施方式中,通过内部索引和相对值结合的方式对不同检测点采集到的同一个产品的检测数据进行同步,所述相对值包括二维码编号值、码盘距离以及外部PLC提供的虚拟编号等。
另外,通过编码盘值对同一产品不同检测点的检测数据进行同步的方式适用于产品没有二维码编号的检测系统中。而在产品具有二维码编号的检测系统中,可以严格根据二维码编号进行搜索定位,实现同一产品在不同检测点的检测数据同步。
具体地,在本实施例1中,如图5所示,图5中包括两个检测点和六个产品,即第一检测点、第二检测点、产品1、产品2、产品3、产品4、产品5和产品6(仅做示例说明,并不代表实际检测中产品的数量),产品1~产品6均按照图5中箭头所示的产品运动方向,依次经过第一检测点和第二检测点。将产品经过第一检测点的第一编码盘值记为A,经过第二检测点的第二编码盘值记为B,则根据所述第一编码盘值和所述第二编码盘值,判断不同检测点采集的图像数据是否属于同一个产品的公式如下:|A-(B-L)|<t,L为第一检测点和第二检测点之间的距离,一般通过编码个数表示,t表示预设编码盘值,一般设置为产品码盘数的三分之一;满足上述判断公式,则通过第一检测点和第二检测点采集到的产品图像为同一个产品的产品图像,并将第二检测点采集到的产品图像绑定到循环队列中同一个产品上,同步检测数据。此外,若产品打滑严重,无法使用编码器,则可根据外部硬件确定产品编号值,该编号值必须能够严格地与产品序号一一对应,否则会出现整个循环队列中的产品检测数据全部交错同步的情况。
进一步地,在本实施例1的一种具体实施方式中,步骤S104中的预设检测条件具体包括同一个产品的产品图像数量、其他检测点,即其他AOI检测设备的检测中间数据以及AOI检测设备的硬件条件等。检测线程和采集线程等多线程同步进行,若判断出某一个产品的产品图像满足预设检测条件,则开始检测满足预设检测条件的产品,例如:如图5所示,当产品1在第一检测点和第二检测点的检测数据完成同步后,并且产品1满足预设检测条件,则图7中的第一AOI检测设备和第二AOI检测设备均开始对产品1进行检测,并由第一AOI检测设备统计自身以及第二AOI检测设备中对产品1的检测结果数据,并根据检测结果数据进行后续处理。
进一步地,在本实施例1的一种具体实施方式中,如图6所示,步骤S105包括:
S1050,判断所述检测结果数据是否需要保存以及存储的文件格式类型;
S1051,构建新文件,所述新文件的格式类型和需要保存的所述检测结果数据存储的格式类型相同;
S1052,将所述检测结果数据拷贝复制到对应的所述新文件中;
S1053,判断所述新文件是否需要添加附加文件数据;
S1054,将需要添加的附加文件数据添加到与所述附加文件数据格式类型相同的新文件中;
S1055,将至少一个所述新文件添加至对应的所述文件缓存区中。
更进一步地,在本实施例1的一种具体实施方式中,如图6所示,步骤S106包括:
S1060,获取至少一个所述文件在所述文件缓存区对应的缓存编号,至少一个文件缓存区的缓存编号组成文件列表,每个缓存编号均对应有一个新文件;
S1061,读取与所述缓存编号对应的新文件,并写入硬盘,所述新文件包括含附加文件数据的新文件和不含附加文件数据的新文件。
如图6所示,步骤S105为循环队列将检测结果数据存储至文件缓存区的过程,即输入线程;步骤S106为文件缓存区将检测结果数据存储至硬盘的过程,即输出线程。需要说明的是,在创建输出线程时,可以指定较低的优先级,以确保输出线程不占用检测的资源;输入线程在向文件缓存区写入文件时,只需要通过数据接口将对应文件拷贝至文件缓存区中。另外,文件缓存区包括文件列表和文件缓存区1、文件缓存区2、...、文件缓存区N,文件列表为文件写入硬盘的顺序列表,用于存储缓存编号1-N,可以保证文件的高效写入,并方便管理写入的不同格式类型文件之间的关系。
具体地,在本实施例1中,创建输入线程写入文件,包括:
当某一个上层模块需要写入文件时,如果是写入新文件,则首先根据检测结果数据判断是否需要保存,并判断检测结果数据存储的格式类型,创建相同格式类型的新文件,将存储内容,即检测结果数据拷贝到新文件中,同时将该新文件添加到创建的文件列表中。此时,该上层模块可以立即返回,不占用该上层模块中线程的资源。
每次创建新文件时,都会返回该新文件在文件列表中的缓存编号,例如文件缓存区1、2等。如果需要在此新文件上添加附加文件数据,即新的检测结果数据,则可以根据该新文件在文件列表中的缓存编号,找到相应的新文件,对其附加新的检测结果数据内容。例如若检测数据为产品图像数据,则其对应的新文件中不需要添加附加文件数据,若检测数据为检测日志数据,则其对应的新文件中需要添加附加文件数据。
创建输出线程读取文件,包括:
输出线程会持续监控文件缓存区的状态;当文件缓存区中有内容更新时或者添加了新文件时,输出线程读取新文件(包括含附加文件数据的新文件和不含附加文件数据的新文件)中的检测数据,并将其写入硬盘中进行存储。
如图5和图7所示,本实施例1的数据处理方法的完整过程如下:
图7中的第一AOI检测设备(主AOI检测设备)和第二AOI检测设备(从AOI检测设备)分别对应设置在图5中的第一检测点和第二检测点上,第一AOI检测设备(主AOI检测设备)和第二AOI检测设备(从AOI检测设备)中的内部检测数据均按照循环队列的缓存形式存储。
从图7可知,每一台AOI检测设备均相应连接有N个采集设备,包括采集设备1、采集设备2和采集设备N等,第一AOI检测设备(主AOI检测设备)在对产品1进行检测时,还需要依赖于第二AOI检测设备(从AOI检测设备)对于产品1的相关检测数据,相关检测数据包括第二AOI检测设备的检测中间数据和检测结果数据2,从而判断产品1是否满足第一AOI检测设备(主AOI检测设备)的预设检测条件1,若满足预设检测条件1,则通过第一AOI检测设备(主AOI检测设备)对产品1进行检测,满足预设检测条件2,通过第二AOI检测设备(从AOI检测设备)对产品1进行检测,当第一AOI检测设备(主AOI检测设备)完成对产品1的检测后,即得到检测结果数据1,还需要等待第二AOI检测设备(从AOI检测设备)对产品1的检测结果,即检测结果数据2,第一AOI检测设备(主AOI检测设备)根据综合两台AOI检测设备上的检测结果数据1和检测结果数据2综合输出产品1的最终检测结果数据时,需要将最终检测结果数据综合输出到其他线程中继续进行处理,其他线程包括以文件的形式将产品1的最终检测结果数据存储至文件缓存区的文件缓存线程,然后在从文件缓存区中存储至硬盘中。
需要说明的是,预设检测条件1和预设检测条件2以及检测结果数据1和检测结果数据2仅是对第一AOI检测设备和第二AOI检测设备的不同区分,本领域技术人员可以根据实际检测需要设置具体条件并得到相应的结果。另外,图5和图7中的检测点和AOI检测设备的数量仅是为了说明本申请的方案所做的示例,在实际应用中,一般包含两个以上的检测点,每一个检测点对应一台AOI检测设备和N个采集设备。并且每台AOI检测设备之间可能存在检测中间数据的依赖,即前一台AOI检测设备中的预设检测条件中包括了后一台AOI检测设备对同一个产品的检测中间数据。因此,当某一台从AOI检测设备完成对产品的检测后,还需要将检测结果以局域网通信传输至主AOI检测设备,还需要将检测中间数据传输至需要的其他台从AOI检测设备或主AOI检测设备中。
实施例2
本申请提供一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现实施例1中一种AOI检测设备中检测数据的处理方法的步骤。
实施例3
本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现实施例1中一种AOI检测设备中检测数据的处理方法的步骤。
还需要说明的是,在本申请中,所有的预设数值均为本领域技术人员根据实际检测需要或者本领域检测产品的常规设置数值进行具体设置,本申请对其不做限制。但是上述预设数值均不影响本申请技术方案的实施。