一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

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

2022-05-18 07:54:33 来源:中国专利 TAG:


1.本发明涉及机械表计量,特别是涉及一种低功耗机械表中基于脉冲时差法的计量方法,。


背景技术:

2.近些年来,自动抄表技术被大力倡导及应用,为紧跟社会的发展,许多公司都在在传统机械表的基础上研发了二合一的机械远传表。为满足对机械远传表通过数字的方式获取表具的物理齿轮盘上累计量的问题,大多数都是采用了以下几种方式。
3.1、光电直读,这种方式最是简单。一般分为干式和湿式两种表类型,光电结构上又分为三种结构:反射式光电直读字轮结构、透射式光电直读字轮结构、湿式干装的透射式光电直读字轮结构。这三种结构的光电直读湿式水表,其共同处为:光电直读湿式水表的电路(光电传感器及主电路)以及和电路连接的m-bus通讯线,因为通讯线要引出到外界,因此电路和外界空气是同一个大气压,水表的字轮位于水中,和管道的水是同一压力,根据塑料的化学特性,随着时间的推移、四季寒暑的交替变化、温度的变化、水压力下的环境,透明的塑料会慢慢老化、变脆;并且长期使用后还存在这读数的准确性变差,故障率高的问题2.磁钢片式,这种方式采用了磁体和干簧管的吸合产生发出脉冲来计算累积量。
4.(1)外界磁力干扰敏感,会导致误触发脉冲或者不触发脉冲。
5.(2)磁体的感应强度不一致,生产的磁体的磁力强弱从出厂就会磁力不一致,随着使用时间变长和外界环境的干扰,磁力衰减严重后可能会导致触发不了脉冲信号。
6.(3)干簧管的产品质量不统一,难以做到大批量的一致,会导致在磁力衰减的情况下干簧管触发不稳定,导致计量不精准的问题。
7.3.霍尔传感器式,这种方式利用率霍尔效应,在磁体经过霍尔元件时产生的脉冲来计算累积量。这种方式相比较于前两种方式来说,具有简单,小型,频率响应宽,动态范围大,寿命长,无接触,能克服采集是水锤、震动等现象。但是还是有以下缺点:外界磁场达到一定的强度会有一定的干扰导致霍尔传感器误发脉冲。
8.不管是直读还是计算脉冲的方式,由于机械表的结构决定了,齿轮正反都会转动,如果是由于空气过大导致的正转可能会导致误计量或者由于水流的回流导致的反转照成少计量,使得脉冲数量和表盘数据不一致问题。


技术实现要素:

9.本发明的目的在于克服现有技术的不足,提供一种低功耗机械表中基于脉冲时差法的计量方法,,根据霍尔传感器的磁干扰和正反转误计、漏记缺点进行处理,达到实际计量数据和表盘示数基本一致,可以自动通过计算来减小磁干扰和表在水回流的时候进行的误计问题。
10.本发明的目的是通过以下技术方案来实现的:一种低功耗机械表中基于脉冲时差法的计量方法,,包括以下步骤:
s1.设安装在管具上的机械表通过霍尔元件进行计量,根据霍尔元件的计量的特性,定义机械表的正转和反转;s2.确定机械表的转动停止判断条件;s3.定义表具工作基于霍尔脉冲时差法的相关参数s4.基于霍尔脉冲时差法进行计量。
11.其中,所述步骤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走过的夹角。
12.其中,所述步骤s2中,机械表的转动停止判断条件为:根据表具管径和使动流量,预先设定表具转动一圈需要的最大时间dn_time;如果h1_time或者h2_time大于dn_time,则表示整个表已经停止转动。
13.其中,所述步骤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。
14.其中,所述步骤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 表示已经转动一圈,然后判断正反转标志,如果是正转那么就会把误记的反向累计量加到正向累积量里面去;反之,就会把误记的正向累计量加到反向累计量中去;然后清除临时累计计数器; 每一个中断脉冲通过上述处理后就会排除掉绝大部分的干扰数据得到正确的累积量。
15.本发明的有益效果是:本发明根据霍尔传感器的磁干扰和正反转误计、漏记缺点进行处理,达到实际计量数据和表盘示数基本一致,可以自动通过计算来减小磁干扰和表在水回流的时候进行的误计问题。
附图说明
16.图1为本发明的方法流程图;图2为实施例中单片机的工作流程图;图3为计量流程示意图。
具体实施方式
17.下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
18.如图1所示,包括以下步骤:s1.设安装在管具上的机械表通过霍尔元件进行计量,根据霍尔元件的计量的特性,定义机械表的正转和反转;s2.确定机械表的转动停止判断条件;s3.定义表具工作基于霍尔脉冲时差法的相关参数s4.基于霍尔脉冲时差法进行计量。
19.在本技术的实施例中,如图2所示,单片机经过初始化后,打开所有需要的中断,然后查询一下是否有中断事件需要处理,如果没有就进入低功耗;如果有霍尔脉冲触发的中断就进入中断处理函数,利用时差法计量和流速算法处理产生的脉冲中断信号,当处理完成后再判断是否还有中断事件需要处理,没有就进入低功耗状态。
20.如图3所示,由于霍尔元件会触发两个霍尔脉冲中断,我们把他记作h1和h2,由经过h1产生的时间我们记作h1time,经过h2的时间记作h2time。由h1触发的中断标志记作h1flag,由h2触发的中断标志记作h2flag。
21.如果经过h1或者h2超时时记作h1h2timeout。
22.计量时间确定算法:此算法根据霍尔脉冲触发的时间来确定霍尔元件每经过一圈时触发脉冲时的时间,以此来记录霍尔元件每次触发脉冲所用的时间,当时间超时时会记录下当前时间并保存下来触发超时标志,并根据这个时间来判断表具是在动水还是静水状态。
23.此算法根据计量时间确定算法得到的时间,来判断时间差值,如果时间差值在我们设计的范围就是正转,如果时间差小于就是反转,然后进行判断是否错误计量恢复,如果当前是正转然后因为干扰错误触发脉冲导致的反转需要通过连续的转动脉冲错误修正来判断是不是需要修正当前累计量并且清除掉当前反向标志。如果因为干扰误触发脉冲,导致的正反转顺序出现反向,此时需要通过正反转区分算法来修正是不是真的在反转或者是不是真的在正转,以此来判断本次是正累计还是反向累计计量。
24.在具体实施过程中所述步骤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走过的夹角。
25.在本技术的实施例中,拟定的h1_time》=h2_time为 临时(初始)正转方向,反之为 临时(初始)反转方向,这个方向会根据后面的纠错判断来进行正反转方向纠正:如果第一
次是记为正转并且他的后面三次都是正转,那他第一次的转动方向就为正转。反之如果第一次是记为正转并且他的后面三次都是反转,那他第一次的转动方向就为反转并且进行累积量补偿。
26.其中,所述步骤s2中,机械表的转动停止判断条件为:根据表具管径和使动流量,预先设定表具转动一圈需要的最大时间dn_time;如果h1_time或者h2_time大于dn_time,则表示整个表已经停止转动。
27.其中,所述步骤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。
28.其中,所述步骤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表示已经转动一圈,然后判断正反转标志,如果是正转那么就会把误记的反向累计量加到正向累积量里面去;反之,就会把误记的正向累计量加到反向累计量中去;然后清除临时累计计数器;每一个中断脉冲通过上述处理后就会排除掉绝大部分的干扰数据得到正确的累积量。
29.在本技术的实施例中,对霍尔元件的安装位置和夹角大小没有特别要求,只需要存在一定夹角(此夹角会让在运行过载流量(q4)时h1_time与h2_time存在一个大于10ms的时间差就行),就算是最开始是一直反向计量,也可以通过改变正反向输出(这个不需要说明,只是把正向输出为反向而已或者反向输出为正向,不影响算法)来改变原始因为设定h1_time》=h2_time导致的一直计量反向问题。
30.所以本技术只需要霍尔元件存在夹角就行,此夹角在安装霍尔元件时就会不可避免的存在。
31.例如:dn20q4=5000l/h转子转动一圈代表10l那么每秒流速约为5000/3600=1.39l/s,那么转动10l就约需要10/1.39=7.19s那么10ms的时间差只需要h1与h2角度大于0.5
°
,20ms的时间差只需要h1与h2角度大于1
°
。这个角度与安装误差相比几乎可以忽略不计。所以本技术就具有很强意义的广谱性,几乎对所有转动一圈会两次触发脉冲类机械表适用。
32.上述说明示出并描述了本发明的一个优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献