📄 mdload.c
字号:
/*
************************************************************************
* MDLoad.c:
*
********************************************************************
*/
#include "include\macro.h"
#include "include\HardConfig.h"
#include "include\SysConfig.h"
#include "include\SubConfig.h"
#include "include\data.h"
#include "include\bitdef.h"
#include "include\FunAnnounce.h"
#define MD_STU_OVERLOAD 0xa5
#define MD_STU_DOWNLOAD 0x00
#define MD_STU_NATURAL 0x00 //
#define MD_STU_OFFDELAY 0x01 //
#define MD_STU_ONDELAY 0X02 //
/*******************************************************************
* AddMD() :
********************************************************************/
uchar AddMD(void)
{
uint tmpsum= 0;
uchar i;
ulong md_tmp;
uchar md_parm[3];
MDLoad.ptr++;
if(MDLoad.ptr>=5) MDLoad.ptr =0;
for(i=0;i<5;i++)
{
tmpsum += MDLoad.buff[i];
}
MDLoad.buff[MDLoad.ptr] = 0;
md_tmp =((ulong)(tmpsum))*12*100 ;
md_tmp =(md_tmp/CONS_METER);
Long_BCD4( &MDLoad.mpower[0], md_tmp);
MEM_Read(E2P_LIMITMD, &md_parm[0], 0x03);
if(Cmp_TwoArry(&MDLoad.mpower[0],&md_parm[0] ,3) == 255) return(MD_STU_DOWNLOAD);
return(MD_STU_OVERLOAD);
}
/*******************************************************************
**
********************************************************************/
void OverLoad(void)
{
if(MDLoad.status==0)
{
MDLoad.status =1;
MEM_Read(E2P_OMDTMR, &MDLoad.evenTmr, 0x01);
if(MDLoad.evenTmr>=5) MDLoad.evenTmr =5; //max time is 5 minutes
}
}
/*******************************************************************
**
********************************************************************/
void MDstatus_judge(void)
{
uchar tmp=0;
uchar data=0;
tmp = AddMD();
switch (MDLoad.status)
{
case MD_STU_NATURAL:
if(tmp==MD_STU_OVERLOAD)
{
MDLoad.status =MD_STU_OFFDELAY;
MEM_Read(E2P_OMDTMR, &MDLoad.evenTmr, 0x01);
if(MDLoad.evenTmr>=5) MDLoad.evenTmr =5; //max time is 5 minutes
}
break;
case MD_STU_OFFDELAY:
if(tmp==MD_STU_OVERLOAD)
{
MDLoad.evenTmr--;
if(MDLoad.evenTmr==0)
{
MDLoad.status = MD_STU_ONDELAY;
MEM_Read(E2P_CMDTMR, &MDLoad.evenTmr, 0x01);
if(MDLoad.evenTmr>=5) MDLoad.evenTmr =5; //max time is 5 minutes
MEM_Read(E2P_OFFCNT, &data, 0x01);
data++;
MEM_Write(E2P_OFFCNT, &data, 0x01);
Relay.tmr_status |= bitRstu_overoff;
Relay_Opera(OFF);
}
}
else
{
MDLoad.status =MD_STU_NATURAL;
}
break;
case MD_STU_ONDELAY:
MDLoad.evenTmr--;
if(MDLoad.evenTmr==0)
{
MEM_Read(E2P_OFFCNTMAX, &tmp, 0x01);
MEM_Read(E2P_OFFCNT, &data, 0x01);
if(data >tmp)
{
MDLoad.evenTmr = 0x01;
}
else
{
MDLoad.status = MD_STU_NATURAL;
Relay_Judge(6);
}
}
break;
default :
MDLoad.status =MD_STU_NATURAL;
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -