一种低功耗机械表中基于脉冲时差法的计量方法与流程

文档序号:30075060发布日期:2022-05-18 03:03阅读:来源:国知局

技术特征:
1.一种低功耗机械表中基于脉冲时差法的计量方法,,其特征在于:包括以下步骤:s1.设安装在管具上的机械表通过霍尔元件进行计量,根据霍尔元件的计量的特性,定义机械表的正转和反转;s2.确定机械表的转动停止判断条件;s3.定义表具工作基于霍尔脉冲时差法的相关参数;s4.基于霍尔脉冲时差法进行计量。2.根据权利要求1所述的一种低功耗机械表中基于脉冲时差法的计量方法,,其特征在于:所述步骤s1包括:设机械表中安装有两个霍尔元件,分别为h1和h2,设磁性材料制成的机械表指针先经过h1再经过h2为一次正转计量;根据霍尔元件的计量的特性,当经过霍尔元件就会触发一个脉冲中断,将霍尔元件h1和h2连接到机械表中的单片机,并由单片机内部时钟,并构建定时器进行计时,基于计时进行机械表正反转判断的方式如下:当判定为第一次经过h1或者h2时开始统计经过h1或h2的次数,并开始计时:从经过h1触发脉冲到经过h2触发脉冲间隔的时间记为h1_time;从经过h2触发脉冲到经过h1触发脉冲间隔的时间记为h2_time,并且拟定h1_time>=h2_time为正转,反之为反转;其中,指针从h1到h2的走过夹角大于从h2到h1走过的夹角。3.根据权利要求1所述的一种低功耗机械表中基于脉冲时差法的计量方法,,其特征在于:所述步骤s2中,机械表的转动停止判断条件为:根据表具管径和使动流量,预先设定表具转动一圈需要的最大时间dn_time;如果h1_time或者h2_time大于dn_time,则表示整个表已经停止转动。4.根据权利要求1所述的一种低功耗机械表中基于脉冲时差法的计量方法,,其特征在于:所述步骤s3包括:如果h1_time或h2_time > dn_time,此时认为h1_time和h2_time已经超时并置位为真,记作h1h2timeoutflag = true,并记录在与微处理连接的fram中,防止掉电丢失计量状态_h1h2timeoutflag,并且把h1和h2计量初始化状态标志置位为真,记作h1h2initflag = true,把h1/h2定时器计时标志置位为假,记作h1h2timerflag = false,并清理转子转动标志置位为假,记作h1h2run_countflag = false,并记录在fram中防止掉电丢失计量状态;如果h1h2initflag ==true并且h1h2timerflag == false,那么就会初始化所有的计量标志和计量次数,包括h1h2timeoutflag = false,h1中断标志h1interruptflag = false,h2中断标志.h2interruptflag = false,h1h2timerflag = true,h1_time = 0,h2_time =0,中断计数器intnum = 0,保存数据次数 num =0,临时计量管道h1h2arr=0,时间计量管道h1h2_time_buf = 0,时间记录个数h1h2_timenum =0,时间记录位置h1h2_timelocal =0。5.根据权利要求1所述的一种低功耗机械表中基于脉冲时差法的计量方法,,其特征在于:所述步骤s4包括以下子步骤:s401.若h1h2timerflag == true,判断为定时器已经准备好开始计时,开始执行计量;s402.如果满足:程序复位标志为真,即resflag == true,并且转子转动标志为真即h1h2run_countflag = =true;
则判定为程序计量超时并接着之前的计量状态计量,并清理resflag = false,h1h2timeoutflag = false和fram里面的状态标志;如果不满足,则清理程序复位标志resflag = false和fram里面的状态标志;s403.在触发h1中断时进行计量处理;如果触发了h1中断,此时记作h1interruptflag = true,h2interruptflag = false,h1h2initflag = false;然后判断是否超时,即判断_h1h2timeoutflag的状态:如果未超时即_h1h2timeoutflag = false,就判断intnum 是否大于等于1,如果大于等于1就在h1h2arr中写入h2_time并保存在fram中inf_h1h2arr防止掉电丢失,然后清理h2_time = 0,num++;然后在h1h2arr写入h1标志h1,并保存在fram中inf_h1h2arr防止掉电丢失;接着执行计量数据处理,首先判断intnum,如果小于等于1,表示数据管道里面少于两个数据不做处理;其次判断数据管道里面的数据是否正常:如果是h1h2h1或者h2h1h2这种交替状态那么就认为数据管道的数据是正常的可以进行正常判定;如果是h1h1h2或者h2h2h1这种连续出现两个转动标志的数据就需要去判定正反转状态,然后根据后续数据处理这组数据;如果是h1h1h1或者h2h2h2这种连续触发数据都是同一个中断的形式,那么就暂时判定为硬件损坏,记录硬件损坏标志,并开始计时,如果在转子转动停下后下一次启动还是这种状态那么就确认为硬件损坏,并把损坏信息上报,如果在下一次恢复了这种状态,那么将这个累计数据经过判定后进入计量;(1)在h1h2h1/h2h1h2 时,判读当前中断如果为h2interruptflag == true,h1interruptflag == false,那么触发模式肯定是h2h1h2,继续判读管道数据里面的时间是否是h1_time>=h2_time,如果是那么暂时判读为正转,并暂时写入正累积量,并设置错误数据恢复纠错判断;反之判读为反转,并暂时写入反累积量,并设置错误数据恢复纠错判断;判读当前中断如果为h1interruptflag == true,h2interruptflag == false,那么触发模式肯定是h1h2h1,继续判读管道数据里面的时间是否是h1_time>=h2_time,如果是那么暂时判读为正转,并暂时写入正累积量,并设置错误数据恢复纠错判断;反之判读为反转,并暂时写入反累积量,并设置错误数据恢复纠错判断;紧接着把数据管道进行移位处理,把intnum
‑‑
,num
ꢀ‑
= 2;其中,intnum
‑‑
是指对intnum进行更新,更新后的intnum等于更新前的intnum减一;num
ꢀ‑
= 2是指对num进行更新,更新后的num等于更新前的num减二;并把最新的数据保存在inf_h1h2arr中,确保数据管道里面每次保存数据都是保存的最新的数据;(2)在h2h2h1/h1h1h2 时,首先先区分正反转,如果反转标志不为假即reversingrotation_flag == true,并且当前中断标志和fram存储的上一次的中断标志一致的话,即_h1interruptflag == h1interruptflag,认定为反转,反之为正转,并置位正反
转标志reversingrotation_flag和写入临时正反转累积量;此标志位默认为真即正转reversingrotation_flag == true;紧接着把数据管道进行移位处理,并把最新的数据保存在inf_h1h2arr中,然后把intnum
‑‑
,num
ꢀ‑
= 2;(3)在h1h1h1/h2h2h2时,首先写入霍尔元件损坏标志inf_h1h2destroy == true,然后清理h1h2initflag = false,h1h2timerflag = false,等待数据管道复位进行下次计量;(4)纠错判读,首先先判读当前状态是正转还是反转,如果是正转但是reversingrotation_flag == false,接着在判断反转圈数rotationnum,如果小于两圈不做处理并进行当前圈数累计,如果rotationnum >= 2,就先清理rotationnum = 0,然后清除反方向转动标志reversingrotation_flag = false,并正向补偿两圈方向减少两圈计量;其中,当前状态即目前记录的状态,也就是计量时判断的临时正转和反转方向;s404.将intnum++,num++,并保存在fram中,然后保存h1interruptflag,h2interruptflag和置位转子运行标志h1h2run_countflag = true,并把这些都保存在fram中;s405.若触发了h2中断,按照与h1相同的流程进行计量处理;s406.在进行超时判断时如果触发了h1中断,此时记作h1interruptflag = true,h2interruptflag = false,h1h2initflag = false;然后判断是否超时,即状态_h1h2timeoutflag,如果已经超时就执行超时恢复数据:首先从inf_h1h2arr中恢复临时计量管道数据h1h2arr = inf_h1h2ar,然后写入超时时间,接着恢复保存数据次数num = _h1h2timenum,恢复中断次数intnum = _h1h2intnum,然后保存超时时间并让num++;恢复数据后需要立即判断中断执行次数,如果_h1h2intnum >= 2,此时认为已经转动一圈了,需要进行正反累计量判断,执行步骤s403中的(2);紧接着把数据管道进行移位处理,并把最新的数据保存在inf_h1h2arr中,然后把intnum
‑‑
,num
ꢀ‑
= 2;然后清理标志和计数h1_time =0 ,h2_time =0,h1h2timeoutflag = false,并保存在fram中_h1h2timeoutflag = false;s407.执行区分真假正反累积量判断:先得到临时的正向和反向累计数之和,然后判断当前累积数量是否等于2,等于2 表示已经转动一圈,然后判断正反转标志,如果是正转那么就会把误记的反向累计量加到正向累积量里面去;反之,就会把误记的正向累计量加到反向累计量中去;然后清除临时累计计数器; 每一个中断脉冲通过上述处理后就会排除掉绝大部分的干扰数据得到正确的累积量。

技术总结
本发明公开了一种低功耗机械表中基于脉冲时差法的计量方法,包括以下步骤:S1.设安装在管具上的机械表通过霍尔元件进行计量,根据霍尔元件的计量的特性,定义机械表的正转和反转;S2.确定机械表的转动停止判断条件;S3.定义表具工作基于霍尔脉冲时差法的相关参数;S4.基于霍尔脉冲时差法进行计量。本发明根据霍尔传感器的磁干扰和正反转误计、漏记缺点进行处理,达到实际计量数据和表盘示数基本一致,可以自动通过计算来减小磁干扰和表在水回流的时候进行的误计问题。流的时候进行的误计问题。流的时候进行的误计问题。


技术研发人员:沈畅 陈治年
受保护的技术使用者:沈畅
技术研发日:2022.01.27
技术公布日:2022/5/17
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1