发明内容
本发明的目的在于提供一种车辆加油量的计量方法,以解决目前车辆油量加油量计量不准确的问题。
为了解决上述技术问题,本发明提供了以下技术方案。
一种车辆加油量计量方法,包括以下步骤:
步骤1:提取发动机点火开关状态为0的车辆实时动态信息,一条实时动态信息对应一个采样点,并将实时动态信息按照采集时间升序排列,所述实时动态信息包括采集时间、剩余油量和里程;
步骤2:依次比较相邻两个采样点的剩余油量,并将两者的差值与预设值作比较,若后一个采样点的剩余油量较大且两者的差值大于预设值,则相邻两个采样点中后一个采样点为疑似加油点;
步骤3:采用滑动平均滤波法,分别确定出疑似加油点前的第一剩余油量稳定点和疑似加油点后的第二剩余油量稳定点,所述第一剩余油量稳定点为疑似加油点前、且邻近该疑似加油点的一个剩余油量稳定点,所述第二剩余油量稳定点为疑似加油点后、且邻近该疑似加油点的一个剩余油量稳定点;
步骤4:根据每个疑似加油点前的第一剩余油量稳定点的剩余油量数据、及该疑似加油点后的第二剩余油量稳定点的剩余油量数据,完成车辆加油量计量。
进一步的,所述步骤1包括:
步骤1-1:采集车辆实时动态信息,所述实时动态信息包括采集时间、剩余油量、油量电压值、里程及发动机点火开关状态,所述发动机点火开关状态为0或1;
步骤1-2:剔除采集的实时动态信息中的异常数据;
步骤1-3:提取发动机点火开关状态为0的车辆实时动态信息,并将实时动态信息按照采集时间升序排列。
进一步的,所述步骤1-2中剔除的异常数据包括:发动机点火开关状态由1切换至0和由0切换至1的第一条实时动态信息;和/或,油量电压值高于设定的最大电压值80%和低于设定的最小电压值20%时的实时动态信息;发动机点火开关为空、剩余油量为零或为空的实时动态信息。
进一步的,剔除剩余油量为零的实时动态信息的方法是:
如果剩余油量为零的实时动态信息不连续,则直接剔除剩余油量为零的实时动态信息;
如果剩余油量为零的实时动态信息连续,则针对连续剩余油量为零的起始采样点,采用滑动平均滤波法确定出该起始采样点前的第一剩余油量稳定点;针对连续剩余油量为零的末端采样点,采用滑动平均滤波法确定出该末端采样点后的第二剩余油量稳定点;剔除第一剩余油量稳定点与第二剩余油量稳定点之间全部的车辆实时动态信息;
针对两组或两组以上剩余油量连续为零的实时动态信息,并且相邻两组实时动态信息之间的时间间隔小于设定时间值,则剔除相邻两组剩余油量连续为零的实时动态信息之间的剩余油量不为零的实时动态信息。
进一步的,所述步骤3包括:
步骤3-1:求取疑似加油点前的至少两个数组,同时求取疑似加油点后的至少两个数组,一个数组由N个剩余油量数据组成;
步骤3-2:对每个数组中的N个剩余油量数据作求和运算,并求取每个数组中N个剩余油量数据的平均值;
步骤3-3:求取每相邻两个数组间的剩余油量变化率, i≥1,j≥0,其中,K前为疑似加油点前的相邻两个数组间的剩余油量变化率,K后为疑似加油点后的相邻两个数组间的剩余油量变化率,Yi为疑似加油点前、且邻近该疑似加油点的第i个采样点的剩余油量,Yj为疑似加油点后、且邻近该疑似加油点的第j个采样点的剩余油量;
步骤3-4:如果连续两个K前小于等于变化率设定值,则疑似加油点前的第一剩余油量稳定点为:参与K前计算且邻近疑似加油点一个采样点,所述K前为连续两个K前中邻近疑似加油点的一个K前,;如果连续两个K后小于等于变化率设定值,则疑似加油点后的第二剩余油量稳定点为:参与K后计算且邻近疑似加油点的一个采样点,所述K后为连续两个K后中邻近疑似加油点的一个K后。
所述步骤3-1中,求取疑似加油点前的至少两个数组的方法为:从疑似加油点前的第一条实时动态信息开始,N条实时动态信息的剩余油量数据组成一个数组;然后向前滑动一条实时动态信息,N条实时动态信息的剩余油量数据组成下一个数组;每向前滑动一条实时动态信息,组成一个新的数组;求取疑似加油点后的至少两个数组的方法为:从疑似加油点开始,N条实时动态信息的剩余油量数据组成一个数组;然后向后滑动一条实时动态信息,N条实时动态信息的剩余油量数据组成下一个数组;每向后滑动一条实时动态信息,组成一个新的数组。
进一步的,所述步骤4包括:
步骤4-1:针对每一个疑似加油点,抽选出其第一剩余油量稳定点与第二油量稳定点之间全部的采样点的实时动态信息,依次比较相邻两条动态信息中的里程数据,如果相邻两个采样点的里程差值大于里程预设值,则舍弃该疑似加油点,否则保留该疑似加油点,然后进入步骤4-2;
步骤4-2:针对每一个保留下来的疑似加油点,求取其第一剩余油量稳定点前t时间内的第一平均剩余油量值,同时求取其第二剩余油量稳定点后t时间内的第二平均剩余油量值;
步骤4-4:求取第二平均剩余油量值与第一平均剩余油量值的差值,该差值为第一加油量;
步骤4-5:根据第一剩余油量稳定点与第二剩余油量稳定点之间的里程差,求取第二加油量ΔTc,ΔTc=(Lp2-Lp1)×Y理论÷100,Lp1为第一剩余油量稳定点的里程,Lp2为第二剩余油量稳定点的里程,Y理论为百公里单耗理论值;
步骤4-6:对第一加油量与第二加油量进行求和运算,得到一个加油量,判断该加油量是否大于油箱容积,如果是则舍弃该加油量,否则按照时间升序,将该加油量计入加油量结果列表中;
步骤4-7:依次判断加油量结果列表中相邻两个加油量的时间间隔是否大于时间设定值,如果是则保留该相邻两个加油量,否则进入步骤4-8;
步骤4-8:判断该相邻两个加油量的油量差值,如果后一个加油量大于前一个加油量、且油量差值大于油量设定值,则剔除前一个加油量,否则剔除后一个加油量,完成车辆加油量计量。
优选的,所述步骤4-4之前还包括步骤4-3:
判断相邻两个疑似加油点之间是否有疑似加油点漏算,和/或,判断疑似加油点的第一剩余油量稳定点与第二剩余油量稳定点之间是否有疑似加油点漏算,如果有疑似加油点漏算,则进行疑似漏算加油量计算,否则直接进入步骤4-4。
进一步的,判断相邻两个疑似加油点之间是否有疑似加油点漏算的方法是:求取相邻两个疑似加油点之间的理论耗油量,及实时动态信息中该相邻两个疑似加油点之间的实际耗油量,其中,相邻两个疑似加油点之间的理论耗油量为(L本次疑似加油点-L上次疑似加油点)×Y理论÷100,L本次疑似加油点为本次疑似加油点的里程;L上次疑似加油点为上次疑似加油点的里程;再判断该理论耗油量与该实际耗油量的差值是否大于油耗设定值,如果是则存在疑似加油点漏算。
进一步的,判断疑似加油点的第一剩余油量稳定点与第二剩余油量稳定点之间是否有疑似加油点漏算的方法是:求取疑似加油点的第一剩余油量稳定点与第二剩余油量稳定点之间的理论耗油量,及实时动态信息中第一剩余油量稳定点与第二剩余油量稳定点之间的实际耗油量,其中,第一剩余油量稳定点与第二剩余油量稳定点之间的理论耗油量为(Lp2-Lp1)×Y理论÷100,Lp1为第一剩余油量稳定点的里程,Lp2为第二剩余油量稳定点的里程;再判断该理论耗油量与该实际耗油量的差值是否大于油耗设定值,如果是则存在疑似加油点漏算。
进一步的,所述步骤4-3中,当存在疑似加油点漏算时进行疑似漏算加油量计算的方法是:
提取两个疑似加油点之间和/或第一剩余油量稳定点与第二剩余油量稳定点之间、发动机点火开关状态为1的车辆实时动态信息,执行步骤2~步骤3,确定出漏算的疑似加油点的第一剩余油量稳定点和第二剩余油量稳定点;然后求取第一剩余油量稳定点之前t时间内的第一平均剩余油量值,同时求取第二剩余油量稳定点之后t时间内的第二平均剩余油量值,第一平均剩余油量值与第二平均剩余油量值的差值即为疑似漏算加油量;再判断该疑似漏算加油量是否大于邮箱容积,如果是则舍弃该疑似漏算加油量,否则将该疑似漏算加油量放入加油量列表中。
进一步的,所述步骤4-2中,如果t时间内的车辆实时动态信息不足7条,则选取参与两个剩余油量变化率计算、且邻近疑似加油点的7条实时动态信息,并求取该7条实时动态信息中的剩余油量的平均值,该平均值为第一平均剩余油量值和/或第二平均剩余油量值。
本发明的有益效果是:在本发明方法中,首先通过依次比较相邻两个采样点采集的剩余油量确定出疑似加油点;然后通过滑动平均法确定出疑似加油点前后两端的剩余油量稳定点及平均剩余油量值;然后根据平均剩余油量值计算出第一加油量,根据剩余油量稳定点计算出第二加油量;再根据第一加油量和第二加油量得到加油量;最后再剔除重复的加油量,得到真实准确的加油量记录,完成车辆加油量计量。本发明提供了一种计量车辆加油量的方法,通过该方法可以准确的计量出车辆的实际加油量,为车辆合理使用及购置提供数据依据。
具体实施方式
下面通过具体的实施例子并结合附图对本发明做进一步的详细描述。
图1示出了本发明实施例提供的车辆加油量的计量方法的流程,包括以下步骤:
步骤S101:利用车辆油量传感器和GPS定位系统,以时间T为时间间隔(通常的,时间间隔T设置为30秒),采样获取车辆实时动态信息,所述车辆实时动态信息包括采集时间、剩余油量、油量电压值、里程及发动机点火开关状态。所述发动机点火开关状态分为0和1两种状态,发动机点火开关状态为1时,表示车辆启动发动机;发动机点火开关状态为0时,表示车辆关闭发动机。
步骤S102:对实时采集的车辆实时动态信息进行数据清洗,剔除异常的实时动态信息。参阅图2,本步骤S102,具体为:
步骤S201:分别剔除发动机点火开关由1切换至0和由0切换至1的第一条记录,一条记录包括采集时间、剩余油量、油量电压值、里程及发动机点火开关状态。在实时动态信息中,发动机点火开关状态随车辆的运行和停驶交替出现1和0,但在每次交替时,由于车辆信号的不稳定,会出现短暂的数据异常,因此剔除发动机点火开关由1切换至0和由0切换至1的异常数据,使得车辆加油量计量精度更高。
步骤S202:剔除油量电压值高于设定的最大电压值80%和低于设定的最小电压值20%时的记录(即车辆实时动态信息)。由于油量电压值可能出现暂短的数据波动,产生极大或极小的异常电压值,因此为了提高加油量计量精度,需要剔除油量电压值高于最大电压值80%和低于最小电压值20%时的记录。
步骤S203:剔除发动机点火开关为空、剩余油量为零或为空的记录。由于GPRS无信号时,可能出现暂短的数据丢失或异常,因此,剔除发动机点火开关为空、剩余油量为零或为空的记录,以提高油量计量精度。其中,剔除剩余油量为零的记录包括:
如果剩余油量为零的记录不连续,则直接剔除剩余油量为零的记录;
如果剩余油量为零的记录连续,则找到连续剩余油量为零的起点(起始采样点)和终点(末端采样点),针对连续剩余油量为零的起点,按照下述步骤S301~S303,采用滑动平均滤波法确定出该起始采样点前的剩余油量稳定点P1;针对连续剩余油量为零的终点,按照下述步骤S301~S303,采用滑动平均滤波法确定出该末端采样点后的剩余油量稳定点P2,再将P1和P2之间的全部记录删除。
针对两组或两组以上剩余油量连续为零的记录,并且两组记录之间的时间间隔小于0.5小时,则把两组剩余油量连续为零的记录之间的剩余油量不为零的记录也删除。
需要说明的是,异常记录剔除步骤非本发明油量计量方法的必要步骤,根据计量精度的要求可选择是否进行异常记录剔除。本实施例中,本步骤S102剔除异常记录的目的是为了提高油量计量精度。另需说明的是,步骤S201、步骤S202、步骤S203之间的执行顺序为任意的,且异常记录剔除步骤可执行步骤S201、步骤S202和步骤S203中的一个或一个以上。
步骤S103:提取发动机点火开关状态为0的记录(车辆实时动态信息),并按时间将发动机点火开关状态为0的记录升序排列。
步骤S104:比较步骤S103中所述序列中,相邻两个采样点(即相邻两条记录)采集的剩余油量,即是说将后一个采样点采集的剩余油量数据与前一个采样点采集的剩余油量作比较,如果后一个采样点采集的剩余油量大于前一个采样点采集的剩余油量、且两者差值大于预设值W,则后一个采样点为疑似加油点,否则不是疑似加油点。因为加油枪每分钟加油30-40L,且采样数据上传频率通常为30秒,在加油期间相邻采样点间油量变化在15-20L,为了确保不漏掉可能的疑似加油点,预设值W取10L。所谓疑似加油点的含义是,在该采样点处有可能进行了一次加油。每两个采样点采集到的剩余油量数据进行比较,找出所有的采样点中存在的疑似加油点。
步骤S105:根据找到的疑似加油点,确定疑似加油点前、后两端的剩余油量稳定点P1、P2,所述剩余油量稳定点为邻近疑似加油点的剩余油量变化平稳的采样点。定义相邻两次剩余油量变化率K值小于等于1时,剩余油量变化平稳。
参阅图3,本步骤S105具体为:
步骤S301:利用滑动平均滤波法求取剩余油量变化率K值,所述滑动平均滤波算法是将采集的剩余油量数据作为一个队列,每采样到一个新数据后放入队尾。队列中放入N个剩余油量数据后,取该N个连续采样点采集的剩余油量数据,并将其作为一个数组,数组长度固定为N。队列中新放入一个数据后,取该新放入的数据、队列中与该新放入的数据相邻的N-1个数据,共N个数据作为一个新的数组;以此类推,队列中每放入一个新数据,则以该新放入的数据和与该新放入的数据相邻的N-1个数据作为一个新的数组。即是说,每放入一个新数据,就像后滑动一个数据,组成一个新的由N个数据构成的数组。
参阅表1,以实际采集的车辆动态信息为例,对滑动平均滤波法求取剩余油量变化率K过程进行进一步详细描述。此处,取N值为5,按照步骤S104所述方法确定出一个疑似加油点为表1中剩余油量为120升的采样点。
求取该疑似加油点前的连续至少两个剩余油量变化率K值:首先选取该疑似加油点前且邻近该疑似加油点的至少三个数组,并对每个数组中的5个数据作求和运算,如,∑a1(5)=79.2+79.2+79+79+79.5=395.9,∑a2(5)=79.2+79+79+79.5+79=395.7∑a3(5)=79+79+79.5+79+78.7=395.4。然后求取每两个数组间的剩余油量变化率K,如,K1=|∑a1(5)-∑a2(5)|÷∑a2(5)×100=0.050518,K2=|∑a2(5)-∑a3(5)|÷∑a3(5)×100=0.126358。
求取该疑似加油点后的连续至少两个剩余油量变化率K值:选取包含该疑似加油点的一个数组、及该疑似加油点后且邻近该疑似加油点的至少三个数组,并对每个数组中的5个数据作求和运算,如∑b1(5)=120+145.2+164+186.6+191=806.8,∑b2(5)=145.2+164+186.6+191+191=877.8,∑b3(5)=164+186.6+191+191+191=852.6,∑b4(5)=186.6+191+191+191+191=950.6,∑b5(5)=191+191+191+191+191=955,∑b6(5)=191+191+191+191+191=955。然后求取每两个数组间的剩余油量变化率K:如,K3=|∑b2(5)-∑b1(5)|÷∑b1(5)×100=9.280477,K4=|∑b3(5)-∑b2(5)|÷∑b2(5)×100=4.958857,K5=|∑b4(5)-∑b3(5)|÷∑b3(5)×100=2.840311,K6=|∑b5(5)-∑b4(5)|÷∑b4(5)×100=0.460733,K7=|∑b6(5)-∑b5(5)|÷∑b5(5)×100=0。
表1
步骤S302:按步骤S301依次进行数组采样并求取相邻两个数组间的剩余油量变化率,直至相邻两个剩余油量变化率小于等于R值为止,通常的,R值取1。如步骤S301中实例,求取疑似加油点前的两个剩余油量变化率即可停止计算,求取疑似加油点后的连续五个剩余油量变化率即可停止计算。
步骤S303:针对连续两个剩余油量变化率小于等于R值的剩余油量变化率K,选取其中邻近疑似加油点的剩余油量变化率K,则参与该K值计算且邻近疑似加油点的采样点为剩余油量稳定点。如步骤S301中实例,剩余油量稳定点P1为剩余油量变化率0.050518所对应的剩余油量为79.2升的采样点,剩余油量稳定点P2为剩余油量变化率0.460733所对应剩余油量为186.6升的采样点。
步骤S106:根据剩余油量稳定点P1、P2的剩余油量数据,计算加油量,得到车辆加油量数据,实现车辆加油量的准确计量。
参阅图4,本步骤S106具体为:
步骤S401:针对每一个疑似加油点,抽选出该疑似加油点前后的油量稳定点P1、P2点之间的全部采样点的实时动态信息,依次比较相邻两条动态信息中的里程数据,并将相邻两个采样点的里程差值与里程预设值Z比较,若里程差值大于里程预设值Z,则判定出现数据丢失,则放弃该疑似加油点;否则,进行下一步计算。通常的,所述Z取50公里,如表2中实例所示,假设表2中动态信息为某疑似加油点前后的两个剩余油量稳定点P1、P2之间的8条记录,在比较相邻两条记录的里程时,发现第六条记录与第七条记录的里程差为87.9公里(3532.90-3445),大于预设值50公里,因此放弃该疑似加油点。
表2
步骤S402:根据剩余油量稳定点P1、P2,求取剩余油量稳定点P1前t时间内的平均剩余油量值T1,同时求取剩余油量稳定点P2后t时间内的平均剩余油量值T2。通常的,t取值30分钟,沿用步骤S301中实例,以剩余油量稳定点P1的记录时间为基准时刻向前找30分钟(P1点也算在内),求取此段时间内记录的剩余油量的平均值T1。以剩余油量稳定点P2的记录时间为基准时刻向后找30分钟(P2点也算在内),求取此段时间内记录的剩余油量的平均值T2。
当30分钟内记录不足7条时,取参与相邻两个K值(该相邻两个K值为连续两个小于1的K值)计算、且邻近疑似加油点的7条剩余油量数据的平均值为剩余油量稳定点前后t时间内的平均剩余油量值。沿用S301中实例,以剩余油量稳定点P1的记录时间(2013-9-21 08:23:14)为基准向上找30分钟内的记录,只有两条记录(时间分别为2013-9-2108:20:38和2013-9-21 08:23:14),此时,剩余油量稳定点P1前t时间内的平均剩余油量值T1取78.7至79.2之间的7条记录(78.7、79、79.5、79、79、79.2、79.2)的平均值。
步骤S403:判断是否有疑似加油点漏算情况,如果有则进行疑似漏算加油量计算,如果没有漏算,则执行下一步。
由于本发明方法中参与油量计量的数据为发电机开关状态为0的数据,即选取的是发电机熄火时的数据,但是车辆可能存在不熄火加油(情况一)、或加油后一直在行驶(情况二)的情况,造成疑似加油点漏算,进而导致油量计量精度不高,因此需要针对上述情况进行油量补偿。
针对情况一,判断相邻两个疑似加油点之间是否存在疑似加油点漏算的方法是:当相邻两个疑似加油点之间的理论耗油量减去记录的实际耗油量的差值大于设定阈值时,则存在疑似加油点漏算情况。
ΔT差值1=(L本次疑似加油点-L上次疑似加油点)×Y理论÷100-(Y本次疑似加油点-Y上次疑似加油点)
其中:ΔT差值1为相邻两个疑似加油点之间的理论耗油量与记录的实际耗油量的差值,L本次疑似加油点为本次疑似加油点的里程;L上次疑似加油点为上次疑似加油点的里程,Y上次疑似加油点为上次疑似加油点的剩余油量,Y本次疑似加油点为本次疑似加油点的剩余油量,Y理论为百公里单耗理论值,所谓百公里单耗理论值为正常情况下行驶100公里所消耗的油量。如果ΔT差值1大于油箱容积的设定阈值M,设定阈值为邮箱的容积,则存在疑似加油点漏算情况。
针对情况二:判断疑似加油点前后的两个剩余油量稳定点P1、P2之间是否存在疑似加油点漏算的的方法是:
ΔT差值2=(Lp2-Lp1)×Y理论÷100-(Yp2-Yp1)
其中:ΔT差值2为疑似加油点前后的两个剩余油量稳定点P1、P2之间的理论耗油量与记录的实际耗油量的差值,Lp1为剩余油量稳定点P1的里程,Lp2为剩余油量稳定点P2的里程,Yp1为剩余油量稳定点P1的剩余油量,Yp2为剩余油量稳定点P2的剩余油量。如果ΔT差值2大于设定阈值M,则存在疑似加油点漏算情况。
当两个疑似加油点之间和/或两个剩余油量稳定点之间有疑似加油点漏算时,疑似漏算加油量的计算方法是:将两个疑似加油点之间和/或两个剩余油量稳定点之间的车辆实时动态信息作为数据来源,执行步骤S101~S105,确定出漏算的疑似加油点前后两端的两个剩余油量稳定点,然后求取该疑似加油点前的剩余油量稳定点之前t时间内的剩余油量平均值,以及该疑似加油点后的剩余油量稳定点之后t时间内的剩余油量平均值,两个剩余油量平均值的差值为疑似漏算加油量。再判断该疑似漏算加油量是否大于邮箱容积,如果大于邮箱容积,则舍弃该疑似漏算加油量,否则将该疑似漏算加油量放入加油量列表中,进入步骤S407。
步骤S404:根据剩余油量稳定点P1之前t时间内的剩余油量平均值T1、以及剩余油量稳定点P2之后t时间内的剩余油量平均值T2,计算出第一加油量。记第一加油量为
步骤S405:根据两个剩余油量稳定点P1、P2之间的里程差,求取油量补偿值,将油量补偿值作为第二加油量。记第二加油量为ΔTc,ΔTc=(Lp2-Lp1)×Y理论÷100。
步骤S406:判断第一加油量与第二加油量相加的合计值是否大于油箱容积。若大于油箱容积,说明第二加油量补偿过大,其中一定存在数据丢失的情况,因此需要放弃该加油量(即第一加油量与第二加油量相加的合计值);若小于油箱容积,说明该加油量为合理值,计入加油量结果列表中。每计算得出一个加油量,则按时间升序将其计入加油量结果列表。
步骤S407:依次对加油量结果列表中相邻两个加油量进行时间间隔判断,若相邻两个加油量的加油时间在2小时之内(包括两小时),则认为计算结果重复,需删除其中一个结果,即进入步骤S408。如果相邻两个加油量的加油时间大于2小时,则保留该相邻两个加油量,结束加油量计算。
步骤S408:判断该相邻两个加油量的差值,如果后一个加油量比前一个加油量大于20升,则删除前一个加油量;否则删除后一个加油量。得出最终加油记录,即实现车辆油耗的可靠计量。
采用本实施例提供的车辆加油量的计量方法进行车辆加油量计量,可准确的计量出车辆加油量,进而计量出车辆油耗,为车辆的合理使用及购置提供数据依据。
图5示出了本发明实施例提供车辆加油量的计量装置,包括数据采集模块101、异常数据剔除模块102、数据筛选模块103、数据运算模块104以及数据输出模块105。数据采集模块101采集车辆加油量的实时动态信息,并将实时动态信息按照时间升序排序。异常数据剔除模块102应用剔除采集的实时动态信息中的异常数据数据。数据筛选模块103筛选出发动机开关量为0时的剩余油量和里程数据。数据运算模块104通过比较相邻两个采样点采集的剩余油量,确定出疑似加油点;并利用滑动平均滤波法确定出疑似加油点前后两端的剩余油量稳定点P1、P2;最后根据剩余油量稳定点的里程及剩余加油量数据,计算出车辆加油量。数据输出模块105用于输出计量得出的车辆加油量。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。