本发明涉及自动化生产设备领域,尤其涉及在一定时间段内,提取各个非连续时间区间,准确地计算时间间隔的计算方法。
背景技术:
由于大部分自动化生产设备的生产时间和故障时间区间并不是连续的,各个时间段之间有时间间隔,那么怎样精确地计算一段时间内的生产总时间或故障总时间显得尤为重要。
但是,在目前的大多数自动化生产设备的上位机程序中,其计算时间间隔的算法只能统计出包含的部分,而忽略掉与初、末时间相互交叉的区域,降低了数据的准确性。如下表中一段记录的生产时间,
该表一共包含(n+3)个时间段,其中每个时间段的末时间与下一时间段初时间并不是连续的。现若要提取t1~t2(ts1<t1<te1且ts(n+3)<t2<te(n+3))时间段内的生产总时间,传统算法的判断逻辑如图1,算法的判断条件为初时间大于等于t1且末时间小于等于t2,这样只能提取数据库中第2段到第(n+2)段内的时间区间,而不能提取到第1段时间区间内t1~te1和第(n+3)时间区间内ts(n+3)~t2两块时间交叉区域,造成计算出数据误差较大,满足不了精益生产的需求。
技术实现要素:
本发明的目的是解决现有技术的不足,提供一种非连续区间时间间隔计算方法。
本发明采用的技术方案是:一种非连续区间时间间隔计算方法,包括如下步骤:1)设置查询的时间段;2)提取数据库中包含查询时间段在内的时间区域;首先判断数据库中是否存在包含查询时间段间的时间区间;再判断查询时间段的初、末时间与数据库中时间区间是否存在交叉区域;3)计算总时间间隔,所述总时间间隔包括包含区域和交叉区域两个部分的时间间隔。
作为本发明的进一步改进,所述步骤(2)中包含如下三个步骤:201)判断数据库中是否存在包含在查询时间段t1~t2内的时间区间tsn~ten,若存在则提取各时间区间并计算时间间隔;202)判断查询时间段的初时间t1与数据库中时间区间是否存在交叉区域,若存在则计算时间间隔;203)判断查询时间段的末时间t2与数据库中时间区间是否存在交叉区域,若存在则计算时间间隔;
t1:设置的查询初时间,t2:设置的查询末时间,tsn:数据库中记录的时间区间初时间,ten:数据库中记录的时间区间末时间,n=1、2、3、4……。
作为本发明的更进一步改进,步骤201)判断条件为tsn≥t1且ten≤t2,提取数据库中包含区域的时间区间。
作为本发明的更进一步改进,步骤202)判断条件为tsn<t1且ten>t1,提取数据库中与初时间的交叉区域。
作为本发明的更进一步改进,步骤203)判断条件为tsn<t2且ten>t2,提取数据库中与末时间的交叉区域。
本发明采用的有益效果是:本发明选择高准确性、误差小和严密性为优化目标。通过两个判断条件来提取时间区间:首先,判断数据库中是否存在包含查询时间段间的时间区间;然后,再判断查询时间段的初、末时间与数据库中时间区间是否存在交叉区域;最后统计总的时间计算结果。
附图说明
图1为传统算法的流程图。
图2为本发明的示意图。
图3为本发明算法的流程图。
图4为实施例1的流程图。
具体实施方式
下面结合图2到图4,以及实施例,对本发明做进一步的说明。
一种非连续区间时间间隔计算方法,包括如下步骤:
1)设置查询的时间段;
2)提取数据库中包含查询时间段在内的时间区域;首先判断数据库中是否存在包含查询时间段间的时间区间;再判断查询时间段的初、末时间与数据库中时间区间是否存在交叉区域;
3)计算总时间间隔,所述总时间间隔包括包含区域和交叉区域两个部分的时间间隔。
为了减小时间计算误差,提高数据的准确性和严密性,采用新的算法来提取数据库中的数据,不仅要包含查询时间段区域,还要准确地识别到是否有交叉区域。首先设定查询的时间段,初时间为t1,末时间为t2;然后在提取包含区域和交叉区域的时间段,提取数据库中包含查询时间段在内的时间区域算法主要分四步进行:(1)判断是否存在包含区域时间段,其判断条件为初时间大于等于t1且末时间小于等t2,若存在则提取各个时间段,并计算包含区域时间间隔;(2)判断是否存在初时间交叉区域,其判断条件为初时间小于t1且末时间大于t1,若存在则提取各个时间段,并计算初时间交叉区域时间间隔;(3)判断是否存在末时间交叉区域,其判断条件为末时间小于t2且末时间大于t2,若存在则提取各个时间段,并计算末时间交叉区域时间间隔;(4)最后将三段计算的时间间隔累加,得到我们需要的总时间。
这样计算的总时间大大减小了误差,提高了数据的准确性,为精益生产提供了坚实可靠的数据基础。本算法中的数据库中可包含多个非连续的时间区间,并且每个时间区间长度没有固定的限制。设置的查询时间段可以为任意的时间长度,没有固定限制。
为进一步说明本发明的算法,特选取实施例1做进一步解释。
下表为本公司全自动半导体封装设备所记录的数据。
记录的是2018/7/13日当天的生产时间。现若需要统计2018/7/1313:40:00至2018/7/1315:40:00时间段的总生产时间,如图4所示,有以下步骤:
步骤301:首先需要设定查询初时间m_datefrom为2018/7/1313:40:00,末时间m_dateto为2018/7/1315:40:00,再根据本发明的算法依次判断是否存在包含区域和交叉区域。
步骤302:打开数据库,判断时间区间是否存在包含区域,其判断条件为startdatetime大于等于m_datefrom且enddatetime小于等于m_dateto,结果存在,即为id为6、7、8、9四个区间,累加各时间区间的时间间隔,则包含时间区域总时间间隔includetime为1841秒。
步骤303:判断是否存在初时间交叉区域,其判断条件为startdatetime小于m_datefrom且enddatetime大于m_datefrom,结果存在,即为id为5的时间区间中13:40:00至14:04:48的一段时间,计算时间间隔,得到初时间交叉区域总时间startcrosstime为1488秒。
步骤304:判断是否存在末时间交叉区域,其判断条件为startdatetime小于m_dateto且enddatetime大于m_dateto,即为id为10的时间区间中15:26:55至15:40:00的一段时间,计算时间间隔,得到末时间交叉区域总时间endcrosstime为785秒。
最后,步骤305,累加包含区域时间间隔和初、末时间交叉区域时间,得到总生产时间totaltime=includetime+startcrosstime+endcrosstime,结果为4114秒,相比当前大部分算法只能提取到包含区域得出的结果1841秒,准确度得到了大大地提升。
本发明选择高准确性、误差小和严密性为优化目标。通过两个判断条件来提取时间区间:首先,判断数据库中是否存在包含查询时间段间的时间区间;然后,再判断查询时间段的初、末时间与数据库中时间区间是否存在交叉区域;最后统计总的时间计算结果。
本领域技术人员应当知晓,本发明的保护方案不仅限于上述的实施例,还可以在上述实施例的基础上进行各种排列组合与变换,在不违背本发明精神的前提下,对本发明进行的各种变换均落在本发明的保护范围内。