一种智能电能表时钟加速模拟运行方法及***
技术领域
本发明涉及智能电表技术领域,尤其涉及一种智能电能表时钟加速模拟运行方法及***。
背景技术
随着智能化技术的发展,常规电能表已逐步被智能电能表所替代。智能电能表应用保有量大,一旦安装需要长期运行,其对软件可靠性要求很高,一旦发现软件问题,就需要进行大批量更新或更换,造成较大的损失。
智能电能表主要功能对时钟依赖度较高,其基本计量、定时冻结等功能均需要时钟信号触发,因此极易发生长时间运行时软件可靠性降低、程序逻辑出错、特定时间点处理不当等问题。在常规的测试中,主要依赖拷机实验的方法进行测试,但限于硬件时钟,该类问题很难通过厂内短时间的拷机测试被发现。该类问题虽然有一定的随机性,但在用户现场拥有大量样本且长时间运行时,该类问题的暴露几乎成为必然,将会导致维护费用大增。
发明内容
本发明的目的是提供一种智能电能表时钟加速模拟运行的方法及***,用于解决快速模拟智能电能表长期运行工况的问题,帮助快速找出并修复长时间运行时发生的缺陷。
为达到上述目的,本发明提供了一种智能电能表时钟加速模拟运行方法,包括:将硬件的心跳时钟(Tick)采用Tick时钟软件模拟并替换;RTC硬件时钟采用软件的全局变量模拟替换;
Tick时钟软件模拟包括:
根据所需加速倍数计算延时间隔时间;
每隔延时间隔时间执行延时处理;
输出心跳时钟(Tick)触发信号;
判断是否到达1秒,如果到达则将RTC时钟同步增加1秒,否则返回根据所需加速倍数计算延时间隔时间的步骤。
进一步地,根据所需加速倍数计算延时间隔时间,包括,延时间隔时间为W*1000/m,m为所需加速倍数,W为硬件心跳时钟的触发信号发送时间间隔。
进一步地,延时处理时长为0~5000微秒。
进一步地,Tick时钟软件模拟为独立于主程序线程之外的时钟线程,每隔延时间隔输出时钟信号至主程序线程,作为主程序线程程序运行时时间信号的最小单位。
进一步地,Tick时钟软件模拟嵌入主程序线程内,主程序线程每运行一个周期,触发一次Tick时钟软件模拟程序,接收一次Tick时钟软件模拟程序输出的时钟信号,作为主程序线程程序运行时时间信号的最小单位。
进一步地,加速倍数支持设置在1~100倍时,采用独立于主程序线程之外的Tick时钟软件模拟为时钟线程,每隔延时间隔输出时钟信号至主程序线程,作为主程序线程程序运行时时间信号的最小单位;
加速倍数超过100倍时,主程序线程每运行一个周期,触发一次嵌入主程序线程内的Tick时钟软件模拟,接收一次Tick时钟软件模拟程序输出的时钟信号,作为主程序线程程序运行时时间信号的最小单位。
进一步地,当加速倍数超过5000时,主程序线程每运行一个周期,触发一次Tick时钟软件模拟程序,执行延时处理的延时时间为0。
另一方面提供一种智能电能表时钟加速模拟运行***,包括Tick时钟软件模拟模块和RTC时钟模块;
第一Tick时钟软件模拟模块,独立于主程序,将硬件的心跳时钟(Tick)采用Tick时钟软件模拟并替换;
第二Tick时钟软件模拟模块,嵌入主程序内,将硬件的心跳时钟(Tick)采用Tick时钟软件模拟并替换;
RTC时钟模块,RTC硬件时钟采用软件的全局变量模拟替换;
第一、第二Tick时钟软件模拟模块包括:
延时间隔时间计算单元,获取所需加速倍数,计算延时间隔时间;
延时处理单元,每隔延时间隔时间执行延时处理;
触发信号输出单元,输出心跳时钟(Tick)触发信号;
判断单元,判断是否到达1秒,如果到达则将RTC时钟同步增加1秒,否则返回根据所需加速倍数计算延时间隔时间的步骤。
进一步地,延时间隔时间计算单元计算延时间隔时间,包括,延时间隔时间为W*1000/m,m为所需加速倍数,W为硬件心跳时钟的触发信号发送时间间隔。
进一步地,加速倍数支持设置在1~100倍时,采用第一Tick时钟软件模拟模块,每隔延时间隔输出时钟信号至主程序线程,作为主程序线程程序运行时时间信号的最小单位;
加速倍数超过100倍时,主程序线程每运行一个周期,触发一次第二Tick时钟软件模拟模块,接收一次Tick时钟软件模拟程序输出的时钟信号,作为主程序线程程序运行时时间信号的最小单位。进一步地,当加速倍数超过5000时,主程序线程每运行一个周期,延时处理单元执行延时处理的延时时间为0。
本发明的上述技术方案具有如下有益的技术效果:
(1)本发明通过软件模拟硬件的Tick时钟和RTC时钟,实现快速模拟智能电能表长期运行工况,可以提高对时钟运行的可控性,使智能电能表测试或调试时能够脱离对硬件时钟的依赖,发现长时间运行时存在的缺陷。
(2)本发明通过双线程模式时,独立线程与时钟定时器更接近,该时钟加速模拟方式可以更快地检测出时钟定时器的随机触发可能对主程序运行造成的影响。
(3)本发明通过嵌入模式时,可以防止过快时钟信号触发对主程序造成干扰,能够设置时钟加速更快而不影响主程序运行,在更短时间内模拟出大量数据,更快速地模拟出长时间运行时软件程序的逻辑或处理错误。
(4)本发明还可以对加速倍数进行灵活设置,很方便地控制时钟运行快慢。
附图说明
图1是本发明的时钟加速模拟方法的原理图。
图2是本发明的时钟模拟程序的流程图。
图3是本发明的时钟加速模拟程序运行方式1:独立线程运行。
图4是本发明的时钟加速模拟程序运行方式2:嵌入到主程序运行。
图5是本发明的时钟加速模拟***组成示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
本发明提供一种智能电能表时钟加速模拟运行方法,包括:将硬件的心跳时钟(Tick)采用Tick时钟软件模拟并替换;RTC硬件时钟采用软件的全局变量模拟替换。
Tick时钟软件模拟包括:
(1)根据所需加速倍数计算延时间隔时间。
延时间隔时间为W*1000/m,m为所需加速倍数,W为硬件心跳时钟的触发信号发送时间间隔。
(2)每隔延时间隔时间执行延时处理。
在一些实施例中,延时处理时长为0~5000微秒。
(3)输出心跳时钟(Tick)触发信号。
(4)判断是否到达1秒,如果到达则将RTC时钟同步增加1秒,否则返回步骤(1)。
一方面Tick时钟软件模拟可以为独立于主程序线程之外的时钟线程,每隔延时间隔输出时钟信号至主程序线程,作为主程序线程程序运行时时间信号的最小单位。另一方面Tick时钟软件模拟嵌入主程序线程内,主程序线程每运行一个周期,触发一次Tick时钟软件模拟程序,接收一次Tick时钟软件模拟程序输出的时钟信号。
在一些实施例中,加速倍数支持设置在1~100倍时,采用独立于主程序线程之外的Tick时钟软件模拟为时钟线程,每隔延时间隔输出时钟信号至主程序线程,作为主程序线程程序运行时时间信号的最小单位;加速倍数超过100倍时,主程序线程每运行一个周期,触发一次嵌入主程序线程内的Tick时钟软件模拟,接收一次Tick时钟软件模拟程序输出的时钟信号,作为主程序线程程序运行时时间信号的最小单位。可以设置极限加速模式,即将延时处理的延时时间为0微秒,此时每运行1次主程序即触发1次Tick时钟计数。当加速倍数超过5000时,执行极限加速模式,执行延时处理的延时时间为0。
实施例
本发明的智能电能表时钟加速模拟运行方法实施例,其工作原理如下图1所示,包括如下步骤:
如图1所示,将硬件时钟替换为软件时钟进行模拟,将智能电能表5毫秒间隔的硬件Tick时钟的寄存器使用内存变量进行替换,将硬件RTC时钟寄存器使用内存变量进行替换。
设置Tick时钟软件模拟程序,通过软件实现微秒级延时,并完成对5毫秒Tick时钟的模拟,其中实际延时时间通过5*1000微秒/时钟加速倍数计算得出,如图2流程图所示,在Tick时钟模拟时,需先进行延时计算,确定延时的微秒数,如延时100倍,即每延时50微秒触发一次软件模拟的Tick时钟计数。
如图2所示,通过Tick模拟时钟得出模拟的秒消息,以该秒消息触发RTC时钟的计数,达到Tick时钟与RTC时钟同步。
为时钟加速模拟程序设置独立线程,如图3所示,运行方式1,同时在主程序中加入时钟加速模拟程序,如图4所示,运行方式2,针对两种运行方式通过加速模式标识来进行控制,同时仅能采用方式1或方式2中的一种方式运行。
本实施例中,硬件Tick时钟的5毫秒延时根据实际硬件获取,5毫秒间隔为程序运行时时间信号的最小单位,该数据可根据实际运行环境进行修改。
本实施例中,微秒级延时通过获取芯片高精度计数周期来进行控制。
另一方面提供一种智能电能表时钟加速模拟运行***,结合图5包括第一Tick时钟软件模拟模块、第二Tick时钟软件模拟模块和RTC时钟模块。
第一Tick时钟软件模拟模块,独立于主程序,将硬件的心跳时钟(Tick)采用Tick时钟软件模拟并替换。
第二Tick时钟软件模拟模块,嵌入主程序内,将硬件的心跳时钟(Tick)采用Tick时钟软件模拟并替换。
RTC时钟模块,RTC硬件时钟采用软件的全局变量模拟替换。
第一、第二Tick时钟软件模拟模块包括延时间隔时间计算单元、延时处理单元、触发信号输出单元以及判断单元。
延时间隔时间计算单元,获取所需加速倍数,计算延时间隔时间。延时间隔时间为W*1000/m,m为所需加速倍数,W为硬件心跳时钟的触发信号发送时间间隔。
延时处理单元,每隔延时间隔时间执行延时处理。
触发信号输出单元,输出心跳时钟(Tick)触发信号。
判断单元,判断是否到达1秒,如果到达则将RTC时钟同步增加1秒,否则返回根据所需加速倍数计算延时间隔时间的步骤。
加速倍数支持设置在1~100倍时,采用第一Tick时钟软件模拟模块,每隔延时间隔输出时钟信号至主程序线程,作为主程序线程程序运行时时间信号的最小单位;加速倍数超过100倍时,主程序线程每运行一个周期,触发一次第二Tick时钟软件模拟模块,接收一次Tick时钟软件模拟程序输出的时钟信号,作为主程序线程程序运行时时间信号的最小单位。进一步地,当加速倍数超过5000时,主程序线程每运行一个周期,延时处理单元执行延时处理的延时时间为0。
综上所述,本发明提供一种智能电能表时钟加速模拟运行的方法及***,本发明通过软件模拟硬件的Tick时钟和RTC时钟,实现快速模拟智能电能表长期运行工况,可以提高对时钟运行的可控性,使智能电能表测试或调试时能够脱离对硬件时钟的依赖,发现长时间运行时存在的缺陷。通过软件模拟硬件时钟的方式,为智能电能表运行提供了加速倍数可调、极速模式等灵活可控的时钟加速方法,为快速模拟长时间运行的工况提供了便利条件,可以补充传统相对短期的拷机实验,加快暴露长时间运行时出现的特定时间点处理不当、程序逻辑出错、软件可靠性降低等问题,帮助产品质量提升。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。