滑动时间窗口法测量旋转轴转速的方法

文档序号:6116050阅读:391来源:国知局
专利名称:滑动时间窗口法测量旋转轴转速的方法
技术领域
本发明涉及一种滑动时间窗口法测量旋转轴转速的方法,用于发动机转速或车速等旋转轴速度的及时精确地测量。
背景技术
在现代汽车许多参数的检测中,发动机转速或车速等旋转轴速度的检测对驾驶员以及车辆电控单元有效地控制汽车有很大意义,因为要对车的运行情况作出迅速和准确的判断,必须及时准确地得到发动机和车速值。旋转轴速度测量一般是在轴上安装磁电传感器或霍尔传感器,整形电路对传感器信号进行处理得到脉冲链,然后微处理器通过计算得出当前速度。目前微处理器测速一般有两种方法定时计数法和定脉冲计时法。定时计数法是指在一个固定采样时间内,计数传感器产生的脉冲个数,固定采样时间设的越长精度就越高,但电控单元需要快速测量出结果,以便及时控制,因此固定采样时间必须较短,当需要测量的速度较高时,此算法的测量精度和快速性较好,但当速度较低时,产生的脉冲较少,测量的精度较低;定脉冲计时法是指累计固定数量的脉冲来计算速度,该方法精度较好,当被测速度高时,累加时间短,速度测量较及时,但当被测速度低时,累加时间长,速度测量不及时。由于车辆运行时,发动机或变速箱等旋转轴速度变化很大,不论采用那一种测速方法都不能适用所有工况,都存在检测的准确性和快速性的矛盾。

发明内容
本发明的目的是解决现有测速方法准确性和快速性的矛盾,提出种滑动时间窗口法测量旋转轴转速的方法。
本发明的技术方案滑动时间窗口法测量旋转轴转速的方法包括与转速相关的计数脉冲的测量及对脉冲的处理转换,测速方法如下1)初始化,设定实际的脉冲计数PulseCount=0,脉冲上升沿时刻PulseTime=0,上一次有效读时的脉冲数PulseCount_LastRead=0,上一次有效读时的脉冲时刻PulseTime_LastRead=0,当前速度n=0;2)初始化后第一个脉冲上升沿,中断函数设定PulseCount=0,开始时刻PulseTime=T0,PulseCount_LastRead=0,PulseTime_LastRead=T0,当前速度n=0;3)第二个脉冲到达,中断函数设定PulseCount=PulseCount+1=0+1=1,PulseTime=T1。
4)随后到达的每个脉冲,中断函数设定PulseCount=PulseCount+1,第N个脉冲到达时的PulseCount=N-1,并记下当前时刻PulseTime=T(N-1),系统记录最新的脉冲数N-1和脉冲上升沿时刻T(N-1);5)主程序要求计算速度,此时把第一个脉冲上升沿T0和当前时刻前的最近一次脉冲上升沿T(N-1)定义为时间窗口的起点和终点,时间窗口的脉冲个数为PulseCount=N-1,脉冲累加时间为PulseTime=(N-1)-T0,设旋转轴每转产生k个脉冲,当前转速用n表示,单位为转/分(rpm),利用脉冲个数和脉冲累加时间计算当前速度n=(N-1)*60*1000000/{T(N-1)-T0}/K,并且设定PulseCount_LastRead=N-1,PulseTime_LastRead=T(N-1)为下一个时间窗口的起点;6)主程序要求计算速度,方法同5),此时的时间窗口起点为T(N-1),时间窗口终点为TM,脉冲个数为M-N-1,脉冲累加时间为TM-T(N-1),当前速度n={(M-N-1)*60*1000000}/{TM-T(N-1)}/k,并且设定PulseCount_LastRead=M和PulseTime_LastRead=TM为下一个时间窗口的起点;如此反复随机计算各时刻的即时速度;7)主程序要求计算速度,如果PulseCount=PulseCount_LastRead,表明时间窗口内还没有脉冲到达,当前计算速度保持前一个计算速度。
本发明的优点通过记录一个即时的时间窗的脉冲个数和脉冲累加时间来精确测速,并且记录最近的脉冲个数和时刻作为下一个时间窗口的初始值,为下一个时间窗口作准备。它有效地解决了测速快速性和精确性的矛盾。


图1是滑动时间窗口测速原理图。
图2是对图1中不同时刻的程序执行解释表。
具体实施例方式
本发明的滑动时间窗口法测量旋转轴转速的方法包括与转速相关的计数脉冲的测量及对脉冲的处理转换,测速方法如下1)初始化,设定实际的脉冲计数PulseCount=0,脉冲上升沿时刻PulseTime=0,上一次有效读时的脉冲数PulseCount_LastRead=0,上一次有效读时的脉冲时刻PulseTime_LastRead=0,当前速度n=0;2)初始化后第一个脉冲上升沿,中断函数设定PulseCount=0,开始时刻PulseTime=T0,PulseCount_LastRead=0,PulseTime_LastRead=T0,当前速度n=0;3)第二个脉冲到达,中断函数设定PulseCount=PulseCount+1=0+1=1,PulseTime=T1。
4)随后到达的每个脉冲,中断函数设定PulseCount=PulseCount+1,第N个脉冲到达时的PulseCount=N-1,并记下当前时刻PulseTime=T(N-1),系统记录最新的脉冲数N-1和脉冲上升沿时刻T(N-1);5)主程序要求计算速度,此时把第一个脉冲上升沿T0和当前时刻前的最近一次脉冲上升沿T(N-1)定义为时间窗口的起点和终点,时间窗口的脉冲个数为PulseCount=N-1,脉冲累加时间为PulseTime=T(N-1)-T0,设旋转轴每转产生k个脉冲,当前转速用n表示,单位为转/分(rpm),利用脉冲个数和脉冲累加时间计算当前速度n=(N-1)*60*1000000)/{T(N-1)-T0}/k,并且设定PulseCount_LastRead=N-1,PulseTime_LastRead=T(N-1)为下一个时间窗口的起点;6)主程序要求计算速度,方法同5),此时的时间窗口起点为T(N-1),时间窗口终点为TM,脉冲个数为M-N-1,脉冲累加时间为TM-T(N-1),当前速度n={(M-N-1)*60*1000000}/{TM-T(N-1)}/k,并且设定PulseCount_LastRead=M和PulseTime_LastRead=TM为下一个时间窗口的起点;如此反复随机计算各时刻的即时速度;7)主程序要求计算速度,如果PulseCount=PulseCount_LastRead,表明时间窗口内还没有脉冲到达,当前计算速度保持前一个计算速度。
本发明的时间窗(脉冲累加时间)可以设定、修改,也可以随机产生,可随时改变设定。
现结合图1、图2详细说明滑动时间窗口测速方法见附图1T0、T1等表示脉冲上升沿时刻,0、1、2等表示脉冲链计数,①、②、③等表示微处理器的动作。微处理器初始化时配置定时器中断捕捉脉冲,它可为上升沿也可为下降沿,本说明中用上升沿,程序设有4个全局变量PulseCount(实际的脉冲计数)、PulseTime(脉冲上升沿时刻)、PulseCount_LastRead(上一次有效读时的脉冲数)、PulseTime_LastRead(上一次有效读时的脉冲时刻)。假设PulseTime、PulseTime_LastRead的单位为微秒(us),旋转轴每转产生k个脉冲,当前转速用n表示,单位为转/分(rpm)。测速由两部分组成一是中断函数捕捉脉冲,对应于附图1中的②、④、⑤等脉冲上升沿时刻;二是测速函数不定期执行(微处理器空闲时执行,时间可以很短,保证测速及时快速),对应于附图1中的①、③、⑥、⑦、⑧、⑨等时刻。
具体如图2①初始化,设定PulseCount=0,PulseTime=0,PulseCount_LastRead=0,PulseTime_LastRead=0,当前速度n=0。
②初始化后第一个脉冲上升沿,中断函数设定PulseCount=0,PulseTime=T0,PulseCount_LastRead=0,PulseTime_LastRead=T0,当前速度n=0。
③第二个脉冲来之前主程序要求计算速度,由于PulseCount=PulseCount_LastRead,PulseCount_LastRead、PulseTime_LastRead值不变,当前速度n不变,=0。
④第二个脉冲到达,中断函数设定PulseCount=PulseCount+1=0+1=1,PulseTime=T1。
⑤随后到达的每个脉冲,中断函数设定PulseCount=PulseCount+1,并记下当前时刻PulseTime。这样做的好处是系统只记录最新的脉冲数和脉冲上升沿时刻,中断函数非常小,不影响系统运行。
⑥主程序要求计算速度,此时把第一个脉冲上升沿T0和当前时刻前的最近一次脉冲上升沿T4定义为时间窗口的起点和终点,时间窗口的脉冲个数为PulseCount_LastRead-PulseCount=4-0=4,脉冲累加时间为PulseTime_LastRead-PulseTime=T4-T0,利用脉冲个数和脉冲累加时间就可计算当前速度n=4*60*1000000)/(T4-T0)/K。并且设定PulseCount_LastRead=PulseCount=4,PulseTime_LastRead=PulseTime=T4,为下一个时间窗口设定起点。
⑦主程序要求计算速度,方法同⑥,此时时间窗口起点为T4,终点为T6,脉冲个数为6-4=2,脉冲累加时间为T6-T4。当前速度n=(2*60*1000000)/(T6-T4)/k,并且设定PulseCount_LastRead=PulseCount=6,PulseTime_LastRead=PulseTime=T6,为下一个时间窗口设定起点。
⑧主程序要求计算速度,由于PulseCount=PulseCount_LastRead=6,表明时间窗口内还没有脉冲到达,此时设定PulseCount_LastRead和PulseTime_LastRead值不变,当前计算速度保持以前计算速度。
⑨方法同⑥。当前速度n=((8-6)*60*1000000)/(T8-T6)/k。
本发明的核心是通过滑动时间窗记录一个即时的时间窗的脉冲个数和脉冲累加时间来精确测速。因此,凡是通过滑动时间窗记录一个时间窗的脉冲个数和脉冲累加时间来测速的,均属于本发明的保护范围。
权利要求
1.一种滑动时间窗口法测量旋转轴转速的方法,包括与转速相关的计数脉冲的测量及对脉冲的处理转换,其特征在于测速方法如下1)初始化,设定实际的脉冲计数PulseCount=0,脉冲上升沿时刻PulseTime=0,上一次有效读时的脉冲数PulseCount_LastRead=0,上一次有效读时的脉冲时刻PulseTime_LastRead=0,当前速度n=0;2)初始化后第一个脉冲上升沿,中断函数设定PulseCount=0,开始时刻PulseTime=T0,PulseCount_LastRead=0,PulseTime_LastRead=T0,当前速度n=0;3)第二个脉冲到达,中断函数设定PulseCount=PulseCount+1=0+1=1,PulseTime=T1。4)随后到达的每个脉冲,中断函数设定PulseCount_=PulseCount+1,第.N个脉冲到达时的PulseCount=N-1,并记下当前时刻PulseTime=T(N-1),系统记录最新的脉冲数N-1和脉冲上升沿时刻T(N-1);5)主程序要求计算速度,此时把第一个脉冲上升沿T0和当前时刻前的最近一次脉冲上升沿T(N-1)定义为时间窗口的起点和终点,时间窗口的脉冲个数为PulseCount=N-1,脉冲累加时间为PulseTime=T(N-1)-T0,当前转速用n表示,利用脉冲个数N-1和脉冲累加时间T(N-1)-T0计算当前速度n,并且设定PulseCount_LastRead=N-1、PulseTime_LastRead=T(N-1)为下一个时间窗口的起点;6)主程序要求计算速度,方法同5),此时的时间窗口起点为T(N-1),时间窗口终点为TM,脉冲个数为M-N-1,脉冲累加时间为TM-T(N-1),利用脉冲个数M-N-1和脉冲累加时间TM-T(N-1)计算当前速度n,并且设定PulseCount_LastRead=M和PulseTime_LastRead=TM为下一个时间窗口的起点;如此反复随机计算各时刻的即时速度;7)主程序要求计算速度,如果PulseCount=PulseCount_LastRead,表明时间窗口内还没有脉冲到达,当前计算速度保持前一个计算速度。
2.根据权利要求1所述的滑动时间窗口法测量旋转轴转速的方法,其特征在于设旋转轴每转产生k个脉冲,当前转速n的单位为转/分rpm,利用脉冲个数和脉冲累加时间计算当前速度n=(N-1)*60*1000000/{T(N-1)-T0}/k。
全文摘要
本发明提供一种滑动时间窗口法测量旋转轴转速的方法,在轴上安装磁电传感器或霍尔传感器,传感器信号经过信号调理电路得到脉冲链,对该脉冲链计时或计数就可测得旋转轴速度。本发明采用滑动时间窗口定义时间窗的起点和终点,通过记录一个即时的时间窗的脉冲个数和脉冲累加时间来精确测速,利用中断函数记录最近的脉冲个数和时刻作为下一个时间窗口的初始值,为下一个时间窗口作准备。它有效地解决了测速快速性和精确性。
文档编号G01D5/12GK1975435SQ20061012510
公开日2007年6月6日 申请日期2006年11月23日 优先权日2006年11月23日
发明者董雄鹤, 周杰敏, 余建华 申请人:东风汽车有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1