电能表周期冻结数据的快速查询方法技术

技术编号:38772002 阅读:12 留言:0更新日期:2023-09-10 10:45
本发明专利技术公开了一种电能表周期冻结数据的快速查询方法,属于电数字数据处理领域。该方法步骤包括:步骤1、从所冻结的数据中找到满足以下条件的两个冻结点N1和N2:待查询时标TimerX位于上述N1和N2之间,且N1和N2之间的冻结数据的时标和序号呈线性关系;步骤2、设冻结点N1的时标为TimerN1、序号为NoN1,冻结点N2的时标为TimerN2、序号为NoN2,则根据线性关系得到TimerX对应的序号NoX;步骤3、返回序号NoX对应的冻结数据。本发明专利技术解决了原有查询方式无法应对时标不连续递增的问题,同时具有查询效率高等优点。高等优点。高等优点。

【技术实现步骤摘要】
电能表周期冻结数据的快速查询方法


[0001]本专利技术属于电数字数据处理领域,涉及一种数据的查询方法,具体是电能表周期冻结数据的查询方法。

技术介绍

[0002]电能表规范中规定了电能表需要按一定周期存储冻结数据,即每过一段时间,将数据冻结并存到EEPROM或者FALSH中。保存的数据、时间间隔和冻结的条数都是可以设置的。该机制的目的是实现历史数据的可追溯,使主站或者终端设备可以请求电能表将指定的冻结时间的数据进行上传,实现冻结数据的查询。
[0003]电能表作为一个小型的单片机系统,受硬件资源和成本的限制,无法行复杂的查询算法。所以查询时,无法直接通过遍历所有数据对应的冻结时间的方式来获取所需要的数据。
[0004]针对上述问题,存储冻结数据时,电能表还会为每一条数据指定一个递增的序号。一般的,电能表采用环形存储结构来保存冻结数据,每保存一条新的冻结数据,会同时覆盖最旧的一条冻结数据,同时电能表会记录下当前环形存储中待写入的下一条数据的存储位置(称之为当前存储位置)以及该位置对应的序号(称之为当前序号),这样通过当前存储位置、当前序号和环形存储的总长度(即冻结深度),就可以得到当前有效的序号范围以及每一个有效的序号对应的存储位置,从而在查询时,可以根据查询的冻结时间先定位到相应的序号,再通过序号从环形存储中找到需要的数据。例如,环形存储的总长度为100,当前序号是201(下一条新数据所对应的序号),则当前数据的有效序号是从101

200。对于该范围内的任一有效的序号,如序号150,电能表都可以根据当前序号201及其对应的存储位置,推算出序号150对应的数据在环形存储中的存储位置。因此,如何根据待查询时间定位到对应的序号,是查询搜索的关键。
[0005]正常情况下,所存储的时标可以视为一个连续递增的等差数列,时标和序号之间是线性的对应关系,如图1。因此查询时,只需要根据当前有效冻结数据的第一条的时标TimerS和序号NoS、以及最后一条的时标TimerE和序号NoE,就可以按线性关系推算出查询的目标时标TimerX所对应的序号NoX,从而快速找到目标数据。但是,一旦出现掉电、向后校时等情况,时标将出现突然激增的情况,如图2所示,此时时标和序号不再呈线性关系,现有的查询方式无法得到正确的查询结果。
[0006]如果采用遍历时标的方式进行查询,将占用大量的硬件资源,耗时过长。尤其是在当前通信串口波特率由2400 bps提升至115200bps、单相表分钟冻结条数由原来的288条扩展到35040条的情况下,新的规范已经对电能表的查询回复速度提出了更高的要求。遍历时标的方式根本不可能满足查询速度的要求。

技术实现思路

[0007]本专利技术提出了一种电能表周期冻结数据的快速查询方法,其目的是:解决因冻结
数据中的时标不连续递增所带来的查询速度慢的问题。
[0008]本专利技术技术方案如下:一种电能表周期冻结数据的快速查询方法,步骤为:步骤1、从所冻结的数据中找到满足以下条件的两个冻结点N1和N2:待查询时标TimerX位于上述N1和N2之间,且N1和N2之间的冻结数据的时标和序号呈线性关系;步骤2、设冻结点N1的时标为TimerN1、序号为NoN1,冻结点N2的时标为TimerN2、序号为NoN2,则根据以下公式得到TimerX对应的序号NoX:NoX= NoN1+(TimerX

TimerN1)
×
(NoN2

NoN1)/(TimerN2

TimerN1);步骤3、返回序号NoX对应的冻结数据。
[0009]作为所述电能表周期冻结数据的快速查询方法的进一步改进:步骤1中,按以下方式找到冻结点N1和N2:步骤1.1、声明变量XTimerS、XNoS、XTimerE和XNoE,并初始化:XTimerS=TimerS,XNoS=NoS,XTimerE=TimerE,XNoE=NoE;其中,NoS为冻结数据中第一条数据即第一个冻结点的序号,NoE为冻结数据中最后一条数据即最后一个冻结点的序号,TimerS为NoS对应的冻结数据的时标,TimerE为NoE对应的冻结数据的时标;步骤1.2、设电能表冻结数据的周期为Cycle,判断以下条件是否成立:(XTimerE

XTimerS)/(XNoE

XNoS)=Cycle;如果成立,则将XNoS对应的冻结点作为N1,将XNoE对应的冻结点作为N2,并有:TimerN1=XTimerS,NoN1= XNoS,TimerN2=XTimerE,NoN2= XNoE,步骤1结束,执行步骤2;如果不成立,则执行步骤1.3;步骤1.3、求得(XNoS+XNoE)/2的值并取整,然后将取整结果赋值至序号变量MidNo,然后从冻结的数据中找到MidNo对应的时标MidTimer,再判断TimerX与MidTimer的大小关系:如果TimerX<MidTimer,则令XTimerE=MidTimer,XNoE=MidNo,然后执行步骤1.2;如果TimerX>MidTimer,则令XTimerS=MidTimer,XNoS=MidNo,然后执行步骤1.2。
[0010]作为所述电能表周期冻结数据的快速查询方法的进一步改进:步骤1.3中,如果TimerX=MidTimer,则令NoX=MidNo,然后直接执行步骤3。
[0011]作为所述电能表周期冻结数据的快速查询方法的进一步改进:当需要查询TimerX1至TimerX2之间的所有冻结数据时,先将TimerX1作为上述TimerX按步骤1和步骤2找到其对应的序号NoX作为序号NoX1,再将TimerX2作为上述TimerX找到其对应的序号NoX作为NoX2,最后返回序号NoX1至序号NoX2之间的所有冻结数据。
[0012]作为所述电能表周期冻结数据的快速查询方法的进一步改进:当需要查询TimerX1至TimerX2之间的所有冻结数据时,先将TimerX1作为上述TimerX按步骤1和步骤2找到其对应的序号NoX作为序号NoX1,再从序号NoX1对应的冻结数据开始逐条返回,每次返回前判断当前要返回的冻结数据的时标是否超过TimerX2,如果超过则停止返回。
[0013]作为所述电能表周期冻结数据的快速查询方法的进一步改进:当需要查询TimerX1至TimerX2之间的满足预设条件的冻结数据时,先将TimerX1作为上述TimerX按步骤1和步骤2找到其对应的序号NoX作为序号NoX1,再从序号NoX1对应的冻结数据开始逐条
返回,每次返回前判断当前要返回的冻结数据是否满足上述预设条件以及其时标是否超过TimerX2:如果满足预设条件且时标未超过TimerX2则返回,如果不满足预设条件但时标未超过TimerX2则不返回该条当前要返回的冻结数据且继续下一条冻结数据的判断,如果时标超过TimerX2则停止返回。
[0014]本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种电能表周期冻结数据的快速查询方法,其特征在于步骤为:步骤1、从所冻结的数据中找到满足以下条件的两个冻结点N1和N2:待查询时标TimerX位于上述N1和N2之间,且N1和N2之间的冻结数据的时标和序号呈线性关系;步骤2、设冻结点N1的时标为TimerN1、序号为NoN1,冻结点N2的时标为TimerN2、序号为NoN2,则根据以下公式得到TimerX对应的序号NoX:NoX= NoN1+(TimerX

TimerN1)
×
(NoN2

NoN1)/(TimerN2

TimerN1);步骤3、返回序号NoX对应的冻结数据。2.如权利要求1所述的电能表周期冻结数据的快速查询方法,其特征在于:步骤1中,按以下方式找到冻结点N1和N2:步骤1.1、声明变量XTimerS、XNoS、XTimerE和XNoE,并初始化:XTimerS=TimerS,XNoS=NoS,XTimerE=TimerE,XNoE=NoE;其中,NoS为冻结数据中第一条数据即第一个冻结点的序号,NoE为冻结数据中最后一条数据即最后一个冻结点的序号,TimerS为NoS对应的冻结数据的时标,TimerE为NoE对应的冻结数据的时标;步骤1.2、设电能表冻结数据的周期为Cycle,判断以下条件是否成立:(XTimerE

XTimerS)/(XNoE

XNoS)=Cycle;如果成立,则将XNoS对应的冻结点作为N1,将XNoE对应的冻结点作为N2,并有:TimerN1=XTimerS,NoN1= XNoS,TimerN2=XTimerE,NoN2= XNoE,步骤1结束,执行步骤2;如果不成立,则执行步骤1.3;步骤1.3、求得(XNoS+XNoE)/2的值并取整,然后将取整结果赋值至序号变量MidNo,然后从冻结的数据中找到MidNo对应的时标MidTimer,再判断TimerX与MidTim...

【专利技术属性】
技术研发人员:尹西科刘占峰卢志强樊尊皓林晓溪李彤辉李海岩刘军蕾辛炜翰
申请(专利权)人:烟台东方威思顿电气有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1