可实现双向计量的智能电表的总电量累加方法

文档序号:5885017阅读:647来源:国知局
专利名称:可实现双向计量的智能电表的总电量累加方法
技术领域
本发明涉及一种累加方法,具体涉及可实现双向计量的智能电表的总电量累加方法。
背景技术
专用电能计量芯片通常能够实时判断潮流方向,其对应寄存器中计量值的符号也随之发生变化。具体地说,如果指定有功功率的参考方向为电网流向用户,则当有功功率的方向与参考方向相反时为负功率,表示用户向电网回送电能,对应寄存器中的计量值为负数;当有功功率的方向与参考方向一致时为正功率,表示用户从电网汲取电能,对应寄存器中的计量值为正数。电量在专用电能计量芯片中的计量过程分成两个阶段。第一阶段由集成在芯片中的DSP完成,它对功率做有符号的积分运算并将结果暂存在一个内部寄存器中。当积分结果达到用户设定的阈值时,DSP在输出一个脉冲的同时,用内部寄存器中存储的积分结果减去阈值;第二阶段计数DSP输出的脉冲个数,并将计数值暂存在累加寄存器中。当MCU读取计数值时,该计数值将从累加寄存器转存到能量寄存器中,能量寄存器或者清零,或者保留原计数值。DSP输出的脉冲分频后得到电表的能量脉冲,分频倍数取决于电表常数。目前使用的电子式电能表几乎都采用计数能量脉冲,通过指示灯显示的脉冲个数来计算用户的用电量。例如,某电子式电能表的常数是^OOimp/kW·!!,当脉冲个数累加(通常通过MCU中的定时器实现)到400个时,用户就消耗了 0. IkW 的电量。这种简单的电量累加方法存在下述诸多缺点(1)电磁干扰可能导致脉冲个数的增加或减少,从而造成计量误差;(2)设计者通常指定一个计数阈值,譬如上文的400。当计数器计到这个数值时, 才会将计数值清零并将该部分电量累加到总电量中;若要随机读取当前的计数值,则可能会产生士 1个脉冲的计数误差。如果当前的计数值不是400,则会带来较大的计算误差。譬如,若当前的计数值为13,则13/4000 = 0. 00325kff *h,软件很可能将小数点后的325截掉,因此丢掉了这部分电量。(3)若专用电能计量芯片的计量原理是对功率,而不是功率的绝对值积分,大的阈值(在电能计量芯片的相关寄存器中设置,当积分值达到此阈值时,电能计量芯片中的DSP 输出一个脉冲)会带来大的双向计量误差。目前,大多数的MCU芯片只支持整数运算,如果要在这些MCU上进行小数运算,定点小数运算应该是最佳选择。虽然用浮点MCU来做应该容易的多,但低成本也是非常重要的,定点机器比相应的浮点机器要便宜,而且速度更快。

发明内容
针对现有技术存在的不足,本发明的目的在于提供一种能完成双向总电量累加的算法。
本发明提供的可实现双向计量的智能电表的总电量累加方法,其改进之处在于 所述方法包括累加正反向总电量和累加各费率的正反向总电量;使用“读复位”模式的能量寄存器。本发明提供的第一优选方案的累加方法,其改进之处在于所述累加正反向总电量包括下述步骤a)软件判断MCU从能量寄存器中读取的计数值Reader的符号;b)将a)的计数值除以C,整数商存放在ht中,余数存放在Dec中;c)将b)中的整数和余数分别与存储器中的原有数据做正反向总电量的累加。本发明提供的第二优选方案的累加方法,其改进之处在于所述累加各费率正反向总电量的步骤为1)软件判断Reader的符号和某费率的总电量TAEnergy的符号;2)根据Reader和TAEnergy的符号,确定情况类型,将Reader累加到相应费率的总电量上。本发明提供的第三优选方案的累加方法,其改进之处在于所述寄存器中的数据为二进制补码形式,负数则需要将其变换成原码形式,并屏蔽符号位。本发明提供的第四优选方案的累加方法,其改进之处在于由电能计量芯片中阈值寄存器中数据确定所述C值。本发明提供的第五优选方案的累加方法,其改进之处在于所述Reader为正数, 将其累加到正向总电量上;整数商和正向总电量的整数部分PEInt相加;余数和正向总电量的小数部分PEDec相加;PEDec ^ C,向整数进位,并将PEDec-C所得数据作为下一次累加的小数部分。本发明提供的第六优选方案的累加方法,其改进之处在于所述情况类型包括所述Reader为负数,所述TAEnergy为负数;所述Reader为正数,所述TAEnergy为正数;所述Reader为正数,所述TAEnergy为负数;所述Reader为负数,所述TAEnergy为正数。本发明提供的第七优选方案的累加方法,其改进之处在于①所述Reader为负数,所述TAEnergy为负数,将Reader取反码并加+1,屏蔽 TAEInt与Int的符号位,将TAEht和Int相加后存入TAEht,同时符号位置1 ;余数TAEDec 和Dec相加后存入TAEDec ;存入新数据的TAEDec ^ C,向整数部分进位,并将TAEDec-C存入TAEDec,作为下一次累加的小数部分;②所述Reader为正数,所述TAEnergy为正数,将TAEInt与Int直接相加后存入 TAEInt, TAEDec与Dec直接相加后存入TAEDec ;存入新数据的TAEDec彡C,向整数部分进位,并将TAEDec-C存入TAEDec作为下一次累加的小数部分;③所述Reader为正数,所述TAEnergy为负数,屏蔽TAEnergy的整数部分TAEInt 的符号位,将TAEInt减去ht的值存入TAEht,TAEInt彡ht,给新存入的TAEInt加上负号;将TAEDec减去Dec的值存入TAEDec,TAEDec < Dec, TAEDec向整数部分借位,并将 TAEDe+C减去Dec的值存入TAEDec中;整数部分为零,用Dec减去TAEDec后存入TAEDec, 并将TAEInt的符号位清零,表示总电量为正数;TAEDec彡Dec时,将TAEDec减去Dec后存Λ TAEDec ;④所述Reader为负数,所述TAEnergy为正数,将Reader取反码后加1,同时屏蔽其符号位;TAEht彡Int,将TAEInt减去ht的值存入TAEht,表示总电量是正数; 将TAEDec减去Dec,TAEDec < Dec时,TAEDec向整数借位,用TAEDec+C减去Dec后存入 TAEDec ;整数部分为零,用Dec减去TAEDec后存入TAEDec,并将TAEInt的符号位置1,表示总电量是负数;TAEDec彡Dec时,将TAEDec减去Dec的结果存入TAEDec。与现有技术相比,本发明的有益效果为上述两种算法只用到整数运算,却可以保证数字的准确和电量的精确累加,大部分的数据处理只用加法或减法就能完成。将它们应用在定点MCU中,不仅可降低计量装置的成本,而且运算速度更快;与采用计数能量脉冲个数计算用电量的方法不同,它们不会因算法的随机执行而带来任何的读数和计算误差;校表更加快速和精确。测试人员随时可以读取电能表计量的总电量并与标准电量比较,计算出计量误差;依据电力公司的要求,即可以分别累加正向和反向总电量,也可计算出组合总电量。


图1本发明提供的流程2本发明提供的正反向总电量累加的流程3本发明提供的各费率正反向总电量累加的第③种情况的流程图
具体实施例方式本方法要求能量寄存器必须配置成“读复位”模式,即MCU读取计数值后能量寄存器清零。这种模式使电量计数值从MCU读取的时刻起,再次从零开始计数,确保了正确的双向计量值。(1)正反向总电量的累加如附图2,首先判断MCU从能量寄存器中读取的计数值Reader的符号。寄存器中的数据通常都是二进制补码形式,负数则需要将其变换成原码形式,并屏蔽符号位。其次,将计数值除以C,整数商存放在ht中,余数存放在Dec中。若Reader为正数,则将其累加到正向总电量上。累加时,整数商和正向总电量的整数部分PEInt相加后再存入PEht,余数和正向总电量的小数部分PEDec相加后再存入 PEDec (PEInt表示正向总电量的整数部分,PEDec表示正向总电量的小数部分)。当存储后的PEDec彡C时,则需要进位。例如,当C= IO6时,PEDec是以IO6为进制向正向总电量的整数部分进位的。若Reader为负数,反向总电量的累加方法与正向相同,只是在显示时需要加负号 (NEInt表示反向总电量的整数部分,NEDec表示反向总电量的小数部分)。值得一提的是,总电量的整数部分可以直接显示,因为其单位就是kW · h。总电量的小数部分在显示时要除以C,再取要求的位数。如上面提到的C= 106,若总电量的小数部分是251044,在要求2位小数时的显示结果为.25kW · h。(2)各费率正反向总电量的累加各费率正反向总电量的累加比(1)要略微复杂些,总电量的累加被分成了四种情况①Reader为负数,某费率的总电量TAEnergy为负数,其中TAEht的符号表示已有某费率总电量的整数部分,TAEDec表示已有某费率总电量的余数部分;②Reader为负数, TAEnergy为正数;③Reader为正数,TAEnergy为负数;④Reader为正数,TAEnergy为正数。对Reader的处理与(1)相同,得到Reader的整数和小数部分。通过判断Reader 和TAEnergy的符号,确定当前的累加操作属于上述四种情况中的哪一种。需要说明的是,在执行这个累加算法前,需要判断当前时段采用的是哪种费率,然后才能将Reader累加到相应费率的总电量上。在显示时的处理也与(1)相同。①Reader为负数,某费率总电量TAEnergy为负数,将Reader取反码并加+1,屏蔽 TAEInt与Int的符号位,将TAEht和Int相加后存入TAEht,同时符号位置1 ;余数TAEDec 和Dec相加后存入TAEDec ;若TAEDec彡C,则向整数部分进位,并将TAEDec-C存入TAEDec, 即作为下一次累加的小数部分;②Reader为正数,TAEnergy为正数,将TAEInt与Int直接相加后存入TAEht, TAEDee与Dec直接相加后存入TAEDec,若TAEDec彡C,则向整数部分进位,并将TAEDec-C 存入TAEDec作为下一次累加的小数部分;③Reader为正数,TAEnergy为负数,屏蔽TAEnergy的整数部分TAEInt的符号位。 比较Int和TAEInt的大小,TAEht彡Int时,将TAEInt减去ht的值存入TAEht,给新存入的TAEInt加上负号;比较TAEDec与Dec的大小,TAEDec < Dec时,TAEDec需要向整数部分借位,并将TAEDe+C减去Dec的值存入TAEDec中;若整数部分为零不能借位时,则用Dec 减去TAEDec后存入TAEDec,并将TAEInt的符号位清零,表示总电量为正数。TAEDec彡Dec 时,将TAEDec减去Dec后存入TAEDec。TAEInt < Int 时,将 Int 减去 TAEht 的结果存入 TAEht ;比较 TAEDec 与 Dec 的大小,TAEDec < Dec时,将Dec减去TAEDec后存入TAEDec。TAEDec ^ Dec时,则需要向整数部分借位,将C-TAEDec+Dec的计算结果存入TAEDec。④Reader为负数,TAEnergy为正数,将Reader取反码后加1,同时屏蔽其符号位;比较Int和TAEInt的大小,TAEInt彡ht时,将TAEInt减去ht的结果存入 TAEht,表示总电量是正数;比较TAEDec与Dec的大小,TAEDec < Dec时,TAEDec需要向整数借位,用TAEDec+C减去Dec后存入TAEDec。若整数部分为零不能借位时,则用Dec减去 TAEDec后存入TAEDec,并将TAEInt的符号位置1,表示总电量是负数;TAEDec彡Dec时,将 TAEDec减去Dec的结果存入TAEDec。TAEInt < ht时,将Int减去TAEht的结果存入TAEht,将新存入的TAEht的符号位置1,表示总电量是负数;比较TAEDec与Dec的大小,TAEDec < Dec时,用Dec减去 TAEDec后将结果存入TAEDec。TAEDec彡Dec时,则需向整数部分借位,将C-TAEDec+Dec的计算结果存入TAEDec。
权利要求
1.可实现双向计量的智能电表的总电量累加方法,其特征在于所述方法包括累加正反向总电量和累加各费率的正反向总电量;使用“读复位”模式的能量寄存器。
2.如权利要求1所述的累加方法,其特征在于所述累加正反向总电量包括下述步骤a)软件判断MCU从能量寄存器中读取的计数值Reader的符号;b)将a)的计数值除以C,整数商存放在ht中,余数存放在Dec中;c)将b)中的整数和余数分别与存储器中的原有数据做正反向总电量的累加。
3.如权利要求1所述的累加方法,其特征在于所述累加各费率正反向总电量的步骤为1)软件判断Reader的符号和某费率的总电量TAEnergy的符号;2)根据Reader和TAEnergy的符号,确定情况类型,将Reader累加到相应费率的总电量上。
4.如权利要求1所述的累加方法,其特征在于所述寄存器中的数据为二进制补码形式,负数则需要将其变换成原码形式,并屏蔽符号位。
5.如权利要求2所述的累加方法,其特征在于由电能计量芯片中阈值寄存器中数据确定所述C值。
6.如权利要求2所述的累加方法,其特征在于所述Reader为正数,将其累加到正向总电量上;整数商和正向总电量的整数部分PEInt相加;余数和正向总电量的小数部分 PEDec相加;PEDec ^ C,向整数进位,并将PEDec-C所得数据作为下一次累加的小数部分。
7.如权利要求3所述的累加方法,其特征在于所述情况类型包括 所述Reader为负数,所述TAEnergy为负数;所述Reader为正数,所述TAEnergy为正数; 所述Reader为正数,所述TAEnergy为负数; 所述Reader为负数,所述TAEnergy为正数。
8.如权利要求7所述的累加方法,其特征在于①所述Reader为负数,所述TAEnergy为负数,将Reader取反码并加1,屏蔽TAEInt与 Int的符号位,将TAEht和Int相加后存入TAEht,同时符号位置1 ;余数TAEDec和Dec相加后存入TAEDec ;存入新数据的TAEDec彡C,向整数部分进位,并将TAEDec-C存入TAEDec, 作为下一次累加的小数部分;②所述Reader为正数,所述TAEnergy为正数,将TAEInt与Int直接相加后存入 TAEInt, TAEDec与Dec直接相加后存入TAEDec ;存入新数据的TAEDec彡C,向整数部分进位,并将TAEDec-C存入TAEDec作为下一次累加的小数部分;③所述Reader为正数,所述TAEnergy为负数,屏蔽TAEnergy的整数部分TAEInt的符号位,将TAEInt减去Int的值存入TAEht,TAEInt彡ht,给新存入的TAEInt加上负号;将 TAEDec减去Dec的值存入TAEDec,TAEDec < Dec, TAEDec向整数部分借位,并将TAEDe+C减去Dec的值存入TAEDec中;整数部分为零,用Dec减去TAEDec后存入TAEDec,并将TAEInt 的符号位清零,表示总电量为正数;TAEDec彡Dec时,将TAEDec减去Dec后存入TAEDec ;④所述Reader为负数,所述TAEnergy为正数,将Reader取反码后加1,同时屏蔽其符号位;TAEht彡Int,将TAEInt减去ht的值存入TAEht,表示总电量是正数;将TAEDec 减去Dec,TAEDec < Dec时,TAEDec向整数借位,用TAEDec+C减去Dec后存入TAEDec ;整数部分为零,用Dec减去TAEDec后存入TAEDec,并将TAEht的符号位置1,表示总电量是负数;TAEDec彡Dec时,将TAEDec减去Dec的结果存入TAEDec。
全文摘要
本发明可实现具有双向计量功能的智能电表的总电量累加方法,所述方法包括正反向总电量的累加和各费率正反向总电量的累加,能量寄存器采用“读复位”模式。上述两种方法只用到整数运算,却可以保证数字的准确和电量的精确累加,大部分的数据处理只用加法或减法就能完成。将它们应用在定点MCU中,不仅可降低计量装置的成本,而且运算速度更快;测试人员随时可以读取电能表计量的总电量并与标准电量比较,计算出计量误差。本发明依据电力公司的要求,即可以分别累加正向和反向总电量,也可计算出组合总电量。
文档编号G01R11/57GK102200544SQ20101061572
公开日2011年9月28日 申请日期2010年12月31日 优先权日2010年12月31日
发明者孟珺遐 申请人:中国电力科学研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1