📄 save.c
字号:
up4_data.tj_shuju[4*i+69]=IntToLsb(temp);
up4_data.tj_shuju[4*i+70]=IntToMsb(temp);
up4_data.tj_shuju[4*i+71]=p_hour;
up4_data.tj_shuju[4*i+72]=p_minute;
}
}
/*************总P Q最大值,发生时间***************[81]-[88]************/
temp=up4_data.tj_shuju[81]+up4_data.tj_shuju[82]*256;
if(temp>65000)temp=0;
j=up1_data.avr_p[0]+up1_data.avr_p[1]+up1_data.avr_p[2];
if(j>temp)
{
up4_data.tj_shuju[81]=IntToLsb(j);
up4_data.tj_shuju[82]=IntToMsb(j);
up4_data.tj_shuju[83]=p_hour;
up4_data.tj_shuju[84]=p_minute;
}
temp=up4_data.tj_shuju[85]+up4_data.tj_shuju[86]*256;
if(temp>65000)temp=0;
j=up1_data.avr_q[0]+up1_data.avr_q[1]+up1_data.avr_q[2];
if(j>temp)
{
up4_data.tj_shuju[85]=IntToLsb(j);
up4_data.tj_shuju[86]=IntToMsb(j);
up4_data.tj_shuju[87]=p_hour;
up4_data.tj_shuju[88]=p_minute;
}
for(i=0;i<6;i++)
{
temp=up4_data.tj_shuju[4*i+89];
up2_data.avr_zxb[i]&=0x0ff;
if(up1_data.avr_i[i]>temp) /*abc电压电流谐波最大值、发生时间[86]-[109]*/
{
up4_data.tj_shuju[3*i+89]=IntToLsb(up2_data.avr_zxb[i]);
up4_data.tj_shuju[3*i+90]=p_hour;
up4_data.tj_shuju[3*i+91]=p_minute;
}
}
/**************c1-c12投入时间,*************[107]-[130]*************************/
st_out=0x0001;
for(i=0;i<12;i++)
{
temp=up4_data.tj_shuju[2*i+107]+up4_data.tj_shuju[2*i+108]*256;
if(temp>1440)temp=0;
if((st_out&up1_data.c_status)>0)temp+=1;
up4_data.tj_shuju[2*i+107]=IntToLsb(temp);
up4_data.tj_shuju[2*i+108]=IntToMsb(temp);
st_out<<=1;
}
/*************abc投切次数 三相投切次数 在Tq.c中*********[131]-[138]***********/
/**************三相电压、流最大不平横 发生时间、 **************[139]-[146]***********/
temp=up4_data.tj_shuju[139]+up4_data.tj_shuju[140]*256;
if(temp>28000)temp=0;
if(temp>up1_data.avr_u[3])temp=up1_data.avr_u[3];
up4_data.tj_shuju[139]=IntToLsb(temp);
up4_data.tj_shuju[140]=IntToMsb(temp);
up4_data.tj_shuju[141]=p_hour;
up4_data.tj_shuju[142]=p_minute;
temp=up4_data.tj_shuju[143]+up4_data.tj_shuju[144]*256;
if(temp>65000)temp=0;
if(temp>up1_data.avr_i[3])temp=up1_data.avr_i[3];
up4_data.tj_shuju[143]=IntToLsb(temp);
up4_data.tj_shuju[144]=IntToMsb(temp);
up4_data.tj_shuju[145]=p_hour;
up4_data.tj_shuju[146]=p_minute;
for(i=0;i<3;i++)
{
if(up1_data.avr_c[i]>900) /*cos>0.9 ***[150]-[155]*/
{
temp=up4_data.tj_shuju[2*i+147]+up4_data.tj_shuju[2*i+148]*256;
temp+=1;
if(temp>1440)temp=0;
up4_data.tj_shuju[2*i+147]=IntToLsb(temp);
up4_data.tj_shuju[2*i+148]=IntToMsb(temp);
}
}
temp=up4_data.tj_shuju[153]+up4_data.tj_shuju[154]*256;
temp+=1;
if(temp>1440)temp=0;
up4_data.tj_shuju[153]=IntToLsb(temp);
up4_data.tj_shuju[154]=IntToMsb(temp);
}
/**********************************************************************************/
/*******************数据存储记录从第一页开始,第零页为设置数据*********************/
/****************每天25页。第一页为统计数据,每个正点数据为一页********************/
/**********************************************************************************/
void Re_Tjshuju(void) /*读起统计数据*/
{
uint temp,record;
record=p_month%2;
if(record==1)temp=(p_day+31)*25;
else temp=p_day*25;
Read_Flash(temp,0,&up4_data.tj_shuju[0],155);
}
void Save_Tj(void)
{
uint i,record,one;
record=p_month%2;
if(record==1)one=(p_day+31)*25;
else one=p_day*25;
Write_Flash(one,0,&up4_data.tj_shuju[0],158);
}
/**************************整点数据**********************************/
void Save_Zd(void)
{
uint i,one=0,two=0;
uint record;
record=p_month%2;
if(record==1)one=(p_day+31)*25+p_hour+1;
else one=p_day*25+p_hour+1;
if(p_hour==0)
{
flash_buffer[0]=p_year;
flash_buffer[1]=p_month;
flash_buffer[2]=p_day;
for(i=0;i<12;i++)
{
flash_buffer[2*i+3]=IntToLsb(*(&up1_data.avr_u[0]+i));
flash_buffer[2*i+4]=IntToMsb(*(&up1_data.avr_u[0]+i));
}
for(i=0;i<6;i++)
flash_buffer[27+i]=IntToLsb(up2_data.avr_zxb[i]);
Write_Flash(one,00,flash_buffer,33);
}
else
{
for(i=0;i<12;i++)
{
flash_buffer[2*i]=IntToLsb(*(&up1_data.avr_u[0]+i));
flash_buffer[2*i+1]=IntToMsb(*(&up1_data.avr_u[0]+i));
}
for(i=0;i<6;i++)
flash_buffer[24+i]=IntToLsb(up2_data.avr_zxb[i]);
Write_Flash(one,00,flash_buffer,30);
}
}
void T_Init(void)
{
temp_month=p_month;
temp_day=p_day;
temp_hour=p_hour;
temp_minute=p_minute;
temp_second=p_second;
}
uint one_second(void)//1 second
{
uint s_return;
if(p_second!=temp_second)s_return=1;
else s_return=0;
temp_second=p_second;
return s_return;
}
uint one_minute(void)//1 minute
{
uint m_return;
if(p_minute!=temp_minute)m_return=1;
else m_return=0;
temp_minute=p_minute;
return m_return;
}
/*1 改变,0 未改变*/
uint one_hour(void)/*1 hour*/
{
uint h_return;
if(p_hour!=temp_hour)h_return=1;
else h_return=0;
temp_hour=p_hour;
return h_return;
}
/*如果 1改变 将本天整点,统计数据清零*/
uint one_day(void)
{
uint d_return;
if(p_day!=temp_day)d_return=1;
else d_return=0;
temp_day=p_day;
return d_return;
}
uint one_month(void)
{
uint m_return;
if(p_month!=temp_month)m_return=1;
else m_return=0;
temp_month=p_month;
return m_return;
}
/************************************************************/
/***********flash 第零页为设置数据***************************/
/***********flash 第一页为停电记录次数数据*******************/
/***********flash 第二页为时间数据***************************/
/***********flash 第三页为比例系数数据***********************/
/***********flash 第四页到第二拾三页为停电记录***************/
/***********flash 第二拾五页开始为统计和整点数据,每天25页***/
/************************************************************/
void Save_Td(void)
{
uint i,temp;
Read_Flash(1,0,&temp,1);
temp++;
if(temp>20)temp=0;
flash_buffer[0]=0x01;
Re_tdtime();
flash_buffer[7]=p_year;
flash_buffer[8]=p_month;
flash_buffer[9]=p_day;
flash_buffer[10]=p_hour;
flash_buffer[11]=p_minute;
flash_buffer[12]=p_second;
Write_Flash(1,0,&temp,1);
Write_Flash((temp+4),0,flash_buffer,13);
}
/*
void Save_Time(void)
{
flash_buffer[0]=p_year;
flash_buffer[1]=p_month;
flash_buffer[2]=p_day;
flash_buffer[3]=p_hour;
flash_buffer[4]=p_minute;
flash_buffer[5]=p_second;
Write_Flash(2,0,flash_buffer,6);
}
*/
void Read_Blset(void)
{
uint i;
Read_Flash(3,0,flash_buffer,12);
for(i=0;i<6;i++)
bl_xishu[i]=flash_buffer[2*i]+flash_buffer[2*i+1]*256;
}
void Save_Data(void)
{
uint s_bit;
uint i,j,record;
uint zero;
zero=p_minute%2;
record=p_month%2;
s_bit=one_minute();
if(s_bit==1)
{
Tj_Shuju();
s_bit=one_hour();
if(s_bit==1) /*整点*/
{
s_bit=one_day();
if(s_bit==1) /*过日*/
{
for(i=0;i<158;i++)
*(&up4_data.tj_shuju[0]+i)=0;
if(record==1)j=(p_day+31)*25;
else j=p_day*25;
for(i=0;i<30;i++)flash_buffer[i]=0;
for(i=0;i<25;i++)
Write_Flash((j+i),0,flash_buffer,30);
}
Save_Zd();
}
if(zero==0)Save_Tj(); /*两分钟存统计数据*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -