#define ENERGY_GLOBALS#include "includes.h"void EnergyDataPowerOnInit(void){INT8U i;EnergyReverseTest.ReverseRecordCnt=0;CalculateTatolEnergy();if(ReadEepromData(LAST_POWERDOWN_TIME_ID,TempBufOfMain))//以下是上电转存处理{if((TempBufOfMain[0]==0)&&(TempBufOfMain[1]==0)&&(TempBufOfMain[2]==0)&&(TempBufOfMain[3]==0))//没有停电记录return;if(TempBufOfMain[3]!=CurrentTime.Year)//停电跨年{if((TempBufOfMain[2]==0x12)&&(CurrentTime.Month==0x01))//停电时间不超过一个月{if((TempBufOfMain[1]{EnergyMonthStore();}elseif((MonthStoreDate[1]{EnergyMonthStore();}}else//超过一个月{EnergyMonthStore();}}else//停电不跨年{if(TempBufOfMain[2]==CurrentTime.Month)//停电不跨年不跨月{if((TempBufOfMain[1]{if((MonthStoreDate[1]{EnergyMonthStore();}}}else//不跨年但跨月{TempBufOfMain[2]+=2;if((TempBufOfMain[2]&0x0f)>=0x0a)TempBufOfMain[2]+=0x06;//转化成BCD码if(CurrentTime.Month>=TempBufOfMain[2])//停电跨2个月EnergyMonthStore();else//跨月但没有跨2个月{if((TempBufOfMain[1]{EnergyMonthStore();}elseif((MonthStoreDate[1]{EnergyMonthStore();}}}}}for(i=0;iTempBufOfMain[i]=0;WriteEepromData(LAST_POWERDOWN_TIME_ID,TempBufOfMain); }//有功电能计算void ActiveEnergyCalculate(void){INT8U CarryCnt;INT8U *Pnt;_EnergyAccum=0;IncBcd(&EnergyData.ActiveTotalEnergy[0],4);Pnt=&EnergyData.ActiveTotalEnergy[0];Pnt+=((TimeSliceInfo.CurrentRateID-1)IncBcd(Pnt,4);WriteEepromData(ACTIVE_ENERGY_ID0+EnergyData.EnergyPointer,&EnergyData.ActiveRate1Energy[0]);}void ReverseEnergyCalculate(void){_ReverseEnergyAccum=0;IncBcd(&EnergyData.ActiveReverseEnergy[0],4);WriteEepromData(REVERSE_TOTAL_ENERGY_ID,&EnergyData.ActiveReverseEnergy[0]);}void PowerDownTask(void){TempBufOfMain[0]=PulseSample.PulseNum[0];TempBufOfMain[1]=PulseSample.PulseNum[1];TempBufOfMain[2]=PulseSample.PulseNum[2];TempBufOfMain[3]=PulseSample.PulseNum[3];WriteEepromData(ENERGY_PULSE_ID,TempBufOfMain);TempBufOfMain[0]=CurrentTime.Hour;TempBufOfMain[1]=CurrentTime.Day;TempBufOfMain[2]=CurrentTime.Month;TempBufOfMain[3]=CurrentTime.Year;WriteEepromData(LAST_POWERDOWN_TIME_ID,TempBufOfMain);while(1);}void EnergyMonthStore(void){WriteEepromData(ACTIVE_ENERGY_ID0+EnergyData.EnergyPointer,&EnergyData.ActiveRate1Energy[0]);EnergyData.EnergyPointer++;if(EnergyData.EnergyPointer>12)EnergyData.EnergyPointer=0;WriteEepromData(ACTIVE_ENERGY_ID0+EnergyData.EnergyPointer,&EnergyData.ActiveRate1Energy[0]);TempBufOfMain[0]=EnergyData.EnergyPointer;WriteEepromData(CURRENT_ENERGY_POINTER_ID,TempBufOfMain);}void CalculateTatolEnergy(void){BcdAdd(&EnergyData.ActiveRate1Energy[0],&EnergyData.ActiveRate2Energy[0],TempBufOfMain,4);BcdAdd(TempBufOfMain,&EnergyData.ActiveRate3Energy[0],&EnergyData.ActiveTotalEnergy[0],4);}void InitEnergyData(INT8U *DataPnt){INT8U i;INT8U *Pnt;/*初始化当前正向电量*/Pnt=&EnergyData.ActiveRate1Energy[0];for(i=0;i{*Pnt=*DataPnt;Pnt++;DataPnt++;}CalculateTatolEnergy();/*初始化当前反向电量*/Pnt=&EnergyData.ActiveReverseEnergy[0];for(i=0;i{*Pnt=0;Pnt++;}/*清0历史电量*/for(i=0;iTempBufOfMain[i]=0;for(i=ACTIVE_ENERGY_ID1;iWriteEepromData(i,TempBufOfMain);PulseSample.PulseNum[0]=0;PulseSample.PulseNum[1]=0;PulseSample.PulseNum[2]=0;PulseSample.PulseNum[3]=0;//保存当前锋平谷电能WriteEepromData(ACTIVE_ENERGY_ID0,&EnergyData.ActiveRate1Energy[0]);//保存反向电能WriteEepromData(REVERSE_TOTAL_ENERGY_ID,&EnergyData.ActiveReverseEnergy[0]);//保存电能脉冲数TempBufOfMain[0]=0;TempBufOfMain[1]=0;TempBufOfMain[2]=0;TempBufOfMain[3]=0;WriteEepromData(ENERGY_PULSE_ID,TempBufOfMain);EnergyData.EnergyPointer=0;WriteEepromData(CURRENT_ENERGY_POINTER_ID,&EnergyData.EnergyPointer);}void EnergyReverseDeal(void){if(IS_ENERGY_REVERSE_HIGH){EnergyReverseTest.ReverseHighCnt=0;EnergyReverseTest.ReverseLowCnt++;if(EnergyReverseTest.ReverseLowCnt>=3){MeterRunningState&=0xef;//正向电能EnergyReverseTest.ReverseLowCnt=0;EnergyReverseTest.ReverseState=0;}}else{EnergyReverseTest.ReverseLowCnt=0;EnergyReverseTest.ReverseHighCnt++;if(EnergyReverseTest.ReverseHighCnt>=3){MeterRunningState|=0x10;//反向电能EnergyReverseTest.ReverseHighCnt=0;if(EnergyReverseTest.ReverseState==0){TempBufOfMain[0]=CurrentTime.Minute;TempBufOfMain[1]=CurrentTime.Hour;TempBufOfMain[2]=CurrentTime.Day;TempBufOfMain[3]=CurrentTime.Month;WriteEepromData(LAST_POWER_REVERSE_TIME_ID,TempBufOfMain);EnergyReverseTest.ReverseState=1;}}}if(EnergyReverseTest.ReverseState){EnergyReverseTest.ReverseRecordCnt++;if(EnergyReverseTest.ReverseRecordCnt>=60){EnergyReverseTest.ReverseRecordCnt=0;IncBcd(ReverseTotalTime,3);WriteEepromData(POWER_REVERSE_TOTALTIME_ID,ReverseTotalTime);}}}

c软件查表获得电量代码_energy.c 源代码在线查看 - 基于单片机的多费率电能表源程序 资源下载 虫虫电子下载站...相关推荐

  1. 时间在线验证 java代码_timetest.java 源代码在线查看 - Java获取各种常用时间方法 资源下载 虫虫电子下载站...

    package com.hefeng.test;import java.text.DateFormat;import java.text.ParsePosition;import java.text. ...

  2. java迷宫生成代码_maxe.java 源代码在线查看 - Java Maze 计算机自动生成迷宫 资源下载 虫虫电子下载站...

    public class Maxe{ private int startI, startJ; // 入口 private int endI, endJ; // 出口public void setSta ...

  3. 分时电价机制调整选择复费率电能表

    安科瑞 徐涵 2022年12月16日,上海市发改委发布<关于进一步完善我市分时电价机制有关事项的通知>(沪发改价管[2022]50号).通知明确上海分时电价机制,一般工商业及其他两部制.大 ...

  4. java面试题集 代码_java面试题集1.txt 源代码在线查看 - 常见的JAva面试试题 资源下载 虫虫电子下载站...

    63.抽象类与接口? 答:抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能).编程题:1.现在输入n个数字,以逗号,分开:然后可选择升 ...

  5. java 源代码 八字_lunar.java 源代码在线查看 - 农历八字查询 可以查阴历,星期,四柱八字,节气, 资源下载 虫虫电子下载站...

    int cyclicalMonth = 0;int cyclicalDay = 0;// 干支年 1900年立春後为庚子年(60进制36)int term2 = Lunar.getSolarTermD ...

  6. 万特电能表接线仿真系统 软件_电能表上20(80)A什么意思?基本电流和最大电流什么区别?涨知识...

    点击蓝色字免费订阅,每天收到这样的好信息 电能表几乎家家户户都在使用,相信大部分的电工师傅都非常熟悉,即便很多不是电工的师傅也都多多少少的了解过,一般情况下,电能表有2个最重要的电流指标:基本电流Ib ...

  7. 免校准的电量计量芯片_单相电能表如何校准(单相电能计量芯片+MCU)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 单相电能表的校准方法: 1 接线 1.1 将电压线接到被校电能表的电压进线端,如果电压线不好接,也可以接在插座.保险盒.闸刀等处,直接取出电压,所配电压线 ...

  8. 多功电子表是否采用计算机技术计量,浅谈电子式电能表应用的几点问题

    摘要:文章通过对感应式电能表和电子式电能表的对比分析,总结出了电子式电能表的一些性能特点,并对其应用提出了一些看法和建议. 关键词:电子式电能表 电能计量 1 概述 现代企业管理强调自动化.智能化,要 ...

  9. C语言单相智能电表课程设计,《单相单用户电能表的设计课程设计》

    <<单相单用户电能表的设计课程设计>>由会员分享,可在线阅读,更多相关<<单相单用户电能表的设计课程设计>(10页珍藏版)>请在金锄头文库上搜索. 1. ...

  10. 智能电表软件测试,智能电能表软件测试技术概述

    [摘要] 针对软件在智能电能表中发挥的作用越来越大,其质量问题已成为影响电能表产品质量的关键因素的实际情况,软件测试是保证软件质量的最有效措施,所以测试技术应被引进并受到足够重视.文章分析了智能电能表 ...

最新文章

  1. [更新问题]无法在安装新的版本前,为“./boot/vmlinuz-2.6.24-19-generic”做一个符号链接备份...
  2. 思科发布安全大数据分析架构 OpenSOC
  3. 在一个风景秀丽的小镇,一天早上,有N名晨跑爱好者(编号1~N)沿着优雅的江边景观道朝同一方向进行晨跑
  4. php如何判断文件的内容,php 判断文件内容是否存在的方法
  5. HyperLogLog原理与在Redis中的使用
  6. springcache使用笔记001_注释驱动的 Spring cache 简单使用
  7. postgre非零相除等于0_LeetCode刷题实战29:两数相除
  8. XMLHTTP使用详解
  9. jquery操作li向下向上几行
  10. android 显示flash视频播放器
  11. 【机器学习】监督学习的分类:判别/生成模型,概率/非概率模型、参数/非参数模型
  12. 奥卡姆剃刀:让事情回归简单
  13. 程序员真的需要一台 Mac 吗?
  14. 23.卷积神经网络实战-ResNet
  15. 完美解决window10硬盘占用100%,很卡顿的现象(图文教程),亲测有效
  16. java时钟代码_一个经典的JAVA APPLET时钟程序(一)
  17. Istio官方文档翻译
  18. 2位数码管秒表c语言程序,利用定时器实现2位数码管秒表0到99循环
  19. 【PYTHON小项目】VCF文件转EXCEL文件方法详解(附QUOTED-PRINTABLE编解码)
  20. 当你打开天猫的那一刻,推荐系统做了哪些工作?(转)

热门文章

  1. Windows操作系统免费下载地址(itellyou)
  2. 18个好用APP,你手机里有哪些堪称神器的APP
  3. java 生成随机加减乘除_用Java随机生成四则运算
  4. sigar(System Information Gatherer And Reporter)简介
  5. python编程a的x次方_python平方-Python,平方
  6. python 平方公里和英亩单位转换
  7. Docker从基础到企业生产应用学习笔记大总结
  8. 从特征融合的视角设计图神经网络的拓扑结构
  9. MIUI12系统如何刷入开发版获得ROOT权限
  10. AM5SE-IS防孤岛保护装置如何解决分布式光伏发电过程中的影响?